Skip to content

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

License

JatinPatil2003/AutoNav

Repository files navigation

AutoNavv85


AUTONAV

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.

YAML Python C++ CMake

AutoNav_CI

GitHub license git-last-commit GitHub commit activity GitHub top language

πŸ“– Table of Contents


πŸ“ Overview

9-removebg-preview

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.


πŸ“¦ Features

  • 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.


πŸ“‚ Repository Structure

└── 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

πŸš€ Getting Started

Dependencies

Please ensure you have the following dependencies installed on your system:

- ℹ️ Docker

Installation Link

πŸ”§ Installation

  1. Clone the AutoNav repository:
mkdir ~/colcon_ws/src/ && cd ~/colcon_ws/src
git clone https://github.com/JatinPatil2003/AutoNav.git
  1. Change to the project directory:
cd AutoNav
  1. Pull Docker Images:
docker compose pull autonav micro_ros

πŸ€– Running AutoNav

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}

πŸ§ͺ Tests

β–Ί Give goal position using rviz form rviz docker conatiner

πŸ›£ Project Roadmap

  • ℹ️ 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

🀝 Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines

Click to expand
  1. Fork the Repository: Start by forking the project repository to your GitHub account.
  2. Clone Locally: Clone the forked repository to your local machine using a Git client.
    git clone https://github.com/JatinPatil2003/AutoNav.git
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear and concise message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to GitHub: Push the changes to your forked repository.
    git push origin new-feature-x
  7. 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.


πŸ“„ License

This project is protected under the MIT License. For more details, refer to the LICENSE file.


πŸ‘ Acknowledgments

Return


About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published