3-Space Sensor Wireless 2.4GHz User`s Manual

3-Space Sensor Wireless 2.4GHz User`s Manual

3-Space Sensor

Wireless 2.4GHz

Miniature Wireless Attitude & Heading

Reference System

User's Manual

YEI Technology

630 Second Street

Portsmouth, Ohio 45662 www.YeiTechnology.com

www.3SpaceSensor.com

Patents Pending

©2007-2011 Yost Engineering, Inc.

Printed in USA

This page intentionally left blank

This page intentionally left blank

3-Space Sensor

Wireless 2.4GHz

Miniature Wireless Attitude & Heading

Reference System

User's Manual

YEI Technology

630 Second Street

Portsmouth, Ohio 45662 www.YeiTechnology.com

www.3SpaceSensor.com

Toll-Free: 888-395-9029

Phone: 740-355-9029

Patents Pending

©2007-2011 Yost Engineering, Inc.

Printed in USA

Table of Contents

1. Usage/Safety Considerations...........................................................................................................................................1

1.1 Usage Conditions.....................................................................................................................................................................1

1.2 Technical Support and Repairs.................................................................................................................................................1

1.3 Regulatory Approval ...............................................................................................................................................................1

1.3.1 United States FCC Approval...........................................................................................................................................1

1.3.2 Canada IC Approval........................................................................................................................................................2

1.3.3 European Approval.........................................................................................................................................................2

1.4 Battery Safety Considerations..................................................................................................................................................2

2. Overview of the YEI Wireless 3-Space Sensor...............................................................................................................3

2.1 Introduction..............................................................................................................................................................................3

2.2 Applications.............................................................................................................................................................................3

2.3 Hardware Overview..................................................................................................................................................................4

2.3.1 Wireless Sensor Hardware Overview..............................................................................................................................4

2.3.2 Wireless Dongle Hardware Overview.............................................................................................................................4

2.4 Features....................................................................................................................................................................................5

2.5 Block Diagram of Sensor Operation.........................................................................................................................................6

2.6 Specifications........................................................................................................................................................................... 7

2.7 Physical Dimensions................................................................................................................................................................8

2.8 Axis Assignment......................................................................................................................................................................9

2.9 Wireless Terminology..............................................................................................................................................................9

2.10 Wireless LED Modes...........................................................................................................................................................10

3. Description of the 3-Space Sensor................................................................................................................................11

3.1 Orientation Estimation...........................................................................................................................................................11

3.1.1 Component Sensors.......................................................................................................................................................11

3.1.2 Scale, Bias, and Cross-Axis Effect................................................................................................................................11

3.1.3 Component Sensor Data Types.....................................................................................................................................12

3.1.4 Additional Calibration...................................................................................................................................................12

3.1.5 Reference Vectors.........................................................................................................................................................13

3.1.6 Orientation Filtering .....................................................................................................................................................13

3.1.7 Reference Orientation/Taring........................................................................................................................................13

3.1.8 Other Estimation Parameters.........................................................................................................................................14

3.2 Communication......................................................................................................................................................................15

3.2.1 Wired Streaming Mode.................................................................................................................................................15

3.2.2 Wireless Streaming Mode.............................................................................................................................................16

3.2.3 Wireless Streaming Manual Mode................................................................................................................................16

3.3 Input Device Emulation..........................................................................................................................................................17

3.3.1 Axes and Buttons..........................................................................................................................................................17

3.3.2 Joystick......................................................................................................................................................................... 17

3.3.3 Mouse............................................................................................................................................................................ 17

3.3.4 Wireless Joystick/Mouse...............................................................................................................................................17

3.4 Sensor Settings.......................................................................................................................................................................18

3.4.1 Committing Settings......................................................................................................................................................18

3.4.2 Committing Wireless Settings.......................................................................................................................................18

3.4.3 Natural Axes..................................................................................................................................................................18

3.4.4 Sensor General Settings.................................................................................................................................................18

3.4.5 Dongle General Settings................................................................................................................................................19

3.4.6 Sensor Wireless Settings...............................................................................................................................................19

3.4.7 Dongle Wireless Settings..............................................................................................................................................19

4. 3-Space Sensor Usage/Protocol....................................................................................................................................21

4.1 Usage Overview.....................................................................................................................................................................21

4.1.1 Protocol Overview.........................................................................................................................................................21

4.1.2 Computer Interfacing Overview(USB)..........................................................................................................................21

4.1.3 Computer Interfacing Overview(Wireless)....................................................................................................................21

4.2 Wired Protocol Packet Format...............................................................................................................................................22

4.2.1 Binary Packet Format....................................................................................................................................................22

4.2.2 ASCII Text Packet Format............................................................................................................................................23

4.3 Wireless Protocol Packet Format............................................................................................................................................24

4.3.1 Wireless Communication Format..................................................................................................................................24

4.3.2 Binary Packet Format....................................................................................................................................................24

4.3.3 Binary Command Response..........................................................................................................................................25

4.3.4 Sample Binary Commands............................................................................................................................................25

4.3.5 ASCII Text Packet Format............................................................................................................................................26

4.3.6 ASCII Command Response...........................................................................................................................................27

4.3.7 Sample ASCII Commands.............................................................................................................................................27

4.4 Response Header Format........................................................................................................................................................28

4.4.1 Wired Response Header................................................................................................................................................28

4.4.2 Wired Streaming with Response Header.......................................................................................................................29

4.4.3 Wireless Response Header............................................................................................................................................29

4.4.4 Wireless Streaming with Response Header...................................................................................................................29

4.5 Command Overview...............................................................................................................................................................30

4.5.1 Orientation Commands..................................................................................................................................................30

4.5.2 Normalized Data Commands.........................................................................................................................................31

4.5.3 Corrected Data Commands............................................................................................................................................31

4.5.4 Other Data Commands..................................................................................................................................................31

4.5.5 Raw Data Commands....................................................................................................................................................32

4.5.6 Streaming Commands...................................................................................................................................................32

4.5.7 Configuration Write Commands....................................................................................................................................33

4.5.8 Configuration Read Commands....................................................................................................................................36

4.5.9 Calibration Commands..................................................................................................................................................38

4.5.10 Dongle Commands......................................................................................................................................................39

4.5.11 Wireless Sensor & Dongle Commands........................................................................................................................40

4.5.12 Battery Commands......................................................................................................................................................40

4.5.13 General Commands.....................................................................................................................................................41

4.5.14 Wireless HID Commands............................................................................................................................................42

4.5.15 Wired HID Commands................................................................................................................................................42

4.5.16 General HID Commands.............................................................................................................................................43

Appendix...........................................................................................................................................................................44

USB Connector............................................................................................................................................................................ 44

Hex / Decimal Conversion Chart..................................................................................................................................................44

This page intentionally left blank

User's Manual

1. Usage/Safety Considerations

1.1 Usage Conditions

Do not use the 3-Space Sensor in any system on which people's lives depend(life support, weapons, etc.)

Because of its reliance on a compass, the 3-Space Sensor will not work properly near the earth's north or south pole.

Because of its reliance on a compass and accelerometer, the 3-Space Sensor will not work properly in outer space or on planets with no magnetic field.

Care should be taken when using the 3-Space Sensor in a car or other moving vehicle, as the disturbances caused by the vehicle's acceleration may cause the sensor to give inaccurate readings.

Because of its reliance on a compass, care should be taken when using the 3-Space Sensor near ferrous metal structures, magnetic fields, current carrying conductors, and should be kept about 6 inches away from any computer screens or towers.

Since the Wireless 3-Space Sensor uses RF communication technology, communication failure modes should be carefully considered when designing a system that uses the wireless 3-Space Sensor.

The Wireless 3-Space Sensor is powered by a rechargeable lithium-polymer battery. Lithium-polymer batteries have high energy densities and can be dangerous if not used properly. See section 1.4 Battery Considerations for further information pertaining to battery safety.

1.2 Technical Support and Repairs

Limited Product Warranty: YEI warrants the media and hardware on which products are furnished to be free from defects in materials and workmanship under normal use for sixty (60) days from the date of delivery. No warranties exist for any misuse. YEI will repair or replace any defective product which is returned within this time period.

Product Support: YEI provides technical and user support via our toll-free number (888-395-9029) and via email

([email protected]). Support is provided for the lifetime of the equipment. Requests for repairs should be made through the Support department. For damage occurring outside of the warranty period or provisions, customers will be provided with cost estimates prior to repairs being performed.

1.3 Regulatory Approval

1.3.1 United States FCC Approval

This device contains FCC ID: OA3MRF24J40MA

This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy, and if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:

Reorient or relocate the receiving antenna.

Increase the separation between the equipment and receiver.

Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.

Consult the dealer or an experienced radio/TV technician for help.

To satisfy FCC RF Exposure requirements for mobile and base station transmission devices, a separation distance of 20 cm or more should be maintained between the antenna of this device and persons during operation. To ensure compliance, operation at closer than this distance is not recommended. The antenna(s) used for this transmitter must not be co-located or operating in conjunction with any other antenna or transmitter.

1

User's Manual

If the Wireless Unit is used in a portable application (antenna is less than 20 cm from persons during operation), the integrator is responsible for performing Specific Absorption Rate (SAR) testing in accordance with FCC rules 2.1091

1.3.2 Canada IC Approval

This device contains IC ID: 7693A-24J40MA

This device has been certified for use in Canada under Industry Canada (IC) Radio Standards Specification (RSS) RSS-

210 and RSS-Gen.

1.3.3 European Approval

The device contains a communication module that has been certified for use in European countries.

The following testing has been completed:

Test standard ETSI EN 300 328 V1.7.1 (2006-10):

Maximum Transmit Power

Maximum EIRP Spectral Density

Frequency Range

Radiated Emissions

Test standards ETSI EN 301 489-1:2008 and ETSI EN 301 489-17:2008:

Radiated Emissions

Electro-Static Discharge

Radiated RF Susceptibility

1.4 Battery Safety Considerations

The Wireless 3-Space Sensor contains a rechargeable lithium-polymer battery. Lithium-polymer batteries have high energy densities and can be dangerous if not used and cared for properly. The Wireless 3-space Sensor has been designed to include multiple levels of battery safety assurance. The Wireless 3-Space Sensor circuitry includes smart charging circuitry with thermal management to prevent over-charging the battery. The battery pack itself also includes protection circuitry to prevent over-charge, over-voltage, over-current, and over-discharge conditions.

Most battery issues arise from improper handling of batteries, and particularly from the continued use of damaged batteries.

As with any lithium-polymer battery-powered device, the following should be observed:

Don’t disassemble, crush, puncture, shred, or otherwise attempt to change the form of your battery.

Don't attempt to change or modify the battery yourself. Contact YEI technical support for battery replacement or battery repair.

Don’t let the mobile device or battery come in contact with water.

Don’t allow the battery to touch metal objects.

Don’t place the sensor unit near a heat source. Excessive heat can damage the sensor unit or the battery. High temperatures can cause the battery to swell, leak, or malfunction.

Don’t dry a wet or damp sensor unit with an appliance or heat source, such as a hair dryer or microwave oven.

Don't drop the sensor unit. Dropping, especially on a hard surface, can potentially cause damage to the sensor unit or the battery.

Discontinue use immediately and contact YEI technical support if the battery or sensor unit produce odors, emit smoke, exhibit swelling, produce excess heat, exhibit leaking.

Dispose of Lithium-polymer batteries properly in accordance with local, state , and federal guidelines.

2

User's Manual

2. Overview of the YEI Wireless 3-Space Sensor

2.1 Introduction

The YEI 3-Space Sensor TM Wireless integrates a miniature, high-precision, high-reliability, Attitude and Heading

Reference System (AHRS) with a 2.4GHz DSSS communication interface and a rechargeable lithium-polymer battery solution into a single low-cost end-use-ready unit. The Attitude and Heading Reference System (AHRS) uses triaxial gyroscope, accelerometer, and compass sensors in conjunction with advanced on-board filtering and processing algorithms to determine orientation relative to an absolute reference orientation in real-time.

Orientation can be returned in absolute terms or relative to a designated reference orientation. The proprietary multireference vector mode increases accuracy and greatly reduces and compensates for sensor error. The YEI 3-Space

Sensor Wireless system also utilizes a dynamic sensor confidence algorithm that ensures optimal accuracy and precision across a wide range of operating conditions.

The YEI 3-Space Sensor Wireless unit features are accessible via a well-documented open communication protocol that allows access to all available sensor data and configuration parameters using either 2.4GHz DSSS wireless or USB 2.0 interfaces. Versatile commands allow access to raw sensor data, normalized sensor data, and filtered absolute and relative orientation outputs in multiple formats including: quaternion, Euler angles (pitch/roll/yaw), rotation matrix, axis angle, two vector(forward/up).

The YEI Wireless 3-Space Sensor TM communicates with a host PC via a USB dongle installed in the PC. Up to 15 sensor units can be associated with each wireless dongle, and multiple dongles can be used simultaneously to achieve high sensor counts or increase individual sensor throughput. Sensor and dongle units have individual wireless network

PAN Id assignment and wireless channel assignment to allow multiple sensors to communicate simultaneously without interference or performance degradation.

When used as a USB device, the 3-Space Sensor integration with existing applications.

TM provides mouse emulation and joystick emulation modes that ease

2.2 Applications

Robotics

Motion capture

Positioning and stabilization

Vibration analysis

Inertial augmented localization

Personnel / pedestrian navigation and tracking

Unmanned air/land/water vehicle navigation

Education and performing arts

Healthcare monitoring

Gaming and motion control

Accessibility interfaces

Virtual reality and immersive simulation

3

User's Manual

2.3 Hardware Overview

2.3.1 Wireless Sensor Hardware Overview

4. Indicator LED

3. Input Button 1

5. Input Button 2

2. Recessed Power Switch

1. USB Connector

1. USB Connector – The 3-Space Sensor uses a 5-pin mini USB connector to connect to a computer via USB and to charge the internal battery. The USB connector provides for both power and communication signals.

2. Recessed Power Switch – The 3-Space Sensor can be switch on and off when powered from the internal battery by using the recessed power switch. When connected via USB, the unit is powered and the batteries will begin recharging regardless of the position of the recessed power switch

3. Input Button 1 – The 3-Space Sensor includes two input buttons that can be used in conjunction with the orientation sensing capabilities of the device. The inputs are especially useful when using the 3-Space Sensor as an input device such as in joystick emulation mode or mouse emulation mode.

4. Indicator LED – The 3-Space Sensor includes an RGB LED that can be used for visual status feedback.

5. Input Button 2 – The 3-Space Sensor includes two input buttons that can be used in conjunction with the orientation sensing capabilities of the device. The inputs are especially useful when using the 3-Space Sensor as an input device such as in joystick emulation mode or mouse emulation mode.

2.3.2 Wireless Dongle Hardware Overview

2. Indicator LED

1. USB Connector

1. USB Connector – The 3-Space Wireless Dongle uses a 5-pin mini USB connector to connect to a computer via USB. The USB connector provides for both power and communication.

2. Indicator LED – The 3-Space Wireless Dongle includes an RGB LED that can be used for visual status feedback.

4

User's Manual

2.4 Features

The YEI 3-Space Sensor Wireless has many features that allow it to be a flexible all-in-one solution for your orientation sensing needs. Below are some of the key features:

Small self-contained high-performance wireless AHRS at 35mm x 60mm x 15mm and 28 grams

Integrated 2.4GHz DSSS wireless communication interface allows high-performance at ranges up to 200'

Integrated Rechargeable Lithium-Polymer battery and charge control allows battery life of 5+ hours at full performance

Fast sensor update and filter rate allow use in real-time applications, including stabilization, virtual reality, realtime immersive simulation, and robotics

Highly customizable orientation sensing with options such as tunable filtering, oversampling, and orientation error correction

Advanced integrated Kalman filtering allows sensor to automatically reduce the effects of sensor noise and sensor error

Robust open protocol allows commands to be sent in human readable form, or more quickly in machine readable form

Orientation output format available in absolute or relative terms in multiple formats ( quaternion, rotation matrix, axis angle, two-vector )

Absolute or custom reference axes

Access to raw sensor data

Flexible communication options: USB 2.0 or wireless 2.4GHz DSSS (FCC Certified)

2.4Ghz DSSS wireless communication allows orientation sensing without any wires, making activities requiring a high level of mobility like motion capture possible.

Wireless sensors have configurable wireless channel selection and network PAN Ids to allow multiple sensors to communicate simultaneously without interference or performance degradation

Each communication dongle unit supports up to 15 independent sensor units

Asynchronous communication support for improved performance with multiple sensor units

Communication through a virtual COM port

USB joystick/mouse emulation modes ease integration with existing applications

Upgradeable firmware

RGB status LED, two programmable input buttons

Available in either hand-held or screw-down packaging

RoHS compliant

5

User's Manual

2.5 Block Diagram of Sensor Operation

USB 2.0

Host System

TSS Wireless 2.4Ghz DSSS

LiPo Battery &

Charge Management

Processor

USB 2.0

Interface

Wireless Module

& Antenna

2.4Ghz DSSS

Wireless Interface

USB Mouse &

Joystick

Emulation

Final

Orientation

Kalman

Filter

Scale, Bias, Normalization, &

Error Compensation

Non-volatile

Calibration &

Performance

Settings

3-Axis

Accelerometer

3-Axis

Rate Gyro

3-Axis

Compass

Temperature

Sensor

6

2.6 Specifications

General

Part number

Dimensions

Weight

Supply voltage

Battery technology

Battery lifetime

Communication interfaces

Wireless communication range

Wireless PAN Ids selectable

Wireless channels selectable

Filter update rate

Orientation output

Other output

Shock survivability

Temperature range

Processor

Sensor

Orientation range

Orientation accuracy

Orientation resolution

Orientation repeatability

Accelerometer scale

Accelerometer resolution

Accelerometer noise density

Accelerometer sensitivity

Accelerometer temperature sensitivity

Gyro scale

Gyro resolution

Gyro noise density

Gyro bias stability @ 25°C

Gyro sensitivity

Gyro non-linearity

Gyro temperature sensitivity

Compass scale

Compass resolution

Compass sensitivity

Compass non-linearity

User's Manual

TSS-WL (Handheld Sensor Unit)

TSS-WL-S (Screw-down Sensor Unit)

35mm x 60mm x 15mm (1.38 x 2.36 x 0.59 in.)

28 grams ( 0.98 oz )

+5v USB rechargeable Lithium-Polymer

5+ hours continuous use at full performance

USB 2.0, 2.4GHz DSSS Wireless (FCC certified) up to 200'

65536

16 ( 2.4GHz channel 11 through 26 ) up to 200Hz with full functionality absolute & relative quaternion, Euler angles, axis angle, rotation matrix, two vector raw sensor data, corrected sensor data, normalized sensor data, temperature

5000g

-40C ~ 85C ( -40F ~ 185F )

32-bit RISC running @ 60MHz

360º about all axes

±2º for dynamic conditions & all orientations

<0.08º

0.085º for all orientations

±2g / ±4g / ±8g selectable

14 bit

99µg/

Hz

0.00024g/digit for ±2g range

0.00048g/digit for ±4g range

0.00096g/digit for ±8g range

±0.008%/°C

±250/±500/±2000 º/sec selectable

16 bit

0.03º/sec/

Hz

11º/hr average for all axes

0.00875º/sec/digit for ±250º/sec

0.01750º/sec/digit for ±500º/sec

0.070º/sec/digit for ±2000º/sec

0.2% full-scale

±0.016%/°C

±1.3 Ga default. Up to ±8.1 Ga available

12 bit

5 mGa/digit

0.1% full-scale

7

Dongle

Part number

Dimensions

Weight

Supply voltage

Communication interfaces

Wireless communication range

Wireless sensors supported

Wireless PAN Ids selectable

Wireless channels selectable

Processor

2.7 Physical Dimensions

User's Manual

TSS-DNG (Wireless Communication Dongle)

22.5mm x 65.6mm x 15mm (0.86 x 2.58 x 0.59 in.)

12 grams ( 0.42 oz )

+5v USB

USB 2.0, 2.4GHz DSSS Wireless (FCC certified) up to 200'

15 simultaneous

65536

16 ( 2.4GHz channel 11 through 26 )

32-bit RISC running @ 60MHz

*Specifications subject to change

8

User's Manual

2.8 Axis Assignment

All YEI 3-Space Sensor product family members have re-mappable axis assignments and axis directions. This flexibility allows axis assignment and axis direction to match the desired end-use requirements.

The natural axes of the 3-Space Sensor are as follows:

The positive X-axis points out of the right hand side of the sensor, which is the side that is facing right when the buttons face upward and plug faces towards you.

The positive Y-axis points out of the top of the sensor, the side with the buttons.

The positive Z-axis points out of the front of the sensor, the side opposite the plug.

The natural axes are illustrated in the diagram below

Bear in mind the difference between natural axes and the axes that are used in protocol data. While they are by default the same, they can be remapped so that, for example, data axis Y could contain data from natural axis X. This allows users to work with data in a reference frame they are familiar with.

2.9 Wireless Terminology

The following provides a list of commonly used wireless concepts and their definitions.

Pan ID – Refers to a 16-bit number that can be assigned to each individual wireless unit or dongle. The pan ID serves the purpose of separating units into clusters or networks, such that a unit with one pan ID cannot communicate with a unit on another pan ID.

Channel – Refers to the frequency on which a given unit transmits or receives upon. There are 16 available channels, ranging from 11-26, inclusive. Certain channels may be more well-suited for wireless communication than others at any given time. Refer to the command listing to find out how to scan channels. Like the pan ID, units with different channels cannot communicate with each other.

Address – Each unit has a unique built-in and unchangeable address (also referred to as hardware ID), which can be found etched into the back of wireless units (but not dongles). When communicating with a unit, addresses are not used directly. Instead, a mapping is provided in the form of logical IDs.

Logical ID – Since direct addresses are cumbersome, these are provided as a means to easily communicate with a given unit. There are 15 such logical IDs. Each logical ID can be mapped to a hardware address to ease communication. A table of logical IDs and their corresponding hardware addresses can be found inside the suite under the Dongle submenu, under Wireless Communication Settings... For more information on reading or setting logical IDs, please refer to the command chart.

9

User's Manual

2.10 Wireless LED Modes

Both the dongle and wireless unit have built-in LEDs that are meant to convey information about the state of the respective device. Each unit and dongle may also have a custom color that can be set. The wireless unit will display the following LED colors under the following circumstances:

Upon receipt of a packet, the wireless unit will flash green temporarily. This will occur regardless of whether the wireless unit is plugged in or not.

When the wireless unit is plugged in and charging, the sensor will flash orange every second.

When the wireless unit is plugged in and fully charged, the sensor will flash green every second.

When the wireless unit falls below a certain battery life level, it will flash red in increasingly quicker intervals.

Note that this does not happen if the sensor is plugged in.

Upon receipt of a packet, the dongle will flash green temporarily.

If the dongle transmits a packet that does not reach its destination, the dongle will flash red temporarily.

Under all other circumstances, both devices will display the custom color that has been set. In addition to this default behavior, it is possible to set a static LED mode, in which the above functionality will be overridden. In this case, the

LED will display only the custom color and nothing else. Please refer to the command chart for information on setting static LED mode.

10

User's Manual

3. Description of the 3-Space Sensor

3.1 Orientation Estimation

The primary purpose of the 3-Space Sensor is to estimate orientation. In order to understand how to handle this estimation and use it in a meaningful way, there are a few concepts about the sensor that should be understood. The following sections describe these concepts.

3.1.1 Component Sensors

The 3-Space Sensor estimates orientation by combining the data it gets from three types of sensors: a gyroscope, an accelerometer, and a compass. A few things you should know about each of these sensors:

Accelerometer: This sensor measures the acceleration due to gravity, as well as any other accelerations that occur. Because of this, this sensor is at its best when the 3-Space Sensor is sitting still. Most jitter seen as the orientation of the sensor changes is due to shaking causing perturbations in the accelerometer readings. To account for this, by default, when the 3-Space Sensor is being moved, the gyroscope becomes more trusted(becomes a greater part of the orientation estimate), and the accelerometer becomes less trusted.

Gyroscope: This sensor measures angular motion. It has no ability to give any absolute orientation information like the accelerometer or compass, and so is most useful for correcting the orientation during sensor motion. Its role during these times becomes vital, though, as the accelerometer readings can become unreliable during motion.

Compass: This sensor measures magnetic direction. The readings from the compass and accelerometer are used together to form the absolute component of orientation, which is used to correct any short term changes the gyroscope makes. Its readings are much more stable than those of the accelerometer, but it can be adversely affected by any ferrous metal or magnetic objects. When the accelerometer is less trusted, the compass is treated in the same way so as to avoid updates to orientation based on partial absolute information.

3.1.2 Scale, Bias, and Cross-Axis Effect

The readings taken from each component sensor are not in a readily usable form. The compass and accelerometer readings are not unit vectors, and the gyroscope readings aren't yet in radians per second. To convert them to these forms, scale and bias must be taken into account. Scale is how much larger the range of data read from the component sensor is than the range of data should be when it is converted. For example, if the compass were to give readings in the range of -500 to 500 on the x axis, but we would like it to be in the range of -1 to 1, the scale would be 500. Bias is how far the center of the data readings is from 0. If another compass read from -200 to 900 on the x axis, the bias would be

350, and the scale would be 550. The last parameter used in turning this component sensor data into usable data is cross-axis effect. This is the tendency for a little bit of data on one axis of a sensor to get mixed up with the other two.

This is an effect experienced by the accelerometer and compass. There are 6 numbers for each of these, one to indicate how much each axis is affected by each other axis. Values for these are generally in the range of 1 to 10%. These parameters are applied in the following order:

1) Bias is subtracted from each axis

2) The three axes are treated as a vector and multiplied by a matrix representing scale and cross-axis parameters

Factory calibration provides default values for these parameters for the accelerometer and compass, and users should probably never need to change these values. To determine these parameters for the gyroscope, you must calibrate it.

Read the Quick Start guide or the 3-Space Suite manual for more information on how to do this.

11

User's Manual

3.1.3 Component Sensor Data Types

Component sensor data is presented by the 3-Space Sensor in three different stages and is readily accessible via certain protocol commands.

Raw Sensor Data: This refers to data that is read directly from each of the component sensors before any additional processing has occurred. This kind of data is well-suited for users who wish to perform their own calibration routines as well as applications where precise analysis of motion is not extremely critical. Raw data commands are listed in Section 4.4.5, “Raw Data Commands” and span commands 0x40 through 0x43.

Example: In the

±

2G range, a raw accelerometer vector might look like (144, -25904, 744). This would indicate a force that is mostly in a downward direction.

Corrected Sensor Data: This refers to 'raw' data that has been biased and scaled to represent real-world units, using the steps as described in Section 3.1.2, “Scale, Bias and Cross-Axis Effect”. There is an additional scaling that occurs, which further alters the data reading based on each component sensor's device-specific values. This scaling provides the real-world equivalents for read data. For the accelerometer, these values are in units of g-forces, for the magnetometer, these values are in units of gauss, and for the gyroscope, these values are in units or radians/sec. This kind of data is well-suited for users who wish to accurately track the motion of objects in 3D space or measure the strength and direction of magnetic fields. Corrected data commands are listed in Section 4.4.3, “Corrected Data Commands” and span commands 0x25 through 0x28.

Example: In the

±

2G range, the same raw accelerometer vector from before, when corrected, might look like (.004, -.791, .023). Note that these values are in units of g, and would indicate that at the moment of the sample, the sensor is accelerating mostly downwards at a rate of 7.75 meters per second squared.

Normalized Sensor Data: This refers to 'corrected' data that has been geometrically normalized. For the accelerometer and magnetometer, all normalized sensor readings are unit-vectors and as such, have lengths of

1. For the gyroscope, these is no difference between 'corrected' and 'normalized' data. This kind of data is wellsuited for users who are only interested in the direction of acceleration or magnetic fields. Normalized data commands are listed in Section 4.4.2, “Normalized Data Commands” and span commands 0x20 through 0x23.

Example: The corrected accelerometer vector from before, when normalized, would look like (0.05,

-0.998, 0.011). Note that the magnitude information is lost, and only the direction of the acceleration remains.

3.1.4 Additional Calibration

The 3-Space Sensor provides multiple calibration modes that can improve performance at the cost of additional setup and calibration routines. For more information on setting these additional modes, please refer to command 169.

Bias Mode: Applies default range scaling to raw data readings. Also applies a bias offset to raw data, the values of which are taken from the provided calibration parameters command. (See section 4.3.7 for more information)

Bias / Scale Mode: The default calibration mode. Applies default range scaling to raw data readings. Also applies a bias offset to the raw data as well as an additional scale matrix. Uses the matrix and vector portions from the provided calibration parameters command.

Ortho-Calibration Mode: A more advanced calibration mode that requires initial setup steps (Please refer to the 3-Space Suite Quick Start Guide for information on how to supply ortho-calibration data) . Uses 24 orthogonal data points to provide accelerometer and compass correction factors for enhanced orientation accuracy.

12

User's Manual

3.1.5 Reference Vectors

In order to get an absolute estimation of orientation from the accelerometer and compass, the sensor needs a reference vector for each to compare to the data read from it. The most obvious choice for these are the standard direction of gravity(down) and the standard direction of magnetic force(north), respectively. However, the sensor does provide several different modes for determining which reference vector to use:

Single Manual: Uses 2 reference vectors it is given as the reference vectors for the accelerometer and compass.

Single Auto: When the sensor powers on or is put into this mode, it calculates gravity and north and uses those calculated vectors as the reference vectors.

Single Auto Continual: The same as Single Auto, but the calculation happens constantly. This can account for some shifts in magnetic force due to nearby objects or change of location, and also can help to cope with the instability of the accelerometer.

Multiple: Uses a set of reference vectors from which the best are picked each cycle to form a single, final reference vector. This mode has the ability to compensate for certain errors in the orientation. In this mode the sensor will have a slightly slower update rate, but will provide greater accuracy. For information on how to set up this mode, see the Quick Start guide or the 3-Space Suite manual.

3.1.6 Orientation Filtering

The 3-Space Sensor provides several different modes for providing orientation estimation. Note also that IMU data collection rate is bound to the update rate of the filter. For more information on setting these additional modes, please refer to command 123.

Kalman Filter: The default filter mode. Normalized sensor data and reference vectors are fed into the Kalman filter, which uses statistical techniques to optimally combine the data into a final orientation reading. Provides the highest-accuracy orientation at the lowest performance.

Alternating Kalman Filter: Uses the same Kalman filter as before, but skips every other update step. Slightly less accurate than the Kalman filter, but faster.

Complementary Filter: Fuses low-pass filtered accelerometer/compass data with high-pass filtered gyroscope data to provide an orientation estimate. Less accurate than any Kalman filtering techniques, but provides significantly higher performance.

Quaternion Gradient Descent Filter: Utilizes gradient descent techniques to avoid the high computational overhead of Kalman-based filters. Provides high performance and high accuracy. Does not use reference vectors or confidence/rho values, thus it sacrifices some customization for performance.

IMU Mode: Performs no orientation filtering, but allows IMU data to be read at the maximum update rate of

800 Hz.

3.1.7 Reference Orientation/Taring

Given the results of the Kalman filter, the sensor can make a good estimation of orientation, but it will likely be offset from the actual orientation of the device by a constant angle until it has been given a reference orientation. This reference orientation tells the sensor where you would like its zero orientation to be. The sensor will always consider the zero orientation to be the orientation in which the plug is facing towards you and top(the side with buttons on it) facing up. The sensor must be given a reference orientation that represents the orientation of the sensor when it is in the position in which you consider the plug to be towards you and the buttons up. The act of giving it this reference orientation to the sensor is called taring, just as some scales have a tare button which can be pressed to tell the scale that nothing is on it and it should read zero. For instructions on doing this, refer to the Quick Start guide or 3-Space Suite manual.

13

User's Manual

3.1.8 Other Estimation Parameters

The 3-Space Sensor offers a few other parameters to filter the orientation estimate. Please note that these only affect the final orientation and not the readings of individual component sensors.

Oversampling: Oversampling causes the sensor to take extra readings from each of the component sensors and average them before using them to estimate orientation. This can reduce noise, but also causes each cycle to take longer proportional to how many extra samples are being taken.

Running Average: The final orientation estimate can be put through a running average, which will make the estimate smoother at the cost of introducing a small delay between physical motion and the sensor's estimation of that motion.

Rho Values: As mentioned earlier, by default the accelerometer and compass are trusted less than the gyros when the sensor is in motion. Rho values are the mechanism that handles the concept of trust. They involve parameters, one for the accelerometer and one for the compass, that indicate how much these component sensors are to be trusted relative to the gyroscope. A lower value for the parameter means more trust. The default mode for this is “confidence mode”, where the rho value chooses between a minimum and maximum value based on how much the sensor is moving. The other option is to have a single, static rho value.

14

User's Manual

3.2 Communication

Obtaining data about orientation from the sensor or giving values for any of its settings is done through the sensor's communication protocol. The protocol can be used through either the USB port or wireless interface, using the 3-Space

Wireless Dongle. A complete description of how to use this protocol is given in section 4 of this document. Also, you may instead use the 3-Space Suite, which provides a graphical method to do the same. To learn how to use this, read the

3-Space Suite manual.

3.2.1 Wired Streaming Mode

The default mode of communication for the 3-Space Sensor is a call and response paradigm wherein you send a command and then receive a response. The sensor also features a streaming mode where it can be instructed to periodically send back the response from a command automatically, without any further communication from the host.

To activate the streaming mode, use the following steps:

1) Set up the streaming to call the commands you want data from. First, figure out which commands you want data from. The following commands are valid for streaming:

0(0x00), Read tared orientation as quaternion

1(0x01), Read tared orientation as euler angles

2(0x02), Read tared orientation as rotation matrix

3(0x03), Read tared orientation as axis angle

4(0x04), Read tared orientation as two vector

5(0x05), Read difference quaternion

6(0x06), Read untared orientation as quaternion

7(0x07), Read untared orientation as euler angles

8(0x08), Read untared orientation as rotation matrix

9(0x09), Read untared orientation as axis angle

10(0x0a), Read untared orientation as two vector

11(0x0b), Read tared two vector in sensor frame

12(0x0c), Read untared two vector in sensor frame

32(0x20), Read all normalized component sensor data

33(0x21), Read normalized gyroscope vector

34(0x22), Read normalized accelerometer vector

35(0x23), Read normalized compass vector

37(0x25), Read all corrected component sensor data

38(0x26), Read corrected gyroscope vector

39(0x27), Read corrected accelerometer vector

40(0x28), Read corrected compass vector

41(0x29), Read corrected linear acceleration

43(0x2B) Read temperature C

44(0x2C), Read temperature F

45(0x2D), Read confidence factor

64(0x40), Read all raw component sensor data

65(0x41), Read raw gyroscope vector

66(0x42), Read raw accelerometer vector

67(0x43), Read raw compass vector

201(0xc9), Read battery voltage

202(0xca), Read battery percentage

203(0xcb), Read battery status

250(0xfa), Read button state

255(0xff), No command

There are 8 streaming slots available for use, and each one can hold one of these commands. These slots can be set using command 80(0x50), with the parameters being the 8 command bytes corresponding to each slot.

Unused slots should be filled with 0xff so that they will output nothing.

Please note: The total amount of data the 8 slots can return at once is 256 bytes. If the resulting data exceeds

15

User's Manual

this, the set streaming slots command will fail.

2) Set up the streaming interval, duration, and start delay. These parameters control the timing of the streaming session. They can be set using command 82(0x52). All times are to be given in microseconds. They control the streaming as follows:

Interval determines how often the streaming session will output data from the requested commands. For example, an interval of 1000000 will output data once a second. An interval of 0 will output data as quickly as possible. The interval will be clamped to 1000 if the user attempts to set it in the range 1 – 1000.

Duration determines how long the streaming session will run for. For example, a duration of 5000000 indicates the session should stop after 5 seconds. A duration of 4294967295 (0xFFFFFFFF) means that the session will run indefinitely until a stop streaming command is explicitly issued.

Start Delay determines how long the sensor should wait after a start command is issued to actually begin streaming. For example, a start delay 200000 means the session will start after 200 milliseconds.

3) Begin the streaming session. This can be done using command 85(0x55). Once started, the session will run until the duration has elapsed, or until the stop command, 86(0x56) has been called. Please note that only binary data is supported. While streaming sessions can be started with ascii commands, only binary data will be returned. Also note that if the sensor is sending large amounts of data the host doesn't have time to handle, this can cause buffer overflows in some communication drivers, leading to slowdowns and loss of data integrity. If the firmware detects that the buffer has overflowed, the asynchronous session will be stopped. If this occurs, this is a sure sign that either the streaming interval is set too low, the program is not working fast enough to handle the amount of data or both.

For more information on all these commands, see the Streaming Commands section in the command chart near the end of this document.

3.2.2 Wireless Streaming Mode

Wireless streaming communication is initiated in a similar manner as wired streaming, with the primary difference being that commands are sent to the 3-Space Dongle via a USB connection, where they are then forwarded to the 3-Space

Wireless Sensor. The Start Streaming command will use the same output communication interface as the received command's input interface. In other words, a command received over a USB connection will result in streaming data output over the USB connection and a command received wirelessly via the dongle will result in all streaming data output over the wireless connection to be received by the dongle.

Unlike wired streaming sessions, wireless streaming supports two separate modes. There is an automatic streaming mode that behaves similarly to wired streaming sessions, where all data that is received is output immediately. There is also a manual flush mode that stores received data in internal buffers specific to each dongle's logical ID. This can be useful for communicating with multiple sensors. This also ensures that no data is lost due to communication driver buffer overflows, since the volume of wireless traffic can be substantially higher with up to 15 different sensors. More information on Manual Streaming Mode can be found in the next section.

Please note that while the maximum wired packet size is 256, wireless streaming enforces a limit of 96 bytes per sensor.

Attempting to set streaming slots to include more return data than this will result in a failure code. Also note that the dongle itself is incapable of streaming data.

3.2.3 Wireless Streaming Manual Mode

By default, the dongle is configured to not automatically output received streamed data. This means that received streaming data must be 'released' via command 180 (Single manual flush) or 181 (Bulk manual flush). The main difference between the two is that command 180 is designed to accept a logical ID as an argument, meaning that it will only manually flush for one device. Command 181, on the other hand, will flush all data that is currently pending.

The format of data returned by command 181 is different from typical commands. Once the command has been called, data will be output in the following format (note that data in square brackets is optionally returned):

<Two-byte bitfield>[Response Header 0][Data for sensor 0] … [Response Header N][Data for sensor N]

16

User's Manual

The initial two-byte bitfield represents the sensors that have new data, where the lowest bit corresponds to sensor 0, and the next highest bit refers to sensor 14. Each time the command is called, all bits will be reset to 0, thus it is possible to read a zero-value for each byte in the bitfield if it is read at a time when no new data has been received. Note also that old data can be overwritten by new data if it is not read quickly enough.

3.3 Input Device Emulation

3.3.1 Axes and Buttons

The 3-Space Sensor has the ability to act as a joystick and/or mouse when plugged in through USB. Both of these are defined in the same way, as a collection of axes and buttons. Axes are input elements that can take on a range of values, whereas buttons can only either be on or off. On a joystick, the stick part would be represented as 2 axes, and all the physical buttons on it as buttons. The 3-Space Sensor has no physical joystick and only 2 physical buttons, so there are a number of options to use properties of the orientation data as axes and buttons. Each input device on the 3-Space

Sensor has 2 axes and 8 buttons. For more information on setting these up, see the 3-Space Suite manual. All communication for these input devices is done through the standard USB HID(Human Interface Device) protocol.

3.3.2 Joystick

As far as a modern operating system is concerned, a joystick is any random collection of axes and buttons that isn't a mouse or keyboard. Joysticks are mostly used for games, but can also be used for simulation, robot controls, or other applications. The 3-Space Sensor, as a joystick, should appear just like any other joystick to an operating system that supports USB HID(which most do).

3.3.3 Mouse

When acting as a mouse, the 3-Space Sensor will take control of the system's mouse cursor, meaning if the mouse portion is not properly calibrated, using it could easily leave you in a situation in which you are unable to control the mouse cursor at all. In cases like this, unplugging the 3-Space Sensor will restore the mouse to normal operation, and unless the mouse enabled setting was saved to the sensor's memory, plugging it back in should restore normal operation.

Using the default mouse settings, caution should be exercised in making sure the orientation estimate is properly calibrated before turning on the mouse. For help with this, see the Quick Start guide.

The mouse defaults to being in Absolute mode, which means that the data it gives is meant to represent a specific position on screen, rather than an offset from the last position. This can be changed to Relative mode, where the data represents an offset. In this mode, the data which would have indicated the edges of the screen in Absolute mode will now represent the mouse moving as quickly as it can in the direction of that edge of the screen. For more information, see command 251 in section 4.3.7, or the 3-Space Suite manual.

3.3.4 Wireless Joystick/Mouse

The 3-Space Dongle can be set up to receive joystick and mouse data from a 3-Space Sensor wirelessly and present this data to the computer via a USB interface. This is accomplished by supplying the logical ID of the wireless device that will act as the mouse/joystick. Commands 240 and 241 are used to enable the wireless joystick and mouse respectively.

When either of these commands are invoked, the chosen wireless sensor will immediately begin transmitting the requested HID data to the dongle. The update rate at which this information is received is determined by command 215.

Additionally, HID information may be sent synchronously or asynchronously from the wireless sensor to the dongle.

Command 217 allows the user to set the desired mode. Synchronous HID mode is the default mode, in which the dongle automatically asks for the requested data first. This mode enjoys a high rate of reliability and it is quite easy to interlace regular protocol commands with HID data transmission/reception. This mode is slower, however, than asynchronous mode, since information must both be requested and received. Asynchronous mode, on the other hand, forces the sensor to automatically send HID information without being asked to do so by the dongle. This allows for much higher update rates, at the expense of reliability due to the increased number of wireless transmissions and potential collisions. It is recommended to use this mode only if you will be using the 3-Space Sensor only as an HID joystick or mouse at the given time.

17

User's Manual

3.4 Sensor Settings

3.4.1 Committing Settings

Changes made to the 3-Space Sensor will not be saved unless they are committed. This allows you to make changes to the sensor and easily revert it to its previous state by resetting the chip. For instructions on how to commit your changes, see the Quick Start guide or 3-Space Suite manual. Any changes relating to the multiple reference vector mode are an exception to this rule, as all these changes are saved immediately.

3.4.2 Committing Wireless Settings

In addition to committing sensor settings, there are also settings specific to wireless devices. In order to commit these settings, command 197 must be used. Note that committing the default settings will have no effect on wireless settings, while committing wireless settings will not change the default settings. A list of wireless settings for the sensor can be found in table 3.4.6 and a list of wireless settings for the dongle can be found in table 3.4.7.

3.4.3 Natural Axes

The natural axes of the 3-Space Sensor are as follows:

The positive X-axis points out of the right hand side of the sensor, which is the side that is facing right when the buttons face upward and plug faces towards you.

The positive Y-axis points out of the top of the sensor, the side with the buttons.

The positive Z-axis points out of the front of the sensor, the side opposite the plug.

Bear in mind the difference between natural axes and the axes that are used in protocol data. While they are by default the same, they can be remapped so that, for example, data axis Y could contain data from natural axis X. This allows users to work with data in a reference frame they are familiar with. See section 2.8 for a diagram of the natural axes.

3.4.4 Sensor General Settings

Setting Name

Accelerometer Rho Value

Compass Rho Value

Accelerometer Coefficients

Purpose

Determine how trusted the accelerometer is

Determine how trusted the compass is

Determines the scale, bias, and cross-axis parameters for the accelerometer

Default Value

Confidence Mode, 5 to 100

Confidence Mode, 5 to 100

Factory calibrated

Compass Coefficients

Gyroscope Coefficients

Accelerometer Enabled

Compass Enabled

Gyroscope Enabled

Filter Mode

Accelerometer Reference Vector Determines which vector the accelerometer should read in order for the sensor's untared orientation to be the identity orientation.

Compass Reference Vector Dertemines which vector the compass should read in order for the sensor's untared orientation to be the identity orientation.

Reference Vector Mode

Determines whether the gyroscope is enabled or not

Determines how orientation is filtered.

Euler Order

Calibration Mode

Axis Directions

Sample Rate

Determines the scale, bias, and cross-axis parameters for the compass Factory calibrated

Determines the scale, bias and cross-axis parameters for the gyroscope Factory calibrated

Determines whether the compass is enabled or not

Determines whether the accelerometer is enabled or not

TRUE

TRUE

Determines how reference vectors are calculated for orientation estimation.

Determines the default composition order of euler angles returned by the sensor.

Determines how raw sensor data is transformed into normalized data

Determines what natural axis direction each data axis faces

Determines how many samples the sensor takes per cycle

TRUE

1 (Kalman)

0, 1, 0

0, 0, 1 (Default mode is to re-calculate this vector on startup)

1 (Single automatic)

YXZ

1 (Scale-Bias)

+X, +Y, +Z

1 from each component sensor

18

User's Manual

Running Average Percentage

Desired Update Rate

Reference Mode

Determines how heavy of a running average to run on the final orientation

Determines how long each cycle should take(ideally)

Determines how the accelerometer and compass reference vectors are determined

Determines the speed of RS232 communication

Determines how fast the CPU will run

0(no running average)

0 microseconds

Single Auto

RS232 Baud Rate

CPU Speed

LED Color

LED Mode

Joystick Enabled

Mouse Enabled

Button Gyro Disable Length

Determines the RGB color of the LED

Determines whether the LED mode is static or not.

Determines whether the joystick is enabled or not

Determines whether the mouse is enabled or not

Determines how many cycles the gyro is ignored after a button is pressed

Multi Reference Weight Power Determines what power each multi reference vector weight is raised to 10

Multi Reference Cell Divisions Determines how many cells the multi reference lookup table is divided into per axis

4

Multi Reference Nearby Vectors Determines how many nearby vectors each multi reference lookup table cell stores

8

115200

60 MHz

0,0,1(Blue)

0 (Non-static)

TRUE

FALSE

5

Wired Response Header Bitfield Determines what kind of data is prepended to response data.

Streaming Slots Determines which commands are executed during a streaming session.

0

255, 255, 255, 255, 255, 255, 255, 255

Streaming Timing Dertemines the streaming interval, duration and delay.

10000, 4294967295, 0

3.4.5 Dongle General Settings

Setting Name

Desired Update Rate

LED Color

LED Mode

Purpose

Determines how long each cycle should take(ideally)

Determines the RGB color of the LED

Determines whether the LED mode is static or not.

Default Value

0 microseconds

0,0,1(Blue)

0 (Non-static)

Wired Response Header Bitfield Determines what kind of data is prepended to response data. 0

3.4.6 Sensor Wireless Settings

Setting Name

PanID

Address

Channel

Purpose

Determines the panID of this sensor.

Determines the address of this sensor.

Determines the channel of this sensor.

3.4.7 Dongle Wireless Settings

Setting Name

PanID

Address

Channel

Logical ID Table

Purpose

Determines the panID of this dongle.

Determines the address of this dongle.

Determines the channel of this dongle.

Determines the mapping between logical ID and addresses.

Retries

Joystick Logical ID

Determines number of retries dongle will attempt on failed transaction

Determines the logical ID of the device that will act as the joystick, or -1 if there is no joystick desired.

Default Value

1

Factory determined (cannot be set, only read)

26

Default Value

1

Factory determined (cannot be set, only read)

26

Array of 15 unsigned 16-bit integers, values initialized to 0

3

-1

19

Mouse Logical ID

HID Update Rate

HID Asynchronous Mode

Streaming Flush Mode

Wireless Response Header

Bitfield

User's Manual

Determines the logical ID of the device that will act as the mouse, or -1 if there is no mouse desired.

Update rate for requesting joystick/mouse information, in milliseconds.

Determines whether joystick/mouse data transmission is asynchronous.

Determines whether or not asynchronously requested data is automatically flushed or whether it must be requested via a dongle command.

Determines what kind of data is prepended to wireless response data.Wireless Response Header Bitfield

-1

15 (67 hz)

0

0 (Auto flush off)

0

20

User's Manual

4. 3-Space Sensor Usage/Protocol

4.1 Usage Overview

4.1.1 Protocol Overview

The 3-Space Sensor receives messages from the controlling system in the form of sequences of serial communication bytes called packets. For ease of use and flexibility of operation, two methods of encoding commands are provided: binary and text. Binary encoding is more compact, more efficient, and easier to access programmatically. ASCII text encoding is more verbose and less efficient yet is easier to read and easier to access via a traditional terminal interface.

Both binary and ASCII text encoding methods share an identical command structure and support the entire 3-Space command set.

The 3-Space Sensor buffers the incoming command stream and will only take an action once the entire packet has been received and the checksum has been verified as correct(ASCII mode commands do not use checksums for convenience).

Incomplete packets and packets with incorrect checksums will be ignored. This allows the controlling system to send command data at leisure without loss of functionality. The command buffer will, however, be cleared whenever the 3-

Space Sensor is either reset or powered off/on.

Specific details of the 3-Space Sensor protocol and its control commands are discussed in the following pages.

4.1.2 Computer Interfacing Overview(USB)

When interfacing with a computer through USB, the 3-Space Sensor presents itself as a COM port, which provides a serial interface through which host may communication with the sensor unit by using protocol messages. The name of this COM port is specific to the operating system being used. It is possible to use multiple 3-Space Sensors on a single computer. Each will be assigned its own COM port. The easiest way to find out which COM port belongs to a certain sensor is to take note of what COM port appears when that sensor is plugged in(provided the drivers have been installed on that computer already. Otherwise, find out what COM port appears once driver installation has finished.)

Additionally, each sensor can be identified programatically by reading the serial number of each attached sensor. For more information on how to install the sensor software on a computer and begin using it, see the Quick Start guide.

4.1.3 Computer Interfacing Overview(Wireless)

To interface to a sensor through a computer wirelessly, the 3-Space Dongle must be connected to the computer through

USB. The Dongle will present itself as a COM port just as the 3-Space Sensor does. Each dongle can be associated with up to 15 wireless sensor units. To associate a sensor unit with a dongle, the user must place the desired sensor's serial number in one of the dongle's 15 logical wireless table slots. Any wireless 3-Space Sensors in range that have been given an address slot on the Dongle may then be communicated to using the Dongle. For information on how to set up the Dongle's address slots, see the Quick Start guide or <Dongle slot command ##>. For information on what data to send to the Dongle to communicate with a particular sensor, see section 4.3. The wireless communication protocol and wired communication protocol support the same commands, but are not identical. This allows the wireless protocol to include features that are specific to the nature of wireless communication such as wireless addressing, wireless reliability, and packet-loss handling, etc. For more information pertaining to the wired and wireless communication protocols, see sections 4.2 and 4.3 respectively.

21

User's Manual

4.2 Wired Protocol Packet Format

4.2.1 Binary Packet Format

The binary packet size can be three or more bytes long, depending upon the nature of the command being sent to the controller. Each packet consists of an initial “start of packet” byte, followed by a “command value” specifier byte, followed by zero or more “command data” bytes, and terminated by a packet “checksum value” byte.

Each binary packet is at least 3 bytes in length and is formatted as shown in figure 1

247(0xF7) First Byte – Start of Packet

Command

Command Data

Command Data

}

Second Byte – Command Value

Selected from the command chart

Command Data

Zero or more bytes representing parameters to the command being called.

See the command chart for details.

Checksum

Last Byte – Packet Checksum

Sum of all other bytes except the first.

Figure 1 - Binary Command Packet Format

Binary Return Values:

When a 3 Space Sensor command is called in binary mode, any data it returns will also be in binary format. For example, if a floating point number is returned, it will be returned as its 4 byte binary representation.

For information on the floating point format, go here: http://en.wikipedia.org/wiki/Single_precision_floatingpoint_format

Also keep in mind that integer and floating point values coming from the sensor are stored in big-endian format.

The Checksum Value:

The checksum is computed as an arithmetic summation of all of the characters in the packet (except the checksum value itself) modulus 256. This gives a resulting checksum in the range 0 to 255. The checksum for binary packets is transmitted as a single 8-bit byte value.

22

User's Manual

4.2.2 ASCII Text Packet Format

ASCII text command packets are similar to binary command packets, but are received as a single formatted line of text.

Each text line consists of the following: an ASCII colon character followed by an integral command id in decimal, followed by a list of ASCII encoded floating-point command values, followed by a terminating newline character. The command id and command values are given in decimal. The ASCII encoded command values must be separated by an

ASCII comma character or an ASCII space character. Thus, legal command characters are: the colon, the comma, the period, the digits 0 through 9, the minus sign, the new-line, the space, and the backspace. When a command calls for an integer or byte sized parameter, the floating point number given for that parameter will be interpreted as being the appropriate data type. For simplicity, the ASCII encoded commands follow the same format as the binary encoded commands, but ASCII text encodings of values are used rather than raw binary encodings.

Each ASCII packet is formatted as shown in figure 2.

: Command , Data1 , Data2 , ... , DataN \n

End of Packet – The

ASCII newline character

Command Data Zero or more bytes representing parameters to the command being called. See the command chart for details.

Command Value – Selected from the command chart, in decimal.

Start of ASCII Packet – Indicated by the colon character

Figure 2 - ASCII Command Packet Format

Thus the ASCII packet consists of the the following characters:

: – the ASCII colon character signifies the start of an ASCII text packet.

, – the ASCII comma character acts as a value delimiter when multiple values are specified.

. – the ASCII period character is used in floating point numbers.

0~9 – the ASCII digits are used to in integer and floating point values.

- - the ASCII minus sign is used to indicate a negative number

\n – the ASCII newline character is used to signify the end of an ASCII command packet.

\b – the ASCII backspace character can be used to backup through the partially completed line to correct errors.

If a command is given in ASCII mode but does not have the right number of parameters, the entire command will be ignored. Also note that when communicating with the dongle or sensor in the 3-Space Suite, the newline is automatically appended to the input, thus it is not necessary to add it.

Sample ASCII commands:

:0\n (If connected to the sensor) Read orientation as a quaternion

:106,2\n (If connected to the sensor) Set oversample rate to 2

:214\n (If connected to the dongle) Read signal strength of most recent dongle reception

:208,5\n (If connected to the dongle) Read the serial number of the unit mapped to logical ID 5

ASCII Response:

All values are returned in ASCII text format when an ASCII-format command is issued. To read the return data, simply read data from the sensor until a Windows newline(a carriage return and a line feed) is encountered.

23

User's Manual

4.3 Wireless Protocol Packet Format

4.3.1 Wireless Communication Format

The protocol for communicating with sensors wirelessly is very similar to the wired protocol, but includes accommodations for wireless unit addressing and wireless communication failures. Thus, all wireless communication messages now also include an address specifying which sensor they are to be sent to. Additionally, each wireless protocol command returns status information pertaining to the success or failure of the wireless command.

4.3.2 Binary Packet Format

The wireless binary packet format is very similar to the wired format. Each packet consists of an initial “address” byte, followed by a “command value” specifier byte, followed by zero or more “command data” bytes, and terminated by a packet “checksum value” byte.

Each wireless binary packet is at least 3 bytes in length and is formatted as shown in figure 3

Figure 3 - Wireless Binary Command Packet Format

24

4.3.3 Binary Command Response

User's Manual

When a binary command is invoked wirelessly, before the data it would normally return in wired mode, it will return status bytes. First is the success byte, which is a 0 if the command was successful and non-0 if it was not. Some things which can cause a failure are:

The lack of corresponding wireless sensor at the specified address.

Wireless communication errors or dropped packets.

Improper command formatting or data length

Second is the address byte. This indicates which sensor sent the response. If the success byte is zero, the data length byte will be present after this byte. If the success byte is non-zero, the data length byte will not be present at all.

Assuming the command succeeded, the response data will be present directly after the data length byte.

4.3.4 Sample Binary Commands

Command

F8 01 00 01

F8 05 6A 02 71

F8 03 E6 E9

F8 00 EC EC

F8 09 77 00 00 00 00

BF 80 00 00 00 00 00

BF

Description Potential Response

Read orientation as a quaternion from sensor 1 00 01 10 00 00 00 00 00 00 00

00 00 00 00 00 3F 80 00 00

Set oversample rate to 2 on sensor 5

Read version string from sensor 3

Read clock speed from powered-off sensor 0

00 05 00

00 03 0C 54 53 53 57 49 52 30

36 30 31 31 31

01 00 (Failure)

Set accelerometer reference vector to (0.0, -1.0, 0.0) on sensor 9

00 09 00

25

User's Manual

4.3.5 ASCII Text Packet Format

Wireless ASCII packets are very similar to wired ASCII packets. Each wireless ASCII packet is formatted as shown in figure 4.

> Address, Command , Data1 , Data2 , ... , DataN \n

End of Packet – The

ASCII newline character

Command Data Zero or more bytes representing parameters to the command being called. See the command chart for details.

Command Value – Selected from the command chart, in decimal.

Address – Wireless address of the sensor to communicate with.

Start of ASCII Packet – Indicated by the greater than character.

Figure 4 - Wireless ASCII Command Packet Format

Thus the ASCII packet consists of the the following characters:

> – the ASCII greater than character signifies the start of an ASCII text packet.

, – the ASCII comma character acts as a value delimiter when multiple values are specified.

. – the ASCII period character is used in floating point numbers.

0~9 – the ASCII digits are used to in integer and floating point values.

- - the ASCII minus sign is used to indicate a negative number

\n – the ASCII newline character is used to signify the end of an ASCII command packet.

\b – the ASCII backspace character can be used to backup through the partially completed line to correct errors.

If a command is given in ASCII mode but does not have the right number of parameters, the entire command will be ignored.

26

4.3.6 ASCII Command Response

User's Manual

When an ASCII command is called wirelessly, before the data it would normally return in wired mode, it will return status values, each seperated by a comma. First is the success/failure value, which is a 0 if the command was successful and 1 if it was not. Some things which can cause a failure are:

The lack of a sensor present wirelessly

Communication interference causing the wireless sensor to not respond

Improper command formatting or data length

Second is the address byte. This indicates which sensor sent the response. If the success byte is zero, the data length byte will be present after this byte. If the success byte is non-zero, the data length byte will not be present at all.

Assuming the command succeeded, the response data will be present directly after the data length byte.

4.3.7 Sample ASCII Commands

Command

>0,0\n

Description Potential Response

Read orientation as a quaternion from sensor 0 0,0,36,-0.07354,-0.97287,-

0.03232,0.21696\r\n

>5,106,2\n

>3,230\n

>2,236\n

Set oversample rate to 2 on sensor 5

Read version string from sensor 3

Read clock speed from out-of-range sensor 2

5,0,0\r\n

0,0,14,08Jan2013K25\r\n

1,2\r\n (Failure)

Note that wireless commands that either fail or do not return data at all will still be terminated with carriage return and line feed characters, even though the data length string may be “0” or not present at all.

27

User's Manual

4.4 Response Header Format

4.4.1 Wired Response Header

The 3-Space Sensor is capable of returning additional data that can be prepended to all command responses. This capability is managed via the Response Header Bitfield, which can be configured using command 221 (0xDD). Each bit in the field, if enabled, corresponds to a different piece of information that will be output prior to the expected response data. To use the Response Header Bitfield, use the following steps:

1.) Determine which additional data you would like to have output as the response header. The list of options are:

0x1 (Bit 0) – Success/Failure; comprised of one byte with non-zero values indicating failure.

0x2 (Bit 1) – Timestamp; comprised of four bytes representing the most recent sample time in microseconds. Note that this is not a difference, but a total accumulated time.

0x4 (Bit 2) – Command echo; comprised of one byte. Echoes back the previous command.

0x8 (Bit 3) – Additive checksum; comprised of one byte summed over the response data modulus 256.

Note that this does not include the Response Header itself.

0x10 (Bit 4) – Logical ID; comprised of one byte indicating the logical ID of the received packet. For

wired communication, this always returns 0xFE.

0x20 (Bit 5) – Serial number; comprised of four bytes.

0x40 (Bit 6) – Data length; comprised of one byte. Represents the amount of response data. Note that this

does not include the Response Header itself.

For example, if you wanted all future data to be preceded with a timestamp and a data length, you would

want to use bits 1 and 6, which corresponds to the value 65 (0x00000041). This is the value that would be

passed into the Set Wired Response Header Bitfield command (Command 221).

2.) Call command 221 passing in the specified value. Keep in mind that this is a 4-byte value.

3.) Ask for data using the Response Header Start Byte.

Typical wired binary commands use 0xF7 to indicate the start of a command packet. If 0xF7 is used, response data will never contain a Response Header. Instead, the user should use 0xF9 instead of 0xF7.

This will cause the resulting command to prepend the requested Response Header to the response data.

Typical wired ascii commands use ':' to indicate the start of a typical command packet and the ';' character to indicate to the sensor that the data should have the Response Header prepended. Also note that all

Response Header data will be output in ascending order, starting with the lowest enabled bit and continuing on to the highest enabled bit.

4.) Parse the Response Header data.

Assume we wanted to ask for the raw accelerometer data along with the timestamp and data length and

that we have already called command 221 with a parameter of 65. We then send the following to the

sensor:

0xf9 0x42 0x42

We receive the following response from the sensor:

0x17 0x39 0x15 0x93 0x0c 0xc4 0x86 0x0 0x0 0xc5 0x54 0x0 0x0 0x46 0x7c 0xc0 0x0

Going in order, we used bits 1 and 6, so we can parse out the timestamp first, which is 4 bytes, and then

the data length, which is 1 byte:

Timestamp: 0x17 0x39 0x15 0x93 (389617043)

Data Length: 0x0c (12)

Data: 0xc4 0x86 0x0 0x0 0xc5 0x54 0x0 0x0 0x46 0x7c 0xc0 0x0 (-1072.0, -3392.0, 16176.0)

28

User's Manual

For the ascii version, we would send the following:

“;64\n”

We would receive the following response:

“389617043,37,-1072.00000,-3392.00000,16176.00000\r\n”

4.4.2 Wired Streaming with Response Header

Streaming data can also have Response Header data prepended to each streamed packet. This can be accomplished by calling the Start Streaming command (0x55) with the Response Header Packet Byte. Assuming that streaming has been configured properly and a non-zero Wired Response Header bitfield has been set, the following examples will start streaming with Response Headers disabled and enabled, respectively:

0xf7 0x55 0x55

0xf9 0x55 0x55

//Start streaming WITHOUT response header prepended to each

//packet

//Start streaming WITH response header prepended to each packet

Keep in mind that the actual start command will also have a Response Header attached that must be successfully parsed.

4.4.3 Wireless Response Header

Wireless response headers work similarly to their wired counterparts. The major difference is that instead of using 0xF9, the user should use 0xFA to request data with response headers prepended. The other difference is that the response header is based on a different command than wired sensors. For dongles, command 219 should be used to set the

Wireless Response Header Bitfield. Keep in mind that dongles also maintain a Wired Response Header Bitfield for commands sent directly to the dongle. All other commands sent wirelessly will use the Wireless Response Header

Bitfield. Also note that typical wireless commands (Binary 0xF8 or Ascii '>') will ALWAYS have the success/failure byte, logical ID byte and data length byte (unless the command fails) prepended as described in Section 4.3.

For the ascii version, the character ']' should be used instead of '>' if the response header is desired.

4.4.4 Wireless Streaming with Response Header

Wireless streaming data can also have Response Header data prepended to each streamed packet. This can be accomplished by calling the Start Streaming command (0x55) with the Wireless Response Header Packet Byte.

Assuming that streaming has been configured properly and a non-zero Wireless Response Header bitfield has been set, the following examples will start streaming with Response Headers disabled and enabled, respectively. We will also assume that we are communicating with the sensor mapped to logical ID 0:

0xf8 0x0 0x55 0x55 //Start streaming with only the success/failure, logical ID

//and data length bytes prepended to each packet

0xfa 0x0 0x55 0x55 //Start streaming WITH wireless response header

//prepended to each packet

Keep in mind that the actual start command will also have a Response Header attached that must be successfully parsed.

29

User's Manual

4.5 Command Overview

There are over 90 different command messages that are grouped numerically by function. Unused command message bytes are reserved for future expansion.

When looking at the following command message tables, note the following:

The “Data Len” field indicates the number of additional data-bytes the command expects to follow the command-byte itself. This number doesn't include the Start of Packet, Command, or Checksum bytes. Thus, the total message size can be calculated by adding three bytes to the “Data Len” listed in the table.

Likewise, the “Return Data Len” field indicates the number of data-bytes the command delivers back to the sender once the command has finished executing.

Under “Return Data Details”, each command lists the sort of data which is being returned and next to this in parenthesis the form this data takes. For example, a quaternion is represented by 4 floating point numbers, so a command which returns a quaternion would list “Quaternion(float x4)” for its return data details.

Command length information only applies to binary commands, as ascii commands can vary in length.

For quaternions, data is always returned in x, y, z, w order.

Euler angles are always returned in pitch, yaw, roll order.

When calling commands in ASCII mode, there is no fixed byte length for the parameter data or return data, as the length depends on the ASCII encoding.

4.5.1 Orientation Commands

Command Description

0(0x00)

1(0x01)

Get tared orientation as quaternion

Get tared orientation as euler angles

2(0x02)

3(0x03)

