ArduPilot开源代码之Companion Computers简单分析

ArduPilot开源代码之Companion Computers简单分析

  • 1. 源由
  • 2. 伴机系统
    • 2.1 APSync
    • 2.2 DroneKit
    • 2.3 FlytOS
    • 2.4 Maverick
    • 2.5 ROS
    • 2.6 Rpanion-server
  • 3. 总结
  • 4. 参考资料

1. 源由

从稳定性,社区群体,以及开源方式的角度看,Ardupilot是不错的选择之一。

主要有以下几个特点:

  1. 【操控性】手动
  2. 【稳定性】自动导航
  3. 【安全性】异常场景
  4. 【普及性】社区受众群体广泛

为了更好的实现智能飞行,就需要融合传感和空间感知技术。这些内容显然并非当前任意一个飞控软件能解决的,更多依赖计算能力更强大的伴机电脑系统。

在入手companion computer之前,就Ardupilot生态圈内部提供的几个伴机方案进行研习和分析。

伴机电脑就选个手边简单的板子吧,主要还是分析软件这块内容。!

在这里插入图片描述

2. 伴机系统

  • APSync
  • DroneKit
  • FlytOS
  • Maverick
  • ROS
  • Rpanion-server

注:这里仅根据companion computer提供的信息进行简单分析。

2.1 APSync

【1】APSync介绍
【2】APSync代码

  • WiFi电传
  1. WiFi Access Point
  2. UDP Telemetry (port:14550)
  3. Log Download Script

在这里插入图片描述

  • WEB配置
  1. View and modify parameters
  2. View sensor information and trigger some calibrations
  3. Modify the Wifi access point name and password
  4. View and download log files if they are stored on the companion computer
    URL http://10.0.1.128

在这里插入图片描述- 视频传输

video stream
http://10.0.1.128:8000

在这里插入图片描述

从上面特性看,更像一个摄像头+电传模块的功能集成。

2.2 DroneKit

【1】DroneKit介绍
【2】DroneKit代码

该开发工具主要应用python编程,支持Ardupilot的MAVLink接口,详见:API资料

  1. Connect to a vehicle (or multiple vehicles) from a script
  2. Get and set vehicle state/telemetry and parameter information.
  3. Receive asynchronous notification of state changes.
  4. Guide a UAV to specified position (GUIDED mode).
  5. Send arbitrary custom messages to control UAV movement and other hardware (GUIDED mode).
  6. Create and manage waypoint missions (AUTO mode).
  7. Override RC channel settings.

2.3 FlytOS

【1】FlytOS介绍

在这里插入图片描述
该系统方案分析了众多应用场景,从行业应用的角度做了平台整合。

在这里插入图片描述

显然,这个是商业运作,开源代码是木有的,呵呵。

2.4 Maverick

【1】 Maverick介绍
【2】Maverick代码

该系统从功能角度来说很多:

  1. Downloadable, ready to flash, ready to fly images for Raspberry Pi (all models), NVidia Tegra TX1/TX2, Up (Up, Squared, Core), Odroid XU4, Intel Joule
  2. Downloadable VM image for developers in OVA (Open Virtual Appliance) and Parallels formats, should run in VirtualBox, VMware, Parallels etc
  3. Permissive MIT licensing, absolute minimum restrictions on opensource or commercial usage
  4. Ability to bootstrap from any donor/vendor OS (only Debian/Ubuntu based OS supported so far, but possible to support any base OS) and create custom images
  5. Single ‘maverick’ command provides system/network info, self updating, system configuration, service control
  6. Self-contained, consistent software environments and versions across different platforms
  7. Automatic detection and configuration of platform hardware and peripherals
  8. Easy modular network configuration including managed wireless, monitor/injection, Host Access Point, Avahi, Dnsmasq, DHCP client/server, wifibroadcast
  9. Built-in security, firewall, antivirus, scanners
  10. Selective, modular Mavlink proxy, Dronekit and MAVROS configuration, supports MAVProxy, mavlink-router, cmavnode
  11. Rich web-based IDE (Integrated Development Environment) - Cloud9
  12. Full SITL environment with separate mavlink proxy, dronekit and MAVROS instances
  13. Extensive consistent software components installed on all platforms - ROS Kinetic/Lunar, ROS2, Tensorflow 1.3, OpenCV 3.4, Gstreamer 1.12.4, FPV video (visiond, camera-streaming-daemon), Orb_slam2, RTABMAP, Aruco
  14. ArduPllot development environment, compiled ArduPilot for SITL, everything necessary setup to compile and upload to Flight Controllers direct from companion computer
  15. PX4 development environment, compiled PX4 for SITL, everything necessary setup to compile and upload to Flight Controllers direct from companion computer
  16. Vision functions - automatic detection and configuration of attached digital cameras for FPV (visiond), Precision Landing with vision_landing, experimental collision avoidance with RealSense depth cameras, Thermal Image streaming with Seek Thermal and Flir One devices, experimental SLAM components ORB_SLAM2 and RTABMAP

