找回密码
 立即注册
查看: 2274|回复: 14

开源BNO085陀螺仪读取数据

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 2024-6-28 09:22:29 | 显示全部楼层 |阅读模式
使用陀螺仪,一般来说主要是为了获得稳定的姿态角。姿态角里面,一般分为三种类型:横滚角,偏航角,俯仰角。
这里先科普一下基本概念,三种姿态角,字面意思上就是:如果物体是一辆小车的话,俯仰角就是对应车头的抬起和下降,现实里面的状态就是上坡和下坡。横滚角就是车辆翻滚,现实里面状态就是车辆翻车。而偏航角就是车辆转向的角度,对应现实里面车辆的转弯操作。
而陀螺仪一般有分为六轴和九轴,这里的六轴就是指陀螺仪的三个方向(xyz)和加速度计的三个方向。一般所称呼的陀螺仪其实是指的这些集合体。而九轴则是多了磁力计的三个方向。
这里面,唯一需要注意的就是六轴陀螺仪姿态角中,偏航角必然会飘。但是九轴陀螺仪的磁力计会受到磁场波动干扰(电机)。那么如果想要获得不被电机所干扰的稳定偏航角应该怎么做呢?答案就是换一个精度高一些的陀螺仪。
这里,我经过市面上的比对,发现这款BNO085芯片。自身精度就很高,完全可以用来获得稳定的偏航角。
而且,因为精度较高,其他的变量也可以用来做精细的调整和感知。因为这个陀螺仪本身的噪声就比较小,属于车规级的芯片。
下面就介绍一下如何读取这个芯片。这个芯片拥有自己的一套私有协议。可以运行在SPI,IIC和UART上,因为这个芯片本身的输出速率并不需要那么快。所以这里使用IIC进行读取。
不过这个芯片因为需要连续多次的传输信息,且在数据位中定义了传输方向,所以相较于普通的IIC寄存器方式通讯,少了发送寄存器地址以及读操作时的重新START功能。
这里使用的IIC读写都是经过更改的,读取寄存器部分是从官方的arduino例程中移植的,经过测试可以使用。

BNO08x测试程序.zip (126.52 KB, 下载次数: 237)



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-06-14 13:06:24

33

主题

2447

回帖

5164

积分

论坛元老

积分
5164
发表于 2024-6-28 15:53:56 | 显示全部楼层
瞅了一眼  齁贵~ 不过看着效果是真的好

点评

这个精度是有用来动作捕捉的,车规级芯片嘛,一分钱一分货  详情 回复 发表于 2024-6-28 16:02
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 2024-6-28 16:02:44 | 显示全部楼层
_奶*** 发表于 2024-6-28 15:53
瞅了一眼  齁贵~ 不过看着效果是真的好

这个精度是有用来动作捕捉的,车规级芯片嘛,一分钱一分货
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-06-14 13:06:24

33

主题

2447

回帖

5164

积分

论坛元老

积分
5164
发表于 2024-6-28 16:09:19 | 显示全部楼层
王*** 发表于 2024-6-28 16:02
这个精度是有用来动作捕捉的,车规级芯片嘛,一分钱一分货

嗯嗯 ,,那倒是,,相比于动捕设备的价格,这点儿成本确实不算什么了
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:546
  • 最近打卡:2025-06-16 00:12:17
已绑定手机

1

主题

838

回帖

1687

积分

金牌会员

积分
1687
发表于 2024-7-7 08:16:31 | 显示全部楼层
查了下BNO085的价格,默默的关闭了此网页
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-06-15 18:40:05
已绑定手机

21

主题

488

回帖

855

积分

高级会员

积分
855
发表于 2024-8-6 08:17:52 | 显示全部楼层
一分价钱一分货,贵有贵的道理,用到了再学习吧
回复 支持 反对

使用道具 举报 送花

已绑定手机

0

主题

3

回帖

18

积分

新手上路

积分
18
发表于 2025-2-8 00:06:59 | 显示全部楼层
佬,可以分享一下为什么你的bno085采集旋转矩阵用的是这个函数嘛“enableGameRotationVector()”

点评

移植的官方arduino例程,他里面是这么用的,哈哈  详情 回复 发表于 2025-2-8 00:21
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 2025-2-8 00:21:21 | 显示全部楼层
yvkv*** 发表于 2025-2-8 00:06
佬,可以分享一下为什么你的bno085采集旋转矩阵用的是这个函数嘛“enableGameRotationVector()” ...

移植的官方arduino例程,他里面是这么用的,哈哈
回复 支持 反对

使用道具 举报 送花

已绑定手机

0

主题

3

回帖

18

积分

新手上路

积分
18
发表于 2025-2-8 01:07:41 | 显示全部楼层
王*** 发表于 2025-2-8 00:21
移植的官方arduino例程,他里面是这么用的,哈哈

我刚刚翻手册偶然发现说是磁场不稳定的情况下用这个模式更稳定
但是佬,我还有一个问题,就是,为什么程序不需要一直循环通过i2c读取bno085的寄存器的值就能一直更新四元数啊,因为我看那个更新四元数的getQuat的函数里面只引用了一个qToFloat函数,没有i2c_read之类的啊,然后我大概感觉这个芯片好像有一个报告的模式,难道这样就能一直发送数据?恕我见识太短,有点没听过啊

点评

其实是一直循环读取的,不过封装的比较深你没找到就是了。 这个芯片使用的是i2c上自建了一套私有协议,并不是传统的i2c读取寄存器那一套  详情 回复 发表于 2025-2-8 10:08
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 2025-2-8 10:08:33 | 显示全部楼层
yvkv*** 发表于 2025-2-8 01:07
我刚刚翻手册偶然发现说是磁场不稳定的情况下用这个模式更稳定
但是佬,我还有一个问题,就是,为什么程 ...

其实是一直循环读取的,不过封装的比较深你没找到就是了。
这个芯片使用的是i2c上自建了一套私有协议,并不是传统的i2c读取寄存器那一套
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 05:47 , Processed in 0.167705 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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