OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5023|回复: 4

姿态解算求助,有大神搭救吗

[复制链接]

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-7-12
在线时间
46 小时
发表于 2018-5-21 19:37:01 | 显示全部楼层 |阅读模式
20金钱
#define Kp    1.0F//比例系数
#define  Ki    0.001F//积分系数
#define   halfT   0.001F
static float q0=0.00,q1=0.00,q2=0.00,q3=0.00;//初始化四元数
float exInt=0,eyInt=0,ezInt=0;//Îó2îμÄ»y·Ö

void  Posture_update(float gx,float gy,float gz,float ax,float ay,float az)  
{
        float norm;
        float vx,vy,vz;
        float ex,ey,ez;
        if(ax*ay*az==0)
        {
                printf("accelerometer   error\r\n");
                return;
        }

                norm=sqrt(ax*ax+ay*ay+az*az);
                ax=ax/norm;
                ay=ay/norm;
                az=az/norm;
       

                vx=2*(q1*q3-q0*q2);
                vy=2*(q0*q1+q2*q3);
                vz=q0*q0-q1*q1-q2*q2+q3*q3;
               
       
                ex=(ay*vz)-(az*vy);
                ey=(az*vx)-(ax*vz);
                ez=(ax*vy)-(ay*vx);
       
       
                exInt =exInt+(ex*Ki);
                eyInt=eyInt+(ey*Ki);
                ezInt=ezInt+(ez*Ki);
       
       
                gx=gx+(Kp*ex)+exInt;
                gy=gy+(Kp*ey)+eyInt;
                gz=gz+(Kp*ez)+ezInt;
               
                q0=q0+(-q1*gx-q2*gy-q3*gz)*halfT;
                q1=q1+(q0*gx+q2*gz-q3*gz)*halfT;
                q2=q2+(q0*gy-q1*gz+q3*gx)*halfT;
                q3=q3+(q0*gz+q1*gy-q2*gx)*halfT;
               

                norm=sqrt(q0*q0+q1*q1+q2*q2+q3*q3);
                q0=q0/norm;
                q1=q1/norm;
                q2=q2/norm;
                q3=q3/norm;

}
代码附上,现在能正确读取加速度计和陀螺仪数据,并且加速度换算成m/s2,陀螺仪换算成弧度制,上面这个是四元数更新函数,但是执行以后四元数并没有更新,有大神帮忙看看吗

最佳答案

查看完整内容[请看2#楼]

你的四元数初始化不对,q0 = 1.0f才对
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2018-5-21 19:37:02 | 显示全部楼层
你的四元数初始化不对,q0 = 1.0f才对
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-5-22 01:24:48 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
558
金钱
558
注册时间
2017-7-26
在线时间
50 小时
发表于 2018-5-23 10:02:56 | 显示全部楼层
楼上说的对
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2018-12-4
在线时间
0 小时
发表于 2018-12-4 20:24:14 | 显示全部楼层
这个是直接把程序烧录进去就可以吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表