260 likes | 364 Views
GPS-INS resampling & regularization. Final Presentation Annual project (Part A) Winter semester תש"ע ( (2009. Students: Oren Hyatt, Alex Dutov Supervisor: Mony Orbach. Abstract:. Problem: A GPS system isn’t fast enough, to meet updating requirements of high speed systems.
E N D
GPS-INSresampling & regularization Final PresentationAnnual project (Part A)Winter semesterתש"ע ((2009 Students: Oren Hyatt, Alex Dutov Supervisor: MonyOrbach
Abstract: • Problem: A GPS system isn’t fast enough, to meet updating requirements of high speed systems. • Solution: Implementation of a system that integrates GPS, INS, and a particles filter.
Project’s goals: • Implementation of the resampling & regularization parts. • Interface with the other parts of the system. • Meet hardware\software requirements (see specs.).
Resampling W[0.0.28] Index_out[0.16.0] Reject insignificant particles. Duplicate remained particles, with respect to their relative weight. Format’s Notation: X.YY.ZZZ ~ sign ; number ; fraction
Resampling (cont.) Footnotes: Rand(); can ran at 122 [Mhz], pre-called to boost performance. Could not further decrease storage cells. In order to get the exact same results, as C’s, use Rand.enableseed(var_seed); before the iteration.
Regularization Step was divided to Two parts: Step I: Step II:
Regularization Step I: sqp_in[23..0]*** Xp_reg_new[105..0] epsilon[23..0]** N(0,1) hopt[52..0]* const *hopt is a constant **epsilon is normally distributed ***Generated by lab’s: D1828
Regularization (cont.) Step I Footnotes: *used a high margin of safety. Rand.norm() is problematic. Throughput of Matrix multiplication step, could be doubled. With low cost of resources (later). According to D1828: sqp_in , takes more than allowed time. Thus, latency would be unacceptable.
Regularization Step II: [1.1.22] qi=sign(q1) Limit to [-pi,pi] convert Euiler to quternions q1[1.1.22] [1.1.22] q2[1.1.22] q3[1.1.22] [1.1.22] q4[1.1.22] Input is output of StepI All 3 angles, are normalized: 1=2*pi [rad] Range of both angles and q’s is: [-1,1]
Regularization StepII(cont.) Footnotes: Could successfully avoid usage of SQRT(), which saved both speed and recourses. A room for trade-off between area and time, in using trig. Fuctions.
Major difficulties: Seed of the randomly generated numbers, depends on the number of times the method is being called. Normally distributed numbers, generated in an acceptance-rejection method.
Solutions: Uniformly generated numbers, would be generated in the exact same method as in C’s library file. Each part would have it’s own generating object. As acceptance-rejection method, could not be used, ditched and an alternative method was used.
Justification of the choice made: Can be used in synchronic logic. Not necessarily more costly in time, nor in HW resources. Working.
Implications of the choice made: The generation is very costly in both time and logic (could be even worse). We rely on mathematical functions, and any usage in them, should be done carefully. Since there is no faster reasonable way to generate the numbers. And the method is called a large number of times. A bottleneck was created.
What should, and could be done. • A thorough simulation with regularizations steps integrated. • Would be done. • An enveloping state machine, to interact with the FIFO. • Would be done, Approx. two weeks. • There’s a way to double regularization’s speed, for each particle, with a low HW cost. • A detailed guide would be added to our book. • Further analyzing normal distribution component. • Return on time spent is too low.
Lessons learnt: • As time passed, and problems arise , the Gantt should be modified. • A periodically meeting, with the other teams, including a summary to all other teams. Could help a lot.
Q&A Thank you.
Resampling (cont.) Footnotes: Rand(); can ran at 122 [Mhz], pre-called to boost performance. Could not further decrease storage cells. In order to get the exact same results, as C’s, use Rand.enableseed(var_seed); before the iteration.
Resampling (cont.) Footnotes: Rand(); can ran at 122 [Mhz], pre-called to boost performance. Could not further decrease storage cells. In order to get the exact same results, as C’s, use Rand.enableseed(var_seed); before the iteration.
Index_out = [0,0,2,3,4,5,5,5,5,5] * Offset of 1, because matlab starts arrays with index 1.
Reg. 1 *See lab’s project: D0928- system architecture and math functions
Matlab HW Error [pct] Matlab HW Error [pct] …. …..
Regularization StepII(cont.) Footnotes: Could successfully avoid usage of SQRT(), which saved both speed and recourses. A room for trade-off between area and time, in using trig. Fuctions.
Total hardware report. Regularization’s matrix mult + xp_reg_new.
Logic simulation. Regularization’s stepII (e2q_all -> end). q1 q2 q3 q4 Phy Psi Theta Expected: 200000 E00000 E00000 E00000
Regularization (cont.) Step I