无线数据流并使用BNO055传感器融合
这个例子展示了如何从一个博世BNO055 IMU传感器获得数据通过蓝牙®HC-05模块,并使用9-axis明显在传感器数据融合算法来计算设备的方向。这个例子创建了一个人物,当你移动设备得到更新。
BNO055 9-axis传感器和加速度计、陀螺仪和磁强计。加速度计测量加速度、角速度陀螺仪措施和磁强计测量磁场中x -,y -和z -轴。
需要MathWorks®产品下载188bet金宝搏
MATLAB®
MATLAB支金宝app持包Arduino®硬件
仪器控制工具箱™
传感器融合和跟踪工具箱™或导航工具箱™
所需的硬件
Arduino®Uno
博世BNO055传感器
HC-05蓝牙®模块
硬件连接
连接SDA、sci、接地,VCC BNO055传感器相应的针的针Arduino®Uno板连接:
SDA - A4
sci - A5
VCC - + 3.3 v
接地,接地
连接TX, RX,接地和VCC HC-05模块相应的针的针Arduino®Uno董事会。下面的例子使用了连接:
TX -数字销0 (RX)
RX -数字销1 (TX)
VCC - 5 v
接地,接地
确保连接传感器和蓝牙模块®完好无损。推荐使用Arduino Uno BNO055盾(Arduino 9轴运动的盾牌)。看到传感器故障诊断(MATLAB支金宝app持包Arduino硬件)调试传感器相关问题。
设置和配置蓝牙Arduino®沟通
通过蓝牙®配置Arduino Uno董事会沟通使用arduinosetup
命令从MATLAB命令提示符。看到设置和配置Arduino硬件(MATLAB支金宝app持包Arduino硬件)对如何配置步骤通过蓝牙®Arduino电路板进行交流沟通的。确保复选框为I2C库包含在设置。
创建传感器对象
创建一个arduino
对象。
一个= arduino (“btspp: / / 98 d33230eb9f”,“Uno”);
创建bno055
传感器对象OperatingMode
amg的
。
fs = 100;在赫兹%采样率imu = bno055 (,“SampleRate”fs,“OutputFormat”,“矩阵”,“OperatingMode”,amg的);
补偿硬铁和软铁扭曲
融合算法利用磁强计读数需要补偿磁场扭曲等硬铁失真。硬铁扭曲是由材料创建一个磁场,导致转移反应曲面上的起源。这些扭曲可以纠正了磁强计读数减去调整值为每个轴。为了找到调整值,
从0到360度旋转传感器在每个轴。
使用
magcal
函数来获得修正系数。
这些调整值与周围的环境变化。
努力获得修正系数对铁和软铁扭曲:
ts =抽搐;stopTimer = 50;magReadings = [];而(toc (ts) < stopTimer)%沿着x轴旋转传感器从0到360度。% 2 - 3旋转来提高精度。%为其他轴,沿着轴旋转。(accel、陀螺、mag) =阅读(imu);magReadings = (magReadings;杂志);结束[A, b] = magcal (magReadings);% = 3 x3软铁校正矩阵% b = 3 x1向量对硬铁校正
调整BNO055传感器的轴与NED坐标
这个示例中所使用的传感器融合算法使用North-East-Down (NED)作为固定的,父坐标系统。NED参考系,x -轴点北y -轴分东,z -轴点下来。根据算法,北可能是磁北或真北。在这个例子中使用磁北的算法。这里使用的算法,希望所有的传感器对象有其轴与NED公约。传感器的值必须倒,依照NED坐标。
优化滤波器参数
所使用的算法在这个例子中,当适当的调整,使估计的方向和强劲的反对环境噪声来源。你必须考虑的情况下使用传感器,并相应地调整过滤器。看到自定义优化融合过滤器更多细节优化滤波器参数有关。
本例使用ahrsfilter
演示方向估计。看到使用惯性传感器确定方向更多细节与惯性融合算法。
Accelerometer-Gyroscope-Magnetometer融合
姿态和航向参考系统(AHRS)由9-axis系统使用一个加速度计、陀螺仪和磁强计计算设备的方向。的ahrsfilter
产生一个平稳变化的估计的定位设备,而正确地估计北方向。的ahrsfilter
有能力消除陀螺仪的偏见,也可以检测并拒绝温和的磁干扰。
下面的代码片段使用ahrsfilter
系统对象确定的方向传感器和创建一个图,更新当你移动的传感器。传感器的初始位置应该这样的装置x -轴指向磁北,设备y -轴是指东部和设备z -轴是向下的。你可以使用手机或者指南针来确定磁北。
% GyroscopeNoise, AccelerometerNoise和MagnetometerNoise决心BNO055数据表使用以下公式% NoisePower = OutputNoisePowerDensityrms ^ 2 *带宽GyroscopeNoiseBNO055 = 3.05 e-06;% GyroscopeNoise(方差值)在单位(rad / s) ^ 2AccelerometerNoiseBNO055 = 67.53 e-06;% AccelerometerNoise(方差值)为单位(米/秒^ 2)^ 2MagnetometerNoiseBNO055 = 1;% MagnetometerNoise(方差值)在单位的uT ^ 2观众= HelperOrientationViewer (“标题”,{“AHRS过滤”});保险丝= ahrsfilter (“SampleRate”imu.SampleRate,“GyroscopeNoise”GyroscopeNoiseBNO055,“AccelerometerNoise”AccelerometerNoiseBNO055,“MagnetometerNoise”,MagnetometerNoiseBNO055);stopTimer = 10;
执行以下代码片段后,缓慢移动的运动传感器和检查图匹配的运动传感器。增加了stopTimer
值,如果需要追踪时间的取向。
magx_correction = b (1);magy_correction = b (2);magz_correction = b (3);ts =抽搐;而(toc (ts) < stopTimer) (accel、陀螺、mag) =阅读(imu);%对齐坐标按照NED公约accel = [accel (: 1), accel (:, 2), accel (:, 3)];陀螺=[陀螺(:1),陀螺(:,2),陀螺(:,3)];杂志= [(mag (: 1) -magx_correction)——(mag (:, 2) - magy_correction), - - - - - - (mag (:, 3) -magz_correction)] *;旋转=保险丝(accel、陀螺、杂志);为j =元素个数(旋转)查看器(旋转器(j));结束结束
如果传感器固定在设备的初始位置x -轴指向磁北、设备y -轴指向东方,设备z -轴点向下x -图将平行轴,与积极的一面x设在,y -图将平行轴,与积极的一面y设在,z -图将平行轴,与积极的一面z设在。
清理
当不再需要连接,释放和清晰的对象。
释放(imu);删除(imu);清晰;
尝试的东西
你可以试试这个例子与其他传感器如InvenSense微处理器- 6050微控制器- 9250,意法半导体LSM9DS1。