YARP stands for Yet Another Robot Platform. What is it? If data is the bloodstream of your robot, then YARP is the circulatory system.
- Source code: https://github.com/robotology/yarp
- File an issue: https://github.com/robotology/yarp/issues/new
More specifically, YARP supports building a robot control system as a collection of programs communicating in a peer-to-peer way, with an extensible family of connection types (tcp, udp, multicast, local, MPI, mjpg-over-http, XML/RPC, tcpros, ...) that can be swapped in and out to match your needs. We also support similarly flexible interfacing with hardware devices. Our strategic goal is to increase the longevity of robot software projects.
YARP is not an operating system for your robot. We figure you already have an operating system, or perhaps several. Nor does it do package management (we like the package managers we have). We're not out for world domination. It is easy to interoperate with YARP-using programs without yourself necessarily having to use YARP codebase – see the YARP without YARP tutorial. YARP is written in C++. The ACE library is used for Windows builds, and to support extra protocols. On Linux and macOS, ACE can optionally be omitted, giving a very light footprint (with the trade-off being the loss of support for some non-TCP-based protocols). YARP is free and open, under the LGPL (*).
Getting set up:
The basics of using YARP:
- Compiling a YARP hello world program
- YARP Tutorials
- Getting Started with YARP Ports
- Getting Started with YARP Devices
- YARP data directories
Command line tools:
- yarp: the main YARP command-line interface
- yarpserver: the YARP name server
- yarpdev: the standard YARP device utility
- yarprobotinterface: start all the devices required by a robot
- yarprun: run programs on a set of machines
- yarp-config: the yarp-config tool
- yarpdatadumper: the YARP data recorder
- yarpdatadumperAppGenerator: Generate yarpmanager applications for yarpdatadumper
- yarphear: listen to YARP audio streams
- yarplogger-console: visualize log from YARP programs
- yarpmanager-console: run and manage multiple programs on a set of machines
- yarpidl_rosmsg
- yarpidl_thrift
- yarpros
GUIs:
- yarplogger: visualize log from YARP programs
- yarpview: visualize YARP images
- yarpscope: visualize the numerical content of a port
- yarpmanager: run and manage multiple programs on a set of machines
- yarpmanager++: edit, run and manage multiple programs on a set of machines
- yarpdataplayer: replay recorded data
- yarpmotorgui: move the joints of a robot
- yarpbatterygui: visualize battery information
- yarplaserscannergui: visualize data from a laser scanner
Interoperability:
- YARP without YARP
- Using YARP with ROS
- Using YARP from python, java, ruby, C#, and other languages
- Port monitoring and arbitration using the portmonitor carrier
More information:
YARP resources:
Related links:
Papers:
[1] A middle way for robotics middleware, Fitzpatrick, P., Ceseracciu, E., Domenichelli, D., Paikan, A., Metta, G., and Natale, L., Journal of Software Engineering for Robotics, 5(2): 42-49, 2014. [pdf]
[2] Data Flow Port's Monitoring and Arbitration, Paikan, A., Fitzpatrick, P., Metta, G., and Natale, L., Journal of Software Engneering for Robotics, vol. 5, no. 1, pp. 80-88, 2014. [pdf]
[3] Towards Long-Lived Robot Genes, Paul Fitzpatrick, Giorgio Metta, and Lorenzo Natale, Robotics and Autonomous Systems, 56(1):29-45, 2008. [pdf]
[4] YARP: Yet Another Robot Platform, Giorgio Metta, Paul Fitzpatrick, and Lorenzo Natale, International Journal of Advanced Robotic Systems, 3(1):43-48, 2006. [pdf]
(*) Certain optional plugin devices, carriers, or libraries are under the GPL.