Robot Operating Sys...
Clear all

Robot Operating System for the DronebotWorkshop Builders. Part 0

5 Posts
4 Users
Joined: 5 years ago
Posts: 113
Topic starter  

What is Robot Operating System (ROS)? It is a system for making it easier to reuse work you or others have already done when programming your robot. In the next couple of sections we will compare and contrast Robot Operating System with the more commonly understood Computer Operating System.

What ROS Is

At its core, ROS encourages and provides five things:

1. Conventions – Many people have written software for Robots. Over time, best practices and conventions have evolved to solve different types of common problems.

2. Modular Design - One of these best practices split the design and implementation of your software into modules. These modules can though about independently of the rest of the system. ROS calls these modules NODES.

3. Messaging System – A modular design requires a system for communicating between the various modules. A large part of understanding ROS is understanding the messaging system

4. Common Tools – Over time, a collection of tools has evolved to enable developers to design, test, and debug their robots. Many of these are visualization tool which enable you to ‘see’ how some part of your robot is working instead of trying to watch a list of numbers go scrolling by.

5. Implementations of common algorithms and services. Many modules have been written to do various common tasks. These modules ranges from ‘drivers’ which enable you to plug your favorite sensor into ROS to complex to do Localization and navigation for you.

6. Community – There is pretty activity community around ROS which writes new code and helps each other through various web forums.

What ROS is NOT:

When learning ROS, it is as important to understand what it is not so you can manage your expectations:

1. Polished System - ROS is not a completely unified system with a polished GUI like we have grown to expect from Computer Operating Systems such as Linux, Mac OS, or Windows. Much of the current development is happening at the ‘tool’ level rather than the UI Level

2. Plug and Play – You can not just boot up ROS on your robot and be off and running. Instead, you have to build you system match you hardware and meet your particular needs.

3. A Computer OS – ROS is not a computer Operating System. It is an additional layer installed on top of of an existing OS. It is most common to run ROS on top of Ubuntu or Raspian.

4. Stable – The technology around robotics is changing rapidly. As the underlying technology changes, ROS, the glue layer, must change as well.

To Use or Not To Use

To be honest, I don’t know. The series is not in any way meant to convince you to use ROS. There are some situations where it is beneficial and other situation where it is not.

1. ROS can be difficult to set up and learn. When you are first learning the electronics, mechanics, and programming to create a robot ROS is just another thing a ToDo list.

2. ROS can add complexity to an already complex subject. When you are just learning to do something simple like turning both wheels 360 degrees in order to go forward it is easier to just program things yourself. On large robots some manufactures make the valid point that the abstraction layers make the end product more brittle.

3. ROS can be a wormhole into another fascinating aspect of Robotics. You can waste a lot of time on the ROS Wiki.

Hopefully though this series and an attempt to build a ROSified version of DB1 in parallel with Bills DB1 you will be ready to make the decision whether or not to use ROS or not on your next project.

Workshop Guru Admin
Joined: 5 years ago
Posts: 1043

This is another excellent ROS post twobits.  It would be great if you would continue this series.

As ROS is such an important topic I have created a new sub-forum for ROS posts.  I have moved this post, as well as your previous one, to the new sub-forum. 

"You can waste a lot of time on the ROS Wiki" - never were more truthful words spoken!  





"Never trust a computer you can’t throw out a window." — Steve Wozniak

No Title
Joined: 5 years ago
Posts: 1111

@twobits - looking forward to your continuing info on ROS.   I was put off ROS for the very point you raised about yet another learning curve and I could find some good examples of Arduino C or Python code for my purposes. (not least on Dronbot Workshop ? )  I rather got the impression that ROS complexities may be good for flying drones but perhaps not so relevant for wheeled robots.   I look forwards to getting a proper insight into ROS and will follow your series avidly. 

Joined: 5 years ago
Posts: 113
Topic starter  


I think we are all looking for something like Ubuntu. We can download an image, copy it to a flash drive, and install it on our computer. Away we go

Instead we are met with all 339 pages of Linux From Scratch.

Robo Pi
Robotics Engineer
Joined: 5 years ago
Posts: 1669
Posted by: twobits


I think we are all looking for something like Ubuntu. We can download an image, copy it to a flash drive, and install it on our computer. Away we go

Instead we are met with all 339 pages of Linux From Scratch.

In the case of ROS that might be a very good thing.   You'd only need to include the functions that your robot system actually uses.    This prevents having a whole lot of redundant ROS on your system that basically serves as nothing more than bloatware (i.e. a lot of complex software that you aren't even using).

In the case of Linux.   If I were going to build Linux from scratch I would leave a ton of it out.  My finished OS would be Linux SUPER LITE. ?  It would only contain the functionality that I use and nothing more.

Edited to Add:

By the way, if this is an analogy for what ROS is like that actually helps a lot.   I also find this to be more attractive than just filling my computer up with a ton of redundant ROS software that I would never use.




DroneBot Workshop Robotics Engineer