LeoRover Real Robot Connection issue

Greetings,

I am currently trying to connect a LeoRover to the construct development environment.
I managed to follow every step and have the robot connected to the development environment.
If I open a terminal and launch anything, I will be able to see it on the website and a local terminal.

However everything that is autonomously launched is not visible on a local terminal or the web interface, so the firmware running on the leocore board and communicating thanks to microros but also the camera feed. Noticably, these remains visible from any remote computer locally connected to the leorover.

Would you have any clue to guide us ?

It seems that the husarnet do not account for whats already running.

Thanks

@loickchovet
Greetings!

This statement seems to negate what the next paragraph began to say.

I’m struggling to understand the problem here. In sure you understand what you are saying and the terminology, but it seems you are assuming that we have the same understanding. Please define:

  • the local terminal
  • the web interface, and
  • the website

Please also clarify “autonomously launched” vs “if I open a terminal and launch anything”.

Some images will also help here.

For some reason, this seems to indicate that there is no problem! How is “any remote computer locally connected to the leorover” connected to it? Serial? USB? Network?


I hope you understand my point. Thanks in advance for your patience and clarifications!

So let me try to make things clearer. In my current settings I have :

→ A laptop

→ A leorover connected to internet

The laptop is connected to the access point created by the leorover.

→ The local terminal : A terminal directly running on the leorover by ssh on it

→ The web interface : The robot ignite academy robot, where I am supposed to be able to connect to real robots = the website

At boot the robot launches some process, for exemple the raspberry pi camera is published.
There is also a uros agent publishing the topics related to the firmware of the robot (cmd_vel and such).
As I was saying, all of these topics are not visible if I do ros2 topic list on the “local terminal” neither on the website when connected to the robot.

However, if I do ros2 topic list from my laptop, I can see the topics.

I hope these clarifications will help you.

Thanks for the clarification. Here I’m assuming that you have completely configured the robot by running the setup command given, similar to the one below:

image

If so, this looks like a Leo Rover config, and not what we can fix from here. I think this is the key to this issue:

I would expect the topics to be available on the SSH terminal. If not, it’s not likely to be available on The Construct either.

Things you could check:

  • Are you able to access the topics of the robot without anything (PC or The Construct) connected, via the local terminal?
    • Is this something the Leo Rover supports?
  • Is the “access point mode” blocking access via the local terminal (and The Construct). Perhaps there are different connection modes that do not work simultaneously.

Well before executing the command on the robot, it was working perfectly. And I tried removing everything using the rll_uninstall command, and it works perfectly again.
But as soon as we install everything using the command you showed, it produces the behaviour detailed above.

Well, I do no think there is any conflict between the access point mode (which is the default behaviour) and the local terminal, because as explained before, if I ssh to the robot and publish something there, it become visible on The Construct.

To answer your suggestions :

Are you able to access the topics of the robot without anything (PC or The Construct) connected, via the local terminal?

We cannot really access the local terminal because it would mean opening the whole robot and pulling a cable, but, if the construct script is installed, the local terminal do not see anything, if not, the local terminal view topics such as /leo/camera or cmd_vel

Thank you for providing the clarifications. Let me refer this to one of our experts in this area.

Hi @loickchovet,

When the script for setting up a remote connection to the robot is executed, in addition to installing Husarnet, the script adds some variable exports on ~/.bashrc, which are:

export ROS_IPV6=on
export ROS_MASTER_URI=http://master:11311
export ROS_HOSTNAME=master

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI=file:///var/lib/theconstruct.rrl/cyclonedds.xml
export FASTRTPS_DEFAULT_PROFILES_FILE=/var/lib/theconstruct.rrl/fastdds_husarnet.xml

The first 3 variables are related to ROS1, and the 3 last variables are related to ROS2.

You said that when you launch something manually on the robot, you are able to see it from The Construct.

This makes sense, because after running that script, the next time that you connect to the robot, the ~/.bashrc file is sourced automatically, so ROS2 considers those variables, and any ROS2 node launched after the automatic source of ~/.bashrc can be seen on The Construct.

The reason why you cannot see the topics launched automatically when the robot boots up is that the script launched on boot is NOT sourcing ~/.bashrc.

I don’t own a Leo Rover, so I don’t know exactly what is the name of the script used for launching everything on boot. Using the ps faux command, you can see the processes tree, and you will probably find the script that is responsible for launching the ROS nodes.

You just have to modify that script to export the Cyclone-related variables before launching any node. The Cyclone variables are the ones I mentioned earlier:

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI=file:///var/lib/theconstruct.rrl/cyclonedds.xml

After that, you have to relaunch the automatically-launched nodes (maybe restarting Leo Rover).

To give you more context, the cyclonedds.xml file tells ROS2 where to find nodes connected to the same Husarnet network. Husarnet is the tool we use to establish the connection between The Construct and your robot.

After exporting the variables aforementioned, and restarting the nodes, please let us know if you still have any other problems.

Hi again, @loickchovet ,

I told you to add Cyclone-related variables because I assumed that you are using ROS2.

But if your robot is using ROS1, you have to add the ROS1-related variables to the script responsible for launching everything, which are:

export ROS_IPV6=on
export ROS_MASTER_URI=http://master:11311
export ROS_HOSTNAME=master

Or if you prefer, just add all variables that The Construct’s script adds to ~/.bashrc:

export ROS_IPV6=on
export ROS_MASTER_URI=http://master:11311
export ROS_HOSTNAME=master

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI=file:///var/lib/theconstruct.rrl/cyclonedds.xml
export FASTRTPS_DEFAULT_PROFILES_FILE=/var/lib/theconstruct.rrl/fastdds_husarnet.xml

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.