TransducerM User Guide For product series: TM100, TM200 TransducerM is a 9 Degree-of-Freedom attitude and heading reference system (AHRS) Version Date Revision Info V1.2.8 (D) Mar 01, 2019 Derived from UserGuide V1.2.7 (R) general version. V1.2.9 (R) Mar 14, 2019 Release version. * This document is non-public and is only for intended recipients. * Actual product might be different from the photo illustrated. * Specifications are subject to change without notice.
Table of Contents Introduction....................................................................................................................................................................................3 What is TransducerM................................................................................................................................................................................ 3 Software Versions.....................................................................................
Introduction What is TransducerM SYD Dynamics TransducerM is a complete solution for motion sensing applications, capable of providing computed data for determining orientation of an object in 3D space. Out-of-box, it provides orientation data in terms of Euler angles, Quaternion, and, most commonly used Roll/Pitch/Yaw all of which can be computed with the reference to world frame (based on Earth’s magnetic field and gravity direction).
Quick Start This guide aims to explain the use of TransducerM, a 9 Degree-of-Freedom attitude and heading reference system (AHRS), its development kit and accompanying GUI software, ImuAssistant. It will guide you through installing the software, connecting hardware, navigating GUI and understanding basic parts of it. Prepare Completing this Quick Start guide will require the following items: • PC running Windows 7/8/8.1/10. • ImuAssistant software (ImuAssistant_Setup_Win32_Vx-x-x.
Figure 3: GUI window You can leave the GUI running while going through the next step. Connecting the Hardware Using the UART Interface The UART interface allows to either connect TransducerM to a micro-controller directly, or to a USB port of a PC through a converter. Please refer to the document 'TransducerM_* _Datasheet_EN_Vx-x-x.pdf' which comes along with this document for pin-topin definition. Please carefully connect and double check the power supply (5V and GND).
In general, installing TransducerM in a place keeping away as much as possible the magnetic interference and strong vibration allows it to provide better performance. However, this is not a strict requirement if it is not possible to do so. For example, if the TransducerM cannot avoid installing close to a motor (such as in a robot arm, or quad-copter).
Next, you need to scan the opened port for any devices attached to it. In this example, we’re looking for a single device called ‘Evo board’. Scanning the bus is performed by clicking button placed below the big ‘Connect/Disconnect’ button. Note that a single port can have multiple devices attached to it when using CAN bus converter provided by SYD Dynamics, otherwise only one device can be attached.
Visualizing Data Certain output data can be shown in visual form as well, inside the widgets. All widgets for visualizing data are created in the section number 2 of GUI shown in Figure 8, while corresponding numerical data is still shown under corresponding title in section number 3 in Figure 8. Raw Data Selecting ‘Raw data’ in ‘Output data’ section will create a widget with 3 graphs to constantly visualize calibrated sensory output on all 3 axes (Figure 9).
Roll Pitch Yaw Another output with graphical representation is Roll/Pitch/Yaw, or ‘RPY’ under ‘World frame’. It shows the Roll, Pitch and Yaw angles around the aircraft’s principal axes (with respect to Earth’s frame) and visualizes them in two widgets seen in Figure 13. Widget on the left (Figure 13) combines Roll & Pitch data into a single instrument, while compass on the right shows Yaw angle, or Heading of an object.
Standard Setup and Test Procedure In this section, a standard procedure for testing the performance of TransducerM is described, during which you will also become familiar with the ImuAssistant build-in data recorder function. Step 1 – Restore Default Setting Before the test, a few settings must be done to make sure that TransducerM is properly configured.
Save the settings by clicking the big 'Save Settings' button and wait for 3 seconds. 6 Save Settings and wait for 3 seconds. 7 Power off TransducerM Step 2 – Heat Up When the 'Step 1 – Restore Default Setting' is completed, continue with the following procedures, which allows and makes sure that TransducerM is ready to deliver its optimal performance. Procedure Instruction Comment 1 TransducerM power on If it is already powered on, restart it by power cycling it.
Step 3 – Record data If you would like to record TransducerM testing output data into log files saved on your PC, perform this step. Procedure 1 Instruction Disable the 'Status' output in the ImuAssistant Comment We don’t want to record ‘Status’ data, instead, what we are interested in are the ‘Raw Data’ and ‘RPY’. Disabling unwanted output data speeds up the refreshing rate of useful data.
In-depth Description Before going through this section, please make sure that you have also read the previous sections since some basic usage instructions are only available there. TransducerM – Node ID, Firmware Version, UUID When your device is discovered and made visible in the list, you can click the arrow (Figure 18, red square) left from the ‘Node ID’ in order to get more information about this particular device.
Enable and Disable Sensors In section number 1 of the data-manipulation portion of the user interface, shown in Figure 8, it starts by selecting which of the sensors are going to be included in sensor fusion. 'Enable Gyro' refers to 'Enable Gyroscope Sensor'. 'Enable Accel' refers to 'Enable Accelerometer'. 'Enable Mag' refers to 'Enable Magnetometer'. Figure 21: Data path (partial, enable/disable sensors) Normally, gyroscope and accelerometer should always be enabled to provide necessary performance.
If ‘Auto Mode’ is chosen, the module will monitor the power-on environment. When the platform is stationary, the module will switch to ‘Static Boot’, otherwise ‘Dynamic Boot’ will be used. Note that under rare conditions, the module makes bad decisions. ‘Auto Mode’ may also take longer time to boot. As such, it is recommended to explicitly tell the module which mode to boot if the user scenario is known. Calibration Panel The calibration panel can be opened through the button as shown in Figure 23.
Sensor Fusion Sensor output then continues to ‘Sensor fusion’, an internal algorithm used to combine sensor data to provide stable output. Figure 25: Data path (Partial, Sensor Fusion) Please note that for TM100 series, the Gain setting for Accelerometer is not available Inside the ‘Sensor fusion’ block, there are: • 'GyroErrFilter': a functionality that compensates for gyroscope error during run time.
Communication Protocol The last part of the data-path refers to ‘Communication protocol’ between TransducerM and PC (or any other device acquiring data from the TransducerM). Figure 27: Configuring Communication Protocol Here, you’re able to set the following: • ‘Power-on Silent Time’: This setting defines the time since power-on during which the TransducerM will not spontaneously send out any data package.
Increase Output Rate To increase the output data rate (i.e. the number of data packages per second received by the host reading TransducerM), simply do the following: • For TM200 series, use a higher UART baudrate (such as 921600 bps). • Reduce ‘Inhibit Time’ (can be as small as zero). The ‘Inhibit Time’ specifies the minimum time interval between two data packages. Please refer to the section ‘Communication Protocol’ on page 17 for more details. • Save the setting and restart TransducerM.
X-Y Display X-Y Display plots calibrated RAW sensor data from multiple axes of Accelerometer and Magnetometer into a single 2D plot (one per instrument). For it to work, it is necessary to have the ‘Raw data’ output enabled, as shown in Figure 31. The red curve indicates X-Axis data, green for Y-Axis and blue for Z-Axis.
Data Recorder The ImuAssistant has build-in data recorder function. TransducerM output displayed in ImuAssistant can be logged into files. Select Data Types to be Recorded To use the data recorder, firstly we need to select the data types to be logged. This is done by enabling one or more output types in the data-manipulation portion of the user interface, as shown in Figure 33 (the data types within the confine of the red polygon).
Click the 'Stop & Save' button when the data recording is finished. This will make ImuAssistant flush unsaved data in the volatile memory and write into files located in the hard-drive of your computer and then close the files. The data recorder panel shows 'Files saved successfully' shortly after, as demonstrated in Figure 36, which indicates you are safe to close the ImuAssistant without losing any data.
Use SYD Dynamics Communication Library With TransducerM, SYD Dynamics provides dedicated communication library in source code to ease the development effort required while integrating the TransducerM into your target systems.
// header.fromId tells us from which TransducerM the data comes. switch (header.cmd) { // Step 3.2: header.cmd tells what kind of data is inside the payload. case EP_CMD_ACK_:{ // We can use a switch() as demonstrated here to do different Ep_Ack ep_Ack; // tasks for different types of data. if(EP_SUCC_ == eOD.Read_Ep_Ack(&ep_Ack)){ } }break; case EP_CMD_Q_S1_E_:{ Ep_Q_s1_e ep_Q_s1_e; if(EP_SUCC_ == eOD.Read_Ep_Q_s1_e(&ep_Q_s1_e)){ // Step 3.
Avoid Buffer Overflow In the section ‘Increase Output Rate’ on page 18 we mentioned how to increase the data output rate of TransducerM. To be able to fully make use of the output data stream and avoid buffer overflow in your host system, the following tips are suggested.
Write Your Own Communication Library You can write your own communication library, if you are working on a target system that neither supports C++ nor C compiler. IMPORTANT: If your system does support C/C++ compiler, we would strongly recommend the communication library provided by SYD Dynamics for easy maintenance and technical support. It also saves plenty time implementing your own communication library.
EasyProtocol This section describes how EasyProtocol layer is implemented. Overview of EasyProtocol The EasyProtocol layer provides a service to convert between Objects and Raw data streams. As illustrated by Figure 40. A Data Package is a Raw data stream representation of an Object. Both are carrying the same main information.
The allocation of the 11-bit device ID is as follows: Device ID Description 0x0000 Broadcasting address. 0x0001 Means the address is undefined. 0x0002 Refers to the host address (usually, PC or other device reading TransducerM data can be regarded as the host). 0x0064 ~ 0x07FF This is the normal TransducerM sensor node address range (which is the same as the Node ID specified in the ImuAssistant. Please refer to section 'TransducerM – Node ID, Firmware Version, UUID' on page 16).
Object Types Below lists the supported Object types of TransducerM. About Endianness and Format TransducerM follows Little-Endian format. The float number always consists of 4 bytes and is according to IEEE standard for floating-point arithmetic (IEEE 754). Please also refer to section 'Example of EasyProtocol' on page 32 for detailed numerical interpenetration examples.
Euler Angles Object Identifier: 34 (decimal) Bytes Message Data Type Unit Description Time Stamp 32-bit unsigned integer Micro-seconds (uS) Time stamp since TransducerM start. Caution about over-flow every 1.19 hours. When overflow occurs, the time stamp is reset to zero and then accumulates from there on.
Gravity Object Identifier: 36 (decimal) Bytes Message Data Type Unit Description Time Stamp 32-bit unsigned integer Micro-seconds (uS) Time stamp since TransducerM start. Caution about over-flow every 1.19 hours. When overflow occurs, the time stamp is reset to zero and then accumulates from there on.
fine performance. The TransducerM technical specification applies when the system reaches at least at this service level. 5 Very Good Service – All functions available and provide very good performance. For example, for a complete Status Object data package received, such as 'aa551016ec41007e405b5c080b2642330305004062', the system status is represented by 0x05 and 0x00, where the first byte received is 0x05, which in binary format is 0000 0101 (bigendian), or 1010 0000 (little-endian), which means QoS[2..
For C-Style programming, the Request Object is defined as below typedef struct{ uint8 cmdRequest; uint8 notUsed[3]; } Ep_Request; // the command requested // the padding at the end of the structure Example of EasyProtocol In-depth Case Study TransducerM uses Little Endian conversion when mapping data to the memory.
According to descriptions on 'Roll, Pitch, Yaw' Object on page 28, the first four bytes represent an unsigned 32-bit integer 0x1338f5a0 (which is 322500000 in decimal), which means the time stamp is 322.500000 seconds. The fifth to the eighth bytes represents an IEEE-754 Floating Point number 0x3f04b6af (which is 0.51841253 in decimal), which means the Roll angle measured is 0.51841253 degree.