<> = API per functionality = ''For a list of common ROS repositories, see the [[RecommendedRepositoryUsage/CommonGitHubOrganizations|ROS GitHub Organizations]].'' ROS supports several [[Client Libraries]], though the main supported libraries are C++ [[roscpp]] and [[rospy]]. There are also numerous ROS [[Stacks|stacks]] and [[Packages|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|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|{{https://docs.google.com/drawings/d/1N3skvSyzZj_dWzCqwEfsNd3gtwTNGFDwpm_TM__Vk2s/pub?w=2312&h=1050||width=120%}}]] Note: * Packages are subjectively chosen from "[[http://www.ros.org/browse/list.php?package_type=package&distro=indigo|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 [[https://docs.google.com/drawings/d/1N3skvSyzZj_dWzCqwEfsNd3gtwTNGFDwpm_TM__Vk2s/edit|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?)