主要内容

无线数据流并使用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传感器对象OperatingModeamg的

fs = 100;在赫兹%采样率imu = bno055 (,“SampleRate”fs,“OutputFormat”,“矩阵”,“OperatingMode”,amg的);

补偿硬铁和软铁扭曲

融合算法利用磁强计读数需要补偿磁场扭曲等硬铁失真。硬铁扭曲是由材料创建一个磁场,导致转移反应曲面上的起源。这些扭曲可以纠正了磁强计读数减去调整值为每个轴。为了找到调整值,

  1. 从0到360度旋转传感器在每个轴。

  2. 使用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。