Skip to content

feat: navigation docker updates from bona_local_dev#1081

Merged
spomichter merged 25 commits intodevfrom
nav_docker_update
Jan 22, 2026
Merged

feat: navigation docker updates from bona_local_dev#1081
spomichter merged 25 commits intodevfrom
nav_docker_update

Conversation

@baishibona
Copy link
Collaborator

@baishibona baishibona commented Jan 21, 2026

Summary

  • Duplicate of fork/bona_local_dev changes to work around GitHub self-hosted runner restrictions on fork PRs
  • Navigation docker improvements and updates

Test plan

  • Build docker image with ./build.sh
  • Test simulation mode
  • Test hardware mode

iserverobotics-bona and others added 17 commits January 18, 2026 17:48
…hc for cv_bridge if humble. verified start.sh --simulation with --jazzy and --humble work. verified start.sh --hardware --route-planner with --humble and --jazzy work on real robot, --rviz option preserved
…nused layout mount

- Created foxglove_utility/ folder with twist_relay.py and goal_autonomy_relay.py
- Updated Dockerfile to copy relay scripts from foxglove_utility/ instead of ros-navigation-autonomy-stack
- Removed foxglove_layout.json mount from docker-compose.yml (not needed in container)
…n Dockerfile

- Add langchain-core and langchain to pip install for dimos.agents support
- Copy dimos source and install as editable package during build
- Update comment to reflect dimos source handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@baishibona baishibona requested a review from a team January 21, 2026 21:58
@baishibona baishibona changed the base branch from main to dev January 21, 2026 22:00
@baishibona
Copy link
Collaborator Author

Skipped: This PR changes more files than the configured file change limit: (194 files found, 100 file limit)

@greptile updated to push to dev, less files this time, please review

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 21, 2026

Greptile Summary

Enhances the navigation Docker setup with multi-ROS distribution support (Humble/Jazzy), Foxglove Studio integration for remote visualization, and significant improvements to hardware mode automation. The PR successfully addresses previous issues with Unity and RViz PID tracking in run_both.sh:124-138.

Key improvements:

  • Multi-stage Dockerfile reduces image size through build artifact cleanup
  • Added FastDDS configuration for optimized ROS 2 communication
  • Hardware mode now auto-launches navigation stack with Foxglove Bridge (no manual exec needed)
  • New utility nodes (twist_relay.py, goal_autonomy_relay.py) enable Foxglove Teleop compatibility
  • Auto-detection of device group IDs for joystick and serial port permissions
  • Development mode (--dev) mounts source for live config editing
  • Comprehensive documentation updates with Foxglove workflow

The changes follow Docker best practices and improve the developer/operator experience significantly.

Confidence Score: 4/5

  • Safe to merge with one minor comment to verify
  • Well-structured PR with clear improvements to navigation Docker infrastructure. All previously identified issues have been addressed (Unity/RViz PID tracking, existence checks). Code follows best practices with proper error handling, fallback values, and comprehensive documentation. One style comment on Dockerfile comment accuracy.
  • No files require special attention - all changes are well-tested according to test plan

Important Files Changed

Filename Overview
docker/navigation/Dockerfile Multi-stage build optimization with ROS distribution support (humble/jazzy), cleanup of build artifacts, FastDDS configuration added
docker/navigation/run_both.sh Added PID capture for RViz and Unity processes, file existence check for Unity executable, improved cleanup handling
docker/navigation/start.sh Added ROS distro selection (humble/jazzy), route planner, RViz, and dev mode flags with auto-detection of device group IDs
docker/navigation/docker-compose.yml Added ROS_DISTRO build arg, FastDDS config, hardware auto-launch with Foxglove, joystick device mapping, and group_add for permissions

Sequence Diagram

