cabot_ui_manager
is the node to manage the user interface and the navigation of the robot
- topic:
/cabot/event
(std_msgs/msg/String) - Since these events are added on an ad-hoc basis and are not organized, a dedicated message would be better instead of a String message
- Event string can be parsed with cabot_ui/event.py
- cabot-ble-server (cabot-ios-app)
PUB
/SUB
- cabot_speed_control_node.cpp
PUB
- cabot-ui-manager.py
PUB
/SUB
- BT Navigator - behavior trees
PUB
- stop_reasons_node.cpp
PUB
- run_test.py
PUB
/SUB
(for integration test)
navigation_next
(OUT): Requesting the destination set in the appnavigation_subtour
(OUT): Requesting the app to proceed subtournavigation_destination;<NodeID>
(IN): Set the robot's destination toNodeID
navigation_summons;<NodeID>
(IN): Set the robot's destination toNodeID
with summons modenavigation_cancel
(IN): Cancel the navigation
navigation_arrived
(OUT): Notify that the robot havs arrived at the destinationnavigation_sound;<SoundID>
(OUT): Notify the sound output in the app
navigation_getlanguage
(OUT): Requesting the language set in the appnavigation_language;<Lang>
(IN): Set the robot's language toen
orja
navigation_speedup
(IN): Increase robot speed by 0.05m/s (button_down_1
)navigation_speeddown
(IN): Decrease robot speed by 0.05m/s (button_down_2
)navigation_pause
(IN): Pause the current navigation (button_down_3
)navigation_resume
(IN): Resume the current navigation (button_down_4
)navigation_idle
(IN): Stop loop control of the motor (button_holddown_3
)navigation_decision
(IN): Sendnavigation_subtour
(button_down_5
)
navigation;event;<InternalNavigationEvent>
(IN): Notify the internal navigation eventnavigation_start
: Notify when the robot starts follows the global planwaiting_for_elevator
: Notify when the robot starts to wait the elevatorelevator_door_may_be_ready
: Notify when the robot can make a path going into the elevator cabinpeople_speed_stopped
: Notify when people_speed_control_node limit the speed to zeropeople_speed_following
: Notify when people_speed_control_node limit the speed under 75% of max speed
- Event string can be parsed with cabot_common/event.py
- cabot_hanel_v2_node.cpp
PUB
- cabot_keyboard.py
PUB
(for debug - xterm)
click_<Button>_<Count>
: click<Button>
<Count>
times within the click interval- Example events
button_down_3 button_up_3 click_3_1 button_down_3 button_up_3 button_down_3 button_up_3 click_3_2
<Button>
1
: forward button2
: backward button3
: left button4
: right button5
: center button (optional)
button_down_<Button>
: button downbutton_up_<Button>
: button upbutton_hold_<Button>
: button hold
- specify button mapping in .env
CABOT_HANDLE_BUTTON_MAPPING=2
example .env file
CABOT_IMAGE_DESCRIPTION_ENABLED=true
CABOT_IMAGE_DESCRIPTION_SERVER=http://localhost:8000
CABOT_HANDLE_BUTTON_MAPPING=1
CABOT_IMAGE_DESCRIPTION_MODE=surround,stop-reason
Key Mapping
- Right Click: Start navigation
- Left Click: Pause navigation
- Down Click: decrease speed
- Up Click: increase speed
- Left Hold (3 seconds): Stop motor control
- Down Hold: Describe the surroundings or stop reason
#CABOT_IMAGE_DESCRIPTION_MODE=surround # describe surroundings(holding 1 second: short length, 2 seconds: medium, 3 seconds: long) #CABOT_IMAGE_DESCRIPTION_MODE=stop-reason # only stop reason (holding 1 second) CABOT_IMAGE_DESCRIPTION_MODE=surround,stop-reason # holding 1~2 seconds: stop reason, 3 seconds: surrounding (medium length)
example .env file
CABOT_IMAGE_DESCRIPTION_ENABLED=true
CABOT_IMAGE_DESCRIPTION_SERVER=http://localhost:8000
CABOT_HANDLE_BUTTON_MAPPING=2
CABOT_IMAGE_DESCRIPTION_MODE=surround,stop-reason
Key Mapping
- Left Hold (1 second): Pause navigation
- Left Hold (3 seconds): Stop motor control
- Down Hold: Gradually decrease speed (speed drops every second)
- Up Hold: Gradually increase speed (speed rises every second)
- Left Click: Pause/Resume speech output
- Right Click: Start/Resume navigation
- *while navigating: Describe stop reason
- Down Click: Start conversation interface
- Up Click: Describe the surroundings
- Single click: Short analysis
- Double click: Medium-length analysis
- Triple click: Detailed analysis