Robot Operating System (ROS) is an operating system particularly designed to build robots. It offers product developers and hardware engineers the ability to develop robotic applications faster by utilizing features specific to a robotic system that do not come with a standard operating system.
In this edition of Product Insights, we will attempt to learn what ROS is, what its different versions are, and finally the e-con Systems’ cameras compatible with ROS.
What is ROS (Robot Operating System)
ROS provides developers with a set of open-source software frameworks, libraries, and tools to create applications for robots. It is in fact a meta-operating system, something between an operating system and a middleware.
ROS provides a range of features that come with a standard operating system such as hardware abstraction, device control, implementation of functionalities, message-passing between processes, and package management. The processes are represented in a graph architecture where processing occurs in nodes that may receive, post, and multiplex sensor data, including control, state, planning, actuator, and more.
Why ROS (Robotic Operating System)?
Every robotics developer and robot designer – before the advent of ROS – would spend a considerable amount of time designing the embedded software within a robot, as well as the hardware itself. This required skills in mechanical engineering, electronics, and embedded programming. Typically, the programs engineered this way were more akin to embedded programming and electronics than they were to robotics. For instance, we might encounter this in service robotics a lot nowadays, where there is significant re-use of programs, as they are strongly linked to the underlying hardware.
The main objective of ROS is to avoid continuously reinventing the wheel, and to offer standardized functionalities that perform hardware abstraction, just like a conventional operating system This is also one of the reasons why ROS has an analogous name to operating systems used in PCs.
ROS works by combining expertise from different disciplines. Designing and programming a robot involves managing the hardware by writing drivers, memory, processes, concurrency, parallelism, and data merging. ROS also provides abstract reasoning algorithms, making the application of artificial intelligence possible in robotic systems. Robotics, therefore, requires very different skill sets, typically beyond the capability of a single individual. ROS lowers the technical competency required for engineers to work on robotics projects by offering all the necessary tools to build a fully functional robotic device. This makes it easier for many companies to get started in robotics, or to design complex robotic systems quicker. This in a way has led to many companies starting up in the robotic space by developing robots that find innovative applications in a wide variety of industries.
ROS programming language
ROS is language-independent. Currently, three main libraries have been defined for ROS, making it possible to program ROS in Python, Lisp or C++. In addition to these three libraries, two experimental libraries are also offered. This enables the programing of ROS in Java or Lua as well.
New version of ROS (Robotic Operating System)
Now that we understand the basics of ROS and its advantages, let us dive deep into the new version of ROS, which is ROS 2.
ROS 2
ROS 2 is the updated version of ROS 1. It is developed with an intention to overcome the disadvantages of ROS 1. While it still offers the core functionalities available in ROS 1, it brings many improvements, the most notable of which is Data Distribution Service (DDS) support. DDS acts as a middleware for internode communication. It uses the quality-of-service (QoS) profile to provide real-time communication, scalability, performance enhancement, and security benefits not found native in ROS 1.
As with ROS 1, ROS 2 can take advantage of the same packages, libraries, and tools for increased functionality, including Gazebo, Navigation, rosbag, and more. The ability to increase communication between nodes via the DDS middleware makes ROS 2 the preferred choice and is the primary reason for ROS 1’s retirement.
Adding more features and functionalities to the standard Robot Operating System addresses its stability problems. This is why the team at Open Robotics decided to build a new ROS from scratch, with interim and LTS versions released regularly every few years. It makes sense as the original ROS was designed for academic projects, and ROS 2 was created for commercial projects as its hardware became more affordable.
The following table illustrates some of the most popular versions of both ROS 1 and ROS 2
Ubuntu release ROS distribution | ROS 2 distribution |
Ubuntu 16.04 – Kinetic | Bouncy & Crystal |
Ubuntu 18.04 – Melodic | Eloquent Elusor |
Ubuntu 20.04- Noetic Ninjemys | Foxy Fitzroy |
NVIDIA Isaac ROS
The NVIDIA® Isaac ROS GEMs are hardware accelerated packages that make it easier for ROS developers to build high-performance solutions on NVIDIA hardware. Here, let us look at the features of the Isaac ROS.
High throughput perception
Isaac ROS GEMs provide packages which include image, computer vision, and DNN processing that are highly optimized for NVIDIA GPUs and Jetson processors.
Modular and flexible packages
Modular packages allow ROS developers to take exactly what they need to integrate into their application. This means that they can replace an entire pipeline or simply swap out an algorithm.
Reduced development times
Isaac ROS GEMs are designed and tested to be similar to existing and familiar ROS nodes making them easier to integrate with existing applications.
The image, computer, and DNN processing functionalities of the NVIDIA Isaac ROS are key ingredients to delivering high performance perception in AI-based ROS robotics applications. The following diagram illustrates the architecture of the NVIDIA Isaac ROS:
Figure 1 – Architecture of NVIDIA Isaac ROS
Isaac ROS gives support for developers to work in the fields of Visual SLAM, 3D scene reconstruction, DNN inference processing and image processing.
e-con Systems cameras compatible with ROS
All of e-con Systems’ Sony camera modules are compatible with the NVIDIA Isaac ROS. Following is the list of Sony camera modules offered by e-con Systems:
- e-CAM160A_MI298_MOD – 16MP Sony IMX298 AutoFocus Camera module
- e-CAM83_CUMI415_MOD – Sony® STARVIS™ IMX415 Low light Camera Module
- e-CAM84_CUMI485C_MOD – Sony® Starvis™ IMX485 Ultra-Lowlight Camera Module
- e-CAM220_CUMI327_MOD – Full HD Sony IMX327 Ultra-Lowlight Camera Module
- e-CAM221_CUMI462_MOD – Sony® Starvis™ IMX462 Ultra-Lowlight Camera Module
- e-CAM21_CUMI290_MOD – 2MP Sony STARVIS® IMX290 ultra-lowlight Camera Module
- e-CAM27_CUMI290_MOD – 2MP Sony STARVIS® IMX290 ultra-lowlight Camera Module
- e-CAM120_CUMI412C_MOD – Sony® Starvis™ IMX412 Camera Module
Any of e-con’s V4L2 cameras are also compatible with different versions of Robotic Operating System. Please visit the Camera Selector to have a look at the complete portfolio of cameras from e-con Systems. If you are looking for help in integrating cameras into your robotic systems or any camera-enabled embedded device, please write to us at camerasolutions@e-consystems.com. You could visit our markets page to learn about the various markets and applications we serve.
Hope this blog threw some light on the basics of ROS, its different versions, and the cameras from e-con Systems that are compatible with ROS. This article is part of a series where we will continue to publish more content on ROS. Keep following our blog and social media posts to get updates on the latest content we publish.
Vinoth Rajagopalan is an embedded vision expert with 15+ years of experience in product engineering management, R&D, and technical consultations. He has been responsible for many success stories in e-con Systems – from pre-sales and product conceptualization to launch and support. Having started his career as a software engineer, he currently leads a world-class team to handle major product development initiatives