OpenIGTLink/ProtocolV2/Type/SensorData

From NAMIC Wiki
Jump to: navigation, search
Home < OpenIGTLink < ProtocolV2 < Type < SensorData

<< 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


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)

Value SI-prefix Value SI-prefix
0x0 None -- --
0x1 deka (deca) (1e1) 0x9 deci (1e-1)
0x2 hecto (1e2) 0xA centi (1e-2)
0x3 kilo (1e3) 0xB milli (1e-3)
0x4 mega (1e6) 0xC micro (1e-6)
0x5 giga (1e9) 0XD nano (1e-9)
0x6 tera (1e12) 0XE pico (1e-12)
0x7 peta (1e15) 0XF femto (1e-15)


UNIT(6bit)

SI base units
Value SI base unit name Value SI base unit name
0x01 meter 0x05 kelvin
0x02 gram 0x06 mole
0x03 second 0x07 candela
0x04 ampere -- --
SI derived units
Value Unit name dimension Value Unit name dimension
0x08 radian meter/meter 0x12 ohm meter^2-kilogram/second^3-ampere^2
0x09 steradian meter^2/meter^2 0x14 siemens second^3-ampere^2/meter^2-kilogram
0x0A hertz /second 0x15 weber meter^2-kilogram/second^2-ampere
0x0B newton meter-kilogram/second^2 0x16 tesla kilogram/second^2-ampere
0x0C pascal kilogram/meter-second^2 0x17 henry meter^2-kilogram/second^2-ampere^2
0x0D joule meter^2-kilogram/second^2 0x18 lumen candela-steradian
0x0E watt meter^2-kilogram/second^3 0x19 lux candela-steradian/meter^2
0x0F coulomb second-ampere 0x1A becquerel /second
0x10 volt meter^2-kilogram/second^3-ampere 0x1B gray meter^2/second^2
0x11 farad second^4-ampere^2/meter^2-kilogram 0x1C sievert meter^2/second^2


EXP (4-bit)

Value Exponent Value Exponent
0x0 ^0 -- --
0x1 ^1 0xF ^-1
0x2 ^2 0xE ^-2
0x3 ^3 0xD ^-3
0x4 ^4 0xC ^-4
0x5 ^5 0XB ^-5
0x6 ^6 0XA ^-6
0x7 ^7 0X9 ^-7

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

Data Type Description


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

Comments