主要内容

估计取向在仿真软件中使用AHRS过滤器和IMU数据金宝app

这个例子展示了如何流IMU数据从传感器连接到Arduino®董事会和估计使用AHRS过滤器和IMU传感器定位。

需要MathWorks产品下载188bet金宝搏

  • MATLAB®

  • 金宝app仿真软件®

  • 金宝appArdu金宝appino硬件仿真软件支持包

  • 导航工具箱™或传感器融合和跟踪工具箱™

硬件要求

1。任何Arduino电路板下面:

  • Arduino达芬奇

  • Arduino超级2560

  • Arduino兆理应

  • Arduino微

  • Arduino 3.0纳米

  • Arduino Uno

  • Arduino由于

  • Arduino MKR1000

  • Arduino MKR WIFI 1010

  • Arduino MKR零

  • Arduino Nano 33物联网

  • Arduino Nano 33 BLE意义

2。IMU传感器和加速度计、陀螺仪和磁强计。在这个例子中,X-NUCLEO-IKS01A2使用传感器扩展板。LSM6DSL传感器扩展板是用于获取加速度和角速率值。LSM303AGR传感器扩展板是用来获得磁场值。传感器数据可以读取使用I2C协议。

硬件连接

X-NUCLEO-IKS01A2盾附带Arduino UNO连接器,这使得它容易UNO板的界面。对于其他板,连接SDA、sci、3.3 v, Arduino电路板的接地针传感器上的各自的别针盾牌。

硬件配置的模型

这个例子使用了两个模型,AnalyseIMUData.slxEstimateOrientationUsingAHRSandIMU.slx。这两个模型与Arduino UNO预配置工作。如果您正在使用一个不同的Arduino电路板,改变硬件板通过以下步骤:

1。点击硬件设置硬件工具栏选项卡的仿真软件金宝app。

2。在配置参数对话框中,选择硬件实现

3所示。硬件板列表中,选择Arduino电路板,您正在使用的类型。

4所示。点击应用。点击好吧关闭对话框。

任务1 -读取和校准传感器的值

本节描述如何阅读和校准传感器值取向估计算法。阅读和分析值,使用模型AnalyseIMUData.slx

open_system (“AnalyseIMUData.slx”);

从LSM6DSL读取加速度和角速率传感器

金宝app模型包A金宝apprduino硬件提供支持LSM6DSL IMU传感器块读取加速度和角速率沿X、Y和Z轴LSM6DSL传感器连接到Arduino。m / s2的块输出加速度和角速率在rad / s。传感器可以进一步通过选择选项的配置块面具。

阅读形式LSM303AGR传感器值

阅读使用LSM303AGR传感器磁场值,使用的例子I2C读I2C写支持包块。金宝app

的I2C地址0 x1e LSM303AGR传感器。这个地址是指定为奴隶地址在I2C读/ I2C写块用于配置和读取传感器的磁场值。

根据输出数据率(ODR)要求,需要写入CFG_REG_A_M寄存器值(0 x60)的传感器。查看可用的odr,请参考LSM303AGR数据表。这是一次性的操作需要初始化传感器,并使用完成初始化函数块模型。

磁场从输出寄存器读取(0 x68 - 0 x6d)传感器使用I2C读块并转换为microtesla作为要求的例子。

执行磁强计校准

从传感器获取准确的测量,传感器需要校准。在本节中,我们考虑磁强计校准补偿硬铁扭曲。硬铁影响固定干扰磁噪声来源。通常,这些来自其他金属物体与磁力仪在电路板上。可以纠正这些扭曲减调整值为每个轴磁强计的读数。

找到调整值,请执行以下操作:

1。打开模型AnalyseIMUData。该模型使用到工作空间块(out.MagneticField在模型中)记录磁强计数据。

模型已经配置为运行在连接输入输出模式。模拟使用IO允许您运行您的连接算法与外围硬件的数据模型。金宝app有关更多细节,请参考使用连接IO与硬件通信

