A simulation-first autonomous mobile robot built using ROS 2 (Jazzy) and Gazebo (gz-sim), focusing on core autonomy concepts such as perception, decision-making, and control through a clean ROS2 architecture and a transparent Finite State Machine (FSM).
This project was developed to:
- Gain hands-on experience with end-to-end autonomous robot architecture
- Practice ROS 2 node-based modular design
- Implement FSM-driven obstacle avoidance
- Bridge the gap between simulation and real-world robotics
The rover navigates autonomously in a simulated environment and reacts intelligently to obstacles using LiDAR-based perception.
- 🧭 Autonomous Forward Navigation
- 🚧 LiDAR-Based Obstacle Detection
- 🔄 FSM-Controlled Obstacle Avoidance
FORWARD → STOP → REVERSE → SCAN → TURN → FORWARD
- 🎥 Camera Integration (perception & visualization)
- 🕹️ Manual Teleoperation Support
- 🔌 ROS 2 Topic-Based Velocity Control (
cmd_vel) - 🧪 Fully Simulated in Gazebo (gz-sim)
The rover follows a modular and scalable ROS 2 architecture:
- Gazebo (gz-sim)
- Robot model using URDF / Xacro
- Sensors:
- LiDAR
- Camera
- Sensor data processing
- FSM-based control logic
- Velocity command publisher
- RViz2
- rqt_graph
This clear separation of concerns improves maintainability and simplifies future deployment on real hardware.
Obstacle avoidance is driven by a transparent and deterministic FSM:
- FORWARD – Move straight
- STOP – Pause when an obstacle is detected
- REVERSE – Create safe distance
- SCAN – Compare left vs right clearance using LiDAR
- TURN_LEFT / TURN_RIGHT – Rotate toward safer direction
- FORWARD – Resume navigation
This design avoids black-box planners and emphasizes interpretable decision-making.
- ROS 2 Jazzy
- Gazebo (gz-sim)
- Python (rclpy)
- URDF / Xacro
- RViz2
- rqt_graph
# Build the workspace
colcon build
source install/setup.bash
# Launch the simulation
ros2 launch rover_bringup rover.launch.xml
# Run the obstacle avoidance node
ros2 run rover_control obstacle_avoidance.pyThis project is licensed under the MIT License. See LICENSE.md for details.