-
Notifications
You must be signed in to change notification settings - Fork 16
Workshop 1 ‐ Introduction
The goal of this session is to make you familiar with the LIMO robot platform, which will be used throughout all remaining practical sessions and is a key component of the assessment. This includes the robot's components and functionality, tools for remote operation, software development and simulation. You might have already used the robot in your first year, but since then, our setup has changed, and we hope it is much easier to use. Even if the concepts covered here seem to be straightforward, please go through all the tasks and treat them as a refresher session.
This repository contains all workshop tasks and examples, serving as a valuable reference point for your own code development in this module. Let's start with setting up our software environment first.
-
Switch the lab computer on and select an operating system. We recommend Ubuntu Linux-based Pop!_OS but Windows is also fine. The containerisation is realised through Docker, and for code development and interaction with the robots, we will use Visual Studio Code (VSC). Both Docker and VSC are already installed in the labs and available through the taskbar/dock. On Windows machines, you may need to start Docker Desktop manually. Open VSC.
-
Set up your own working repository on GitHub by starting from the rob2002-ws template. The template includes a Docker image based on this repository, so you should be able to run the provided examples and use them in your own project. Follow all the instructions provided with the rob2002-ws repository, which should result in a working software environment.
-
Set up the real LIMO robot by following points 1,3 and 4 of the following instructions.
-
Write down somewhere handy (e.g. in your project repo) the Zenoh connection command, as this is going to be used often when working with real robots:
zenoh-bridge-ros2dds -e tcp/10.82.0.XXX:7447. -
Inspect the robot's nodes and topics by using the
ros2 nodeandros2 topiccommands (in a new terminal). When you type the command without any additional arguments, you should see all available options. Display and compare the format of the following topics/odom,/scan,/tfand/camera/color/image_raw. You might also want to refer to the official node and topic tutorials. -
Now, let us use the graphical visualiser RVIZ to look at the robot and its sensor topics. Start by typing
rviz2 -d /opt/ros/lcas/install/limo_description/share/limo_description/rviz/model_sensors_real.rvizwhich uses a pre-defined configuration file, and you should see the interface with a robot model and its sensor data displayed in the remote desktop. To get familiar with the interface, adjust the laser scan visualisation options and see how these affect the output. Try to add a new visualisation for sensors not included in the provided configuration (e.g. odometry). -
Teleoperation. Leave the RVIZ running. In a new terminal, start the keyboard teleoperation node
ros2 run teleop_twist_keyboard teleop_twist_keyboardand drive the robot around using the keyboard. Have fun, but pay attention to other robots and your human fellows, though! -
Let's now send some basic robot control commands using ROS topics. The robot's speed can be controlled by the
/cmd_veltopic. Use theros2 topic pubfunctionality to send a singleTwistmessage (linear and angular velocity command) as in this example:ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.5}}"Now, adjust the linear components of the
Twistmessage and see the resulting trajectory. -
Using your knowledge of the topic publishing, issue a series of commands that will drive the robot:
- in a circle with a radius of 1 m;
- in a 2 m square.
Use as few commands as possible.
- To start the simulator, open the terminal and execute the following commands:
ros2 launch limo_gazebosim limo_gazebo_diff.launch.py - Inspect the simulated robot and its sensors by running
rviz2in another terminal window with the following config file:rviz2 -d /opt/ros/lcas/install/limo_gazebosim/share/limo_gazebosim/rviz/urdf.rviz - Repeat the tasks from Section 3, which used the real robot, but this time in the simulated environment.
- Try out different wheel configurations as described in Section 1.7 of the manual.
- Learn more about the nodes and topics. Whilst these concepts will be covered later in the course, this will give you a first glimpse into various ROS functionality associated with LIMO.
- Learn how to create a simple ROS2 publisher node and modify the example such that it sends a single
/cmd_velcommand to control LIMO from the script. - Explore other built-in functionalities on the real robot by following the manual (e.g. localisation, mapping or vision).