2。运行IO点击Run按钮对应连接运行IO硬件选项卡。

3所示。在模型运行时,旋转传感器从0到360度沿着每个轴。

4所示。单击停止按钮停止连接输入输出仿真

6。磁场值记录在MATLAB基础工作空间out.MagneticField变量。使用在MATLAB命令窗口函数记录值获得修正系数。

[softIronFactor, hardIronOffset] = magcal (out.MagneticField);

请注意与周围的环境:调整值变化。

任务2。传感器数据融合与AHRS过滤器

本节描述如何将传感器数据融合估计取向。使用该模型EstimateOrientationUsingAHRSAndIMU这一节。

open_system (“EstimateOrientationUsingAHRSandIMU.slx”);

传感器模块

第一个模型是用于读取传感器值的一部分,这是在前一节中描述。如果你更改传感器块在前面的任务,使相应的块在这个模型的变化。

预处理程序块

预处理程序块模型中接受加速度,角速率,磁场的磁场传感器和调整值。块输出校准和axis-aligned传感器的值。

修改的值不变磁强计校正值预处理程序块的输入,调整值(hardIronOffset)获得的第六步执行磁强计校准部分。

轴的加速度计、陀螺仪和磁强计的传感器可能不是相互对齐。指定的索引和迹象x, y,和z轴上的每个传感器预处理块面具,使传感器与North-East-Down (NED)坐标系统,当它处于静止状态。在这个例子中,磁强计轴改变而加速度计和陀螺仪轴保持不变。

过滤块

与IMU估计定位传感器数据,一个块使用。明显的块融合加速度计、磁强计和陀螺仪传感器数据来估计设备定位。明显的块可调参数。调优参数根据指定的传感器可以用于提高性能。有关更多细节,请参考优化滤波器参数部分

可视化块

可视化仿真软件的定位,这个示例中提供了一个助手,金宝appHelperPosePlot。指定的块情节构成四元数或旋转矩阵。

使用连接IO验证模型设计

你可以模拟模型在连接IO验证模型设计生成代码和部署模型Arduino电路板。这之间的通信模型和Arduino不需要任何代码生成或模型部署,从而加速仿真过程。连接输入输出的更多信息,请参阅使用连接IO与硬件通信。模型已经在连接配置为运行IO模式。

这个应用程序需要实时获取传感器数据。与连接IO获得实时数据,您需要启用踱来踱去。从硬件获取实时数据,执行以下操作:

1。在仿真软件工具金宝app栏,点击模拟选项卡,设置模拟模式正常的

2。运行这个模型在连接输入输出模式,单击硬件选项卡,去模式部分,并选择连接输入输出

3所示。硬件选项卡,打开下拉运行IO在电脑上运行部分,并选择模拟踱来踱去

4所示。选择让节奏慢下来模拟

5。单击Run图标对应运行IO开始连接输入输出仿真。

移动传感器和检查图中的运动是否匹配的运动传感器。

6。停止运行模型,点击停止图标对应运行IO

在外部方式运行模型

后你在连接IO成功模拟模型,模拟模型在外部模式。与连接的IO,模型是在硬件部署为C代码。从硬件代码获取实时数据。在外部模式中,完成数据采集和参数调优,而应用程序在硬件上运行。

注意:确保Arduino电路板上使用有足够的内存来运行该应用程序的硬件。董事会喜欢Arduino Uno,内存低,无法支持这个应用程序。金宝app

注意:HelperPosePlot不支持外部模式金宝app的工作流。查看定位在外部模式下,使用其他仪表盘等仿真软件的范围,显示模块,等等。金宝app

1。外部模式运行,点击硬件选项卡,进入模式部分,选择板上运行(外模式)然后点击监视和优化

模型窗口的左下角显示状态模型准备时,下载和运行模型的硬件。金宝app

将传感器和验证取向的价值观。

2。停止运行模式,点击停止对应监视和优化