Skip to content

Assignment Setup

gcielniak edited this page Dec 18, 2023 · 12 revisions

Environment

The basic assignment setup includes our LIMO robot with a driving arena. Due to space restrictions in our teaching labs, we will use half of the arena (parts 1-8) only. There are additional 6 rectangular obstacles placed in the environment. This setup is also implemented in simulation (see these instructions for more details). There are two variants of the environment: one with simple and visually distinct potholes (left image) and the other with a more realistic pothole appearance (right image).

These new environments can be used with our simulation setup as follows:

ros2 launch limo_gazebosim limo_gazebo_diff.launch.py world:=src/limo_gazebosim/worlds/potholes_simple.world

The realistic map is called potholes.world. If you run the simulation from the docker image you will need to provide the full path to the world which is located at /opt/ros/lcas_addons/src/limo_ros2/src/limo_gazebosim/worlds/potholes_simple.world.

The actual setup including the arena, pothole printouts and the robot looks as follows:

All the components are available from the cupboards in INB1101. Note that the location of potholes is not going to correspond to the layout from the simulation. If you would like to use this setup for testing, please arrange a session with our technicians.

ROS Package Template

This repository now contains a helper ROS package called assignment_template which can act as a reference point for your developments. You can set it up in your own repository and develop the assignment solution there (see the GitHub guide for further guidance on how to work with repositories). The package contains the following items:

  • pothole simulation worlds both easy and real (in /worlds & /models)
  • nav2 parameter file (/params/nav2_params.yaml)
  • nav2 grid maps (/maps) in 2 resolutions (50 and 20mm)
  • example scripts to run an “object detector” (based on earlier workshops) and a simple “go to point” node - a good point to start with two key functionalities for your assignment.

When you build and source the package you can do the following:

  1. Run the simulation:
ros2 launch limo_gazebosim limo_gazebo_diff.launch.py world:=src/cmp9767_limo/assignment_template/worlds/potholes.world
  1. Run the navigation node with hi-resolution maps and adjusted navigation parameters:
ros2 launch limo_navigation limo_navigation.launch.py use_sim_time:=true map:=src/cmp9767_limo/assignment_template/maps/potholes_20mm.yaml params_file:=src/cmp9767_limo/assignment_template/params/nav2_params.yaml
  1. Run the object detector node:
ros2 run assignment_template object_detector
  1. Run the navigate to point node:
ros2 run assignment_template example_nav_to_pose