Hello,
I am looking for suggestions for using our ROSBot 3’s for the coming semester of teaching. We will also be using our existing ROSbot 2’s so I am hoping to have a software setup as similar as possible between the platforms.
A quick summary:
- Our ROSbot 2’s are on 22.04 + ROS2 Humble + dockerised setup, including hardware, and nav2/slam stack.
- Our ROSBot 3’s are (as shipped) 24.04 + ROS2 Jazzy + Snaps, hardware, and web ui only (no nav/slam)
- The Husarion ROS2 tutorials are very useful for the students
From my understanding of the current software availabilities:
- ROSBot 3 are usable with the humble docker containers, but need compatible firmware.
- Alternatively, the ROS2 Jazzy software stack can be easily used (without needing snap/docker)
- ROSbot 2 won’t have Jazzy setup.
- ROS2 tutorials are currently for Humble (and ROSbot 2)
At the moment, I’m thinking of using Humble docker containers on the ROSBot 3, so that we can easily reference the current tutorials, and it keeps the ROSbot 2 use the same. The sensors will be different, but most of the algorithms we use should be compatible. However, I’ve no idea what to do for the firmware, so some assistance here would be appreciated.
However, I’m also open to alternative suggestions/ideas.
Thank you and Regards,
Tim
Hello @Tim_RMIT,
Thank you for describing the problem. As I understand it, you are most interested in both platforms behaving identically, so that ROS2 Tutorial works without any problems on both robots.
The simplest and fastest solution would be to run ROS 2 Humble on ROSbot 3. To do this, you need to:
- Disable snap with the command:
sudo snap disable rosbot
- Then copy the
compos.yaml
from ROSbot 2R to ROSbot 3. Please note that the camera and LiDAR are different from those on ROSbot 2R. Therefore, there is no need to copying them.
- Flash firmware for humble (set
<image_version>
the same as in compose.yaml
):
docker run --rm -it --privileged husarion/rosbot:humble-<image_version> flash-firmware.py -f /root/firmware.bin
(the occurrence of -f
flag depends on version).
- Start the containers using the command:
docker compose up
With this setup, when going through ROS 2 Tutorials we still have ROS Jazzy natively installed, so it is a good idea to do these tutorials in a ROS 2 Humble Docker container to avoid incompatibility.
I am glad to hear that ROS Tutorials on Humble are being used. If something is unclear or there are problems, please contact me.
Regards,
Hello @RafalGorecki ,
Thank you for the information. I’ll investigate this option.
For the Rosbot 3 sensors:
Regards,
Tim
Hello @Tim_RMIT,
All the links you sent make sense and should work. We also have 2 simple articles that describe the repositories you mentioned. In these repositories, you may need to tweak the compose configuration so that the topics are accessible outside the container.
Regards
1 Like
Hello @RafalGorecki ,
I thought I would report back and update with what I’ve found in setting up the ROSBot 3’s.
I’ve been able to successfully configure the Docker containers for Humble, and flash the Humble versions of the firmware. All sensors successfully function, with appropriate configuration for launching. I have also been able to configure the Husarion Navigation and SLAM docker setups. I switched the husarion-webui snap to the humble branch and can connect this to the docker setup.
We have run into a few issues, for which you might have suggestions:
- There are intermittent issues in launching microros, where it won’t launch or connect properly until the firmware is re-flashed. I don’t quite understand since I use the similar docker containers with access to the same ports. I can’t understand why this would occur, or perhaps if there is something triggering a re-firmware wipe.
- There are URDF challenges with the OAKD configuration and correctly connecting this to the TF-tree and visualising the URDF+RobotModel in foxglove. What happens is that when the OAKD DepthAI ROS package launches, it runs it’s own robot-state publisher which obfuscates the husarion bringup state publisher. In Foxglove, only the OAKD robot model and TF frames are then shown. This causes confusion if the full tf frame is available and is annoying for visualising the robot state. To correct this, essentially I had to manually include the OAKD URDF model into the ROSBot model, ie replacing default the URDF model.
- Secondarily, the STL model for the OAKD camera is only located in the OAKD packages (not surprising). Thus when using husarion-webui (in humble) the STL’s are not available. Further, because snap is static, I can’t “copy” the STL files into the snap ROS package install. Thus, I instead had to swtich the model to download from oak’s github.
- It would be a bit more convenient if husarion-webui was setup through Docker - which would help address the robot model issue above. But I couldn’t find a docker-ised version. Is one available?
- As typical, DDS is “fun” to configure. I am finding that cyclone-dds is less reliable (over wifi), and FastDDS seems to be a bit better. Did you have recommendations for the ROBbots on the best DDS configuration, given we are using multiple robots over the same network?
Thank you for the useful and ongoing support.
Tim
Hello @Tim,
Thank you for the usual well-described issue and I hope that the advice provided will help solve the problems.
Microros
We are aware of the problem with microros. I suspect that it is most likely caused by problems with connecting the microcontroller to the computer. The main suspects are either incorrect library support on the microcontroller, or the library itself has some reliability problem. After starting microros, you can try to reset the microcontroller (MCU) with the button - this method is faster than reflashing, which, as you rightly noticed, should not matter.
ROSbot URDF + OAKD
As of today, I recommend editing ROSbot URDF and disabling the publication of the robot_description topic by the camera.
As for WebUI and URDF, I have this in mind and have already planned to fix these things.
DDS
I have similar feelings when it comes to comparing FastDDS and CycloneDDS. For a few months now, there has also been Zenoh DDS, which seems to be the most intuitive and has many useful functions, such as topic filtering. It can therefore be an interesting option for a system with many robots. Even Articulated Robotic has added a recording presenting the functioning of Zenoh: https://www.youtube.com/watch?v=fS0_rbQ6KKA
Best regards
Microros
I remember that a similar problem was solved in the image version: husarion/rosbot-xl:humble-0.10.0-20240216
and newer. Please upload firmware from this version if you use older one.
Hello @RafalGorecki,
Thank you. As I teach my students, robotics takes time and requires patience to problem solve!
I am using the following image to flash the firmware: husarion/rosbot:humble-0.14.0-20250131
.
I tried the rosbot XL but it produces an error (since I don’t know if it’s compatible with the Pro 3)
- Flash with command
sudo /flash-firmware.py -f /root/firmware.bin
- Error:
pyftdi.usbtools.UsbToolsError: No USB device matches URL ftdi://ftdi:ft-x:/1
Thank you for the DDS alternative. I’ll have to look into that at some point.
And sorry, I associated it with another thread and forgot that we were talking about ROSbot 3, so you are right, the image from ROSbot XL will not work.
Hi @RafalGorecki ,
Not to worry. I was unsure if the firmware was compatible.
We shall see how the course semester progresses.
Regards,
Tim
1 Like