🤖 Robotics
I’ve always been intrigued by robotics, and have really obsessed about it since entering university. I love how interdisciplinary robotics is — uses every aspect of engineering.
My Experience with Robotics
Places I’ve gotten robotics experience:
- Arduino and drones, following Udemy courses- 2018
- University of Waterloo Robotics Team (Mechanical Design) - 2021
- WARG (Firmware) - 2021
- WATonomous (Perception) - 2022
- F1TENTH (Autonomy, classical methods) - 2022
- Enlighted Inc (general ROS) - Jan to Apr 2023
- NVIDIA (Hardware Acceleration for ROS) - Sep to Dec 2023
- MIT-PITT-RW (Autonomy) - 2023
- Robohub (Robot Arms) - 2024
Things I need to master
- Kalman Filter
- MPC
- Reinforcement Learning (with torch-rl)
Resources
- https://github.com/Ly0n/awesome-robotic-tooling
- https://robotsguide.com/
- Very good high-level overview of robots
- Waterloo MME Sub-Wiki (more for Mechanical Engineering)
- Vex Robotics https://kb.vex.com/hc/en-us
- Modern Robotics Book
- Website version: https://modernrobotics.northwestern.edu/nu-gm-book-resource/
- https://github.com/AtsushiSakai/PythonRobotics
- How to Train Your Robot with Deep Reinforcement Learning – Lessons We’ve Learned
- Robotics Knowledgebase, kinda meh actually, not enough knowledgebase
- Courses
- MIT Cognitive Robotics
- CS287 by Berkeley
- Stanford CS223A
- https://see.stanford.edu/Course/CS223A
- I think there is another course that is more hands-on
- ME597 from Uwaterloo back in 2015, slides are quite informative
- Channels
- Books
- Mechanical Engineering for Makers
Why don't you study mechatronics then?
Some people ask me why I study Software Engineering instead of Mechatronics at UWaterloo, since I love robotics so much. I like Pieter Abbeel’s answer: “The bottleneck of robotics is Software, not hardware”.
The most difficult part of robotics is no longer building the robot itself (smart home robots have already been created over a decade ago, but they were tele-operated). Rather, the software is what is limiting the robot from being truly useful.
I finally remembered why I thought robotics was boring: they moved too slowly. I like things that go fast. Like planes and rockets.
My plan is to teach myself mechanical things outside of school, but become EXTREMELY good at software through university.
Concepts
- Statistics for Localization
- Mechanics for Robot Body
- Optimization for Path Planning
- Computer Vision for Perception
- Computer Science for Autonomy
- Electronics for powering everything
- Configuration Space
- Degrees of Freedom
- Rigid-Body Motion
- Forward Kinematics
- Inverse Kinematics
- Path Planning
- Robot Manipulation
Cool robots I found online
- Morphobot by Caltech (2023)
- Robobee by Harvard (found through Visual Odometry)
Robotics Pioneers
People’s lists https://www.linkedin.com/feed/update/urn:li:activity:7069540305292705792/
How to get started in robotics?
I found that a lot of people were asking me this question, so rather than repeating myself each time, here’s my answer once-and-for-all answer:
Robotics is hard because it combines so many disciplines, from Software Engineering to Mechanical Engineering to Electrical Engineering — but this is also what makes it so exciting to work on.
However, for a beginner in robotics, it may seem extremely overwhelming to get started, as it just seems that there are so many things to learn. But this also applies for all disciplines that are moving fast, such as AI.
If you haven’t heard this already, I recommend you listen to some of the advice for beginners given by Andrej Karpathy: https://www.youtube.com/watch?v=I2ZK3ngNvvI&ab_channel=LexClips
It doesn’t matter how you get started, it just matters that you start somewhere.
Beginners are too focused on what to do, and not how much to do. You need to put in your 10,000 hours if you want to get good at robotics.
Things you can do put in those hours (this is what I did):
- For High School/University students:
- Join student design teams. Find other students passionate about robots.
- Join robotics labs and work under a professor. They will give you access to good robots and give you good guidance / mentorship.
- Generally:
- Go through the best textbooks and lectures online (I link those everywhere on my website) to gain theoretical understanding. Get good at C++ and Python.
- Build things from scratch to gain practical intuition. Start with simple projects like line-following robots to understand hardware-software interaction.
- I started with Arduinos, before moving onto Raspberry Pi, and ROS on Jetson
As you experiment, you’ll find that certain activities will give you a higher ROI on your time, and you’ll naturally prioritize those activities. The important thing to remember is that these activities are different from person and person, and that you need to experiment to figure out what works for YOU.
- I generally had bad experiences in student design teams and found working with professors much more helpful, but I’m going to tell you that working under a professor is much better than working on a design team. For example, my roommate learned 99% of what he knows in firmware through his design team.
Other things:
- Research successful people like Stuff Made Here and how they acquired their knowledge.
- I stalked Stuff Made Here’s reddit posts, he has some solid advice
- My YouTube channel is a reflection of my robotics journey. I started with super simple robotics projects, before moving onto much more difficult projects that requires months of work.
- Check out my thoughts on Self-Learning, such as Top-Down vs. Bottom-Up Learning