AutoNav is an innovative autonomous mobile robot designed for efficient room navigation. Leveraging the Robot Operating System (ROS) along with SLAM (Simultaneous Localization and Mapping) and ROS Navstack.
It excels in autonomous pathfinding and obstacle avoidance. At its core, AutoNav employs IMU-based sensor fusion for precise movement control and utilizes a depth camera for accurate perception and 3D mapping. This integration of advanced technologies enables AutoNav to navigate complex environments with ease.
- π Table of Contents
- π Overview
- π¦ Features
- π Repository Structure
- π Getting Started
- π£ Project Roadmap
- π€ Contributing
- π License
- π Acknowledgments
AutoNav is an advanced autonomous mobile robot designed to navigate through rooms independently. This project showcases the integration of cutting-edge technologies in robotics, including the Robot Operating System (ROS), Simultaneous Localization and Mapping (SLAM), Sensor Fusion and the ROS Navigation Stack.
AutoNav is a testament to the possibilities in autonomous robotic systems, aiming to pave the way for future innovations in this field. This project is suitable for enthusiasts and professionals alike, seeking to explore and expand in the realm of autonomous robotics.
-
Autonomous Navigation:
Utilizes SLAM and ROS Navstack for intelligent pathfinding and obstacle avoidance in various environments.
-
Sensor Fusion:
Integrates Inertial Measurement Unit (IMU) sensors for enhanced movement precision and stability.
-
Hardware Integration:
Designed to work seamlessly with a range of robotic hardware, enabling easy integration of sensors, actuators, and other essential components for autonomous navigation.
βββ AutoNav/
βββ .github
β βββ workflows
β βββ AutoNav_CI.yml
βββ autonav.Dockerfile
βββ autonav_bringup
β βββ CMakeLists.txt
β βββ launch
β βββ autonav_bringup.launch.py
β βββ view_rviz.launch.py
β βββ view_rviz_cartographer.launch.py
β βββ view_rviz_navigation.launch.py
β βββ view_rviz_slam.launch.py
βββ autonav_controller
β βββ CMakeLists.txt
β βββ autonav_controller
β β βββ cmd_vel_republisher.py
β β βββ control.py
β β βββ lidar_republisher.py
β β βββ odom_logger.py
β β βββ pid_controller.py
β β βββ tune_pid.py
β βββ config
β β βββ autonav_controllers.yaml
β βββ launch
β βββ autonav_bringup.launch.py
β βββ controller.launch.py
βββ autonav_description
β βββ CMakeLists.txt
β βββ launch
β β βββ autonav_bringup.launch.py
β β βββ display.launch.py
β β βββ gazebo.launch.py
β β βββ robot_description.launch.py
β βββ meshes
β β βββ base_link.stl
β β βββ depth_camera_1.stl
β β βββ imu_1.stl
β β βββ left_wheel_1.stl
β β βββ lidar_1.stl
β β βββ right_wheel_1.stl
β βββ rviz
β β βββ display.rviz
β βββ urdf
β βββ autonav.trans
β βββ autonav.xacro
β βββ autonav_gazebo.xacro
β βββ autonav_ros2_control.xacro
β βββ materials.xacro
βββ autonav_firmware
β βββ CMakeLists.txt
β βββ firmware
β β βββ esp32_uros
β βββ include
β β βββ autonav_firmware
β βββ launch
β β βββ autonav_bringup.launch.py
β βββ src
β βββ autonav_interface.cpp
β βββ autonav_interface_backup.cpp
βββ autonav_localization
β βββ CMakeLists.txt
β βββ config
β β βββ ekf.yaml
β βββ launch
β βββ ekf.launch.py
βββ autonav_navigation
β βββ CMakeLists.txt
β βββ config
β β βββ cartographer.lua
β β βββ navigation.yaml
β β βββ slam.yaml
β βββ launch
β β βββ cartographer.launch.py
β β βββ navigation.launch.py
β β βββ save_map.launch.py
β β βββ slam.launch.py
β βββ maps
β β βββ L1012.pgm
β β βββ L1012.yaml
β β βββ L1012_test.pgm
β β βββ L1012_test.yaml
β β βββ world.pgm
β β βββ world.yaml
β βββ rviz
β βββ cartographer.rviz
β βββ navigation.rviz
β βββ slam.rviz
βββ bno055
β βββ .github
β β βββ workflows
β βββ CHANGELOG.rst
β βββ LEGACY_LICENSE
β βββ bno055
β β βββ bno055.py
β β βββ connectors
β β βββ error_handling
β β βββ params
β β βββ registers.py
β β βββ sensor
β βββ launch
β β βββ bno055.launch.py
β βββ requirements.txt
β βββ resource
β β βββ bno055
β βββ setup.py
βββ docker-compose.yml
βββ ydlidar_ros2_driver
βββ CMakeLists.txt
βββ LICENSE.txt
βββ config
β βββ ydlidar.rviz
βββ launch
β βββ ydlidar.py
β βββ ydlidar_launch.py
β βββ ydlidar_launch_view.py
βββ params
β βββ X4.yaml
βββ src
β βββ ydlidar_ros2_driver_client.cpp
β βββ ydlidar_ros2_driver_node.cpp
βββ startup
βββ initenv.sh
Dependencies
Please ensure you have the following dependencies installed on your system:
- βΉοΈ Docker
- Clone the AutoNav repository:
mkdir ~/colcon_ws/src/ && cd ~/colcon_ws/src
git clone https://github.com/JatinPatil2003/AutoNav.git
- Change to the project directory:
cd AutoNav
- Pull Docker Images:
docker compose pull autonav micro_ros
Make sure you are in Project directory
cd colcon_ws/src/AutoNav
-
For Robot Bringup
docker compose up micor_ros autonav
-
For Mapping
docker compose up cartographer
Mapping.mp4
-
For Saving Map
docker compose run save_map
-
For Navigation
docker compose run navigation
Navigation.mp4
-
For rviz/rviz_cartographer/rviz_navigation on Host Computer
xhost +local: docker compose up {rviz/rviz_cartographer/rviz_navigation}
βΊ Give goal position using rviz form rviz docker conatiner
βΉοΈ Import urdf form fusion360
βΉοΈ Implement Mapping and Navigation in Simulation
βΉοΈ Implement Mapping and Naviagtion using Hardware
βΉοΈ Implement sensor fusion using IMU and Odometry
βΉοΈ Implement 3D-Mapping using depth camera
Contributions are welcome! Here are several ways you can contribute:
-
Review open PRs, and submit your own PRs.
-
Share your insights, provide feedback, or ask questions.
-
Submit bugs found or log feature requests for JATINPATIL2003.
Click to expand
- Fork the Repository: Start by forking the project repository to your GitHub account.
- Clone Locally: Clone the forked repository to your local machine using a Git client.
git clone https://github.com/JatinPatil2003/AutoNav.git
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear and concise message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to GitHub: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
Once your PR is reviewed and approved, it will be merged into the main branch.
This project is protected under the MIT
License. For more details, refer to the LICENSE file.