6/9-axis imu sensor/姿态传感器 学习板/开发板 开源 MPU6500 QMC5883 加速度 陀螺仪 地磁传感器

news2024/11/16 13:43:37

1-应用领域:

游戏交互、3D模型控制、机器人、设备姿态检测、翻转状态检测、无人机、无人船、无人车、VR/AR、AHRS、姿态算法研究与分析,短距无效姿态测量、车辆调平系统,机器震动检测

2-产品硬件规格:

尺寸:

蓝牙:5.0

电池:默认150ma,可自行更换为大容量电池

充电电流:600ma

通信方式:蓝牙5.0/type-c串口 波特率115200

数据刷新频率:100HZ

特性:

三轴(加速度、陀螺仪、地磁、欧拉角)

蓝牙5.0 带电池充电管理、100HZ输出

购买地址:

https://item.taobao.com/item.htm?spm=a21xtw.29178619/evo565760b742010.product_shelf.1.55968e698CVB3i&id=819389123995

3-软件协议设计:

   传感器每秒通过串口和蓝牙同时输出100个32字节的数据包,数据帧格式如下:

0x88+0xAF+0x1C+ACC DATA+GYRO DATA+MAG DATA+ANGLE DATA+ 0x00 0x00 + 0x00 0x00+SUM,共32字节,ACC/GYRO/MAG/ANGLE(roll/pitch/yaw)数据为int16格式,其

中ANGLE的roll和pitch数据为实际值乘以100以后得到的整数值,yaw为乘以10以后得到的整数值,

上位机在显示时再 除以100和10

以下是例子

88af  帧头

1c 长度LEN为DATA的长度(不包括0x88、0xAF、LEN、CRC)

01e6  ACC DATA -X

ff09  ACC DATA -Y

0f8f ACC DATA -Z

0144 GYRO DATA-X

0028 GYRO DATA-Y

0046 GYRO DATA-Z

0084 MAG DATA -X

03e9 MAG DATA -Y

fa66 MAG DATA -Z

01c8 roll

0287 pitch

03e2 yaw

00000000

9a   CRC   CRC是0x88一直到DATA最后一字节的和,uint8格式

以下是java解析代码(其他语言类似):

short acc_data_x =  (short) ((dataBuff[3]&0xFF)<<8 |dataBuff[4]&0xFF);
short acc_data_y = (short) ((dataBuff[5]&0xFF)<<8 |dataBuff[6]&0xFF);
short acc_data_z =  (short) ((dataBuff[7]&0xFF)<<8 |dataBuff[8]&0xFF);
short gyro_data_x = (short) ((dataBuff[9]&0xFF)<<8 |dataBuff[10]&0xFF);
short gyro_data_y =  (short) ((dataBuff[11]&0xFF)<<8 |dataBuff[12]&0xFF);
short gyro_data_z = (short) ((dataBuff[13]&0xFF)<<8 |dataBuff[14]&0xFF);
short mag_data_x =  (short) ((dataBuff[15]&0xFF)<<8 |dataBuff[16]&0xFF);
short mag_data_y =   (short) ((dataBuff[17]&0xFF)<<8 |dataBuff[18]&0xFF);
short mag_data_z =   (short) ((dataBuff[19]&0xFF)<<8 |dataBuff[20]&0xFF);


short roll = (short) ((value[21]&0xFF)<<8 |value[22]&0xFF);
short pitch =  (short) ((value[23]&0xFF) <<8|value[24]&0xFF);
short yaw =  (short)((value[25]&0xFF) <<8|value[26]&0xFF);
Log.i(TAG, "data1:"+roll +" " +pitch+" "+yaw);
float roll_f = (float) (roll/100.0);
float pitch_f = (float) (pitch/100.0);
float yaw_f = (float) (yaw/10.0);

String txtData = "roll:"+roll_f +"\r\n"+"pitch:"+pitch_f+"\r\n"+"yaw:"+yaw_f;
imuDataTxtView.setText(txtData);
String txtOrigData = "acc_x:"+acc_data_x+" acc_y:"+acc_data_y+" acc_z:"+acc_data_z+"\n";
txtOrigData += "gyro_x:"+gyro_data_x+" gyro_y:"+gyro_data_y+" gyro_z:"+gyro_data_z+"\n";
txtOrigData += "mag_x:"+mag_data_x+" mag_y:"+mag_data_y+" mag_z:"+mag_data_z;
imuOrignDataTxtView.setText(txtOrigData);

