SlideShare a Scribd company logo
1 of 11
Download to read offline
w w w . o b l u . i o h e l l o @ o b l u . i o Page 1
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
Application Note
Wireless Stepwise Dead Reckoning
“PDR with oblu”
Revision 1.0
R&D Centre:
GT Silicon Pvt Ltd
171, MIG, Awadhpuri,
Block B, Lakhanpur,
Kanpur (UP), India, PIN – 208024
Tel: +91 512 258 0039
Fax: +91 512 259 6177
Email: hello@oblu.io
URL: www.oblu.io
© 2017, 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 2
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
Revision History
Revision Revision Date Updates
1.0 19 Oct 2016 Initial version
1.1 17 Apr 2017 Modified Co a d Flow Seque ce
1.2 20 May 2017 Fixed typing error in START description
w w w . o b l u . i o h e l l o @ o b l u . i o Page 3
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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 4
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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.
SWDR Data ACK
Commands for START, SWDR Data,
STOP
Orientation
(Around z-axis)
Displacement (x, y, z)
64-bytes SWDR data over wireless
link
’ ’z’
dx
dy
dz Rotation
&
Accumulation
oblu Application Platform
Xoblu
ZUPT-aided
Inertial
Navigation
System
(Displacement
& Heading
change sensor)
Tracked
Path !
da
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 5
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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 - oblu sends DATA packet containing displacement and orientation information for each
stride, at every step, to Xoblu. (step = whenever detects zero motion or standstill is detected).
Step 4: Xoblu acknowledges receiving last DATA packet by sending appropriate ACK to oblu. (Cycle of
steps 3 and 4 is repeated until Xoblu sends STOP. On receiving STOP command, oblu executes Step 5)
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 6
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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
34 = 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:
Below is a data packet example:
B00B01B02B03B04B05 B58B59B60B61B62B63
Header Payload
Check
sum
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
B62-B63: Check sum
B60-B61: Step counter
Figure 1 Data packet for stepwise dead reckoning
w w w . o b l u . i o h e l l o @ o b l u . i o Page 7
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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. 2nd
and 3rd
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. 4th
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 foot-
mounted 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 8
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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; // 1st
byte
ack[1]= (byte)packet_number_1; // 2nd
byte
ack[2]= (byte)packet_number_2; // 3rd
byte
ack[3]= (byte)((1+packet_number_1+packet_number_2-(1+packet_number_1+packet_number_2) %
256)/256); // 4th
byte – Quotient of {(1+P1+P2) div 256}
ack[4]= (byte)((1+packet_number_1+packet_number_2) % 256); // 5th
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 9
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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 10
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
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 11
Application Note
Doc: oblu-SWDR-AN-1v2.pdf
Revision: 1.2
Release Date: 20 May 2017
Step 4: Xoblu acknowledges receiving last DATA packet by sending appropriate ACK to
“oblu”.
(Cycle of steps 3 and 4 is repeated until Xoblu sends STOP. On receiving STOP command, oblu executes
Step 5)
Follow the steps laid down in Step 2 for generating ACK for the received DATA packet.
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}

More Related Content

What's hot

Seq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) modelSeq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) model佳蓉 倪
 
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...Tomonari Masada
 
Quantum Machine Learning for IBM AI
Quantum Machine Learning for IBM AIQuantum Machine Learning for IBM AI
Quantum Machine Learning for IBM AISasha Lazarevic
 
Large scale logistic regression and linear support vector machines using spark
Large scale logistic regression and linear support vector machines using sparkLarge scale logistic regression and linear support vector machines using spark
Large scale logistic regression and linear support vector machines using sparkMila, Université de Montréal
 
Time series predictions using LSTMs
Time series predictions using LSTMsTime series predictions using LSTMs
Time series predictions using LSTMsSetu Chokshi
 
Jeff Johnson, Research Engineer, Facebook at MLconf NYC
Jeff Johnson, Research Engineer, Facebook at MLconf NYCJeff Johnson, Research Engineer, Facebook at MLconf NYC
Jeff Johnson, Research Engineer, Facebook at MLconf NYCMLconf
 
