IE处理惯导数据的方法文档格式.docx

上传人:b****6 文档编号:20463354 上传时间:2023-01-23 格式:DOCX 页数:20 大小:680.89KB
下载 相关 举报
IE处理惯导数据的方法文档格式.docx_第1页
第1页 / 共20页
IE处理惯导数据的方法文档格式.docx_第2页
第2页 / 共20页
IE处理惯导数据的方法文档格式.docx_第3页
第3页 / 共20页
IE处理惯导数据的方法文档格式.docx_第4页
第4页 / 共20页
IE处理惯导数据的方法文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

IE处理惯导数据的方法文档格式.docx

《IE处理惯导数据的方法文档格式.docx》由会员分享,可在线阅读,更多相关《IE处理惯导数据的方法文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

IE处理惯导数据的方法文档格式.docx

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数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1