Difference between revisions of "OpenIGTLink/ProtocolV2/Type/SensorData"

From NAMIC Wiki
Jump to: navigation, search
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===

Revision as of 04:53, 17 November 2010

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


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