Software interface: standard port names for hardware devices
Contents
Motor Control and Encoders
We have identified 6 robot parts: head, left_arm, right_arm, torso, left_leg and right_leg.
Each part has three ports for: rpc, straming input, streaming output.
All ports have are named using a prefix, followed by rpc:i, command:i, state:o respectively for rpc, streaming input and streaming output.
Prefixes for each part are:
/icub/head /icub/left_arm /icub/right_arm /icub/torso /icub/left_leg /icub/right_leg
More information about the robot joints and parts are reported here: ICub_joints
Motor encoders
Motor encoders are streamed on the port:
/icub/<part>/state:o
Data format: a vector containing all joints of the part (see ICub_joints), units are degrees.
Sensors
Cameras
Images from the two eyes are available in rgb format from the ports:
/icub/cam/left /icub/cam/right
Data format: Yarp ImageOf<PixelRgb>, size depending on the framegrabber resolution.
Microphones
Data from the microphones is available on the port:
/icub/mics
See also: Grabbing_sound_with_PortAudio
Inertial sensor
Data from the inertial sensor is available on the port:
/icub/inertial
Data format: a vector of 12 values:
0:2 :euler angles roll, pitch yaw (degrees) 3:5 :calibrated acceleration along X,Y,Z (m/s^2) 6:8 :calibrated rate of turn (gyro), along X,Y,Z axes (deg/s) 9:11 :calibrated magnetic field X,Y,Z (arbitrary units)
More information about the sensor, data format and reference system are reported here: MTx specs.
Force/Torque Sensor
Six axis torque sensors on the arms (available only on iCub 1.1) are streamed on:
/icub/left_arm/analog:o /icub/right_arm/analog:o
Data format: a vector of 6 floating point numbers.
0:2 :forces 3:5 :torques
Reference frames to be determined.
Skin
If your robot is equipped with tactile sensors this information is available through a set of streaming ports. Details on the tactile sensors are reported here: Tactile_sensors_(aka_Skin)
Other actuators and sensors
Finger encoders
On each hand finger positions are streamed out on the following ports (available only on iCub 1.1):
/icub/right_hand/analog:o /icub/left_hand/analog:o
A vector of 15 floating point numbers, each corresponding to finger joints.
Facial expressions
Facial expressions are accessible through the following ports:
/icub/face/raw: low level interface /icub/face/emotions: high level interface
Low level interface
On /icub/face/raw you have access to the low level interface. This port accepts rpc commands to control individual devices (eyelids, mounth ...).
We skip details here, more can be found in Face Expressions.
High level interface
On /icub/face/emotions you have access through rpc to a higher level interface that allows controlling all devices together to produce facial expressions.
We report here a short summary:
rpc commands to /icub/face/emotions are
set <subsystem> <emotion> get <subsystem>
<subsystem> can be: mou, eli, leb, reb, all
<emotion> can be: neu, tal, hap, sad, sur ,evi, ang, shy, cun
For example:
yarp rpc /icub/face/emotions set mou hap set eli hap set all sad
More details are available here Face Expressions.