Nice article. As someone who's also gotten into robotics from the software side, I'd also suggest learning a bit about the hardware side. If you're doing anything with custom boards and board bring-up, you'll need to be able to read a schematic and data sheet at a basic level. Being able to use an oscilloscope and logic analyzer is also _very_ useful. None of this stuff is terribly hard, but it's nice to know what to expect.
The number of people who both know C++ (not C) and how to use an oscilloscope is surprisingly small.
Electronics at robotic speeds isn't that hard. Most signals are audio bandwidth or lower. You rarely need all the elaborate design techniques needed when you get into the MHz-Ghz range.
>The number of people who both know C++ (not C) and how to use an oscilloscope is surprisingly small.
Statements like these make my eyes roll.
The difficult part in embedded, and what makes the difference between a n00b spending 2 months finding a hardware/firmware issue and a graybeard finding it in under 2 days, is not how to use an oscilloscope or how to write "clean" c++, it's knowing where exactly to put the oscilloscope probes and what exactly to look for on the oscilloscope screen, and how to make the bug/edge case reproducible.
You don't have unlimited scope probes, trace memory and time to probe every single signal on the board and stare at blank signals not knowing what to look for, for weeks, while th clock is ticking.
Tinkering with STM32s and Raspberry Pis at home for fun, doesn't prepare you for the issues you'll encounter in debugging production devices (especially battery powered or RF) you'll need to ship on time and on budget.
Knowing how to use a scope and how to write c++ is only 10% of a successful product. The other 90% is blood, sweat and tears hunched over for hours/days over boards and breakpoints to find out your race condition comes from a cheap crystal oscillator operating out of spec and not from your software.
Especially that at small companies and start-ups you don't have the budgets and HW lab equipment that the likes of Apple or Qualcomm can afford to brute force your way to the solution, so you need to be very shrewd and clever with your debugging to make the most out of your limited resources.
I guess that depends on your software background. If C/C++ is not a problem, I would recommend Arduino. I found it simpler to just upload your program as the sole brain of your MCU, rather than working with a Raspberry Pi with Linux and all the abstractions, devices, etc that goes with it.
I’d recommend starting with this as well. The setup() and loop() model gets you started quickly and can take you through a lot of small projects before you want timers or other advanced features.
Plenty of tutorials and libraries (often “working but not high-quality”) are available as well.
Even if c/c++ scares you a little, I’d still start there (I came from a long c/c++ background, but I’ve seen my kids be able to do it with not nearly as much help as I expected to give them).
Dirt cheap and readily available as well. Clones are fine; you don’t need the name brand Arduino boards.
Raspberry Pi, Teensy, Micro:BIT, ESP32, Arduino. Some steppers, some servos and some sensors. $200 will get you more gear than you'll be able to use in the first six months or so, it is incredible how cheap this stuff has become.
No, no - I have a half a dozen RPi's of varying revisions. Since they run Linux and the SDcards are less than robust, anytime you accidentially trip the power (which to me happens several times during hardware debugging sessions) you risk scrambling the rootfs and thus need to reflash a new SDcard. Some SDcards get damaged.
I recommend using Arduino and/or Wokwi (https://wokwi.com/) to get started.
Arduinos or Raspberry Pi's are both fine. I'd definitely pick up some motors and figure out how to do precision control. Lots of good info online for that. :)
Comments
Nice article. As someone who's also gotten into robotics from the software side, I'd also suggest learning a bit about the hardware side. If you're doing anything with custom boards and board bring-up, you'll need to be able to read a schematic and data sheet at a basic level. Being able to use an oscilloscope and logic analyzer is also _very_ useful. None of this stuff is terribly hard, but it's nice to know what to expect.
Yes.
The number of people who both know C++ (not C) and how to use an oscilloscope is surprisingly small.
Electronics at robotic speeds isn't that hard. Most signals are audio bandwidth or lower. You rarely need all the elaborate design techniques needed when you get into the MHz-Ghz range.
>The number of people who both know C++ (not C) and how to use an oscilloscope is surprisingly small.
Statements like these make my eyes roll.
The difficult part in embedded, and what makes the difference between a n00b spending 2 months finding a hardware/firmware issue and a graybeard finding it in under 2 days, is not how to use an oscilloscope or how to write "clean" c++, it's knowing where exactly to put the oscilloscope probes and what exactly to look for on the oscilloscope screen, and how to make the bug/edge case reproducible.
You don't have unlimited scope probes, trace memory and time to probe every single signal on the board and stare at blank signals not knowing what to look for, for weeks, while th clock is ticking.
Tinkering with STM32s and Raspberry Pis at home for fun, doesn't prepare you for the issues you'll encounter in debugging production devices (especially battery powered or RF) you'll need to ship on time and on budget.
Knowing how to use a scope and how to write c++ is only 10% of a successful product. The other 90% is blood, sweat and tears hunched over for hours/days over boards and breakpoints to find out your race condition comes from a cheap crystal oscillator operating out of spec and not from your software.
Especially that at small companies and start-ups you don't have the budgets and HW lab equipment that the likes of Apple or Qualcomm can afford to brute force your way to the solution, so you need to be very shrewd and clever with your debugging to make the most out of your limited resources.
What can you recommend to start experimenting at home with robotics? Raspberry Pi?
I guess that depends on your software background. If C/C++ is not a problem, I would recommend Arduino. I found it simpler to just upload your program as the sole brain of your MCU, rather than working with a Raspberry Pi with Linux and all the abstractions, devices, etc that goes with it.
I’d recommend starting with this as well. The setup() and loop() model gets you started quickly and can take you through a lot of small projects before you want timers or other advanced features.
Plenty of tutorials and libraries (often “working but not high-quality”) are available as well.
Even if c/c++ scares you a little, I’d still start there (I came from a long c/c++ background, but I’ve seen my kids be able to do it with not nearly as much help as I expected to give them).
Dirt cheap and readily available as well. Clones are fine; you don’t need the name brand Arduino boards.
Raspberry Pi will work with the Arduino environment as well.
Raspberry Pi, Teensy, Micro:BIT, ESP32, Arduino. Some steppers, some servos and some sensors. $200 will get you more gear than you'll be able to use in the first six months or so, it is incredible how cheap this stuff has become.
No, no - I have a half a dozen RPi's of varying revisions. Since they run Linux and the SDcards are less than robust, anytime you accidentially trip the power (which to me happens several times during hardware debugging sessions) you risk scrambling the rootfs and thus need to reflash a new SDcard. Some SDcards get damaged.
I recommend using Arduino and/or Wokwi (https://wokwi.com/) to get started.
Arduinos or Raspberry Pi's are both fine. I'd definitely pick up some motors and figure out how to do precision control. Lots of good info online for that. :)