Getting Started in Robotics
allshire.org
allshire.org
[1] https://twitter.com/hardmaru/status/876303574900264960?s=20
What I don't understand is why not every single hobbyist is not focusing on robotics. It seems to me to be the pinnacle of generalism and technical entertainment.
What I'm trying to ask semi-jokingly is: It is winter, where is your miniature, autonomous snow plow that you built yourself from scratch and why aren't you working on one?
Now if I really cared about doing this, I could probably follow some legal procedures to get my snowplow registered, and I could probably convince the neighbours/co-op to let me play with it. But it would all fare better if I formed a company around it and enter the discussion as a legal entity. At which point I may as well start a real snowplow business - which is way beyond my hobby interests.
And this applies to a lot of meatspace innovation - unless you own (and not rent) a home with a large backyard, and confine the scope of your experiments to just your backyard, pretty much all interesting ideas I can come up with require enough red tape that it's not even worth it, unless you're doing it for money.
Here’s my framing: Setting aside sheer knowledge, building anything will require power, motors and parts.
Power is doable up to some point, buying batteries and plugin them is a low barrier with low risks (still need to care about them not burning though)
Motors are a matter of costs and learning what’s available and how to use them.
Then come the parts. Will you machine them ? That would be a CNC machine and it’s a rabbit hole needing space, money, time, material, learning and safety measures. The mild version is a 3D printer, but it’s still a significant cost, a learning curve, a dedicated place available for long hours with effective ventilation.
We’re pretty far away from a simple hobby anyone could try, compared to fishing or papercraft, or guitare, or even wood working. Basically that seems miles away from anything you would start out of boredom.
But also, I thought that you can get some pretty cheap 3D printers nowadays?
Instead of batteries, couldn't you just use a cable? (Depends how freely the robot is supposed to move around.)
I have seen some robotic kits you can buy, varying widely in what they contain, and the target audience (ranging from kids to semi professionalists), and the price (starting at 100€ or so, up to 10k€ or so).
It depends on where you live, but the main cost of a 3D printer for me would be less the machine itself than the space and ventilation needed.
Friends who made the jump basically dedicated a room to making stuff so they can run prints overnight while ventilating (setting up a fume extractor is another option, it’s just a bit more investment in the “hobby”)
I see all of it as totally doable, but needs a serious level of dedication, time, space and money.
Focusing on just one of these areas would be suitable for a hobbyist, but that's not really a practical option until/if you get a solid ecosystem of cheap and interchangeable components, which really isn't there; sensors and mechanical parts and tools cost a lot, and complete platforms even more, so if you want to work with anything interesting you generally have to do it as part of a lab or team, not as a lone hobbyist.
Also, there is a very long path to any gratification - it takes a lot of work on all the segments until anything starts working and you get some positive feedback; e.g. on the autonomous snowplow example, it would be a loooong road until the 'hello world' autonomous snowplow that's e.g. able to drive forward while the camera is showing all white, as that requires all your engine work and driving parts and electronic driving controls and camera integration to be in place, and if any of these things fails because you're not skilled enough, it just won't work at all. Contrast that with many hobbies where you can get some visible (even if sloppy) stuff done relatively early when starting out; robotics has a very high barrier of entry compared to other hobbies.
For this reason this place is likely to become a sort of Silicon Valley of robotics.
When the plague hit, I was sucked into an effort to build a ventilator, I still have a pile of parts that were purchased for it, but the chassis fabrication never happened, so I had nothing to write code for, thankfully the need evaporated. I learned that it takes MONTHS to get motors and gear trains supplied if they don't happen to be in stock.
If you thought the 1960s world of waiting a day for your output deck to see if your program compiled and ran was bad... it's got nothing on the world of supply chains.
You can buy off the shelf components from Motion Industries, but they are out of the price range of hobbyists.
I think it will be hard enough to get it to navigate freely instead of relying on cables in the ground, which is what the lawn mowers use as boundaries of their world, as far as I know.
Here are some formulas to get started calculating the snow resistance force and the required vehicle weight :)
Basically, it's a serious time and money investment.
If you want to do some real work on those, pursuing grad school in Electrical (actuators, battery) / Mechanical Engineering (legs, locomotion) is the best, and for the legged robots industry probably the only way (same goes for biomimetics - robot hands). The related research area encapsulating the above is called passive dynamics and primarily is a control theory-based field.
In the article I focus mostly on the software aspects b/c it's more accessible when getting started if you aren't in grad school (+ what I have most experience with).
Also, unfortunately due to COVID, most of the work I've done with robotics has only been in simulation and I've found myself frustrated by the limitations of the simulator or the work required to simulate a real world scenario. Working with real world data might be slower, but it's a lot more satisfying when it works.
It depends on how the university structures their program, but for us it’s extremely open-ended, besides a few basic fundamental courses. They essentially want you to choose a concentration and pursue that concentration in your robotics projects throughout the 4 years.
It’s a risky choice for us, as unless you have some cool projects to show at the end you could end up ‘not concentrating in anything’ in particular, as robo is such a general field. But if you know what you want to do the flexibility can be nice.
My biggest concern, as a parent, would be having him be a jack of all trades, master of none at the end of his BsE and having a hard time getting hired or into a Masters program.
I was stunned that they handled everything with a tiny team. Mechanical design, welding, electricity, electronic design, programming, etc. Crazy. That company started with 2 brothers, and they did everything from top to bottom with only the both of them.
It was really inspiring to see how some people can have knowledge and skills (eg welding) in so many fields, and are able to pull it off commercially.
In the world of the web in the late 90s, 5 guys designed, built and shipped an entire product without any frameworks.
Not that many people need robotics experts and the industries that do, already buy from established players like Fanuc, Kuka, ABB, Siemens and the barrier of entry is very high, often a MSc being the lowest bar to clear with many workers in that industry having PhDs or postdocs so it's a lot of money and years of your life you have to dedicate before you can even enter and once you do the work may not be as exciting as one would expect, often times just updating simulink or labview models or days of just shoveling through ISO and regulatory specs.
I'm not saying there are no self taught robotics devs who earn well and play with cool stuff for a living but that's the exception in this industry, not the norm.
I play with the the cool stuff all day, but pay is below industry average (for ME, don't even think about software engineer type pay).
In summary, it requires more than a few tutorials to get started, it is multidisciplinary, and you have to deal with the unpredictable real-world.
I always thought that companies in that industry had specialized teams (software team, hardware team, mechanics team etc etc.) and that it's impossible for a person to possess all skills. But Stuff Made Here has shown me that I was wrong. It's awe-inspiring to say the least.
Stuff Made Here is a great channel and produces a lot of fun projects, but that only works in a context of prototypes where you need a wide range of skills (but not necessarily a deep one for each of them). E.g. the hair-cutting robot is fun to watch, but barely works (and needs human intervention) and is years away from being a viable end-user product.
By then the software/service delivery process is going to be so encumbered by regulatory response to the likely hundreds of thousands if not millions of deaths and hundreds of trillions in economic losses due to bugs and hacks that the playing field will be largely leveled (through convergence more than anything, but still).
(That or the first company to ship a reasonable facsimile of Ava from Ex Machina. Go the Tesla route and start off selling them for $5-10M each and work your way down. People will be mortgaging their homes to buy one.)
As long as they didn't watch the entire movie!
Also from the perspective of the same person over their career, engineering skills definitely hold their value better than software skills.
And I don't mean using OpenCV or something to draw boxes around objects. I mean understanding the 3d scene in detail. And ideally even understanding the dynamics of the world.
Also, anyone have any experience with HASEL artificial muscles or something similar? Anyone know a reason I shouldn't pursue that over servos?
For “classical” (non-ML) computer vision/photogrammetry, you may be interested in this text by Hartley & Zisserman:
https://www.cambridge.org/core/books/multiple-view-geometry-...
That said, to me the real beauty of robotics is seeing a physical machine that you put together and wrote the code for move around on its own accord.
It's definitely harder to get started this way than with simulators, but it's now easier than ever. And you'll learn all sorts of things that never come up in simulated environments. Something like the nvidia jetbot (https://www.nvidia.com/en-us/autonomous-machines/embedded-sy...) is easy enough to get started without much fuss and thanks to the onboard camera and GPU, can get you pretty far in implementing advanced deep learning-based algorithms.
(That said, the default camera isn't that great, which you can consider either part of the fun, or just making your life unnecessarily harder. I would consider adding something like a realsense D435i to get IMU+depth for state estimation).
I wouldn't say that. There were many projects with reusable stages, e.g. Space Shuttle boosters were partially reusable and the Energia rocket had a variant in development with first stage boosters landing like airplanes.
And there were number of practical problems at the time as well:
- Computers were relatively big and heavy.
- Rocket development was mostly focused on improving efficiency via higher chamber pressure, meaning that engines worked on the edge of their capabilities, which is not a great fit for reusability. It's one of a good reasons why Falcon 9's Merlin engines have the simplest open-cycle design with a relatively low chamber pressure.
- Number of launches was too small to make reusable designs economically viable (i.e. your production line would be idle for too long). Even today this number is not high enough, this is why Musk focuses on projects like Starlink to create an additional "artificial" demand for launches.
The tldr is that they find a convex approximation to the problem and use standard convex solvers to find the right inputs.
This paper[1] says that they use cvxgen[2] to generate the on-board solver code.
1: https://www.naefrontiers.org/55374/Paper 2: https://cvxgen.com/docs/index.html
I had no idea how to go about it, and if I remember correctly, I wrote the firmware to do the following every 10ms: (I was bare-metal C/C++ on a Cortex-m3.)
* Calculate new desired position of effector.
* Calculate new desired angle of every stepper motor.
* For every stepper motor, calculate deviation between current and desired angle.
* Program the timers to generate a PWM signal to make deviation zero. (Note: This whole thing was open loop, so I fed the PWM signal back into a counter to track the motor angles.)
Each of these bullet points was implemented as individual function, taking input parameters as function parameters and returning the result as return value.
For reference, this is how it looked like: https://youtu.be/9NzlfX5X_W8?t=23
At one point, I was wondering if I shouldn't just call the last function for the final value, and have it call the previous functions (and thereby calculate the input values) on demand. This would look a bit more functional-like, but I didn't see any benefits besides stylistic ones. Is functional programming a thing in embedded robot control software?
While building that demonstrator I realized that my attempt at doing so was a very shabby one. It's not enough to have in mind the acceleration/deceleration of the effector for smooth looks. If you would do things right, you would have to watch the torque and motion parameters of each individual joint. You would probably have to calculate the whole motion profile in advance. But I have no idea how I would go about doing that. Do you simply run a loop and iterate over time? What if you realize you violate some constraints at some point? Adjust some initial values by some fixed offset and run anew? I suppose there are smarter attempts.
edit: Not a HN heavy user, wow do I make lists right?