Hacker News new | ask | show | jobs
by rck 118 days ago
Get an arduino kit and learn a little electronics. The kit likely comes with a brushed motor and a servo. Learn how motors works and how to write code to make motors spin. Then get a stepper motor and an arduino-compatible motor shield or CNC shield and spend some time getting multiple motors to move. Once you understand those basics, you can hook motors together in a rigid frame and you have a robot (2 motors with wheels is mobile, 3 or 4 motors with links is an arm). The kit will also come with some simple sensors which you can use to do things like measure light and distance, which you can use to start playing with feedback control (look up Braitenberg vehicles for a project idea).

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.

4 comments

I'd also suggest starting with Arduino, but also recommend moving towards STM32 for doing more advanced stuff. The hardware abstractions Arduino imposes can get really annoying once you start doing more advanced timing dependent stuff.
Before you run into the limitations of the Arduino platform you will likely have decided to make this your career. You can get very far with very little in that world and Arduino's are incredibly powerful for their size and cost and there are many pin compatible options available if you want to scale up within the platform. Once you hit the wall on that you will have to change the toolchain but by then you will be building extremely complex stuff.
Nth-ing the ROS thing. That garbage needs to gracefully back itself into a pool of lava.
The thing that most people don't appreciate is that ROS was co-designed with the PR2, which had a very idiosyncratic architecture: two separate computers in the base, ethercat for comms, not at all modular, and very high end parts (for 2010ish). Most of the weirdness of ROS looks less weird in light of the design of the PR2, and most of the evolution of ROS was to get away from the PR2 model for more general platforms.

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.

ROS is dozens of projects crammed into a single workspace. Avoiding this ecosystem will not work in your favor in the long term.

* 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

Yeah, for professional robotics you just accept that this is the world we live in. But for learning and hobbyist stuff, it's better to play with simple hardware and build the things that ROS is ultimately abstracting over before you try to pick up ROS.

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."

I usually recommend building the Arduino turtle-bot first, try the maze solver with the classic wavefront algorithm, and then a ROS Arduino setup tutorial.

Also not a fan of simulators for simple platforms, as a lot of stuff breaks when the environment is chaotic. =3

I'd enjoy if someone could elaborate, in the style of Erik Naggum ideally.
I was at a ROS conference a few years ago. A presenter went up and gave a talk about lidar and point clouds, speaking about how obsolete optical cameras were now that lidar was readily available.

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.

> 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...

Cameras have all the same problems of lidar, and none of the advantages. Show a lidar a 45' mirror/weather-glass to test what your $60k bought.

Monocular feature extraction has been around for decades, but is only reliable for people that never go outside in the sun/dust/rain. =3

The point was how fragmented the "community" has become.

Also, the talk about visual camera point could generation was very impressive.

Lidar also suffers from the environment, and angles, and reflection, and light sources.

In general, lidar is used to remove the ambiguity in a local ground scan, and cameras extrapolate overlapping texture gradients to guess distant surface structure ( documented in the old book https://www.amazon.com/Learning-OpenCV-Computer-Vision-Libra... .)

There are some fairly good FOSS tools around like COLMAP, if you want to learn why automatic monocular pose recovery and SfM is hard.

Real autonomous robotics is hard, and people make the same predictable mistakes every 4 years. Retrofitting a consumer Yarbo would be cool though. =3

IMO the worst part about canonical having a tight grip on it.

Reinventing the build chain every other year is miserable too.

It is wild to me out the embedded engineering and robotics communities are isolated. Robotics includes mechanical engineering not part of embedded, but it seems the tools, outlook, and approaches between the two are different.

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.

As someone who works in the datacenter hardware / system software space who does robotics as a hobby - the craziest thing to me about ROS is how tied it is to Linux and how Linux-illiterate half the people using it seem to be.

It was like pulling teeth trying to explain to someone that they couldn’t use the Linux GPIO subsystem from python to accurately measure sub-millisecond events…

Linux is a general purpose OS, it’s typically tuned for throughput not precise timing. Sure there’s PREMPT_RT but it only buys you so much.

good advice, im yet to take the plunge into robotics but it seems like the way you make things move is with motors so best to learn about those, how to power them, how to control them, then stick a bunch of them together in a coordinated way and you have a robot!