标签:测试 port linux c tps tutorial define device average tom
参考: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
Arduino/Razor_AHRS/Razor_AHRS.ino
使用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"
。若上传时出现权限错误
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
#oc
。#oc
重置测量值,找到x最小值并写下来。#oc
。Razor_AHRS.ino
。 (Razor_AHRS.ino的第245行开始的代码有详细校正方法
)#oc
经常使用并仔细检查您的最小/最大值)这一次,可以尽可能多地摇动电路板,但是请远离有磁场的电子设备,以免干扰。
我们仍然是加速计的校准模式。发送#on
,将校准移动到下一个传感器,即磁力计。
注意: 本节仅供参考,但您应该使用较新的“扩展磁强计校准(详细请看参考链接),因为它可以产生更好的结果!您可以跳过该步骤并继续使用陀螺仪。
我们将尝试为每个轴上的地球磁场找到最小和最大输出值。这基本上像校准加速度计一样工作,除了地球的磁场没有直线下降。根据你目前星球上的哪个地方,它以一定的角度指向北半球(南半球)或北半球(北半球)。这个角度被称为倾斜度。此外,真实的地理北极可能会有微小的偏差,这就是所谓的赤纬。以下描述假定您正在校准北半球的磁力计。
将电路板像x轴一样放在指南针上(记住:x轴=向前,指向连接器孔)指向北方。然后开始围绕东西轴旋转棋盘,以便它开始朝下。观察串行监视器中的x最大值(第二个值),您会注意到当您将电路板的x轴与地球的磁场对齐时。停止旋转,然后再向各个方向稍微倾斜,直到数值不再变大。
为相反的方面做同样的事情来获得x最小值:第一个点向北,然后向下。
对于磁强计,我们不需要在两次#oc
测量之间进行重置。
对z轴(上/下)和y轴(左/右)做同样的事情。
你现在应该在串口监视器中有这样的东西:
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
。
进入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/)
也可参考:http://www.corvin.cn/428.html
欢迎交流。
标签:测试 port linux c tps tutorial define device average tom
原文地址:https://www.cnblogs.com/112358nizhipeng/p/9165027.html