OpenEdv-开源电子网

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

使用LSM6DS0得出的数据如何进行姿态解算?求助!

[复制链接]

9

主题

30

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-3-2
在线时间
26 小时
发表于 2018-4-22 13:57:44 | 显示全部楼层 |阅读模式
100金钱
         我手头有一块st官方的板子,X-NUCLEO-IKS01A1,板载的LSM6DS0,6轴传感器,我把这个板子的驱动程序移植到了F767上面,可以正确读取6轴数据了。我将得到数据乘上了官方给的灵敏度值,官方手册如下: 红色的是我选择的量程。


TIM截图20180422133812.png
以下是我得到数据(已经乘上了敏感度) :              我知道现在 加速度数据的单位是mg  陀螺仪数据的单位是 mdps。


ACC_X[-22.143], ACC_Y[-4.514], ACC_Z[984.662]
GYR_X[490.000], GYR_Y[-4900.000], GYR_Z[-490.000]
ACC_X[-19.825], ACC_Y[-2.989], ACC_Z[985.394]
GYR_X[490.000], GYR_Y[-4900.000], GYR_Z[-560.000]
ACC_X[-21.594], ACC_Y[-4.087], ACC_Z[983.564]
GYR_X[280.000], GYR_Y[-4900.000], GYR_Z[-770.000]
ACC_X[-20.740], ACC_Y[-3.477], ACC_Z[983.564]
GYR_X[490.000], GYR_Y[-4970.000], GYR_Z[-630.000]
ACC_X[-23.546], ACC_Y[-5.978], ACC_Z[984.357]
GYR_X[350.000], GYR_Y[-5110.000], GYR_Z[-630.000]
ACC_X[-22.021], ACC_Y[-1.708], ACC_Z[984.296]
GYR_X[420.000], GYR_Y[-4690.000], GYR_Z[-630.000]



我现在想用匿名的姿态解算函数:
[mw_shl_code=cpp,true]//四元数更新姿态
void ANO_IMU:uaternion_CF(Vector3f gyro,Vector3f acc, float deltaT)
{
        Vector3f V_gravity, V_error, V_error_I;
       
        //重力加速度归一化
        acc.normalize();
       
        //提取四元数的等效余弦矩阵中的重力分量
        Q.vector_gravity(V_gravity);
       
        //向量叉积得出姿态误差
        V_error = acc % V_gravity;
       
        //对误差进行积分       
        V_error_I += V_error * Ki;
       
        //互补滤波,姿态误差补偿到角速度上,修正角速度积分漂移
        Gyro += V_error * Kp + V_error_I;               
       
        //一阶龙格库塔法更新四元数
        Q.Runge_Kutta_1st(Gyro, deltaT);
       
        //四元数归一化
        Q.normalize();
       
        //四元数转欧拉角
        Q.to_euler(&angle.x, &angle.y, &angle.z);
}[/mw_shl_code]


我把我角度值除了1000然后再转换成了弧度值,,加速度值没有做处理,这样传入不能计算吗?
下面是6050姿态解算是板子上传入的数据:
ACC_X[1.51714635], ACC_Y[4.13073063], ACC_Z[4123.26318]
GYR_X[-0.00212844973], GYR_Y[-0.00106422487], GYR_Z[-0.00851379894]
ACC_X[1.57104981], ACC_Y[4.45104218], ACC_Z[4124.9082]
GYR_X[-0.0031926746], GYR_Y[-0.00212844973], GYR_Z[-0.00957802311]

数据的单位不一样无法计算吗?求助大家了!









正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

30

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-3-2
在线时间
26 小时
 楼主| 发表于 2018-4-22 14:12:06 | 显示全部楼层
他这里mpu6050得到的加速度计参数就是adc的值,并没有什么单位,那么对我现在来说,应该如何改变我的传入参数?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-4-23 02:02:12 | 显示全部楼层
你得加姿态结算算法哦
回复

使用道具 举报

9

主题

30

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-3-2
在线时间
26 小时
 楼主| 发表于 2018-4-23 17:02:44 | 显示全部楼层
正点原子 发表于 2018-4-23 02:02
你得加姿态结算算法哦

原子哥,这个算法应该可以直接的出姿态角的吧。我看了匿名四轴代码,只有这里一个解算函数。 顺便可以问一下为什么这些加速度计的自身的坐标z轴都是向上的,但是平放的时候,z轴的值都是大于0的? 他这个数值正负和坐标的方向有什么关系吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-4-24 01:45:05 | 显示全部楼层
zhen8838 发表于 2018-4-23 17:02
原子哥,这个算法应该可以直接的出姿态角的吧。我看了匿名四轴代码,只有这里一个解算函数。 顺便可以问 ...

没用过你这个,不清楚。你慢慢调下 了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

30

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-3-2
在线时间
26 小时
 楼主| 发表于 2018-4-25 23:14:40 来自手机 | 显示全部楼层
我懂了这个姿态解算了,他的机体坐标轴与惯性导航书上说的不一样,与原子大哥的四轴一样。都是以x轴指向机头的方向,重力加速度只要成比例即可,然后调节他的kp参数
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-26 14:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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