(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.1 购买什么

  • VOXL CAM + TOF Dev Kit
  • Flight Controller Telemetry Cable
  • Optionally an 8GB or larger SD Card

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_X、VISO_POS_Y、VISO_POS_Z 设置为相机在无人机上相对于重心的位置。详见传感器位置偏移补偿(sensor position offset compensation);
  • 可选择将 VISO_QUAL_MIN 增至 10(或更高),以便仅在质量为 10%(或更高)时才消耗相机的估计值。

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

  • EK3_SRC1_POSXY = 6 (ExternalNav);
  • EK3_SRC1_VELXY = 6 (ExternalNav);
  • EK3_SRC1_POSZ = 6 (ExternalNav);
  • EK3_SRC1_VELZ = 6 (ExternalNav);
  • EK3_SRC1_YAW = 6 (ExternalNav)。

修改参数后,重启自动驾驶仪。与地面站连接,(如果使用任务规划器)在地图上单击鼠标右键,选择“在此设置原点”、“在此设置 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 视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型高效微调方法综述:P-Tuning软提示与lora低秩微调附案例代码详解

Prompt Tuning 和 P-Tuning 都属于“软提示”&#xff08;soft prompt&#xff09;范式&#xff0c;但 P-Tuning 首次提出用小型 LSTM/MLP 对提示嵌入进行编码生成&#xff0c;而 Prompt Tuning&#xff08;又称 Soft Prompt Tuning&#xff09;则直接对一段可训练的嵌入序列做…

图解深度学习 - 深度学习的工作原理

上一篇&#xff0c;我们已经知道机器学习是将输入&#xff08;比如图像&#xff09;映射到目标&#xff08;比如数字“4”&#xff09;的过程。这一过程是通过观察许多输入和目标的示例来完成的。 我们还知道&#xff0c;深度神经网络通过一系列简单的数据变换&#xff08;层&…

实现图片自动压缩算法,canvas压缩图片方法

背景&#xff1a; 在使用某些支持webgl的图形库&#xff08;eg&#xff1a;PIXI.js&#xff0c;fabric.js&#xff09;场景中&#xff0c;如果加载的纹理超过webgl可处理的最大纹理限制&#xff0c;会导致渲染的纹理缺失&#xff0c;甚至无法显示。 方案 实现图片自动压缩算…

周界安全防护新突破:AI智能分析网关V4周界入侵检测算法的技术应用

一、方案概述 在安防周界防护领域&#xff0c;传统红外对射、电子围栏等防护系统弊端显著&#xff0c;其误报率高&#xff0c;易受飞鸟、树枝等干扰&#xff0c;且在恶劣天气、复杂光照下难以精准识别入侵。随着安全需求升级&#xff0c;基于AI智能分析网关V4的周界翻越入侵检…

解决服务器重装之后vscode Remote-SSH无法连接的问题

在你的windows命令窗口输入&#xff1a; ssh-keygen -R 服务器IPssh-keygen 不是内部或外部命令 .找到Git(安装目录)/usr/bin目录下的ssh-keygen.exe(如果找不到&#xff0c;可以在计算机全局搜索) 2.属性–>高级系统设置–>环境变量–>系统变量,找到Path变量&#…

leetcode 33. Search in Rotated Sorted Array

题目描述 可以发现的是&#xff0c;将数组从中间分开成左右两部分的时候&#xff0c;一定至少有一部分的数组是有序的。左部分[left,mid-1]&#xff0c;右部分[mid1,right]。 第一种情况&#xff1a;左右两部分都是有序的&#xff0c;说明nums[mid]就是整个数组的最大值。此时…

推荐一款滴滴团队开源流程图编辑框架logic-flow

LogicFlow 是一款基于 JavaScript 的流程图编辑框架&#xff0c;提供直观的可视化界面&#xff0c;帮助用户轻松创建、编辑和管理复杂的工作流、业务逻辑或流程模型。其核心优势在于低代码化、高度可定制和强交互性&#xff0c;适用于业务系统开发、BPMN 流程设计、决策树建模等…

java 进阶 1.0.3

Thread API说明 自己滚去看文档 CPU线程调度 每一个线程的优先使用权都是系统随机分配的&#xff0c;人人平等 谁先分配到就谁先用 也可以耍赖&#xff0c;就是赋予某一个线程拥有之高使用权&#xff1a;优先级 这样的操作就叫做线程调度 最基本的是系统轮流获得 java的做法是抢…

汇川EasyPLC MODBUS-RTU通信配置和编程实现

累积流量计算(MODBUS RTU通信数据处理)数据处理相关内容。 累积流量计算(MODBUS RTU通信数据处理)_流量积算仪modbus rtu通讯-CSDN博客文章浏览阅读219次。1、常用通信数据处理MODBUS通信系列之数据处理_modbus模拟的数据变化后会在原来的基础上累加是为什么-CSDN博客MODBUS通…

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

介绍 Halcon 的算子&#xff08;operators&#xff09;按照功能被系统性地划分为多个类别&#xff0c;官方文档中目前&#xff08;Halcon 22.11 版本&#xff09;共有 19 个主分类&#xff0c;每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的…

Https流式输出一次输出一大段,一卡一卡的-解决方案

【背景】 最近遇到一个奇怪的现象&#xff0c;前端vue&#xff0c;后端python&#xff0c;服务部署在服务器上面后&#xff0c;本来一切正常&#xff0c;但公司说要使用https访问&#xff0c;想着也没什么问题&#xff0c;切过去发现在没有更改任何代码的情况下&#xff0c;ht…

Vue常用自定义指令-积累的魅力【VUE】

前言 在【自定义指令—v2与v3之间的区别【VUE基础】一文中&#xff0c;整理了自定义指令部分vue2和vue3 两个版本的区别&#xff0c;有兴趣的伙伴或者针对自定义部分比较迷茫的伙伴可以跳转看一下。此次主要介绍一些自己积累的一些自定义指令的代码&#xff0c;与大家一起分享。…

【mysql】mysql的高级函数、高级用法

mysql是最常用的数据库之一&#xff0c;常见的函数用法大家应该都很熟悉&#xff0c;本文主要例举一些相对出现频率比较少的高级用法 (注&#xff1a;需注意mysql版本&#xff0c;大部分高级特性都是mysql8才有的) 多值索引与虚拟列 主要是解决字符串索引问题&#xff0c;光说…

C#日期和时间:DateTime转字符串全面指南

C#日期和时间&#xff1a;DateTime转字符串全面指南 在 C# 开发中&#xff0c;DateTime类型的时间格式化是高频操作场景。无论是日志记录、数据持久化&#xff0c;还是接口数据交互&#xff0c;合理的时间字符串格式都能显著提升系统的可读性和兼容性。本文将通过 20 实战示例…

Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)

