Posted by StefanBatory 6 days ago
Ask HN: How to get started with robotics as a hobbyist?
id expect it could pick you out a breadboard, a micro, some actuators and sensors, along with get a code deploy and run harness going for you, so you can focus on doing the robotics, rather than anything else.
the two things aren't mutually exclusive.
if an AI tells you "solder A to B" you're going to learn some technique whether you want to or not. Extrapolated entirely into a robotics project.. there's a lot to gain just through sheer osmosis of instruction.
I am one of those people, and I can't count how many textbooks I own, of which I've read the first few chapters, and lost interest because I wasn't doing anything, only reading.
When I can instead start doing something, as GP emphasized, I can learn the applicable concepts as they're applied, which works well for me. AI helps me do that, because it is like a textbook that follows along with me, rather than asking me to follow it. Also I ask a lot of questions.
Seconding all the people who said avoid ROS - it's not worth the effort for hobby-level stuff. It's barely worth the effort for "professional" robotics.
Also don't worry about physics too much - build your physical intuition by playing with working systems of increasing complexity.
Starting, but not limited to a "T".(ROS: Robotics community; RTOS: Embedded community)
Involving anything managed by a GPOS (e.g. Linux) in robotics is something I would use with extreme caution, and for limited cases like a CV module.
If you were in robotics prior to 2010, you probably would have used something called Player/Stage (by some of the same people who developed ROS). Believe it or not, another big motivation for ROS was solving the (many) problems that popped up as people tried to get Player/Stage running with robots like the Pioneer 3-DX.
* robotic software projects are often abandoned, and only ROS keeps the driver packages working
* Yes it is terrible, but the alternatives are even worse
Almost all modern reasonably good platforms will already offer a tested ROS configuration. Even the UR5 had simulation and control options out of the box.
People can't avoid standards.. even the awful ones.. =3
I've seen people get sucked into ROS + simulation who end up never touching real robots. Which is fine if that's what you want to play with, but it's debatable if "ROS + sim" alone is even "robotics."
Also not a fan of simulators for simple platforms, as a lot of stuff breaks when the environment is chaotic. =3
The next person gets up and gives a talk about all the advancements in generating point clouds from optical cameras.
By far the best part is how tied to specific versions of Ubuntu each ROS release is, just getting all the packages installed and running requires sacrificing a cat while chanting Hail Mary backwards in Latin.
100% this. I had a very, very miserable time setting up two systems and trying to get them running a version that was supported. The worst part is SBCs that stop getting OS updates and become permanently locked in to a specific version. Which also forces the rest of your hardware to use the same version. Using a Jetson Nano with Ubuntu 18.04 in 2022 was lots of fun...
Last year I met a couple of university students working on a robot and out of curiosity I asked what they were using as a microcontroller and the software stack. They were running ROS. When they said they still hadn't upgraded to ROS 2 yet, I could feel their pain...
Reinventing the build chain every other year is miserable too.
Monocular feature extraction has been around for decades, but is only reliable for people that never go outside in the sun/dust/rain. =3
- Learn about micro controllers and embedded programming.
- Learn about motors.
- Learn about gears, pulleys, torque - some physics things - enough to think about how you could potentially build something.
- Build something small. Maybe a robot sunflower that follows the sun with a built in solar panel that keeps its battery charged... I dunno, I just came up with that. Or an automatic blinds opener / closer for your blinds / home curtains.
- Learn, build, rinse, repeat..
I'd say start playing with 3D printing and motors to make mechanisms that move (pendulums, simple walkers, ...). +1 to tinkering with the 3D printer itself (that someone mentioned) as you can learn a lot about how the machine works and figure out ways to improve it.
You've mentioned the physical aspect, but simulation could also be a good starting point. You can now very easily train RL agents in sim to say, walk, and transfer to real hardware afterwards.
Finally, if you like flying stuff, there's drones you can buy that are controlled programmatically (e.g. Crazyflie). I haven't played a lot with these, but I've seen them used to teach control and they seem like a nice, inexpensive platform to experiment with.
[1]: https://github.com/rkourdis/trajopt?tab=readme-ov-file#backf...
There are three reasons why "real" robotics is harder. First, to navigate unconstrained environments by means other than wheels, you need to learn a fair amount of kinematics and control theory. Second, your robot will need to build a map of the operating environment, which often requires complex sensing (lidars, cameras) and a lot of compute power. Even something as basic as a Roomba is no small feat, and these things get stuck a lot. Third, it's just hard to come up with practical applications for simple robots outside of industrial production lines.
Once you have that figured out, decide how much you want to learn. Do you want to do it the hard way, which would mean moving more slowly and working your way up from first principles and probably 3D printing or machining your own parts... or do you want to get results as soon as possible, in which case, you probably buy a Linux single-board computer and put it on top of an existing robot kit? The trade-off with the first approach is that it will take you months or years to get where you want to be. The downside of the second is that you're limited to premade kits and software components, and once you exhaust the possibilities there, you kinda hit a wall.
I started robotics at a young age and began with small builds with LEGO motors and sensors, getting a feel of how each one works and how to interact with them with code. Then I got to much more advanced programs with LEGO Mindstorms EV3, learned about things like PID controllers practically and even started taking part in some competitions. Next, I went to writing actual code (as opposed to block-based programming) on microcontrollers like the micro:bit (and a few years later the Raspberry Pi Pico). I deepened my knowledge of how electronics work and learned how circuits work. I eventually got into a team with a few friends and we built a human-size robot combining 3D printing, a bunch of circuitry, ROS, 2 SBCs, Arduinos, a LIDAR and OpenCV for face/object recognition. This took years of learning step-by-step to achieve.
This is obviously not the path you'd take, robotics was what brought me into programming and you're probably going for the opposite.
You're not going to build a perfect robot or electronic device from the start and you shouldn't try to either. Get a microcontroller that's newcomer-friendly and play around with it. A micro:bit mostly emphasizes on the end result, with a built-in display and sensors and many plug-and-play modules to get you going. A Raspberry Pi Pico is much more flexible, but also requires you to learn about wiring and doing more things yourself. If you prefer coding in C, go for an Arduino. An ESP32 is also a good choice. It's a good idea to get a 3D printer and learn CAD in parallel, as it's a great way for a hobbyist to create actual tools that are more than a bunch of wires.
Once you get enough experience and confidence in your skills, you'll want to get into more advanced projects. Use your knowledge to plan them out, research and learn the technologies you're going to use (you can't learn everything beforehand and each piece of hardware is something different) and enjoy the journey from prototype to finished project.
And by the way (you didn't mention it but other comments here are so I'll give you an opinion on that), ROS is nearly always overkill for hobbyist robotics projects :D
I hope that helps you start your journey!
A step above that I would say some kind of wheeled robot with more complex motors that have encoders, and ROS if you want to mess around with autonomy. If you have the budget for it, a stereo camera or $400 time-of-flight RGBD camera can get you pretty much full autonomy (if you configure all the ros nodes for it).
If you are into robot arms, LeRobot has a desktop robot arm kit that uses neural networks to control a robot arm with a camera for seeing the world.
If you want to learn the theory, I really like Probabilistic Robotics by Sebastian Thrun, and Modern Robotics by Lynch and Park. Those cover pretty much all of the foundational concepts for autonomous robots.
The most fun thing I think currently are drones. I have been designing and building a fixed-wing drone with autonomy and FPV capabilities. Started from zero information and just learned as I went. Plus flying drones is more fun than driving robots IMO.
Worth to check also https://www.printables.com/ for small cute 3d printed robot projects that you can build using stm32 or esp32 boards. You shall check Adafruit/Sparkfun like websites for dev boards, they even support micro python for quick prototypes.
https://www.hackster.io/shahizat/running-lerobot-so-101-arm-...
Our robots needed only to complete a simple task of finding the "reactor" (array of IR LEDs) on a 1x1m fenced board, but Lego more than delivered on the hardware front, because we had an IR sensor, an ultrasound proximity sensor and few other ones that we didn't even use.
Really helped to bridge the gap between theory and practice because it's one thing to program a servo motor and a completely different one to see your dead reckoning algorithm be off by a mile. Also sensors do a lof of things you don't expect.
Its succesor is named Lego Spike Prime, but I never used it, so can't comment.