YARP: a middle way for a robotic middleware
- E. Ceseracciu, D. Domenichelli, P. Fitzpatrick, G. Metta, L. Natale, A. Paikan
YARP: a middle way for a robotic middleware E. Ceseracciu, D. - - PowerPoint PPT Presentation
YARP: a middle way for a robotic middleware E. Ceseracciu, D. Domenichelli, P. Fitzpatrick, G. Metta, L. Natale, A. Paikan iCub Facility Istituto Italiano di Tecnologia, Genova YARP Peer-to-peer, loosely coupled, communication
Reaching Reaching Reaching Reaching
... ... ... ...ROBOT ROBOT ROBOT ROBOT …
Hand Detection Hand Detection Hand Detection Hand Detection Grasping Grasping Grasping Grasping Object rec. Object rec. Object rec. Object rec.
/arm/encs /arm/trqs /hand/touch /arm/cmd /camera ... ... ... ... ... ...OSes/distributions (Ubuntu, Debian, Windows, MacOs)
– Built-in: tcp/udp/mcast – Plug-ins: ROS tcp, xml rpc, mjpg etc..
YARP Network
Programs use YARP client library Programs that don’t want to use YARP Programs that cannot use YARP
Programs that can talk YARP protocol but do not use YARP library
text mode protocol specific protocols
PORT Tcp connection comes in Accept 8 bytes, check if they are recognized by any loaded protocol If not, check fingerprint files for appropriate .dll/.so/.dylib to load using protocol fingeprint
Fingerprint protocol #1 Fingerprint protocol #2 ...
file1dll/so/dylib file2.dll/so/dylib
...
mcast, shared memory
http-speaking protocol, JSON formatted protocol
–
A protocol for interoperability with ROS
–
A protocol for sending raw Bayer images and decoding them receiver-side, which can be chained with other carriers
–
A protocol for establishing priorities on competing connections, which can be chained with other carriers
FILE SYSTEM YARP configuration file PORT /a
#1: what kind
servers are available and how do I contact them?
PORT /root (a Yarp name server) #2: what port number should I run
#3: how do I contact port /b? PORT /b
#4: hey port /b, this is port /a, let's talk using protocol P
FILE SYSTEM YARP configuration file PORT /a+#/t
#1: what kind of name servers are available and how do I contact them?
roscore (the ROS name server)
#2: I'm “node” /a listening on (random) port number 45123, is that cool with you? #3: can you ask any subscribers
to me? NODE /b Subscribed to /t #4: hey “node” /b, here's an update on publishers of topic /t [gives list including /a] #5: talk to me about topic /t, please
Order of messages when a YARP port (/a) starts up and talks to a peer port (/b) using a protocol (P) YARP port numbers by default are managed rather than random, to keep them stable for connections from external sources Order of messages when a YARP port (/a) starts up and publishes on a ROS topic (/t)
roscore, TCPROS with ROS node,
stream of data between point A and point B
struct Polygon { 1: list<i32> vertices; } service PolygonProvider { Polygon get(); setSides(int); }
Polygon Provider Polygon Consumer