forked from robotology/yarp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.dox
157 lines (127 loc) · 6.82 KB
/
main.dox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
* Copyright (C) 2010-2016 RobotCub Consortium, Istituto Italiano di Tecnologia (IIT)
* CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT
*/
/**
\mainpage Welcome to YARP
\tableofcontents
<img src="yarp-logo-name.png" id="yarp-logo">
\image latex yarp-logo-name.png height=128px
YARP stands for Yet Another Robot Platform. What is it?
If data is the bloodstream of your robot, then YARP is
the circulatory system.
\li Source code: https://github.com/robotology/yarp
\li File an issue: https://github.com/robotology/yarp/issues/new
More specifically, YARP supports building a robot control system as a
\ref note_ports "collection of programs" communicating in a
peer-to-peer way, with an extensible \ref carrier_config "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 <i>not</i> 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
\ref yarp_without_yarp "YARP without YARP" tutorial. YARP is written
in C++. The <a href="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</a>
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 [\ref lgpl_note "*"].
The general philosophy that has guided the development of YARP is described in
[\ref Fitzpatrick2014 "1"], [\ref Fitzpatrick2008 "2"] and [\ref Metta2006 "3"],
while [\ref Paikan2014 "4"] describes some recent development
(\subpage portmonitor "Port Monitor").
Performances are fundamental in robotics. YARP provides features that allow
developers to assign priorities to individual connections. We call this channel
\subpage channelprioritization. Experimental validation demonstrated that these
features allow reducing communication latency and improves determinism for
selected channels in a YARP network [\ref Paikan2015a "5"] and
[\ref Paikan2015b "6"].
\anchor lgpl_note [*] Certain optional plugin devices, carriers, or libraries are
under the GPL.
\section yarp_setup Getting set up
\li \subpage download
\li \subpage install
\li \subpage yarp_cluster
\section yarp_basics_usage The basics of using YARP
\li \subpage yarp_cmake_hello
\li \subpage note_ports
\li \subpage note_devices
\li \subpage yarp_data_dirs
\section yarp_learning Learning YARP
The best way to learn how to use YARP is to read the tutorials and documentation
pages that are reported in the page \subpage 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 \supage tutorials is continuously updated so it is a good idea to
periodically check it.
\section yarp_command_line_tools Command line tools
\li \subpage yarp
\li \subpage yarpserver
\li \subpage yarpdev
\li \subpage yarprobotinterface
\li \subpage yarprun
\li \subpage yarp-config
\li \subpage yarpdatadumper
\li \subpage yarpdatadumperAppGenerator
\li \subpage yarphear
\li \subpage yarplogger-console
\li \subpage yarpmanager-console
\li \subpage yarpidl_rosmsg
\li \subpage yarpidl_thrift
\li \subpage yarpros
\section yarp_guis GUIs
\li \subpage yarplogger
\li \subpage yarpview
\li \subpage yarpscope
\li \subpage yarpmanager
\li \subpage yarpdataplayer
\li \subpage yarpmotorgui
\li \subpage yarpbatterygui
\li \subpage yarplaserscannergui
\li \subpage yarpviz
\section yarp_advanced_usage Interoperability and advanced use
\li \subpage channelprioritization.
\li \subpage yarp_without_yarp
\li \subpage yarp_with_ros
\li \subpage yarp_swig
\li \subpage portmonitor
\li \subpage yarp_env_variables
\li \subpage rtf_plugins
\section yarp_more_info More information
\li \subpage what_is_yarp
\li \subpage contributing
\li \subpage changelog
\section yarp_resources YARP resources
\li <a href="http://github.com/robotology/yarp">YARP project on GitHub</a>
\li <a href="http://github.com/robotology/yarp/issues">YARP issue tracker</a>
\li <a href="http://wiki.icub.org/wiki/YARP">Wiki</a>
\li <a href="http://wiki.icub.org/wiki/Robotcub-hackers">Mailing list</a>
\section yarp_related_links Related links
\li <a href="https://github.com/robotology/">The Robotology organization on GitHub</a>
\li <a href="http://www.icub.org">iCub family</a>
\li <a href="http://playerstage.sourceforge.net/">Player/Stage</a>
\li <a href="http://www.orocos.org/">Orocos</a>
\li <a href="http://www.ros.org">ROS</a>
\section yarp_papers Publications
\anchor Fitzpatrick2014 \li [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.
[<a href="https://joser.unibg.it/index.php?journal=joser&page=article&op=view&path%5B%5D=69">pdf</a>]
\anchor Fitzpatrick2008 \li [2] Towards Long-Lived Robot Genes, Paul Fitzpatrick, Giorgio Metta, and Lorenzo Natale, Robotics and Autonomous Systems, 56(1):29-45, 2008.
[<a href="http://lornat75.github.io/papers/2008/fitzpatrick-ras.pdf">pdf</a>]
\anchor Metta2006 \li [3] YARP: Yet Another Robot Platform, Giorgio Metta, Paul Fitzpatrick, and Lorenzo Natale, International Journal of Advanced Robotic Systems, 3(1):43-48, 2006.
[<a href="http://www.intechopen.com/journals/international_journal_of_advanced_robotic_systems/yarp__yet_another_robot_platform">pdf</a>]
\anchor Paikan2014 \li [4] Data Flow Port's Monitoring and Arbitration, Paikan, A., Fitzpatrick, P., Metta, G., and Natale, L., Journal of Software Engineering for Robotics, 5(1), pp. 80-88, 2014.
[<a href="http://joser.unibg.it/index.php?journal=joser&page=article&op=view&path%5B%5D=72">pdf</a>]
\anchor Paikan2015a \li [5] Paikan, A., Domenichelli, D., and Natale, L., Communication channel prioritization in a publish-subscribe architecture, in Proc. Software Engineering and Architectures for Realtime Interactive Systems Workshop, Arles, France, 2015.
[<a href="http://arxiv.org/abs/1504.02128">pdf</a>]
\anchor Paikan2015b \li [6] Paikan, A., Pattacini, U., Domenichelli, D., Randazzo, M., Metta, G., and Natale, L.,A Best-Effort Approach for Run-Time Channel Prioritization in Real-Time Robotic Application, in Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems, Hamburg, Germany, 2015, pp. 498-503.
[<a href="http://lornat75.github.io/papers/2015/paikan-iros.pdf">pdf</a>]
*/