sequenceDiagram
    participant User
    participant StartScript as start.sh
    participant Docker as Docker Compose
    participant Container as Navigation Container
    participant ROS as ROS2 Navigation
    participant Foxglove as Foxglove Bridge
    participant Unity as Unity Simulator
    participant DimOS as DimOS Agent

    User->>StartScript: ./start.sh --hardware/--simulation
    StartScript->>StartScript: Parse flags (ROS distro, route-planner, rviz, dev)
    StartScript->>StartScript: Check .env config (hardware mode)
    StartScript->>StartScript: Detect device group IDs
    StartScript->>Docker: docker compose up
    Docker->>Container: Launch container with ROS_DISTRO
    Container->>Container: Execute /ros_entrypoint.sh
    Container->>Container: Configure DDS (FastDDS)
    Container->>Container: Setup network (lidar interface)
    Container->>Container: Generate MID360_config.json
    
    alt Simulation Mode
        Container->>Unity: Launch Model.x86_64
        Container->>ROS: ros2 launch system_simulation_with_route_planner.launch.py
        Container->>DimOS: python demo_ros_navigation.py
    else Hardware Mode
        Container->>ROS: ros2 launch system_real_robot.launch.py
        Container->>Foxglove: ros2 launch foxglove_bridge
        Container->>Container: Start twist_relay.py (Twist→TwistStamped)
        Container->>Container: Start goal_autonomy_relay.py (goal→Joy)
    end
    
    User->>Foxglove: Connect to ws://localhost:8765
    User->>Foxglove: Load Overwatch.json layout
    User->>Foxglove: Click to set goal_pose
    Foxglove->>Container: Publish /goal_pose
    Container->>ROS: goal_autonomy_relay publishes /joy (autonomy ON)
    ROS->>ROS: Navigate to goal
    ROS->>Foxglove: Publish /cmd_vel, /state_estimation, status
    Foxglove->>User: Display navigation progress
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

paul-nechifor
paul-nechifor previously approved these changes Jan 22, 2026
Copy link
Contributor

@paul-nechifor paul-nechifor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. I just don't know if docker-compose.dev.yml is meant to be added by the user.

- Track RVIZ_PID and UNITY_PID for proper cleanup
- Add graceful shutdown for RViz and Unity before other processes
- Add pkill fallback for rviz2 and Model.x86_64
Adds development-specific volume mounts for editing ROS configs
without rebuilding the image (SLAM and local planner configs).
Verify Unity Model.x86_64 exists before attempting to run it.
Continue with warning if not present instead of failing.
@baishibona
Copy link
Collaborator Author

@greptile, addressed comments, please review.

@baishibona
Copy link
Collaborator Author

Looks good to me. I just don't know if docker-compose.dev.yml is meant to be added by the user.

Nice catch, added to the commit. Thanks!

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

10 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@spomichter spomichter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SOTP

@spomichter spomichter merged commit f5a3d3b into dev Jan 22, 2026
15 checks passed
@spomichter spomichter deleted the nav_docker_update branch January 22, 2026 20:24
spomichter added a commit that referenced this pull request Jan 23, 2026
… Unitree Go2 Navigation & Exploration Beta

Pre-Release v0.0.8: Unitree Go2 Navigation & Exploration Beta, Transport Updates, Documentation updates, Rerun fixes, Person follow, Readme updates

## What's Changed
* Small docs clarification about stream getters by @leshy in #1043
* Fix split view on wide monitors by @jeff-hykin in #1048
* Docs: Install & Develop  by @jeff-hykin in #1022
* Add uv to nix and fix resulting problems by @jeff-hykin in #1021
* v0.0.8 by @paul-nechifor in #1050
* Style changes in docs by @paul-nechifor in #1051
* Revert "Add uv to nix and fix resulting problems" by @leshy in #1053
* Transport benchmarks + Raw ros transport by @leshy in #1038
* feat: default to rerun-web and auto-open browser on startup (browser … by @Nabla7 in #1019
* bbox detections visual check by @leshy in #1017
* fix: only auto-open browser for rerun-web viewer backend by @Nabla7 in #1066
* move slow tests to integration by @paul-nechifor in #1063
* Streamline transport start/stop methods by @Kaweees in #1062
* Person follow skill with EdgeTAM by @paul-nechifor in #1042
* fix: increase costmap floor z_offset to avoid z-fighting by @Nabla7 in #1073
* Fixed issue #1074 by @alexlin2 in #1075
* ROS transports initial by @leshy in #1057
* Fix System Config Values for LCM on MacOS and Refactor by @jeff-hykin in #1065
* SHM Transport basic fixes by @leshy in #1041
* commented out Mem Transport test case by @leshy in #1077
* Docs/advanced streams update 2 by @leshy in #1078
* Fix more tests by @paul-nechifor in #1071
* feat: navigation docker updates from bona_local_dev by @baishibona in #1081
* Fix missing dependencies by @Kaweees in #1085
* Release readme fixes by @spomichter in #1076

## New Contributors
* @baishibona made their first contribution in #1081

**Full Changelog**: v0.0.7...v0.0.8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants