Hardware

Body sensors and units

Every value nao-rs decodes from the chest board and the head, with its index, unit and source, and the units of the robot API.

nao-rs decodes the body sensors from the chest board's answers into LoLA's arrays, order and units, so software written for LoLA reads the same numbers. In two recordings, 279,186 values in 1,767 of LoLA's messages came out bit-identical. This page lists the runtime's state; the robot API's units follow at the end.

The runtime's state

FieldSizeUnitSource
accelerometer3 (x, y, z)m/s²Inertial unit; ±9.81 m/s² per 16,384 counts
gyroscope3 (x, y, z)rad/sInertial unit; 500 °/s per 32,768 counts
angles2 (x, y)radInertial unit's own orientation estimate, with the offsets from the preferences
battery4see belowBattery
fsr8kgFoot boards; pressure sensors with the gains and offsets from the preferences
sonar2 (left, right)mSonar board; first echo, 0.01 m per count
touch140 or 1Chest board, foot boards, hand boards, head bus
position25rad (hands: 0..1)Joint boards
current25AJoint boards; 0.016 A per count
temperature25°CJoint boards; steps of 2 °C
status250..3Temperature status per joint: 0 normal, 1 above the minimum, 2 near the maximum, 3 at the maximum
stiffness250..1Not measured: the stiffness that was commanded, as LoLA reports it

Joint arrays follow LoLA's joint order (see Architecture).

Joint values need accepted motor boards

Positions, currents, temperatures and the hand touch sensors come from the motor boards. Until nao-rs accepts the robot's version 11 boards (planned), they are not checked against real data.

Battery

IndexValueUnit
0Charge0..1 (values outside are dropped)
1StatusBit field from the battery's status register
2CurrentA; negative while discharging
3TemperatureLoLA's scale: the 0.1 factor is applied twice, so 28.5 °C reads 2.8

Foot pressure

IndexSensor
0, 1, 2, 3Left foot: front left, front right, rear left, rear right
4, 5, 6, 7Right foot: front left, front right, rear left, rear right

nao-rs also computes each foot's total weight and centre of pressure the way HAL does, from the sensors' positions in the foot. LoLA never sends these.

Touch

IndexSensorIndexSensor
0Chest button7Left hand, left
1Head, front8Left hand, right
2Head, middle9Right foot bumper, left
3Head, rear10Right foot bumper, right
4Left foot bumper, left11Right hand, back
5Left foot bumper, right12Right hand, left
6Left hand, back13Right hand, right

Head readings

The head bus adds values that LoLA reads but never sends to its client. nao-rs reports them:

ValueUnitDevice
Head voltageVINA230 power monitor, 1.25 mV per count
Head powerWINA230
Head currentAINA230
Face temperature°CTMP100, about every 300 ms; 0 until the first reading

On the robot: 24.8 V, 10.7 W and 43 to 47 °C.

Checked live

With HAL stopped and nao-rs reading the chest board: gravity at −10.4 m/s², gyroscope at about 0, battery at 99 %, and the sonar following a person between 0.4 and 1.7 m.

Still open, checkable without motors: the physical order of the head pads (front, middle, rear), of the foot pressure sensors and of the bumpers needs one touch of each; and whether the gyroscope's zero offset is ever nonzero.

The robot API's units

The robot API sends a converted state at 20 Hz:

FieldUnit
battery.charge0..1
battery.currentA, negative while discharging
battery.temperatureLoLA's scale (see above). The REST API reports whole degrees Celsius instead
battery.chargingtrue when the current is above 0
imu.linear_accelerationm/s²
imu.angular_velocityrad/s
imu.roll_pitchrad
sonarm, left and right
left_foot_pressure, right_foot_pressurekg: front left, front right, rear left, rear right
touchbooleans; each hand and foot is one value (any of its sensors)
joint_positionsrad, 26 values in the API's joint order
joint_temperatures°C
joint_currentsA

On this page