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…
$100 robot kit running ROS2 and Navigation2
21–30 of 30 posts
Re: $100 robot kit running ROS2 and Navigation2
#22I'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…
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
#23This 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…
Re: $100 robot kit running ROS2 and Navigation2
#24Re: $100 robot kit running ROS2 and Navigation2
#25Re: $100 robot kit running ROS2 and Navigation2
#26I'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…
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
#27I'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…
Re: $100 robot kit running ROS2 and Navigation2
#28The 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…
Re: $100 robot kit running ROS2 and Navigation2
#29The 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…
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
#30In 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.