Live data from Hacker News

$100 robot kit running ROS2 and Navigation2

blog.hadabot.com

11–20 of 30 posts

Re: $100 robot kit running ROS2 and Navigation2

#11

I'm really struggling in learning ROS in a systematic way. The tutorials are all over the place and somehow unorganized IMO. When trying to replicate stuff on my machine, all kinds of weird errors pop up. Honestly, I don't even get what ROS is about? Like it seems it is an "amalgamation" of tools and scripts to create a general API with some ideas of robotics application in mind. Also the naming of its stack seems we…

> Honestly, I don't even get what ROS is about?

You can think ROS as a framework aimed at developing robotic applications (similar to what a REST framework would be for developing a web API). With it you get access to a lot of open source packages and tools out of the box (simulation via Gazebo, native process communication using pub/subs, autonomous navigation, joint transformation, etc.). There is a lot of dependence handling to make a robot work (component drivers, real time comm, planners, SLAM, the list goes on), if you are able to abstract something of the pipeline, it's worth it.

The whole thing might not seem very concise, but looking back, it was released aiming to facilitate research development, all these packages are maintained indepently. ROS2 is an attempt to tackle some architecture and scope issues brought up by the industry.

Re: $100 robot kit running ROS2 and Navigation2

#12
post #5

I'm trying to figure out what ROS2 is -- judging by the docs and tutorials it seems like a very low level and abstract piece of complex software but I'm struggling to understand its practicality. Can someone provide an ELI5 or like a few sentences of a "pitch" style overview?

ROS isn't really one thing. Per the "about"[1] it's really made up of several pieces:

Plumbing:

ROS is centered around a publish/subscribe messaging framework, with a central broker that ROS processes (called nodes) register with to advertise their publications and request subscriptions. Message definitions that are passed on the pub/sub "topics" are specified in language agnostic Interface Definition Language (IDL) files. There's an RPC service layer built on top of the messaging infrastructure, and the central broker also hosts a 'parameter server' database that nodes can use to query or update named values. ROS client libraries that provide APIs for topics/services/parameters are provided for several languages, primarily C++ and Python. A set of commonly used message definitions and conventions, which form de-facto standard interfaces, are used to establish interoperability and substitutability between ROS nodes.

Tools:

ROS provides build tools for individual software packages based on CMake and custom metadata embedded in an xml file. Packages can be grouped into workspaces, built with ROS tools, and workspaces can be layered on top of one another. Other ROS tools exist for process management (the launch system), introspection of running ROS processes, interaction with topics/services, and visualization of message data published with well-known message types. This list is by no means comprehensive

Capabilities:

Building on the concepts of publication/subscription with shared interface descriptions, and the package abstraction, various packages are publicly available that use ROS interfaces to accomplish various functions. These could include reading data from a sensor and converting the data to a ROS message, implementing robotic navigation algorithms, providing a visualization or UI, or controlling the behavior of a simulation. It's possible to build on and modify a lot of existing capabilities to build a system, which arguably speeds up the

Ecosystem:

ROS is widely used across industry and academia, and there's lots of people familiar with its workings. These people work together to advance the state of the art of the ROS framework and the capabilities implemented with it, the standards/conventions for interoperating with various components, and

ROS 2 is an evolution of ROS. It keeps a lot of the same concepts, but replaces the bespoke pub/sub messaging protocol with an abstraction to plug in lower-level messaging libraries (DDS is used by default). The reasons and motivations for starting over with ROS 2 are outlined here[2], but may require some familiarity with ROS 1 to get all of the nuance.

[1] https://www.ros.org/about-ros/ [2] https://design.ros2.org/articles/why_ros2.html

Re: $100 robot kit running ROS2 and Navigation2

#13

I'm really struggling in learning ROS in a systematic way. The tutorials are all over the place and somehow unorganized IMO. When trying to replicate stuff on my machine, all kinds of weird errors pop up. Honestly, I don't even get what ROS is about? Like it seems it is an "amalgamation" of tools and scripts to create a general API with some ideas of robotics application in mind. Also the naming of its stack seems we…

I've been doing ROS professionally for ten years and have presented twice at ROSCon. I would argue that part of the difficulty with this is that ROS is many different things to different people. I'm a low level platform/OS/firmware guy, so I tend to care most about the build system, dependency management, the relationship with the host OS, the standardized sensor messages, and the approach to logging (rosbag).

People in the perception space may care more about all the standard camera drivers, the publicly available SLAM datasets, and the zero copy nodelet system for passing image date through a pipeline.

People in controls care about the simulator integration, and the flexibility of move_base and its successors through a rich plugin system.

Then there are people doing stuff with manipulators, people doing realtime industrial stuff, people doing quadcopters, people doing academic research, people trying to build a product, people doing web frontends.

It's a lot of use-cases, so it's hard to recommend any one "getting started" path because it depends a lot what your interests are and your expected end goal. But generally speaking a safe option is to get a robot like Turtlebot up in the simulator, get it map-making and navigating autonomously, and then start mutating that— add more sensors to it, or write your own planner, or make an rviz plugin that does something interesting, etc. Maybe swap out gmapping for cartographer, or set it up to explore on its own.

These kinds of tasks will familiarize you with a lot of the tools that almost every ROS person uses, so that you'll have more of a sense of what the potential next steps are.

Re: $100 robot kit running ROS2 and Navigation2

#14
post #10
post #5

I'm trying to figure out what ROS2 is -- judging by the docs and tutorials it seems like a very low level and abstract piece of complex software but I'm struggling to understand its practicality. Can someone provide an ELI5 or like a few sentences of a "pitch" style overview?

