IE处理惯导数据的方法Word格式文档下载.docx
《IE处理惯导数据的方法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《IE处理惯导数据的方法Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
陀螺数据,单位:
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);
szHdr3,sizeof(char),1,dmrfp);
szHdr4,sizeof(char),1,dmrfp);
szHdr5,sizeof(char),1,dmrfp);
szHdr6,sizeof(char),1,dmrfp);
fwrite(&szHdr7,sizeof(char),1,dmrfp);
szHdr8,sizeof(char),1,dmrfp);
fwrite(&sHdrSize,sizeof(short),1,dmrfp);
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);
szAxisName,sizeof(char),48,dmrfp);
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,"
,&gz);
fscanf(fp,”%lf"
ax);
fscanf(fp,”%lf"
ay);
fscanf(fp,"
%lf"
az);
fscanf(fp,”%ld"
&odo);
%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);
lgx,sizeof(long),1,fpw);
lgy,sizeof(long),1,fpw);
fwrite(&lgz,sizeof(long),1,fpw);
fwrite(&lax,sizeof(long),1,fpw);
fwrite(&lay,sizeof(long),1,fpw);
laz,sizeof(long),1,fpw);
//提取.dmr格式文件
dTime=gpstime;
lValue+=odo;
sSync,sizeof(short),1,dmrfp);
fwrite(&sWeek,sizeof(short),1,dmrfp);
dTime,sizeof(double),1,dmrfp);
lValue,sizeof(unsignedlong),1,dmrfp);
}while(!
feof(fp));
fclose(fp);
fclose(fpw);
fclose(dmrfp);
MessageBox(”IMA转换为BIN和DMR格式处理完成!
”);
2)WaypointInertialExplorer软件转换.bin文件为。
imr文件
打开转换选项的界面,选择要转换的。
bin文件
IMUProfiles选项中点击NEW根据已有惯导的信息(之前A部分已提供)建立一个新的模型
设置完成之后点击convet,转换为所需的.imr文件,点击关闭。
运用WaypointInertialExplorer软件处理惯导和GPS数据
1)新建一个工程文件
打开projectwizard,新建一个工程路径和名称。
添加流动站数据和惯导数据(上面已经预处理好的)
点击下一步,默认不做修改.
点击下一步
点击下一步增加基站数据
默认选择,点击下一步,选择基站数据文件。
点击下一步,设置基站的坐标和天线高信息
点击下一步,默认选择
点击下一步,完成工程文件的创建。
2)做GPS数据差分处理
处理完成后,得到差分后的轨迹图:
3)运用惯导和里程计数据做紧耦合处理
打开紧耦合功能选项:
点击IMUSettings
设置IMU相关参数,GPS天线与惯导的相对位置,初始化和结束化的方式和时间。
设置里程计数据参数
设置误差模型
点击应用—确定—处理,得到融合惯导和里程计之后的轨迹
输出所需的POS数据。