(4)ModalAI VOXL

文章目录

前言

4.1 购买什么

4.2 硬件设置

4.3 VOXL 摄像机配置

4.4 自动驾驶仪配置

4.4.1 使用 OpticalFlow 进行 EKF3 光源转换

4.5 视频


前言

本文介绍了如何将 ModalAI VOXL-CAMArduPilot 配合使用,以替代 GPS,从而实现 Loiter、PosHold、RTL、Auto 等定位控制模式。


VOXL-CAM 中的 VOXL 电路板可以单独(individually )购买,作为配套计算机使用。此外,还可提供更新、功能更强大的 VOXL 2 配套计算机(VOXL 2 companion computer )。

Note

ArduPilot 4.3(及更高版本)支持 VOXL 摄像头。

4.2 硬件设置

如上图所示,将 VOXL 摄像机连接到自动驾驶仪。在这些说明中使用的是自动驾驶仪的 Telem2 端口。

VOXL 摄像头安装在飞行器前部,使 Wifi 天线从摄像头底部伸出。

4.3 VOXL 摄像机配置

ModalAI’s VOX-CAM setup instructions here

让相机正常工作的最基本步骤包括:

  • 在 Ubuntu 工作站上设置 adb(Setup adb);
  • 将摄像机连接到 Ubuntu 工作站,启动 adb shell 并运行 voxl-configure-vision-px4(run voxl-configure-vision-px4)(注:当要求输入 IP 地址时,可直接按 <enter> 键);
  • 运行“systemctl enable voxl-mavlink-server”配置 mavlink 服务器自动启动;
  • 可选择运行“systemctl status voxl-vision-px4”(run “systemctl status voxl-vision-px4”)来检查 VOXL 是否正在生成良好的位置估计值。

4.4 自动驾驶仪配置

用地面站(如任务规划器)连接自动驾驶仪,检查是否设置了以下参数:

  • SERIAL2_PROTOCOL = 2(MAVLink2)。请注意,这假定摄像机已连接到自动驾驶仪的“Telem2”端口;
  • SERIAL2_BAUD = 921(921600 波特);
  • 可选择设置 SERIAL2_OPTIONS  = 1024(不转发 mavlink 至/从),禁止将摄像机的里程测量信息发送至 GCS;
  • 可选择设置 SR2_EXTRA3 = 0,禁止向摄像机发送 SYSTEM_TIME 信息,因为已知 SYSTEM_TIME 会导致摄像机丢失位置估计值(例如,质量降为-1)。请注意,这需要将摄像机连接到自动驾驶仪的第二个 mavlink 端口(例如通常的 Telem2);
  • VISO_TYPE = 3 (voxl);
  • VISO_POS_XVISO_POS_YVISO_POS_Z 设置为相机在无人机上相对于重心的位置。详见传感器位置偏移补偿(sensor position offset compensation);
  • 可选择将 VISO_QUAL_MIN 增至 10(或更高),以便仅在质量为 10%(或更高)时才消耗相机的估计值。

如果只使用 VOXL 摄像机进行位置估算和航向(例如不使用 GPS):

修改参数后,重启自动驾驶仪。与地面站连接,(如果使用任务规划器)在地图上单击鼠标右键,选择“在此设置原点”、“在此设置 EKF 原点”,告诉 ArduPilot 飞行器的位置,它就会立即出现在地图上。

用于室内/室外转换(例如室内使用 VOXL 摄像头,室外使用 GPS+指南针):

  • EK3_SRC1_POSXY = 3 (GPS);
  • EK3_SRC1_VELXY = 3 (GPS);
  • EK3_SRC1_POSZ = 1 (Baro);
  • EK3_SRC1_VELZ = 0 (None);
  • EK3_SRC1_YAW = 1 (Compass);
  • EK3_SRC2_POSXY = 6 (ExternalNav);
  • EK3_SRC2_VELXY = 6 (ExternalNav);
  • EK3_SRC2_POSZ = 6 (ExternalNav);
  • EK3_SRC2_VELZ = 6 (ExternalNav);
  • EK3_SRC2_YAW = 6 (ExternalNav);
  • RC6_OPTION  = 90(EKF Pos 信号源)允许飞行员使用通道 6 在信号源 1(如 GPS+指南针)和信号源 2(如 VOXL 摄像机)之间切换。开关的低位置为源 1(GPS+指南针),中间位置为源 2(如 VOXL),高位置为源 3(如无),这将导致 EKF 失去位置估计并触发 EKF 故障安全。为避免飞行员错误触发 EKF 故障保护,您可能需要将 EK3_SRC1_xxx 或 EK2_SRC2_xxx 复制到 EK3_SRC3_xx;
  • RC7_OPTION = 80(Viso Align)允许飞行员在飞行前使用通道 7 将摄像机的偏航与 AHRS/EKF 偏航重新对齐。起飞前重新调整偏航是个好主意,否则可能会发生位置失控(又称“厕所保龄球”)。

修改参数后,重新启动自动驾驶仪

有关 GPS/Non-GPS 转换的更多详情,请点击此处(GPS/Non-GPS Transitions can be found here)。

为了在 VOXL 出现故障时使用光流和测距仪作为备份,这里提供了一个用于外部导航/光流转换的 Lua 小程序(ExternalNav/Optical flow transitions is here)。

4.4.1 使用 OpticalFlow 进行 EKF3 光源转换

如果需要在外部导航流和光学流之间切换,请参阅外部导航流/光学流转换(ExternalNAV/Optical Flow Transitions)

4.5 视频

极化码(Polar Code)是由土耳其科学家Erdal Arıkan在2009年提出的一种新型纠错编码技术。它通过利用信道的极化现象,将虚拟信道分为误码率接近0和接近1/2的两类。在编码设计中,数据被放置在误码率极低的信道上,从而实现高效的数据传输。极化码的主要优势在于其理论编码容量能够达到香农限,并且构造方法较为简单。 MATLAB是一种功能强大的数学计算和编程工具,广泛应用于科学研究和工程领域。在极化码的研究中,MATLAB可用于构建编码和解码算法,模拟数据在不同信道条件下的传输效果,验证理论性能,并优化相关参数。 SC(Successive Cancellation,逐位取消)译码是极化码的基本解码方法。它从最可靠的比特开始,依次解码每个虚拟信道,且每个比特的解码结果会影响后续比特的解码,因为它们之间存在依赖关系。虽然SC译码的实现较为简单,但其计算复杂度较高,随着码长的增加,解码时间会线性增长。 SCL(Successive Cancellation List,逐位取消列表)译码是SC译码的改进版本。它通过引入列表机制,同时处理多个路径,从而增强了错误校正能力,并在一定程度上降低了错误率。与SC译码相比,SCL译码虽然需要消耗更多的计算资源,但能够提供更好的性能。 一个完整的MATLAB仿真资源通常包含以下内容: 编码模块:用于实现极化码的生成,包括码字构造和极化矩阵操作等。 信道模型:用于模拟各种通信信道,例如AWGN(加性高斯白噪声)信道或衰落信道。 SC/SCL译码模块:包含SC译码和SCL译码的算法实现。 误码率(BER)计算:通过比较发送和接收的码字,计算误码率,以评估编码性能。 性能曲线绘制:绘制误码率与信噪比(SNR)之间的关系曲线,展示不同译码策略的性能差异。 使用说明:指导用户如何运行仿真,理解代码结构,以及如何调整参数以进行自定义实验。 代码注
评论 101
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmotionFlying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值