IE处理惯导数据的方法.docx
《IE处理惯导数据的方法.docx》由会员分享,可在线阅读,更多相关《IE处理惯导数据的方法.docx(18页珍藏版)》请在冰豆网上搜索。
![IE处理惯导数据的方法.docx](https://file1.bdocx.com/fileroot1/2023-1/23/19d860c5-2639-46c0-86ff-28e39000593c/19d860c5-2639-46c0-86ff-28e39000593c1.gif)
IE处理惯导数据的方法
三十三所惯导和里程计数据的处理方法
说明
运用WaypointInertialExplorer软件对三十三所采集的惯导数据和里程计数据,结合Novtal的GPS数据进行处理得到最终的pos数据。
原始数据的预处理
由于三十三所的惯导采集的数据格式是」MUUTC格式的数据(包含惯导和里程计数据),WaypointInertialExplorer软件对此格式不识别,需要进行格式转换:
(以2015年3月4日良乡采集的试验数据为例)
1)」MUUTC转换为.bin格式(惯导数据)和.dmr格式(里程计数据)
A.IMU原始测量数据,数据格式如下:
BYTEbtemp1,btemp2;
fscanf(F_IMUUTC,"%ld%d%d%lf%lf%lf%lf%lf%lf%ld%d%lf
",&(ImuAst.PC),&(btemp1),&(btemp2),&(Wibb[0]),&(Wibb[1]),&(Wibb[2]),&(Aibb[0]),&(Aibb[1
]),&(Aibb[2]),&(ODOMETERInfo.Npulse),&(CtrlData.GpsSynFlag),&(CtrlData.UTCTime));
ImuAst.PC:
int类型IMU帧计数每5ms加1
btemp1:
回到基准点标志
btemp2:
停止标志
Wibb:
陀螺数据,单位:
rad/s;
Aibb:
加表数据,单位:
m/s/s;
ODOMETERInfo.Npulse:
里程计脉冲数,单位:
个,每个当量代表0.00175米
CtrlData.GpsSynFlag:
卫星同步脉冲标志,1:
有,0:
无
CtrlData.UTCTime:
IMU数据对应的UTC时间
其他已知信息:
惯导坐标定义:
x朝前,y朝上,z朝右
里程计在惯导中的位置:
x,z为0,y-0.17m,里程计在惯导下面17cm
频率200hz
加速度角速度的增量
里程计脉冲个数一圈180个脉冲
里程计周长315mm直径100毫米
一个脉冲1.75mm
B.运用VC代码进行转换,提取所需的惯导和里程计数据,代码如
下:
Cdlg(TRUE"」MUUTC","*.IMUUTC",OFN_HIDEREADONLOFN丄
"IMUFile(*IMUUTC)|*IMUUTC||",NULL;
if(dlg.DoModal()!
=IDOK)return;
CString=dlg.GetPathName();〃获得打开的文件名称
FILE*fp;
if((fp=fopen(,"r"))==NULL
{
MessageBoX"文件打不开");
return;
}
FILE*fpw,*dmrfp;
CStringBin,Dmr;
Bin=(()-7)+".bin";//转换后bin格式的文件名
Dmr=(()-7)+".dmr";//转换后dmr格式的文件名
fpw=fopen(Bin,"wb");
if(fpw==NULLreturn;
dmrfp=fopen(Dmr,"wb");
if(dmrfp==NULLreturn;
//设置dmr格式的头文件信息(根据所使用的里程计信息)
charszHdr1;
szHdr1='$';
charszHdr2;
szHdr2=D;
charszHdr3;
szHdr3='M';
charszHdr4;
szHdr4=T;
charszHdr5;
szHdr5='R';
charszHdr6;
szHdr6='A';
charszHdr7;
szHdr7='W;
charszHdr8;
szHdr8='\0';
shortsHdrSize;
sHdrSize=512;
shortsRecSize;
sRecSize=16;
shortsValueType;
sValueType=O;
shortsMeasType;
sMeasType=2;//1量距离,2量速度
shortsDIM;
sDIM=1;
shortsRes;
sRes=3;
shortsDistanceType;//可选的
//sDistanceType=1;
shortsVelocityType;//量距单位,1--m/sor2--ticks/s
sVelocityType=2;
doubledScale;
dScale=1.0;
charszAxisName[48]={'L','e','f','t','\0'};//,可选的doubledWheelSize;
dWheelSize=0.315;//实际的轮胎长度
longITicksPerRevolution;
ITicksPerRevolution=180;//轮胎走一圈脉冲个数
char*cExtra2=newchar[420];//未赋值,可选的memset(cExtra2,0,420);
cExtra2="Writebyzzz";|
fwrite(&szHdr1,
sizeof
(char),1,dmrfp);
fwrite(&szHdr2,
sizeof
(char),1,dmrfp);
fwrite(&szHdr3,
sizeof
(char),1,dmrfp);
fwrite(&szHdr4,
sizeof
(char),1,dmrfp);
fwrite(&szHdr5,
sizeof
(char),1,dmrfp);
fwrite(&szHdr6,
sizeof
(char),1,dmrfp);
fwrite(&szHdr7,
sizeof
(char),1,dmrfp);
fwrite(&szHdr8,
sizeof
(char),1,dmrfp);
fwrite(&sHdrSize,sizeof(short),1,dmrfp);
fwrite(&sRecSize,sizeof(short),1,dmrfp);
fwrite(&sValueType,sizeof(short),1,dmrfp);
fwrite(&sMeasType,sizeof(short),1,dmrfp);|
fwrite(&sDIM,sizeof(short),1,dmrfp);
fwrite(&sRes,sizeof(short),1,dmrfp);
fwrite(&sDistanceType,sizeof(short),1,dmrfp);
fwrite(&sVelocityType,sizeof(short),1,dmrfp);
fwrite(&dScale,sizeof(double),1,dmrfp);
fwrite(&szAxisName,sizeof(char),48,dmrfp);
fwrite(&dWheelSize,sizeof(double),1,dmrfp);
fwrite(&ITicksPerRevolution,sizeof(long),1,dmrfp);
fwrite(cExtra2,sizeof(char),420,dmrfp);
//读取原始文件的变量
intrecordnum;
intflag1;
intflag2;
doublegx,gy,gz,ax,ay,az;
intodo;
intGpsSynFlag;
doublegpstime;
〃.bin文件变量
longscale=1000000;〃比例系数
longlgx,lgy,lgz,lax,lay,laz;
〃.dmr文件的数据记录变量
shortsSync;
sSync=65518;//setto0xffee
shortsWeek;
sWeek=-1;〃GPSweeknumber,Setto-1ifnotknowndoubledTime;
unsignedlonglValue;//values(counts)
lValue=0;
do
{//
读取原文件数据
fscanf(fp,
"%ld",&record_num);
fscanf(fp,
fscanf(fp,
"%ld",&flagl);
"%ld",&flag2);
fscanf(fp,"%lf",&gx);
fscanf(fp,
"%lf",&gy);
fscanf(fp,
"%lf",&gz);
fscanf(fp,
"%lf",&ax);
fscanf(fp,
"%lf",&ay);
fscanf(fp,
"%lf",&az);
fscanf(fp,
"%ld",&odo);
fscanf(fp,
"%ld",&GpsSynFlag);
fscanf(fp,
"%lf",&gpstime);
if(feof(fp))
break;
//提取.bin文件数据
gx=gx/3.149323846*180;〃陀螺计数据x由弧度每秒转换为度每秒
gy=gy/3.149323846*180;//陀螺计数据y由弧度每秒转换为度每秒gz=gz/3.149323846*180;//陀螺计数据z由弧度每秒转换为度每秒
lgx=int(gx*scale);
lgy=int(gy*scale);
lgz=int(gz*scale);
lax=int(ax*scale);
lay=int(ay*scale);
laz=int(az*scale);
gpstime=gpstime+259200.0;//天秒转换成周秒
fwrite(&gpstime,sizeof(double),1,fpw);
fwrite(&lgx,sizeof(long),1,fpw);
fwrite(&lgy,sizeof(long),1,fpw);
fwrite(&lgz,sizeof(long),1,fpw);
fwrite(&lax,sizeof(long),1,fpw);
fwrite(&lay,sizeof(long),1,fpw);
fwrite(&laz,sizeof(long),1,fpw);
//提取.dmr格式文件
dTime=gpstime;
lValue+=odo;
fwrite(&sSync,sizeof(short),1,dmrfp);
fwrite(&sWeek,sizeof(short),1,dmrfp);
fwrite(&dTime,sizeof(double),1,dmrfp);
fwrite(&lValue,sizeof(unsignedlong),1,dmrfp);
}while(!
feof(fp));
fclose(dmrfp);
MessageBoX"IMA转换为BIN和DMR格式处理完成!
");
2)WaypointInertialExplorer软件转换.bin文件为.imr文件
打开转换选项的界面,选择要转换的.bin文件
*Waypoint1MUD拭aConversion
Input/OutputFiles
InputBinaryIMUFile
1毗濟e|
OutputWaypointBinaryFile
OutputWavpontASCII冋I廉Forviewingtheda血fiist1000epochs)
—OutputASCII
Paih:
□\U#er$Wjmni5t旧⑹W声斷八刍三所\罠乡数据吃30304官
IMUProfiles
HT
iMAFtFJI0>c1yMJOOOHztdAHFMS0-x1-y2-z200HziMAR_FMS-0-x~1-y~2<_40DHzidAR_RQH12000Hz21-y2ziMAA'VRU'20dec/h
NewCop^ibodilyDeleteRename
IMUProfiles选项中点击NEV根据已有惯导的信息(之前A部分已提供)建立一个新的模型
Profile:
iimu33
Sensor/TimingSettings|SensorOrisutationDecodlerSettings|
eixt石
Invers«Gyrotie:
p■
厂Data辽delt4t]
liooonoo.00000000(】/GyroSc»l<)
Bataisangularrale
AccjcIerameterMeasurements
InvergeAceielerometerScale|1000000.00000000(1/Accel
CD&taiedelt«v^lif*ieelerat
TimingSettirLgs
D&ta|200aQ(Hz;
GFS~IWUtisnie_tagbi|16r0000
—ByteOrder
<*Inti?
「Motorola
TimieTag:
Format
雷GPS:
5«c$^ds買駅k
UTCsecQudao£*reek
TimeTagSoiffce席GPSCorrectedTimi
GPSReceivedTime
康消I
设置完成之后点击convet,转换为所需的.imr文件,点击关闭
运用WaypointInertialExplorer软件处理惯导和GPS数据
1)新建一个工程文件
打开projectwizard,新建一个工程路径和名称。
pi.^auEL^ELSJJ-!
r"二、_r^〔們“「”nxym
添加流动站数据和惯导数据(上面已经预处理好的)
点击下一步,默认不做修改
ProjectWimd
r)AnIrnnnMri
rie-zsesuttrr*ri^te-akte^iL-adet-uls.CIjzJetoccutiDTi^
Ft^ngr仍卄*5「lOFb
EfXNfia-sjdanc」7^37eh^a20l5O3Cb
TJO'TE'ThisTTcnrrhr加app-irgpiningriknrr-fflr
IlVRiilbeD,j^--riae-~ibyleJurwIs^D-s.^errsJa_dnatc:
skikj-sFordi.yriglb轄■社算『也hdj鱼口过誹-m-uJltie,蛰』曲Output細ic/神底than阳昭"Ear
WKticalAHivnah^ghl
广UseadfsHcedn^h&dijieqptciauleiia口refe)
点击下一步
点击下一步增加基站数据
ActortcPerfDrn:
^rryertWir^rd
Kaser(■tster)Stallell's:
Youcafiaddm刪imunof8b翁estatic^iistvtpwproiect
AddStationf©nDownoadEdtStar洛n
RflK¥tStdt心r
Finsh
Descriotion
AddbasestoDOnfromGNS5d&tofik
Se5C:
":
nsb''/ihenyouasdoneaddn口basestatondata
£上一〉]取诸|
默认选择,点击下一步,选择基站数据文件。
点击下一步,默认选择
点击下一步,设置基站的坐标和天线高信息
点击下一步,完成工程文件的创建。
2)做GPS数据差分处理
Measurement
Process|
Ioiiosphere/L2
吕d1
FixedSt=iti匚GLONASS
21KAJl
-ProcessDirectiori
'•Both
ARTE
ProcessOstsType
■*Automatic
「Singhfnequencycamerphase
「DlibIFreciuBricycarrierphase
广C/AcodecnJy(DGPS)OccLpatiorimode
StaticIrntializaticr
<*FlcjatSQlLrtianartV-.R(seeKARopttDrs,engageinstatic)
厂Fixedstsrticsolutionforeachstartk?
session,seegeneraloptions}
IrtegerAmbiguityResolution
■*AutomaticOffOnManualengageonlyL^ingARTK
GPS+GlonassProceasing
ArtomartieGPSdnhy
CGP5+GLONASS
ProcessInFormation
D^esc:
jRun(1j
Lfaor:
Unkriown
应用CA)|
Process
处理完成后,得到差分后的轨迹图:
甸律5tffTfc-J?
Ft
jy*rr=iW3
Wilt翊両PPJ
3)运用惯导和里程计数据做紧耦合处理
打开紧耦合功能选项:
点击IMUSettings
设置IMU相关参数,GPS天线与惯导的相对位置,初始化和结束化的方式和时间。
Nuunt
INI|Nount|ZxrorM^d«l
SgWn|Gexier&l|Forvari|Inverse|GKS5|Alvan:
ed
FroccwirgDirection
ADu!
h「Fjiwcid「
U阿.|Unknown
硫定取消|症用CK)
ir/UProc?
jsing门
PNI|Mount]IrrorNoddUstrCndt
SyxtiiaGeneral|ForwardReverse|GMSS\Advmc«dMethodforknitidl內igrmcnl
広Staticcoaraealigim&renhy
'■Staticcoarse+fneali^nmert
P'TrnnJcrabgnmcrt(entsrkriowriattitude)erMi<~-
「KinMiafticdignmsnt
请定取消应用U)
设置里程计数据参数
设置误差模型
IMJ-^rocessnqbettn
SystemJ1L
EtteMcdd
2ek-tie[Qmodel
HettErrorModel
NovMelSP.MN亦恤ISPW(LM40INnv.^elSP^MiLN2(]01MovAldSP(\NlulFSl
liltdlSldr^dd'dDtvldtlonVduey
Hstg^iirATt:
|2.T77&fr-0Q2~|i.777flfr-fl£H~|t9Jd4s*^W~^pec)
Acre-IBias:
potywtm?
paxwv-no?
2OnODpgOrpinps/s^
GrytoDrrlt-
I?
777^4)05
[277MJ05
2.7^78e-OT5(oec^s)
SpectralValu^c(fquanffortof'
Misaliarwnent
|1'.2423e-003
[U42M03
[L242MO3
-ccelBibs
|j.lb23e-LLU)
|i1b/3e-L^4
imetes/s"^
GyoDntt:
loecsj
Fosuon.
1.(K>Me-DD3
I.OOOCe-CCia
1OOC-Oe-OO^frn/Ej
|1.0000«4}03
1{WDt-OQJ
10WDe4»3仙)
嗣炖red
UisrCm4s
|&^le-ODB
|3.7Wle-COB
|1.7MTe4»B
扇定|聴肖|应冃悶
点击应用一确定一处理,得到融合惯导和里程计之后的轨迹
输出所需的POS数据。