Live data from Hacker News

Robotics and ROS 2 Essentials

henkirobotics.com

41–50 of 107 posts

Re: Robotics and ROS 2 Essentials

#41

While it's used in industry sometimes, ROS is really one of those by-and-for-academia tools. There's a reason it's near-universally reviled, and why "migrate off of ROS" is a standing goal at a lot of robotics companies. There's also a reason why it's a standing goal, rather than a completed goal. It does little or nothing really well, but it does everything kind of okay. There's a lot of "alternatives", most of whic…

Sure. A ROS system, being a collection of independent nodes coupled with a publish/subscribe messaging system, allows you to mix and match nodes for whatever. So as a researcher, it is great. It gives you a "good enough" robot for the 98% that is necessary infrastructure for the 2% where you want to experiment/innovate. In an commercial setting, yeah, you run into scaling issues all over the place. Also, the code qua…

One of my pet peeves with the algorithm/science ecosystem surrounding ros is that almost all of these algorithms are not usable without ROS. Deep down inside some planning algorithm, you find ros data structures, ros publishers etc. This is poorly designed code. It's like letting raw SQL queries infect an entire ecosystem of libraries. IMO, this pattern is holding robotics back.

Two examples come to mind of packages that do NOT do this:

1. plotjuggler [1], which is a tool for plotting time serious data. It can connect to ROS, but also supports many other communication paradigms, like mqtt, zeroMQ, websockets, custom data and some more I forget.

2. nvblox, which at its core doesn't depend on ROS but instead provides a ros2 compatibility layer.

[1] https://github.com/facontidavide/PlotJuggler

[2] https://github.com/nvidia-isaac/nvblox?tab=readme-ov-file#c-...

[3] https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nvblox

Re: Robotics and ROS 2 Essentials

#42
I tried to use ROS2 twice in my professional career. Both times ended up with massively bloated build pipeline code, significantly longer build times, and massively bloated Docker images.

Don't use ROS2. The benefits just aren't worth it. It's great for school but it's terrible for production.

Re: Robotics and ROS 2 Essentials

#43
post #3

Those of you who use ROS in production, do y'all use ROS 1 or 2? Do you maintain your own fork? I'm curious how people do this, with the upcoming Noetic deprecation.

I run a robotics dev tools company and we work closely with companies of all sizes across the robotics industry, so have a unique perspective on this.

I would say about half of the industry (read: for-profit robotics startups from early stages through to 10,000s of robots in production) uses ROS, and of those probably 2/3 are on ROS 2 at this point, and the rest are in some stage of migration. ROS 2 solved a lot of problems that didn't need solving, but like it or not ROS 1 is abandonware at this point so almost no one is planning to stick with ROS 1 longer than they have to.

Most companies aren't maintaining their own fork of ROS (other than to submit patches upstream), but a small number of companies on ROS 1 forked it and diverged so significantly that there is no point trying to rebase on ROS 2 - of these GM Cruise was the most notable, although the future of their stack is unknown now that GM canceled the robotaxi project.

The other half of the industry uses some sort of in-house stack built from parts (compare batteries-included frameworks like rails/django to building a backend using libraries like expressjs and sequelize). There is usually some form of pub/sub messaging architecture, because pub/sub is a natural fit for robotics and makes it easier to log and replay/resimulate. Some common things I see are zeromq, vanilla DDS (no ROS), zenoh, or write their own pub/sub (sometimes using shared memory). The messages themselves are often protobuf, flatbuffer, cbor, json, or sometimes just raw c structs.

Building your own stack isn't hard, but its much easier if you have used ROS before and know which concepts you want to reuse, rather than reinventing everything from first principles.

Some newer robotics frameworks are also starting to spring up which is great to see, for example https://github.com/copper-project/copper-rs and https://github.com/dora-rs/dora

There are also frameworks more specifically targeted towards robot learning, for example https://github.com/huggingface/lerobot

If people are just starting out in robotics, or just starting a robotics company, I still recommend ROS despite its warts, it is worth learning because it has had such a big influence on the current ecosystem. There is no "right answer" though, many companies have been successful with each approach.

Re: Robotics and ROS 2 Essentials

#44

Is ROS 2 approachable for a teenager interested in electronics and what hardware would you recommend for them (considering it as a present for a family member)?

for a teenager, I definitely wouldn't recommend Ros, unless they're already very deep into Linux, c++, build systems, etc - I'm sure there are kids out there that can handle it, but I'd say most would find Ros endlessly frustrating. I think it makes grown men cry.

robot wise, I'd recommend something they can program with a raspberry pi and python, if they have some light background in programming. I had a quick look on Amazon and I have no affiliations with these, but maybe look for something like this: https://www.amazon.co.uk/FREENOVE-Raspberry-Tracking-Avoidan...

note this one doesn't have either a raspberry pi nor any batteries. you might find a better one.

Re: Robotics and ROS 2 Essentials

#45

I tried to use ROS2 twice in my professional career. Both times ended up with massively bloated build pipeline code, significantly longer build times, and massively bloated Docker images. Don't use ROS2. The benefits just aren't worth it. It's great for school but it's terrible for production.

Sounds like your build system is the problem, not ROS.

Re: Robotics and ROS 2 Essentials

#46
post #16

Earlier quoted context omitted.

Trust me, having your own crufty cobbled-together robotics code base that gets more and more insipid over time is way worse. 10/10 would start anything new with ROS.

We replaced ROS with GRPC, foxglove and our own code. Works reliably, much better to handle. Would recommend everyone else to try it

Isn't Foxglove built for ROS?

Re: Robotics and ROS 2 Essentials

#48

While it's used in industry sometimes, ROS is really one of those by-and-for-academia tools. There's a reason it's near-universally reviled, and why "migrate off of ROS" is a standing goal at a lot of robotics companies. There's also a reason why it's a standing goal, rather than a completed goal. It does little or nothing really well, but it does everything kind of okay. There's a lot of "alternatives", most of whic…

> It does little or nothing really well, but it does everything kind of okay.

Yes. ROS is basically mediocre interprocess middleware with a standard interface used by much academic software. So you can hack stuff together without too much trouble. It won't be efficient or reliable, but it's useful.

Think of it as the PHP level of robotics.

Re: Robotics and ROS 2 Essentials

#49
post #30

Had a recent conversation with nephew about his robotics study, and it seems he’s overwhelmed with ROS, OpenCV, Python, AI transformers tutorial hell. Told him we should go together to industrial expo - starting from 3d printing, molding, material science and robotics and spend some time together to hack into hard core C++ SDKs used by big tech like Nvidia and Co, and look how to developed linear algebra and statisti…

I also wanted to automate everything. Even got a mentor who brought me back to reality. Basically robot must be available 99,9999% of the time. One unsuccessful operation in 5 year of usage without maintenance. With less it makes no sense to automate because handling a production line incident might be very expensive.

This doesn’t really follow…

It largely depends on what you’re automating, no? That standard seems absurd.

Re: Robotics and ROS 2 Essentials

#50
post #36
post #34

Earlier quoted context omitted.

Highly recommend to avoid any companies that would touch ros with a 10ft pole. It's an unmitigated pile of endless shit, and any projects that don't recognize this are also.

What would you recommend instead for the ones that would be interested to start learning robotics stuff? (Not trying to be snarky but actually curious)

For what, specifically? ROS is a collection of different mostly-independent components. Just write the code to do what you need, or use normal libraries to do specific things they're good at.
Post reply on HN