[241]large scale search with polysemous codes
[241]large scale search with polysemous codes[241]large scale search with polysemous codes
[241]large scale search with polysemous codesNAVER D2
 
Faster Practical Block Compression for Rank/Select Dictionaries
Faster Practical Block Compression for Rank/Select DictionariesFaster Practical Block Compression for Rank/Select Dictionaries
Faster Practical Block Compression for Rank/Select DictionariesRakuten Group, Inc.
 
Porting and optimizing UniFrac for GPUs
Porting and optimizing UniFrac for GPUsPorting and optimizing UniFrac for GPUs
Porting and optimizing UniFrac for GPUsIgor Sfiligoi
 
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...Alex Pruden
 
Ns2: OTCL - PArt II
Ns2: OTCL - PArt IINs2: OTCL - PArt II
Ns2: OTCL - PArt IIAjit Nayak
 
ZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their ApplicationsZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their ApplicationsAlex Pruden
 
Quantum Computing and Qiskit
Quantum Computing and QiskitQuantum Computing and Qiskit
Quantum Computing and QiskitPooja Mistry
 
Ns2: Introduction - Part I
Ns2: Introduction - Part INs2: Introduction - Part I
Ns2: Introduction - Part IAjit Nayak
 
Named entity recognition - Kaggle/Own data
Named entity recognition - Kaggle/Own dataNamed entity recognition - Kaggle/Own data
Named entity recognition - Kaggle/Own dataPetr Lorenc
 

What's hot (20)

Soft Heaps
Soft HeapsSoft Heaps
Soft Heaps
 
Seq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) modelSeq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) model
 
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...
Accelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Al...
 
Cnq1
Cnq1Cnq1
Cnq1
 
Quantum Machine Learning for IBM AI
Quantum Machine Learning for IBM AIQuantum Machine Learning for IBM AI
Quantum Machine Learning for IBM AI
 
C07.heaps
C07.heapsC07.heaps
C07.heaps
 
Large scale logistic regression and linear support vector machines using spark
Large scale logistic regression and linear support vector machines using sparkLarge scale logistic regression and linear support vector machines using spark
Large scale logistic regression and linear support vector machines using spark
 
Time series predictions using LSTMs
Time series predictions using LSTMsTime series predictions using LSTMs
Time series predictions using LSTMs
 
Jeff Johnson, Research Engineer, Facebook at MLconf NYC
Jeff Johnson, Research Engineer, Facebook at MLconf NYCJeff Johnson, Research Engineer, Facebook at MLconf NYC
Jeff Johnson, Research Engineer, Facebook at MLconf NYC
 
[241]large scale search with polysemous codes
[241]large scale search with polysemous codes[241]large scale search with polysemous codes
[241]large scale search with polysemous codes
 
Faster Practical Block Compression for Rank/Select Dictionaries
Faster Practical Block Compression for Rank/Select DictionariesFaster Practical Block Compression for Rank/Select Dictionaries
Faster Practical Block Compression for Rank/Select Dictionaries
 
Porting and optimizing UniFrac for GPUs
Porting and optimizing UniFrac for GPUsPorting and optimizing UniFrac for GPUs
Porting and optimizing UniFrac for GPUs
 
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
 
Paralell
ParalellParalell
Paralell
 
Ns2: OTCL - PArt II
Ns2: OTCL - PArt IINs2: OTCL - PArt II
Ns2: OTCL - PArt II
 
ZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their ApplicationsZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their Applications
 
Quantum Computing and Qiskit
Quantum Computing and QiskitQuantum Computing and Qiskit
Quantum Computing and Qiskit
 
Sorting network
Sorting networkSorting network
Sorting network
 
Ns2: Introduction - Part I
Ns2: Introduction - Part INs2: Introduction - Part I
Ns2: Introduction - Part I
 
Named entity recognition - Kaggle/Own data
Named entity recognition - Kaggle/Own dataNamed entity recognition - Kaggle/Own data
Named entity recognition - Kaggle/Own data
 

Similar to Application Note: Wireless Pedestrian Dead Reckoning with "oblu"

