专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
mpu9250 MD6.12移植到STM32F103
2019-07-20 23:24
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
18480
25
1430
昨天晚上,淘宝上买的MPU9250模块终于到手了,迫不及待上了自己的移植的代码试了一下,结果错误百出,经过今天一天的调试,终于完活了。
上视频
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
25条回答
ringudk
2019-07-22 01:38
本帖最后由 ringudk 于 2017-2-9 09:11 编辑
Boris 发表于 2016-11-18 17:14
代码和硬件连接都在这里了,其中大量引用了原子哥的代码,如有侵权,请及时告知。
你好,我用你移植的代码在STM32F103C8是做了测试,发现如果按上图顺序旋转的在回到原位置的话会有问题,10次有5次以上会出问题。
用STM32F407VE测试motion_driver_6.12的代码没有出现这个问题。
初始状态四元数输出
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0039 0.0527 0.0072
quat: 0.9986 0.0039 0.0527 0.0072
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0040 0.0526 0.0072
quat: 0.9986 0.0039 0.0526 0.0072
按我上图顺序旋转后回原位置四元数输出
quat: 0.4227 -0.0466 0.0264 0.9047
quat: 0.4227 -0.0466 0.0264 0.9047
quat: 0.4227 -0.0466 0.0263 0.9047
quat: 0.4227 -0.0466 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
麻烦你帮忙测试一下是否会出现和我一样的问题,我找不出原因为什么会这样。
刚刚尝试在
inv_error_t inv_get_quaternion函数
,把罗盘数据强制设置为
rh.compass_correction[0]=
0x40000000;
rh.compass_correction[1]= 0x0;
rh.compass_correction[2]= 0x0;
rh.compass_correction[3]= 0x0;
这样就不会出现上面的错误了,由此估计是罗盘数据有问题。
inv_error_t inv_get_quaternion(long *data)
{
rh.compass_correction[0]= 0x40000000;
rh.compass_correction[1]= 0x0;
rh.compass_correction[2]= 0x0;
rh.compass_correction[3]= 0x0;
if (rh.status & (INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET)) {
inv_q_mult(rh.compass_correction, rh.gam_quat, rh.nav_quat);
rh.status &= ~(INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET);
}
memcpy(data, rh.nav_quat, sizeof(rh.nav_quat));
return INV_SUCCESS;
}
加载中...
查看其它25个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
你好,我用你移植的代码在STM32F103C8是做了测试,发现如果按上图顺序旋转的在回到原位置的话会有问题,10次有5次以上会出问题。
用STM32F407VE测试motion_driver_6.12的代码没有出现这个问题。
初始状态四元数输出
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0039 0.0527 0.0072
quat: 0.9986 0.0039 0.0527 0.0072
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0040 0.0527 0.0072
quat: 0.9986 0.0040 0.0526 0.0072
quat: 0.9986 0.0039 0.0526 0.0072
按我上图顺序旋转后回原位置四元数输出
quat: 0.4227 -0.0466 0.0264 0.9047
quat: 0.4227 -0.0466 0.0264 0.9047
quat: 0.4227 -0.0466 0.0263 0.9047
quat: 0.4227 -0.0466 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
quat: 0.4227 -0.0465 0.0263 0.9047
麻烦你帮忙测试一下是否会出现和我一样的问题,我找不出原因为什么会这样。
刚刚尝试在inv_error_t inv_get_quaternion函数,把罗盘数据强制设置为
rh.compass_correction[0]= 0x40000000;
rh.compass_correction[1]= 0x0;
rh.compass_correction[2]= 0x0;
rh.compass_correction[3]= 0x0;
这样就不会出现上面的错误了,由此估计是罗盘数据有问题。
inv_error_t inv_get_quaternion(long *data)
{
rh.compass_correction[0]= 0x40000000;
rh.compass_correction[1]= 0x0;
rh.compass_correction[2]= 0x0;
rh.compass_correction[3]= 0x0;
if (rh.status & (INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET)) {
inv_q_mult(rh.compass_correction, rh.gam_quat, rh.nav_quat);
rh.status &= ~(INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET);
}
memcpy(data, rh.nav_quat, sizeof(rh.nav_quat));
return INV_SUCCESS;
}
一周热门 更多>