IE处理惯导数据的方法.docx
- 文档编号:1828888
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:20
- 大小:779.96KB
IE处理惯导数据的方法.docx
《IE处理惯导数据的方法.docx》由会员分享,可在线阅读,更多相关《IE处理惯导数据的方法.docx(20页珍藏版)》请在冰豆网上搜索。
IE处理惯导数据的方法
三十三所惯导和里程计数据的处理方法
说明
运用WaypointInertialExplorer软件对三十三所采集的惯导数据和里程计数据,结合Novtal的GPS数据进行处理得到最终的pos数据。
原始数据的预处理
由于三十三所的惯导采集的数据格式是。
IMUUTC格式的数据(包含惯导和里程计数据),WaypointInertialExplorer软件对此格式不识别,需要进行格式转换:
(以2015年3月4日良乡采集的试验数据为例)
1).IMUUTC转换为。
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代码进行转换,提取所需的惯导和里程计数据,代码如下:
CFileDialogdlg(TRUE,".IMUUTC”,”*。
IMUUTC",OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,
"IMUFile(*。
IMUUTC)|*。
IMUUTC||”,NULL);
if(dlg.DoModal()!
=IDOK)return;
CStringfilename=dlg。
GetPathName();//获得打开的文件名称
FILE*fp;
if((fp=fopen(filename,"r"))==NULL)
{
MessageBox(”文件打不开");
return;
}
FILE*fpw,*dmrfp;
CStringBinFileName,DmrFileName;
BinFileName=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格式的头文件信息(根据所使用的里程计信息)
charszHdr1;
szHdr1='$’;
charszHdr2;
szHdr2='D’;
charszHdr3;
szHdr3=’M';
charszHdr4;
szHdr4=’I';
charszHdr5;
szHdr5='R’;
charszHdr6;
szHdr6=’A’;
charszHdr7;
szHdr7='W’;
charszHdr8;
szHdr8=’\0';
shortsHdrSize;
sHdrSize=512;
shortsRecSize;
sRecSize=16;
shortsValueType;
sValueType=0;
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);
//读取原始文件的变量
intrecord_num;
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—1ifnotknown
doubledTime;
unsignedlonglValue;//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);
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*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(&sSy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IE 处理 导数 方法
![提示](https://static.bdocx.com/images/bang_tan.gif)