Robotics is the science of designing, developing, and using Robots. Robots are developed for a variety of reasons ranging from aiding in repetitive manufacturing processes, medical uses as performing surgeries, working in dangerous and hazardous environments as in space or under water or cleaning areas contaminated with nuclear radiation. Robots also can be companions for elderly people, and there are many more fields of usage.
In the following list, we take a look at the top Free and Open Source Robotics Frameworks that are available today.
ROS (Robot Operating System) is an open source framework for writing robot software. It started in 2007 with the goal of simplifying the process of creating complex robot behavior across a wide variety of robotic platforms. It is licensed under the permissive BSD license.
ROS has a lot of components. At the lowest level, it has a communication infrastructure which offers Message Passing, Recording and Playback of Messages for asynchronous communications, Remote Procedure Calls for synchronous communications, and Distributed Parameter System which provides a way for tasks to share configuration information.
ROS provides common robot-specific libraries and tools. Some examples of libraries are Robot Geometry Library which keeps track of where different parts of the robot are with respect to each other, Robot Description Language, Diagnostics, Pose Estimation, Localization, and Navigation.
ROS has powerful development tools which support introspecting, debugging, plotting, and visualizing the state of the system being developed. There are more than 45 command-line tools and some GUI tools as rviz (3D visualization) and rqt (for developing graphical interfaces for your robot).
ROS provides powerful integration with other open source libraries as OpenCV, MoveIt, Gazebo, ROS-Industrial, and PCL (Point Cloud Library).
YARP (Yet Another Robot Platform) is an open source software, written in C++, which supports building a robot control system by handling the communication between sensors, actuators and processors. It suitable specially for humanoid robots.
YARP provides many command- line and GUI tools as yarpmanager (for running and managing multiple programs on a set of machines), yarpmotorgui (for moving all the joints of a robot with sliders), yarpdataplayer (for replaying recorded data), and yarpviz (for profiling and visualizing YARP network).
MRPT (Mobile Robot Programming Toolkit) is an open source collection of applications and libraries written in C++ which cover data structures and algorithms employed in common robotics research areas as Computer Vision, Motion Planning, and Simultaneous Localization and Mapping (SLAM). It is licensed under BSD license.
Some examples of libraries and applications included in MRPT are mrpt-kinematics (classes for defining and managing the kinematics of robotic arms), mrpt-detectors (a set of generic computer-vision-based detectors), mrpt-graphslam (basic graph-SLAM algorithms), graphslam-engine (performs 2D graph-slam), grid-matching (executes occupancy grid matching techniques), and robotic-arm-kinematics (a useful tool for teaching and learning the basics of robotic arm kinematics).
Gazebo is a free open source 3D Robot Simulator. It offers the ability to accurately and efficiently simulate populations of robots in complex indoor and outdoor environments and provides realistic rendering of environments including high-quality lighting, shadows, and textures.
It offers Dynamics Simulation by accessing multiple high-performance physics engines as ODE, Bullet, Simbody, and DART. It can run simulation on remote servers. It has extensive command-line tools, and you can develop your own custom plugins which have direct access to Gazebo's API.
OROCOS (Open Robot Control Software) is an open source collection of C++ libraries for advanced machine and robot control. These libraries are KDL (Kinematics and Dynamics Library), BFL (Bayesian Filtering Library), and The Orocos Toolchain.
KDL (Kinematics and Dynamics Library) provides class libraries for geometrical objects (point, frame, line,... ), kinematic chains of various families (serial, humanoid, parallel, mobile,... ), and their motion specification and interpolation.
BFL (Bayesian Filtering Library) provides an application independent framework for inference in Dynamic Bayesian Networks.
The Orocos Toolchain enables you to create real-time robotics applications using modular, run-time configurable software components. It is cross-platform (Windows, macOS, and Linux). It provides logging and reporting of system events, and offers extensions to other robotics frameworks as ROS and YARP.
There is a lot of effort put in these frameworks, and they are most importantly actively developed, and have active communities. There are other good frameworks like Player Project, and CARMEN but they are not actively developed anymore.