Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster lidarbot lidarbot_aruco lidarbot_base lidarbot_bringup lidarbot_description lidarbot_gazebo lidarbot_gz lidarbot_navigation lidarbot_slam lidarbot_teleop

Repository Summary

Description A differential drive robot is controlled using ROS2 Humble running on a Raspberry Pi 4 (running Ubuntu server 22.04). The vehicle is equipped with a raspberry pi camera for visual feedback and an RPlidar A1 sensor used for Simultaneous Localization and Mapping (SLAM), autonomous navigation and obstacle avoidance.
Checkout URI https://github.com/thenoobinventor/lidarbot.git
VCS Type git
VCS Version main
Last Updated 2025-05-16
Dev Status UNKNOWN
Released UNRELEASED
Tags raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

Lidarbot

A differential drive robot is controlled using ROS2 Humble running on a Raspberry Pi 4 (running Ubuntu server 22.04). The vehicle is equipped with a Raspberry Pi camera for visual feedback and an RPlidar A1 sensor used for Simultaneous Localization and Mapping (SLAM), autonomous navigation using the Nav2 stack. Additionally, an MPU6050 inertial measurement unit (IMU) is employed by the robot_localization package on the robot, to fuse IMU sensor data and the wheel encoders data, using an Extended Kalman Filter (EKF) node, to provide more accurate robot odometry estimates.

Hardware components are written for the Waveshare Motor Driver HAT and MPU6050 sensor to be accessed by the ros2_control differential drive controller and IMU sensor broadcaster respectively, via the ros2_control resource manager.

<img src=docs/images/real_mapping.gif width="600">

A preprint of this work is available here.

🗃️ Package Overview

  • lidarbot_aruco : Contains configuration, launch and node files to use ArUco markers with lidarbot.
  • lidarbot_base : Contains the ROS2 control hardware component for the lidarbot with low-level code for the Waveshare Motor Driver HAT.
  • lidarbot_bringup : Contains hardware component for the MPU6050 module, launch files to bring up the camera, lidar and the real lidarbot.
  • lidarbot_description : Contains the URDF description files for lidarbot, sensors and ros2 control.
  • lidarbot_gazebo : Contains configuration, launch and world files needed to simulate lidarbot in Gazebo Classic.
  • lidarbot_gz : Contains urdf, launch and world files needed to simulate lidarbot in Gazebo Fortress.
  • lidarbot_navigation : Contains launch, configuration and map files used for lidarbot navigation.
  • lidarbot_slam : Contains configuration files for the slam toolbox and RViz, launch file to generate maps using SLAM.
  • lidarbot_teleop : Contains configuration and launch files used to enable joystick control of the lidarbot in simulation and physically.

🧰 Hardware

Part list

The following components were used in this project:

  Part
1 Raspberry Pi 4 (4 GB)
2 SanDisk 32 GB SD Card (minimum)
3 Two wheel drive robot chassis kit
4 Waveshare Motor Driver HAT
5 2 x Motors with encoders and wire harness
6 MPU6050 board
7 RPlidar A1
8 Raspberry Pi camera v1.3
9 3D printed stands for RPlidar A1 and RPi 4
10 Mount for Raspberry Pi camera
11 Powerbank for RPi 4 (minimum output: 5V 3A)
12 Gamepad
13 Mini Travel Router (optional)
14 3 Slot 18650 battery holder
15 3 x 18650 batteries to power Motor Driver HAT
16 Female to Female Dupont jumper cables
17 Spare wires
18 Logitech C270 webcam (optional)

Some other tools or parts used in the project are as follows:

  Tool/Part

File truncated at 100 lines see the full file

Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster
Repo symbol

lidarbot repository

raspberry-pi navigation imu lidar slam sensor-fusion pca9685 raspberry-pi-camera ros2 motor-driver mpu6050 rplidar hardware-interface differential-drive-robot diy-robot rviz2 gazebosim ros2-control ros2-humble imu-sensor-broadcaster