YARP stands for Yet Another Robot Platform. What is it? If data is the bloodstream of your robot, then YARP is the circulatory system.
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 BSD-3-Clause license [*].
The general philosophy that has guided the development of YARP is described in [1], [2] and [3], while [4] and [5] describe some recent development (Port Monitor).
Performances are fundamental in robotics. YARP provides features that allow developers to assign priorities to individual connections. We call this channel Channel Prioritization. Experimental validation demonstrated that these features allow reducing communication latency and improves determinism for selected channels in a YARP network [6] and [7].
[*] Certain optional devices, carriers, tools or libraries are not licensed under the BSD-3-Clause.
The best way to learn how to use YARP is to read the tutorials and documentation pages that are reported in the page Tutorials. Do not forget to checkout the command line tools and guis sections below. Advanced topics for interoperability and technical papers are reported at the end of this page. The page Tutorials is continuously updated so it is a good idea to periodically check it.
A comprenshive list of all yarp command tools is provided here: Yarp tools
Here is a list of the main executables:
A comprenshive list of all yarp command GUIs is provided here: GUIs
Here is a list of the main executables: