Wireless Stepwise Dead Reckoning PDR with oblu

Similar documents
Osmium. Integration Guide Revision 1.2. Osmium Integration Guide

Long-term Performance Evaluation of a Foot-mounted Pedestrian Navigation Device

3V TRANSCEIVER 2.4GHz BAND

Mercury technical manual

On the noise and power performance of a shoe-mounted multi-imu inertial positioning system

Pedestrian Navigation System Using. Shoe-mounted INS. By Yan Li. A thesis submitted for the degree of Master of Engineering (Research)

MISB RP 1107 RECOMMENDED PRACTICE. 24 October Metric Geopositioning Metadata Set. 1 Scope. 2 References. 2.1 Normative Reference

MISB ST STANDARD. 27 February Metric Geopositioning Metadata Set. 1 Scope. 2 References. 2.1 Normative Reference

Cost efficient design Operates in full sunlight Low power consumption Wide field of view Small footprint Simple serial connectivity Long Range

ROTRONIC HygroClip Digital Input / Output

Cooperative localization (part I) Jouni Rantakokko

DEEJAM: Defeating Energy-Efficient Jamming in IEEE based Wireless Networks

Wireless Sensor Networks

NavShoe Pedestrian Inertial Navigation Technology Brief

LORD MANUAL 3DM-GQ4-45. Data Communications Protocol

CANopen Programmer s Manual Part Number Version 1.0 October All rights reserved

ECE 5325/6325: Wireless Communication Systems Lecture Notes, Spring 2013

Cost efficient design Operates in full sunlight Low power consumption Wide field of view Small footprint Simple serial connectivity Long Range

OSPF Enhanced Traffic Statistics for OSPFv2 and OSPFv3

Cooperative localization by dual foot-mounted inertial sensors and inter-agent ranging

Introduction. DRAFT DRAFT DRAFT JHU/APL 8/5/02 NanoSat Crosslink Transceiver Software Interface Document

Telemetry formats and equations of Painani-2 Satellite

Data and Computer Communications

LORD DATA COMMUNICATIONS PROTOCOL MANUAL 3DM -GX5-45. GNSS-Aided Inertial Navigation System (GNSS/INS)

Artificial Beacons with RGB-D Environment Mapping for Indoor Mobile Robot Localization

ECE 5325/6325: Wireless Communication Systems Lecture Notes, Spring 2013

IMU Platform for Workshops

USB 3.1 ENGINEERING CHANGE NOTICE

Autonomous Underwater Vehicle Navigation.

HG G B. Gyroscope. Gyro for AGV. Device Description HG G B. Innovation through Guidance. Autonomous Vehicles

Experiment on signal filter combinations for the analysis of information from inertial measurement units in AOCS

CMPS09 - Tilt Compensated Compass Module

OSPF Enhanced Traffic Statistics

CANopen Programmer s Manual

MXD2125J/K. Ultra Low Cost, ±2.0 g Dual Axis Accelerometer with Digital Outputs

Intelligent Infrared CO2 Module (Model: MH-Z19)

Application Note AN 102: Arduino I2C Interface to K 30 Sensor

BVW Series DVW Series DNW Series HDW Series

Indoor navigation with smartphones

Peripheral Sensor Interface for Automotive Applications

ANALYSIS OF GPS SATELLITE OBSERVABILITY OVER THE INDIAN SOUTHERN REGION

MCT U.I. Driver Reference Manual Motor Control Technologies; LLC

Technical Manual. CruizCore R1350N Rev Copyright Microinfinity Co., Ltd.

BW-IMU200 Serials. Low-cost Inertial Measurement Unit. Technical Manual

HG1120 INERTIAL MEASUREMENT UNIT (IMU) Installation and Interface Manual

C Mono Camera Module with UART Interface. User Manual

P UAV Telemetry Detailed Design Review Documents February 18, 2010

ANT+ Device Profile HEART RATE MONITOR

Functions of several variables

K-Band Doppler Sensor Module

ESRPB / EDRPB - EASYFIT BLUETOOTH SINGLE / DOUBLE ROCKER PAD

Image Extraction using Image Mining Technique

PTM 215B Dolphin Bluetooth Pushbutton Transmitter Module USER MANUAL PTM 215B DOLPHIN BLUETOOTH PUSHBUTTON TRANSMITTER MODULE

Improved Pedestrian Navigation Based on Drift-Reduced NavChip MEMS IMU

Wireless Communications

ETSI TS V1.1.1 ( )

ASCENTIS: Planetary Ascent Vehicle FES Tool

Orientus Reference Manual

ETSI TS V1.1.1 ( ) Technical Specification

B RoboClaw 2 Channel 30A Motor Controller Data Sheet

Implementing Logic with the Embedded Array

