Robot Systems: Software Stack Overview

When you build your own robot, you need to make two essential decisions: Its hardware and software. My background is software development, so I will start to investigate the design questions for my robot from that direction as well.

This article summarizes my research results into robotic software. It is by no means complete, and it also does not rate the software projects. See it as a comprehensive and reason list of choices that you can consider when starting your own project.

This article originally appeared at my blog.

Groups of Software

Before detailing the concrete software packages, let’s consider to which categories the software can be grouped:

Robotic Middleware

The middleware abstracts a robot as a moving and operating entity. It also helps to establish common protocols for message exchanging between different computers, e.g. a workstation, and coordination, e.g. of multiple robots working towards a shared goal. The middleware is like the operating system of your robot: Enabling the overall system to work and connect to other systems.

ROS

ROCK

YARP

IsaaC SDK

JohnnyFive

Motor Controllers

In a robot, electric motors are most often used. Motors serve the purpose of moving the robot itself, and they can be used to move an arm or other means for interactions with the environment.

The following software examples list very concrete motor controlling software for the Arduino microcontroller.

L293D DC Motor

L293D Stepper Motor

L293 Servo Motor

Navigation

Navigation software includes libraries that help to make an abstract model of the surrounding environments. And with this model, algorithms will detect and dynamically apply path finding algorithms to reach a designated target.

The following software contains again very specific libraries for the ROS middleware. Take these libraries as examples about the type of abstractions that a robot needs to make.

ROS SLAM Gmapping

ROS TF

ROS Odometry

Machine Learning

This category contains libraries that help the robot to become better in different aspects of robotics: Image detection, language understanding, or just plain machine learning itself.

Image AI

Snowboy Hotword Detection

TensorFlow

Keras

OpenCV

Sensors

Reading data from sensors is just one part of the coin. The other one is to make the data parseable for your robot. The following libraries are examples from the ROS middleware.

Video Streaming

ROS TF Library

ROS rpLIDAR

Control

This category includes software that enables direct control for your robot.

ROS Teleop

DTMF Controll

Bluetooth Controll

Conclusion

This article gave an overview about Robotics software. Starting from the robotic middleware, continuing with motor and navigation, to sensors and machine learning. By no means is this list complete — it is a selection of libraries that I encountered during my research and found interesting to investigate and present. The next article explains robotic hardware

IT Project Manager & Developer