读取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
欢迎交流。
转载于:https://www.cnblogs.com/112358nizhipeng/p/9165027.html
读取GY-951模块数据(Linux)相关推荐
- linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc
Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植>第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程.随着SD卡存 ...
- jy61 树莓派_用Linux树莓派来读取JY61的串口数据
简述 有很多的小伙伴说用Linux树莓派来读取JY61的串口数据不知道怎么操作.今天我和大家分享下我是从三个方面分享的.1.JY61和树莓派的连接方式及VNC的使用:2.下载到树莓派的程序是如何编写的 ...
- Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题
背景 最近在处理用户评论数据时,从Linux服务器上面用pandas导出的csv文件,下载到自己的Windows电脑,再用本地pandas读取时发现数据行数不一致的情况,比如在Linux服务器上面数据 ...
- python csv使用_Python基于csv模块实现读取与写入csv数据的方法
本文实例讲述了Python基于csv模块实现读取与写入csv数据的方法.分享给大家供大家参考,具体如下: 通过csv模块可以轻松读取格式为csv的文件,而且csv模块是python内置的,不需要下载就 ...
- flex 解析json文件_使用 Python 处理 JSON 格式的数据 | Linux 中国
如果你不希望从头开始创造一种数据格式来存放数据,JSON 是一个很好的选择.如果你对 Python 有所了解,就更加事半功倍了.下面就来介绍一下如何使用 Python 处理 JSON 数据.-- Se ...
- STM32单片机硬件I2C读取AHT10温湿度传感器数据
STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...
- SIM71004G模块使用Linux C语言实现打电话发短信
为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 一.实验目的: SIM71004G模块使用Linux C语言实现打电话发短信. 二 ...
- Stream流、FiLe和IO流、IO流(字节流-拷贝文件_和_字符流-读取文本中的数据写入文本文件中)9-10-11
package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合,存 ...
- python如何读取excel数据-使用Python读取电子表格中的数据
Python 是最流行.功能最强大的编程语言之一.由于它是自由开源的,因此每个人都可以使用.大多数 Fedora 系统都已安装了该语言.Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数 ...
- c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式
我们知道,写Python代码的时候,如果一个包(package)里面的一个模块要导入另一个模块,那么我们可以使用相对导入: 假设当前代码结构如下图所示: 其中test_1是一个包,在util.py里面 ...
最新文章
- java jvm 参数配置_Java 从小白到大牛,JVM 不得不知的一些参数和配置
- 转:eclipse Failed to load JavaHL Library.
- java 性能调优_Java性能调优调查结果(第四部分)
- 洛谷 P2596 [ZJOI2006]书架 解题报告
- 电机速度曲线规划2:S形速度曲线设计与实现
- php recordarray,php5.5新数组函数array-column使用实例
- vue-cli@webpack@4打包分析命令
- 一元二次方程abc决定什么_情绪管理 - ABC理论
- Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)
- Intel altera opencl 入门
- 我和刘强东的故事2:这次是真的
- mate30pro鸿蒙系统刷机包下载,华为 Mate 30 Pro 的鸿蒙 2.0 Beta 版刷机包流出(附下载地址)...
- 记录一次rpc 漏洞补丁查看
- 什么是指令集架构ISA【从处理器谈起】
- JS打印菱形、简易计算器
- 白嫖画师原作训练Stable Diffusion引正主不满:未经同意,说用就用?
- 2022.7.2新版码易支付源码+三网免签挂+APP监控在线更新
- tf.constant(常量)
- python提取图片频谱_Python提取音乐谱并将其可视化,频谱
- Hdu 2430 Beans (数据结构_单调队列)