ROS itself is basically a glorified message bus, and the ecosystem around it allows you to quickly cobble together a robot from disparate parts (use one thing to publish frames from your specific camera model, feed it into some other module that does SLAM). Very popular in research, so in practice little of it really works together, much is abandoned and most stuff barely compiles. Lately there have been "smart" peop…

> Lately there have been "smart" people thinking they can just install ROS and presto robot AI startup. These people are in for a harsh lesson.

Oh, but they can. The "presto AI" part is easy. Making a working product after ROS collapses under its own weight is the tough bit.

Re: $100 robot kit running ROS2 and Navigation2

#15
Re: the "what is ROS?" question asked by many on this thread:

Like others have said, ROS includes a serialization protocol with codegen, a pub/sub and RPC messaging system with discovery, a build system, a configuration file system, logging system, and a repository of packages using them.

You might ask: why is it popular? One reason: it was started before the current ubiquitous solutions for those things were ubiquitous.

But I think the main reason is: in robotics, we use a lot of semantically complex data like high-dimensional sensor readings, probabilistic models of the world, representations of rotation and angular velocities, etc., and we need to do a lot of things with that data. For example, suppose we use a vision system to identify objects from a camera. We don't just display that information to a user -- it becomes the input to the high level planner, which is its own complex system.

If your object recognition library and your planning library are both pure C++ libraries, then they probably each define their own classes for the datatype "list of (bounding box, object name) pairs". You need to write glue code to use the libraries together.

However, if those libraries are both ROS packages, the idiomatic thing is to publish a package containing only message definitions (like vision_msgs [1]) and have both libraries produce / consume that. This makes it easier to put together complex systems that pass around highly structured data, because you don't have to constantly write glue code to get your libraries to work together.

TL;DR: ROS is popular because it's like a big collection of .proto or .thrift files for complex robotics datatypes that everyone agrees to use in their libraries.

[1] https://index.ros.org/p/vision_msgs

Re: $100 robot kit running ROS2 and Navigation2

#16
The thing with ROS is… it's pretty good at what it sets out to do. It's a common framework that everything in the robotics universe can speak to, has some amazing tooling, and handles many tedious things that robotics experts shouldn't have to care about. It does broadly achieve this.

But from my perspective as a generalist software engineer who isn't a low-level robotics expert – as an ecosystem, it seems to have adopted every bad practice available and invented some more of its own. My experience working with it has been an exercise in trying to isolate it as much as possible so that the blast radius can be restricted. Many of the architectural design decisions are frankly baffling, although I appreciate that this is in part down to age, legacy, and the open nature of the platform.

ROS2 definitely feels like it rounds off some of the sharper edges and I'm very happy to see this project push forward in some useful areas!

Re: $100 robot kit running ROS2 and Navigation2

#17
post #14
post #10

Earlier quoted context omitted.

ROS itself is basically a glorified message bus, and the ecosystem around it allows you to quickly cobble together a robot from disparate parts (use one thing to publish frames from your specific camera model, feed it into some other module that does SLAM). Very popular in research, so in practice little of it really works together, much is abandoned and most stuff barely compiles. Lately there have been "smart" peop…

> Lately there have been "smart" people thinking they can just install ROS and presto robot AI startup. These people are in for a harsh lesson. Oh, but they can. The "presto AI" part is easy. Making a working product after ROS collapses under its own weight is the tough bit.

> Making a working product ...

This is always majority of the work.

Often you get research lab products that are pretty cool (this is not robotic specific) and people think "Hey, we should spin this off/sell this/licence this, it would be a great product and 90% of the work is done".

Usually, at most 5-10% of the work has actually been done. 20% if it is an uncharacteristically completest lab. There are a significant number of "startups" dying on the vine because of this fundamental error.

Another problem with above of course, there is no such thing as "presto AI".

Re: $100 robot kit running ROS2 and Navigation2

#18
This uses an ESP32 MCU.

A naive question -- does that mean if I picked up one of those cheap 2-wheel robot kits from ebay (that includes wheels, board, risers, but no MCU) for ~ A$20 -- I could, in theory, turn it into a ROS-capable system by somehow adding in an ESP32-on-a-board?

(I've got about as much experience / understanding of ROS as most of the other people asking questions on this thread : )

Being in Australia, that 'under $100' is far from it - and the pathway to cheap discovery with some basic robotics is moderately opaque.

Re: $100 robot kit running ROS2 and Navigation2

#19

I'm really struggling in learning ROS in a systematic way. The tutorials are all over the place and somehow unorganized IMO. When trying to replicate stuff on my machine, all kinds of weird errors pop up. Honestly, I don't even get what ROS is about? Like it seems it is an "amalgamation" of tools and scripts to create a general API with some ideas of robotics application in mind. Also the naming of its stack seems we…

[deleted]

Re: $100 robot kit running ROS2 and Navigation2

#20

The thing with ROS is… it's pretty good at what it sets out to do. It's a common framework that everything in the robotics universe can speak to, has some amazing tooling, and handles many tedious things that robotics experts shouldn't have to care about. It does broadly achieve this. But from my perspective as a generalist software engineer who isn't a low-level robotics expert – as an ecosystem, it seems to have ad…

Eeyup. I've seen a few companies with a prototype built on ROS and they universally struggle to get it from a basic demonstrator to a production system until they ditch ROS because it's just so poorly engineered. Everything you gain in the short term from having a nicely integrated system with a bunch of existing libraries gets more than offset by how buggy, difficult to debug, slow, and incomplete each part of it is, relative to basically any other alternative. Especially because it defaults to a distributed system which basically takes your existing problem and makes many new and exciting ones to go along with it (and neither ROS nor most of its users/developers are well equipped to solve distributed problems reliably).
Post reply on HN