Oblu Integration Guide
Oblu Integration GuideOblu Integration Guide
Oblu Integration Guideoblu.io
 
Unit 3 Arithmetic building blocks and memory Design (1).pdf
Unit 3 Arithmetic building blocks and  memory Design (1).pdfUnit 3 Arithmetic building blocks and  memory Design (1).pdf
Unit 3 Arithmetic building blocks and memory Design (1).pdfShreyasMahesh
 
Comparison among Different Adders
Comparison among Different Adders Comparison among Different Adders
Comparison among Different Adders iosrjce
 
a technical review of efficient and high speed adders for vedic multipliers
a technical review of efficient and high speed adders for vedic multipliersa technical review of efficient and high speed adders for vedic multipliers
a technical review of efficient and high speed adders for vedic multipliersINFOGAIN PUBLICATION
 
Performance Analysis of DV-Hop Localization Using Voronoi Approach
Performance Analysis of DV-Hop Localization Using Voronoi ApproachPerformance Analysis of DV-Hop Localization Using Voronoi Approach
Performance Analysis of DV-Hop Localization Using Voronoi ApproachIJMER
 
Burrows wheeler based data compression and secure transmission
Burrows wheeler based data compression and secure transmissionBurrows wheeler based data compression and secure transmission
Burrows wheeler based data compression and secure transmissioneSAT Publishing House
 
Evaluation of High Speed and Low Memory Parallel Prefix Adders
Evaluation of High Speed and Low Memory Parallel Prefix AddersEvaluation of High Speed and Low Memory Parallel Prefix Adders
Evaluation of High Speed and Low Memory Parallel Prefix AddersIOSR Journals
 
Foot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made EasyFoot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made Easyoblu.io
 
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ Adder
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ AdderAn Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ Adder
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ AdderIJERA Editor
 
Development of an Algorithm for 16-Bit WTM
Development of an Algorithm for 16-Bit WTMDevelopment of an Algorithm for 16-Bit WTM
Development of an Algorithm for 16-Bit WTMIOSR Journals
 
Performance analysis of viterbi decoder for wireless applications
Performance analysis of viterbi decoder for wireless applicationsPerformance analysis of viterbi decoder for wireless applications
Performance analysis of viterbi decoder for wireless applicationsacijjournal
 
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...inventionjournals
 
Area, Delay and Power Comparison of Adder Topologies
Area, Delay and Power Comparison of Adder TopologiesArea, Delay and Power Comparison of Adder Topologies
Area, Delay and Power Comparison of Adder TopologiesVLSICS Design
 
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...AIRCC Publishing Corporation
 

Similar to Application Note: Wireless Pedestrian Dead Reckoning with "oblu" (20)

Oblu Integration Guide
Oblu Integration GuideOblu Integration Guide
Oblu Integration Guide
 
Unit 3 Arithmetic building blocks and memory Design (1).pdf
Unit 3 Arithmetic building blocks and  memory Design (1).pdfUnit 3 Arithmetic building blocks and  memory Design (1).pdf
Unit 3 Arithmetic building blocks and memory Design (1).pdf
 
Comparison among Different Adders
Comparison among Different Adders Comparison among Different Adders
Comparison among Different Adders
 
a technical review of efficient and high speed adders for vedic multipliers
a technical review of efficient and high speed adders for vedic multipliersa technical review of efficient and high speed adders for vedic multipliers
a technical review of efficient and high speed adders for vedic multipliers
 
Performance Analysis of DV-Hop Localization Using Voronoi Approach
Performance Analysis of DV-Hop Localization Using Voronoi ApproachPerformance Analysis of DV-Hop Localization Using Voronoi Approach
Performance Analysis of DV-Hop Localization Using Voronoi Approach
 
Sub1539
Sub1539Sub1539
Sub1539
 
Lecture set 5
Lecture set 5Lecture set 5
Lecture set 5
 
Burrows wheeler based data compression and secure transmission
Burrows wheeler based data compression and secure transmissionBurrows wheeler based data compression and secure transmission
Burrows wheeler based data compression and secure transmission
 
