the multi-sensor navigation analysis tool (musnat) architecture, lidar… · the multi-sensor...
Post on 05-Jun-2020
20 Views
Preview:
TRANSCRIPT
1ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
The Multi-Sensor Navigation Analysis Tool (MuSNAT) Architecture, LiDAR, GPU/CPU-GNSS-Signalprocessing
D. Dötterböck, H. Gomez-Martinez, M. Subhan Hammed, F. Hörkner, T. Kraus, D. Maier, T. Pany, D. Sanchez-Morales, A. Schütz, Universität der Bundeswehr München, Neubiberg, Germany
P. Klima, D. Ebert, Axtesys GmbH, Graz, Austria
2ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Presentation Outline
• Motivation
• MuSNAT Overview
• Processing Core / Analysis-Visualization
• Input Sources
• IF samples (File, TCP/IP), LiDAR, IMU, Trajectory, RINEX
• LiDAR-Processing
• Data-flow, algorithm, libraries, results
• Precision GNSS-Signal Processing
• Code/phase tracking performance verification
• GPU implementation for unlimited channels?
• Integration filter
• GNSS/IMU RTK-LIB extension
• SQL-Logging
• Automated Test Framework
3ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Motivation
State of the art for autonomous driving: GNSS (PPP) + Inertial + LiDAR/Camera/Radar
Highly complex processing algorithms- GNSS processing (cycle-slips, multipath, PPP)- Inertial strapdown- Visual odometry (LiDAR clustering, matching, …)- Integration filter (IMU parameters and ambiguity
estimation)- Integrity
New boundary conditions- New GNSS signals (multi-carrier, authentication, higher frequencies, … )- New signal processing methods (meta-signal, Bayesian direct position estimation),- Antenna array processing- GNSS/LTE/5G integration
Analysis tool to get consistent data insight until the lowest possible level.
Debugging, debugging, debugging, …
4ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
MuSNAT-Core• Microsoft Visual Studio 2017
• C++ for processing
• C# for GUI and data management
• ipexSR GNSS software receiver
• Intel Performance Primitives (IPP)• signal processing CPU
• nVidia CUDA• signal processing GPU
• Point Cloud Library (PCL) 1.9• LiDAR processing
• RTK-LIB • RTK, PPP, GNSS/IMU-filter
• SQlite• Archiving processing results
• Eigen• Matrix operations
• Qt, OpenCV, …• Auxiliary functions
Data inputGNSS signal
processing
Sensor data
processing
Navigation processing
Real-time capable navigation engine but focus on post-processing
5ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Data flow in MuSNAT
Multi-Sensor Navigation Analysis Tool GNSS Raw Data
Signal ProcessingNavigation Processing
Sensors’ Data
From file/frontend
Message Decoding
Acquisition &Tracking
NavigationModules
From file/usb/ethernet
Multi GNSS RTK
GNSS SPP
IMU Processing
RelNavLiDAR
LiDAR reader
GNSS/IMU/LiDAR KF
6ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
SQL-Logging
• All MuSNAT-Core processing results stored in a single SQL database• IF signal spectra, acquisition plots, tracking correlators, discriminators, multi-
correlator, GNSS raw data (pseudoranges, …), … (see next slide )
• To be read and visualized by MuSNAT-Analyzer or Matlab, python, …
• Data collection MuSNAT-Core• serialization of a multi-threaded process
• SQL database structure created automatically• Object-Relational-Mapper (ORM)
• Written via SQlite• open source framework
• Identified to be potentially time-critical task!
7ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
MuSNAT-Analyzer
• Time synchronized analysis
• Raw Data• GNSS samples• Sensor data
• Signal processing• Correlator, discriminator values• Acquisition plots, multi-correlator
• RINEX-level data
• Navigation processing• Position, velocities, accuracy, residuals• Ambiguity ratio, RTK/PPP metrics• GNSS/IMU biases, attitude, …• LiDAR TBD
8ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Data Sources
• GNSS/LTE/5G samples• File input
• Internal reader
• Support of ION SDR sample standard (V0.4)
• TCP/IP input (real-time)• Interface to NI USRP
• Generic real-time interface to other frontends
• Sensor data• LiDAR
• TCP/IP (real-time), file input (PCL based)
• IMU• File based, real-time (USB?) in development
National Instruments NI-2955• Four RF channels
• 0.01 – 6 GHz, BW < 80 MHz• All GNSS, C-Band, LTE/5G
• PCIe (x4) (832 MByte/s)• Sensor input port
• programmable• Clock I/O• On-board FPGA
• Gain control• Interference mitigation• Decimation, packaging, buffering
• First target version (LabView)• 2 channels @ 20 MHz, 16-bit I/Q
• Final version (LabView+FPGA)• 4 channels @ 80 MHz, 2-4 bit I/Q
9ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Non-Standard Input Sources
• Direct input of RINEX files (instead of IF samples)• Bypass GNSS-signal processing, time-saving
• Analysis of commercial receivers, Android raw data, …
• Trajectory input• Used if software is run a
GNSS signal generator
• Transceiver concept
10ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
LiDAR – Data flow in MuSNAT
Frame 1
Frame 2
. . . . . . . .Frame
9Frame
10
10 revolutions -> 10 frames (Point Cloud objects)
p1p2...pn
p1p2...pn
p1p2...pn
Frame 1
Frame 2
. . . . . . . .Frame
9Frame
10
Epoch t Epoch t+1
The time of the 1st data point represents the timestamp of the frame
𝑝1𝑣1
𝑝9𝑣9
. . . . . . . .𝑝1𝑣1
𝑝9𝑣9
. . . . . . . .
Auxiliary position to be used by another navigation module (e.g. GNSS/INS/LiDAR filter)
LiDAR reader
Relative navigation with
LiDAR
12ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GNSS – Signal Tracking - CPU
• Correlator based tracking
• Different modes• Precise: text book like
• Fast: numerical approx.
• Verification methodology
• GPS/Gal. L1/L5/E1/E5a/E5b
• Code discriminator noise compared against semi-analytic computations
MuSNAT Loop Noise Plots
Precise mode
13ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GNSS – Signal Tracking - CPU
L1/E1/L2CM Phase Noise
Code/Phase noise vs C/No
L1/E1/L2CM Code Noise L5/E5a/E5b Code Noise
L5/E5a/E5b Phase Noise
Verification of MuSNAT in a zero-baseline setup with commercial receiverPrecise mode
14ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GPU – Signal Processing Motivation
• Why use graphics cards for GNSS signal processing?
• Ease of implementation• Use of high-level language
• R&D cost efficient (compared to FPGA)
• No implementation loss• Precise mode
• 16-bit signal processing
• No need for look-up-tables or other approximations
• Promise for a virtually unlimited number of channels?
15ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GPU – Replica Generation Sample Code// CUDA loop over all samplesfor (int k = index; k < N; k += stride){
// code replicafCodePhase = fIniCodePhase + k * fDeltaCodePhase;nSubchipIdx = floorf(fCodePhase);hSubChipValue = __half2half2(baseband[nSubchipIdx]);
// carrier replica (cos in .x, sin in .y)fCarrPhase = fIniPhase + k * fDeltaPhase;fCarrPhase = (fCarrPhase - floorf(fCarrPhase))*f2Pi; // phase computation done with 32-bit
floathCarrier = h2sin( // carrier NCO
__hadd2( __half2half2(
__float2half(fCarrPhase) // convert 32-bit phase to 16-bit
) , hCarrOffset ) // apply pi/2 offset for cosine
);
// productreplica[k] = __hmul2(hSubChipValue, hCarrier );
}
Code replica: generic waveform (BPSK, CBOC, TMBOC, …)Carrier replica
16ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GPU Numerical Performance Analysis
16 channels (E1B or E1C), 100 MHz, 256 correlators, coherent integration interval = 4 ms
17ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GPU correlator performance
• Replica generation• 4 ms replica, 100 MHz
• Divided into 2 batches
• ~16 µs measured from slide before
• Generation rate
𝑓𝑔 = 100 𝑀𝐻𝑧4𝑚𝑠
16µ𝑠= 25 Gsamples/s
• Dot-Product (=Correlation) • Computational performance
TFLOP, 16-bit, multiy-and-add
Signals read fromshared memory
Signals read fromGPU main memory
nVidia GPU RTX 2080 TiWindows 10WDDM driverNo overclocking
18ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GPU Architectural Constraints
• Theoretical limit #𝑁 of number of channels
• Replica generation limit
• #𝑁 <𝑓𝑔
𝑓𝑠= 250
• Correlation limits• Theoretical compute limit: #𝑁 <
𝐹
4𝑛𝑐𝑓𝑠= 2031
• Compute +memory limit:
• #𝑁 <𝐹𝑒𝑓𝑓
4𝑛𝑐𝑓𝑠= 78
• Evocation (launch) limit:• #𝑁 <
𝑇𝑐𝑜ℎ
𝑘𝑇𝑘𝑒𝑟= 38
Assumptions: sample rate 𝒇𝒔 =100 MHz, 𝒏𝒄 = 32 correlators, 𝐹 =26 TFLOP, 𝐹𝑒𝑓𝑓 =1 TFLOP, 𝑘 = 7 GPU kernel launches per interval and channel (current implementation)
𝑇𝑐𝑜ℎ = coherent integration time = 4 ms, 𝑇𝑘𝑒𝑟= time to launch one GPU kernel ~ 15 µs
#𝑁 <𝑇𝑐𝑜ℎ𝑘𝑇𝑘𝑒𝑟
= 888Combined launch
𝑘=7/24=0.3
19ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
GNSS/IMU (LiDAR) Integration Filter
• Based on RTK-LIB, co-op with Tokyo University of Marine Science
• GNSS/IMU Filter developed in RTK-LIB style• Pure C, Hand-coded matrix operations
• To be a built-in RTK-LIB feature, ensuring compatibility and ease of integration
• Support and distribution via RTK-LIB (github, RTK-LIB viewer)
• Filter• 15 states loose coupling
• Strapdown algorithm implemented using Euler angles or quaternions
• Filter position error estimation implemented using radians or meter
• Currently evaluated and tuned
20ION GNSS+ 2019Friday, Sep. 20, 3:42 p.m.
Automated Test Framework
• Jenkins▪ Automatically builds the current version of the MuSNAT
▪ Test the build with Skripts
▪ Evaluates the Test cases
▪ Provide statistics and trends
Integrated Test cases▪ RinexFilter / GnssInsFilter▪ Start-Stop / Receive Epoch Data▪ Memory Leak▪ Repetition▪ Signal Generator
Load:Signal generation
configuration
MuSNAT-CoreGenerate signal
stream
Check:- Run time
Load:Tracking/SPP configuration
Check:- SPP accuracy
- Signal strength
MuSNAT-CoreTracking/
Processing
Create positive output
Create negative output
Succeed?
Succeed?
true
false true
false
Signal Generator Test Procedure
Input (file based):- Time- Sampling rate - IF frequency- Satellite ephemeris- Trajectory/Position- Signal strength
GeneratedIF-Stream File
top related