在这里插入图片描述但是从整体架构上不难看出围绕MAVLink/ROS/Vision在做数据分析,是一个整合的系统。

注:最近一次更新Nov 12, 2021,感觉有点缺少维护了。

2.5 ROS

【1】ROS介绍
【2】ROS代码

ROS(Robot Operating System)是机器人操作系统。因为SLAM (Simultaneous Localization and Mapping)/Vision等传感器和空间定位技术的应用,随着MAVROS组件的发展,现在这块非常热门。

这里不多做介绍,其系统也是非常庞大的。
在这里插入图片描述

2.6 Rpanion-server

【1】Rpanion-server介绍
【2】Rpanion-server代码

  1. Flight Controller telemetry routing to udp outputs
  2. Video Streaming via an RTSP server
  3. Network configuration
  4. NTRIP Streaming
  5. Logging (tlog and bin logs)

该服务是基于node.js开发的,其最终应用的还是MAVLink与飞控通信。鉴于其SBC可以做视频RTSP服务,因此可以进行相关视频图像流处理。

3. 总结

从上述几个Ardupilot伴机电脑上常用的软件来看,考虑如下:

  • 不考虑商业软件(学习研究角度)
  • 从不同的维度考虑
  1. 应用角度:SLAM/Vision/SensorFusion
  2. 飞控技术:MAVLink API
  3. 仿真角度:SITL in Gazebo

4. 参考资料

【1】Ardupilot-APSync
【2】Ardupilot-DroneKit
【3】Ardupilot-FlytOS
【4】goodrobots-Maverick
【5】Ardupilot-ROS
【6】Ardupilot-Rpanion-server

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

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

相关文章

HttpRunner自动化测试工具之录制工具使用--使用抓包工具通过命令转成yml文件

录制工具使用: 为了简化测试用例的编写工作,HttpRunner实现了测试用例生成的功能,对应的转换工具为一个独立的项目:har2case 使用操作步骤: 1、通过抓包工具获取HAR格式的数据包 2、通过命令har2case har的数据包路径…

Mybatis:一对一查询映射处理

Mybatis:一对一查询映射处理 前言一、概述二、创建数据模型三、 问题四、解决方案1、方案一:级联方式处理映射关系2、方案二:使用association处理映射关系3、方案三:分步查询 前言 本博主将用CSDN记录软件开发求学之路上亲身所得…

40.利用欧拉法求解微分方程组(matlab程序)

1.简述 求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。…

车载软件架构 —— 闲聊几句AUTOSAR OS(十一)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标…

TBB库中实现协程(coroutine)的源码说明

源码请见: https://github.com/oneapi-src/oneTBB/blob/master/src/tbb/co_context.h 在windows系统,TBB(也就是intel 的 oneTBB库),通过windwos fiber(纤程)来实现协程(coroutine)。 创建一个协程,代码很简洁: inline void create_coroutine(corouti…

C++动态规划经典试题解析之打家劫舍系列

1.前言 力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。 学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观…

创建PVC注意事项

