Ardupilot开源飞控之FollowMe计划

Ardupilot开源飞控之FollowMe计划

  • 1. 源由
  • 2. 分析
  • 3. 计划
  • 4. 话题
  • 5. 设备
  • 6. 后续

1. 源由

随着现在的智能设备越来越智能,FollowMe就是一个最基本的特性。(注:远程遥控,传感联动,这些都是最基本的自动化控制技术,个人认为这些都不是我们这里提及的智能。)

问题是如何做到FollowMe特性,技术上有各种方法。从逻辑的角度看待这个问题,一个物要跟随人,那么有如下几个动作:

  1. 识别物
  2. 定位物
  3. 相对位置计算
  4. 更新跟踪轨迹
  5. 执行目标跟踪
  6. 异常情况处理
  7. 重复1-2-3-4-5-6-7

因为,我们人所生活的是一个四维空间,也就是三维坐标系统+时间。假设,任何物抽象成两个点,那么A点跟随B点,就需要不断的更新AB两点的位置信息,并规划处跟随的路径,当路径上出现障碍物,就需要做适当的障碍物规避而不影响最初的跟随目标。

收集了一些Ardupilot上的一些信息:

  • 【1】Ardupilot - Follow Mode
  • 【2】QGroundControl - Support of ArduPilot Copter/Rover Follow mode #7811
  • 【3】Copter: visual follow-me (or anything) #23349

2. 分析

从上述信息来看,主要分为两种类型:

  1. 主动FollowMe:采用位置beacon信息
  2. 被动FollowMe:采用视觉感知信息

典型的例子:

  1. Ardupilot飞控实现的FollowMe就是采用将GPS位置信息通过电传报告发送到另一台Ardupilot设备,后者通过计算轨迹进行跟随。
  2. OAK,通过摄像头视觉进行目标检测,随后进行位置估算,进而跟随。

注:上述讨论的问题没有涉及跟随路径上出现障碍的情况。阳光情况,我们可以假想只有两个AB点,不存在其他障碍物。实际障碍物区分静态和动态,此时,复杂度将呈非线性指数级增加。

3. 计划

从当前技术的角度,站在“巨人的肩膀上”做事,我们离这个目标并非遥不可及,而且从当前的信息来看,已经有人很好的完整了原型验证。

即使是成熟的技术,在从没有接触过的角度来看,那就是什么都不知道,什么都不懂,甚至在脑海中“压根没有这个技术存在过”。

因此,接下来,我们将按照如下要点逐步执行:

  1. 【无障碍物】主动FollowMe功能(采用GPS)
    • 目标飞控发送GPS位置坐标
    • 跟随飞控计算轨迹跟踪目标
  2. 【无障碍物】被动FollowMe(采用视觉)
    • 【伴机电脑】通过MAVLink控制飞控运动
    • 【伴机电脑】通过视觉跟踪目标
    • 【伴机电脑】通过视觉估算位置信息
    • 【伴机电脑】通过MAVLink跟随目标
  3. 【有障碍物】被动FollowMe
    • 【伴机电脑】进行障碍物检测
    • 【伴机电脑】跟随轨迹与障碍物分析,判断轨迹安全与否
    • 【伴机电脑】分析多目标,构建地图
    • 【伴机电脑】根据跟随轨迹安全与否,分析更新跟踪安全路线

整体来说,这个计划还是比较大的,不过相信,在开源社区里,这些都不是事情,我们还是有机会的!

4. 话题

整个过程相信会比较漫长,中间也会有不少讨论的话题,我们做一个整理,大家也可以参与进来:

  • ArduPilot Visual Follow Me Mode with OAK D
  • Monocular obstacle avoidance using companion computer
  • VINS-Mono - Can it be deployed on bare linux (not ROS)? #450
  • 无人机跟随一维高度避障场景–逻辑分析

5. 设备

主要用到的一些设备和飞控,后续如有补充,再增加:

  • 【1】Ardupilot开源代码之Rover上路计划
  • 【2】ArduPilot开源代码之CompanionComputer上天计划
  • 【3】Linux 36.2@Jetson Orin Nano之基础环境构建

6. 后续

感兴趣的小伙盘,可以留言,也可以看看这个系列要多久能出完,呵呵。

  • TBD
  • 请持续关注,点赞,评论都是好习惯!!!

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

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

相关文章

【神经网络结构可视化】使用 Visualkeras 可视化 Keras / TensorFlow 神经网络结构

文章目录 Visualkeras介绍下载安装代码示例1、导入必要的库2、创建VGG16神经网络模型3、可视化神经网络结构4、完整代码5、使用教程 可视化自己创建的神经网络结构1、导入要的库2、创建自己的神经网络模型3、可视化神经网络结构图4、完整代码 Visualkeras介绍 Visualkeras是一…

C++代码错误解决1(函数模板)

1、代码如下 //示例函数模板的使用 #include <iostream> #include <string> using namespace std; template <typename T>//函数模板 T max(T a,T b) {return a>b?a:b; } int main() {int a,b;cout<<"input two integers to a&b:"…

【微机原理及接口技术】可编程并行接口芯片8255A

【微机原理及接口技术】可编程并行接口芯片8255A 文章目录 【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口&#xff08;数据端口&#xff09;2.与处理器接口 二、8255A的工作方式三、8255A的编程1. 写入方式控制字&#xff1a;控制字…

从0开始回顾ElasticSearch

1 elasticsearch概述 1.1 elasticsearch简介 官网: https://www.elastic.co/ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的…

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结 本章知识点基于模型的强化学习与无模型的强化学习方法简介无模型的强化学习方法基于模型的强化学习方法 强化学习算法的评价指标Dyna-Q算法Dyna-Q 算法的具体流程Dyna-Q 代码实践 本章知识点 基于模型的强化学习与无模型的强…