DATA ENCODING TECHNIQUES FOR LOW POWER CONSUMPTION IN NETWORK-ON-CHIP

Generic Bathymetry Data - Interface Control Document

A Simple Smart Shopping Application Using Android Based Bluetooth Beacons (IoT)

DRG-Series. Digital Radio Gateway. Tait P25 CCDI Tier-2 (TM9400 Series Mobile Radio) Digital Radio Supplement

ASC IMU 7.X.Y. Inertial Measurement Unit (IMU) Description.

1 General Information... 2

INDOOR HEADING MEASUREMENT SYSTEM

Draft Amendment 1 to Recommendation G.8271 draft for consent

I2C Encoder. HW v1.2

Some results on optimal estimation and control for lossy NCS. Luca Schenato

Undefined Obstacle Avoidance and Path Planning

Wireless Tilt Sensor User Guide VERSION 1.2 OCTOBER 2018

Wireless Acceleration-Based Movement Sensor User Guide VERSION 1.2 OCTOBER 2018

Low Power with Long Range RF Module DATASHEET Description

IMU60 Inertial Measurement Unit

CANopen Programmer s Manual

Computer Numeric Control

RedPitaya. FPGA memory map

Peripheral Sensor Interface for Automotive Applications

Sensing and Perception: Localization and positioning. by Isaac Skog

SELF STABILIZING PLATFORM

Embedded Control Project -Iterative learning control for

Implementation of Kalman Filter on PSoC-5 Microcontroller for Mobile Robot Localization

DNP V3.00 Protocol Assignments

Inertial Sensors. Ellipse Series MINIATURE HIGH PERFORMANCE. Navigation, Motion & Heave Sensing IMU AHRS MRU INS VG

Balancing Bi-pod Robot

RB-Dev-03 Devantech CMPS03 Magnetic Compass Module

Application Programming Interface for the Radio Bridge Console VERSION 1.0 DECEMBER 2018

Servo Switch/Controller Users Manual

Migrating from the 3DM-GX3 to the 3DM-GX4

PLazeR. a planar laser rangefinder. Robert Ying (ry2242) Derek Xingzhou He (xh2187) Peiqian Li (pl2521) Minh Trang Nguyen (mnn2108)

Peripheral Sensor Interface for Automotive Applications

Application Note AN041

Gesture Identification Using Sensors Future of Interaction with Smart Phones Mr. Pratik Parmar 1 1 Department of Computer engineering, CTIDS

MXD7210GL/HL/ML/NL. Low Cost, Low Noise ±10 g Dual Axis Accelerometer with Digital Outputs

HTC Vive Tracker Developer Guidelines Ver. 1.5

Configuring OSPF. Information About OSPF CHAPTER

MATH 12 CLASS 9 NOTES, OCT Contents 1. Tangent planes 1 2. Definition of differentiability 3 3. Differentials 4

AstroDev Helium Radios

Transcription:

Application Note Wireless Stepwise Dead Reckoning PDR with oblu Revision 1.0 R&D Centre: GT Silicon Pvt Ltd D-201, Type1, VH Extension, IIT Kanpur Kanpur (UP), India, PIN 208016 Tel: +91 512 259 5333 Fax: +91 512 259 6177 Email: info@gt-silicon.com URL: www.inertialelements.com www.gt-silicon.com 2016, GT Silicon Pvt Ltd, Kanpur, India w w w. o b l u. i o h e l l o @ o b l u. i o Page 1

Revision History Revision Revision Date Updates 1.0 19 Oct 2016 Initial version w w w. o b l u. i o h e l l o @ o b l u. i o Page 2

Purpose & Scope This document lists down the instructions to construct stepwise dead reckoning (SWDR) data in global (user s) reference frame on an application platform, while using Bluetooth interface for data transmission. It also contains pseudo-code required for this purpose. Please refer embedded code for better understanding. Other Reference: oblu Integration Guide w w w. o b l u. i o h e l l o @ o b l u. i o Page 3

Wireless Stepwise Dead Reckoning with an Application Platform How to construct tracked path profile of the wearer of oblu, when the Bluetooth interface is used for data transmission, is described here. ZUPT-aided Inertial Navigation System (Displacement & Heading change sensor) Commands for START, SWDR Data, STOP Displacement (x, y, z) 64-bytes SWDR data over wireless Orientation (Around z-axis) SWDR Data ACK dx dy dz da Rotation & Accumulation Xoblu x y z Tracked Path! oblu Application Platform Figure 5 Interfacing of oblu with an application platform w w w. o b l u. i o h e l l o @ o b l u. i o Page 4

Command Flow Sequence Step 1: START - Start receiving data packet from oblu Step 2: ACK - Send acknowledgement for last data packet received from oblu Step 3: SWDR - Perform stepwise dead reckoning (SWDR) on the received data (Repeat Step 2 and Step 3 until STOP command is received. On receiving STOP command, execute Step 4) Step 4: STOP - (i) Stop processing in oblu (ii) Stop all outputs in oblu w w w. o b l u. i o h e l l o @ o b l u. i o Page 5

Description Step 1: START Start receiving data packet from oblu Command to START transmitting stepwise dead reckoning data consists of 3 bytes: {0x34, 0x00, 0x34} START command results in following: A. oblu transmits 4 bytes acknowledgement in response to START command from the application platform. "A0 34 00 D4" A0: Acknowledgement state 14 = Start command state 00 D4 = Checksum B. Followed by 4-byte acknowledgement, oblu sends out 64-bytes tracking data in form of packets via wireless communication. Below figure illustrates how the packets look like: Header Payload Check sum B00 B01 B02 B03 B04 B05 B58 B59 B60 B61 B62 B63 B00: State of the Header B01-B02: Data packet number B03: Number of bytes in Payload B04-B07: dx: Displacement in x (Type float) B08-B11: dy: Displacement in y (Type float) B12-B15: dz: Displacement in z (Type float) B16-B19: da: Change in angle around z axis (Type float) B20-B59: 10 entries (4 bytes each) of a 4x4 symmetric covariance matrix B60-B61: Step counter B62-B63: Check sum Figure 1 Data packet for stepwise dead reckoning Below is a data packet example: w w w. o b l u. i o h e l l o @ o b l u. i o Page 6

Figure 2 Total data packet size is 64 bytes. There are 4 header bytes - one for state, two for data packet number and one for Payload size. Number of bytes in Payload is 58. The last 2 bytes are for checksum. Data Packet Description These packets consist of 64 bytes. 1. Header: First 4 bytes are Header. a. Among these 4 bytes first is the header which is STATE_OUTPUT_HEADER which is 170 (0xAA). b. 2 nd and 3 rd byte jointly tells the data packet number sent by the device since the beginning of stepwise dead reckoning. Thus the packet number is a 16-bits variable. c. 4 th byte depicts the payload i.e. the number of bytes (0x3A) this data packet contains which consists of required information asked by the user. 2. Payload: Next is the payload, which consisted of 14 elements of type float thus comprising of 14*4=56 bytes. a. First 4 elements consisted of the delta vector i.e. the change in position x, y, z and the angle of rotation around z-axis (the change in the angle of the x-y plane). As these elements are of type float, thus are of 32 bits. The change in position is between two successive ZUPT instances, i.e. the displacement vector from one step to the next one. b. The other 10 elements of the payload are used to form the covariance matrix, which is a 4x4 symmetric matrix, thus 10 elements. These are not used in the step-wise dead reckoning. These are used in data fusion from two oblu devices in case of dual foot mounted system. 3. Step Counter: Next two bytes consisted of step counter, which is a counter taking record of ZUPT instances observed. This is essentially number of times velocity of oblu goes down below predefined threshold. Hence it is the number of steps taken by the wearer, if oblu is used for footmounted pedestrian tracking. 4. Checksum: The last two bytes of 64 bytes are consisted of check sum which is sum of all the bytes received prior to these. These are used to cross-check correctness of the data transferred. w w w. o b l u. i o h e l l o @ o b l u. i o Page 7

