4CCSAITR Introduction to Robotics
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
Faculty of Natural, Mathematical & Engineering Sciences
Department of Informatics
EXAMINATION PERIOD: May 2026 (Period 2)
MODULE CODE: 4CCSAITR
MODULE TITLE: Introduction to Robotics
FORMAT OF EXAMINATION: Computer-based exam (KEATS Assignment)
START TIME: 28/1/2026
SUBMISSION DEADLINE: 19/2/2026 at 16:00
INSTRUCTIONS: Implement as much as you can of the following specification of the robot behaviour.
TOTAL MARKS AVAILABLE: 10
TOTAL PAGES: 4
PERMITTED MATERIALS: ROS Wiki and videos from the module.
SUBMISSION PROCESS: create a zip folder containing exclusively the
first_coursework package and submit it at the link for coursework 1 in KEATS.
Make sure to submit only your package, not the entire ROS workspace, or python environment.
ACADEMIC HONESTY AND INTEGRITY:
Students at King’s are part of an academic community that values trust, fairness and respect and actively encourages students to act with honesty and integrity. It is a College policy that students take responsibility for their work and comply with the university’s standards and requirements.
By submitting this assignment, I confirm that this work is entirely my own, or is the work of an assigned or permitted group, of which I am a member, with ex-
ception to any content where the works of others have been acknowledged with appropriate referencing.
Initialization
Create a package called "first_coursework". Remember to maintain the correct dependencies in package.xml and CMakeLists.txt during development.
Part 1
Implement an open-loop behaviour that makes the robot navigate from its initial position through the corridor in the following image:
The corridor starts at the robot initial location and ends at the green dot.
[2 marks]
Part 2
Implement a closed-loop behaviour that follows the exact same trajectory that the robot generated in part 1, staying in the same corridor, but this time under a disturbance.
Your new node must publish the velocity commands on the topic
/turtle1/desired_twist rather than /turtle1/cmd_vel to allow the provided node drift.py to perturb the command. The node implemented in drift.py creates a “current” constantly pushing the robot from left to right, which the robot must counteract.
The specific strength of the current is random, determined by your student ID.
Input your student ID in the variable STUDENT_ID at the beginning of drift.py.
This string will be used as a seed to generate your personalised current.
Hint: to be able to follow the same trajectory as part 1, start by writing a node with a subscriber to /turtle1/pose, and run it at the same time as your node from part 1.
Store sufficiently many poses along the trajectory to use as via points foryour closed- loop controller.
Make sure to run the drift node before your controller, so that the current is present when the robot starts moving in closed loop. Do not use the drift with the open loop controller or it will... drift away. Or do so, just to see what happens.
[2 marks]
Part 3
Drone Racing! Autonomous drones are now competing in high-stakes, high- speed races. Our robots are still turtles, but who’s to say they can't leave the
competition in the dust?
Write a node in a file called race.py implementing a controller for our turtlebot in turtlesim, to race on the track below:
Course Requirements: The robot must navigate the course and come to a
complete stop after crossing the finish line. It must pass all obstacles in
numerical order without making contact. When rounding the orange obstacles (1 and 3), the robot must keep them to its left. Conversely, it must keep the green
obstacle (2) to its right.
Evaluation Criteria:
• Successful Completion: The robot completes the course without hitting any obstacles and stops immediately after the finish line. [1 mark]
• Navigation Style (Mutually Exclusive):
o The robot navigates using a sequence of straight lines and "turn-on- the-spot" maneuvers. [1 mark]
o The robot uses "go-to-point" navigation throughout, without stop- ping to turn. [3 marks]
o The robot employs a combination of "go-to-point" and smooth, curved trajectories without stopping. [5 marks]
[Total of Section: 6 marks]
Hardware limitations
Our robot is, after all, a turtle. While turtlesim may allow a wide range of velocities, for this coursework the turtle should be limited to:
• A linear forward velocity (along the x axis) of +-3 m/s
• A linear sideways velocity (along the y axis) of 0 m/s, that is, the turtle can- not move sideways.
• No limitation on angular velocities.
• A command rate of exactly 10 messages per second published on /tur- tle1/cmd_vel.
[Grand Total: 10 marks]
2026-02-25