Similar to the ITR module, which you likely would've taken, we use a container for simulating and interfacing with our robot, TIAGo.
The container is already provided on the lab machines and can be found at /store/netsoft/itr-cont/tiago/tiago_noetic_opensource.sif
. Additionally, apptainer/singularity
is already installed.
If you are using your own machine then you must execute the following steps to acquire and access the container.
- Install Apptainer, instructions are available here.
- Download the container from NextCloud:
wget https://nextcloud.nms.kcl.ac.uk/s/BZtWJtiyP57r8YN/download -O /tmp/tiago_noetic_opensource.sif -q --show-progress && mv -f /tmp/tiago_noetic_opensource.sif tiago_noetic_opensource.sif
You can enter the container by simply using apptainer run
, for example:
apptainer run tiago_noetic_opensource.sif local terminator
This will run the container, automatically setting the ROS_IP
and ROS_MASTER_URI
for the master to run locally, and launch a terminator instance to ease development.
Additional details can be found by executing:
apptainer run-help tiago_noetic_opensource.sif
If your machine has an GPU, then you may need to execute some additional steps for it to work with apptainer/singularity
. We are only providing support for NVIDIA GPU's.
In the simplest case, all you need to do is pass an additional flag to apptainer run
:
apptainer run --nv tiago_noetic_opensource.sif
You can check if the GPU drivers are loaded correctly by executing:
nvidia-smi
If this did not work, then you will need to additionally install the nvidia-container-toolkit, and pass an additional flag to apptainer/singularity
:
apptainer run --nv --nvccli tiago_noetic_opensource.sif
To quickly test that everything is setup correctly, you can run:
roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true robot:=steel
This should launch Gazebo
, and you should see something like the following:
This launches an empty world, with no map.
You may use the world
argument to launch a specific world with the above command:
roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true robot:=steel world:=simple_office
You should see the following world:
The launch file we have been using so far doesn't provide any mapping/localisation capabilities, meaning we cannot perform any autonomous navigation.
If we don't already have a map of the world (which we do for simple_office
), then we must create a map using gmapping (see this tutoral), and then launch the following:
roslaunch tiago_2dnav_gazebo tiago_navigation.launch public_sim:=true world:=simple_office
You should now see Gazebo
as before as well as RViz
, with the loaded map:
You're now ready to begin developing and run your own nodes!
Within this repository, you will find a ROS package called custom_worlds
, which provides some additional worlds which are more interesting and complex than the example provided above. You may wish to use these worlds in your projects, to do so, simply copy this package into your workspace and build it.
Commonly asked questions and their respective answers will be presented here, as and when they arrive.
Q1: I got this weird error with a wall of red and something about the ROS path.
A1: Make sure you pass public_sim:=true
.
If you are intending to use the LASR stack for your project, and have permission to do so, please get in touch so I can provide further instructions on how to do this.
If you are facing difficulties with setting up the container and/or simulating TIAGo, feel free to open an issue on this repository and I will do my best to help you.