A comprehensive ROS2 (Jazzy) navigation stack for a biomimetic fish robot featuring SLAM, localization, and autonomous navigation using Gazebo Harmonic simulation, SLAM Toolbox, and Nav2.
This repository contains a complete navigation solution for a fish robot that combines:
- Biomimetic Motion: Fish-like undulating motion control
- SLAM Mapping: Real-time map building using SLAM Toolbox
- Localization: Pose estimation in known environments
- Autonomous Navigation: Path planning and obstacle avoidance with Nav2
- Simulation: Full Gazebo Harmonic integration
The system is designed for ROS2 Jazzy and uses modern navigation tools to enable autonomous operation of a unique biomimetic robot platform.
Fish-Robot-ROS2/
├── assets/ # Result images and screenshots
│ ├── spawn_robot_gazeebo.png
│ ├── mapping.png
│ ├── localization.png
│ └── navigation.png
├── src/ # ROS2 packages
│ ├── fishy_fish_navigation/ # Main navigation package
│ ├── fishy_fish_navigation_py/ # Python utility package
│ └── README.md # Detailed documentation
└── README.md # This file
- 🐟 Biomimetic Motion: Sinusoidal tail undulation for natural fish-like movement
- 🗺️ SLAM Mapping: Real-time map building with loop closure
- 📍 Localization: Accurate pose estimation using pre-built maps
- 🧭 Autonomous Navigation: Nav2-based path planning and execution
- 🎮 Gazebo Simulation: Full physics simulation with sensors (LiDAR, IMU, Camera)
- 🔧 Modular Design: Separate packages for core functionality and utilities
- ROS2 Jazzy
- Gazebo Harmonic
- Required ROS2 packages:
nav2_bringupslam_toolboxrobot_localizationros_gz_simros_gz_bridge
cd Fish-Robot-ROS2
colcon build --symlink-install
source install/setup.bash1. Spawn Robot in Gazebo:
ros2 launch fishy_fish_navigation spawn_robot.launch.py2. Start Mapping:
ros2 launch fishy_fish_navigation mapping.launch.py3. Start Navigation:
ros2 launch fishy_fish_navigation navigation_with_slam.launch.pyFor detailed documentation, see src/README.md.
The fish robot model spawned in the Gazebo simulation environment with all sensors active (LiDAR, IMU, Camera).
Real-time SLAM mapping in progress. The robot builds a map of the environment using LiDAR scans while exploring the world.
Robot localizing itself in a pre-built map. The pose estimate is shown with uncertainty visualization, allowing the robot to know its position in the known environment.
Autonomous navigation in action. Nav2 plans paths to goals while avoiding obstacles, using both global and local costmaps for safe navigation.
For comprehensive documentation including:
- Detailed node descriptions
- Launch file explanations
- Configuration guides
- Troubleshooting tips
- Complete workflow diagrams
Please refer to src/README.md.
Main navigation package containing launch files, configurations, robot models, and core nodes.
Python utility package providing command-line tools for:
- Map loading
- Initial pose setting
- Waypoint navigation
Apache License 2.0
Asim Khan ([email protected])
Built with:
- ROS2 Jazzy
- Gazebo Harmonic
- SLAM Toolbox
- Nav2 Navigation Stack
- Robot Localization



