• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签:

资源简介

轨迹发生器的C语言程序,模拟惯导产生陀螺仪与加速度计的数据

资源截图

代码片段和文件信息

/*****************************************************************
功能:轨迹发生器,采用北天东坐标系
******************************************************************/
#include “math.h“
#include “stdlib.h“
#include “stdio.h“

#define DYNUM 18
#define PI 3.1415926535897932384626433832795
#define wie 7.292115E-5
#define Re 20925000.    
#define esqu        0.00669437999013
#define g0 32.174            
#define TIME        90000
#define step         0.01
void dery(double *ydouble *Wnbbdouble *accdouble *dy);
void init_cnb(double *angledouble *cnb);
void indata(double *y);
void outdata(double *Wnbbdouble *adouble *y);
void  chacheng(double *p1double *p2double *p3);
void matrixmultiply(double *p1double *p2double *p3int iiint kkint jj);
double Wnbb[3]acc[3]cbn[9]cnb[9]Wibb[3]Aibb[3]aaa;
int flag_motion=1flag_pitch=0time;


FILE *tr*Velo;
main()
{

int ij;
static int IsInit=0flag_rk=1;
static double y0[DYNUM]dy[DYNUM];
double y[DYNUM]yy[DYNUM]angle[3];
double iniv[3]v[3];
    double stepl;//=0.01;
time=0;
   
if((tr=fopen(“trace.dat““w“))==NULL)
{ puts(“CAN‘T OPEN trace.dat to save trace.data“);
puts(“PROGRAM IS TERMINATED !“);
exit(1);
}   
if((Velo=fopen(“velocity.dat““w“))==NULL)
{ puts(“CAN‘T OPEN velocity.dat to save velocity.data“);
puts(“PROGRAM IS TERMINATED !“);
exit(1);
}   
    angle[0]=0./180.*PI;             //pesi
    angle[1]=0./180.*PI;               //sita
    angle[2]=0./180.*PI;               //gama

    init_cnb(anglecnb);
    for(i=0;i<3;i++)  for(j=0;j<3;j++)  cbn[i*3+j]=cnb[j*3+i];

    iniv[0]=0.;
    iniv[1]=0.0;
    iniv[2]=0.0;

    v[0]=cbn[0*3+0]*iniv[0]+cbn[0*3+1]*iniv[1]+cbn[0*3+2]*iniv[2];
    v[1]=cbn[1*3+0]*iniv[0]+cbn[1*3+1]*iniv[1]+cbn[1*3+2]*iniv[2];
    v[2]=cbn[2*3+0]*iniv[0]+cbn[2*3+1]*iniv[1]+cbn[2*3+2]*iniv[2];

    y[0]=39./180.*PI;   y[1]=116./180.*PI;   y[2]=0.0;             
    y[3]=cnb[0*3+0];    y[4]=cnb[0*3+1];     y[5]=cnb[0*3+2];
    y[6]=cnb[1*3+0];    y[7]=cnb[1*3+1];     y[8]=cnb[1*3+2];
    y[9]=cnb[2*3+0];    y[10]=cnb[2*3+1];    y[11]=cnb[2*3+2];
    y[12]=v[0];         y[13]=v[1];          y[14]=v[2];    
    y[15]=angle[0];     y[16]=angle[1];      y[17]=angle[2];  
 
  while(time  {
if(!IsInit)
{  
stepl=step;
for(i=0;i {  yy[i]=y[i];
   y0[i]=y[i];
           dy[i]=0.0;
}
indata(y);
        outdata(Wnbbaccy);
        fprintf(tr“%20.12lf“time*stepl);
    fprintf(tr“%20.12lf“Aibb[0]);
fprintf(tr“%20.12lf“Aibb[1]);
fprintf(tr“%20.12lf“Aibb[2]);
    fprintf(tr“%20.12lf“Wibb[0]);
fprintf(tr“%20.12lf“Wibb[1]);
fprintf(tr“%20.12lf“Wibb[2]);
        dery(yyWnbbaccdy);
    fprintf(tr“\n“);
for(i=0;i flag_rk=2;
IsInit=1;
}
    else if(flag_rk==2)
{
  for(j=0;j<=1;j++)
{   for(i=0;i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14362  2006-12-14 21:04  trace_generate.c

----------- ---------  ---------- -----  ----

                14580                    2


评论

共有 条评论

相关资源