<> ## START ## <> <> == Overview == A ROS client library is a collection of code that eases the job of the ROS programmer. It takes many of the [[ROS/Overview|ROS concepts]] and makes them accessible via code. In general, these libraries let you write ROS [[Nodes|nodes]], publish and subscribe to [[Topics|topics]], write and call [[Services|services]], and use the [[Parameter Server]]. Such a library can be implemented in any programming language, though the current focus is on providing robust C++ and Python support. == Main client libraries == * [[roscpp]] : roscpp is a C++ client library for ROS. It is the most widely used ROS client library and is designed to be the high performance library for ROS. * [[rospy]]: rospy is the pure Python client library for ROS and is designed to provide the advantages of an object-oriented scripting language to ROS. The design of rospy favors implementation speed (i.e. developer time) over runtime performance so that algorithms can be quickly prototyped and tested within ROS. It is also ideal for non-critical-path code, such as configuration and initialization code. Many of the ROS tools are written in rospy to take advantage of the type introspection capabilities. The ROS Master, roslaunch, and other ros tools are developed in rospy, so Python is a core dependency of ROS. * [[roslisp]]: roslisp is a client library for LISP and is currently being used for the development of planning libraries. It supports both standalone node creation and interactive use in a running ROS system. == Experimental client libraries == * [[roscs]]: roscs is a client library for Mono/.NET. It can be used by any Mono/.NET language, including C#, Iron Python, Iron Ruby, etc. The ROS build system will create .DLL and .so files for each package written in roscs. * [[roseus]]: roseus is a client library for [[euslisp|EusLisp]] language. * [[rosgo]]: pure implementation in [[http://golang.org/|Go]] * [[https://github.com/acowley/roshask|roshask]] is the client library for Haskell. * [[rosjava]]: rosjava is an implementation of ROS in pure-Java with Android support. * [[rosnodejs]]: rosnodejs is a native ROS Javascript client library for Node.js providing a direct means of communication with a networked ROS Master. * [[https://github.com/phobon/RobotOS.jl|RobotOS.jl]] is a native [[http://julialang.org|Julia]] package that wraps [[rospy]]. * [[roslua]]: roslua is a client library for Lua, which is a light-weight yet powerful, embeddable scripting language. The client library is currently in an experimental and active development stage. * [[http://car.mines-douai.fr/category/pharos/|PhaROS]] is a client library under MIT Licence for the [[http://pharo-project.org/|Pharo]] free Smalltalk language. * [[rosR]]: rosR is a ROS language extension for the statistical programming language [[http://www.r-project.org/|R]]. * [[rosrust]]: Rust language bindings in a crate [[https://github.com/adnanademovic/rosrust|rosrust Github]] [[https://crates.io/crates/rosrust|rosrust Crate]]. * [[rosruby]]: support for [[https://www.ruby-lang.org/fr/|ruby]] * [[Unreal-Ros-Plugin]]: A unreal plugin use rosbridge for receiving/sending ros topic https://github.com/xuhao1/Unreal-ROS-Plugin * [[https://www.mathworks.com/help/robotics/robot-operating-system-ros.html|ROS-MATLAB Interface]]: A library of functions to connect to ROS from[[https://www.mathworks.com/products/matlab.html|MATLAB]]® via [[https://www.mathworks.com/products/robotics.html|Robotics System Toolbox]]™. * [[https://www.mathworks.com/help/robotics/ros-access-with-simulink.html|ROS-Simulink Interface]]: Set of __[[https://www.mathworks.com/products/simulink.html|Simulink]]__® blocks to connect to ROS and deploy ROS nodes from __[[https://www.mathworks.com/products/simulink.html|Simulink]]__® via [[https://www.mathworks.com/products/robotics.html|Robotics System Toolbox]]™. * [[https://github.com/gstavrinos/ROS.jl|ROS.jl]]: A C++ wrapper for [[https://julialang.org/|Julia]]. See also: [[Implementing Client Libraries]] ## FINISH ## == Next == [[ROS/Technical Overview|Technical Overview]]