Skip to content

Repository files navigation

autonomy_ros

A ROS 2 autonomous navigation workspace focused on two production features: single-goal navigation and multi-waypoint navigation.

It combines the autonomy navigation core, the autonomy_ros ROS integration layer


✨ Features

  • 🎯 Single-goal navigation via /navigate_pose action and RViz goal_pose.
  • 🧭 Multi-waypoint navigation via /navigate_through action with waypoint sequencing.
  • 🛠️ Task control APIs for cancel, pause/resume, emergency stop, and status query.
  • 🧪 Simulation-ready workflow with Gazebo and fake-robot modes in one launch entry.

🎥 Demo

autonomy simulation demo


📦 Dependencies and build

sudo apt update
sudo apt install -y \
  ros-${ROS_DISTRO}-ros-gz-sim \
  ros-${ROS_DISTRO}-ros-gz-bridge \
  ros-${ROS_DISTRO}-ros-gz-interfaces \
  ros-${ROS_DISTRO}-robot-state-publisher \
  ros-${ROS_DISTRO}-rviz2 \
  ros-${ROS_DISTRO}-xacro

cd /path/to/your_ws
colcon build --symlink-install --packages-up-to autonomy autonomy_simulator autonomy_ros
source install/setup.bash

🚀 Launch

Use navigation_stack.launch.py for the navigation stack, and control behavior with launch arguments.

ros2 launch autonomy_ros navigation_stack.launch.py

🧩 Common scenarios

  1. Full stack with RViz
ros2 launch autonomy_ros navigation_stack.launch.py use_rviz:=true
  1. Fake robot + navigation stack
ros2 launch autonomy_ros navigation_stack.launch.py \
  simulation_mode:=fake use_sim_time:=false

For fake mode, set autonomy.enable_scan_bridge=false in config/parameters.yaml and keep autonomy.planner.global_frame=odom.

  1. Simulation only (no navigation stack)
ros2 launch autonomy_simulator tb3_simulator.launch.py
ros2 launch autonomy_simulator fake_robot.launch.py

⚙️ Launch arguments

Argument Default Description
simulation_mode gazebo gazebo or fake
use_sim_time true Use simulation clock
use_rviz false Start RViz
core_config_directory auto-resolved Directory containing autonomy.lua

🔌 Public API

🎬 Actions

Name Description
/navigate_pose Single-goal navigation
/navigate_through Sequential multi-waypoint navigation

🧰 Services

Name Description
/cancel_task Cancel a task
/get_task_status Query task status
/pause_task / /resume_task Pause / resume
/trigger_estop Emergency stop
/set_initial_pose Set initial pose (localization)

📡 Status topics

Name Type
/status autonomy_msgs/msg/TaskStatus
/events autonomy_msgs/msg/Event

💻 CLI examples

ros2 run autonomy_ros navigation_client.py list-tasks
ros2 run autonomy_ros navigation_client.py run-task go_to_point_a --feedback
ros2 run autonomy_ros navigation_client.py navigate-pose --x 1.0 --y 0.5 --feedback

🖼️ RViz

  • 2D Goal Posegoal_pose: triggers single-goal navigation (may preempt the current action)
  • 2D Pose Estimateinitialpose: forwarded by NavigationService for relocalization

🙏 Acknowledgements

About

autonomy_ros for everyone

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages