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

ROS

ROS

roscpp

rospy

Basic Datatypes

common_msgs

common_msgs

common_msgs

Manipulating message streams

topic_tools

message_filters

message_filters

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

driver_common

driver_common

Filtering data

filters

3D processing

laser_pipeline, perception_pcl

laser_pipeline, perception_pcl

Image processing

image_common, image_pipeline, vision_opencv

vision_opencv

Transforms/Coordinates

tf, tf_conversions, robot_state_publisher

tf, tf_conversions

Actions

actionlib

actionlib

actionlib

Executive/Task Manager

executive_smach

executive_smach

Navigation

navigation

via actionlib

via actionlib

Simulation (2D)

simulator_stage

simulator_stage

Simulation (3D)

simulator_gazebo

simulator_gazebo

Robot Model

robot_model

Realtime Controllers

pr2_controller_manager

pr2_controller_interface, realtime_tools

Motion planning (arms)

ompl, chomp_motion_planner, sbpl

actionlib through move_arm

actionlib through move_arm

Humanoid walk

walk_msgs

walk_interfaces

Packages in Layered Layout

More slide-friendly layout of ROS packages in a layered manner.

https://docs.google.com/drawings/d/1N3skvSyzZj_dWzCqwEfsNd3gtwTNGFDwpm_TM__Vk2s/edit

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?)

Wiki: APIs (last edited 2016-03-22 18:09:26 by IsaacSaito)