Android DEMO --中数据显示如下图: (可能部分手机无法运行,需要自行编译修改适配

4-传感器坐标系统:

将传感器水平放置于桌面,则:

Z轴向上, X 轴向前,Y轴向右

Roll 对应沿 X 轴旋转  顺时针 -》 0 ->180度 增加 ,逆时针 减小

Pitch 对应沿Y轴旋转  后仰:0->90 增加(正值) 前倾:0 -》-90度 减小

Yaw 对应沿 Z轴旋转  水平 顺时针增加 逆时针减小 绝对0度在 北极方向。

注:如果要控制的模型坐标系统和设备不一致,需要进行对模型的坐标系统进行修改或者添加变换逻辑。

  1. 配置协议说明:

固定长度12字节

帧头-1 Byte

功能码-1 Byte

参数

CRC

0x89

参考功能表

基于功能参数不同

校验(帧头+功能码+参数的累加和的最后一个字节)

功能表

0x01

工作模式

0 主动上传

1 Modbus被动查询  

3 校准模式

例:

设置工作模式为 0x01  

0x89 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

备注(以下仅为搜集到的资料,仅供分析和研究):

校准方法参考以下连接:https://blog.csdn.net/slowdownbabe/article/details/124657041

一、校准加速度计

加速度计有零偏和尺度误差。还有其他误差,这里只讨论这两种误差。

六面校准法:目的是让输出的数据在9.8mss左右(可以将Xmax = 9.44, Xmin = -10.24代进去感受一下)
公式:以X轴为例

依次按照如下放置:

操作:六个面朝上的时候,可以获取每个轴的最大值和最小值。首先,如下图,此面朝上,加速度计的Z轴是9.44。此面朝下,测量的值是-10.24.这样Z轴的最大值和最小值就计算出来了。同理可以获取X,Y轴的最大值最小值(可多测量几次求平均)。如下表:

X

Y

Z

最大值

最小值

二、校准陀螺仪

陀螺仪的校准只校正零偏误差。其操作是:在上电后,水平静止一段时间,获取陀螺仪N组数据,然后求平均值,该平均值作为初始零偏,最终校准的结果是陀螺仪原始测量值减去初始零偏。

初始零偏 = N组陀螺仪数据的和 /  N

陀螺仪校准值 = 陀螺仪测量值 - 初始零偏

三、 磁罗盘的校准

磁罗盘的校准使用椭球拟合的方式进行校准。

理论上,如果将磁力计绕一个点,做各个方向的旋转,绘制出来的三维图像是一个圆的球面,然而,因为磁力计容易受周遭环境的影响,实际绘制出来的三维图像是一个椭球面,且球心不在[0,0,0]。而椭球拟合就可以解决球心不在[0,0,0],三维图像不是一个椭球面。

具体算法原理可以参考以下博主的文章:

IMU加速度、磁力计校正--椭球拟合_加速度计椭球拟合-CSDN博客

磁力计校准方法比较复杂,具体请参考以下文章

  1. https://blog.csdn.net/qq_39512995/article/details/88750653?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-88750653-blog-124657041.235%5Ev39%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-88750653-blog-124657041.235%5Ev39%5Epc_relevant_anti_t3&utm_relevant_index=1
  2. 陀螺仪加速度计磁罗盘的校准_磁罗盘标定-CSDN博客

3.https://blog.csdn.net/wuwuku123/article/details/105540349/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP程序设计

TCP概述 建立连接 客户端和服务器端在建立连接时&#xff1a; 服务端是典型的监听接受连接的模式&#xff0c;就是ListenAccept 客户端是主动建立连接的模式&#xff0c;就是Dial Go语言中使用 net包实现网络的相关操作&#xff0c;包括我们TCP的操作。 用于建立连接的典型…

tusiart吐司艺术图像生成、LoRA 模型的使用和训练网站

文章目录 前言一、Tusiart&#xff08;吐司艺术&#xff09;是什么二、Tusiart&#xff08;吐司艺术&#xff09;主要功能三、Tusiart&#xff08;吐司艺术&#xff09; 网站图片四、Tusiart&#xff08;吐司艺术&#xff09; 相关地址总结 前言 每天分享一个关于AI项目或者网…

【系统架构设计师】二十、云原生架构设计理论与实践①

目录 一、云原生架构内涵 二、云原生的原则 三、主要架构模式 四、典型的云原生架构反模式 相关推荐 一、云原生架构内涵 云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中的非业务代码部分进行最大化的剥离&#xff0c;从而让云设施…

SQL Server索引碎片的基本知识(附Demo)

目录 前言1. 基本知识2. 检索碎片2.1 dm_db_index_physical_stats2.2 DBCC SHOWCONTIG 3. 修复和优化 前言 索引碎片太高本身会阻碍查询的效率&#xff0c;这个问题要重视 1. 基本知识 索引中的数据页不再连续&#xff0c;导致存储和检索数据时的效率降低 碎片通常发生在以…

虚拟机启动电脑蓝屏问题解决方案

1.查看CPU虚拟化是否开启&#xff0c;没有开启的可以按照教程开启 打开任务管理器&#xff0c;查看是否开启CUP虚拟化 如果没有开启,可以查看下面的链接&#xff0c;进入BIOS开启 win10如何开启虚拟化支持_win10开启cpu虚拟化的方法&#xff0d;系统城 2&#xff0c;控制面板…

C#中的同步编程和异步编程

1. 简单描述一下同步编程和异步编程 同步编程&#xff1a;按照代码的顺序一行一行执行&#xff0c;如果某个操作需要等待&#xff08;比如读取文件、网络请求、数据库操作等&#xff09;&#xff0c;那么当前的线程就会停下来&#xff0c;一直到这个操作完成了之后&#xff0c…

无坚不摧的Python重试机制:探索Tenacity库

无坚不摧的Python重试机制&#xff1a;探索Tenacity 库 背景&#xff1a;为何选择Tenacity&#xff1f; 在软件开发中&#xff0c;我们经常面临需要重试操作的场景&#xff0c;比如网络请求、数据库操作等。这些操作可能会因为各种原因暂时失败&#xff0c;但稍后可能会成功…

更换CentOS Stream 8镜像源

CentOS Stream 8替换阿里云镜像源 确认CentOS版本 hostnamectl备份当前配置 sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup创建临时文件下载目录 mkdir -p /tmp/aliyun-repos cd /tmp/aliyun-repos下载 .repo 文件列表并解析链接 wget -r -np -nd -A ".repo&…

ssm框架整合,异常处理器和拦截器(纯注解开发)

目录 ssm框架整合 第一步&#xff1a;指定打包方式和导入所需要的依赖 打包方法&#xff1a;war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步&#xff1a;导入tomcat插件 第三步&#xff1a;编写配置类 SpringCon…

C++知识点总结:2.类和对象(自用)

类和对象 1. 类和对象的关系2. 对象指针3. 在堆上创建对象4. 成员访问限定符5. 名字编码&#xff08;Name Mangling&#xff09;6.构造函数7.构造函数的重载8.初始化列表8. 成员变量初始化的顺序&#xff08;通过初始化列表&#xff09;9. 初始化 const 成员变量10. 析构函数11…

安装 moleculeSTM 踩坑日记

“学习 LLM &#xff0c;在大模型时代为自己存张船票”。 相信很多人都有这样的想法。那么&#xff0c;在 AI for science 领域&#xff0c;哪些 LLM 模型值得一试呢&#xff1f; 笔者认为&#xff1a; LLM 直接预测 SMILES 性质 or 直接生成 SMILES 的技术路线是行不通的。因…

成为git砖家(6): git restore 命令

文章目录 1. git restore 命令是新命令2. git官方对于restore命令的说明3. 总结 1. git restore 命令是新命令 在2019年8月发布的 Git 2.23 版本中&#xff0c;git checkout 命令的功能被拆解到两个新的命令中&#xff1a; git switch: 负责分支相关的操作git restore: 负责文…

微信小程序教程001:小程序简介

文章目录 学习目标小程序简介1、小程序和普通网页开发的区别2、注册小程序账号3、获取小程序的AppID4、安装开发者工具4.1 了解开发者工具4.2 下载开发工具 5、设置开发者工具外观 学习目标 如何创建小程序项目小程序项目的基本组成结构小程序页面由几部分组成小程序常见的组件…

Vscode——如何快速搜索项目工程中的某个文件的位置

第一步&#xff1a;按 shift ctrl p 第二步&#xff1a;然后把 > 删除 第三步&#xff1a;输入文件名称即可

Linux环境docker部署Firefox结合内网穿透远程使用浏览器测试

文章目录 前言1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox 前言 本次实践部署环境为本地Linux环境&#xff0c;使用Docker部署Firefox浏览器后&#xff0c;并结合cpolar内网穿…

永磁同步电机双矢量模型预测(MPC)电流控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 在电流环中采用双矢量模型预测电流控制方法&#xff0c;该方法在每一个采样周期中进行两次电压矢量选择&#xff0c;可以在进行第二次电压矢 量选择时采用非零电压矢量&#xff0c;电压矢量的选择范…

RAG优化技巧 | 7大挑战与解決方式 | 提高你的LLM: 下篇

RAG优化技巧 | 7大挑战与解决方式 | 提高你的LLM&#xff1a;下篇 在当今快速发展的人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为无处不在的技术&#xff0c;它们不仅改变了我们与机器交流的方式&#xff0c;还在各行各业中发挥着革命性的影响。…

算法笔记--哈希表

创建和使用Python字典&#xff08;哈希表&#xff09; 在Python中&#xff0c;哈希表通常是通过字典&#xff08;dict&#xff09;来实现的。 字典是一种可变容器模型&#xff0c;可以存储任意类型的对象&#xff0c;如字符串、数字、元组等其他容器模型。 字典的每个键值对…

GAT知识总结

《GRAPH ATTENTION NETWORKS》 解决GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同的问题&#xff0c;GAT借鉴了Transformer的idea&#xff0c;引入masked self-attention机制&#xff0c; 在计算图中的每个节点的表示的时候&#xff0c;会根据邻居节点特征的不同来…