On the one hand 创建永久卷(Persistent Volume Claim,PVC)时需要考虑以下几个因素: 存储类别(Storage Class):选择适合需求的存储类别是创建 PVC 的第一步。存储类别定义了永久卷的属性&…

react中PureComponent的理解与使用

一、作用 它是一个纯组件,会做一个数据的浅比较,当props和state没改变的时候,不会render重新渲染, 改变后才会render重新渲染,提高性能。 二、使用 三、注意 它不能和shouldComponentUpdate生命周期同时使用。因为它…

arm环境cloudstack在vpc下创建虚拟机失败

一、环境说明 操作系统:openEuler 22.03CPU:Kunpeng-920,arm v8cloudstack:4.18libvirtd:6.2.0 二、问题描述 在UI上创建VPC后,平台会同时创建一个virtual router,此时virtual router有两个网…

【CSS】3D卡片效果

效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"card"><img…

【JAVA】继承

作者主页&#xff1a;paper jie的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精…

使用java.util.List的containsAll()方法可能导致的问题

今天在偶然之间发现了一个bug&#xff0c;原因居然是使用了containsAll()方法&#xff0c;这个问题很简单&#xff0c;看以下代码就能发现很大的问题。 package collection;import java.util.ArrayList; import java.util.List;/*** author heyunlin* version 1.0*/ public cl…

HDFS集群滚动升级以及回滚相关

HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级&#xff08;downgrade&#xff09;注意事项 集群回滚操作 介绍 在hadoop v2中&#xff0c;HDFS支持namenode高可用&#xff08;H…

. 在css中的应用

正好看到一个用 &. 的css语句&#xff0c;感觉不太明白就去查了一下&#xff0c;感觉C站上缺少相关内容&#xff0c;所以这里就来补上一篇 &. 实际上是一种sass语法&#xff0c;在 Sass 中 & 表示父选择器的引用&#xff0c;可以用于创建更具体的选择器&#xff0…

如何将 dubbo filter 拦截器原理运用到日志拦截器中?

业务背景 我们希望可以在使用日志拦截器时&#xff0c;定义属于自己的拦截器方法。 实现的方式有很多种&#xff0c;我们分别来看一下。 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 spring aop 实现日志traceId唯一标识 java 注解结合 spring ao…

思科单臂路由、lacp链路聚合、NAT实验

实验拓扑图&#xff1a; 实验目的&#xff1a; 如图所示配置相应IP地址和VLAN&#xff0c;并通过在AR1上配置单臂路由&#xff0c;实现VLAN10和VLAN20的主机能够在VLAN间通信&#xff1b;在SW1和SW2的三条链路实施链路聚合&#xff0c;使用静态LACP模式&#xff0c;使一条链…

【Python文件新建、打开、读写、保存、查看信息操作】

【Python文件新建、打开、读写、保存、查看信息操作】 1 指定格式打开文件2 关闭文件3 使用with语句保证新建、打开后关闭文件&#xff0c;避免异常4 写入文件5 使用with语句保证打开后关闭文件&#xff0c;避免异常6 复制文件7 移动文件8 重名名9 判断文件或文件夹是否存在10 …

打开虚拟机进行ip addr无网络连接

打开虚拟机进行ip addr无网络连接 参考地址&#xff1a;https://www.cnblogs.com/Courage129/p/16796390.html 打开虚拟机进行ip addr无网络连接。 输入下面的命令&#xff0c; sudo dhclient ens33 会重新分配一个新的ip地址&#xff0c;但是此时的ip地址已经不是我原先在虚…

Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题

Visual Studio在Debug模式下&#xff0c;MFC工程中包含Eigen库时的定义冲突的问题 报错信息 Eigen\src\Core\PlainObjectBase.h(143,5): error C2061: 语法错误: 标识符“THIS_FILE” Eigen\src\Core\PlainObjectBase.h(143,1): error C2333: “Eigen::PlainObjectBase::opera…

LeetCode 热题 100 JavaScript--102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 示例 2&#xff1a; 输入&#xff1a;root [1…