综合技术
直播中

张建华

7年用户 193经验值
私信 关注
[问答]

如何计算才能把坐标系转换成水平的坐标系?

当mpu6050初始放置的时候是倾斜的,如何计算才能把坐标系转换成水平的坐标系?
转换后的效果是保证倾角不变,水平转动mpu,出来的数据是水平转动的。
我用当前四元数与初始的四元数做差,得到的四元数坐标系还是与mpu坐标系相同,不知道怎么计算才能把坐标系转换成水平的?

回帖(4)

李秦

2019-8-1 09:00:49
看看能不能帮到你:https://blog.csdn.net/zat9079438 ... ionNum=13&fps=1
举报

文汝寒

2019-8-1 09:20:25
感谢您的回答,根据链接解决了问题,因为之前mpu竖起来初始化总不过,所以将自检的时候校准去掉了,下面是我的代码,加上accel_sens=0就是以绝对平面为坐标系,去掉就是以当前的姿态为平面,可以实现我说的水平旋转问题,希望能对遇到同样问题的有帮助。
                float sens;
                unsigned short accel_sens;
                mpu_get_gyro_sens(&sens);
                gyro[0] = (long)(gyro[0] * sens);
                gyro[1] = (long)(gyro[1] * sens);
                gyro[2] = (long)(gyro[2] * sens);
                dmp_set_gyro_bias(gyro);
                mpu_get_accel_sens(&accel_sens);
                accel_sens=0;//去掉校准
                accel[0] *= accel_sens;
                accel[1] *= accel_sens;
                accel[2] *= accel_sens;
                dmp_set_accel_bias(accel);
还想再深入了解下,用的dmp不知道内部实现方式,能否探讨下自己融合数据怎么解决这个问题呢?
举报

袁媛

2019-8-1 09:31:07
这个我也不怎么了解,但是最近有买一个原子的minifly,里面有姿态融合的相关算法,你可以下载以下源码看一下
举报

李泳瑜

2019-8-1 09:37:40
好的,谢谢推荐,已下载,学习下
举报

更多回帖

发帖
×
20
完善资料,
赚取积分