-
Notifications
You must be signed in to change notification settings - Fork 85
status data
The status of the Dexter robot arm is returned to DDE by the Firmware after every command. All the _DELTA and _AT values are scaled by the calibration values in the AxisCal.txt file. DDE calculates additional status data and adds it to the status array1 available to jobs. This includes slope values for each joint.
Each data item is a signed 32 bit binary integer.
Units for angles are always integer arc seconds.
For each of the following "Joint..." sections (e.g. replace * in the following with J1...J5) in the status data:
Name | Description |
---|---|
*_AT | Current incremental position goal toward the commanded final position goal. |
*_DELTA | Instantaneous error in position. Difference between _AT and actual position. Always gets corrected out to zero given drive strength to do so. |
*_PID_DELTA | . Related to force due to inertia, gravity, etc. |
*_FORCE_DELTA | In follow mode, this is the angular offset from commanded position necessary to keep force at zero. |
*_SIN | The current A2D value from the sin sensor on that joints encoder. |
*_COS | The current A2D value from the cos sensor on that joints encoder. |
PLAYBACK_ | Not used? The step and direction ticks sent to the motor in the time between status updates. August 2018 changed to the current measured angle of the joint. |
SENT_ | Little used? Commanded position goal. |
SLOPE_ | Unused. Was rate of change of _AT. Measurement of joint speed. April 2018 changed to servo information on some joints (see below) |
In April 2018, the FPGA and Firmware (see line 2455) code was changed so that the Dynamixel servo data is returned by the getNormalizedInput function for the SLOPE items as follows:
Joint 6 position replaces SLOPE_BASE_POSITION,
Joint 6 force replaces SLOPE_PIVOT_POSITION,
Joint 7 position replaces SLOPE_END_POSITION,
Joint 7 force replaces SLOPE_ANGLE_POSITION.
Also, the SLOPE_ROT_POSITION was replaced with the error status of the two servos with J6 in the LSB and J7 in the next byte up (*256).
In August 2018, the FPGA and Firmware was changed to return the actual measured angle of each joint encoder as follows:
BASE_MEASURED_ANGLE replaces PLAYBACK_BASE_POSITION
PIVOT_MEASURED_ANGLE replaces PLAYBACK_PIVOT_POSITION
END_MEASURED_ANGLE replaces PLAYBACK_END_POSITION
ANGLE_MEASURED_ANGLE replaces PLAYBACK_ANGLE_POSITION
ROT_MEASURED_ANGLE replaces PLAYBACK_ROT_POSITION
Address | Description | Sample |
---|---|---|
00 | Job number | 1 |
01 | Instruction number | 0 |
02 | Start time 1 | 1531787828 |
03 | End time 1 | 349602 |
04 | Oplet (e.g. 'g') | 103 |
05 | ERROR | 0 |
06 | DMA_READ_DATA | 0 |
07 | DMA_READ_DATA | 0 |
08 | RECORD_BLOCK_SIZE | 0 |
09 | END_EFFECTOR_IO_IN (Type of end effector installed?) | 0 |
Joint 1: BASE | ||
10 | BASE_POSITION_AT | 0 |
11 | BASE_POSITION_DELTA | 0 |
12 | BASE_POSITION_PID_DELTA | 0 |
13 | BASE_POSITION_FORCE_DELTA | 0 |
14 | BASE_SIN | 3703 |
15 | BASE_COS | 2967 |
16 | PLAYBACK_BASE_POSITION (Now BASE_MEASURED_ANGLE) | 0 |
17 | SENT_BASE_POSITION | 0 |
18 | SLOPE_BASE_POSITION (Now Joint 7 measured angle) | 0 |
19 | empty | 2147483647 |
Joint 2: PIVOT | ||
20 | PIVOT_POSITION_AT | 0 |
21 | PIVOT_POSITION_DELTA | 0 |
22 | PIVOT_POSITION_PID_DELTA | 0 |
23 | PIVOT_POSITION_FORCE_DELTA | 0 |
24 | PIVOT_SIN | 293 |
25 | PIVOT_COS | 56 |
26 | PLAYBACK_PIVOT_POSITION (Now PIVOT_MEASURED_ANGLE) | 0 |
27 | SENT_PIVOT_POSITION | 0 |
28 | SLOPE_PIVOT_POSITION (Now Joint 7 torque) | 0 |
29 | empty | 2147483647 |
Joint 3: END | ||
30 | END_POSITION_AT | 0 |
31 | END_POSITION_DELTA | 0 |
32 | END_POSITION_PID_DELTA | 0 |
33 | END_POSITION_FORCE_DELTA | 0 |
34 | END_SIN | 809 |
35 | END_COS | 3063 |
36 | PLAYBACK_END_POSITION (Now END_MEASURED_ANGLE) | 0 |
37 | SENT_END_POSITION | 0 |
38 | SLOPE_END_POSITION (Now Joint 6 measured angle) | 0 |
39 | empty | 2147483647 |
Joint 4: ANGLE | ||
40 | ANGLE_POSITION_AT | 0 |
41 | ANGLE_POSITION_DELTA | 0 |
42 | ANGLE_POSITION_PID_DELTA | 0 |
43 | ANGLE_POSITION_FORCE_DELTA | 0 |
44 | ANGLE_SIN | 1682 |
45 | ANGLE_COS | 3675 |
46 | PLAYBACK_ANGLE_POSITION (Now ANGLE_MEASURED_ANGLE) | 0 |
47 | SENT_ANGLE_POSITION | 0 |
48 | SLOPE_ANGLE_POSITION (Now Joint 6 torque) | 0 |
49 | empty | 2147483647 |
Joint 5: ROT | ||
50 | ROT_POSITION_AT | 0 |
51 | ROT_POSITION_DELTA | 0 |
52 | ROT_POSITION_PID_DELTA | 0 |
53 | ROT_POSITION_FORCE_DELTA | 0 |
54 | ROT_SIN | 1990 |
55 | ROT_COS | 218 |
56 | PLAYBACK_ROT_POSITION (Now ROT_MEASURED_ANGLE) | 0 |
57 | SENT_ROT_POSITION | 0 |
58 | SLOPE_ROT_POSITION (Now J6/7 servo error codes) | 0 |
59 | empty | 2147483647 |
Times are in seconds since 1970. e.g. 1531787828 is GMT: Tuesday, July 17, 2018 12:37:08 AM as per epochconverter.com
Note that Dexter may not have the correct current time. e.g. 349602 is GMT: Monday, January 5, 1970 1:06:42 AM or, in other words, a Dexter which has been running for a day, six minutes and 42 seconds.
To search the Wiki, use the main search box in the black bar at the top, then select WiKi to filter the results or go to https://github.com/HaddingtonDynamics/Dexter/search?type=Wikis&q= and then add your search terms to the end of the URL.
To report errors, or request additional data, please chat with us on discord and/or raise a new issue