读取GY-951模块数据(Linux)
参考:https://github.com/Razor-AHRS/razor-9dof-ahrs/wiki/Tutorial#sensor-calibration
链接中使用的硬件是SparkFun“9DOF Razor IMU”,本文使用的是GY-951,同样适用。
硬件连接方式:
GY-951模块 + Mini FT232RL(USB转串口模块)


设置软件:
从https://github.com/Razor-AHRS/razor-9dof-ahrs/tree/master 中下载并解压Razor AHRS固件。
下载安装Arduino软件,解压后进入文件夹,打开终端输入 ./install.sh
- 从下载的Razor AHRS固件包中
Arduino/Razor_AHRS/Razor_AHRS.ino使用Arduino打开文件。 - 在Arduino中:
- 看看
Razor_AHRS.ino文件的顶部,它包含有关固件的有用信息。 - 此外还有一个部分标
"USER SETUP AREA"有你可以设置固件默认值的地方。- 你必须选择你正在使用的硬件
"HARDWARE OPTIONS"!(将#define HW__VERSION_CODE 10736 前注释去掉)
- 你必须选择你正在使用的硬件
- 转到
"Tools"→"Board"并选择"Arduino Pro or Pro Mini 处理器选(3.3v, 8mhz) w/ATmega328"。 - 转到
"Tools"→"Serial Port"并选择端口(/dev/ttyUSB0)。 - 去
"File"并击中"Upload to I/O Board"。在Arduino代码窗口底部的一小段时间之后"Done uploading"。
- 看看
- 打开Arduino的串行监视器,将波特率设置为57600。
若上传时出现权限错误
avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
可在终端输入
sudo usermod -a -G dialout 用户名
sudo chmod a+rw /dev/ttyUSB0

传感器校准
在校准前几分钟给芯片供电可能会很好,传感器可以预热。第一次校准传感器可能有点棘手,但我们先来看看:
Arduino/Razor_AHRS/Razor_AHRS.ino使用Arduino打开并找到部分"USER SETUP AREA"/"SENSOR CALIBRATION"。这是您稍后放置校准值的地方。将GY-951连接到您的计算机,在Arduino中设置正确的串行端口并打开串行监视器。
如果你没有更改固件默认值,你应该看到很多这样的输出:
#YPR=-155.73,-76.48,-129.51
通过发送字符串将固件输出模式设置为校准
#oc。你现在应该看到这样的输出:accel x,y,z (min/max) = -5.00/-1.00 25.00/29.00 225.00/232.00
- 校准加速度计:
- 我们将尝试在每个轴上找到地球引力的最小和最大输出值。当您移动电路板时,请将其缓慢移动,因此您应用的电路板的加速度越小越好。我们只想要纯粹的引力!
- 拿起电路板并用x轴垂直指向。当你这样做时,你可以看到x-maximum(第二个值)越来越大。
- 保持电路板静止不动,然后重新发送重置测量
#oc。 - 现在小心地将板沿各个方向稍微倾斜一点,直到数值不再变大为止并写下x最大值。
- 对另一侧(x轴向上)做同样的事情来获得x最小值:将其移到原位,发送
#oc重置测量值,找到x最小值并写下来。 - 对z轴(向上和向上)和y轴(向右和向左)做同样的事情。
- 如果您认为通过抖动或移动电路板使测量结果变得过于混乱,您可以随时通过发送进行重置
#oc。
- 如果您认为通过抖动或移动电路板使测量结果变得过于混乱,您可以随时通过发送进行重置
- 您现在应该具有所有最小值/最大值。把它们放进去
Razor_AHRS.ino。 (Razor_AHRS.ino的第245行开始的代码有详细校正方法) - 注意:这样做时你必须非常小心!即使用手指轻轻敲击电路板也会使测量变得困难,并导致错误的校准。
#oc经常使用并仔细检查您的最小/最大值)
- 校准磁力计:
这一次,可以尽可能多地摇动电路板,但是请远离有磁场的电子设备,以免干扰。
我们仍然是加速计的校准模式。发送
#on,将校准移动到下一个传感器,即磁力计。注意: 本节仅供参考,但您应该使用较新的“扩展磁强计校准(详细请看参考链接),因为它可以产生更好的结果!您可以跳过该步骤并继续使用陀螺仪。
我们将尝试为每个轴上的地球磁场找到最小和最大输出值。这基本上像校准加速度计一样工作,除了地球的磁场没有直线下降。根据你目前星球上的哪个地方,它以一定的角度指向北半球(南半球)或北半球(北半球)。这个角度被称为倾斜度。此外,真实的地理北极可能会有微小的偏差,这就是所谓的赤纬。以下描述假定您正在校准北半球的磁力计。
将电路板像x轴一样放在指南针上(记住:x轴=向前,指向连接器孔)指向北方。然后开始围绕东西轴旋转棋盘,以便它开始朝下。观察串行监视器中的x最大值(第二个值),您会注意到当您将电路板的x轴与地球的磁场对齐时。停止旋转,然后再向各个方向稍微倾斜,直到数值不再变大。
为相反的方面做同样的事情来获得x最小值:第一个点向北,然后向下。
对于磁强计,我们不需要在两次
#oc测量之间进行重置。对z轴(上/下)和y轴(左/右)做同样的事情。
- 注意:电路板围绕要测量的轴旋转并不重要,只是它指向正确的方向。例如,当您开始测量z轴时,x轴指向上或向下或向左或向右都无关紧要。
你现在应该在串口监视器中有这样的东西:
magn x,y,z (min/max) = -564.00/656.00 -585.00/635.00 -550.00/564.00
将这些值放入
Razor_AHRS.ino。
- 校准陀螺仪:
仍然将电路板放在桌子上。
我们仍然是磁力计的校准模式。发送
#on,这会将校准移动到下一个传感器,即陀螺仪。等待10秒钟,不要移动电路板。它将收集和平均所有三个轴上陀螺仪的噪音。
你现在应该有这样的输出:
gyro x,y,z (current/average) = -29.00/-27.98 102.00/100.51 -5.00/-5.85
- 如果您认为您通过晃动或移动电路板搞乱了测量,则可以通过发送进行重置
#oc。
- 如果您认为您通过晃动或移动电路板搞乱了测量,则可以通过发送进行重置
取每一对的第二个值并将其放入
Razor_AHRS.ino。
- 完成:)
Linux C++ Interface
https://github.com/Razor-AHRS/razor-9dof-ahrs/tree/master/C%2B%2B

