Skip to content
Athanasios Polydoros edited this page Feb 2, 2026 · 4 revisions

Coursework Assignment 25/26

Read the Assessment Item 1 Coursework page on Blackboard! Make sure you read the assignment brief and CRG and understand it. Make sure you also understand the 3 different complexity levels. Focus on making a good solution for the simple level first! Ask the module team if anything is unclear!

The assignment is meant to be challenging and open-ended.

There is no single "correct" solution you need to find, there are possibly very many. You should be innovative and creative to devise algorithmic solutions that can solve the problem given. You will be rewarded for good ideas, a coherent, comprehensive concept and implementation. Remember: The actual robot performance (i.e., if it pushes all objects where they should go) is only a small fraction of your mark. More important is that you submit working code, make clever use of the robot's sensing capabilities, and overall present a coherent and well-structured solution. You should focus on a well-thought-out solution and be confident in understanding and presenting it.

Regarding plagiarism, academic offences, and code re-use

You are allowed (even encouraged) to build your solution on code fragments presented in the module, and also code you find online as long as you reference it in the comments in your source code. Source code that we find in your solution that is copied from available solutions online or elsewhere without a reference are an academic plagiarism offence and may be prosecuted in line with the university policy. Simply, don't do it, reference it (the URL to the original version is enough for source code, don't worry about Harvard referencing). We also run automated code structure analysis across all submissions (past and present) which usually picks up collusion (i.e. two students submitting the same code with changed variable names and comments, etc) quite reliably. Don't do it.

That said, you should not worry, if you are do nothing wrong you have nothing to fear. Give your utmost best and you'll be rewarded.

Practical Recommendations

Here are a few quick reminders and commands you will likely use regularly:

  • Using the Docker Image describes something you should be very familiar with by now. Your solution must work in the provided devcontainer as that's where it will be tested in.
    • Make sure you have the latest version of the devcontainer with all features. To remind you how to get it:
      1. docker pull lcas.lincoln.ac.uk/devcontainer/ros2-teaching:4
    • Then you are ready to launch VSCode with your configured repository which you derived from the module's template repository during the week 1 workshop (watch the recording of it if you missed it!).
  • Simulation:
    • You will find that the simulation environment has some coloured horizontal "markers" on both sides (here shown for the simple simulation environment without obstacles) and a red patch on the floor. These markers are indicating where the coloured objects should be pushed towards only for the complexity level 3 (see Assessment Brief). If you don't want to implement this higher level of functionality, you must still ensure you don't confuse them with the boxes having the same colour!
init_env

Simulation Environments

For the coursework assignment, a number of different simulation worlds have been generated and released.

Complexity level 1

  • For the simple environment (no obstacles) you do this with this command: ros2 launch uol_tidybot tidybot.launch.py. The environment has already one single box in front of the robot to test the most basic functionality of your code

  • You should add a number of brown cubes, placed randomly before starting your behaviour:

    ros2 run uol_tidybot generate_objects --ros-args -p n_objects:=10 -p cx:=-0.7 -p cy:=0.55 -p spread:=0.5

    This will generate 10 cubes on and around the red patch. You can change the number with the parameter n_objects.

  • Remember, your job is to push all the cubes that are on the red patch away. You can run the command above again if there no boxes placed on the patch

  • The figure below illustrates an example of complexity level 1.

level1

Complexity Level 2

  • This is an extension of Level 1. In this environment we will also generate objects of blue colour. The objective is to remove only blue colored objects from the red patch such that only brown cubes remain.

  • You should use the following commands in order to create the environment of the complexity level 2.

ros2 launch uol_tidybot tidybot.launch.py

ros2 run uol_tidybot generate_objects --ros-args -p n_objects:=5 -p cx:=-0.7 -p cy:=0.55 -p spread:=0.5

ros2 run uol_tidybot generate_objects --ros-args -p n_objects:=5 -p cx:=-0.7 -p cy:=0.55 -p spread:=0.5 -p red:=False

  • Feel free to edit the papramenters of the generate_objects node if necessery. The figure below illustrates an example of the complexity level 2 task:
level2

Complexity Level 3

TODO

Real Robots

You have a lot of freedom when showing your work on the real robots. Generally, the same complexity levels apply, but you can vary the number of objects, walls and obstacles more freely. You are allowed to explore how your implementation deals with different challenges, and make sure that in your short video you highlight the performance in response to the respective environment. Using the real Limo Robot is your starting point.

Clone this wiki locally