Alex Mitrevski profile picture

Home

Research

Publications and talks

Work and projects

Teaching

Supervised projects

Resources and notes

About me

GitHub logo Google Scholar logo Linkedin logo YouTube logo

Autonomous Mobile Robots (AMR)

This is a first-semester mandatory course in the Master of Autonomous Systems program at Hochschule Bonn-Rhein-Sieg. I taught this course for the first time in the winter semester 2023/24.

Description

As the name says, this course is about mobile robots (i.e. robots that are able to move around) in an autonomous fashion (i.e. without being externally controlled). This deceptively simple concept leads to a variety of questions that we will attempt to address in the course:

Lectures

The following topics are covered in the course:

  1. Autonomous mobile robots introduction
  2. Perception: Sensors and sensor models
  3. Locomotion
  4. Kinematics
  5. Environment representations
  6. Path planning
  7. Kalman filter-based localisation
  8. Monte Carlo localisation
  9. Simultaneous localisation and mapping (SLAM)
  10. Exploration (practical session)
  11. (Mobile) Manipulation

Assignments

Assignment 1: Laser data collection and visualisation

In this first assignments, you need to use the simulation of our KELO Robile platform (https://robile-amr.readthedocs.io/en/humble/index.html) to collect some data from the robot’s laser scanner (using ROS), and then read and visualise that data using standard Python tools (using matplotlib for visualisation).

The following are the steps that you need to concretely follow in the assignment:

  1. Set up the Robile simulation by following the instructions in the documentation of the simulation: https://robile-amr.readthedocs.io/en/humble/index.html
  2. Start the simulation and move the robot around using manually sent commands; while moving the robot, collect a rosbag with:
    • the laser measurements
    • transforms that are available for the robot
  3. Write Python code in which you read the laser + TF data from the rosbag and convert the laser measurements from the laser’s frame to the robot’s base frame. After the conversion, visualise the data (e.g. as a sequence of plots for different time points).

Assignment 2: Data visualisation and filtering

In this assignment, you will:

  1. see how you can use data visualisation to identify anomalies in the data
  2. apply some filtering to noisy data and see how that improves the data quality

For the assignment, you will use a rosbag with data collected from the Robile that you saw in the lab during our last lab session.

Please work on the assignment locally (NOT on JupyterHub - the collected rosbag is very large), but submit your final notebook on the hub.

Assignment 3: Kinematics

This assignment is dedicated to the topic of robot kinematics. The assignment consists of two parts:

  1. Deriving the kinematics model of a differential drive robot (following the lecture slides) and using that to implement a forward differential drive model.
  2. Implementing a simple robot motion model based on which, given a goal pose, the robot first rotates towards the goal, then moves towards it in a straight line, and finally rotates so that it can align itself with the desired orientation (this is also referred to as an odometry motion model).

Detailed instructions about the assignment are provided on JupyterHub; please also submit your implementation there.

Assignment 4: Potential field planning

In this assignment, you will implement a simple potential field path planner for the Robile robot, based on which the robot:

Verify the correctness of your implementation in the Gazebo simulation of the Robile; particularly verify that, if you move the obstacles around on the fly, the robot will avoid them appropriately, while still moving towards the goal.

Detailed instructions about the assignment are provided on JupyterHub; please also submit your implementation there.

Assignment 5: Landmark-based localisation using a Kalman filter

In this assignment, you will implement landmark-based localisation using the Kalman filter where the Robile should be localised based on the noisy measurement data by compensating for the error in both the motion and measurement model.

Please feel free to vary the standard deviation of noise added to the motion and measurement model and check the robustness of the filter. For better intuition, add the topics real_base_link_pose and estimated_base_link_pose in Rviz for visualisation.

Detailed instructions about the assignment are provided on JupyterHub; please also submit your implementation there.

Assignment 6: Occupancy Grid Mapping

In this assignment, you will implement the occupancy grid mapping algorithm in simulation by handling noisy laser scan data.

Detailed instructions about the assignment are provided on JupyterHub; please also submit your implementation there.

Course project

Starting from roughly the middle of the semester, you will work on a project in which you need to combine the algorithms developed throughout the semester (for navigation, localisation, and exploration) on our Robile robots so that the robot can explore an unknown environment and localise itself there.

Details about the project will be discussed during the semester.