Skip to content

An Extensive Research on Ground-Based Holonomic Omni-Wheeled Robots.

Notifications You must be signed in to change notification settings

subhamctc3007/Omni-Bot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Omni-Bot

An Extensive Research and Trial on Ground-Based Autonomous Holonomic Driven Robots


Table of Contents

  1. Overview
  2. Our Goals
  3. What We Currently Use
  4. How to Run the Project
  5. Problems Currently Being Faced
  6. Bill of Materials Required
  7. Future Applications/Features
  8. References

1. Overview

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.

2. Our Goals

  • 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

3. What We Currently Use

Hardware

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

Software

  • Operating System: Ubuntu 22.04 LTS
  • ROS Version: ROS2 Humble
  • Simulator: Gazebo 11 (Classic)
  • Visualization Tool: RViz2

Packages


4. How to Run the Project

Installation

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:
  1. Clone the Repository:

    Server Side:

    git clone -b ROS2-Humble https://github.com/RockOnJeet/Omni-Bot.git
    cd Omni-Bot

    Client Side (Raspberry Pi):

    git clone -b Raspberry-Pi https://github.com/RockOnJeet/Omni-Bot.git
    cd Omni-Bot
  2. Install Dependencies:

    sudo apt update
    sudo apt install -y python3-colcon-common-extensions
  3. Build the Project:

    colcon build --symlink-install
    source install/setup.bash
  4. Visualize in RViz2: Open a new terminal and source the workspace:

    source install/setup.bash
    1. For visualizing the digital twin only [Server Side]:
      ros2 launch omni_bot_description urdf.launch.py
    2. For running the digital twin [Server Side]:
      ros2 launch omni_bot_sim gazebo.launch.py
      Control using teleop_twist_keyboard:
      ros2 run teleop_twist_keyboard teleop_twist_keyboard
    3. For running the real robot (hardware) [Server Side]:
      • For mapping the environment:
        ros2 launch omni_bot_real mapper.launch.py
        Control using teleop_twist_keyboard:
        ros2 run teleop_twist_keyboard teleop_twist_keyboard
      • For autonomous navigation:
        ros2 launch omni_bot_real automation.launch.py
        Regain control using teleop_twist_keyboard:
        ros2 run teleop_twist_keyboard teleop_twist_keyboard
    4. For running the companion computer (Raspberry Pi) [Client Side]:
      ros2 launch omni_bot bot.launch.py

5. Problems Currently Being Faced

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

6. Bill of Materials Required

(This section will be updated with a detailed list of components, including links to purchase them.)

7. Future Applications/Features

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

8. References

Software

Hardware

Unique Motion Systems

Inspiration and Research

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

About

An Extensive Research on Ground-Based Holonomic Omni-Wheeled Robots.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 93.1%
  • CMake 6.9%