4 (0x04

5(0x05)

6(0x06)

7(0x07)

8(0x08)

9(0x09)

10(0x0A)

11(0x0B)

12(0x0C)

Long Description

Returns the filtered, tared orientation estimate in quaternion form

Returns the filtered, tared orientation estimate in euler angle form

Get tared orientation as rotation matrix

Get tared orientation as axis angle

Get tared orientation as two vector.

Get difference quaternion

Get untared orientation as quaternion

Get untared orientation as euler angles

Get untared orientation as rotation matrix

Get untared orientation as axis angle

Get untared orientation as two vector.

Get tared two vector in sensor frame

Get untared two vector in sensor frame

Returns the filtered, tared orientation estimate in rotation matrix form

Returns the filtered, tared orientation estimate in axis-angle form

Returns the filtered, tared orientation estimate in two vector form, where the first vector refers to forward and the second refers to down.

Returns the difference between the measured orientation from last frame and this frame.

Returns the filtered, untared orientation estimate in quaternion form.

Returns the filtered, untared orientation estimate in euler angle form

Returns the filtered, untared orientation estimate in rotation matrix form

Returns the filtered, untared orientation estimate in axis-angle form

Returns the filtered, untared orientation estimate in two vector form, where the first vector refers to north and the second refers to gravity.

Returns the filtered, tared orientation estimate in two vector form, where the first vector refers to forward and the second refers to down. These vectors are given in the sensor reference frame and not the global reference frame.

Returns the filtered, untared orientation estimate in two vector form, where the first vector refers to forward and the second refers to down. These vectors are given in the sensor reference frame and not the global reference frame.

Return

Data Len

16

12

36

16

24

16

16

12

36

16

24

24

24

Return Data Details

Quaternion (float x4)

Euler Angles (float x3)

Rotation Matrix (float x9)

Axis (float x3), Angle in

Radians (float)

Forward Vector (float x3),

Down Vector (float x3)

Quaternion (float x4)

Quaternion (float x4)

Euler Angles (float x3)

Rotation Matrix (float x9)

Axis (float x3), Angle in

Radians (float)

North Vector (float x3),

Gravity Vector (float x3)

Forward Vector (float x3),

Down Vector (float x3)

North Vector (float x3),

Gravity Vector (float x3)

Data

Len Data Details

0

0

0

0

0

0

0

0

0

0

0

0

0

30

User's Manual

4.5.2 Normalized Data Commands

Command Description

32(0x20)

Get all normalized component sensor data

Long Description

Returns the normalized gyro rate vector, accelerometer vector, and compass vector. Note that the gyro vector is in units of radians/sec, while the

Return

Data Len

accelerometer and compass are unit-length vectors indicating the direction of gravity and north, respectively. These two vectors do not have any magnitude data associated with them.

36

33(0x21)

34(0x22)

35(0x23)

Get normalized gyro rate

Get normalized accelerometer vector

Get normalized compass vector

Returns the normalized gyro rate vector, which is in units of radians/sec.

Returns the normalized accelerometer vector. Note that this is a unit-vector indicating the direction of gravity. This vector does not have any magnitude data associated with it.

Returns the normalized compass vector. Note that this is a unit-vector indicating the direction of gravity.

This vector does not have any magnitude data associated with it.

12

12

12

Return Data Details

Gyro Rate in units of radians/sec (Vector x3),

Gravity Direction (Vector x3), North Direction (Vector x3)

Gyro Rate in units of radians/sec (float x3)

Gravity Direction (Vector x3)

North Direction (Vector x3)

Data

Len Data Details

0

0

0

0

4.5.3 Corrected Data Commands

Command Description

37(0x25)

38(0x26)

39(0x27)

40(0x28)

41(0x29)

Get all corrected component sensor data

Get corrected gyro rate

Get corrected accelerometer vector

Get corrected compass vector

Get corrected linear acceleration in global space

Long Description

Returns the corrected gyro rate vector, accelerometer vector, and compass vector. Note that the gyro vector is in units of radians/sec, the accelerometer vector is in units of G, and the compass vector is in units of gauss.

Returns the corrected gyro rate vector, which is in units of radians/sec. Note that this result is the same data returned by the normalized gyro rate command.

Returns the acceleration vector in units of G. Note that this acceleration will include the static component of acceleration due to gravity.

Return

Data Len

36

Return Data Details

Gyro Rate in units of radians/sec (Vector x3),

Acceleration Vector in units of G (Vector x3), Compass

Vector in units of gauss

(Vector x3)

Data

Len

0

Data Details

12

12

12

Gyro Rate in units of radians/sec (float x3)

Acceleration Vector in units of G (float x3)

Compass Vector in units of gauss (float x3)

0

0

0 Returns the compass vector in units of gauss.

Returns the linear acceleration of the device, which is the overall acceleration which has been orientation compensated and had the component of acceleration due to gravity removed. Uses the tared orientation.

12

Acceleration Vector in units of G (float x3) 0

4.5.4 Other Data Commands

Command Description

43(0x2B)

44(0x2C)

Get temperature C

Get temperature F

45(0x2D)

Get confidence factor

Long Description

Returns the temperature of the sensor in Celsius.

Returns the temperature of the sensor in Fahrenheit

Returns a value indicating how much the sensor is being moved at the moment. This value will return 1 if the sensor is completely stationary, and will return 0 if it is in motion. This command can also return values in between indicating how much motion the sensor is experiencing.

Return

Data Len

4

4

4

Return Data Details

Temperature (float)

Temperature (float)

Confidence Factor (float)

Data

Len

0

0

Data Details

0

31

User's Manual

4.5.5 Raw Data Commands

Command Description

64(0x40)

65(0x41)

66(0x42)

67(0x43)

Get all raw component sensor data

Get raw gyroscope rate

Get raw accelerometer data

Get raw compass data

Long Description

Returns the raw gyro rate vector, accelerometer vector and compass vector as read directly from the component sensors without any additional postprocessing. The range of values is dependent on the currently selected range for each respective sensor.

Returns the raw gyro rate vector as read directly from the gyroscope without any additional postprocessing.

Returns the raw acceleration vector as read directly from the accelerometer without any additional postprocessing.

Returns the raw compass vector as read directly from the compass without any additional postprocessing.

Return

Data Len

36

Return Data Details

Gyro Rate in counts per degrees/sec (Vector x3),

Acceleration Vector in counts per g (Vector x3),

Compass Vector in counts per gauss (Vector x3)

Data

Len

0

Data Details

12

12

12

Gyro Rate in counts per degrees/sec (Vector x3)

Acceleration Vector in counts per g (Vector x3)

Compass Vector in counts per gauss (Vector x3)

0

0

0

4.5.6 Streaming Commands

Command Description

80(0x50)

81(0x51)

82(0x52)

Set streaming slots

Get streaming slots

Set streaming timing

Long Description

Configures data output slots for streaming mode.

Command accepts a list of eight bytes, where each byte corresponds to a different data command. Every streaming iteration, each command will be executed in order and the resulting data will be output in the specified slot. Valid commands are commands in

Return

Data Len

the ranges 0x0 – 0x10, 0x20 – 0x30, 0x40 – 0x50,

0xC9 – 0xCA (for battery-powered sensors) and

0xFA. A slot value of 0xFF 'clears' the slot and prevents any data from being written in that position.

This command can fail if there is an invalid command passed in as any of the parameters or if the total allotted size is exceeded. Upon failure, all slots will be reset to 0xFF. This setting can be saved to nonvolatile flash memory using the Commit Settings command. 0

8 Returns the current streaming slots configuration.

Configures timing information for a streaming session. All parameters are specified in microseconds. The first parameter is the interval, which specifies how often data will be output. A value of 0 means that data will be output at the end of every filter loop. Aside from 0, values lower than

1000 will be clamped to 1000. The second parameter is the duration, which specifies the length of the streaming session. If this value is set to

0xFFFFFFFF, streaming will continue indefinitely until it is stopped via command 0x56. The third parameter is the delay, which specifies a n amount of time the sensor will wait before outputting the first packet of streaming data. This setting can be saved to non-volatile flash memory using the Commit

Settings command.

0

Return Data Details

Commands (Byte x8)

83(0x53)

12

Interval (Unsigned int),

Duration (Unsigned int),

Delay (Unsigned int)

84(0x54)

85(0x55)

86(0x56)

95(0x5F)

Get streaming timing

Get streaming batch

Start streaming

Stop streaming

Update current timestamp

Returns the current streaming timing information.

Return a single packet of streaming data using the current slot configuration.

Start a streaming session using the current slot and timing configuration.

Stop the current streaming session.

Set the current internal timestamp to the specified value.

Varies

0

0

0

Data

Len Data Details

8 Commands (Byte x8)

0

12

Interval (Unsigned int),

Duration (Unsigned int), Delay

(Unsigned int)

0

0

0

0

4 Timestamp (Unsigned int)

32

User's Manual

4.5.7 Configuration Write Commands

Command

16(0x10)

96(0x60)

97(0x61)

98(0x62)

99(0x63)

100(0x64)

101(0x65)

102(0x66)

103(0x67)

104(0x68)

105(0x69)

106(0x6A)

107(0x6B)

Description

Set euler angle decomposition order

Tare with current orientation

Long Description

Sets the current euler angle decomposition order, which determines how the angles returned from command 0x1 are decomposed from the full quaternion orientation. Possible values are 0x0 for

XYZ, 0x1 for YZX, 0x2 for ZXY, 0x3 for ZYX, 0x4 for

XZY or 0x5 for YXZ (default).

Sets the tare orientation to be the same as the current filtered orientation.

Sets the tare orientation to be the same as the supplied orientation, which should be passed as a quaternion.

Tare with quaternion

Tare with rotation matrix

Set static accelerometer rho mode

Set confidence accelerometer rho mode

Set static compass rho mode

Set confidence compass rho mode

Sets the tare orientation to be the same as the supplied orientation, which should be passed as a rotation matrix.

Determines how trusted the accelerometer contribution is to the overall orientation estimation.

Higher values mean that the accelerometer is less trusted.

Determines how trusted the accelerometer contribution is to the overall orientation estimation.

Instead of using a single value, uses a minimum and maximum value. Rho values will be changed within this range depending on the confidence factor. This can have the effect of smoothing out the accelerometer when the sensor is in motion.

Determines how trusted the accelerometer contribution is to the overall orientation estimation.

Higher values mean that the compass is less trusted.

Determines how trusted the compass contribution is to the overall orientation estimation. Instead of using a single value, uses a minimum and maximum value.

Rho values will be changed within this range depending on the confidence factor. This can have the effect of reducing the compass's effect on the overall orientation estimation and thus reducing magnetically-induced interference.

Causes the processor to wait for the specified number of microseconds at the end of each update loop. Can be useful for bounding the overall update rate of the sensor if necessary.

Set desired update rate

Uses the current tared orientation to set up the reference vector for the nearest orthogonal orientation. This is an advanced command that is best used through 3-Space Sensor Suite calibration

Set multi reference vectors with current orientation utilities. For more information, please refer to the 3-

Space Sensor Suite Quick Start Guide.

Set the current reference vector mode. Parameter can be 0 for single static mode, which uses a certain reference vector for the compass and another certain vector for the accelerometer at all times, 1 for single auto mode, which uses (0, -1, 0) as the reference vector for the accelerometer at all times and uses the average angle between the accelerometer and compass to calculate the compass reference vector once upon initiation of this mode, 2 for single auto continuous mode, which works similarly to single

Set reference vector mode

Set oversample rate auto mode, but calculates this continuously, or 3 for multi-reference mode, which uses a collection of reference vectors for the compass and accelerometer both, and selects which ones to use before each step of the filter.

Sets the number of times to sample each component sensor for each iteration of the filter. This can smooth out readings at the cost of performance.

If this value is set to 0 or 1, no oversampling occurs

—otherwise, the number of samples per iteration depends on the specified parameter, up to a maximum of 10. This setting can be saved to nonvolatile flash memory using the Commit Settings command.

Set gyroscope enabled

Enable or disable gyroscope readings as inputs to the orientation estimation. Note that updated gyroscope readings are still accessible via commands. This setting can be saved to non-volatile flash memory using the Commit Settings command.

Return

Data Len

1

0

0

0

0

0

0

0

0

0

0

0

0

Return Data Details

Euler angle decomposition order

(byte)

Data

Len Data Details

0

0

16 Quaternion (float x4)

36 Rotation Matrix (float x9)

4

8

4 Compass rho value (float)

8

4

0

Accelerometer rho value

(float)

Minimum accelerometer rho value (float), Maximum accelerometer rho value (float)

Minimum compass rho value

(float), Maximum compass rho value (float)

Microsecond update rate

(unsigned integer)

1 Mode (Byte)

1 Samples Per Iteration (Byte)

1 Enabled (Byte)

33

User's Manual

Command

108(0x6C)

109(0x6D)

110(0x6E)

Description

Set accelerometer enabled

Set compass enabled

Reset multi-reference vectors to zero

Long Description

Enable or disable accelerometer readings as inputs to the orientation estimation. Note that updated accelerometer readings are still accessible via commands. This setting can be saved to non-volatile flash memory using the Commit Settings command.

Enable or disable compass readings as inputs to the orientation estimation. Note that compass readings are still accessible via commands. This setting can be saved to non-volatile flash memory using the

Commit Settings command.

Resets all reference vectors in the multi-reference table to zero. Intended for advanced users.

Return

Data Len

0

0

0

Return Data Details

111(0x6F)

112(0x70)

113(0x71)

114(0x72)

115(0x73)

Set multi-reference table resolution

Set compass mulfireference vector

Set compass multireference check vector

Set accelerometer multireference vector

Set accelerometer multireference check vector

Sets the number of cell dimensions and number of nearby vectors per cell for the multi-reference lookup table. First parameter indicates the number of cell divisions—as an example, multi-reference mode, by default, only handles orientations reachable by successive rotations of ninety degrees about any of the three axes, and hence, has a resolution of 4 (360

/ 4 == 90). Thus, a resolution of 8 would provide rotations of forty-five degrees about any of the three axes (360 / 8 == 45). The second parameter indicates the number of adjacent vectors that will be checked for each In addition, the number of checked vectors can be adjusted as well. The second parameters refers to the number of adjacent reference vectors that are 'averaged' to produce the final reference vector for the particular orientation, up to a maximum of 32. Intended for advanced users.

Directly set the multi-reference compass vector at the specified index. First parameter is index, second parameter is compass vector. Intended for advanced users.

Set the compass reading to be used as a check vector to determine which cell index to draw the reference vector from. First parameter is an index, second parameter is the compass vector. Intended for advanced users.

Directly set the multi-reference accelerometer vector at the specified index. First parameter is index, second parameter is compass vector. Intended for advanced users.

Set the accelerometer reading to be used as a check vector to determine which cell index to draw the reference vector from. First parameter is an index, second parameter is the accelerometer vector. Intended for advanced users.

0

0

0

0

0

Data

Len Data Details

1 Enabled (Byte)

1 Enabled (Byte)

0

2

Resolution (Byte), Number of

Check Vectors (Byte)

13

Index (Byte), Compass

Reference Vector (float x3)

13

Index (Byte), Compass

Check Vector (float x3)

13

Index (Byte), Accelerometer

Reference Vector (float x3)

13

Index (Byte), Accelerometer

Check Vector (float x3)

34

User's Manual

Command Description Long Description

116(0x74)

117(0x75)

118(0x76)

119(0x77)

120(0x78)

121(0x79)

122(0x7a)

Sets alternate directions for each of the natural axes of the sensor. The only parameter is a bitfield representing the possible combinations of axis swapping. The lower 3 bits specify where each of the natural axes appears:

000: X: Right, Y: Up, Z: Forward (left-handed system, standard operation)

001: X: Right, Y: Forward, Z: Up (right-handed system)

002: X: Up, Y: Right, Z: Forward (right-handed system)

003: X: Forward, Y: Right, Z: Up (left-handed system)

004: X: Up, Y: Forward, Z: Right (left-handed system)

005: X: Forward, Y: Up, Z: Right (right-handed system)

Set axis directions

(For example, using X: Right, Y: Forward, Z: Up means that any values that appear on the positive vertical(Up) axis of the sensor will be the third(Z) component of any vectors and will have a positive sign, and any that appear on the negative vertical axis will be the Z component and will have a negative sign.)

The 3 bits above those are used to indicate which axes, if any, should be reversed. If it is cleared, the axis will be pointing in the positive direction.

Otherwise, the axis will be pointed in the negative direction. (Note: These are applied to the axes after the previous conversion takes place).

Bit 4: Positive/Negative Z (Third resulting component)

Bit 5: Positive/Negative Y (Second resulting component)

Bit 6: Positive/Negative X (First resulting component)

Note that for each negation that is applied, the handedness of the system flips. So, if X and Z are negative and you are using a left-handed system, the system will still be left handed, but if only X is negated, the system will become right-handed.

Sets what percentage of running average to use on the sensor's orientation. This is computed as follows: total_orient = total_orient * percent total_orient = total_orient + current_orient * (1 – percent) current_orient = total_orient

Set running average percent

Set compass reference vector

Set accelerometer reference vector

Reset filter

Set accelerometer range

Set multi-reference weight power

If the percentage is 0, the running average will be shut off completely. Maximum value is 97%. This setting can be saved to non-volatile flash memory using the Commit Settings command.

Sets the static compass reference vector for Single

Reference Mode.

Sets the static accelerometer reference vector for

Single Reference Mode.

Resets the state of the currently selected filter

Only parameter is the new accelerometer range, which can be 0 for ±2g (Default range), which can be

1 for ±4g, or 2 for ±8g. Higher ranges can detect and report larger accelerations, but are not as accurate for smaller accelerations. This setting can be saved to non-volatile flash memory using the Commit

Settings command.

Set weighting power for multi reference vector weights. Multi reference vector weights are all raised to the weight power before they are summed and used in the calculation for the final reference vector.

Setting this value nearer to 0 will cause the reference vectors to overlap more, and setting it nearer to infinity will cause the reference vectors to influence a smaller set of orientations.

Return

Data Len Return Data Details

0

0

0

0

0

0

0

Data

Len Data Details

1 Axis Direction Byte (byte)

4

12

12

0

Running Average Percent

(float)

Compass Reference Vector

(float x3)

Accelerometer Reference

Vector (float x3)

1

Accelerometer range setting

(byte)

4 Weight power (float)

35

User's Manual

Command

123(0x7b)

124(0x7c)

125(0x7d)

126(0x7e)

Description

Set filter mode

Set running average mode

Set gyroscope range

Set compass range

Long Description

Used to disable the orientation filter or set the orientation filter mode. Changing this parameter can be useful for tuning filter-performance versus orientation-update rates. Passing in a parameter of 0 places the sensor into IMU mode, a 1 places the

Return

Data Len

sensor into Kalman Filtered Mode (Default mode), a

2 places the sensor into Alternating Kalman Filter

Mode, a 3 places the sensor into Complementary

Filter Mode and a 4 places the sensor into

Quaternion Gradient Descent Filter Mode. More information can be found in Section 3.1.5. This setting can be saved to non-volatile flash memory using the Commit Settings command.

0

Used to further smooth out the orientation at the cost of higher latency. Passing in a parameter of 0 places the sensor into a static running average mode, a 1 places the sensor into a confidencebased running average mode, which changes the running average factor based upon the confidence factor, which is a measure of how 'in motion' the sensor is. This setting can be saved to non-volatile flash memory using the Commit Settings command.

Only parameter is the new gyroscope range, which can be 0 for ±250 DPS, 1 for ±500 DPS, or 2 for

±2000 DPS (Default range). Higher ranges can detect and report larger angular rates, but are not as accurate for smaller angular rates. This setting can be saved to non-volatile flash memory using the

Commit Settings command.

0

0

Only parameter is the new compass range, which can be 0 for ±0.88G, 1 for ±1.3G (Default range), 2 for ±1.9G, 3 for ±2.5G, 4 for ±4.0G, 5 for ±4.7G, 6 for

±5.6G, or 7 for ±8.1G. Higher ranges can detect and report larger magnetic field strengths but are not as accurate for smaller magnetic field strengths. This setting can be saved to non-volatile flash memory using the Commit Settings command.

0

Return Data Details

Data

Len Data Details

1 Mode (Byte)

1 Mode (Byte)

1

Gyroscope range setting

(Byte)

1 Compass range setting (Byte)

36

User's Manual

4.5.8 Configuration Read Commands

Command Description

128(0x80)

129(0x81)

130(0x82)

131(0x83)

132(0x84)

133(0x85)

134(0x86)

135(0x87)

136(0x88)

137(0x89)

138(0x8a)

139(0x8b)

140(0x8c)

141(0x8d)

142(0x8e)

143(0x8f)

144(0x90)

145(0x91)

146(0x92)

148(0x94)

149(0x95)

Get tare orientation as quaternion

Get tare orientation as rotation matrix

Get accelerometer rho value

Get compass rho value

Get current update rate

Get compass reference vector

Get accelerometer reference vector

Long Description

Returns the current tare orientation as a quaternion.

Returns the current tare orientation as a rotation matrix.

Returns the current accelerometer rho mode as well as the value. If this mode is set to 0 (static), this will return the rho mode, the static rho value, and then a dummy value of 0. If this mode is set to 1, this will return the rho mode, and the minimum and maximum rho values.

Returns the current compass rho mode as well as the value. If this mode is set to 0 (static), this will return the rho mode, the static rho value, and then a dummy value of 0. If this mode is set to 1, this will return the rho mode, and the minimum and maximum rho values.

Reads the amount of time taken by the last filter update step.

Reads the current compass reference vector. Note that this is not valid if the sensor is in Multi

Reference Vector mode.

Reads the current compass reference vector. Note that this is not valid if the sensor is in Multi

Reference Vector mode.

Get reference vector mode

Get compass multireference vector

Get compass multireference check vector

Get accelerometer multireference vector

Reads the current reference vector mode. Return value can be 0 for single static, 1 for single auto, 2 for single auto continuous or 3 for multi.

Reads the multi-reference mode compass reference vector at the specified index. Intended for advanced users.

Reads the multi-reference mode compass reference check vector at the specified index. Intended for advanced users.

Reads the multi-reference mode accelerometer reference vector at the specified index. Intended for advanced users.

Reads the multi-reference mode accelerometer reference check vector at the specified index.

Intended for advanced users.

Get accelerometer multireference check vector

Get gyroscope enabled state

Returns a value indicating whether the gyroscope contribution is currently part of the orientation estimate: 0 for off, 1 for on.

Get accelerometer enabled

Returns a value indicating whether the accelerometer contribution is currently part of the orientation state estimate: 0 for off, 1 for on.

Get compass enabled state

Get axis direction

Get oversample rate

Get running average percent

Get desired update rate

Get accelerometer range

Get multi-reference mode power weight

Returns a value indicating whether the compass contribution is currently part of the orientation estimate: 0 for off, 1 for on.

Returns a value indicating the current axis direction setup. For more information on the meaning of this value, please refer to the Set Axis Direction command (116).

Returns a value indicating how many times each component sensor is sampled before being stored as raw data. A value of 1 indicates that no oversampling is taking place, while a value that is higher indicates the number of samples per component sensor per filter update step.

Returns a value indicating how heavily the orientation estimate is based upon the estimate from the previous frame. For more information on the meaning of this value, please refer to the Set Running Average

Percent command (117).

Returns the current desired update rate. Note that this value does not indicate the actual update rate, but instead indicates the value that should be spent

'idling' in the main loop. Thus, without having set a specified desired update rate, this value should read

0.

Return the current accelerometer measurement range, which can be a 0 for ±2g, 1 for ±4g or a 2 for

±8g.

Read weighting power for multi-reference vector weights. Intended for advanced users.

Return

Data Len

16

36

9

9

4

12

12

1

12

12

12

12

1

1

1

1

1

4

4

1

4

Return Data Details

Quaternion (float x4)

Rotation Matrix (float x9)

Accelerometer rho mode

(byte), Accelerometer rho values (float x2)

Compass rho mode (byte),

Compass rho values (float x2)

Last update time in microseconds (int)

Compass reference vector

(float x3)

Accelerometer reference vector (float x4)

Mode (byte)

Compass multi-reference reference vector (float x3)

Compass multi-reference reference check vector

(float x3)

Accelerometer multireference reference vector

(float x3)

Accelerometer multireference reference check vector (float x3)

Gyroscope enabled value

(byte)

Accelerometer enabled value (byte)

Compass enabled value

(byte)

Axis direction value (byte)

Oversample rate (byte)

Running average percent

(float)

Desired update rate in microseconds (int)

Accelerometer range setting (byte)

Weight (float)

Data

Len Data Details

0

0

0

0

0

0

0

0

1 Index (byte)

1 Index (byte)

1 Index (byte)

1 Index (byte)

0

0

0

0

0

0

0

0

0

37

User's Manual

Command

150(0x96)

151(0x97)

152(0x98)

153(0x99)

154(0x9a)

155(0x9b)

156(0x9c)

Description

Get multi-reference resolution

Get number of multireference cells

Get filter mode

Get running average mode

Get gyroscope range

Get compass range

Get euler angle decomposition order

Long Description

Reads number of cell divisions and number of nearby vectors per cell for the multi-reference vector lookup table. For more information on these values, please refer to the Set Multi-Reference Resolution command (111). Intended for advanced users.

Return

Data Len

2

Reads the total number of multi-reference cells.

Intended for advanced users.

Returns the current filter mode, which can be 0 for

IMU mode, 1 for Kalman, 2 for Alternating Kalman or

3 for Complementary. For more information, please refer to the Set Filter Mode command (123).

Reads the selected mode for the running average, which can be 0 for normal or 1 for confidence.

Reads the current gyroscope measurement range, which can be 0 for ±250 DPS, 1 for ±500 DPS or 2 for ±2000 DPS.

Reads the current compass measurement range, which can be 0 for ±0.88G, 1 for ±1.3G, 2 for ±1.9G,

3 for ±2.5G, 4 for ±4.0G, 5 for ±4.7G, 6 for ±5.6G or

7 for ±8.1G.

4

1

1

1

1

Reads the current euler angle decomposition order.

0

Return Data Details

Number of cell divisions

(byte), number of nearby vectors (byte)

Number of cells (int)

Filter mode (byte)

Running average mode

(byte)

Gyroscope range setting

(byte)

Compass range setting

(byte)

Data

Len Data Details

0

0

0

0

0

0

1

Euler angle decomposition order (byte)

38

User's Manual

4.5.9 Calibration Commands

Command

160(0xa0)

161(0xa1)

162(0xa2)

163(0xa3)

164(0xa4)

165(0xa5)

166(0xa6)

169(0xa9)

170(0xaa)

171(0xab)

172(0xac)

173(0xad)

174(0xae)

175(0xaf)

Description

Set compass calibration coefficients

Long Description

Sets the current compass calibration parameters to the specified values. These consist of a bias which is added to the raw data vector and a matrix by which the value is multiplied. This setting can be saved to non-volatile flash memory using the Commit

Settings command.

Sets the current accelerometer calibration parameters to the specified values. These consist of a bias which is added to the raw data vector and a matrix by which the value is multiplied. This setting can be saved to non-volatile flash memory using the

Commit Settings command.

Return

Data Len

0

0

Set accelerometer calibration coefficients

Get compass calibration coefficients

Get accelerometer calibration coefficients

Get gyroscope calibration coefficients

Return the current compass calibration parameters.

Return the current accelerometer calibration parameters.

Begin gyroscope autocalibration

Set gyroscope calibration coefficients

Set calibration mode

Get calibration mode

Set ortho-calibration data point from current orientation

Set ortho-calibration data point from vector

Return the current gyroscope calibration parameters.

Performs auto-gyroscope calibration. Sensor should remain still while samples are taken. The gyroscope bias will be automatically placed into the bias part of the gyroscope calibration coefficient list.

Sets the current gyroscope calibration parameters to the specified values. These consist of a bias which is added to the raw data vector and a matrix by which the value is multiplied. This setting can be saved to non-volatile flash memory using the Commit

Settings command.

Bias, 1 for Scale-Bias and 2 for Ortho-Calibration.

For more information, refer to section 3.1.3

Additional Calibration. This setting can be saved to non-volatile flash memory using the Commit Settings command.

Reads the current calibration mode, which can be 0 for Bias, 1 for Scale-Bias or 2 for Ortho-Calibration.

For more information, refer to section 3.1.3

Additional Calibration.

Set the ortho-calibration compass and accelerometer vectors corresponding to this orthogonal orientation. Intended for advanced users.

Directly set a vector corresponding to this orthogonal orientation. First parameter is type, where 0 is for compass and 1 is for accelerometer. Second parameter is index, which indicates the orthogonal orientation. Intended for advanced users.

Get ortho-calibration data point

Perform ortho-calibration

Clear ortho-calibration data

Return the vector corresponding to the orthogonal orientation given by index. First parameter is type, where 0 is for compass and 1 is for accelerometer.

Second parameter is index, which indicates the orthogonal orientation. Intended for advanced users.

Stores accelerometer and compass data in the ortho-lookup table for use in the orientation fusion algorithm. For best results, each of the 24 orientations should be filled in with component sensor data. Note also that ortho-calibration data will not be used unless the calibration mode is set to

Ortho-Calibration. For more information, refer to

Section 3.1.3 Additional Calibration. Intended for advanced users.

Clear out all ortho-lookup table data. Intended for advanced users.

48

48

48

0

0

0

1

0

0

12

0

0

Return Data Details

Matrix (float x9), Bias (float x3)

Matrix (float x9), Bias (float x3)

Matrix (float x9), Bias (float x3)

Mode (byte)

Accelerometer or compass vector (float x3)

Data

Len Data Details

48

48

0

48

0

0

14

Matrix (float x9), Bias (float x3)

Matrix (float x9), Bias (float x3)

Matrix (float x9), Bias (float x3)

1 Mode (Byte)

Type (Byte), Index (Byte),

Accelerometer or Compass

Vector (float x3)

2 Type (Byte), Index (Byte)

0

0

39

User's Manual

4.5.10 Dongle Commands

Command Description

176(0xb0)

177(0xb1)

Set wireless stream mode

Get wireless stream mode

Long Description

Set the wireless communication's streaming flush mode. If this value is set to 0 (default), data must be

'released' using manual flush commands. If this value is set to 1, data will be output immediately via the

Return

Data Len

dongle's USB connection. Note that this only exists for wireless communication. For more information, refer to Section 3.2.2 and 3.3.3. This setting can be set to non-volatile flash memory by using the

Commit Settings command.

Returns the wireless communication's current asynchronous flush mode, which can be 0 for auto flush and 1 for manual flush. For more information, refer to Section 3.2.2 and Section 3.3.3.

0

1

Return Data Details

Auto-flush mode (byte)

178(0xb2)

179(0xb3)

180(0xb4)

181(0xb5)

182(0xb6)

208(0xd0)

209(0xd1)

210(0xd2)

211(0xd3)

212(0xd4)

213(0xd5)

214(0xd6)

Set wireless streaming manual flush bitfield

Get async flush bitfield

Allows the dongle to control which wirelessly received data is output via manual flush mode. The parameter represents a bitfield that represents which wireless sensors' logical IDs can currently output data. If a bit for a corresponding sensor is set to 0, no data at all will be output for that sensor in any condition, even if data is received for that sensor.

This setting can be set to non-volatile flash memory by using the Commit Settings command.

Returns the current manual flush bitfield representing which logical Ids will respond to asynchronous requests.

Flush data output for a single logical ID. For more information, please refer to Section 3.2.2 and

Section 3.2.3

Manual flush single

Manual flush bulk

Flush data output for all logical Ids. For more information, please refer to Section 3.2.2 and

Section 3.2.3

Sends out a timestamp synchronization broadcast message to all wireless sensors that are listening on the same channel and PanID as the dongle. The

Broadcast synchronization message will essentially set each receiving sensor's timestamp to the same timestamp as stored in the pulse

Get serial number at logical ID dongle.

Return the mapped serial number for the given logical ID.

Set serial number at logical ID

Set the mapped serial number given by the logical

ID. This setting can be committed to non-volatile flash memory by calling the Commit Wireless

Settings command.

Return the noise levels for each of the 16 wireless channels. A higher value corresponds to a noisier

Get wireless channel noise channel, which can significantly impact wireless levels reception and throughput.

Set wireless retries

Get wireless retries

Get wireless slots open

Get signal strength

Set the number of times a dongle will attempt to retransmit a data request after timing out. Default value is 3. This setting can be committed to non-volatile flash memory by calling the Commit Wireless

Settings command.

Read the number of times a dongle will attempt to re-transmit a data request after timing out. Default value is 3.

The dongle can simultaneously service up to sixteen individual data requests to wireless sensors. As sensors respond, requests are removed from the table. In the case that too many requests are sent to the dongle in too short a period, the dongle will begin tossing them out. This value will return the number of slots currently open. If this value is 0, no more wireless requests will be handled until some are internally processed.

Returns a value indicating the reception strength of the most recently received packet. Higher values indicate a stronger link.

0

2

Varies

Varies

0

4

0

16

0

1

1

1

Manual flush bitfield (short)

Serial number (int)

Channel strengths (byte x16)

Retries (byte)

Slots open (byte)

Data

Len Data Details

1 Auto-flush mode (byte)

0

2

0

0

0

5

0

Manual flush bitfield (short)

1 Logical ID (Byte)

1 Logical ID (Byte)

Logical ID (Byte), Serial number (int)

1 Retries (byte)

0

0

Last packet signal strength

(byte) 0

40

User's Manual

Command Description

219(0xdb)

220(0xdc)

Set wireless response header bitfield

Get wireless response header bitfield

Long Description

Configures the response header for data returned over a wireless connection. The only parameter is a four-byte bitfield that determines which data is prepended to all data responses. The following bits are used:

Return

Data Len Return Data Details

0x1: (1 byte) Success/Failure, with non-zero values representing failure.

0x2: (4 bytes) Timestamp, in microseconds.

0x4: (1 byte) Command echo—outputs the called command. Returns 0xFF for streamed data.

0x8: (1 byte) Additive checksum over returned data, but not including response header.

0x10: (1 byte) Logical ID

0x20: (4 bytes) Serial number

0x40: (1 byte) Data length, returns the length of the requested data, not including response header.

This setting can be committed to non-volatile flash memory by calling the Commit Wireless Settings command.

Return the current wireless response header bitfield.

0

4

Response header bitfield

(Unsigned int)

Data

Len Data Details

4

0

Response header bitfield

(Unsigned int)

4.5.11 Wireless Sensor & Dongle Commands

Command Description

192(0xc0)

193(0xc1)

194(0xc2)

195(0xc3)

197(0xc5)

198(0xc6)

Read wireless panID

Set wireless panID

Read wireless channel

Set wireless channel

Commit wireless settings

Read wireless address

Long Description

Return the current panID for this wireless sensor or dongle. For more information, refer to Section 2.9

Wireless Terminology.

Set the current panID for this wireless sensor or dongle. Note that the panID for a wireless sensor can only be set via the USB connection. For more information, refer to Section 2.9 Wireless

Terminology. This setting can be committed to nonvolatile flash memory by calling the Commit

Wireless Settings command.

Read the current channel for this wireless sensor or dongle. For more information, refer to Section 2.9

Wireless Terminology.

Set the current channel for this wireless sensor or dongle. For more information, refer to Section 2.9

Wireless Terminology. This setting can be committed to non-volatile flash memory by calling the Commit Wireless Settings command.

Commits all current wireless settings to non-volatile flash memory, which will persist after the sensor is powered off. For more information on which parameters can be stored in this manner, refer to

Section 3.4 Sensor Settings.

Read the wireless hardware address for this sensor or dongle.

Return

Data Len

2

0

1

0

0

2

Return Data Details

PanID (short)

Channel (Byte)

Address (short)

Data

Len Data Details

0

2 PanID (short)

1 Channel (byte)

0

4.5.12 Battery Commands

Command Description

201(0xc9)

202(0xca)

203(0xcb)

Get battery voltage

Get battery percent remaining

Get battery status

Long Description

Read the current battery level in volts. Note that this value will read as slightly higher than it actually is if it is read via a USB connection.

Read the current battery lifetime as a percentage of the total. Note that this value will read as slightly higher than it actually is if it is read via a USB connection.

Returns a value indicating the current status of the battery, which can be a 3 to indicate that the battery is currently not charging, a 2 to indicate that the battery is charging and thus plugged in, or a 1 to indicate that the sensor is fully charged.

Return

Data Len

4

1

1

Return Data Details

Battery level in voltage

(float)

Battery level as percent

(byte)

Battery charge status

(byte)

Data

Len Data Details

0

0

0

41

User's Manual

4.5.13 General Commands

Command Description

196(0xc4)

Set LED Mode

Long Description

Allows finer-grained control over the sensor LED.

Accepts a single parameter that can be 0 for standard, which displays all standard LED status indicators or 1 for static, which displays only the

LED color as specified by command 238. For more information on LED status indicators, please refer to

Section 2.10.

Return

Data Len

0

Return Data Details

200(0xc8)

221(0xdd)

222(0xde)

223(0xdf)

224(0xe0)

225(0xe1)

226(0xe2)

227(0xe3)

228(0xe4)

229(0xe5)

230(0xe6)

231(0xe7)

232(0xe8)

Get LED Mode

Returns the current sensor LED mode, which can be

0 for standard or 1 for static. For more information on

LED status indicators, please refer to Section 2.10.

Configures the response header for data returned over a wired connection. The only parameter is a four-byte bitfield that determines which data is prepended to all data responses. The following bits are used:

0x1: (1 byte) Success/Failure, with non-zero values representing failure.

0x2: (4 bytes) Timestamp, in microseconds.

0x4: (1 byte) Command echo—outputs the called command. Returns 0xFF for streamed data.

0x8: (1 byte) Additive checksum over returned data, but not including response header.

0x10: (1 byte) Logical ID, returns 0xFE for wired sensors. Meant to be used with 3-Space Dongle response header (For more info, see command

0xDB).

0x20: (4 bytes) Serial number

0x40: (1 byte) Data length, returns the length of the requested data, not including response header.

Set wired response header memory by calling the Commit Settings command.

For more information on Response Headers, please bitfield

This setting can be committed to non-volatile flash refer to Section 4.4.

Get wired response header bitfield

Return the current wired response header bitfield.

For more information, please refer to Section 4.4.

Get firmware version string

Restore factory settings

Commit settings

Software reset

Set sleep mode

Get sleep mode

Enter bootloader mode

Get hardware version string

Set UART baud rate

Get UART baud rate

Returns a string indicating the current firmware version.

Return all non-volatile flash settings to their original, default settings.

Commits all current sensor settings to non-volatile flash memory, which will persist after the sensor is powered off. For more information on which parameters can be stored in this manner, refer to

Section 3.4 Sensor Settings.

Resets the sensor.

Sets the current sleep mode of the sensor.

Supported sleep modes are 0 for NONE and 1 for

IDLE. IDLE mode merely skips all filtering steps.

NONE is the default state.

Reads the current sleep mode of the sensor, which can be 0 for NONE or 1 for IDLE.

Places the sensor into a special mode that allows firmware upgrades. This will case normal operation until the firmware update mode is instructed to return the sensor to normal operation. For more information on upgrading firmware, refer to the 3-Space Sensor

Suite Quick Start Guide.

Returns a string indicating the current hardware version.

Sets the baud rate of the physical UART. This setting does not need to be committed, but will not take effect until the sensor is reset. Valid baud rates are 1200, 2400, 4800, 9600, 19200, 28800, 38400,

57600, 115200 (default), 230400, 460800 and

921600. Note that this is only applicable for sensor types that have UART interfaces.

Returns the baud rate of the physical UART. Note that this is only applicable for sensor types that have

UART interfaces.

1

0

4

12

0

0

1

0

0

0

32

0

4

LED mode (byte)

Response header configuration (Unsigned int)

Firmware version (string)

Sleep mode (byte)

Hardware version (string)

Baud rate (int)

Data

Len Data Details

1 LED mode (byte)

0

4

0

0

Response header configuration (Unsigned int)

0

0

0

1 Sleep mode (byte)

0

0

0

4 Baud rate (int)

0

42

Command Description

233(0xe9)

234(0xea)

237(0xed)

Set USB Mode

Get USB Mode

Get serial number

238(0xee)

239(0xef)

Set LED color

Get LED color

User's Manual

Long Description

Sets the communication mode for USB. Accepts one value that can be 0 for CDC (default) or 1 for

FTDI.

Returns the current USB communication mode.

Returns the serial number, which will match the value etched onto the physical sensor.

Sets the color of the LED on the sensor to the specified RGB color. This setting can be committed to non-volatile flash memory by calling the Commit

Wireless Settings command.

Returns the color of the LED on the sensor.

Return

Data Len Return Data Details

0

1

4

0

12

USB communication mode

(byte)

Serial number (int)

RGB Color (float x3)

Data

Len Data Details

1

0

0

12 RGB Color (float x3)

0

USB communication mode

(byte)

4.5.14 Wireless HID Commands

Command Description

215(0xd7)

216(0xd8)

217(0xd9)

Set wireless HID update rate

Get wireless HID update rate

Set wireless HID asynchronous mode

Long Description

Specify the interval at which HID information is requested by the dongle. The default and minimum value is 15ms in synchronous HID mode. In asynchronous HID mode, the minimum is 5ms. This setting can be committed to non-volatile flash memory by calling the Commit Wireless Settings command.

Return the interval at which HID information is requested by the dongle.

Sets the current wireless HID communication mode.

Supplying a 0 makes wireless HID communication synchronous, while a 1 makes wireless HID asynchronous. For more information, refer to Section

3.3.4 Wireless Joystick/Mouse. This setting can be committed to non-volatile flash memory by calling the Commit Wireless Settings command.

Return

Data Len

0

1

0

218(0xda)

240(0xf0)

241(0xf1)

242(0xf2)

243(0xf3)

Get wireless HID asynchronous mode

Set joystick logical ID

Set mouse logical ID

Get joystick logical ID

Get mouse logical ID

Returns the current wireless HID communication mode, which can be a 0 for synchronous wireless

HID or a 1 for asynchronous wireless HID.

Causes the sensor at the specified logical ID to return joystick HID data. Passing a -1 will disable wireless joystick data. For more information, refer to

Section 3.3.4 Wireless Joystick/Mouse.

Causes the sensor at the specified logical ID to return mouse HID data. Passing a -1 will disable wireless mouse data. For more information, refer to

Section 3.3.4 Wireless Joystick/Mouse.

Returns the current logical ID of the joystick-enabled sensor or -1 if none exists.

Returns the current logical ID of the mouse-enabled sensor or -1 if none exists.

1

0

0

1

1

Return Data Details

Last packet signal strength

(byte)

HID update rate in milliseconds

HID communication mode

Joystick-enabled logical ID

(byte)

Mouse-enabled logical ID

(byte)

Data

Len Data Details

1

0

1

0

1

1

0

0

HID update rate in milliseconds (byte)

HID communication mode

(byte)

Joystick logical ID (signed byte)

Mouse logical ID (signed byte)

4.5.15 Wired HID Commands

Command Description

240(0xf0)

241(0xf1)

242(0xf2)

243(0xf3)

Set joystick enabled

Set mouse enabled

Get joystick enabled

Get mouse enabled

Long Description

Enable or disable streaming of joystick HID data for this sensor.

Enable or disable streaming of mouse HID data for this sensor.

Read whether the sensor is currently streaming joystick HID data.

Read whether the sensor is currently streaming mouse HID data.

Return

Data Len

0

0

1

1

Return Data Details

Joystick enabled state

(byte)

Data

Len Data Details

1 Joystick enabled state (byte)

1 Mouse enabled state (byte)

0

Mouse enabled state (byte) 0

43

User's Manual

4.5.16 General HID Commands

Command Description

244(0xf4)

Set control mode

Long Description

Sets the operation mode for one of the controls. The first parameter is the control class,which can be 0 for Joystick Axis, 1 for Joystick Button, 2 for Mouse

Axis or 3 for Mouse Button. There are two axes and eight buttons on the joystick and mouse. The second parameter, the control index, selects which one of these axes or buttons you would like to modify. The third parameter, the handler index, specifies which handler you want to take care of this control. These can be the following:

Turn off this control: 255

Axes:

Global Axis: 0

Screen Point: 1

Buttons:

Hardware Button: 0

Orientation Button: 1

Shake Button: 2

Return

Data Len Return Data Details

0

245(0xf5)

246(0xf6)

247(0xf7)

248(0xf8)

249(0xf9)

Set control data

Get control mode

Get control data

Set button gyro disable length

Get button gyro disable lentgh

Sets parameters for the specified control's operation mode. The control classes and indices are the same as described in command 244. Each mode can have up to 10 data points associated with it. How many should be set and what they should be set to is entirely based on which mode is being used.

Reads the handler index of this control's mode. The control classes and indices are the same as described in command 244.

Reads the value of a certain parameter of the specified control's operation mode. The control classes and indices are the same as described in command 244.

Determines how long, in frames, the gyros should be disabled after one of the physical buttons on the sensor is pressed. A setting of 0 means they won't be disabled at all. This setting helps to alleviate gyro disturbances cause by the buttons causing small shockwaves in the sensor.

0

1

4

0

1

Handler index (byte)

Data point (float)

Number of frames (byte)

250(0xfa)

251(0xfb)

Get button state

Set mouse absolute/relative mode

Returns the current button gyro disable length.

Reads the current state of the sensor's physical buttons. This value returns a byte, where each bit represents the state of the sensor's physical buttons.

Puts the mode in absolute or relative mode. This change will not take effect immediately and the sensor must be reset before the mouse will enter this mode. The only parameter can be 0 for absolute

(default) or 1 for relative

1

0

Button state (byte)

252(0xfc)

253(0xfd)

254(0xfe)

Get mouse absolute/relative mode

Set joystick and mouse present/removed

Return the current mouse absolute/relative mode.

Note that if the sensor has not been reset since it has been put in this mode, the mouse will not reflect this change yet, even though the command will.

Sets whether the joystick and mouse are present or removed. The first parameter is for the joystick, and can be 0 for removed or 1 for present. The second parameter is for the mouse. If removed, they will not show up as devices on the target system at all. For these changes to take effect, the sensor driver may need to be reinstalled.

Get joystick and mouse present/removed

Returns whether the joystick and mouse are present or removed.

1

0

2

Absolute or relative mode

(byte)

Joystick present/removed

(byte), Mouse present/removed (byte)

Data

Len Data Details

3

Control class (byte), control index (byte), handler index

(byte)

7

Control class (byte), control index (byte), data point index

(byte), data point (float)

2

Control class (byte), control index (byte)

3

Control class (byte), control index (byte), data point index

(byte)

1 Number of frames (byte)

0

0

1

Absolute or relative mode

(byte)

0

2

Joystick present/removed

(byte), Mouse present/removed (byte)

0

44

User's Manual

Appendix

USB Connector

The 3-Space Sensor has a 5-pin USB Type-B jack and can be connected via a standard 5-pin mini USB cable.

Hex / Decimal Conversion Chart

7

112

8

128

9

144

A

160

B

176

C

192

D

208

E

224

F

240

0

0

000

1

016

2

032

3

048

4

064

5

080

6

096

181

197

213

229

245

117

133

149

165

053

069

085

101

5

005

021

037

180

196

212

228

244

116

132

148

164

052

068

084

100

4

004

020

036

179

195

211

227

243

115

131

147

163

051

067

083

099

3

003

019

035

178

194

210

226

242

114

130

146

162

050

066

082

098

2

002

018

034

177

193

209

225

241

113

129

145

161

049

065

081

097

1

001

017

033

167

183

199

215

231

247

103

119

135

151

166

182

198

214

230

246

102

118

134

150

038

054

070

086

Second Hexadecimal digit

6 7 8 9

006

022

007

023

008

024

009

025

039

055

071

087

040

056

072

088

041

057

073

089

168

184

200

216

232

248

104

120

136

152

169

185

201

217

233

249

105

121

137

153

187

203

219

235

251

123

139

155

171

059

075

091

107

B

011

027

043

186

202

218

234

250

122

138

154

170

058

074

090

106

A

010

026

042

188

204

220

236

252

124

140

156

172

060

076

092

108

C

012

028

044

189

205

221

237

253

125

141

157

173

061

077

093

109

D

013

029

045

190

206

222

238

254

126

142

158

174

062

078

094

110

E

014

030

046

191

207

223

239

255

127

143

159

175

063

079

095

111

F

015

031

047

45

Notes:

User's Manual

Serial Number: _____________________________________

46

User's Manual

47

User's Manual

48

User's Manual

49

YEI Technology

630 Second Street

Portsmouth, Ohio 45662

Toll-Free: 888-395-9029

Phone: 740-355-9029

www.YeiTechnology.com

www.3SpaceSensor.com

Patents Pending

©2007-2011 Yost Engineering, Inc.

Printed in USA

Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement

Table of contents