IE处理惯导数据的方法文档格式.docx
《IE处理惯导数据的方法文档格式.docx》由会员分享,可在线阅读,更多相关《IE处理惯导数据的方法文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
![IE处理惯导数据的方法文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/23/46101617-d33e-4851-9185-a9fc0ea402af/46101617-d33e-4851-9185-a9fc0ea402af1.gif)
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,"
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'
};
//,可选的
doubledWheelSize;
dWheelSize=0.315;
//实际的轮胎长度
longITicksPerRevolution;
ITicksPerRevolution=180;
//轮胎走一圈脉冲个数
char*cExtra2=newchar[420];
//未赋值,可选的
memset(cExtra2,0,420);
cExtra2="
Writebyzzz"
fwrite(&
szHdr1,sizeof(char),1,dmrfp);
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);
szHdr7,sizeof(char),1,dmrfp);
szHdr8,sizeof(char),1,dmrfp);
sHdrSize,sizeof(short),1,dmrfp);
sRecSize,sizeof(short),1,dmrfp);
sValueType,sizeof(short),1,dmrfp);
sMeasType,sizeof(short),1,dmrfp);
sDIM,sizeof(short),1,dmrfp);
sRes,sizeof(short),1,dmrfp);
sDistanceType,sizeof(short),1,dmrfp);
sVelocityType,sizeof(short),1,dmrfp);
dScale,sizeof(double),1,dmrfp);
szAxisName,sizeof(char),48,dmrfp);
dWheelSize,sizeof(double),1,dmrfp);
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,"
flag1);
flag2);
%lf"
gx);
fscanf(fp,"
gy);
gz);
ax);
ay);
az);
odo);
GpsSynFlag);
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);
lgz,sizeof(long),1,fpw);
lax,sizeof(long),1,fpw);
lay,sizeof(long),1,fpw);
laz,sizeof(long),1,fpw);
//提取.dmr格式文件
dTime=gpstime;
lValue+=odo;
sSync,sizeof(short),1,dmrfp);
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数据。