Evaluation of High Speed and Low Memory Parallel Prefix Adders
Evaluation of High Speed and Low Memory Parallel Prefix AddersEvaluation of High Speed and Low Memory Parallel Prefix Adders
Evaluation of High Speed and Low Memory Parallel Prefix Adders
 
Foot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made EasyFoot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made Easy
 
Survey on Prefix adders
Survey on Prefix addersSurvey on Prefix adders
Survey on Prefix adders
 
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ Adder
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ AdderAn Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ Adder
An Efficient High Speed Design of 16-Bit Sparse-Tree RSFQ Adder
 
L010137986
L010137986L010137986
L010137986
 
Development of an Algorithm for 16-Bit WTM
Development of an Algorithm for 16-Bit WTMDevelopment of an Algorithm for 16-Bit WTM
Development of an Algorithm for 16-Bit WTM
 
Performance analysis of viterbi decoder for wireless applications
Performance analysis of viterbi decoder for wireless applicationsPerformance analysis of viterbi decoder for wireless applications
Performance analysis of viterbi decoder for wireless applications
 
IJETT-V9P226
IJETT-V9P226IJETT-V9P226
IJETT-V9P226
 
Ca unit v 27 9-2020
Ca unit v 27 9-2020Ca unit v 27 9-2020
Ca unit v 27 9-2020
 
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...
Implementation and Simulation of Ieee 754 Single-Precision Floating Point Mul...
 
Area, Delay and Power Comparison of Adder Topologies
Area, Delay and Power Comparison of Adder TopologiesArea, Delay and Power Comparison of Adder Topologies
Area, Delay and Power Comparison of Adder Topologies
 
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...
Automated Information Retrieval Model Using FP Growth Based Fuzzy Particle Sw...
 

More from oblu.io

Multi Inertial Measurement Units (MIMU) Platforms: Designs & Applications
Multi Inertial Measurement Units (MIMU)  Platforms: Designs & ApplicationsMulti Inertial Measurement Units (MIMU)  Platforms: Designs & Applications
Multi Inertial Measurement Units (MIMU) Platforms: Designs & Applicationsoblu.io
 
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"oblu.io
 
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensor
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensorEvolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensor
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensoroblu.io
 
MIMUscope Instruction Manual
MIMUscope Instruction ManualMIMUscope Instruction Manual
MIMUscope Instruction Manualoblu.io
 
Schematic Diagram of "oblu"
Schematic Diagram of "oblu"Schematic Diagram of "oblu"
Schematic Diagram of "oblu"oblu.io
 
Foot Mounted Pedestrian Navigation Systems
Foot Mounted Pedestrian Navigation SystemsFoot Mounted Pedestrian Navigation Systems
Foot Mounted Pedestrian Navigation Systemsoblu.io
 
Demonstrating Pedestrian Navigation With Foot Sensors
Demonstrating Pedestrian Navigation With Foot SensorsDemonstrating Pedestrian Navigation With Foot Sensors
Demonstrating Pedestrian Navigation With Foot Sensorsoblu.io
 
Inertial Sensor Array Calibration Made Easy !
Inertial Sensor Array Calibration Made Easy !Inertial Sensor Array Calibration Made Easy !
Inertial Sensor Array Calibration Made Easy !oblu.io
 
Massive Sensors Array for Precision Sensing
Massive Sensors Array for Precision SensingMassive Sensors Array for Precision Sensing
Massive Sensors Array for Precision Sensingoblu.io
 
Foot-mounted Navigation Sensors
Foot-mounted Navigation SensorsFoot-mounted Navigation Sensors
Foot-mounted Navigation Sensorsoblu.io
 
An Experimental Study on a Pedestrian Tracking Device
An Experimental Study on a Pedestrian Tracking DeviceAn Experimental Study on a Pedestrian Tracking Device
An Experimental Study on a Pedestrian Tracking Deviceoblu.io
 
Programming Osmium MIMU4444 Using AVR Dragon
Programming Osmium MIMU4444 Using AVR DragonProgramming Osmium MIMU4444 Using AVR Dragon
Programming Osmium MIMU4444 Using AVR Dragonoblu.io
 
