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.
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:
The following topics are covered in the course:
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:
In this assignment, you will:
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.
This assignment is dedicated to the topic of robot kinematics. The assignment consists of two parts:
Detailed instructions about the assignment are provided on JupyterHub; please also submit your implementation there.
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.
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.
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.
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.