Step 2: ACK - Send acknowledgement for last data packet received from oblu ACK consists of 5 bytes: - 1st byte: 01-2nd byte: P1 (First byte of data packet number of last data packet received) - 3rd byte: P2 (Second byte of data packet number of last data packet received) - 4th byte: Quotient of {(1+P1+P2) div 256} - 5th byte: Remainder of {(1+P1+P2) div 256} Pseudo code for ACK generation: i=0; for(j=0; j<4; j++) { header[j]=buffer[i++]& 0xFF; // 4-bytes assigned to HEADER; buffer is the 64 bytes data packet from oblu } packet_number_1=header[1]; // First byte of data packet number packet_number_2=header[2]; // Second byte of data packet number ack = createack(ack,packet_number_1,packet_number_2); // Acknowledgement created <code to send acknowledgement> //ACKNOWLEDGEMENT SENT // HOW TO CREATE ACKNOWLEDGEMENT // ACK consists of 5 bytes createack(byte[] ack, int packet_number_1, int packet_number_2) { ack[0]=0x01; // 1 st byte ack[1]= (byte)packet_number_1; // 2 nd byte ack[2]= (byte)packet_number_2; // 3 rd byte ack[3]= (byte)((1+packet_number_1+packet_number_2-(1+packet_number_1+packet_number_2) % 256)/256); // 4 th byte Quotient of {(1+P1+P2) div 256} ack[4]= (byte)((1+packet_number_1+packet_number_2) % 256); // 5 th byte- Remainder of {(1+P1+P2) div 256} return ack; } w w w. o b l u. i o h e l l o @ o b l u. i o Page 8

Step 3: SWDR - Perform stepwise dead reckoning (SWDR) on the received data oblu transmits tracking data with respect to its own frame which itself is not fixed with respect to the user s global reference frame. Therefore the data should undergo rotational transformation before being presented to the end user in a global reference frame. (Here global refers to the coordinate axis in which the system is initialized.) The first four bytes of Payload are the position and heading change vector, i.e. dx, dy, dz, da (da is the change in angle of rotation about z-axis). These values are the output from the device at every ZUPT instance (ZUPT instance = Foot at complete standstill = Step detection). As mentioned earlier, each set of delta values describe movement between two successive steps. The delta values prior and after each ZUPT instance, are independent to each other as the system is reset every ZUPT, i.e. the delta values in one data packet is independent of data value in data packet transmitted just before, just after and all other. The position and heading change vector are with reference to the coordinate frame of last ZUPT instance. The da corresponds to the deviation in the orientation of oblu. It is rotation of the x-y plane about the z- axis, and z-axis is always aligned with the gravity. The da is thus used for updating the orientation of the system, and obtaining the global reference frame. The two dimensions of displacement vector (dx, dy) are transformed to the global frame by applying rotation and thus (x,y) in the global frame is obtained. As we do not consider any change in alignment in z-axis, updating the z coordinate is performed by simply adding present dz to the z obtained for previous ZUPT. Thus x,y,z coordinates in the global reference frame are obtained at every ZUPT. Pseudo code for construction of tracked path: x_sw[0]=x_sw[1]=x_sw[2]=x_sw[3]=0.0; // Initialize once // (x_sw[0], x_sw[1], x_sw[2]) = Final (X,Y,Z) in the user s reference frame // x_sw[3] = Cumulative change in angle around z-axis in the user s ref frame // x_sw[0], x_sw[1], x_sw[2] and x_sw[3] are float (IEEE754 Single precision 32-bits) packet_number_1=header[1]; // First byte of data packet number packet_number_2=header[2]; // Second byte of data packet number //DO FOLLOWING AFTER SENDING THE ACKNOWLEDGEMENT packet_number = packet_number_1*256 + packet_number_2; //PACKAGE NUMBER ASSIGNED if(packet_number_old!= packet_number) // Perform Stepwise Dead Reckoning on receiving new data packet { for(j=0;j<4;j++) // Only first 4 4-bytes data packets are required dx[j]=(double)payload[j];// Refer Fig 1& 2 for Payload; dx[]- float (IEEE754 Single precision 32-bits) // (dx[0],dx[1],dx[2]) = Displacement in (x,y,z) in Oblu s reference frame // dx[3] = Change in angle around z axis, as indicated by Oblu // Note: The first position of Oblu defines origin of user s reference frame. This means that the start point would always appear as origin in the user s reference frame stepwise_dr_tu(); // Perform Stepwise Dead Reckoning on the received data w w w. o b l u. i o h e l l o @ o b l u. i o Page 9

} packet_number_old=packet_number; // STEPWISE DEAD RECKONING void stepwise_dr_tu() { sin_phi=(float) Math.sin(x_sw[3]); // cos_phi=(float) Math.cos(x_sw[3]); // delta[0]=cos_phi*dx[0]-sin_phi*dx[1]; // Transform / rotate two dimensional displacement vector (dx[0], dx[1]) to the user s reference frame delta[1]=sin_phi*dx[0]+cos_phi*dx[1]; // Transform / rotate two dimensional displacement vector (dx[0], dx[1]) to the user s reference frame delta[2]=dx[2]; // Assuming only linear changes along z-axis x_sw[0]+=delta[0]; // Final X in the user s reference frame x_sw[1]+=delta[1]; // Final Y in the user s reference frame x_sw[2]+=delta[2]; // Final Z in the user s reference frame x_sw[3]+=dx[3]; // Cumulative change in orientation in the user s reference frame distance+=math.sqrt((delta[0]*delta[0]+delta[1]*delta[1]+delta[2]*delta[2])); // Distance of the tracked data path } w w w. o b l u. i o h e l l o @ o b l u. i o Page 10

Step 4: STOP - (i) Stop processing in Oblu (ii) Stop all outputs in oblu (i) Stop Processing in Oblu by sending 3 bytes command: {0x32, 0x00, 0x32} (ii) Stop all outputs in Oblu by sending 3 bytes command : {0x22, 0x00, 0x22} w w w. o b l u. i o h e l l o @ o b l u. i o Page 11