Programming Osmium MIMU22BT Using AVR Dragon
Programming Osmium MIMU22BT Using AVR DragonProgramming Osmium MIMU22BT Using AVR Dragon
Programming Osmium MIMU22BT Using AVR Dragonoblu.io
 
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Module
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation ModuleOsmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Module
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Moduleoblu.io
 
Osmium MIMU4444: Massive Multi-IMU Array
Osmium MIMU4444: Massive Multi-IMU ArrayOsmium MIMU4444: Massive Multi-IMU Array
Osmium MIMU4444: Massive Multi-IMU Arrayoblu.io
 
IPIN'14: Foot-Mounted Inertial Navigation Made Easy
IPIN'14: Foot-Mounted Inertial Navigation Made EasyIPIN'14: Foot-Mounted Inertial Navigation Made Easy
IPIN'14: Foot-Mounted Inertial Navigation Made Easyoblu.io
 

More from oblu.io (16)

Multi Inertial Measurement Units (MIMU) Platforms: Designs & Applications
Multi Inertial Measurement Units (MIMU)  Platforms: Designs & ApplicationsMulti Inertial Measurement Units (MIMU)  Platforms: Designs & Applications
Multi Inertial Measurement Units (MIMU) Platforms: Designs & Applications
 
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"
IEEE IoT Tutorial - "Wearable Electronics: A Designer's Perspective"
 
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensor
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensorEvolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensor
Evolution of a shoe-mounted multi-IMU pedestrian dead reckoning PDR sensor
 
MIMUscope Instruction Manual
MIMUscope Instruction ManualMIMUscope Instruction Manual
MIMUscope Instruction Manual
 
Schematic Diagram of "oblu"
Schematic Diagram of "oblu"Schematic Diagram of "oblu"
Schematic Diagram of "oblu"
 
Foot Mounted Pedestrian Navigation Systems
Foot Mounted Pedestrian Navigation SystemsFoot Mounted Pedestrian Navigation Systems
Foot Mounted Pedestrian Navigation Systems
 
Demonstrating Pedestrian Navigation With Foot Sensors
Demonstrating Pedestrian Navigation With Foot SensorsDemonstrating Pedestrian Navigation With Foot Sensors
Demonstrating Pedestrian Navigation With Foot Sensors
 
Inertial Sensor Array Calibration Made Easy !
Inertial Sensor Array Calibration Made Easy !Inertial Sensor Array Calibration Made Easy !
Inertial Sensor Array Calibration Made Easy !
 
Massive Sensors Array for Precision Sensing
Massive Sensors Array for Precision SensingMassive Sensors Array for Precision Sensing
Massive Sensors Array for Precision Sensing
 
Foot-mounted Navigation Sensors
Foot-mounted Navigation SensorsFoot-mounted Navigation Sensors
Foot-mounted Navigation Sensors
 
An Experimental Study on a Pedestrian Tracking Device
An Experimental Study on a Pedestrian Tracking DeviceAn Experimental Study on a Pedestrian Tracking Device
An Experimental Study on a Pedestrian Tracking Device
 
Programming Osmium MIMU4444 Using AVR Dragon
Programming Osmium MIMU4444 Using AVR DragonProgramming Osmium MIMU4444 Using AVR Dragon
Programming Osmium MIMU4444 Using AVR Dragon
 
Programming Osmium MIMU22BT Using AVR Dragon
Programming Osmium MIMU22BT Using AVR DragonProgramming Osmium MIMU22BT Using AVR Dragon
Programming Osmium MIMU22BT Using AVR Dragon
 
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Module
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation ModuleOsmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Module
Osmium MIMU22BT: A Micro Wireless Multi-IMU (MIMU) Inertial Navigation Module
 
Osmium MIMU4444: Massive Multi-IMU Array
Osmium MIMU4444: Massive Multi-IMU ArrayOsmium MIMU4444: Massive Multi-IMU Array
Osmium MIMU4444: Massive Multi-IMU Array
 
