main.cpp
上传用户:wyp_nj
上传日期:2022-05-03
资源大小:484k
文件大小:2k
源码类别:

GPS编程

开发平台:

Visual C++

  1. // 本程序实现matrix类
  2. // 对matrix类的定义
  3. #include "matrix.h"
  4. #include "DR_GPS_EKF.h"
  5. void main(void)
  6. {
  7. double axdr,aydr;             //DR得到加速度
  8. double dyaw;                  //DR得到的航向角速率
  9. double longps0=116.0666672/180*pi; //初始经度  ??
  10. double latgps0=39.14999941/180*pi; //初始纬度  ??
  11. double longps,latgps;         //GPS得到的经纬度
  12.     double vegps,vngps;           //GPS得到的位置、速度
  13. double yaw=0;                 //航向角的初值(初始位置决定)??
  14. double dr[7]={0,0,0,0,0,0,0}; //DR导航数据(位置速度角度)初值为0
  15. double gps[6]={0,0,0,0,0,0};  //GPS导航数据(位置速度角度)初值为0
  16.     FILE *fpdr,*fdr;                   //打开DR数据文件的指针
  17.     FILE *fpgps,*fgps;                  //打开GPS数据文件的指针
  18. FILE *fekf;                   //写入Kalman滤波数据的指针
  19. if((fpgps=fopen("gps.txt","rb"))!=NULL) //打开DR数据文件
  20. cout<<"can open the file gps.txt"<<"n"; //打开GPS数据文件
  21. if((fpdr=fopen("dr.txt","rb"))!=NULL)
  22. cout<<"can open the file dr.txt"<<"n";
  23. if((fdr=fopen("DR_.txt","w"))!=NULL)
  24. cout<<"can open the file DR.txt"<<"n";
  25. if((fgps=fopen("GPS_.txt","w"))!=NULL)
  26. cout<<"can open the file GPS.txt"<<"n";
  27. if((fekf=fopen("EKF.txt","w"))!=NULL)
  28. cout<<"can open the file EKF.txt"<<"n";
  29.   
  30. while( !feof( fpdr ) )            //采6000组数据
  31. {
  32.         fscanf(fpgps,"%lf %lf %lf %lf",&longps,&latgps,&vegps,&vngps);//读入GPS的采集数据:东北向加速度和经纬度
  33. GPS(gps,vegps,vngps,longps,latgps,longps0,latgps0);//改变GPS导航数据(位置速度)
  34. fprintf(fgps,"%lf %lf %lf %lfn",gps[0],gps[1],gps[2],gps[3],gps[4],gps[5]);
  35. fscanf(fpdr,"%lf %lf %lf",&dyaw,&axdr,&aydr );//读入DR的采集数据:X、Y轴上的加速度和航向角速率
  36. DR(dr,axdr*g,aydr*g,dyaw); //改变DR导航数据(位置速度加速度角度)
  37. fprintf(fdr,"%lf %lf %lf %lf %lfn",dr[0],dr[1],dr[2],dr[3],dr[6]);
  38. EKF(dr,gps,ekf,longps0,latgps0); //Kalman函数改变组合导航数据和DR数据
  39.         fprintf(fekf,"%lf %lf %lf %lf %lf %lf %lf %lf %lfn",
  40. ekf[0],ekf[1],ekf[2],ekf[3],ekf[4],
  41. ekf[5],ekf[6],ekf[7],ekf[8]);
  42.        //?();                       //调用画图函数
  43. }
  44. fclose( fpdr );                  //关闭dr数据文件
  45. fclose( fpgps );                 //关闭gps数据文件
  46. fclose( fpdr );                  //关闭DR数据文件
  47. fclose( fgps );                  //关闭GPS数据文件
  48. fclose( fekf);                   //关闭EKF数据文件
  49. }