Skip to content

Using the real Limo Robot

Josh Cooper edited this page Oct 22, 2024 · 4 revisions

This is the getting started guide to help you start using the real Limo robot.

1. Get to know your Limo

Read Sections 1.1-1.6 of the manual whilst inspecting the real robot and its components.

When you are using the Limo robot you should make sure that you have read, understand and are following the risk assessment (intranet link). The high level overview of this is that you should check out the Limo before you use it, and take care not to drive it recklessly. You should not leave batteries charging unattended, and if you notice that the battery has been damaged, report this to a member of staff.

You should also take a point of noticing the LEDs at the front. They indicate what state the wheels are in. You should have them in the orange mode. This is for differential drive mode.

You may also want to stop the wheels, you do this by pressing the power button briefly. This will set the LEDs to red.

The wheels can also be used in Ackerman mode, this is when the LEDs are green. However, if you want to change the wheel mode, you should return it to the orange mode when you have finished.

2. Setting up your developer machine

In all teaching settings, you should ensure that you are using a Lab PC to connect to the Limo robots. This is because of network segmentation between the robots and eduroam. The robots are not connected to eduroam.

You should power on the lab pc and make sure that you're booting into POP!_OS. Once the computer has turned on and is booted into POP!_OS you should open VS Code. You can find this on the taskbar/dock.

image

Then you should click on Clone Git Repository

image

And type in

https://github.com/lcas/ros2-teaching-ws.git

and then hit enter.

You will be asked where you want to save it. Save it to your document's folder.

If it asks you to open it or trust the authors, select yes.

You should be prompted to reopen in container if not, you should press the F1 key and type reopen in container and press enter.

You will have to wait for the workspace to be downloaded, you should go and collect a robot from the front of the lab and do not need to watch it.

When it is finished, it will look like this: image

If these steps do not work for your research — please contact the technician who is working through the deployment with you.

3. Setting up your robot

Get your robot and check it out

QR Code on the box to scan
  • Take the box and scan the QR code on it, or visit lncn.ac/LimoUse.
  • Fill out the online form to check out the robot for your use.
  • When you have finished using the robot, you will need to use the same form again to let us know you've finished using it!

Battery

Installing battery
  • Make sure the leads coming from the battery are facing towards yourself, and on the left.
  • Make sure the ribbon is laying underneath the battery (you should use this to lightly slide out the battery rather than the lead)
Connecting battery
  • You should then connect the two yellow connectors together.
Battery flap closed
  • Then close the flap.

⚠️ When you have finished with the Limo, the battery should be placed back into the top of the case like you found it.

Power up

  • Press and hold the power button for about 5 seconds (until it beeps) to turn the robot on.
Power Button

Power down

  • Press the shutdown button on the back of the display
  • Wait until the screen is completely off, then...
  • Press and hold the power button for about 5 seconds (until it beeps) to turn the robot off again.
  • Disconnect the battery and remove it from the robot
  • Put everything away

Zenoh Container

The robot uses Docker under the hood to run the ROS2 environment. Don't worry — you don't need to know everything about it. You just need to know that docker is a box that the ROS2 environment runs in. And we need it to be running so we can connect to the robot.

This container is called the 'Zenoh Container' as it makes use of Zenoh which is a tool we are going to be using to share data between the robot and the developer machine.

If you've previously used ROS1, you would use "ROS_MASTER" to establish a client-server relationship with the robot. However, in ROS2, the system has shifted to using DDS (Data Distribution Service), which enables decentralized communication and coordination. DDS allows for more flexible and scalable control, facilitating the management of multiple robots in a coordinated fleet without relying on a single server. This does not work in our setting, so we are using Zenoh as a replacement for DDS.

On the display on the back of the Limo, you should now see a screen which tells you the state of the robot.

image

The hostname is displayed in big text, and it is the serial number of the Limo. We use this to track and maintain the robots we have.

The IP is the numbers that start with 10.82.0.x, you will need to use this to connect to the Limo from your developer machine.

Then you will see some text which shows the state of the container.

  • If the container is running you can continue with the next steps.
  • If the container is shutdown you will need to start the container. You should see on the desktop a blue icon that says 'Zenoh Docker On' press this, and wait a few seconds. It will then update to say it is running. Once it is running — you can continue.
  • If the container is in a error state, ask for some help from the staff in the room. But, you may be able to resolve it by turning 'Zenoh Docker' off and then back on again.

4. Connect your devcontainer to the robot using Zenoh

In your developer machine, go back to the devcontainer running in VSCode (the one you also run the simulation in).

  1. Make sure you are not running the simulation when connecting to the real robot! Stop it if you have to ([Ctrl-c])
  2. start the bridge: zenoh-bridge-ros2dds -e tcp/10.82.0.XXX:8888 (you need to add your robot's IP again here!) and keep it running
  3. run ros2 topic list -v in a different terminal (inside of vscode) and you should see all the robot topics. Check which topic names are different to the simulation and which are the same.

To disconnect from the robot's ROS system, simply stop the zenoh-bridge-ros2dds process by pressing [Ctrl-c] in the terminal where it is running.

You will need to open multiple terminals in VS Code. You can do this by pressing either the + button for a new terminal window, or you can press the two boxes button to split the current window.

vscode_newsplitterm

5. Moving the robot around and getting some data back

Moving the robot

⚠️ It is now extra important to make sure that the robot is on the floor

You should have VS Code running with a Zenoh connection to your robot. Open a new terminal using the instructions described previously.

And then run the command

ros2 run teleop_twist_keyboard teleop_twist_keyboard

Now with the keys i j l , you can move around your robot. You can also use the k key to stop all movement.

image

RViz

We can use the graphical visualiser RVIZ to look at the robot and its sensor topics.

To use this we will need the look at the screen of the container, press the ports tab just above the terminal.

image

Then press the open in browser or preview in editor icons next to the novnc port.

image

This will then open the webpage to look at the browser.

Then press connect. If it asks you for a password it is vscode

Then press the button to open the sidebar. Then press the cog icon. Then change scaling mode to Remote Resizing.

image

You can now press the same button to open the sidebar to close it.

Then go back to vscode, and in a clean terminal... Open rviz with the command:

rviz2 -d /opt/ros/lcas/src/limo_ros2/src/limo_description/rviz/model_sensors_real.rviz

Now it is open in the webpage. You should full screen the rviz window to make it easier to use.

Now it is open you can click the the add button in the bottom left to see which topics you can add to the window.

image

You should play around with it and see what you can do!

5. Next steps

If you are using the Limo robot as a part of teaching, you should now return to your module's specific instructions.

But, if you are using this for a research application, you might want to check out the advanced notes to fill you in on the details that have been omitted from here.