Live data from Hacker News

$100 robot kit running ROS2 and Navigation2

blog.hadabot.com

21–30 of 30 posts

Re: $100 robot kit running ROS2 and Navigation2

#21

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…

Robotics founder here. Never used ROS. I would avoid it unless there is a clear need. Once you are on expensive third party hardware plus ROS, you are guaranteed to have no USP.

Re: $100 robot kit running ROS2 and Navigation2

#22

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…

So, if you really want to learn ROS, I recommend the classes at the Construct (no affiliation): https://www.theconstructsim.com/robotigniteacademy_learnros/... While not “free”, they have been the best I found to date.

That said, as said elsewhere, you should ask why you are trying to learn ROS. For research and academia, it’s great as you get a solid collection of tools/tooling that mostly works out of the box.

However, when looking at creating a product from it... think through the benefits. Much like any framework, even if there is no “cost”, there will always be a real cost in dealing with its complexity. So think through your use case, and design to that.

Re: $100 robot kit running ROS2 and Navigation2

#23
post #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 Austral…

I think there’s a github repo that may or may not compile to make ESP32 talk ROS2 message protocols, and that would be the entirety of ROS2 that fits in an ESP32 anyway, so the answer is a yeah

Re: $100 robot kit running ROS2 and Navigation2

#26

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…

(Disclaimer: I contribute to ROS in my day job) As someone who has been working on ROS for a living and spent the past 3 years in research labs ROS does seem very scary. The ROS website itself is in need of an overhaul with better tutorials. Part of the reason why a beginner coming in may also get lost is that there are many very advanced tools and libraries for concepts which are foreign to software engineers. Take the TF library for instance which you mention - its goal is to calculate transforms, but unless you are deep into robotics you may find it difficult to understand why it is used in so many places. The fact is ROS provides an extremely comprehensive set of APIs, but why those APIs are useful is not immdiately clear unless you actually build robots.

If you are an absolute beginner here are some tips:

The core of ros is a message bus. Its aim is to provide a messaging layer, not unlike what one would get with mqtt. However, ros's message bus has been designed to be distributed and quite frankly has better performance than mqtt on an edge device. It also has a good set of tools that allows you to visualize errors.

Each ros program is called a node. Think of it like microservices. Why do we do this? Well first of all it provides modularity so we can swap out components. It also provides a certain amount of resiliency to your robot. So suppose one node on your robot dies, the whole thing will not come crashing down.

In addition to the ros messaging bus, there are tools like rosbag, which provides users with a super simple way to log sensor data and share it across runs. There are also tools like rviz which help you visuallize the robot's data. These tools are very useful when you are dealing with 3D data coming from LiDARs or depth cameras, however it probably is not needed when your robot is a simple line follower.

Once your familiar with these you should look at the TF library which deals with transforms. Transforms are central to robotics however it does take time to get a good grasp on them. At this point I recommend you take some MOOC to help fill the gap in knowledge.

MoveIT! is designed for robots with multiple joints like robot arms.

For wheeled robots and obstacle avoidance you probably want to look at move_base and nav2 packages. Movebase is the old package for obstacle avoidance on ground robots. It is a bit of a pain to work with. I strongly recommend you use Nav2 instead which is far superior and better documented and the successor to move_base.

tl; dr: Robotics is hard. There is no royal road to it.

Re: $100 robot kit running ROS2 and Navigation2

#27

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…

This is one of the best primers / courses in ROS around. Start at the top and just go straight down the list in the first section. Most of section 3 is unrelated to the ROS content and is general dev reference.

http://nu-msr.github.io/embedded-course-site/index.html

Re: $100 robot kit running ROS2 and Navigation2

#28

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…

I agree from my own painful experience, which makes the OP more impressive. I once tried to get the navigation stack running on a raspberry pi based robot to test out a gps driver, and was shocked that I had to include massive libraries for lidar and point clouds that I had no intention of using to get anything to build. In the end everything ran but the nav stack ate up so many resources that my robot wasn’t able to move reliably.

Re: $100 robot kit running ROS2 and Navigation2

#29
post #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…

This is my life right now: reckoning with optimizing a ROS1-based system that was itself hacked together in record time.

ROS seems almost like it wants to distribute state by default. And it has no primitives for sanely managing distributed state, health checks, etc. The lego brick approach to camera drivers is great, but trying to orchestrate all those bricks is a nightmare. Rosparam/master is woefully inadequte as a control plane.

I recommend anyone in this space look at tools like Consul.

Re: $100 robot kit running ROS2 and Navigation2

#30
Another perspective on the question "what is ROS?", having worked with countless ROS nodes:

In a nutshell, ROS is a library that allows you to send and receive messages.

The two most used methods in the API are Subscriber.subscribe(message_topic, callback) and Publisher.publish(message)

For example, a sensor driver will publish a message containing a camera image, then a node will receive a message, detect the people in it, and send another message with their positions. Another node will receive the positions message and calculate a desired action, and send that as a message. You can write your own node which captures any kind of message and publishes any other kind, making things very modular.

So ROS also contains a million tools to help you process the messages, for example the Time tools allow you to set timers and convert time stamps, the rosbag tools allow you to store the messages and replay them later, the tf tools allow you to transform geometrical objects between message reference frames, and so on...

Many of the tools do their job well, the main issue is documentation. In some cases, the best way to figure out what can/should be done is to look at existing code.

Post reply on HN