IPIN'14: Foot-Mounted Inertial Navigation Made Easy
IPIN'14: Foot-Mounted Inertial Navigation Made EasyIPIN'14: Foot-Mounted Inertial Navigation Made Easy
IPIN'14: Foot-Mounted Inertial Navigation Made Easy
 

Recently uploaded

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Application Note: Wireless Pedestrian Dead Reckoning with "oblu"

  • 1. w w w . o b l u . i o h e l l o @ o b l u . i o Page 1 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 Application Note Wireless Stepwise Dead Reckoning “PDR with oblu” Revision 1.0 R&D Centre: GT Silicon Pvt Ltd 171, MIG, Awadhpuri, Block B, Lakhanpur, Kanpur (UP), India, PIN – 208024 Tel: +91 512 258 0039 Fax: +91 512 259 6177 Email: hello@oblu.io URL: www.oblu.io © 2017, GT Silicon Pvt Ltd, Kanpur, India
  • 2. w w w . o b l u . i o h e l l o @ o b l u . i o Page 2 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 Revision History Revision Revision Date Updates 1.0 19 Oct 2016 Initial version 1.1 17 Apr 2017 Modified Co a d Flow Seque ce 1.2 20 May 2017 Fixed typing error in START description
  • 3. w w w . o b l u . i o h e l l o @ o b l u . i o Page 3 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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
  • 4. w w w . o b l u . i o h e l l o @ o b l u . i o Page 4 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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. SWDR Data ACK Commands for START, SWDR Data, STOP Orientation (Around z-axis) Displacement (x, y, z) 64-bytes SWDR data over wireless link ’ ’z’ dx dy dz Rotation & Accumulation oblu Application Platform Xoblu ZUPT-aided Inertial Navigation System (Displacement & Heading change sensor) Tracked Path ! da Figure 5 Interfacing of oblu with an application platform
  • 5. w w w . o b l u . i o h e l l o @ o b l u . i o Page 5 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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 - oblu sends DATA packet containing displacement and orientation information for each stride, at every step, to Xoblu. (step = whenever detects zero motion or standstill is detected). Step 4: Xoblu acknowledges receiving last DATA packet by sending appropriate ACK to oblu. (Cycle of steps 3 and 4 is repeated until Xoblu sends STOP. On receiving STOP command, oblu executes Step 5) Step 4: STOP - (i) Stop processing in oblu (ii) Stop all outputs in oblu
  • 6. w w w . o b l u . i o h e l l o @ o b l u . i o Page 6 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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 34 = 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: Below is a data packet example: B00B01B02B03B04B05 B58B59B60B61B62B63 Header Payload Check sum 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 B62-B63: Check sum B60-B61: Step counter Figure 1 Data packet for stepwise dead reckoning
  • 7. w w w . o b l u . i o h e l l o @ o b l u . i o Page 7 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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. 2nd and 3rd 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. 4th 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 foot- mounted 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.
  • 8. w w w . o b l u . i o h e l l o @ o b l u . i o Page 8 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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; // 1st byte ack[1]= (byte)packet_number_1; // 2nd byte ack[2]= (byte)packet_number_2; // 3rd byte ack[3]= (byte)((1+packet_number_1+packet_number_2-(1+packet_number_1+packet_number_2) % 256)/256); // 4th byte – Quotient of {(1+P1+P2) div 256} ack[4]= (byte)((1+packet_number_1+packet_number_2) % 256); // 5th byte- Remainder of {(1+P1+P2) div 256} return ack; }
  • 9. w w w . o b l u . i o h e l l o @ o b l u . i o Page 9 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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
  • 10. w w w . o b l u . i o h e l l o @ o b l u . i o Page 10 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 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 }
  • 11. w w w . o b l u . i o h e l l o @ o b l u . i o Page 11 Application Note Doc: oblu-SWDR-AN-1v2.pdf Revision: 1.2 Release Date: 20 May 2017 Step 4: Xoblu acknowledges receiving last DATA packet by sending appropriate ACK to “oblu”. (Cycle of steps 3 and 4 is repeated until Xoblu sends STOP. On receiving STOP command, oblu executes Step 5) Follow the steps laid down in Step 2 for generating ACK for the received DATA packet. 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}