Skip to content

An autonomous mobile robot built with a MEGA 2560, L298N Driver, DG01D-E DC Motor w/ Encoder, Bosch BNO055, Raspberry Pi 4, and RPLIDAR A1M8.

Notifications You must be signed in to change notification settings

czagrzebski/ROS-AMR

Repository files navigation

ROS Differential Drive Autonomous Mobile Robot

Contributors Forks Stargazers Issues LinkedIn

An autonomous differential drive mobile robot built with a MEGA 2560, L298N Driver, DG01D-E DC Motor w/ Encoder, Bosch BNO055, Raspberry Pi 4, and RPLIDAR A1M8.

About The Project

This project is a versatile robot integrating a MEGA 2560 microcontroller, L298N motor driver, DG01D-E DC motors with encoders, Bosch BNO055 IMU, Raspberry Pi 4, and RPLIDAR A1M8 Lidar sensor. Operating on ROS Noetic, the robot combines these components to achieve advanced capabilities. It employs a differential drive mechanism for precise movement control and integrates encoder feedback for accurate odometry. The Bosch BNO055 IMU enhances orientation data, aiding sensor fusion for improved perception. The RPLIDAR A1M8 creates real-time 2D maps crucial for obstacle avoidance and navigation. Leveraging ROS's power, the robot autonomously plans paths, avoiding obstacles safely. The Raspberry Pi 4 serves as the central processing unit, enabling remote control and monitoring. This project finds application in indoor navigation, education, service robotics, exploration, and inspections. By uniting hardware, sensor fusion, and ROS, the Autonomous Mobile Differential Drive Robot exemplifies an intelligent robotic platform adaptable to diverse scenarios.

(back to top)

Built With

  • ROS
  • Python
  • C++
  • Ardunio

(back to top)

Roadmap for Version 2.1

  • Design a CAD model for a differential drive AGV with a 3D printed chassis
  • Install Ubuntu Server 20.04 and ROS Noetic on a Raspberry Pi 4
  • Create URDF (Unified Robot Description Format) and xacro files
  • Setup Simulation Environment with Gazebo
  • Create Program for Embedded Microcontroller for Motor Control
  • Publish Measured Wheel Velocities to ROS from Microcontroller
  • Setup ROS Control
  • Setup Hardware Interface to handle communication between microcontroller and ROS (using ROSSerial)
  • Setup and Test diff_drive_controller. Tune PID values for wheel velocity control
  • Create a teleop package for manual control of the robot using keyboard or joystick
  • Setup RPLidar A1M8 Sensor Interface
  • Create package for SLAM (Simultaneous Localization and Mapping) with slam_toolbox
  • Generate a map of the environment using SLAM
  • Fetch IMU data from BNO055 and publish to ROS
  • Integrate Robot Localization Package with IMU and Odometry
  • Setup Navigation Stack with AMCL (Adaptive Monte Carlo Localization) and move_base
  • Create Flask app to remotely control and monitor the robot
  • Integrate Raspberry Pi 4 Camera Module for Remote Video Streaming

(back to top)

Latest Progress Report 7/25/23

Generated a SLAM map of my basement using the graph-based SLAM algorithm from the slam_toolbox package. The map was generated using the RPLidar A1M8 sensor with a resolution of 0.3. Had some troubles getting asynchronous online SLAM to generate the map properly over my local network. As a result, I switched to Synchronous online SLAM and that seemed to resolve the issue.

Below is a demonstration of using the slam_toolbox package to generate a map of my basement with Synchronous Online SLAM.

ROS Mapping Demo

About

An autonomous mobile robot built with a MEGA 2560, L298N Driver, DG01D-E DC Motor w/ Encoder, Bosch BNO055, Raspberry Pi 4, and RPLIDAR A1M8.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published