An Extensive Research and Trial on Ground-Based Autonomous Holonomic Driven Robots
- Overview
- Our Goals
- What We Currently Use
- How to Run the Project
- Problems Currently Being Faced
- Bill of Materials Required
- Future Applications/Features
- References
Omni-Bot is a research project focused on developing a ground-based autonomous robot with holonomic drive capabilities. The project aims to explore the potential of omnidirectional movement in robotics, leveraging advanced sensors and control algorithms to achieve high levels of autonomy and maneuverability.
- Develop a custom chassis supporting 3-Wheel Omnidirectional Drive
- Implement Low Level Control Stack that drives the motors based on the desired velocity
- Utilize ROS2 for high-level control and navigation
- Integrate LIDAR and IMU sensors for environment perception
- Implement SLAM (Simultaneous Localization and Mapping) capabilities
- Develop a user-friendly interface for teleoperation
- Conduct extensive testing and validation in various environments
Chassis: Unique Aluminum Chassis (CAD)
| Component | Model/Type |
|---|---|
| Motor Driver | Cytron MD10C DC Motor Driver |
| Motors | 3x 24V DC Planetary Motors |
| Microcontroller | Arduino Nano |
| Microcomputer | Raspberry Pi 4 Model B (8GB RAM) |
| Power Supply | 14.8V LiPo Battery Pack (5000mAh) |
| LIDAR | YDLidar G2 |
| IMU | MPU6050 |
- Operating System: Ubuntu 22.04 LTS
- ROS Version: ROS2 Humble
- Simulator: Gazebo 11 (Classic)
- Visualization Tool: RViz2
- Bot Description: Custom
omni_bot_description - Digital Twin:
omni_bot_simwith customomnidirectional_controllers - Hardware Driver: Server-side
omni_bot_realand companion computeromni_controller - Full Hardware Control (Outdated): Arduino-only
Omni_Bot V3.0
On the server side, install the following packages:
- ROS2 Humble: Follow the instructions here.
- Gazebo: Follow the instructions here.
- NOTE: As of now, the project is compatible with Gazebo Classic (version 11), now deprecated. The transition to Gazebo Fortress (version 12) is in progress and will be updated soon. Till then, please use Gazebo Classic or attempt a migration using the migration guide.
On the companion computer (Raspberry Pi), install the following:
- ROS2 Humble: Follow the instructions here.
- NOTE: Ensure that the Raspberry Pi has sufficient resources and a stable internet connection for offloading heavy computations to the server.
- YDLidar ROS2 Driver: Follow the instructions here.
- Microcontroller: Upload the firmware. To run the project, follow these steps:
-
Clone the Repository:
Server Side:
git clone -b ROS2-Humble https://github.com/RockOnJeet/Omni-Bot.git cd Omni-BotClient Side (Raspberry Pi):
git clone -b Raspberry-Pi https://github.com/RockOnJeet/Omni-Bot.git cd Omni-Bot -
Install Dependencies:
sudo apt update sudo apt install -y python3-colcon-common-extensions
-
Build the Project:
colcon build --symlink-install source install/setup.bash -
Visualize in RViz2: Open a new terminal and source the workspace:
source install/setup.bash- For visualizing the digital twin only [Server Side]:
ros2 launch omni_bot_description urdf.launch.py
- For running the digital twin [Server Side]:
Control using
ros2 launch omni_bot_sim gazebo.launch.py
teleop_twist_keyboard:ros2 run teleop_twist_keyboard teleop_twist_keyboard
- For running the real robot (hardware) [Server Side]:
- For mapping the environment:
Control using
ros2 launch omni_bot_real mapper.launch.py
teleop_twist_keyboard:ros2 run teleop_twist_keyboard teleop_twist_keyboard
- For autonomous navigation:
Regain control using
ros2 launch omni_bot_real automation.launch.py
teleop_twist_keyboard:ros2 run teleop_twist_keyboard teleop_twist_keyboard
- For mapping the environment:
- For running the companion computer (Raspberry Pi) [Client Side]:
ros2 launch omni_bot bot.launch.py
- For visualizing the digital twin only [Server Side]:
- Need for a more robust and efficient SLAM algorithm.
- Proper calibration and fusion of sensor data (LIDAR and IMU).
- Challenges in real-time control and navigation.
- Limited Power Supply for extended operation.
- Limited testing environments for real-world scenarios.
(This section will be updated with a detailed list of components, including links to purchase them.)
- Enhanced Teleoperation Interface: Develop an intuitive, user-friendly interface for remote control and monitoring.
- Modular Design: Implement a modular architecture for easy upgrades and maintenance.
- Advanced Autonomous Navigation: Enhance the robot's ability to navigate complex environments without human intervention.
- Distributed Multi-Robot Coordination: Enable communication and coordination among multiple robots for distributed tasks.
- ROS2 Documentation: Comprehensive guide for ROS2, detailing installation, configuration, and usage.
- Gazebo Documentation: Official Gazebo documentation for installation and usage.
- YDLidar ROS2 Driver: Official YDLidar G2 datasheet and ROS2 driver documentation.
- Arduino IDE: Download and installation instructions for the Arduino IDE.
- YDLidar G2: Specifications and usage instructions for the YDLidar G2 sensor.
- Arduino Documentation: Official Arduino guides for setup and programming.
- Omni-Wheels: Information about omni-wheels and their applications in robotics.
- Omni-Directional Drive Systems: Overview of omni-directional drive mechanisms.
- SLAM Algorithms: Insights into SLAM algorithms used for mapping and navigation.
- ROS2 Tutorials: Official ROS2 tutorials for beginners and advanced users.
- Articulated Robotics: YouTube channel with tutorials on ROS2 and robotics, including a tutorial on building a Differential Drive Robot.
- Eyantra: A robotics initiative by IIT Bombay that provides resources and projects related to robotics and automation.
- Robotics Stack Exchange: A question-and-answer site for professional and hobbyist roboticists.