进入C++文件中
编译测试程序:
g++ Example.cpp RazorAHRS.cpp -Wall -D_REENTRANT -lpthread -o example
执行:
./example
若出现报错:Did you set your serial port in Example.cpp?
先在Example.cpp中将串口名改为 “/dev/ttyUSB0”
再在终端输入:
sudo usermod -a -G dialout 用户名
sudo chmod a+rw /dev/ttyUSB0
(https://vps123.info/ubuntu-arduino-ide-err-open-device-permission-denied/)
参考:https://www.cnblogs.com/21207-iHome/p/7832355.html
进一步工作:该部分可以读取加速度计,陀螺仪,磁力计的数据,所以为了更形象的显示IMU姿态,可以下载rviz_imu_plugin插件(http://wiki.ros.org/rviz_imu_plugin),话题为(http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html)
也可参考:http://www.corvin.cn/428.html
欢迎交流。
读取GY-951模块数据(Linux)的更多相关文章
- Linux重装为Windows后读取原EXT类型数据盘
Linux重装为Windows后读取原EXT类型数据盘 1 2 3 4 分步阅读 Windows的文件系统通常使用NTFS或者FAT32格式,而Linux的文件系统格式通常是EXT系列.当操作系统从L ...
- python接口自动化之读取excel表的数据(使用openpyxl模块)
1.安装openpyxl:pip install openpyxl 2.基础知识,直接上代码 import openpyxl #导入模块 wd2=openpyxl.load_workbook('stu ...
- 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)
简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中.接着,在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)一文中举例子说明了如何在 ...
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式
Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...
- 第五章 Odoo 12开发之导入、导出以及模块数据
大多数Odoo 模块的定义,如用户界面和安全规则,实际是存储在对应数据表中的数据记录.模块中的 XML 和 CSV 文件不是 Odoo 应用运行时使用,而是载入数据表的手段.正是因为这个原因,Odoo ...
- Python中如何读取xls中的数据
要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd 安装方法:下载解压后,利用windows dos命令进入解压目录eg,c ...
- php读取csv文件,在linux上出现中文读取不到的情况 解决方法
今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
- 读取、写入excel数据
在实际项目中,不可避免的会操作excel表格.一直以来都是读取excel表格,可今天为了写入excel表格,可是煞费苦心,终于完成,记录下来以便后续使用. 1.读取excel表格的数据 读取excel ...
- 读取redis中的数据时出现:MISCONF Redis is configured to save RDB snapshots
读取redis中的数据时出现:MISCONF Redis is configured to save RDB snapshots 以下为异常详细信息: Exception in thread &q ...
随机推荐
- Maven系列(一)plugin
Maven系列(一)plugin maven-compiler-plugin 使用 mvn compile 命令,出现错误: 编码 GBK 的不可映射字符而不能编译.这是因为代码或注释中存在中文引起的 ...
- msys2 显示git branch
在.bashrc或.bash_profile中添加以下内容 function parse_git_branch () { git branch 2> /dev/null | sed -e '/^ ...
- NAND FLASH和LCD电路图
- Mybatis传值为空需要配置JdbcType来解决吗?(XML文件不需要配置JdbcType)
1,解决思路,配置自定义的语言驱动,重写自己的Paramethander package cn.com.servyou.gxdqy.tool.xmlhelper; import org.apache. ...
- 使用Jsoup获取网页内容超时设置
使用Jsoup获取网页内容超时设置 最近使用Jsoup来抓取网页,并对网页进行解析,发现很好用.在抓取过程中遇到一个问题,有些页面总是报Timeout异常,开始想是不是被抓取网站对IP进行了限制,后来 ...
- 2018.10.20 NOIP模拟 面包(数学期望)
传送门 把方差的式子拆开. 方差=平方的期望-期望的平方. 显然只用维护点对的个数和总方案数就行了. 利用分步的思想来统计. 要统计覆盖一个矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x ...
- hdu-1121(差分法--数学问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1121 参考文章:https://blog.csdn.net/fengzhizi76506/articl ...
- UVa 11167 Monkeys in the Emei Mountain (最大流)
题意:雪雪是一只猴子.它在每天的 2:00 —— 9:00之间非常渴,所以在这个期间它必须喝掉2个单位的水.它可以多次喝水,只要它喝水的总量是2.它从不多喝,在一小时内他只能喝一个单位的水.所以它喝水 ...
- Word图片上传控件(WordPaster)更新-2.0.15版本
更新说明: 1. 增加对webp图片的支持,支持微信公众号图片的下载. 效果参考:http://www.ncmem.com/doc/view.aspx?id=9761f8ce4fe04d0ab0f ...
- MVC, EF, Code First 相关问题总结
1. 控制表名单复数: 在DbContext类中修改OnModelCreating()为: protected override void OnModelCreating(DbModelBuilder ...
