[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79924":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":38,"discoverSource":39},79924,"rbot","rlxai\u002Frbot","rlxai","An open-source end-to-end Autonomous Mobile Robot simulation stack for ROS 2 Jazzy and Gazebo Harmonic. ","https:\u002F\u002Fyoutu.be\u002FB-d64c-2Mw0",null,"Python",92,15,4,0,2,5,6,3.61,"Other",false,"main",[24,25,26,27,28,29,30,31,32,33,34],"autonomous-navigation","autonomous-robots","autonomous-systems","gazebo","isaac-sim","mapping","robot","robotics","ros2","ros2-jazzy","simulation","2026-06-12 02:03:55","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Frbot-logo.png\" alt=\"rbot autonomous mobile robot logo\" width=\"360\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">rbot\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  An open-source Autonomous Mobile Robot simulation stack for ROS 2 Jazzy and Gazebo Harmonic.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: Apache 2.0\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg\">\u003C\u002Fa>\n  \u003Cimg alt=\"ROS 2 Jazzy\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FROS%202-Jazzy-22314E.svg\">\n  \u003Cimg alt=\"Gazebo Harmonic\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGazebo-Harmonic-F58113.svg\">\n  \u003Cimg alt=\"Ubuntu 24.04\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FUbuntu-24.04-E95420.svg\">\n\u003C\u002Fp>\n\n---\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FB-d64c-2Mw0\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FB-d64c-2Mw0\u002Fmaxresdefault.jpg\" alt=\"Watch the rbot open-source ROS 2 AMR simulation demo\" width=\"720\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FB-d64c-2Mw0\">Watch the demo video\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Overview\n\n`rbot` is a simulation-first Autonomous Mobile Robot (AMR) reference stack for ROS 2 Jazzy and Gazebo Harmonic. It combines robot description, Gazebo simulation, `ros2_control`, teleoperation, sensor simulation, localization, mapping, and Nav2 navigation in one ROS 2 workspace.\n\nThe project is for ROS users, students, and robotics teams that need a practical AMR baseline to run, inspect, and adapt. Its value is in the integration: a current ROS 2 workspace, Docker-first workflows, modern Nav2 configuration, and documentation that follows the full mapping-to-navigation path.\n\nGazebo Harmonic is the supported simulator. Isaac Sim packages are present as scaffolding for planned future integration.\n\n---\n\n## What This Project Contributes\n\n`rbot` packages the AMR simulation path into one workspace: a Gazebo Harmonic robot model, ROS-Gazebo bridges, `ros2_control`, teleoperation, sensor topics, EKF localization, SLAM Toolbox mapping, AMCL, and Nav2. \n\n| Area | Current support |\n| --- | --- |\n| Simulation | Gazebo Harmonic demo and benchmark worlds, URDF\u002FXacro robot description, generated meshes, and configurable launch arguments. |\n| Control and teleoperation | `ros2_control`, differential-drive controller, joystick\u002Fkeyboard teleop, and a convenience software stop service. |\n| Sensors and perception hooks | 2-D LiDAR, IMU, depth camera, stereo camera, GPS, and optional 3-D LiDAR bridge paths. |\n| Mapping and localization | SLAM Toolbox, AMCL, EKF, saved-map workflow, and example maps. |\n| Navigation | Nav2 launch files, MPPI controller, SMAC Hybrid-A* planner, behavior trees, and a simple action client. |\n| Developer workflow | Docker, Docker Compose, VS Code Dev Container, native Ubuntu 24.04 setup, CI, and tests. |\n| Isaac Sim | Package scaffolding for future integration. Gazebo is the supported simulator today. |\n\n---\n\n## Mapping and Navigation Quick Path\n\nUse these commands for a mapping and autonomous navigation loop.\n\nPrerequisites: Docker with Compose support. For RViz on Linux, make sure X11 forwarding is available.\n\n1. Start mapping with RViz:\n\n   ```bash\n   bash scripts\u002Frun_sim.sh --headless --rviz-mapping\n   ```\n\n   - Drive the robot through the map with teleop (next command).\n   - See [Run mapping with SLAM Toolbox](#run-mapping-with-slam-toolbox) for how to save the map.\n\n2. Start teleop:\n\n   ```bash\n   docker compose -f docker\u002Fdocker-compose.yml run --rm teleop\n   ```\n\n   - Use the joystick or keyboard controls to cover open aisles, corners, and doorways.\n\n3. Start navigation with RViz:\n\n   ```bash\n   bash scripts\u002Frun_sim.sh --headless --rviz-nav --map \u002Fros2_ws\u002Fmaps\u002Fmy_map.yaml\n   ```\n\n   - In RViz2, use **Set Initial Pose** from the top panel to align AMCL with the robot.\n   - Use **Nav2 Goal** from the top panel to send the robot to a target pose.\n\n---\n\n## Stack\n\n| Layer | Technology |\n| --- | --- |\n| OS target | Ubuntu 24.04 LTS |\n| ROS distribution | ROS 2 Jazzy Jalisco |\n| Primary simulator | Gazebo Harmonic |\n| Middleware | CycloneDDS |\n| Robot model | URDF\u002FXacro + generated mesh assets |\n| Control | `ros2_control`, `diff_drive_controller`, `joint_state_broadcaster` |\n| Teleoperation | `joy_linux`, `teleop_twist_joy`, convenience software stop |\n| Perception | 2-D LiDAR, optional 3-D point-cloud filtering, stereo\u002Fdepth processing |\n| Localization | `robot_localization` EKF, AMCL |\n| Mapping | SLAM Toolbox online async and lifelong configs |\n| Navigation | Nav2 with MPPI controller and SMAC Hybrid-A* planner |\n| Containers | Docker, Docker Compose, VS Code Dev Container |\n\n---\n\n## Repository Layout\n\n```text\nrbot\u002F\n├── .devcontainer\u002F        # VS Code Dev Container setup\n├── .github\u002Fworkflows\u002F    # CI build, lint, and test workflow\n├── docker\u002F               # Dockerfiles, compose services, entrypoint\n├── docs\u002F                 # Architecture notes, sensor docs, tutorials\n├── maps\u002F                 # Example occupancy maps and metadata\n├── scripts\u002F              # Build, dependency, simulation, and mesh helpers\n└── src\u002F\n    ├── bringup\u002F          # Top-level simulation launch orchestration\n    ├── control\u002F          # ros2_control and teleoperation packages\n    ├── localization\u002F     # EKF and AMCL launch\u002Fconfig packages\n    ├── mapping\u002F          # SLAM Toolbox launch\u002Fconfig packages\n    ├── navigation\u002F       # Nav2 launch, params, behavior trees, client\n    ├── perception\u002F       # LiDAR and camera processing packages\n    ├── robot\u002F            # Robot description and mesh packages\n    ├── simulation\u002F       # Gazebo packages and Isaac scaffolding\n    └── utils\u002F            # Shared utility package placeholder\n```\n\n---\n\n## Quick Start: Docker\n\nDocker is the recommended path for first-time users because it keeps ROS, Gazebo, and system dependencies isolated.\n\n### 1. Install host requirements\n\nInstall Docker with Compose support. For GUI simulation on Linux, make sure X11 forwarding is available.\n\n### 2. Build and run the Gazebo stack\n\n```bash\nbash scripts\u002Frun_sim.sh\n```\n\nUseful variants:\n\n```bash\nbash scripts\u002Frun_sim.sh --headless\nbash scripts\u002Frun_sim.sh --rviz\nbash scripts\u002Frun_sim.sh --rviz-nav\nbash scripts\u002Frun_sim.sh --headless --rviz-nav --map \u002Fros2_ws\u002Fmaps\u002Fmy_map.yaml\nbash scripts\u002Frun_sim.sh --headless --rviz-mapping\nbash scripts\u002Frun_sim.sh --headless world:=large_warehouse gps_enabled:=true\n```\n\nThe script starts services from `docker\u002Fdocker-compose.yml` and launches the simulation stack inside the container. Use `--map` with `--rviz-nav` when AMCL\u002FNav2 should localize against a specific map YAML mounted under `\u002Fros2_ws\u002Fmaps\u002F`.\n\nExtra arguments after the script flags are forwarded to the simulation launch service. Pass them as standard whitespace-free ROS launch tokens such as `name:=value`.\n\nBundled Gazebo worlds include the default warehouse plus richer demo and benchmark scenarios:\n\n```bash\nbash scripts\u002Frun_sim.sh world:=demo_warehouse_visual\nbash scripts\u002Frun_sim.sh world:=benchmark_warehouse_easy\nbash scripts\u002Frun_sim.sh world:=benchmark_warehouse_medium\nbash scripts\u002Frun_sim.sh world:=benchmark_warehouse_hard\n```\n\nUse the same `world:=...` argument with `--rviz-mapping` to build maps in each scenario.\n\n### 3. Alternative Docker helper\n\n```bash\nzsh scripts\u002Fsim_docker.sh\nzsh scripts\u002Fsim_docker.sh --headless\nzsh scripts\u002Fsim_docker.sh --shell\nzsh scripts\u002Fsim_docker.sh world:=large_warehouse\n```\n\nUse this helper when you want direct `docker run` style control or an interactive shell in the simulation image.\n\n---\n\n## Quick Start: Native Ubuntu 24.04\n\nNative setup is useful when you already work in a ROS 2 Jazzy environment.\n\n```bash\nbash scripts\u002Finstall_deps.sh\nbash scripts\u002Fbuild.sh\nsource install\u002Fsetup.bash\nros2 launch rlai_bringup simulation.launch.py\n```\n\nTo launch a specific world:\n\n```bash\nros2 launch rlai_bringup simulation.launch.py world:=small_warehouse\n```\n\nHeadless Gazebo:\n\n```bash\nros2 launch rlai_bringup simulation.launch.py headless:=true\n```\n\n---\n\n## Common Workflows\n\n### Launch simulation with default localization\n\n```bash\nros2 launch rlai_bringup simulation.launch.py localization_enabled:=true\n```\n\nThis starts Gazebo, robot description publishing, ros2_control, and EKF localization.\n\n### Enable joystick teleoperation\n\n```bash\nros2 launch rlai_bringup simulation.launch.py teleop_enabled:=true\n```\n\nThe joystick configuration lives in:\n\n```text\nsrc\u002Fcontrol\u002Frlai_teleop\u002Fconfig\u002Fjoystick.yaml\n```\n\nThe convenience software stop service is available at:\n\n```bash\nros2 service call \u002Fe_stop std_srvs\u002Fsrv\u002FTrigger {}\n```\n\nThis service publishes zero velocity commands while engaged.\n\n### Run mapping with SLAM Toolbox\n\n```bash\nros2 launch rlai_bringup simulation.launch.py \\\n  mapping_enabled:=true \\\n  slam_rviz_enabled:=true\n```\n\nSave the map from the mapping container when coverage looks good. When launched through the quick path, the mapping container is named `rlai_sim_mapping`:\n\n```bash\ndocker exec -it rlai_sim_mapping ros2 run nav2_map_server map_saver_cli -f \u002Fros2_ws\u002Fmaps\u002Fmy_map\n```\n\nDo not enable `mapping_enabled:=true` and `use_amcl:=true` at the same time. Both publish `map -> odom`.\n\n### Run AMCL with a saved map\n\n```bash\nros2 launch rlai_bringup simulation.launch.py \\\n  use_amcl:=true \\\n  map_yaml_file:=\u002Fabsolute\u002Fpath\u002Fto\u002Fmap.yaml\n```\n\nExample maps are stored in `maps\u002F`.\n\n### Launch Nav2 directly\n\n```bash\nros2 launch rlai_navigation navigation.launch.py \\\n  map:=\u002Fabsolute\u002Fpath\u002Fto\u002Fmap.yaml\n```\n\nUse this when localization is already running and you want to focus on Nav2 behavior.\n\n### Send a navigation goal programmatically\n\n```bash\nros2 run rlai_navigation nav_client --ros-args \\\n  -p x:=3.0 \\\n  -p y:=2.0 \\\n  -p yaw:=0.0\n```\n\nPatrol mode:\n\n```bash\nros2 run rlai_navigation nav_client --ros-args -p mode:=patrol\n```\n\n---\n\n## Package Index\n\n| Package | Type | Purpose |\n| --- | --- | --- |\n| `rlai_description` | `ament_cmake` | Robot URDF\u002FXacro, sensor mounts, payload platform, RViz configs |\n| `rlai_meshes` | `ament_cmake` | Mesh assets used by the robot description |\n| `rlai_gazebo` | `ament_cmake` | Gazebo worlds, launch files, ROS-Gazebo bridge config |\n| `rlai_isaac` | `ament_python` | Scaffold package for planned Isaac Sim integration |\n| `rlai_control` | `ament_cmake` | `ros2_control` controller configuration and launch |\n| `rlai_teleop` | `ament_python` | Joystick teleoperation and convenience software stop node |\n| `rlai_lidar_processing` | `ament_cmake` | Optional 3-D point-cloud height filtering and voxel downsampling |\n| `rlai_camera_processing` | `ament_cmake` | Stereo disparity and depth point-cloud processing launch\u002Fconfig |\n| `rlai_localization` | `ament_python` | IMU filtering, EKF, and AMCL launch\u002Fconfig |\n| `rlai_mapping` | `ament_python` | SLAM Toolbox mapping and map-server launch\u002Fconfig |\n| `rlai_navigation` | `ament_python` | Nav2 parameters, behavior trees, launch, and action client |\n| `rlai_bringup` | `ament_python` | Top-level simulation bringup and stack orchestration |\n| `rlai_utils` | `ament_python` | Shared utility package scaffold |\n\n---\n\n## Architecture Notes\n\n### TF ownership\n\nThe stack uses a standard mobile robot TF chain:\n\n```text\nmap -> odom -> base_footprint -> base_link -> sensor frames\n```\n\nOwnership is intentionally split:\n\n- EKF publishes `odom -> base_footprint`.\n- AMCL or SLAM Toolbox publishes `map -> odom`.\n- Robot State Publisher publishes `base_footprint -> base_link` and sensor frames.\n\nAvoid enabling multiple nodes that publish the same transform.\n\n### Command velocity path\n\n```text\nteleop \u002F Nav2 -> \u002Fcmd_vel -> velocity_smoother -> \u002Fdiff_drive_controller\u002Fcmd_vel\n```\n\nThe stack uses `TwistStamped` commands because the Jazzy `diff_drive_controller` expects stamped velocity input. The software stop node also publishes to `\u002Fcmd_vel`; it is a convenience mechanism for simulation and development.\n\n### Simulation bridge\n\nGazebo topics are bridged through:\n\n```text\nsrc\u002Fsimulation\u002Frlai_gazebo\u002Fconfig\u002Fros_gz_bridge.yaml\n```\n\n`\u002Fjoint_states` is intentionally not bridged because `joint_state_broadcaster` owns that ROS topic.\n\n---\n\n## References and Prior Art\n\n`rbot` builds on established ROS 2 projects and examples:\n\n- [ROS 2 Jazzy documentation](https:\u002F\u002Fdocs.ros.org\u002Fen\u002Fjazzy\u002F)\n- [Gazebo Harmonic documentation](https:\u002F\u002Fgazebosim.org\u002Fdocs\u002Fharmonic\u002F)\n- [Nav2 documentation and tutorials](https:\u002F\u002Fdocs.nav2.org\u002F)\n- [SLAM Toolbox](https:\u002F\u002Fgithub.com\u002FSteveMacenski\u002Fslam_toolbox)\n- [`robot_localization`](https:\u002F\u002Fgithub.com\u002Fcra-ros-pkg\u002Frobot_localization)\n- [`ros2_control`](https:\u002F\u002Fcontrol.ros.org\u002Fjazzy\u002Findex.html)\n- [BCR Bot](https:\u002F\u002Fgithub.com\u002Fblackcoffeerobotics\u002Fbcr_bot)\n- [Linorobot2](https:\u002F\u002Fgithub.com\u002Flinorobot\u002Flinorobot2)\n- [ROSNav](https:\u002F\u002Fgithub.com\u002FApolloAuto\u002Frosnav)\n\n---\n\n## Development\n\n### Build\n\n```bash\nbash scripts\u002Fbuild.sh\n```\n\nOr manually:\n\n```bash\nsource \u002Fopt\u002Fros\u002Fjazzy\u002Fsetup.bash\ncolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release\n```\n\n### Test\n\n```bash\nsource install\u002Fsetup.bash\ncolcon test --event-handlers console_cohesion+ --return-code-on-test-failure\ncolcon test-result --verbose\n```\n\n### Lint Python packages\n\n```bash\nflake8 src --max-line-length=100 --extend-ignore=E203 --exclude=__pycache__\n```\n\n### Validate launch-file syntax quickly\n\n```bash\npython3 -m compileall -q src scripts\n```\n\n---\n\n## Troubleshooting\n\n### Gazebo GUI does not open from Docker\n\nAllow local Docker containers to connect to your X server:\n\n```bash\nxhost +local:docker\n```\n\nThen rerun the simulation script.\n\n### ROS commands cannot find packages\n\nSource the workspace after building:\n\n```bash\nsource install\u002Fsetup.bash\n```\n\nIf using Docker, open a shell in the built container and source the installed workspace there.\n\n### Nav2 or AMCL cannot configure\n\nCheck that a valid map file was provided when `use_amcl:=true`:\n\n```bash\nros2 launch rlai_bringup simulation.launch.py \\\n  use_amcl:=true \\\n  map_yaml_file:=\u002Fabsolute\u002Fpath\u002Fto\u002Fmap.yaml\n```\n\n### TF conflicts or unstable localization\n\nMake sure only one component publishes each transform:\n\n- EKF: `odom -> base_footprint`\n- AMCL or SLAM Toolbox: `map -> odom`\n- Robot State Publisher: robot links and sensor frames\n\nDo not run AMCL and SLAM mapping together unless you intentionally change TF ownership.\n\n### Docker build is slow\n\nThe Gazebo image installs ROS, Gazebo, Nav2, SLAM, perception, and control dependencies. The first build can take several minutes; later builds should reuse Docker layers.\n\n---\n\n## Roadmap\n\nFuture extension points:\n\n- Isaac Sim integration\n- Expanded benchmarks and automated scenario tests\n- Additional warehouse, outdoor, and mixed-layout environments\n- More perception and autonomy examples\n\n---\n\n## Contributing\n\nContributions are welcome. Start with [`CONTRIBUTING.md`](CONTRIBUTING.md) for development workflow, coding standards, and pull request guidance.\n\nGood first contributions include:\n\n- Improving setup instructions or troubleshooting notes.\n- Adding reproducible simulation scenarios.\n- Tuning navigation, localization, or mapping configs with before\u002Fafter evidence.\n- Adding tests or validation scripts for launch files, URDF\u002FXacro, and Gazebo worlds.\n\n---\n\n## License\n\nThis project is licensed under the [Apache License 2.0](LICENSE).\n\nCopyright 2026 Robolabs AI (RLXAI ROBOLABSAI PRIVATE LIMITED).\n","rbot 是一个基于 ROS 2 Jazzy 和 Gazebo Harmonic 的开源自主移动机器人（AMR）仿真栈。该项目集成了机器人描述、Gazebo 仿真、ros2_control、遥操作、传感器仿真、定位、建图和 Nav2 导航等功能，提供了一个完整的 ROS 2 工作空间。其技术特点包括现代化的 Nav2 配置、Docker 优先的工作流以及详细的文档支持。rbot 适用于 ROS 用户、学生及机器人团队，为他们提供了从地图构建到导航的完整路径参考实现。此外，项目还预留了与 Isaac Sim 集成的空间，但目前主要支持 Gazebo Harmonic 作为仿真器。","2026-06-11 03:58:34","CREATED_QUERY"]