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

GPS编程

开发平台:

Visual C++

  1. #include "DR_GPS_EKF.h"
  2. #include <math.h>
  3. //将DR采集的x,y轴上的加速度和航向角速率转化为东北向位置和速度
  4. //参数是:存放导航数据的数组dr,DR采的x,y轴加速度,航向角速率
  5. void DR(double *pdr,double ax,double ay,double dy)
  6. {   
  7. double edr,ndr;     //DR的位置
  8.     double vedr,vndr;   //DR的速度
  9. double aedr,andr;   //DR在东北向的加速度
  10. double yaw;         //DR的航向角
  11. //DR的速度和位置递增
  12.     dy=dy/180*pi;       //将角度转化成弧度
  13. yaw=pdr[6];         //将前一时刻的航向角值赋给变量yaw
  14. yaw=yaw+dy*dt;      //航向角递增
  15. aedr=ax*sin(yaw)+ay*cos(yaw);//东向加速度递增
  16. andr=ax*cos(yaw)-ay*sin(yaw);//北向加速度递增
  17. vedr=pdr[2];        //将前一时刻的东向速度值赋给变量vedr
  18. vndr=pdr[3];        //将前一时刻的北向速度值赋给变量vndr
  19. vedr=vedr+aedr*dt;  //东向速度递增
  20. vndr=vndr+andr*dt;  //北向速度递增
  21. edr=pdr[0];         //将前一时刻的东向位置值赋给变量edr
  22. ndr=pdr[1];         //将前一时刻的北向位置值赋给变量ndr
  23. edr=edr+vedr*dt;    //东向位置递增
  24. ndr=ndr+vndr*dt;    //北向位置递增
  25. //修改数组dr的内容(角度)
  26. pdr[0]=edr;         //东向位置
  27. pdr[1]=ndr;         //北向位置
  28. pdr[2]=vedr;        //东向速度
  29. pdr[3]=vndr;        //北向速度
  30.     pdr[4]=aedr;        //东向加速度
  31. pdr[5]=andr;        //北向加速度
  32. pdr[6]=yaw;         //航向角
  33. pdr[7]=dy;
  34.     
  35. }