Hacker News new | ask | show | jobs
by liamkinne 591 days ago
It’s interesting to me that every robotics framework essentially boils down to a specialised pub-sub system with some flavour of serialisation and some kind of startup/launcher to wrangle running separate processes.

Props to this team for picking Protobuf given its wider adoption unlike ROS and its custom format.

Is there a reason an existing pub-sub system like NATS isn’t suitable for a framework like this?

Also unfortunate that this project is written in C++ and offers Rust bindings rather than the other way around.

1 comments

I always wonder about this too. Half the ROS projects I've seen are just single-board applications with topics.

ROS bags are a useful facility for data capture and testing, and there are some ROS packages that are useful (against the backdrop of an awful packaging/build system). But even all that is just because the community decided this particular pub-sub system was the robotics one and started building packages on it.

So why ROS, robotics community, why?

I suspect it just happened to be at the right place at the right time, worked well for a set of users in the robotics community and built up strong network effects there.

This is a pretty common story. Python became very successful in a similar way. I have seen things like flight critical software written in Python not because Python is a good language for it (if I heard this 15 years ago I would laugh), but because Python became a de-facto standard for prototyping in the domain due to its libraries, tools and bindings and solving a realtime challenge for an existing prototype is often an easier lift than rebuilding it from scratch. My 2c.

One story not mentioned here is the real history.

ROS was developed as the framework for the PR1 robot, as a "Linux for robotics" idea. But it really took off when Willow Garage GAVE out a bunch of PR2 robots to academic institutes around the world.

It then stuck because those labs, even independently, developed really useful tools in a very backwards compatible language (C++) or with support to old languages (Lisp). You can find many repos such as this one which basically have EVERYTHING, handed down from PhD to PhD student over decades

https://github.com/jsk-ros-pkg

Basically a lot of the headache inducing grudge work exist there as a library, you only need to glue it together.

You want to calibrate your camera, get the relative position to the root of a robot arm? You can knack it together with openCV and then end up debugging for hours because coordinate transform convention was wrong. Or just install this library, publish your sensor data in specified topic, and it does it for you.

Imo it's easy to miss the usefulness of ROS if you don't consider the tf package, rosbag and rviz together with ROS as a bundle.

Everytime I see a pub/sub "new ROS" framework, sooner or later I realize I need to reinvent tf/rosbag/rviz, because those standard packages are almost never available (or available only for the developers specific need)

We support mcap (the data container format that ROS2 uses) and Foxglove for viz. Shoutout to Foxglove, it's a much nicer experience than rviz. Something like tf is on the todo list - I recognize it's important.
That's cool to hear! I'll follow the project and fingers crossed it works out. Since I still kind of rely on legacy packages I probably won't/can't move to it in the nearest future but it would definitely be great when "prototyping" and production could be merged to one (without headache)
IMO, the real value of ROS is the data logging (bag/mcap files), visualization (FoxGlove) are the main value of ROS. Even then, I'm not sure it's worth the overhead and brittleness of building and running it. There is just so much complexity deploying and developing for it.
Yep. ROS is great if you are an academic or a garage startup who needs to get anything at all up and running ASAP because it is extremely flexible and has a huge volume of community modules.

But, when it comes time to deploy serious business (very often Safety Critical) robots in the field, you don’t want flexibility. You want certainty. You don’t even want everyone’s contributions. You want specialized, carefully vetted code.

Thus the effort to make it easy to transition off of ROS to something simpler and more reliable.

This, so much.