(25)(25.1) 光学流量传感器的测试和设置

news/2024/7/10 19:37:55 标签: 开源, 无人机, 外设硬件, Copter, ArduPilot

文章目录

25.1.1 测试传感器

25.1.2 校准传感器

25.1.3 测距传感器检查

25.1.4 预解锁检查

25.1.5 首次飞行

25.1.6 第二次飞行

25.1.7 正常操作设置

Copter-3.4%EF%BC%89-toc" style="margin-left:40px;">25.1.8 视频示例(Copter-3.4)

25.1.9 空中校准


25.1.1 测试传感器

将传感器连接至自动驾驶仪后,使用 Mission Planner 连接至自动驾驶仪并打开"飞行数据"屏幕的"状态"选项卡。如果传感器正在运行,你将看到 opt_m_xopt_m_yopt_qua 值均不为零。

25.1.2 校准传感器

1. 连接自动驾驶仪,并将 LOG_DISARMED 设置为 1,确保启用加锁时的日志记录功能。

2. 找一个表面有纹理、光线充足(自然光或强烈的白炽灯)的地方。

3. 拆除螺旋桨(安全第一)。

4. 接通飞行器电源,将水平仪放在远离身体和眼睛的位置。

5. 在大约一秒钟的时间内,围绕横滚轴的飞行器旋转 -15+15 度,然后再返回。重复 510 次。在旋转过程中,闭上一只眼睛,就能使传感器中心与背景保持静止。

6. 围绕飞行器俯仰轴重复。

7. 下载数据闪存日志,绘制 OF.flowXOF.bodyXIMU.GyrX 数据。它应该是这样的。

8. 如果 OF.flowX 大于或小于 OF.bodyX,则可以通过更改 FLOW_FXSCALER 参数来进行调整。

9. 如果 OF.bodyXIMU.GyrX 不相关或符号相反,则可能是 FLOW_ORIENT_YAW 参数设置错误或流量传感器未朝向下方。

10. 绘制 OF.flowYOF.bodyYbandIMU.GyrY 数据。它应该是这样的。

11. 如果 OF.flowY 大于或小于 OF.bodyY,则可以通过更改 FLOW_FYSCALER 参数进行调整。

12. 如果 OF.bodyYIMU.GyrY 不相关或符号相反,则 FLOW_ORIENT_YAW 参数可能设置错误,或者流量传感器没有朝下。

25.1.3 测距传感器检查

检查流量传感器校准测试闪存日志中的 EKF5.meaRng 信息。检查以下内容:

1. 可进行连续量程测量。

2. 它在地面上输出的距离是预期值的 10cm(请记住,在车辆横滚或俯仰时,测得的距离会增加,因为激光是在斜面上测量的)。

25.1.4 预解锁检查

要允许在没有 GPS 的情况下在 Loiter 解锁和起飞,应关闭 GPS 解锁检查,如下图所示。取消选中"全部"和"GPS",并选中所有其他选项。

由于启用光流时需要声纳/测距仪数据良好,因此需要执行额外的解锁前检查。

在飞行器加锁时,应将飞行器直升至至少 50cm 但不超过 2m 的高度(如果测距仪显示距离超过 2m,则需要重新启动自动驾驶仪)。

当解锁检查失败时,错误信息为"PreArm: check range finder(预解锁:检查测距仪)"。

可以通过取消选中"参数/声纳"解锁检查来禁用该检查。

25.1.5 首次飞行

1. 对于 EKF2,设置 EK2_GPS_TYPE = 0;对于 EKF3,设置 EK3_SRC1_VELXY = 0(我们不希望 EKF 在此阶段使用光流)。

2.50cm3m 的高度范围内,以小倾角在 STABILIZEAltHold 条件下悬停(旋翼),或在 QSTABILIZEQHOVER 条件下悬停(四旋固定翼)。

3. 下载闪存日志,并在 Mission Planner 中绘制以下内容。

4. EKF5.meaRng 应与飞行器高度变化相关联。

5. OF.flowXOF.flowY 应该是变化的。

6. OF.bodyXOF.bodyY 应与 IMU.GyrXIMU.GyrY 一致。

25.1.6 第二次飞行

Warning

要安全地完成这次飞行,飞行器周围至少需要 15m 的净空。如果光流速度估计不准确,你将几乎没有预警,飞行器可能会很快倾斜到最大倾斜角。

1. 对于 EKF2,设置 EK2_GPS_TYPE = 3;对于 EKF3,设置 EK3_SRC1_VELXY = 5EK3_SRC1_POSXY  = 0,以使 EKF 忽略 GPS 并使用流量传感器。

