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

文章目录

25.1.1 测试传感器

25.1.2 校准传感器

25.1.3 测距传感器检查

25.1.4 预解锁检查

25.1.5 首次飞行

25.1.6 第二次飞行

25.1.7 正常操作设置

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 故障安全。

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.xdnf.cn/news/139842.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ROS2 从头开始:第 8 部分 - 使用 ROS2 生命周期节点简化机器人软件组件管理

一、说明 欢迎来到我在 ROS2 上的系列的第八部分。对于那些可能不熟悉该系列的人&#xff0c;我已经涵盖了一系列主题&#xff0c;包括 ROS2 简介、如何创建发布者和订阅者、自定义消息和服务创建、组合和执行器以及 DDS 和 QoS 配置。如果您还没有机会查看以前的帖子&#xff…

2023华为杯数学建模D题第三问——区域双碳目标情景设计样例

在第二问建立好预测模型的基础上&#xff0c;如何设计第三问所说的区域双碳路径&#xff0c;以对宏观政策进行指导&#xff01; 采用STIRPA的基本模型对中国碳达峰时间进行预测&#xff0c;对该模型公式两边取对数得到&#xff1a; 其中&#xff1a;P为人口&#xff0c;A为GDP…

异常记录-VS

1.文件加载失败 无法找到指定路径 Frame GUID: a6c744a8-0e4a-4fc6- 886a-064283054674 Frame mode: VSFM_ MdiChild Error code: 0x80131515 未理会这个提示&#xff0c;可以打开运行项目&#xff0c;只是会跳出这个弹窗。 无法关闭这个异常的窗口。

十四、MySql的用户管理

文章目录 一、用户管理二、用户&#xff08;一&#xff09;用户信息&#xff08;二&#xff09;创建用户1.语法&#xff1a;2.案例&#xff1a; &#xff08;三&#xff09; 删除用户1.语法&#xff1a;2.示例&#xff1a; &#xff08;四&#xff09;修改用户密码1.语法&#…

【MT7628AN】IOT | MT7628AN OpenWRT开发与学习

IOT | MT7628AN OpenWRT开发与学习 时间:2023-06-21 文章目录 `IOT` | `MT7628AN` `OpenWRT`[开发与学习](https://blog.csdn.net/I_feige/article/details/132911634?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132911634…

【C语言】指针的进阶(四)—— 企业笔试题解析

笔试题1&#xff1a; int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址&#xff0c;&a就表示整个数组&#xff0c;因此…

vue项目打包优化

首先第一步通过浏览器看首次加载的问题大小&#xff0c;时间跨度等方面入手 1. Coverage观察 Coverage是chrome开发者工具的一个新功能&#xff0c;从字面意思上可以知道它是可以用来检测代码在网站运行时有哪些js和css是已经在运行&#xff0c;而哪些js和css是还没有用到的&a…

WEB使用VUE3实现地图导航跳转

我们在用手机查看网页时可以通过传入经纬度去设置目的地然后跳转到对应的地图导航软件&#xff0c;如果没有下载软件则会跳转到下载界面 注意&#xff1a; 高德地图是一定会跳转到一个新网页然后去询问用户是否需要打开软件百度和腾讯地图是直接调用软件的这个方法有缺陷&…

【c#-Nuget 包“在此源中不可用”】 Nuget package “Not available in this source“

标题c#-Nuget 包“在此源中不可用”…但 VS 仍然知道它吗&#xff1f; (c# - Nuget package “Not available in this source”… but VS still knows about it?) 背景&#xff1a; 今日从公司svn 上拉取很久很久以前的代码&#xff0c;拉取下来200报错&#xff0c;进一步发…

【机器学习】文本多分类

声明&#xff1a;这只是浅显的一个小试验&#xff0c;且借助了AI。使用的是jupyter notebook,所以代码是一块一块&#xff0c;从上往下执行的 知识点&#xff1a;正则删除除数字和字母外的所有字符、高频词云、混淆矩阵 参考&#xff1a;使用python和sklearn的中文文本多分类…

资源分享 | 情绪脑电研究公开数据集

SEED SEED数据集是由上海交大类脑计算与机器智能研究中心(BCMI)开发的。该数据集是基于脑电的情绪分类任务而设计的数据集。该数据集记录了15名被试在观看积极、中性和消极情绪电影片段时的EEG信号&#xff0c;每个视频片段的时间为3-5分钟。每个参与者重复采集三天&#xff0…

多分类中混淆矩阵的TP,TN,FN,FP计算

关于混淆矩阵&#xff0c;各位可以在这里了解&#xff1a;混淆矩阵细致理解_夏天是冰红茶的博客-CSDN博客 上一篇中我们了解了混淆矩阵&#xff0c;并且进行了类定义&#xff0c;那么在这一节中我们将要对其进行扩展&#xff0c;在多分类中&#xff0c;如何去计算TP&#xff0…

IDEA中创建Java Web项目方法1

以下过程使用IntelliJ IDEA 2021.3 一、File-> New -> Project... 1. 项目类型中选择 Java Enterprise 项目 2. Name&#xff1a;填写自己的项目名称 3. Project template&#xff1a;选择项目的模板&#xff0c;Web application。支持JSP和Servlet的项目 4. Applica…

Nginx location 精准匹配URL = /

Location是什么&#xff1f; Location是Nginx中的块级指令(block directive)&#xff0c;通过配置Location指令块&#xff0c;可以决定客户端发过来的请求URI如何处理&#xff08;是映射到本地文件还是转发出去&#xff09;及被哪个location处理。 匹配模式 分为两种模式&…

位段 联合体 枚举

Hello好久不见&#xff0c;今天分享的是接上次结构体没有分享完的内容&#xff0c;这次我们讲讲位段 枚举和联合体的概念以及他们的用法。 2.1 什么是位段 位段的声明和结构是类似的&#xff0c;有两个不同&#xff1a; 1.位段的成员必须是 int、unsigned int 或signed int 。 …

微信开放平台第三方开发,实现代小程序备案申请

大家好&#xff0c;我是小悟 微信小程序备案整体流程总共分为五个环节&#xff1a;备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前&#xff0c;需要确保小程序基本信息已填写完成、小程序至少存在一个…

com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

起因是在对google商品做本地缓存时&#xff0c;上线后发现的bug 刚开始非常自信&#xff0c;debug没问题线上有问题&#xff0c;大概率就是混淆文件没有添加keep&#xff0c;于是本地添加对SDK中类的keep&#xff0c;本地打包release验证&#xff0c;不出意外还是崩溃 仔细看…

C语言指针变量的引用距离

本段代码&#xff0c;测试&#xff0c;C的函数传参中&#xff0c;形参是基础类型参数和地址参数&#xff0c;对于实参的值影响。 #include <stdio.h> add(int a,int b){a;b;printf("add副本a%d\n",a);printf("add副本b%d\n",b);printf("副本ca…

Interceptor的使用场景:拦截请求中的租户信息,注入到租户上下文中

业务场景 在SaaS环境中&#xff0c;租户是最重要的隔离业务数据的属性了&#xff0c;在自己的项目体系环境中&#xff0c;租户id能保证有值。但有个特殊场景&#xff0c;某些特殊权限的账号需要修改指定租户的内容&#xff0c;也即前端会携带租户信息过来&#xff0c;并且内部涉…

在github上设置不同分支,方便回滚

在github上设置不同分支&#xff0c;方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改&#xff08;如果还未进行&#xff09;3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码&#xff0c…