Ros2 support

Hi,
My company recently ordered three leo rovers and are looking forward to developing with these. However, with ros1 support coming to an end, we want to develop for ros2 from the beginning. Is there any work underway for adding ros2 leo rover support, or would we need to do this ourselves?

1 Like

The last ROS1 distribution (Noetic) will be supported until May, 2025 so I wouldn’t say it’s coming to an end yet.

ROS2 support will be added by us eventually, but it is not worked on at the moment and most probably won’t be for a while. There are still some dependencies used by Leo that are not available on ROS2.

If you still want to develop your application for ROS2, you can try to use the ros1_bridge package to enable communication between ROS1 and ROS2 nodes.

Looking at the Software structure page

  • rosserial I think this might require porting the LeoCore firmware to Microros
  • Rosbridge - Exists for Ros2
  • Raspicam2 node - Exists for Ros2
  • Web video server - Exists for Ros2

Did you decide on a version yet? Ubuntu 20.04 & Foxy?

I was not aware there exists a port of raspicam_node for ROS2. That might speed things up. The firmwares will need to be ported to micro-ROS. Other than that, porting the ROS packages should be fairly easy.

I think we are probably going to primarily target Ubuntu 20.04 and the Foxy. Optionally, we will also support Ubuntu 22.04 and the Rolling distro or the upcoming Humble distro.

1 Like

Great stuff, I can only put two links in a post as a newbie, here: Raspicam2

Is the LeoCore hardware closed source? I couldn’t spot a schematic for it?

I’ve got some good news! I’ve made significant progress with ROS2 support. The micro-ROS based firmware for LeoCore board is working but needs some enhancements. I’ve released leo_common packages to Foxy distribution. I also tested the ROS2 ports of the packages used by Leo Rover:

A micro-ROS port for Core2 board is also planned but only after a working System for LeoCore board is released.

1 Like

To be honest, we still haven’t decided whether to open or close the source of the board, so it remains closed. The board is still new and we’re still not sure which direction we’ll take from the business side here. But I’ll let you know if we have something.

Is there a document or complete instruction tutorial link to setup ros2 on leo rover. Acc. to this:

I need to run ros2 command for flashing raspberry pi but in first place ros2 is not installed. Should I follow ros2 installation for raspberry pi or ros1/ros2 bridge setup.

Not yet. We still need to get some things done to fully support ROS2. By the end of this month we will release the first ROS2-based version of LeoOS.

Thank you @Blazej_Sowa for the reply.

SETUP:
Currently, I have an AGX connected to Leo Rover - raspi 4 (ROS1 based firmware) via ethernet. I have built a ros1/ros2 bridge in AGX. Additionally, have ZED 2i camera connected to AGX and raspi cam on rover.

AIM
I want to maneuver Leo rover using ROS2 Nav2 commands. Is it possible with above setup. If not, any possible solutions for now?

Current problem: Firmware on Leo rover is ROS1 based and effort to generate ROS2 based firmware failed because of build errors.

If the ros1/ros2 bridge is properly working, I don’t any reason why this wouldn’t be possible.

In case of build error it’s better to discuss them on Github Issues.
There are a couple of more steps besides flashing the firmware to make ROS2 work on Leo. We are still working on it. If you want to use ROS2 without ros1/ros2 bridge I suggest waiting a little before we release the image.

We released the first beta of ROS2-enabled LeoOS!

The image is based on Ubuntu 22.04 Jammy packages and ROS2 Humble.

After flashing the image and logging via SSH, you can flash the firmware to the controller board using this command:

ros2 run leo_fw update

As the OS features newer Ubuntu distribution I took the opportunity and introduced some changes to the system configuration. Most notably. to restart ROS nodes, instead of:

sudo systemctl restart leo

you need to do now:

systemctl --user restart ros-nodes
1 Like

Here is what I tried:

I installed ROS2 foxy, ROS1 noetic and ros2/ros1 bridge workspace with ros2 deps. I installed these on Nvidia NX and ros2 → ros1 bridge works with talker and listener example but not client and server example. Same goes for ros1 → ros2.
Also, I am not able to heard or receive /cmd commands (NX end) ros2 → (Leo Rover) ros1 via ros2/ros1 bridge. I referred to this githib repo.
Example 3 in the mentioned below repo doesn’t work. It feels like it is stuck in talker term and on client side it keeps pining server not setup.

I confirm the ros2 topic list command and installation of ros2 on beta version seems good so far. Quick question, what sensors especially IMUs or cameras are support for leo rover?
For ros1 based firmware it mentioned it supports only MPU-9250 based IMUs

1 Like

Hi,

Is there a teleop package for this ros2 leo rover and I also sometimes after reboot. The rover doesn’t work with ros2 run pub cmds. It will run the cmds on ssh terminal but nothing will happen or rover doesn’t move and it starts blinking that green led. Subsequently, it will stay on this green led blinking problem and in order to get rid of this, I need to re flash the firmware again or run:
ros2 run leo_fw update

There is a teleop package: leo_common-ros2/leo_teleop at humble · LeoRover/leo_common-ros2 · GitHub
It should be already pre-installed.

When this happens, try doing:

systemctl --user restart uros-agent

and let me know if it fixes the issue.

Hello, I’m interested in ROS2 support as well. I see the last release was beta2 in October 2022. I was wondering how stable the release. Additionally, has there been any further progress on ros2 support?