《IE管理方案计划惯导数据的方法.doc》由会员分享,可在线阅读,更多相关《IE管理方案计划惯导数据的方法.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-三十三所惯导和里程计数据的处理方法说明运用Waypoint Inertial Explorer软件对三十三所采集的惯导数据和里程计数据,结合Novtal的GPS数据进行处理得到最终的pos数据。原始数据的预处理由于三十三所的惯导采集的数据格式是.IMUUTC格式的数据(包含惯导和里程计数据),Waypoint Inertial Explorer软件对此格式不识别,需要进行格式转换:(以2015年3月4日良乡采集的试验数据为例)1).IMUUTC转换为.bin格式(惯导数据)和.dmr格式(里程计数据)AIMU原始测量数据,数据格式如下:BYTE btemp1,btemp2;fscanf(F_
2、IMUUTC,%ld %d %d %lf %lf %lf %lf %lf %lf %ld %d %lf ,&(ImuAst.PC),&(btemp1),&(btemp2),&(Wibb0),&(Wibb1),&(Wibb2),&(Aibb0),&(Aibb1),&(Aibb2),&(ODOMETERInfo.Npulse),&(CtrlData.GpsSynFlag),&(CtrlData.UTCTime);ImuAst.PC : int类型 IMU帧计数 每5ms加1btemp1 :回到基准点标志btemp2 :停止标志Wibb :陀螺数据,单位:rad/s;Aibb :加表数据,单位:m/
3、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代码进行转换,提取所需的惯导和里程计数据,代码如下:CFileDialog
4、 dlg(TRUE,.IMUUTC,*.IMUUTC,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,IMU File(*.IMUUTC)|*.IMUUTC|,NULL);if(dlg.DoModal() != IDOK) return;CString filename = dlg.GetPathName();/获得打开的文件名称FILE *fp;if(fp = fopen(filename,r) = NULL)MessageBox(文件打不开);return ;FILE *fpw,*dmrfp; CString BinFileName,DmrFileName; BinF
5、ileName = filename.Left(filename.GetLength()-7)+.bin;/转换后bin格式的文件名DmrFileName = filename.Left(filename.GetLength()-7)+.dmr;/转换后dmr格式的文件名fpw = fopen(BinFileName,wb); if(fpw = NULL) return ;dmrfp = fopen(DmrFileName,wb);if(dmrfp = NULL) return; /设置dmr格式的头文件信息(根据所使用的里程计信息) char szHdr1;szHdr1=$;char szH
6、dr2;szHdr2=D;char szHdr3;szHdr3=M;char szHdr4;szHdr4=I;char szHdr5;szHdr5=R;char szHdr6;szHdr6=A;char szHdr7;szHdr7=W;char szHdr8;szHdr8=0;short sHdrSize;sHdrSize=512;short sRecSize;sRecSize=16; short sValueType;sValueType=0;short sMeasType;sMeasType=2;/1量距离,2量速度short sDIM;sDIM=1;short sRes;sRes=3;s
7、hort sDistanceType;/可选的/ sDistanceType=1;short sVelocityType; /量距单位,1-m/s or 2-ticks/ssVelocityType=2;double dScale;dScale=1.0;char szAxisName48=L,e,f,t,0;/,可选的double dWheelSize;dWheelSize=0.315; / 实际的轮胎长度long ITicksPerRevolution;ITicksPerRevolution=180; /轮胎走一圈脉冲个数char *cExtra2=new char420;/未赋值,可选的m
8、emset(cExtra2,0,420);cExtra2=Write by zzz;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)
9、;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,size
10、of(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);/读取原始文件的变量int record_
11、num;int flag1;int flag2;double gx,gy,gz,ax,ay,az;int odo;int GpsSynFlag;double gpstime;/.bin文件变量long scale=1000000;/比例系数long lgx,lgy,lgz,lax,lay,laz;/.dmr文件的数据记录变量short sSync;sSync=65518;/set to 0xffeeshort sWeek;sWeek=-1;/ GPS week number, Set to -1 if not knowndouble dTime;unsigned long lValue; /
12、values (counts)lValue=0; do /读取原文件数据 fscanf(fp,%ld,&record_num); fscanf(fp,%ld,&flag1); fscanf(fp,%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
13、);if(feof(fp)break;/提取.bin文件数据 gx=gx/3.14159265358979323846*180;/陀螺计数据x由弧度每秒转换为度每秒gy=gy/3.14159265358979323846*180; /陀螺计数据y由弧度每秒转换为度每秒gz=gz/3.14159265358979323846*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*s
14、cale);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;lVal
15、ue+=odo;fwrite(&sSync,sizeof(short),1,dmrfp);fwrite(&sWeek,sizeof(short),1,dmrfp);fwrite(&dTime,sizeof(double),1,dmrfp);fwrite(&lValue,sizeof(unsigned long),1,dmrfp); while(!feof(fp);fclose(fp); fclose(fpw);fclose(dmrfp);MessageBox(IMA转换为BIN和DMR格式处理完成!);2)Waypoint Inertial Explorer软件转换.bin文件为.imr文件打
16、开转换选项的界面,选择要转换的.bin文件IMU Profiles选项中点击NEW根据已有惯导的信息(之前A部分已提供)建立一个新的模型设置完成之后点击convet,转换为所需的.imr文件,点击关闭。运用Waypoint Inertial Explorer软件处理惯导和GPS数据1) 新建一个工程文件打开project wizard,新建一个工程路径和名称。添加流动站数据和惯导数据(上面已经预处理好的)点击下一步,默认不做修改。点击下一步点击下一步增加基站数据默认选择,点击下一步,选择基站数据文件。点击下一步,设置基站的坐标和天线高信息点击下一步,默认选择点击下一步,完成工程文件的创建。2) 做GPS数据差分处理处理完成后,得到差分后的轨迹图:3) 运用惯导和里程计数据做紧耦合处理打开紧耦合功能选项:点击IMU Settings 设置IMU相关参数,GPS天线与惯导的相对位置,初始化和结束化的方式和时间。设置里程计数据参数设置误差模型点击应用确定处理,得到融合惯导和里程计之后的轨迹输出所需的POS数据。