|
|
Line 84: |
Line 84: |
| ((NAMELEN0 + NAMELEN1 + ... ) % 2 == 0) ? 0 : 1 | | ((NAMELEN0 + NAMELEN1 + ... ) % 2 == 0) ? 0 : 1 |
| | | |
− |
| |
− | ===Definition of UNIT field===
| |
− | UNIT is a 64-bit field to specify a unit consisting of SI-prefix (e.g. milli, micro, kilo etc...) and combination of SI-base and/or SI-derived unites.
| |
− |
| |
− | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
| |
− | |PREFIX | UNIT0 | EXP0 | UNIT1 | EXP1 | UNIT2 | EXP2
| |
− | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
| |
− | 0 1 2 3 4
| |
− |
| |
− | ...-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
− | EXP2 | UNIT3 | EXP3 | UNIT4 | EXP4 | UNIT5 | EXP5 |
| |
− | ...-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
− | 4 5 6 7
| |
− |
| |
− | '''PREFIX (4bit)'''
| |
− | {| border="1" cellpadding="5" cellspacing="0" align="center"
| |
− | |-
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | SI-prefix
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | SI-prefix
| |
− | |-
| |
− | | align="left" | 0x0
| |
− | | align="left" | None
| |
− | | align="left" | --
| |
− | | align="left" |--
| |
− | |-
| |
− | | align="left" | 0x1
| |
− | | align="left" | deka (deca) (1e1)
| |
− | | align="left" | 0x9
| |
− | | align="left" | deci (1e-1)
| |
− | |-
| |
− | | align="left" | 0x2
| |
− | | align="left" | hecto (1e2)
| |
− | | align="left" | 0xA
| |
− | | align="left" | centi (1e-2)
| |
− | |-
| |
− | | align="left" | 0x3
| |
− | | align="left" | kilo (1e3)
| |
− | | align="left" | 0xB
| |
− | | align="left" | milli (1e-3)
| |
− | |-
| |
− | | align="left" | 0x4
| |
− | | align="left" | mega (1e6)
| |
− | | align="left" | 0xC
| |
− | | align="left" | micro (1e-6)
| |
− | |-
| |
− | | align="left" | 0x5
| |
− | | align="left" | giga (1e9)
| |
− | | align="left" | 0XD
| |
− | | align="left" | nano (1e-9)
| |
− | |-
| |
− | | align="left" | 0x6
| |
− | | align="left" | tera (1e12)
| |
− | | align="left" | 0XE
| |
− | | align="left" | pico (1e-12)
| |
− | |-
| |
− | | align="left" | 0x7
| |
− | | align="left" | peta (1e15)
| |
− | | align="left" | 0XF
| |
− | | align="left" | femto (1e-15)
| |
− | |-
| |
− | |}
| |
− |
| |
− |
| |
− | '''UNIT(6bit)'''
| |
− | <center>SI base units</center>
| |
− | {| border="1" cellpadding="5" cellspacing="0" align="center"
| |
− | |-
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | SI base unit name
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | SI base unit name
| |
− | |-
| |
− | | align="left" | 0x01
| |
− | | align="left" | meter
| |
− | | align="left" | 0x05
| |
− | | align="left" | kelvin
| |
− | |-
| |
− | | align="left" | 0x02
| |
− | | align="left" | gram
| |
− | | align="left" | 0x06
| |
− | | align="left" | mole
| |
− | |-
| |
− | | align="left" | 0x03
| |
− | | align="left" | second
| |
− | | align="left" | 0x07
| |
− | | align="left" | candela
| |
− | |-
| |
− | | align="left" | 0x04
| |
− | | align="left" | ampere
| |
− | | align="left" | --
| |
− | | align="left" | --
| |
− | |-
| |
− | |}
| |
− |
| |
− | <center>SI derived units</center>
| |
− | {| border="1" cellpadding="5" cellspacing="0" align="center"
| |
− | |-
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | Unit name
| |
− | | align="left" style="background:#eeeeee;" | dimension
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | Unit name
| |
− | | align="left" style="background:#eeeeee;" | dimension
| |
− | |-
| |
− | | align="left" | 0x08
| |
− | | align="left" | radian
| |
− | | align="left" | meter/meter
| |
− | | align="left" | 0x12
| |
− | | align="left" | ohm
| |
− | | align="left" | meter^2-kilogram/second^3-ampere^2
| |
− | |-
| |
− | | align="left" | 0x09
| |
− | | align="left" | steradian
| |
− | | align="left" | meter^2/meter^2
| |
− | | align="left" | 0x14
| |
− | | align="left" | siemens
| |
− | | align="left" | second^3-ampere^2/meter^2-kilogram
| |
− | |-
| |
− | | align="left" | 0x0A
| |
− | | align="left" | hertz
| |
− | | align="left" | /second
| |
− | | align="left" | 0x15
| |
− | | align="left" | weber
| |
− | | align="left" | meter^2-kilogram/second^2-ampere
| |
− | |-
| |
− | | align="left" | 0x0B
| |
− | | align="left" | newton
| |
− | | align="left" | meter-kilogram/second^2
| |
− | | align="left" | 0x16
| |
− | | align="left" | tesla
| |
− | | align="left" | kilogram/second^2-ampere
| |
− | |-
| |
− | | align="left" | 0x0C
| |
− | | align="left" | pascal
| |
− | | align="left" | kilogram/meter-second^2
| |
− | | align="left" | 0x17
| |
− | | align="left" | henry
| |
− | | align="left" | meter^2-kilogram/second^2-ampere^2
| |
− | |-
| |
− | | align="left" | 0x0D
| |
− | | align="left" | joule
| |
− | | align="left" | meter^2-kilogram/second^2
| |
− | | align="left" | 0x18
| |
− | | align="left" | lumen
| |
− | | align="left" | candela-steradian
| |
− | |-
| |
− | | align="left" | 0x0E
| |
− | | align="left" | watt
| |
− | | align="left" | meter^2-kilogram/second^3
| |
− | | align="left" | 0x19
| |
− | | align="left" | lux
| |
− | | align="left" | candela-steradian/meter^2
| |
− | |-
| |
− | | align="left" | 0x0F
| |
− | | align="left" | coulomb
| |
− | | align="left" | second-ampere
| |
− | | align="left" | 0x1A
| |
− | | align="left" | becquerel
| |
− | | align="left" | /second
| |
− | |-
| |
− | | align="left" | 0x10
| |
− | | align="left" | volt
| |
− | | align="left" | meter^2-kilogram/second^3-ampere
| |
− | | align="left" | 0x1B
| |
− | | align="left" | gray
| |
− | | align="left" | meter^2/second^2
| |
− | |-
| |
− | | align="left" | 0x11
| |
− | | align="left" | farad
| |
− | | align="left" | second^4-ampere^2/meter^2-kilogram
| |
− | | align="left" | 0x1C
| |
− | | align="left" | sievert
| |
− | | align="left" | meter^2/second^2
| |
− | |-
| |
− | |}
| |
− |
| |
− |
| |
− | '''EXP''' (4-bit)
| |
− | {| border="1" cellpadding="5" cellspacing="0" align="center"
| |
− | |-
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | Exponent
| |
− | | align="left" style="background:#eeeeee;" | Value
| |
− | | align="left" style="background:#eeeeee;" | Exponent
| |
− | |-
| |
− | | align="left" | 0x0
| |
− | | align="left" | ^0
| |
− | | align="left" | --
| |
− | | align="left" |--
| |
− | |-
| |
− | | align="left" | 0x1
| |
− | | align="left" | ^1
| |
− | | align="left" | 0xF
| |
− | | align="left" | ^-1
| |
− | |-
| |
− | | align="left" | 0x2
| |
− | | align="left" | ^2
| |
− | | align="left" | 0xE
| |
− | | align="left" | ^-2
| |
− | |-
| |
− | | align="left" | 0x3
| |
− | | align="left" | ^3
| |
− | | align="left" | 0xD
| |
− | | align="left" | ^-3
| |
− | |-
| |
− | | align="left" | 0x4
| |
− | | align="left" | ^4
| |
− | | align="left" | 0xC
| |
− | | align="left" | ^-4
| |
− | |-
| |
− | | align="left" | 0x5
| |
− | | align="left" | ^5
| |
− | | align="left" | 0XB
| |
− | | align="left" | ^-5
| |
− | |-
| |
− | | align="left" | 0x6
| |
− | | align="left" | ^6
| |
− | | align="left" | 0XA
| |
− | | align="left" | ^-6
| |
− | |-
| |
− | | align="left" | 0x7
| |
− | | align="left" | ^7
| |
− | | align="left" | 0X9
| |
− | | align="left" | ^-7
| |
− | |-
| |
− | |}
| |
| | | |
| ===Examples=== | | ===Examples=== |
<< Version 2 Draft Page
Summary
SDATA is a message type, which is used to transfer sensor reading, 3-axis position, velocity, acceleration, angle, angle velocity and angle acceleration. The message format is intended for manipulator control and various types of sensors.
Message Types
SENSOR
Data
|
Type
|
Description
|
NSENSORS
|
uint16
|
Number of sensors
|
FORMAT 0
|
LARRAY 0
|
uint8
|
Length of array (0-255)
|
UNIT 0
|
uint64
|
See bellow
|
NAMELEN 0
|
uint8
|
Name length
|
...
|
FORMAT (NSENSORS-1)
|
LARRAY (NSENSORS-1)
|
int8
|
Length of array (0-255)
|
UNIT (NSENSORS-1)
|
int64
|
see bellow
|
NAMELEN (NSENSORS-1)
|
uint8
|
Name length
|
NAME Table
|
NAME 0
|
char[NAMELEN]
|
Name
|
...
|
NAME (NSENSORS-1)
|
char[NAMELEN (NSENSORS-1)]
|
Name
|
Padding*
|
uint8 or none
|
padding to align DATA with WORD
|
DATA
|
DATA 0
|
float64[LARRAY 0]
|
value array for sensor 0
|
DATA 1
|
float64[LARRAY 1]
|
value array for sensor 1
|
...
|
DATA (NSENSORS-1)
|
float64[LARRAY (NSENSORS-1)]
|
value array for sensor (NSENSORS-1)
|
In C/C++, the size of padding is determined by:
((NAMELEN0 + NAMELEN1 + ... ) % 2 == 0) ? 0 : 1
Examples
Sending 3-axis position
A device with 3-axis force (N), 3-axis torque (N*m) and 3-axis acceleration (mm/s^2) sensors is sending data to a data logger program. The names of the sensors are "FORCE", "TORQUE", and "ACCEL." The message structure may be as follows:
Data
|
Type
|
Value
|
NSENSORS
|
uint16
|
3
|
LARRAY 0
|
uint8
|
3
|
PREFIX 0
|
int8
|
0
|
DIMENSION 0
|
uint8[6]
|
0x58 0x00 0x00 0x00 0x00 0x00 (N)
|
NAME0
|
char[20]
|
"FORCE"
|
LARRAY 1
|
uint8
|
3
|
PREFIX 1
|
int8
|
0
|
DIMENSION 1
|
uint8[6]
|
0x58 0x08 0x00 0x00 0x00 0x00 (N*m)
|
NAME 1
|
char[20]
|
"TORQUE"
|
LARRAY 2
|
uint8
|
3
|
PREFIX 2
|
int8
|
0
|
DIMENSION 2
|
uint8[6]
|
0x08 0x03 0x00 0x00 0x00 0x00 (m/s^2)
|
NAME 2
|
char[20]
|
"ACCEL"
|
DATA 0
|
double[3]
|
{0.0, 0.0, 0.0}
|
DATA 1
|
double[3]
|
{0.0, 0.0, 0.0}
|
DATA 2
|
double[3]
|
{0.0, 0.0, 0.0}
|
GET_SENSOR
STT_SENSOR
N/A
STP_SENSOR
N/A
RTS_SENSOR
N/A
Implementations
The TDATA message type is implemented in the following source code.
Contributors
Junichi Tokuda, Yuichiro Hayashi