C++语言·list链表

其实现在在讲这些容器的时候&#xff0c;我们的重点已经不是它的接口都有什么&#xff0c;功能都是什么了&#xff0c;这些内容官网上都能查到&#xff0c;而且容器和容器之间接口的不同处很少&#xff0c;我在讲解的话也只是把官网上的东西截图下来复述一下。现在的重点其实都…

AtCoder Regular Contest 178 A~D

A.Good Permutation 2&#xff08;贪心&#xff09; 题意&#xff1a; 给你一个正整数 N N N和一个由 M M M个正整数 A ( A 1 , A 2 , … , A M ) A(A_{1},A_{2}, \dots,A_{M}) A(A1​,A2​,…,AM​)组成的序列。 在这里&#xff0c; A A A的所有元素都是介于 1 1 1和 N N …

【多线程】深入理解一个thread pool

我发现很多博客没有系统的分析过一个线程池&#xff0c; 那么我今天就基于这个github的小例子&#xff0c;彻底的逐行学习一下https://github.com/progschj/ThreadPool主函数调用解析&#xff1a; cpp的主函数比较简单&#xff0c; 创建了一个4个线程的线程池&#xff0c; 然后…

python中使用(.)来进行相对路径访问文件

在Python中&#xff0c;使用相对路径访问文件是一种常见的做法&#xff0c;尤其是在处理与脚本位于同一目录或附近目录的文件时。相对路径是基于当前工作目录&#xff08;CWD, Current Working Directory&#xff09;的&#xff0c;即执行Python脚本时所在的目录。 1.当前目录…

网络编程-TCP

一、TCP的相关IP 1.1 SeverSocket 这是Socket类,对应到网卡,但是这个类只能给服务器使用. 1.2 Socket 对应到网卡,既可以给服务器使用,又可以给客户端使用. TCP是面向字节流的,传输的基本单位是字节. TCP是有连接的,和打电话一样,需要客户端拨号,服务器来听. 服务器的内核…

如何保护主机的安全

因为主机的安全涉及到保护主机的数据存储和处理的保密性、完整性和可用性。但是当主机一旦被攻击者入侵&#xff0c;那么企业将会面临多种安全风险&#xff0c;比如业务被中断、服务器不稳定和数据被窃取等风险&#xff0c;那么我们该怎样保护主机的安全呢? 对于提高主机的安全…

Stream流的使用

目录 一&#xff0c;Stream流 1.1 概述 1.2 Stream代码示例 二&#xff0c;Stream流的使用 2.1 数据准备 2.2 创建流对象 2.3 中间操作 filter map distinct sorted limit skip flatMap 2.4 终结操作 foreach count max&min collect 2.5 查找与匹配 a…

redis中String,Hash类型用法与场景使用

String 用法 1. 设置键值对 &#xff08;1&#xff09;设置键值对使用 set 命令设置 key 的值。 返回值&#xff1a;ok&#xff0c;如果 key 已经存在&#xff0c;set 命令会覆盖旧值。 &#xff08;2&#xff09;使用 setex 命令设置 key 的值并为其设置过期时间&#xff…

应用爬山算法做文本数据的挖掘和分析

爬山算法是一种启发式搜索算法&#xff0c;用于求解优化问题。它从一个初始解开始&#xff0c;逐步通过比较当前解与其邻域解的优劣来选择下一个可能更优的解&#xff0c;直到达到一个局部最优解或者无法进一步改进为止。爬山算法的核心思想是“贪心”&#xff0c;即每一步都选…

安全设计 | CISA:构建不可侵犯的代码,软件安全设计的未来之路

软件制造商在产品设计和开发过程中应采取安全设计原则和方法&#xff0c;以减少网络安全风险&#xff0c;并转变责任重心&#xff0c;使产品在设计时就内置安全特性&#xff0c;而不是依赖于后期的补丁和修复。为此CISA发布了《软件安全设计的原则和方法》&#xff0c;帮助软件…

兵器室管控系统|DW-306是一套成熟系统

概述 智慧兵器室管理系统&#xff08;DW-S306&#xff09;是依托互3D技术、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本解决方案利用现有内部网络&#xff0c;部署部队智能兵器室管理系统&#xff…

【Java】欸...?我学集合框架?真的假的?

【Java】欸…&#xff1f;我学集合框架&#xff1f;真的假的&#xff1f; Java集合框架 概述 Java集合框架主要由以下几个部分组成&#xff1a; 接口&#xff08;Interfaces&#xff09;&#xff1a;定义了集合的基本操作&#xff0c;如添加、删除、遍历等。实现&#xff0…

ResNet 学习

一. 残差块与残差层 简单来说&#xff0c;残差块是构成残差层的基本单元&#xff0c;而残差层则是由多个残差块组成的。在ResNet中&#xff0c;通常会堆叠多个残差层来构建深度模型。 (一).残差块&#xff08;Residual Block&#xff09; 这是ResNet的基本构建单元。一个残差块…

大语言模型的工程技巧(二)——混合精度训练

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 混合精度训练的示例请参考如下链接&#xff1a;regression2chatgpt/ch11_llm/gpt2_lora_optimum.ipynb 本文将讨论如何利用混合…

将本地HtmL网站打包成exe

将本地HTML网站打包成exe文件&#xff0c;可以使用工具如NW.js、Electron等。这些工具允许你将HTML、CSS和JavaScript打包成一个独立的可执行文件。下面以Electron为例&#xff0c;介绍具体步骤&#xff1a; 准备工作 安装Node.js和npm&#xff1a; Electron依赖于Node.js和np…