[HN Gopher] Getting into robotics as a software engineer
___________________________________________________________________
Getting into robotics as a software engineer
Author : bouk
Score : 117 points
Date : 2024-02-10 10:30 UTC (1 days ago)
(HTM) web link (bou.ke)
(TXT) w3m dump (bou.ke)
| eschneider wrote:
| 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.
| shafyy wrote:
| What can you recommend to start experimenting at home with
| robotics? Raspberry Pi?
| Galanwe wrote:
| 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.
| sokoloff wrote:
| 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.
| jacquesm wrote:
| Raspberry Pi will work with the Arduino environment as
| well.
| eschneider wrote:
| 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. :)
| jacquesm wrote:
| 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.
| Animats wrote:
| 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.
| chris_st wrote:
| I've occasionally thought it would be fun (not necessarily
| productive!) to do something like the experiments folks have done
| with Genetic Algorithms, having simulated robots learn to walk,
| etc. in a simulated physics environment. The interesting bit
| would be to do it with real legs, sensors, servos, etc., to try
| to build up a "naive physics" library that can deal with balance,
| etc., by learning from physical experience rather than starting
| with equations of motion.
|
| That may be the most number of times I've typed "etc." in a
| paragraph.
| flutas wrote:
| I've thought something similar but the reverse (if I'm
| understanding you correctly).
|
| Using simulation to train a DIY spot on something novel and see
| how good I could get the performance in the real world.
|
| Of course that's a dream of mine one day and not an active
| project.
| imtringued wrote:
| https://m.youtube.com/watch?v=17NrtKHdPDw
| mkoubaa wrote:
| I had seen that. The assumption seems to be that simulations
| are simplistic, and then most of what remains shows practical
| ways for real world training to work (while acknowledging
| that it's hard to do)
| mdorazio wrote:
| You're describing something similar to what TRI has been
| working on for several years and seems to be making progress
| on: https://www.tri.global/news/toyotas-robots-are-learning-
| do-h...
| amelius wrote:
| Can anyone explain why diffusion policies are so powerful
| compared to just attaching a bunch of actuators to the output
| layer of a deep neural network?
| Avicebron wrote:
| My university had a program that did this, I took it as a
| sophomore years ago while I was studying "evolutionary
| robotics", although typically we would simulate the robot in 3D
| virtual environment to test the reward mechanism for learning
| to walk.
| FooBarBizBazz wrote:
| I remember articles about a competition DARPA had to this
| effect, using an off-the-shelf simulator (maybe Bullet?). At
| first, the simulated robots learned to hack the sim. Some did a
| vibration thing that messed with the friction model, sort of
| like a vibrating cell phone moving across a table. Others
| learned to hack collision detection/response, doing a sort of
| jump / pole-vault thing that would explosively hurl them
| forward. I assume they later tweaked the sim and the rewards
| until they actually got the walking behaviors they wanted.
| manuel_w wrote:
| This is completely unrelated to the article the OP posted other
| than it's also related to robotics. But it's the coolest robot
| project I found recently. And since readers of this thread are
| likely to be interested in robotics (I am!), it might of interest
| to some:
|
| https://www.allesblinkt.com/projects/round-about-four-dimens...
|
| Hope this is not considered too off-topic here.
| kaycebasques wrote:
| The original post is kinda lame so we should just hijack this
| thread into a general robotics appreciation discussion.
|
| That cube is amazing. Thanks for sharing. The aesthetic is so
| polished. Some true 21st century art right there.
|
| This made the rounds a few months ago but worth posting here
| again. So inspiring. https://www.youtube.com/watch?v=bO-
| DWWFolPw
| msadowski wrote:
| My journey is a little bit opposite to the author's: I studied
| robotics and started learning programming by myself to create
| software for robots. There are two observations I have that can
| be useful to people making the software->robotics journey.
|
| * Agile for software-hardware is hard if not impossible. For
| software it can be reasonable, but it's really hard to iterate on
| both hardware and software at the same time. It's easier if the
| hardware designed is locked or the process involves waterfall on
| the hardware side. * I often found that people that come from
| pure software to robotics don't have control experience and
| something that can be easily solved with a PID controller end up
| being a custom code that ends up being way more complicated than
| needed.
| fake-name wrote:
| I'd go one further and say that basically agile in hardware is
| fundamentally impossible in any way people commonly use agile.
|
| If you have any custom hardware, you are basically stuck with a
| turn time of at minimum a day or two for any changes (often
| more, weeks + for new PCBs is common if you're not throwing
| huge amounts of money at people).
|
| In this context, any process that depends on rapid small
| iterations is basically impossible, because each iteration just
| takes too much time.
| chillingeffect wrote:
| Ive done firmware for a long time. Platforms vary
| considerably and most have surprises. Debugging facilities
| are limited. Reference examples are sparse and chatgpt hasnt
| got much info on niche OSes like zephyr, and safertos except
| some FreeRTOS.
|
| Pieces of code interact more heavily than a linux machine.
| Testing requires more hand-holding/baby-sitting. Cross-
| platform architectures don't scale down well. There are many
| types of comms busses with no/few standard embeddings.
|
| Some teams know how to make it a lot easier. Some CTOs know
| this, but most find out the hard way. Embedded practices lag
| webdev by 5-10 or more years bc they were good enough for a
| long time or for small projects. Expectations are rising, but
| there is less leverage than adtech so salaries are ok but not
| explosive.
| jsjohnst wrote:
| > Reference examples are sparse and chatgpt hasnt got much
| info
|
| Chicken, meet egg. If a web crawler can't find plenty of
| reference examples, then LLMs trained on web crawled data
| aren't going to be very useful.
| nostrademons wrote:
| I wonder (as someone who's basically always been in the pure
| software land) if the way to get around this is to _overbuild
| your hardware prototype_. Throw on more sensors, actuators,
| and motors than you actually need, and parameterize the
| physical properties of the hardware (like mass, power, and
| center of gravity). Then do your iterations in software. You
| can always ignore a signal coming from a sensor, but it takes
| weeks to add a new sensor and get a new prototype. So work
| out all the behavior in software, where you can iterate on a
| minutes - > hours timetable.
|
| Then once you know how it works and have done most of your
| optimizations, you can trim down the BOM and get rid of
| hardware that proved useless. You'd probably want another
| round of tuning at this point, but at least you know
| basically how it works, and have tried out many different
| combinations of hardware in your software iterations.
| throwup238 wrote:
| That's what dev kits are in electronics. They usually even
| come with schematics/PCB layouts so an engineer can quickly
| copy a working design and remove the stuff they don't need.
| There's still a huge gulf between those prototypes and
| production and there's plenty of mistakes to make requiring
| multiple revisions.
| bbarnett wrote:
| It was the same end-position prior to internet publishing
| of software.
|
| No updates. No bugfixes. What you pressed to CD (as much
| as a buck per CD qty 1000), was what your customers got.
| Period.
|
| And it hurt to republish, because those updates were via
| mail. The box/sleeve, the labelling, the labour, the
| shipping.
|
| DEVs today have no idea how easy their push is.
|
| Get it right or you fail.
| calamari4065 wrote:
| It's unfortunately not that simple. For most parts you can
| get breakout boards or dev kits that implement the chip and
| all its support circuitry. You can drop those into a simple
| PCB or just a breadboard and get going pretty quick. This
| is appallingly expensive for more than a handful of
| prototypes, but it does work. IME, this is how software
| people approach electronics.
|
| The real trouble comes during the next step. You have to
| integrate all these disparate boards into one unit. You can
| copy schematics and layouts from the dev boards, but that
| takes a lot of time. Once you've done that, you need to re-
| validate your entire stack, electronics, firmware, and
| software. You will inevitably find that you've missed a
| connection or the routing introduced some noise or you got
| this component value wrong. So you spin a new board, wait a
| week, and do it all over again several more times.
|
| Debugging electronics is a lot like debugging software.
| Except that the code is physical objects and the bugs are
| emergent properties of the whole system and are inherently
| chaotic. You (generally) can't step through the system like
| you would with code, you can only observe a small number of
| nodes in the system at any one time.
|
| It's harder than you expect because you're dealing with
| invisible forces and effects of the fundamental laws of
| physics. It requires either very deep knowledge or a lot of
| time in iterations to solve some of these problems.
| JoeCortopassi wrote:
| To expand on this, if software was like hardware:
| - when your function calls don't have enough white space
| between them, they'll some times mix up their return
| value (crosstalk) - the more deeply your if/else
| statements are nested, the more random their results end
| up being (voltage/IR drop) - when the user makes
| a selection, your bound function is called somewhere
| between once and a dozen times. Each time with a
| different value (bounce) - their is no `true` or
| `false`. You just are given a float between one and zero,
| where one is true and zero is false. Sometimes `true` is
| as low as 0.3 and sometimes `false` is as high as 0.7
| - the farther apart your variable declaration is from
| it's use, the less it represents what you actually
| declared. If it's two lines apart, a 'foo' string is
| still 'foo'. Hundred lines apart though, and 'foo' might
| become 5.00035 (attenuation)
| calamari4065 wrote:
| If you want your program to execute as fast as possible,
| you have to worry about the speed of light! A trace a few
| millimeters longer than its partner can have nanoseconds
| of delay which can easily corrupt your data!
|
| And don't forget that you have to balance the physical
| shape and arrangement of components and traces with
| frequency and surrounding components otherwise you've
| created a transmitter spewing out noise at tens of MHz.
|
| Or the corollary: if you aren't careful you can _receive_
| radio signals that will corrupt your data.
|
| Oh, you think your wire can handle the 0.5A your widget
| needs? Let me tell you about transients that spike to
| tens of amps for a few hundred nanoseconds. But it's
| okay, that problem can be solved with a bit of
| trigonometry.
|
| On the plus side, if you forget to connect your ADC to
| something, you now have a surprisingly decent random
| number source.
|
| I love the absolute chaotic insanity of electronics. On
| the surface things make sense, but one level deeper and
| _nothing_ makes sense. If you go further than that, at
| the bottom you 'll find beautiful and pure physics and
| everything makes sense again.
|
| I feel the same way about software. It's a hot mess, but
| under everything there's this little clockwork machine
| that simply reads some bits, then flips some other bits
| based on a comparison to another set of bits. There's no
| magic, just pure logic. I find it a very beautiful
| concept.
| Animats wrote:
| It's common to design PC boards that have holes and traces
| for components that aren't installed. If you need three
| motor controllers now, design a board with space for six,
| plus a prototyping area of plain holes. Allow for extra
| sensors, inputs, and outputs. It's easy to take the extras
| out of the design later when you make the board for the
| production product.
| bemusedthrow75 wrote:
| This is very interesting.
|
| But quite a lot of CS people -- well at least I hope it is not
| just me -- end up on the web development trajectory despite or
| because of having less than good enough understanding of e.g.
| trigonometry, geometry and calculus... all of which start to
| matter a lot when you are starting to make things; especially
| things that move and consume electricity.
|
| I am a good programmer but a _weak_ mathematician. I have a 3D
| printer now, and I 'm starting to learn FreeCAD and
| microcontroller stuff actively rather than just reading about it,
| and run up against my maths weakness all the time.
|
| I have recently discovered the three books Joan Horvath and Rich
| Cameron wrote:
|
| https://www.makershed.com/products/make-trigonometry-print
|
| https://www.makershed.com/products/make-calculus-print
|
| https://www.makershed.com/products/make-geometry
| bouk wrote:
| Some trig and geometry is definitely useful--but it's quite
| limited to be honest. For most things you can use existing
| algebra libraries and for most things someone else has figured
| it out before!
| DragonStrength wrote:
| It's just used to gatekeep still. It justifies why they
| should hire the new grad masters student with a similar
| background over someone who has actually written the code
| before.
| bemusedthrow75 wrote:
| I guess this may be true. But my lack of knowledge of these
| things is on a different plane to the "knows well-enough"
| vs "expert in" distinction that might be useful for
| gatekeeping.
|
| My grasp of trig has relapsed to 13-year-old level. It's an
| embarrassment!
| bemusedthrow75 wrote:
| Indeed. But I think I would like to be oriented better, and
| not feel completely outside it.
|
| My calculus is strongest; I can deal with that basically. My
| geometry is so poor that I am surprised I passed my maths A
| level.
|
| These books excite me because they give back that, er,
| constructivist thing that has always appealed to me --
| Piaget, Papert, Minsky.
|
| I enjoyed your article, thank you for writing it.
| tonyarkles wrote:
| I don't know that I agree, even at the simple project level.
| If the problem you're trying to solve has been solved exactly
| before and you can find a good reference to copy then you
| might be ok (for example the inverted pendulum problem). But
| in my experience you end up solving a related problem instead
| and that'll often require re-deriving the equations of motion
| with whatever quirk is required.
|
| The other part that'll catch you pretty hard if you don't
| have strong trig and linear algebra going for you is that
| debugging is going to be really hard. I admittedly have been
| deep in positioning-and-attitude control for 5 years now, but
| the ability to look at a transformation matrix or quaternion
| and mentally grok exactly what it means odd going to be
| incredibly useful when you're trying to figure out why your
| system isn't doing what you think it should be.
| dartos wrote:
| Web dev just has the best pay/perks for the amount of work.
| bemusedthrow75 wrote:
| It was exciting thirty, twenty-five, even twenty years ago. I
| loved it.
|
| But the pay/perks situation is dependent on putting up with a
| lot of corporate BS; if you're a solo developer, or the only
| developer in a small team, web stuff is hard, the task
| shrinks over time as things commoditise and you become more
| dependent on hosted offerings, and pays relatively poorly. I
| am tired and seeking a direction change before it is too
| late.
|
| Literally the _only_ topic on which I agree with Elon Musk is
| that more developers need to be persuaded to do something
| more interesting than getting dragged into web dev BS. And I
| wish I 'd paid a lot, lot more attention in maths lessons
| away on topics that didn't have to do with logic.
|
| (It is, nevertheless, amusing that it is web dev BS where
| Musk is getting his posterior handed to him)
| AYBABTME wrote:
| I often feel the same urge to work on soft/hard stuff. Not sure
| why I don't actually do it. Although the current stuff I work on
| is very cool on its own and not Candy Crush. But it's really a
| scourge on this world that the top tier pay in the industry is to
| shove ads in front of people.
|
| So I do physical things in my personal projects and then come to
| realize that the potential return on investment (time spent vs.
| expected money) would be peanuts in comparison to pure software.
| I would love to know of hardware related work that has decent
| margins. Or at least enough margins to justify paying a good
| salary to enough engineers to sustain them.
| bemusedthrow75 wrote:
| > But it's really a scourge on this world that the top tier pay
| in the industry is to shove ads in front of people.
|
| This cannot be said enough, IMO. The web software world's
| endless quest for the shallow and lucrative is exhausting.
| tonmoy wrote:
| As someone who works in making physical things, I disagree with
| the premise that the world of bits and bytes does not have
| impact. We will always need to manage resources including humans
| at a large scale and web apps are the best way to do that.
| mdorazio wrote:
| Really wish the author would have commented on salary. I
| personally think the reason more people don't end up on the
| hardware/robotics side is that the questionable-value
| fintech/adtech/socialtech pure software side of the world pays so
| much better and most developers follow the money.
| bouk wrote:
| There are certainly hardware companies that value software
| enough to pay well
| giancarlostoro wrote:
| I am assuming anything mission critical.
| FirmwareBurner wrote:
| But few companies do, usually American ones, and their open
| positions are usually less in number than software and
| they're only in certain regions. If you don't live there
| you're shit out of luck.
| DoctorDabadedoo wrote:
| Robotics is very niche and the market is dominated by early
| stage startups (since most of them go out of business a few
| years in), so salaries are average unless you are working
| specific jobs for FAANG. Job hoping usually means moving
| elsewhere, since working close to the hardware makes it much
| easier, which in turn means having a good picture of what is a
| competitive salary sometimes is not obvious.
|
| source: I work in robotics. AMA.
| badpun wrote:
| Thanks for the AMA! Do you see a lot of opportunities for
| people utilizing computer-vision based SLAM (aka Structure
| from Motion)? I quite like that technique, but it seems too
| niche to make a consistent career out of it.
| jpace121 wrote:
| Computer vision based SLAM definitely has use cases and you
| can definitely make money applying it at the right
| companies to the right set of problems. Building a whole
| career around a single technique, any technique, probably
| is probably not gonna work. You need to be broader than
| that.
| 0xfaded wrote:
| I work for a self driving doing mapping. There are
| definitely roles out there, more broadly look into other
| areas of state estimation.
|
| It gets interesting when these systems need to be
| productionized and scaled. A strong software engineer who
| can speak the math is invaluable. My first year on the job
| was basically removing N^2 loops and making 3D
| visualizations.
| DoctorDabadedoo wrote:
| SLAM and localization in general are early bottlenecks in
| mobile robotics solution, unless the core business of the
| product is localization itself (e.g. waymo, cruise, etc.)
| it's not uncommon for that to take a back seat during
| product development later on. In my experience lidar based
| solutions are more common out there due to their
| "simplicity" and safety for industrial applications (i.e.
| PL-rated)
|
| You certainly can work with visual slam in the industry,
| but the job pool for that is not very big, I would say.
| moffkalast wrote:
| What kind of robotics? It's a pretty wide field.
| DoctorDabadedoo wrote:
| Mobile robotics, slam/localization and robotics backend.
| moffkalast wrote:
| Ah neat, then I do have an actual question for you. If
| you're using ROS 2, which version and middleware? And
| does it work reliably in your application?
|
| I feel like lots of companies have ditched ROS 1 only
| because of support being cut and cargo culting about how
| ROS 2 is better for unclear reasons, but in practice it
| feels anything but production ready to me. Everyone talks
| big how Zenoh will solve everything, but the thing is a
| damn prototype and really goes against the whole idea
| that having a DDS will be somehow better instead of just
| adding absurd overhead in both CPU and networking.
| DoctorDabadedoo wrote:
| I'm using ROS 1 Noetic on Ubuntu Focal at my current job.
|
| I've touched ROS 2 back in 2019 during the Crystal
| Clemmys era but it still felt experimental back then (and
| I believe still was considered beta), I plan to re-
| evaluate later this year/early 2025 how stable ROS 2 is
| now.
|
| ROS 2 is better in some aspects that weren't accounted
| for back when ROS 1 was developed (which started as
| research platform), mainly distributed systems (multi-
| robot environments) and good tech developed elsewhere
| that the system could benefit from.
|
| My personal take is that there is a lot of hit and miss
| between versions, no guarantee that what works now will
| work on the next one due to the decentralized nature of
| the community and the fact the team developing all this
| is relatively small. I would love to have a way to do
| small iterations on my own stack to bring it to the
| latest and greatest ROS release, but the combo of ROS 2 +
| major Ubuntu upgrade every 2 years is maybe too much for
| my own peace of mind.
| penjelly wrote:
| how would you recommend a software dev break into the
| industry over the next 3-5 years? Preferably without going
| back to university. What sorts of projects are best to focus
| on initially?
| AlotOfReading wrote:
| Not the person you asked, but the main qualifications are
| having a pulse and knowing any of C, C++, and Python. The
| main obstacle you're going to run into from an educational
| perspective is that people won't want to hire you for
| controls-specific roles, but those are a niche within a
| niche. Interview questions will often involve talking about
| things like RTOSes, writing a queue in C, handling ISRs,
| and sending messages on a bus (e.g. CAN/i2c/spi).
| DoctorDabadedoo wrote:
| Robotics is a broad field and is a confluence of many
| specialties: mechanical engineering, hardware engineering,
| software engineering, control, machine learning, computer
| vision, anything in between is a good entrance.
|
| Coming from software, if you are interested, I would
| suggest either:
|
| - Backend platform development (Python, C++ as main
| programming languages with a strong focus on ROS[1]).
|
| - Frontend development (nothing too different from what's
| out there).
|
| As small projects I would suggest playing with ROS to learn
| it and getting a running simulation with a simple robot
| that you can teleoperate, most of the stack already exists,
| it's just connecting everything together [2].
|
| Another venue is open source contribution [1] to get known
| within the community and potentially attract interest from
| companies. ROS has multiple packages, from cloud
| infrastructure to drivers and simulation, if you see
| anything there you could contribute to, they will gladly
| take contributions.
|
| In general robotics greatly benefits of good technologies
| from other areas, if there is a tool we use you believe
| could be better or a lack of good tooling in a specific
| area, it will get noticed.
|
| So this would be my suggested path: learn C++/Python if
| you're not familiar with, learn ROS and watch which
| specialties appear more often in robot related jos posts
| [3]. If you are really invested, maybe go to a robotics
| conference as ROSCon to meet other enthusiasts, which
| companies are engaged with the community, etc.
|
| Good luck!
|
| Note: not everything robot related is done in ROS, but it's
| almost a standard within the field save for a few
| exceptions.
|
| [1]: https://www.ros.org/ [2]:
| http://wiki.ros.org/ROS/Tutorials [3]:
| https://discourse.ros.org/c/jobs/15
| Animats wrote:
| > not everything robot related is done in ROS, but it's
| almost a standard within the field save for a few
| exceptions.
|
| In academia, yes. ROS is a piece of middleware for
| passing messages around, and a standard for talking to
| it. Funding agencies pushed academic robotics projects to
| talk to ROS so that results from different projects could
| interoperate. Which they sort of do. You get a lot of
| tooling for logging, user interfaces, wiring things up,
| etc. Think of it as a solderless breadboard for robotics
| software. The final product probably doesn't use it.
| okr wrote:
| What is questionable-value? People pay for questionable things,
| that brings value to them, though that value is questionable?
| Do not get it. Though i understand the personal resentment.
| mdorazio wrote:
| Value to society, which is different than value to companies
| or individuals.
| richrichie wrote:
| " An app is not going to house people, feed them or put them on
| Mars. We can't solve climate change with smarter software"
|
| Yes it can and we can.
|
| Software has been a critical component of much progress we have
| made over the last few decades.
|
| I understand the difficulty with the abstract many people have.
| Some may think Hilbert spaces are not real. For many they are as
| real as any space around them. Some live in them !
| AnarchismIsCool wrote:
| Ad-tech isn't feeding the poor or curing cancer, it's just
| giving everyone depression.
| moffkalast wrote:
| > Also, if you're not already, you should get into writing Rust.
| The powerful type system and safety is incredible. The build
| tooling and ecosystem is much better than C++ et al. Rust for
| embedded is not there yet, but improving all the time.
|
| Meh, maybe in a decade. ROS has no official support for it
| either. Robotics is still very much a C++ town and will probably
| remain as such for a long while as long as people remain
| stubbornly set in their ways. If you apply as a Rust only dev to
| a robotics company nobody will take you seriously.
| andrew_eu wrote:
| What would be a good starting platform for a programmable drone?
|
| The article suggests playing around with a Raspberry Pi Pico, but
| this is a bit bare bones. Are there any kits, or entry level
| programmable drones on the market with a reasonable toolchain to
| program sequences?
| xrd wrote:
| I came here to ask the same question. Anyone?
| jacquesm wrote:
| A Raspberry Pi Pico has a large multiple of the kind of compute
| that cruise missiles have so should be more than plenty for a
| programmable drone.
| andrew_eu wrote:
| While true, it also doesn't include any of the hardware
| needed to move around. I'm sure it would be possible to build
| a drone that includes it as the microcontroller, but that
| creates a substantial barrier to actually getting something
| off the ground.
|
| I have looked at the Ryze Tello [0] before, and it seems like
| a decent entry-level device, but I'm not sure whether it's
| actually a huge pain to develop for. I'd like something to be
| extendable _like_ a Pico, for instance if I want to install
| additional sensors, but all of these platforms are quite
| foreign to me.
|
| [0] https://www.ryzerobotics.com/tello
| jacquesm wrote:
| With the price of these you could stick a few in there
| (there would be a weight penalty, they are not exactly zero
| grams though for their weight the amount of compute is
| impressive but you then would also need more power).
|
| Depending on what kind of drone you want to build (powered
| fixed wing, glider, quad, hex or octocopter) that might be
| more or less of an issue. Given the power draw and weight
| of an octocopter I don't think it would be much of an issue
| there but on a quadcopter, especially a very small one that
| might be prohibitive. But I'd focus on getting it to work
| before optimizing for size and weight.
| kaycebasques wrote:
| This one seems to have completely open source hardware /
| firmware / software:
|
| https://www.bitcraze.io/products/crazyflie-2-1/
|
| https://www.bitcraze.io/documentation/repository/
|
| It was mentioned in this IEEE Spectrum article:
| https://spectrum.ieee.org/drone-quadrotor-2667196800
| lijaf wrote:
| Have a look at the Crazyflie https://www.bitcraze.io/
| hcks wrote:
| "You should base your life decisions on the koolaid flavour you
| prefer"
| tester756 wrote:
| If only anything closer to hardware wasnt paying this bad...
|
| A lot of SEs leave industries like semiconductors for web dev
| jobs that pay waay better
| choonway wrote:
| The best way to get into it without investing money in all that
| hardware is to play with a simulator. My preference is
| CoppeliaSim - due to it's user friendliness.
|
| https://www.coppeliarobotics.com/
|
| But take your pick there are many to choose from.
|
| https://www.sciencedirect.com/science/article/abs/pii/S15691...
| AnarchismIsCool wrote:
| Some concepts that you'll need to get familiar with:
|
| Real time operating systems. Less fancy than they sound but the
| devil is in the details. Robots need things to happen at a
| certain speed and at the right time so we have a type of
| scheduler (that can be patched into the linux kernel) that
| sacrifices absolute throughput to try and guarantee tasks start
| inside a particular window. Funny enough, if you've done game
| development and recognize that everything needs to happen inside
| 1/60th of a second or better, you know some of the hard parts
| here.
|
| Memory mapped addresses. C is scary but ultimately fairly simple.
| Once you get the hang of doing silly things with pointers and
| arrays, the next step is dealing with microcontrollers. You
| probably wonder how they do anything without an operating system
| though, and the answer is memory mapped IO. They have a fully
| flat memory space, starting with 0x0 and going up from there.
| That space usually contains basically everything from your stack,
| heap, flash storage, and all the peripherals like GPIO, I2C, SPI,
| serial, and so on. You can literally do things like int* x =
| 0x12345678; *x = 0x1; to turn on an LED because the device is
| listening for changes to that address to set the output state.
|
| There's a ton of other stuff, but these are the gateways to
| understanding the space you're dealing with at a basic level.
| NordSteve wrote:
| If you have a team nearby, go work with a FIRST Robotics
| Competition team as a mentor/volunteer. Great community, you'll
| learn a lot, and make great connections if you want to get into
| this area as a career.
| bouk wrote:
| Really wish this existed in the Netherlands when I was growing
| up!
| kaycebasques wrote:
| The article itself was a bit too holier-than-thou for me but I
| want more robotics content here on HN so let's hijack this thread
| and share robotics passion!!
|
| My own shitty first foray into robotics is an RPi that I can talk
| to [2].
|
| If you didn't see "the coolest robot I've ever built" you gotta
| watch that... so inspiring [3]
|
| Latent Space has a robotics demo day coming up, pretty curious to
| see what comes out of that [4]
|
| Some stream-of-conscious thoughts about why I'm drawn to
| robotics:
|
| * The maker / hacker / homebrew communities that are basically
| just using robots to express art. Maker Faire, Burning Man, etc.
|
| * The satisfaction of writing code and seeing something physical
| happen. Last week I was trying to figure out how to get a shitty
| third party Amazon robot hat [5] to actually do something useful
| so I was iterating through the GPIOs and I somehow made it
| actually smoke. I'm weirdly proud of messing up so badly that my
| hardware actually smoked!
|
| * The joy of demystifying hardware and learning all the layers of
| abstraction just within hardware
|
| [2] https://www.biodigitaljazz.net/blog/STTTGTS.html
|
| [3] https://news.ycombinator.com/item?id=38162881
|
| [4] https://lu.ma/latent-space-final-frontiers
|
| [5] A Xmas present from my sweet wife, really touching that she's
| encouraging me to actually pursue my interest in robotics
| tamimio wrote:
| As long as software folks don't bring their shenanigans
| (agile/scum (ahmm scrum) approach, daily stand up, ticket based
| management, ship products within 2 weeks, among others) into the
| robotics/engineering world, you are welcome. I have seen many
| cases of software "project or engineering managers" ruin a whole
| department because they were trying to force such stupid
| approaches, it's always ironic seeing some are trying to force
| agile for example even though the whole idea of agile is
| being..agile.
| ih wrote:
| I'm just getting into robotics with a background in software and
| I ended up choosing the Isaac Sim platform/ecosystem
| (https://docs.omniverse.nvidia.com/isaacsim/latest/index.html)
| and Jetbot (https://jetbot.org/master/) since they seem suited
| for neural networks and reinforcement learning. So far getting up
| and running with the simulation side hasn't been too bad and
| there is a model for the Jetbot in Isaac Sim since it's also by
| Nvidia. I haven't started on the hardware side so can't speak on
| that. The downside for some might be it's proprietary and Jetbot
| itself is a bit out of date and nearing end of life support.
| m00x wrote:
| You'll be better served with a more capable platform. You can
| either 3d print it, or you can pick up something like the
| WaveRover from Waveshare. It's a solid metal frame with geared
| motors and differential drive. For ~$100 you won't get much
| better.
|
| You just need to pop in 3x18650 batteries in the chassis and
| connect a Jetson nano to the UART pins. It has an ESP32 inside,
| so you can also program that, but it comes programmed out of
| the box.
|
| You can control it with this python library
| https://github.com/msanterre/wave_rover_serial
|
| Isaac SIM is a terrific simulator, you won't get much better.
| ih wrote:
| Cool, thanks for the advice!
| Animats wrote:
| This might be a good time to get into robotics. For a long time,
| industrial robots were really dumb. Then there was a round of
| false enthusiasm for "intelligent robots" (Rethink Robotics went
| down that rathole.) Now, at last, compute power, vision, and AI
| are cheap enough that you can get something done.
|
| The components are much better. Batteries are better. Motors are
| better. Radio communications work. Cameras are cheap. Short-range
| LIDAR is affordable. Navigation systems work. Robotics work used
| to require using a lot of time building custom solutions for
| those problems. Now you can just order components.
|
| Here's an idea I'd like to see revisited. Back in the 1980s,
| someone built a pair of small forklifts that operated as a team.
| These were little things, about half a meter cubed, with maybe
| 50cm of lift. Individually, they couldn't do much. But a pair
| working together could pick up and move a couch, with one robot
| lifting each end. In the 1980s, the researchers had trouble
| coordinating two mobile robots. Communications alone were a big
| problem. Not today.
|
| There are many material handling tasks where one small robot
| isn't enough, and a big machine the size of a forklift is too
| bulky. But teams of small robots might work.
|
| I still have a small robot arm on my desk, but it's not connected
| to anything.
___________________________________________________________________
(page generated 2024-02-11 23:00 UTC)