2. 确保发射机上有可用的 Loiter 和悬停模式。

3. 在地面控制站地图上设置"EKF 原点"。在 Mission Planner 中单击右键,选择"在此设置Home点",并选择设置"在此设置 EKF 原点"。

4.Loiter 状态下起飞,将旋翼飞机/四翼飞机升至约 1m 的高度。

5. 如果飞行器开始加速离开或出现不稳定的俯仰或横滚运动,则切换到悬停和着陆。你需要下载日志文件并在论坛(the forums)上分享,以了解原因。

6. 如果它能保持位置不变,那么恭喜你,你成功了,现在可以开始尝试改变高度,并在 Loiter 模式下移动它了。

25.1.7 正常操作设置

For EKF2

1. 验证 EK2_ENABLE = 1,启用 EKF2

2. 根据光学流量传感器设置 EK2_FLOW_DELAY

3. 要只使用光流量传感器而不使用 GPS,请将 EK2_GPS_TYPE 设置为 3;要与光流量传感器一起使用 GPS,请将其设置为 0

For EKF3

Note

ArduPilot 固件 4.1 及更高版本默认启用并使用 EKF3

1. 验证 EK3_ENABLE = 1,启用 EKF3

2. 设置 AHRS_EKF_TYPE = 3 以使用 EKF3

3. 设置 EK3_SRC_OPTIONS = 0 可禁用 FuseAllVelocities

4. 根据光学流量传感器设置 EK3_FLOW_DELAY

5. 设置 EK3_SRC1_POSXY = 3(来自 GPS 的主水平位置,设置为 0 时只使用光流量传感器)。

6. 设置 EK3_SRC1_VELXY = 5(来自 OpticalFlow 的主要水平速度)。

7. 设置 EK3_SRC1_POSZ = 1(来自气压计的主垂直位置)。

8. 设置 EK3_SRC1_VELZ = 0(无主垂直速度传感器)。

9. 设置 EK3_SRC1_YAW = 1(来自罗盘的主偏航/航向)。

  • 此外,GPS 还可以使用 EKF 光源切换功能与 OpticalFlow 协同工作。
  • 有关 EKF 信号源切换的信息,请参阅 GPS / Non-GPS Transitions。

Note

