ExoStack / Get started

Running the stack

The stack runs as seven stages. Start them in the order below, from the PASE Launch tab or from terminals; the two are equivalent.

#StagePASE (Launch tab)Terminal commandCheck that it works
1Hubs (micro-ROS agent)HUB CONNECTIONS → Connect HubsWi-Fi: ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888
USB: … serial --dev /dev/ttyUSB0 -b 115200
power the boards; ros2 topic list shows /hub_right
2SynchronizerSYNCHRONIZER → Start Syncros2 run exo_stack syncros2 topic hz /synced_sensors
3Gait detectionGAIT DETECTION → Start Detectionros2 launch exo_stack gait_event_detector_launch.pyros2 topic echo /heel_strike_right while walking
4Motion planningMOTION PLANNING → Start Planningros2 launch exo_stack mplanner_launch.pyoutput topics carry default_output
5ProfilesPROFILE MANAGER → Start Profileros2 launch exo_stack profile_launch.pyros2 topic echo /profile/right_hip_extension
6Cost (HIL)COST COMPUTATION → Start Computationros2 launch exo_stack cost_launch.pycost logged after the considered cycles
7HIL optimizerHIL OPTIMIZER → Start Optimizationros2 launch exo_stack hil_launch.pycandidate #1 logged
START THE OPTIMIZER LASTThe HIL optimizer sends its first candidate as soon as it starts. Start it only after the profile, planner and cost stages are running, otherwise the first candidate is lost and the optimizer waits indefinitely for its cost. In Deployment mode, stop at stage 5.
  • Each launch file starts one node per entry of its YAML file, named <key>_event, <key>_planner, <key>_profile, <key>_cost, <key>_hil.
  • To run a single entry while debugging, pass its key: ros2 run exo_stack gait_event_detector right_heel_strike (likewise mplanner, actuation_profile, cost, hil with a planner or profile key).
  • Each stage box has Start, Stop and a restart icon; restart a stage after you edit and save its YAML file. A stage box lights up while its processes run; the activity tree lists every node expected from the YAML files and marks the ones that are alive.
  • Stop in reverse order. Disconnect Hubs stops the agents.
  • HIL results are written when the optimizer finishes, to ~/exo_stack_resources/hil_results/HIL_<optimizer>_<cost>_…_<time>.csv (one row per candidate: number, parameters, cost).

Manual override of a planner

terminal
$ ros2 topic pub --once /right_hip_extension/manual_mode std_msgs/msg/Int32 "{data: 1}"     # enter manual mode
$ ros2 topic pub --once /right_hip_extension/manual_cmd  std_msgs/msg/Float32 "{data: 30.0}" # output = default + 30
$ ros2 topic pub --once /right_hip_extension/manual_mode std_msgs/msg/Int32 "{data: 0}"     # back to profiles
Launch tab, all stages running
Screenshot S2.3-1. Launch tab with every stage started: each stage box is lit and the activity tree on the right lists the live nodes.
HUB CONNECTIONS box
(a) USB
HUB CONNECTIONS box
(b) Wi-Fi
Screenshot S2.3-2. HUB CONNECTIONS box: (a) USB, one serial port per hub; (b) Wi-Fi, with the agent on UDP port 8888.