The Robot Operating System (ROS) is an open source collection of software frameworks and provides capabilities that you would expect from an operating system, like hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. ROS is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms by encouraging collaborative robotics software development. For example, one laboratory might have experts in mapping indoor environments, and could contribute a world-class system for producing maps. Another group might have experts at using maps to navigate, and yet another group might have discovered a computer vision approach that works well for recognizing small objects in clutter. ROS was designed specifically for groups like these to collaborate and build upon each other’s work.
With this, the primary goal of ROS becomes to support code reuse in robotics research and development and it is all open source! The Open Source Robotics Foundation (OSRF) made ROS available to a wider developer community by porting ROS libraries to the ARM instruction set architecture owing to which Snapdragon and other ARM-based chipsets have become a lot more interesting. It thus becomes possible to have SMART Wireless platforms as the main computing device on a robot. A simple representation of a robot for computer vision purposes is shown below.
At the core is our Snapdragon 820 based platform for which we provide a complete Debian Linux software package with support for all on-board peripherals. The input and output devices (I/O) are grouped below this core. OpenGL is an open source API used for rendering 2D and 3D vector graphics. The Point Cloud Library (PCL) is a stand-alone C++ library for 3D point cloud processing and is very useful in the ROS ecosystem.