一、前序 近两年AI发展太过迅速&#xff0c;各类AI产品层出不穷&#xff0c;AI绘图/AI工作流/AI视频等平台的蓬勃发展&#xff0c;促使图片/视频等复杂内容的创作更加简单&#xff0c;让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…

Javase易混点专项复习02_static关键字

1. static关键字1.1概述1.2修饰一个成员变量例&#xff1a;1.2.1静态属性与非静态属性示例及内存图对比 1.3修饰一个方法&#xff08;静态方法&#xff09;1.4.static修饰成员的访问特点总结1.5动态代码块和静态代码块1.5.1动态代码块1.5.2 静态代码块 1.6带有继承的对象创建过…

C++滑动门问题(附两种方法)

题目如下&#xff1a; 滑动窗口 - 题目 - Liusers OJ ——引用自OJ网站 方法如下&#xff1a; 1.常规思想 #include<bits/stdc.h> using namespace std; int main() {int n,k;int a[110];cin>>n>>k;for(int i0;i<n;i){cin>>a[i];}for(int i0;i…

mysql连接池druid监控配置

文章目录 前置依赖启用配置访问监控一些问题 前置 连接池有很多类型&#xff0c;比如 c3p0&#xff0c;比如 hikariCP&#xff0c;比如 druid。c3p0 一些历史项目可能用的比较多&#xff0c;hikariCP 需要高性能的项目比较多&#xff0c;druid 性能也很好&#xff0c;而且还提…

Jetson系统烧录与环境配置全流程详解(含驱动、GCC、.Net设置)

Jetson系统烧录与环境配置全流程详解&#xff08;含驱动、GCC、.Net设置&#xff09; 目录1. 准备工作与工具安装1.1 主机系统要求1.2 安装 SDK Manager 2. JetPack 系统烧录流程2.1 Jetson 进入恢复模式2.2 使用 SDK Manager 烧录 JetPack 3. Jetson 系统基础设置4. 配置 .Net…

分布式缓存:缓存的三种读写模式及分类

文章目录 缓存全景图Pre缓存读写模式概述1. Cache Aside&#xff08;旁路缓存&#xff09;工作流程优缺点 2. Read/Write Through&#xff08;读写穿透&#xff09;工作流程优缺点典型场景 3. Write Behind Caching&#xff08;异步写回&#xff09;工作流程优缺点典型场景 缓存…