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
275 stars 82 forks source link

Containerizing diffbot development environment #85

Closed joeuser846 closed 10 months ago

joeuser846 commented 10 months ago

Docker allows ROS1 to run on Ubuntu releases > 20.04LTS. I've upgraded my development machine to Ubuntu 22.04LTS and containerized (Docker) my diffbot build environment. It's working mostly very well. Performance is equal and navigating my diffbot via rviz is working fine. There are minor rendering problems when rviz displays to the host display but these are minor. and mostly just annoyances.

I'm providing my dockerfile which is the key to building diffbot into a Docker image. When the image is built you run containers which are clones of the image. Each container runs one process. I start one container where I run 'roscore', and another where I run 'roslaunch diffbot_navigation diffbot_hw.launch'.

I've set the dockerfile up so that it automatically builds a Docker image with Ubuntu 20.04LTS, ROS Noetic, and the full diffbot system, ready to run.

Hope others find this useful.

joeuser846 commented 10 months ago

Sorry about all the commits post PR! I tried to generalize the dockerfile at the last minute and needless to say I introduced a few issues that the commits fix. I've now retested (with the four fixes) and it builds and runs fine.

BTW, I also containerized my remo robot. That is probably of less interest to others as stranding a special purpose device on Ubuntu 20.04LTS is less problematic than blocking one's main dev system. My remo runs on an RPi 4B with 8GB and the containerized ROS runs fine there too.

fjp commented 10 months ago

This didn't make it to the default branch (noetic-devel) because it seems the repo https://github.com/joeuser846/diffbot/tree/docker was deleted before pressing "Squash and merge". Feel free to re-open the PR with the Dockefile, I think it would be very useful!