当旋翼飞机启用了光流传感器(以及测距仪)并将其指定为唯一的水平位置源(例如,`EK3_SRCx_VELXY``=OpticalFlow`EK3_SRCx_POSXY``=None),且飞行器以需要位置估计的飞行员控制模式飞行(即 LoiterPosHold)时,飞行器将不会爬升到测距仪在 `RNGFNDx_MAX_CM 中指定的最大高度之上。这是一种安全机制,否则当飞行器飞出测距仪范围时就会触发 EKF 故障安全。

Copter-3.4%EF%BC%89" style="margin-left:.0001pt;text-align:justify;">25.1.8 视频示例(Copter-3.4)

25.1.9 空中校准

Copter-4.2.0 包含飞行校准程序:

1. 设置 RCx_OPTION = 158(光流校准)以允许从辅助开关(auxiliary switch)启动校准。

2.EKF3 设置为使用 GPS(默认值)。

  • EK3_SRC1_POSXY = 3 (GPS)
  • EK3_SRC1_POSZ = 1 (Baro)
  • EK3_SRC1_VELXY = 3 (GPS)
  • EK3_SRC1_VELZ = 3 (GPS)
  • EK3_SRC1_YAW = 1 (Compass)
  • EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)

3.Loiter 模式下将飞行器飞行至少 10m(越高越好,但要在测距仪的限制范围内)。

4. 将辅助开关拉高以启动校准。

5. 使用横滚杆和俯仰杆来回摇摆飞行器的横滚和俯仰方向。

6. 检查 GCS "信息"选项卡是否有如下确认校准完成的输出结果。

FlowCal: Started

FlowCal: x:0% y:0%

FlowCal: x:66% y:6%

FlowCal: x:100% y:74%

FlowCal: samples collected

FlowCal: scalarx:0.976 fit: 0.10   <-- lower "fit" values are better

FlowCal: scalary:0.858 fit: 0.04

FlowCal: FLOW_FXSCALER=30.00000, FLOW_FYSCALER=171.0000

7. 降落飞行器并设置 EKF3 以使用 OpticalFlow

  • EK3_SRC1_POSXY = 0 (None)
  • EK3_SRC1_VELXY = 5 (Optical Flow)
  • EK3_SRC1_POSZ = 1 (Baro)
  • EK3_SRC1_VELZ = 0 (None)
  • EK3_SRC1_YAW = 1 (Compass)
  • EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)

8. 再次试飞飞行器以检查性能。

另一种方法可以避免在校准和测试之间降落和更改 EKF3 参数,即设置 GPS/Non-GPS 转换(GPS/Non-GPS transitions),以便飞行员在飞行中手动在 GPS 和光流之间切换。假设飞行员使用遥控输入 82 位开关)启动校准,并使用遥控输入 93 位开关)在 GPS 和光流之间切换,则完整的参数列表如下:

  • RC8_OPTION = 158 (Optflow Calibration)
  • RC9_OPTION = 90 (EKF Pos Source) low is GPS, middle is OpticalFlow, high is unused
  • EK3_SRC1_POSXY = 3 (GPS)
  • EK3_SRC1_POSZ = 1 (Baro)
  • EK3_SRC1_VELXY = 3 (GPS)
  • EK3_SRC1_VELZ = 3 (GPS)
  • EK3_SRC1_YAW = 1 (Compass)
  • EK3_SRC2_POSXY = 0 (None)
  • EK3_SRC2_VELXY = 5 (Optical Flow)
  • EK3_SRC2_POSZ = 1 (Baro)
  • EK3_SRC2_VELZ = 0 (None)
  • EK3_SRC2_YAW = 1 (Compass)
  • EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)

Note

要使用飞行校准,必须启用 EKF3。这是 ArduPilot 4.1 及更高版本的默认设置。


http://www.niftyadmin.cn/n/5036677.html

相关文章

01贪心:算法理论知识

贪心&#xff1a;01算法理论知识 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 这么说有点抽象&#xff0c;来举一个例子&#xff1a; 例如&#xff0c;有一堆钞票&#xff0c;你可以拿走十张&#xff0c;如果想达到最大的金额&#xff0…

常用的正则表达式30个,整数、浮点数、中文、英文字母、手机号、邮箱、日期、IP等等( JavaScript、Java)

前言 正则表达式&#xff08;Regular Expression&#xff09;是一种强大的文本模式匹配工具&#xff0c;它使用特定的语法规则来对字符串进行模式匹配和文本搜索。下面&#xff0c;LZ整理了一些常见的正则表达式模式&#xff0c;帮助你更好地处理数据验证。话不多说&#xff0…

程序员的中秋

“月圆人团圆&#xff0c;天涯共此时。”对于我们这些在全球各地分布的程序员来说&#xff0c;中秋这个富有诗意的节日&#xff0c;也许并非如诗如画般的浪漫&#xff0c;但却别有一番韵味。在这个特殊的日子里&#xff0c;我想借着这个平台&#xff0c;和大家分享我的中秋故事…

注册中心的学习

一、什么是注册中心&#xff1f; 注册中心主要有三种角色&#xff1a; 1.1、服务提供者&#xff08;RPC Server&#xff09;&#xff1a; 在启动时&#xff0c;向 Registry 注册自身服务&#xff0c;并向 Registry 定期发送心跳汇报存活状态。 1.2、服务消费者&#xff08;…

面试官:vue项目如何部署?有遇到布署服务器后刷新404问题吗?

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、如何部署 二、404问题 为什么history模式下有问题 为什么hash模式下没有问题 解决方案 一、如何部署 前后…

高比例清洁能源接入下计及需求响应的配电网重构(matlab代码)

1 主要内容 该程序复现《高比例清洁能源接入下计及需求响应的配电网重构》&#xff0c;以考虑网损成本、弃风弃光成本和开关操作惩罚成本的综合成本最小为目标&#xff0c;针对配电网重构模型的非凸性&#xff0c;引入中间变量并对其进行二阶锥松弛&#xff0c;构建混合整数凸…

保研复习-计算机组成原理

计算机组成原理 计算机组成冯诺依曼体系结构计算机系统的层次结构计算机的五大组成部件编译和解释的区别 CPUCPU的组成寄存器的类型指令类型指令功能指令执行过程 存储器存储器的层次结构寻址方式 输入和输出io方式有哪几种IO接口的基本结构 计算机组成 冯诺依曼体系结构 存储…

golang 自动生成文件头

安装koroFileHeader控件 打开首选项&#xff0c;进入设置&#xff0c;配置文件头信息"fileheader.customMade": {"Author": "lmy","Date": "Do not edit", // 文件创建时间(不变)// 文件最后编辑者"LastEditors"…