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
| Field | Size | Unit | Source |
|---|---|---|---|
accelerometer | 3 (x, y, z) | m/s² | Inertial unit; ±9.81 m/s² per 16,384 counts |
gyroscope | 3 (x, y, z) | rad/s | Inertial unit; 500 °/s per 32,768 counts |
angles | 2 (x, y) | rad | Inertial unit's own orientation estimate, with the offsets from the preferences |
battery | 4 | see below | Battery |
fsr | 8 | kg | Foot boards; pressure sensors with the gains and offsets from the preferences |
sonar | 2 (left, right) | m | Sonar board; first echo, 0.01 m per count |
touch | 14 | 0 or 1 | Chest board, foot boards, hand boards, head bus |
position | 25 | rad (hands: 0..1) | Joint boards |
current | 25 | A | Joint boards; 0.016 A per count |
temperature | 25 | °C | Joint boards; steps of 2 °C |
status | 25 | 0..3 | Temperature status per joint: 0 normal, 1 above the minimum, 2 near the maximum, 3 at the maximum |
stiffness | 25 | 0..1 | Not 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
| Index | Value | Unit |
|---|---|---|
| 0 | Charge | 0..1 (values outside are dropped) |
| 1 | Status | Bit field from the battery's status register |
| 2 | Current | A; negative while discharging |
| 3 | Temperature | LoLA's scale: the 0.1 factor is applied twice, so 28.5 °C reads 2.8 |
Foot pressure
| Index | Sensor |
|---|---|
| 0, 1, 2, 3 | Left foot: front left, front right, rear left, rear right |
| 4, 5, 6, 7 | Right 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
| Index | Sensor | Index | Sensor |
|---|---|---|---|
| 0 | Chest button | 7 | Left hand, left |
| 1 | Head, front | 8 | Left hand, right |
| 2 | Head, middle | 9 | Right foot bumper, left |
| 3 | Head, rear | 10 | Right foot bumper, right |
| 4 | Left foot bumper, left | 11 | Right hand, back |
| 5 | Left foot bumper, right | 12 | Right hand, left |
| 6 | Left hand, back | 13 | Right hand, right |
Head readings
The head bus adds values that LoLA reads but never sends to its client. nao-rs reports them:
| Value | Unit | Device |
|---|---|---|
| Head voltage | V | INA230 power monitor, 1.25 mV per count |
| Head power | W | INA230 |
| Head current | A | INA230 |
| Face temperature | °C | TMP100, 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:
| Field | Unit |
|---|---|
battery.charge | 0..1 |
battery.current | A, negative while discharging |
battery.temperature | LoLA's scale (see above). The REST API reports whole degrees Celsius instead |
battery.charging | true when the current is above 0 |
imu.linear_acceleration | m/s² |
imu.angular_velocity | rad/s |
imu.roll_pitch | rad |
sonar | m, left and right |
left_foot_pressure, right_foot_pressure | kg: front left, front right, rear left, rear right |
touch | booleans; each hand and foot is one value (any of its sensors) |
joint_positions | rad, 26 values in the API's joint order |
joint_temperatures | °C |
joint_currents | A |
Chest board link
The USB device, its start-up, the three-step exchange every cycle, the frame format, the message types, the preferences, the motor board handshake and the chest board tools.
Head devices
The nine chips on the head's I2C bus, their addresses, what one bus cycle sends, and the LoLA quirks nao-rs keeps on the wire.