I teach the Robotics Course in the Department of Computing, attended by third years and MSc students. This is a one term course which focuses on mobile robotics, and aims to cover the basic issues in this dynamic field via lectures and a large practical element where students work in groups and implement robotics ideas using the Lego Mindstorms NXT kits and, since 2014, the Raspberry Pi single board computer and Python using BrickPi interface boards. The course always finishes with a competition where the groups compete to build and program the robot which can most effectively complete a certain challenge against the clock. See the bottom of this page for pictures and videos from previous years' competitions.
Huge thanks to Tristan Laidlow, Andrea Nicastro, Jan Czarnowski, Charles Housego and Daniel Lenton who are the current lab assistants, have helped a lot with the development of the practicals, have repaired broken kits and are another point of contact for any problems.
Thank you very much to Stefan Leutenegger who co-taught the course with me last year and developed new material. Thank you to Duncan White, Geoff Bruce and other colleagues from the department's Computing Support Group, and to teaching fellow Maria Valera-Espina, who helped significantly in the transition to the Raspberry Pi-based platform in 2014. Thank you to Robert Lukierski, Lukas Platinsky, Jan Jachnik, Jacek Zienkiewicz, Jindong Liu, Adrien Angeli, Ankur Handa and Simon Overell who were previous Course Support Leaders and tutorial helpers on the course and substantially helped with the preparation of materials and exercises; and to Ian Harries and Keith Clark who developed earlier material from which the current course has evolved. In particular Ian Harries deserves the credit for making this the practically-driven course it still is today.
Lecture and practical sheets for the course will be available for printing from the links below (the links will come alive gradually throughout term). I will hand out the practical sheets each week in paper form. Extra material relevant to each week's lecture or practical which would probably be useful for you to look at is available from links below the lecture plan.
The timetabled slots for Robotics are for four hours a week, on Monday, from 2pm to 4pm and Wednesdays, from 9am to 11am. Most weeks we will have a one hour lecture at 2pm on Tuesday. Wednesday 9am to 11am will always be a compulsory practical session.
Note that there are currently two extra timetabled lab hours on Wednesday from 11am to 1pm. These are not compulsory, and they may clash possibly with other courses you are enrolled on. The reason for this is if some lab sessions over-run somewhat and we need a bit more time to finish. We are hoping that in the second hour 3-4pm on Monday later in term we will be able to use the lab.
Lectures on Tuesdays are in Lecture Theatre 308, Huxley Building and practicals are in Teaching lab 219, Huxley Building. The course runs for 8 weeks from week 2 to week 9 of college term; but we will not use all of the timetabled slots to hit the regulation department course length of 28 hours. The full plan for lectures and tutorials will be kept up to date below, and I will also announce it in lectures and via email when there are changes.
Practical exercises will be set in the lectures and assessed regularly in the labs as explained clearly in the practical sheets via demonstration and discussion with one of the lab assistants. I will ask you to organise yourselves into fixed groups for the practical sessions throughout term. These assessed practicals form the only coursework element of the Robotics course, and no additional assessed exercises will be set. We will add up all marks from practical assessments throughout term to form a final coursework mark for each group. Each practical group will be given a Raspberry Pi/Lego NXT robotics kit to keep and be responsible for during the whole term, so you will be able to spend extra time as needed during the week to complete the practical exercises. The number of members in each group will be confirmed in lectures in the second week depending on how many students take the course but will probably be 4 or 5.
Note that in the second week (Wednesday 19th October) there will be no practical, due to Commemoration Day. On Monday 17th October we will have a two hour session in the lecture room from 2pm to 4pm; one hour lecture and then a one hour pen and paper tutorial in the lecture room.
Monday 2pm | Monday 3pm | Wednesday 9am | Wednesday 10am | |
Week 1 Oct 10 and 12 |
Lecture (308) Introduction to Robotics/Robot Motion |
Lecture continued (308) |
Practical (219) Getting Started and Accurate Motion |
Practical continued (219) |
Week 2 Oct 17 and 19 |
Lecture (308) Mobile Robotics |
Tutorial (308) Robot Floor Cleaner Answers |
||
Week 3 Oct 24 and 26 |
Lecture (308) Sensors |
Practical (219) Investigating Sensors |
Practical continued (219) | |
Week 4 Oct 31 and Nov 2 |
Lecture (308) Probabilistic Robotics |
Practical (219) Probabilistic Motion and Sensing |
Practical continued (219) | |
Week 5 Nov 7 and 9 |
Lecture (308) Monte Carlo Localisation |
Practical (219) Monte Carlo Localisation |
Practical continued (219) | |
Week 6 Nov 14 and 16 |
Lecture (308) Advanced Sonar Sensing |
Practical (219) Place Recognition |
Practical continued (219) | |
Week 7 Nov 21 and 23 |
Lecture (308) SLAM |
Practical (219) Object Finding Challenge |
Practical continued (219) | |
Week 8 Nov 28 and 30 |
Revision Lecture (308) |
Practical (219)
Challenge competition |
Challenge competition continued (219) |
Here are electronic versions of extra handouts given out in paper form during the course and some additional resources.
Week 1: |
Robot Science, Chapter 1, Andrew Davison (A chapter of a popular style book on robotics I am working on... not part of the content of the course but may be an interesting read and any comments welcome). |
Berlin Summit on Robotics 2011 Report (Also certainly beyond the scope of this course but this report from a meeting I attended recently gives a good snapshot of the current thinking of various roboticists on the state of the field and current challenges). |
Python Tutorial The official Python Tutorial is very good and well worth reading if this is the first time you are using Python... incidentally learning Python is a very good plan in any case because according to this it is the most Popular Coding Language of the moment! |
Week 2: |
WiFi Setup Instructions |
Week 3: |
Week 4: |
Raspberry Pi Robotics Web Interface Instructions |
Web-based access to your Pi via the MAC address |
Modelling the World in Real-Time, Andrew Davison |
Week 5: |
Monte Carlo Localization: Efficient Position Estimation for Mobile Robots, Dieter Fox, Wolfram Burgard, Frank Dellaert, Sebastian Thrun |
Also see this link: Frank Dellaert's online tutorial material on MCL |
Week 6: |
Week 8: |
SLAM Tutorial Part 1, Hugh Durrant-Whyte and Tim Bailey |
SLAM Tutorial Part 2, Tim Bailey and Hugh Durrant-Whyte |
The winning robot was developed by Nicolas Paglieri, Clemens Lutz, Antonio Azevedo and Francesco Giovannini and completed the challenge in a remarkably fast 21 seconds, though impressively around half of the teams completed the whole course and a couple came close to this time. The winning team's robot used the Lego light sensors cleverly as proximity sensors, allowing giving the robot an extra obstacle sensor which was particularly useful at high speed, and this together with fast planning gave them the best time.
The winners' robot was remarkably precise, and its motion included particularly nice curved entries into the waypoint spaces, all while maintaining very good speed such that it beat its nearest competitor by 8 seconds. The members of the winning group were Alexandre Vicente, Ajay Lakshmanan, Garance Bruneau, Kevin Keraudren, Axel Bonnet and Zae Kim (video courtesy of Jindong Liu).
The winning team this time consisted of Jim Li, Daniel Abebe, Robert Kopaczyk, Nicholas Heung and Cheuk Tam, and their robot's successful completion of the course in under 40 seconds is shown below (video courtesy of the team).
Again there were several teams which achieved the challenge impressively within the target time of 30 seconds, but the winners by a narrow margin were Ivan Dryanovski, Tingting Li, Wenbin Li, Edmund Noon and Ke Wang whose winning run is shown in the video below (video courtesy of the team).
Several of the teams achieved good results, and one or two even made promising progress on the more difficult problem of global localisation (the "kidnapped robot problem"), where the robot had to initialise a localisation estimate from scratch when dropped at an arbitrary position in the course. This video shows the robot of the team of David Passingham, Vincent Dedoyard, John Payce and Mengru Li in action (video courtesy of the team).
The winning robot was from the team of Philip Stennett, Nicholas Ball, Maurice Adler and Wei Chieh Soon which completed the course all three times with a total time of 36.9 seconds --- this is a (very dark) video of their robot in action . The robots from the team of Si Yu Li, Henry Arnold, Shobhit Srivastava and Jonathan Dorling, and the team of Ricky Shrestha, Hussein Elgridly and Maxim Zverev also successfully completed the course three times.