Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions demos/ota_nav2_sensor_fix/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ End-to-end demo: a `ros2_medkit` gateway with a dev-grade OTA plugin that
demonstrates a real update / publish-a-hotfix loop on a ROS 2 node without
SSH-ing into the robot.

## Architecture

Off-board tooling drives the on-board robot over one SOVD REST API: the gateway
registers and applies OTA updates (the OTA Update Agent hot-swaps the lidar
node), while the fault bridges and the Fault Manager turn Nav2's own failures
into SOVD faults.

![OTA over SOVD - nav2 sensor-fix demo architecture](docs/architecture.svg)

## What this shows

The headline scene is a diagnostic loop, not just a button-press update:
Expand Down Expand Up @@ -168,7 +177,7 @@ curl -X DELETE "${API}/apps/controller-server/faults"
# 8. Resume the mission (or use ./send-goal.sh).
```

## Foxglove Studio visualization
## Foxglove visualization

The gateway container bakes in a Robotnik RB-Theron AMR + Nav2 stack running
on top of headless Gazebo in the AWS small-warehouse world. `foxglove_bridge`
Expand All @@ -177,7 +186,7 @@ runs on port `8765` and exposes the full topic set: `/tf`, `/tf_static`,
`/local_costmap/costmap`, etc. - so a Foxglove **3D** panel renders the actual
robot in the warehouse out of the box.

1. Open Foxglove Studio -> **Open connection** -> **Foxglove WebSocket** ->
1. Open Foxglove -> **Open connection** -> **Foxglove WebSocket** ->
`ws://localhost:8765`. The Topics panel should list all of the topics
above.
2. Drop in a **3D** panel. In its settings set **Scene -> Mesh up axis ->
Expand Down
4 changes: 4 additions & 0 deletions demos/ota_nav2_sensor_fix/docs/architecture.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# - the Robotnik RB-Theron AMR spawned in that world, driven through
# gz_ros2_control + a stock diff_drive_controller
# - the full Nav2 stack (bringup_launch.py) with the warehouse map
# - foxglove_bridge on :8765 so Foxglove Studio can render /tf, /scan, /map etc.
# - foxglove_bridge on :8765 so Foxglove can render /tf, /scan, /map etc.
# - ros2_medkit fault_manager (the gateway's /faults endpoint depends on it)
# - the gateway with our ota_update_plugin loaded via gateway_config.yaml
# - ros2_medkit_log_bridge + ros2_medkit_action_status_bridge, started
Expand Down
2 changes: 1 addition & 1 deletion demos/ota_nav2_sensor_fix/run-demo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ echo " Web UI (ros2_medkit_web_ui):"
echo " npm install && npm run dev"
echo " open http://localhost:5173 -> Connect -> ${GATEWAY_URL}"
echo ""
echo " Foxglove Studio (recommended for the 3D narrative):"
echo " Foxglove (recommended for the 3D narrative):"
echo " Open connection -> Foxglove WebSocket -> ws://localhost:${OTA_FOXGLOVE_BRIDGE_PORT:-8765}"
echo " Add a 3D panel: TurtleBot3 in the world, /scan cone shows the phantom"
echo " Install ros2_medkit_foxglove_extension (npm run local-install) for the"
Expand Down
Loading