[6.141] Robotics, Science & Systems: A Review
This time last year, I was reminiscing the wonderful memories my team and I had shared as part of 6.141- Robotics, Science, and Systems (RSS), a course at MIT that engages students in concepts, principles, and algorithmic foundations for robots and autonomous vehicles operating in the physical world. A full year later in Spring 2019, I was honored to TA the very same class under Professor Luca Carlone & Sertac Karaman with a group of incredible TAs (Teaching Assistants) and CI (Communication Intensive) Instructors. We had a total of 99 students across 20 teams completing labs on topics including but not limited to kinematics/dynamics, controls, sensing/computer vision, localization, path planning, and motion planning in Python & ROS. Ultimately, their hard work throughout the semester culminated in competing in a final race loop in the Stata Basement of MIT against other teams, as well as completing a separate final challenge over a three week span.
In this post, I will be briefly describing the labs, showcasing some of the amazing work done by students, and sharing some of my parting thoughts as a former student & TA :)
To begin, here is an overview of some of the labs explored:
Wall Following: Students individually implemented a wall follower on a simulated version of the RACECAR — their first autonomous controller that drives the RACECAR forward while maintaining a constant distance from a wall on either its left or right (chosen on the fly). It should also be robust against uneven surfaces and small errors in the LIDAR data, and should be able to recover from small deviations from the desired state; being too far, too close, or too angled. Soon after in the next lab, students join their teams to get one of their implementations of the wall follower working on the real RACECAR. Here are some of the images from their first meetings as a team.
Visual Servoing & Lane Following: This lab contained 4 modules, each tackling an interesting problem in computer vision/controls. These included cone detection via color segmentation, line following, object detection via template matching and SIFT, transforming pixels to a plane via homography, and writing a parking controller.
Localization & SLAM: Determining a robot’s orientation and position in a known environment, also known as localization, is a critical problem in the field of robotics. As is common in robotics, this seemingly simple problem is surprisingly difficult, and remains an active research area. In this lab, students solved robotic localization by implementing Monte Carlo Localization (aka MCL or particle filter). They first understood the motion and sensor model in a brief theoretical exercise, developed & tested the PF in simulation, and finally tested on the real RACECAR. As an optional assignment, students had a go at configuring and running Google Cartographer on the RACECAR (which required lots and lots of tuning).
Planning & Trajectory Following: My favorite part of RSS; path planning! Given a destination, students determined a path and proceed to follow it in real time to the end goal on the RACECAR via particle filter localization and pure pursuit control. Path planning algorithms explored include the search based A*, Djikstra and BFS/DFS and the sample based Rapidly-exploring Random Trees (RRT) and Probabilistic Roadmaps (PRM).
Final Challenge & Final Race
Not only were teams required to complete the loop shown in green below (without any collisions), but also required to complete one of the following 5 challenges:
After much anticipation, the day of the final race — 13th of May — was here! Not only were teams required to complete the loop shown in green below (without any collisions), but also completed one of the following 5 challenges: Advanced Technical Maneuvers, Deep Driving, Fast Obstacle Avoidance, the NEET Reinforcement Learning Challenge, and 3D Mapping.
Each team was given as many tries as possible to complete the loop, running right behind their cars along the way!
We awarded the top three winners with prizes (top uncapped and capped teams featured below)! With the blessing of Professor Luca, I was also able to fulfill my dream of being a race commentator, and had way too much fun with it.
One of the most exciting parts of being a TA was designing my own final challenge! Known as Deep Driving, students explored deep learning (CNNs and custom trained YOLO) & computer vision techniques, with their RACECAR (deep) learning how to navigate a “urban environment” (shown in the picture) while avoiding pedestrians, reacting to street signs & street lights, changing their lane & speed limit, following other RSS cars, and parking in the appropriate parking location. This challenge was not an easy one and had multiple moving parts, so kudos to Teams 4, 11, 12, and 20 for doing a fantastic job! Find their final challenges videos and the challenge handout linked above.
Here are some results from their final videos!
Parting Thoughts & Advice
This class held a lot of firsts for me — tackling my fear of building by helping assemble the RACECARs (still not officially over this fear), spending hours debugging labs with my students in labs (and learning so much in the process), co-designing the final challenge Deep Driving (weighing tradeoffs over multiple iterations), and unleashing my childhood dreams as the official commentator for the final race.
My advice to students who plan to take this class is always the same: all of these labs are fun & exciting, and there are many technical tasks in each one. But do not forget that you are/will be in a team of 4–5 people who are also excited by the material. Find a way to divide the work of each lab that allows you to contribute technically and stay engaged while respecting the wishes of your teammates. If you happen to be on the quiet side, be assertive & proactive in taking on tasks (and get out of your comfort zone — now is your time)! If you find it easy to share your opinion, take this as an opportunity to uplift your teammates.
Don’t discount the value of team feedback and constructive criticism at the end of each major milestone, because this class will not just teach you about the most actively researched fields in robotics, but will unveil a lot about the way you work with others and your own voice.
Lastly, don’t forget to go back to the basics of probability & controls when it comes to understanding the techniques & algorithms at hand (rather than blindly implementing them). Although there is no required textbook, I found the recommended book Probabilistic Robotics by Thrun, Burgard, & Fox to be extremely helpful. This class will take a lot of your time, but with dedication & a positive spirit, it is all very much worth it :)
If you are not at MIT and would like to preview the labs & final challenges for the class, check out our public Github Page here for the detailed handouts and starter code.
Thank you for an amazing semester; I hope many of you come back to TA next year as I did! Shout outs to my amazing co-TAs who quickly became my friends — AJ, Alon, Andrew, Kathleen, Michelle, Muyuan, Sabina, and Trevor — for all the laughs. :)