RosBot3 running ROS1 Noetic docker flashing firmware

Dear community,

I am trying to get the RosBot docker container for Noetic running on my RosBot3 PRO to use Ros1.

I am having problems flashing the firmware, as per GitHub - husarion/rosbot-docker at ros1

docker run --rm -it --privileged
husarion/rosbot:noetic
/flash-firmware.py /root/firmware_diff.bin

I get the following:

System architecture: aarch64Device: RPi
Traceback (most recent call last):File “/usr/local/lib/python3.8/dist-packages/periphery/gpio_sysfs.py”, line 63, in _openwith open(“/sys/class/gpio/export”, “w”) as f_export:FileNotFoundError: [Errno 2] No such file or directory: ‘/sys/class/gpio/export’
During handling of the above exception, another exception occurred:

Traceback (most recent call last):File “/flash-firmware.py”, line 128, in main()File “/flash-firmware.py”, line 123, in mainflasher = FirmwareFlasher(binary_file)File “/flash-firmware.py”, line 57, in initself.boot0_pin = GPIO(boot0_pin_no, “out”)File “/usr/local/lib/python3.8/dist-packages/periphery/gpio_sysfs.py”, line 45, in initself._open(line, direction)File “/usr/local/lib/python3.8/dist-packages/periphery/gpio_sysfs.py”, line 66, in _openraise GPIOError(e.errno, "Exporting GPIO: " + e.strerror)periphery.gpio.GPIOError: [Errno 2] Exporting GPIO: No such file or directory

When running the actual docker container i get this error, I assume is due to the missing firmware:

rosbot | [ERROR] [1768849685.308301]: Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino

It might be that this does not work for RosBot3. Have you encountered a similar problem?

Thanks in advance,

Hi @carlos-biru,

ROS Noetic was last supported with ROSbot 2R, and since Noetic is now EOL, we have no plans to patch this software.

In the case of ROSbot 3, the firmware for the PCB should work, but there was an upgrade from RPi4 to RPi5 in the case of ROSbot 3, and this appears to be the main problem. The script flash-firmware.py would need to be modified to use a different library, as the peripheral libraries appear to be using resources that are no longer present on the RPi5.

I also noticed that there’s a script that should work on the RPi 5. It’s a ROS 2 script. You’d have to point it to the appropriate ROS binary. The firmware could be flashed natively and the ROS driver could be run in Docker.

flash_firmware.py
flash_firmware_uart.py

ROS 1 firmware can be download from this release:

Let me know if you can handle this operation.

Thanks @RafalGorecki

As soon as I get some time, I will try this out and let you know.