ROS 2 Humble monorepo for the Jetson Orin NX autonomous vehicle project.
- Main deployment target: Jetson Orin NX running Ubuntu 22.04 and ROS 2 Humble
- Common runtime entry points:
make launch-explore,make launch-indoor-nav,make launch-corridor - GPS-assisted mode available:
make launch-explore-gps; GPS route-graph mode available:make launch-nav-gps - Current integrated MPPI baseline uses the anti-understeering tune absorbed from the former IEEE demo line:
vx_max=1.0,wz_max=1.2,ax_max=1.2,PathAlignCritic.offset_from_furthest=6,PathFollowCritic.cost_weight=16.0 - Global replanning remains at
5 Hzwith NavFnA*enabled insrc/bringup/config/nav2_explore.yaml - PGO now supports on-demand
/pgo/global_mappublication and custom RViz layout injection viaros2 launch pgo pgo_launch.py rviz_config:=... - Runtime data lives inside the workspace under
~/XJTLU-autonomous-vehicle/runtime-data - Runtime parameters are centralized in
src/bringup/config/master_params.yaml - Session logs are created by
scripts/launch_with_logs.sh
# SSH to Jetson
ssh jetson@100.97.227.24
# Enter workspace
cd ~/XJTLU-autonomous-vehicle
# First-time setup
make setup
make build
source install/setup.bash
bash scripts/init_runtime_data.sh
# Launch one operating mode
make launch-slam
make launch-explore
make launch-indoor-nav
make launch-corridor
make launch-explore-gps
make launch-nav-gps
make launch-travelsrc/
├── sensor_drivers/ Livox LiDAR, WIT IMU, GNSS, serial drivers
├── perception/ FAST-LIO2, PGO GPS fusion, pointcloud processing
├── planning/ GNSS global planning, coordinate transforms
├── navigation/ waypoint_collector and navigation tools
├── bringup/ launch files, Nav2 configs, maps, RViz assets
└── firmware/ STM32 RM C Board lower-controller snapshot
docs-CN/ Active engineering documentation (Chinese)
docs-EN/ Active engineering documentation (English)
scripts/ Runtime helpers and data-collection tools
dependencies.repos vcs import manifest for upstream dependencies
- Full STM32 RM C Board firmware snapshot is checked in under
src/firmware/rm_c_board/ - The directory currently keeps the saved source tree, project files, and companion build artifacts together as one repository-local snapshot
- Firmware-local readme:
src/firmware/rm_c_board/README.md
make launch-slamFAST-LIO2 + PGO + SLAM Toolbox mapping workflowmake launch-exploreFAST-LIO2 + PGO + Nav2 local navigationmake launch-indoor-navExplore stack without GNSS, optimized for RViz click-to-go testingmake launch-corridorGPS Corridor v2 runtime on the MPPI baselinemake launch-explore-gpsExplore mode with GNSS bringup and PGO GPS factor enabledmake launch-nav-gpsScene-bundle + route-graph GPS goal navigation workflowmake launch-travelStatic-map navigation workflow, currently paused
All seven make launch-* targets go through scripts/launch_with_logs.sh, which creates a per-session log directory under ~/XJTLU-autonomous-vehicle/runtime-data/logs/.
Project docs are maintained in two languages:
Both directories have identical structure. When updating docs, update both.
- Documentation Index
- System Architecture
- Command Reference
- STM32 RM C Board Firmware Snapshot
- Contributing Guide (CN)
- Contributing Guide (EN)
- Known Issues
- PGO Notes
- GPS Planning Notes
- Sync
mainand create a branch from it. - Implement and verify on the branch.
- Rebuild with
--parallel-workers 1. source install/setup.bashafter every build.- Push the branch and open a PR to
main. - Merge through PR, then sync Jetson back to
main. - Update affected docs in both
docs-CN/anddocs-EN/before the session is considered complete.
See CONTRIBUTING.md for the full development conventions and documentation trigger rules.
- Compute: Jetson Orin NX, 16 GB RAM
- LiDAR: Livox MID360
- IMU: WIT IMU
- GNSS: basic GPS receiver, about 2.5 m class accuracy, no RTK in the current stack
- Drive interface: serial link to STM32 lower controller board
- Manual override: PS2 wireless controller, highest priority
- Do not modify tuned YAML parameters without documenting why.
- Always build with
--parallel-workers 1. - Always source
install/setup.bashafter a build. - Do not modify imported upstream dependencies casually; this repository no longer keeps a checked-in
src/third_party/tree. - Do not push directly to
main; use PRs.