-
Notifications
You must be signed in to change notification settings - Fork 13
Description
Issue
The G1 navigation implementation correctly removed to_ros and implemented RosTransport, but the G1 blueprints still use a ros_nav bridge blueprint that's doing too much.
The current ROSNav module:
- Bridges topics between ROS and LCM (redundant — can use
ROSTransportdirectly) - Implements
NavigationInterfaceto control the ROS nav planner (needed)
DimOS now has topic remappings and transport definitions in blueprints, so the bridging pattern is unnecessary.
Verification ✅
Claim verified — the topic bridging in ros_nav() IS redundant.
What Alex's Refactor Did (commit 4613876d0)
Cleaned up ROSNav to use ROSTransport instead of manually spinning ROS2 nodes. But it's still acting as a bridge:
- Receives data from ROS via
ROSTransport-backedInports - Re-publishes to LCM via
Outports - Implements
NavigationInterfaceto send commands to ROS nav planner
Modern Approach (Go2 pattern)
Direct transport assignment in blueprints:
ros = nav.transports(
{
("lidar", PointCloud2): ROSTransport("lidar", PointCloud2),
("global_map", PointCloud2): ROSTransport("global_map", PointCloud2),
("odom", PoseStamped): ROSTransport("odom", PoseStamped),
}
)Other modules subscribe/publish directly via topic remappings — no bridge needed.
What Should Stay
The ROS nav Docker stack provides its own planner and local control. So we still need:
- A lightweight module implementing
NavigationInterfaceto send commands to the ROS planner - Publishing to
/goal_pose,/cancel_goal, etc. - Receiving
/goal_reachedstatus
But not the topic re-publishing (pointcloud, path, cmd_vel, etc.).
Tasks
- Remove topic bridging from
ROSNavmodule - Add
ROSTransportconfigs in G1 blueprint.transports()for:/registered_scan→ lidar pointcloud/terrain_map_ext→ global map/cmd_vel→ velocity commands/path→ active path/tf→ transforms
- Keep lightweight
ROSNav(or rename) that only:- Implements
NavigationInterfacemethods - Publishes
/goal_pose,/cancel_goal,/stop(joy control) - Subscribes to
/goal_reached
- Implements
- Keep
navigation_skill()for agent skills - Update G1 blueprints to use direct
ROSTransport+ minimal nav interface module
Context
Ref: Alex's G1 nav work (commit 4613876d06731cbaf0bf18818cd0143a890e1303)
The ROS nav stack (Docker) provides planning and local control — ROSNav just needs to be the command interface, not a full topic bridge.
Related Issues:
- Auto-build ROS nav Docker image #1268 — Auto-build ROS nav Docker image
- Auto-deploy ROS nav Docker via DimOS docker module #1269 — Auto-deploy ROS nav Docker via DimOS module
Assignee: ruthwik