ros-mobile-robots / diffbot

DiffBot is an autonomous 2wd differential drive robot using ROS Noetic on a Raspberry Pi 4 B. With its SLAMTEC Lidar and the ROS Control hardware interface it's capable of navigating in an environment using the ROS Navigation stack and making use of SLAM algorithms to create maps of unknown environments.
https://ros-mobile-robots.com
BSD 3-Clause "New" or "Revised" License
297 stars 86 forks source link

Sbc imu #60

Closed joeuser846 closed 2 years ago

joeuser846 commented 2 years ago

These changes implement the Adafruit BNO055 IMU directly connected to the sbc (Rpi in my case) using I2C. The IMU data and motor encoder based odom is fused in robot_localization to create a much more robust odom.

Some of the changes in this PR are tangential and were just me trying various settings to clear problems with transform timings and "extrapolation into the future" errors. Those can be ignore or tweaked as appropriate. The key changes are in diffbot_control/config, ros-imu-bno055/launch, robot_localization/params, diffbot_description/urdf, and the diffbot_bringup/launch files that now also start the IMU and robot_localization, specifically: bringup_with_laser_imu.launch and bringup_all.launch.

Hope you find this useful. Thanks again for diffbot.

fjp commented 2 years ago

Thanks a lot @joeuser846, this looks very promising! I am planning to test it soon and provide detailed feedback to get this merged.