在VR/AR中的“眼观六路耳听八方”这个文章中我们有介绍到九轴传感器融合算法的芯片BNO085,这里特意针对此芯片的SH2协议通讯数据进行解析,客户主控MCU与BNO085的SPI,UART,IIC 中的任何一个接口驱动成功后,直接读写BNO085的相关传感器数据:
1:1000-3625 SH-2 Reference Manual v1.2 文档命令举例说明(一般游戏ARVR 客户读取0X29四元素数据后自己转换成欧拉角等):数据手册33页也有说明(2.2.5到2.2.7章节)。 6.5.18 Rotation Vector (0x05) 这个是没有防抖算法的传感器输出的九轴四元数数据。 6.5.19 Game Rotation Vector (0x08) 这个是没有防抖算法的传感器输出的六轴四元数数据。 6.5.42 ARVR-Stabilized Rotation Vector (0x28)当设备运动时,累积误差被纠正,这限制了数据不连续或跳跃的出现。这个是有防抖算法的稳定的传感器数据输出的九轴四元数数据。 6.5.43 ARVR-Stabilized Game Rotation Vector (0x29)这个当设备运动时,累积误差被纠正,这限制了数据不连续或跳跃的出现是六轴数据输出。这个是有防抖算法的稳定的传感器数据输出的六轴四元数数据。 2:客户驱动完成后,MCU获取BNO085的6.5.18 Rotation Vector (0x05) 的数据,先复位或者上电使能传感器,读写传感器数据,参考数据手册参考第5 . 2 . 2节写/读BNO08X数据表 直接写如下字符串21个字节: 0x15 0x00 0x02 0x010xFD0x050x00 0x00 0x000x10 0x270x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 So if you would just like to get 200Hz(5000uS) AV/VR Stabilized Game Rotation Vector from BNO085, then you can just send the following commands from MCU to BNO085: 0x15 0x00 0x02 0x010xFD0x290x00 0x00 0x000x88 0x130x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 解释:(这个命令是设置ROTATION VECTOR 加头四个字节SHTP Header的数据格式) 0x15 0x00 0x02 0x01(shtp header 四个字节)SHTP LSB=0X15表示数据长度21字节,SHTP MSB=0X00,SHTP Channel=0X02,SHTP Sequence number=0x01 SHTP Channel 参考数据手册23页说明 0xFD第五个字节表示 Report ID=0xFD 参考数据手册25页解释,SH2文档36页6.2 Summary 0x05 0x00 说明:0x05代表旋转矢量6.5.18 Rotation Vector (0x05); 0x290x00 说明:0x29 代表6.5.43 ARVR-Stabilized Game Rotation Vector (0x29) 参考1000-3625 SH-2 Reference Manual v1.2 文档命令6.5.18.2 Input Report 0x00 0x000x10 0x270x 2710代表10,000us单位( 100赫兹)。0x00002710 0x00 0x000x88 0x13 0x 1388代表20,000us单位( 200赫兹)。0x00001388 参考数据手册The report ID for the accelerometer is 0x1 and a period of 60ms (or 60,000 μs) equates toa report interval of 0x0000EA60. 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 这里是10个字节 参考数据手册参考第5 . 2 . 2节写/读BNO08X数据表 查找1000-3625 SH-2 Reference Manual v1.2 文档命令数据格式 查找数据手册如下说明: A report including SHTP header will have the format as seen in: 查找SH2文档截图如下:
发布评论请先 登录
相关推荐
评论