m500 ROS 2 Support
-
Hi.
I am currently using an m500 drone with ROS1 and have been looking into upgrading to ROS2.Is ROS2 currently supported on the m500 drone? If not, does Modalai have any plans to provide ROS2 support on the m500?
Regards,
Bryce H. -
Hi Bryce,
The voxl board in the M500 runs a system that we don't plan to support ROS2 on natively since it's a very custom yocto build. Our new VOXL2 platform has been intentionally designed to run on an ubuntu 18.04 image to allow installing libraries of all sorts from the standard ubuntu repos (such as ROS2).
It is theoretically possible to get ros2 on a voxl, but you'd either have have to use an ubuntu docker image (we provide a sample 16.04 image for running ros kinetic on voxl) or rebuild the whole ROS2 project(and probably many of it's dependencies) manually.
-
Bryce - were you successful in running ROS2 on the VOXL? I'm working with a Docker container built from the official ROS2 Foxy container that just adds a simple proof-of-concept package for our use case and ran into some issues actually running a container from my image.
The container itself runs fine but my ROS2 launch script won't execute. My issues, I believe, surround the pseudoterminal interface on the VOXL's Linux build. ROS2 launch is using the
pty
Python package andpty.openpty()
looks for BSD-style pseudoterminals and I assume the onboard Linux kernel was compiled with the option to disable that depreciated interface (someone please chime in and correct me if I'm wrong). I'm currently wrestling the Docker image to work correctly on the VOXL Flight board.Am thinking about trying to run Singularity/Apptainer on the VOXL since it's computerization but focused on integration rather than isolation because I think my issues are Docker-related. Not sure if anyone has tried Singularity or not...
-
Double checking to see if there were any updates in terms of getting ROS2 to work on the M500?
-
I just tried this real quick on VOXL1 and indeed there is an issue related to
pty
on PC:
docker pull arm64v8/ros:rolling-ros-core docker image save arm64v8/ros:rolling-ros-core | gzip > rolling-ros-core-arm64v8.tar.gz adb push rolling-ros-core-arm64v8.tar.gz /data/
on VOXL1:
adb shell cd /data docker load < rolling-ros-core-arm64v8.tar.gz cd /home/root mkdir ros2 cd ros2 docker run -it --rm --privileged -v `pwd`:/home/user -w /home/user arm64v8/ros:rolling-ros-core #now inside docker container apt-get update apt install python3-colcon-common-extensions
then follow example to set up a demo project : https://roboticsbackend.com/ros2-launch-file-example/
run (inside docker container)
colcon build
Error:
stdout_descriptor, stdout = pty.openpty() File "/usr/lib/python3.10/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() File "/usr/lib/python3.10/pty.py", line 64, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices --- Failed <<< my_robot_bringup [0.21s, exited with code 1] Summary: 0 packages finished [3.72s] 1 package failed: my_robot_bringup 1 package had stderr output: my_robot_bringup out of pty device
After doing a quick search, cannot figure it out. It is probably related to very old docker version on VOXL1.. Not sure if anything can be done..