Contents
API per functionality
For a list of common ROS repositories, see the ROS GitHub Organizations.
ROS supports several Client Libraries, though the main supported libraries are C++ roscpp and rospy. There are also numerous ROS stacks and packages that provide higher-level functionality. Support for higher-level functionality in various languages is summarized below.
APIs
ROS: functionality available via ROS topics and services
C++: functionality available in C++ libraries
Python: functionality available in Python modules/packages
API |
ROS |
C++ |
Python |
Basic Datatypes |
|||
Manipulating message streams |
|||
Drivers |
joystick_drivers, camera_drivers, laser_drivers, audio_common (aka sound_drivers), imu_drivers |
joystick_drivers, camera_drivers, laser_drivers, audio_common, imu_drivers |
|
Driver Implementation |
|
||
Filtering data |
|
|
|
3D processing |
|
||
Image processing |
|
||
Transforms/Coordinates |
|
||
Actions |
|||
Executive/Task Manager |
|
||
Navigation |
via actionlib |
via actionlib |
|
Simulation (2D) |
|
||
Simulation (3D) |
|
||
Robot Model |
|
|
|
Realtime Controllers |
|
||
Motion planning (arms) |
|||
|
Packages in Layered Layout
More slide-friendly layout of ROS packages in a layered manner.
Note:
Packages are subjectively chosen from "Browsing packages for indigo" page. Original author has no intention to omit any packages due to his personal reason.
You can zoom this diagram, or edit on Google Drive.
Improvements/corrections for the package grouping diagram
Particularly following may require improvements/corrections (please remove the lines when addressed):
- There should be so many more notable packages in the application layer.
Maybe too much focus put on navigation and MoveIt!?
- Some pkgs in "Comm layer" are not really communication purpose.
- RViz and rqt may better be drawn larger considering how well they are used?
- Cosmetics (coloring?)