当前位置: 首页 > news >正文

DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲

本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频:

你也可以直接通过Bilibili链接(https://www.bilibili.com/video/BV1N5B8YbEbL/ )跳转该视频。

【翻译中文版】DroneCAN 2024最新开发进展 Andrew在ardupilot开发者大会2024上的演讲

非常感谢。我很高兴来到加贺市。市长先生,非常感谢您精彩的介绍,我必须说,这次会议比澳大利亚的会议组织得好得多,Drone Japan做得太棒了,Randy和整个团队组织了这次会议。

我今天的演讲主题是系统更新(Systems Update),这实际上只是一个借口,有各种各样的技术,这些技术使ardupilot的底层在过去的18个月里发生了变化,距离我们上次在堪培拉举行的会议已经过去了18个月。

刚开始,我通常会向你介绍一下ardupilot的开发速度,我们处理了大约2500个PRs,大约从上次会议开始,在过去的18个月里,有超过8000个补丁 ,42万行代码发生了变化,我们有314位个人贡献者为主代码库贡献了代码,这太棒了!这些贡献者中有很多人就在这里。非常感谢大家对ardupilot的贡献。

我今天演讲的真正主题是连接和桥接,基本上,在过去的18个月里,我们做了很多工作,将我们在ardupilot中支持的所有不同类型的总线连接起来。我这里有一架示范的小四轴。这是一台小型Hexsoon EDU-450,如果你走到前面看到它,你会看到它有很多额外的部件,这些部件通常不会出现在这种规模的飞行器上,它展示了很多新的连接选项。

在过去的18个月里,ardupilot在以太网连接方面做了很多工作,因此网络支持已经取得了很大进展,我们开始看到以太网被部署在更多的车辆中,这太棒了!我们现在在IPv4上都有了虚拟串行端口,所以我们在网络上有了虚拟串行端口。我们在can总线上也有虚拟串行端口,允许我们传输所有不同的串行协议,我们支持通过以太网传输dronecan协议数据,稍后我会详细讨论这个问题。

IPv4网络通过串行桥接,所以我们可以通过快速串行端口连接网络。我们有连接虚拟设备和真实设备的软件在环仿真,我们有了基于CAN总线的R/C输入,总的来说,我们有很多不同的数据传输方式聚集在一起。

顺便说一下,在这个演讲中,如果你想提问,请大声喊出来

【有人在提问,但听不到具体问的什么,后面Andrew复述了问题】

在我配置的这个特殊设备中,是12.5Mbps。汤姆的问题是,他问IPv4串行链路,串行链路有多快?通过串行网络建立的典型串行链路是12.5Mbps。作为参考,ardupilot用户使用的大多数CAN设备都是1Mbps,这意味着我们实际上可以通过快速串行端口获得的带宽,比我们通过直接CAN端口(bxCAN)获得的带宽高12倍。当然,你可以配置为使用FDCAN的CAN端口,最高可达8Mbps。但串行总线实际上比CAN总线速度更快。我一会要展示的这个设备,它使用12.5Mbps的串行链路,使用点对点协议。

虚拟串行端口基本上允许任何ardupilot串行协议通过IPv4网络传输,所以最常见的用例是,例如,一个虚拟的mavlink TCP或UDP端口,以便您可以连接。比如我这里通过地面站连接了端口,这可能很难看到,我用MAVProxy和这个小无人机建立了两个连接,其中一个通过Herelink,使用91600波特率的Herelink,第二个连接是通过以太网的TCP连接,我有一个以太网连接,连接到serial to ethernet适配器,所以我在飞控中获得了12.5Mbps。

这架无人机的飞控是CubeOrange Plus,CubeOrange Plus没有原生以太网,但是用我这里的小适配器,你可以得到12.5Mbps的IPv4网络,在那些基于H7 MCU的飞控上,像CubeOrange、CubeOrange Plus和许多其他H7飞控上。

过去18个月发生的另一件事是大量用于网络的lua绑定,现在可以编写能够访问本地网络资源的lua脚本了。有了TCP/IP,你就可以和其他lua脚本,和其他组件比如配套计算机,和基于IP的无线电设备,和摄像机进行通信,除此之外你也可以和互联网资源进行通信。所以你可以有一个lua脚本,持续从云端获取数据,lua脚本可以直接运行在飞控上,一个基于STM32的飞控,或一个基于Linux的飞控,当你飞行时它可以访问互联网资源,这可以为你在你的飞控内的操作提供丰富的可能性。

我最近有一个非常有用的案例是和热像仪通信,比如ZT-30,有一个lua脚本,直接通过UDP和热像仪通信,查询热像仪的热数据,然后将其打包成数据包发送到地面站进行地理投影。这是我和某大学一起做的一个火灾观测项目的一部分,还有彼得和米歇尔,他们就在观众席上,它为与基于IP的设备交互提供了巨大的可能性。我认为,在未来几年,我们将看到越来越多的飞机使用IPv4以太网作为车辆内部通信的核心骨干网。

有问题吗?请再说一下。Q:你能引导加载吗?

所以问题是:能通过它引导加载吗?

可以的,实际上,我们确实有一个IPv4引导加载程序

既然我在这里,我就来演示一下

这是一个网页,该网页直接在小型飞控上运行,以及这里的这些小设备,有几个不同的可用设备,这是来自CubePilot的,这是一个非常小的以太网到串行和CAN适配器,我马上就会把它传递给大家;然后这个是BotBlox DroneCAN设备,它有一个小的五端口以太网交换机

这是一个很小的网页,这有一个 Reboot for firmware update,它进入一个基于网络的引导加载程序,这意味着你可以通过以太网更新设备上的固件,您的CAN外设都可以从远程地面站通过以太网更新,这些小设备的固件本身可以通过IPv4网络更新,因为我们在这些设备上有一个基于以太网的引导加载程序。

既然我在这里,不妨展示一下,这是一个用Lua编写的web服务器,如果你愿意,你可以用Lua编写一个完整的web服务器,这是一个非常简单的例子,我知道Tom有一个更复杂的web服务器,里面有很多javascript和漂亮的图片等等,我不太擅长javascript,所以我只做了一个非常基本的web服务器在这些小设备上运行。

而这个网络服务器可以,例如,访问你的日志,所以我在这里访问这个设备上的日志,我可以通过一个IP无线电从地面站下载这些日志,这实际上是通过一个Herelink Air Uint(一个产品的名称),我这里有一个Herelink,我通过我的笔记本电脑连接到Herelink,它将连接到无人机上的Air Uint,Ari Uint有一个以太网连接,连接到无人机上的小以太网交换机,然后连接到CubeOrange Plus飞控。

当我查看这些日志时,通常会使用点对点协议的串行到以太网连接器

以及这些设备中的以太网支持来访问飞行控制器上的日志

事实上,你可以通过这个下载日志,比直接用USB下载要快

从地面站远程获取日志比插入USB电缆获取日志要快得多

实际上您可以获得每秒约900kb的数据

这大约是直接USB连接速度的两倍

好了,我已经提到了网络引导加载程序和web服务器

现在我们已经有了基本的基础

我所期待的是

现在它已经准备好交给那些更好的

web开发人员来创建更好的web界面

我知道Peter 将会谈论一些新的基于 javascript 网络的界面

我希望我们将来能够将其直接放到车辆上

以便能够通过网络服务器

在飞控上直接提供更好的全面监控界面

就像我说的,汤姆已经在他的无人机里开发了一个

这是一些小型的串行转以太网的设备

这些都是基于AP_Periph的设备

AP_Periph 是我们为 ardupilot 设计的外围基础设施

它使我们能够创建GPS、空速传感器、指南针、测距仪

以及您可能需要作为无人机外设的所有其他不同的东西

网络带来的是能够支持以太网和IPv4网络连接的外设

我将分发给大家看一下

Andrew离麦克风太远了,听不清

我刚刚开始分发的这个小设备是CubePilot

一个小型的以太网CubeNode设备

它提供CAN总线,以太网和高速串行

因此你可以把这个小设备插到没有以太网的现有飞控上

然后你就可以在飞控上获得以太网

你也可以通过以太网访问你的CAN总线

我马上就会演示这个

不幸的是,只有一个CubePilot用以传递

屏幕右边的这个是BotBlox DroneNet

它和左侧设备的主要区别在于

它是一个更大的设备,内置了一个五端口的交换器

它是一个相当智能的交换器,真的是一个了不起的设备

我在我这架无人机上用的就是这个BotBlox DroneNet

这个五个端口的交换器意味着你可以把很多设备

很多以太网设备集成到飞行器上,把它们连接到飞控上

你可以连接你的云台,你的IP无线电

以及任何其他基于以太网的设备,都可以一次插进去

并且之后你就可以在lua中访问交换器的监控

继续下一页PPT

接下来这个是最近的更新

这就是基于多播UDP的CAN总线

基于前面的基础,现在我们在ardupilot中有了以太网

那么接下来的重点是,我们需要一套协议来利用以太网

很明显,有现有的协议

比如视频流RTSP,这是现有的IP无线电协议

但我们真正想要的是一套成熟的协议

可以反映传感器、执行器,以及飞行器、潜艇或漫游者的状态

最明显的协议就是DroneCAN

所以这部分内容就是将DroneCAN引入以太网或IPv4网络

这意味着我们得到了DroneCAN协议的全部力量

在车辆的IPv4以太网网络上有数百种不同的消息和控制机制

这意味着,例如,有一个以太网端口的配套计算机

可以看到并控制你车上所有的can设备

因此你可以去监控所有的ESC、伺服器、空速计的can流量

您可以使用它来更新固件

从而基于以太网的设备可以完全参与您的DroneCAN网络

如此这般,DroneCAN协议不再局限于CAN总线

它也适用于您的以太网

那么我来做个演示

我这里有...,这是dronecan_gui_tool上位机

这是dronecan_gui_tool

我之前已经把它和飞控建立了连接

你可以看到那些ESC

我马上就会讲到这些来自VimDrones的神奇的ESC

飞行器上的DroneCAN ESC通过can总线与飞控连接

然后CAN总线被桥接在点对点协议链路上

最大为12.5Mbps的点对点协议链路

该链路连接到以太网交换机

以太网交换机通过笔记本电脑桥接到地面站

通过我们基于Herelink建立的网络链路

此外,实际上我也有一条直接的以太网电缆来演示这一点

所以我实际上有一台假装是配套计算机的设备

所以我有两个连接,两个以太网连接,或者两个网络连接到飞机

所以我现在看到了这些ESC的状态,我看到了这里的流消息

我可以使用上位机去运行电机

现在这里有几个电机在运转

我把编号搞错了

现在是启动电机,由地面站(gui_tool)控制

可以看到所有从ESC到地面站的遥测信息

这些消息是在DroneCAN的Message中通过以太网传下来的

我在这里只是展示了你拥有的各种能力

现在这条数据链路有足够的速度(12.5Mbps)

我甚至不需要启用过滤

整个CAN总线的数据可以很轻松地把通过这条链路

因为我们有12.5Mbps,它很容易地承载整个CAN总线

我可以切换到另一个can总线

我可以连接到另一个,我现在就不麻烦了,非常轻松

我可以看到它们在这里,它在另一个can总线上,并连接到它

这确实为地面站管理CAN设备提供了有趣的可能性

我认为,特别是配套计算机

能够通过以太网访问所有CAN设备将会非常的棒

有什么问题吗

是的 乔治 我可以 我可以重复问题

在这种情况下

将机载的DroneCAN外设通过以太网连接在一起是否是个好方案

或者物理CAN总线仍然是一个更好的方案?

我认为,这些设备,无人机飞行时的控制信号

还是直接通过物理CAN总线连接与传输

我演讲的最后一张幻灯片

我将讨论未来的车辆架构

我怀疑,对于更大的车辆

在大型车辆上迁移到基于以太网的主干是值得的

我将在后面讨论更多

所以George的问题是

是直接使用CAN总线连接外围设备更好?

还是我们应该通过以太网?

在后面的幻灯片中会有更多的内容

您还可以将软件在环仿真与真正的can网络混合使用

如果我在这里启动一个SITL模拟,ardupilot运行你的模拟车辆

例如在Mission Planner中运行模拟

那么它将能够看到真实车辆的escs和gps

因为这些被投射到以太网上的多播UDP网络上

该网络是与居家进行SITL模拟的用户相同的网络

这意味着您可以居家开发can总线设备,并且可以控制这些设备

并且可以通过多播UDP网络进行模拟和物理设备混合仿真

我发现这非常有用

我对一些用户做过的一件事是

当一个远程用户有一个CAN总线设备的问题,我想要调试

我让他们使用我们的支持系统:support.ardupilot.org

把所有的遥测数据发给在澳大利亚的我

稍后我会展示更多关于 supported.ardupilot.org 的内容

遥测数据包括所有通过support.ardupilot.org的CAN总线流量

然后我可以做的是,将从用户输入的链接连接到本地仿真

然后我能够在本地仿真与他们的远程设备交互

这些物理设备在另一个国家,来自世界的另一边

出现在我的本地仿真里

这意味着我可以测试这些物理设备, 例如

如果有一个CANGPS行为不正常

我可以连接这个远程CANGPS或者连接我这里的本地副本

然后我可以编辑代码,重新编译,并重新连接

看看我是否已经解决了问题

就好像我坐在他们旁边,不管他们的物理设备在哪里

这是一项非常强大的技术 可以将物理世界与模拟世界连接起来

这可以通过网络从世界的另一端远程完成

我们有一个叫做DroneCAN Bridge的通用工具

它是pydronecan的一部分

它允许你在不同的传输之间进行n路桥接

因为DroneCAN支持CAN总线

并且它也支持slcan和mavcan以及多播UDP和TCP

你可以把所有这些连接在一起,创造出有趣的网络

我提到了支持系统:support.ardupilot.org

我把这个小窗户挪开

我知道你们很多人都知道ardupilot支持系统

有多少人用过ardupilot.support.org系统?

也许你们中有三分之一的人

你们中有多少人是作为支持工程师,而不是作为用户使用它的?

是的,所以说真的

你们所有人都应该给自己弄一个支持工程师的ID来远程支持别人

如果你还没有用过它

我强烈建议你去support.ardupilot.org看看它是如何工作的

自从上次会议以来

support.ardupilot.org的使用率增加了很多

我查看了系统的日志

我们已经有超过8400个基于这个系统的支持会议

自从我们在上次会议之前不久启动了这个系统后

并且有1.95亿个mavlink数据包通过支持系统

这是相当大的mavlink流量

确实有一些合作伙伴经常使用它来支持他们的用户

但很多其他的ardupilot合作伙伴还没有利用它

如果你不知道它,基本上它是一种方式

当你试图帮助你的一个客户,你可以让他们按下这个按钮

你们可以看到这个按钮在幻灯片的右下角

这是Mission Planner中的Support Proxy按钮

这就把他们的地面站和你这个支持工程师连接起来

你需要一个支持工程师的id,我可以在系统中给你分配一个id

这样就在他们的电脑和支持工程师之间建立了一个安全的连接

然后你可以得到它们所有的参数,所有的遥测数据

你还可以看到它们的can总线

实际上,您可以查看它们的can总线上的参数

并且可以远程调试问题

因此它是一个非常有用的工具来支持你的终端用户

如果你们中有人没有支持ID,请问我

或者在你们的合作伙伴支持频道上问

我们可以为你们的公司创建一组支持工程师ID

在过去的一年里,我们一直在继续研究各种事物

现在我们有了一个新的 HAL

它实际上是几年前我们有过的HAL的复兴

叫做HAL_QURT

所以HAL_QURT

QURT它运行在一个可爱的小的叫做VOXL-2的飞控上

我们找到Eric了吗?是的,Eric在后面

我们从ModalAI请来了Eric

Eric一直在和我们密切合作

与Eric合作非常棒

因为他非常了解QURT和VOXL-2的内部结构

所以这架小型多轴是一个漂亮的基于视觉的开发工具

这是ModalAI技术的试验台

他们有一个可爱的视觉里程计

事实上,他们在ModalAI系统中有两个视觉里程计系统

我们几年前就有了这个QURT

现在我们重新启用了它,它工作得很好

右下角的图片是空中书写的一个例子

我所做的就是让这架小无人机在户外飞行

它完全依靠视觉里程计飞行,它带着相机飞行,在空中书写

绿色的是视觉里程计路径,红色的是GPS显示的

但实际上不确定是GPS更准确还是视觉里程计更准确

但它确实能飞

通过一个小型视觉飞行里程计系统,它可以飞得非常好

这是一个非常紧凑的小板,功能非常强大

所以如果你有一个基于视觉的飞行器和视觉飞行里程计

VOXL-2系统是很值得研究的

有什么问题吗?

好吧。现在来谈谈我目前痴迷的事情

在过去的几个月里,我对这个叫做AM32的东西非常着迷

AM32是一个开源的ESC固件

它已经存在了好几年

但当BLHeli32停止向您提供固件时,它得到了真正的推动

停止向您提供固件

现在很多ESC供应商正在转换到AM32开源固件

它确实是一个很棒的固件

巨大的创造力,特别是 AM32 的首席开发人员 AlkaMotors

在开发这个固件方面做得非常出色

我已经思考了一段时间了

如果Ardupilot社区中有更多的人

可以使用开源ESC固件,那将是非常棒的

这样我们就可以在飞控和ESC之间建立更紧密的关系

并且对我们来说,调试ESC问题更容易了

因为在Ardupilot车辆中遇见ESC问题太常见了

通常很难找出ESC内部出了什么问题

因此,拥有一个开源 ESC,我们可以在其中添加额外的调试信息

可以获得有关ESC中发生的情况的真正详细的内部信息

这是一个巨大的机会

AM32是一个非常灵活的设计

目前,它支持八种不同的微控制器,有STM32、GD32和AT32

此外我一直在做CHV23,它很快就会被合并到AM32主固件中

当然,它支持DShot, BDShot和PWM输入

它支持EDT(扩展DShot遥测),给你反馈RPM,电压和电流

这就是标准的东西,和你用blhelixx得到的东西很相似

和你用BLHeli32得到的东西很相似

但AM32真正令人兴奋的地方在于它是开源的,我们可以扩展它

我们最近做的一件大事

就是在AM32上增加了对DroneCAN的支持

这辆车有四个AM32 DroneCAN ESC

这些ESC是由VimDrones制造的

那么,HuiBean,你想站起来打个招呼吗?

这是来自VimDrones的开发者HuiBean

我和他一直在密切合作,他是另一个AM32开发者

他一直在创建AM32 DroneCAN ESC

我要在房间里传一些,你们可以看看,因为它们真的很了不起

我还要把这个development-ESC传递给大家

下一张幻灯片是它的图片,这是development-ESC

这太棒了。这是一个小型ESC,它有一个内置电机

有一个小型的4000Kv电机,它有CAN总线和调试端口

都在一个小PCB上

所以对于一个软件工程师来说

收到来自VimDrones(HuiBean的团队)的

这个development-ESC真是太棒了

因为这推动了DroneCAN AM32的开发

我要把它们传下去

我还有这些小型ESC

微小的由VimDrones制造的DroneCAN AM32 ESCs

Andrew下去分发电调去了

这两个电调都是国内团队VimDrones做的

它们非常酷,非常漂亮的小型ESC

所以,我们现在在固件中拥有的是

我们在过去的一两个月里才开发出这个固件

但是我们已经有了DroneCAN参数管理

有一个完整的DroneCAN引导加载程序,引导更新固件

我们有ESC遥测

我们已经有四种不同的ESC设计 还有更多的在路上

我一直在被联系

几乎每周都会有一个供应商就创建AM32 ESC联系我

我预计很多供应商将开始制造自己的 ESC

因为您可以根据这个参考设计进行设计

并且可以非常轻松地构建适合您车辆的新型 ESC 设计

这是你们可以看到的一些ESC

左边是VimDrones的development-ESC

右上方的这个,是Sierra的,叫做Sierra脉冲ESC

右下角的这个,看不太清楚

这是TBS(Team Blacksheep)的12S ESC

现在,我只有一张没有DroneCAN支持的照片

但是有一个基于AT-F415微控制器的新版本

我有一个与 DroneCAN 配合使用的测试版本

它是一个 90A 12S ESC,完全支持 DroneCAN

很高兴看到像 Team-Blacksheep 

这样享有盛誉的制造商推出更大一点的 ESC

trappy 我相信你就在观众席的某个地方

是的!站起来打个招呼

这是来自Team-Backsheep的trappy

所以和TBS合作非常棒

他们即将推出他们的90A 12S ESC的DroneCAN版本

然后中间的这个微小的微型的,纳米的

就是我正在传递的ESC之一

蒂姆的问题是,没有DroneCAN,遥测技术是否有效?

有效,你在DShot上得到EDT(扩展DShot遥测)遥测

ardupilot支持这一点

和BLHeli_32一样,你得到RPM,电压,电流和温度

所以你只需要DShot(扩展DShot遥测)支持

就可以获得基本的遥测

有了DroneCAN,你可以得到更多的数据

所以我预计,至少对于大型车辆

大多数人会使用基于DroneCAN的ESC

好了,我想谈谈关于DroneCAN AM32 ESs的未来展望

因为拥有开源固件给了我们用这些ESC做更多事情的绝佳机会

我想做的是开始在飞行控制器和ESC之间建立更紧密的关系

你在飞行控制器上有一个lua脚本

它向ESC发送信息,根据你的飞行阶段改变ESC的设置

最明显的例子是你有一个倾斜旋翼

所以飞行器的电机是有垂直的,当你在悬停和向前飞行时

ESC的最佳设置在向前飞行和悬停时是完全不同的

所以如果你有一个长航时无人机

你想要最大限度地利用ESC

我想要能够告诉ESC我现在在向前飞行

更改为此替代参数集,不同的高级设置

关闭互补 PWM,更改制动级别,在飞行时更改 pwm 频率

以获得适合您的特定车辆的最佳设置

我们也可以在悬停时做这个

如果你处于非常安静的状态你不需要非常快速的控制

你可以调整ESC以获得最大的效率

然后在你需要的时候调整到最大的控制

因为它应该能够非常非常快地改变

比如在几毫秒内,在ESC的不同配置之间

现在,这些都是推测性的

我还没有对这种类型的变化做过很多测试

但我认为它开启了一些有趣的可能性

这是我上周刚刚添加的一个新Message,叫做FlexDebug

这不仅适用于AM32 ESC

也适用于任何制造DroneCAN外设的人

这是什么?这是一个新的DroneCAN消息

允许外设将任意的调试或内部数据

从设备发送到飞控并进入lua脚本

在这个特殊的例子中

我在这个飞行器上运行

我让飞行器发送了一个数据结构

里面有很多关于ESC内部发生的事情的详细信息

然后我让它出现在地面站上

我来展示一下这里发生了什么

如果你看这里,这是我的MAVProxy控制台

我要进去看看这个小图表

我现在画的是ESC内部的换相间隔

所以如果我真的启动了一些电机

你会看到它现在实时显示了换相间隔

我需要启动其他的电机,我们应该开始实时遥测了

它的作用是,你可以看到它在这里的数据流

这是FlexDebug消息的一小部分

FlexDebug消息只是一团数据

它以你想要的速率从ESC内部发送原始数据结构

在这种情况下,我发送25Hz,但也可以是200Hz

你正在发送这些原始的调试数据

这些调试数据可以在飞控上运行的lua脚本中使用

lua脚本可以将数据记录到我们的ardupilot板载bin日志中

或者它可以,在这种情况下

我将它作为名称-值流发送到地面站

或者你可以对此做出决定

Message非常简单,这就是这里的Message

这是一个非常简单的Message

我所做的是它有一个消息id,其中有一个保留区域

因此每个供应商可以保留他们自己的调试消息id范围

我期待更多正在开发他们自己的外设的ardupilot供应商

或者正在开发他们自己的专有设备的供应商,专有ESC

我希望像xxxx和xxxx等供应商将添加此消息

以便从他们的设备发送快速内部信息

并能够在ardupilot飞控中进行日志记录

这是试图解决我们在esc和伺服系统中遇到的一个核心问题

我昨天和xxx的人谈过

从他们的伺服器发送这个消息的可能性

从他们的伺服器获得内部调试信息

发送到飞控中进行记录和转储到地面站

我认为这将是一种调试复杂设备的绝妙方法

好了,差不多讲完了

这是最后一张幻灯片,我想谈谈ardupilot未来的架构

在右下角的图片 是从谁那里借来的,因为我不擅长画图等

随着飞机变得越来越大,越来越复杂

它们有越来越多的执行器,越来越多的设备

在过去的几年里,大多数大型车辆的标准都在向CAN总线转移

我认为值得考虑的一件事是,在接下来的几年里

像这样的交通工具是否会开始转向以太网骨干网

使用以太网到CAN适配器

这些小设备,我正在分发的其中一些,比如CubePilot

这个小设备它是以太网到串行适配器

它也是以太网到CAN适配器

这意味着您可以将它们作为车辆的外设从而拥有以太网主干网

然后连接到 CAN 总线外围设备

更好的是,我希望开始看到具有本机以太网支持的外设

我很乐意为AM32 ESC添加本地以太网支持

从而您可以将以太网电缆直接插入ESC

这就提供了一个有趣的机会

我们可以使用以太网链路聚合这样的设备

允许在车辆周围有冗余的以太网总线

如果你丢失了一个总线...

内置在这个BotBlox上的小交换机,以太网交换机DroneNet

是一个非常智能的小交换机

它可以做一些像链路聚合这样的事情

这意味着当你在车辆周围有多路总线时

如果你失去了其中一个以太网总线

它会自动将流量转移到另一个以太网总线上

同时所有的流量仍然可以通过

我认为,在未来几年内

这对于大型车辆来说将是一种绝妙的方式

可以拥有一个真正可靠的高速主干网

该主干网可以通用,适用于其视频设备、IP 无线电

以及所有不同类型的设备、执行器、传感器等

我的演讲到此结束

有问题吗?在我结束演讲并交给下一位演讲者之前

你提到过lua现在可以承载网页吗?

是的,的确,是的

这是否意味着在ardupilot上,我们可以运行自己的GCS?

是的 你可以 确实 是的 我们有所有需要的钩子

所以我今天的演讲确实展示了我们所能做的所有基础设施

但是我们还没有为这些部分开发用户界面层

有些改进了很多

像来自VimDrones的HuiBean确实改进了dronecan_gui_tool

我来展示给你看

在这里,例如,你会注意到这个界面

这个ESC界面,你可能以前没有见过

所有这些遥测信息都直接显示在ESC管理工具中

如果我去看参数,这些是其中一个VimDrone的ESC的参数

这是在飞行器上运行的小型ESC所有的内部调整和控制参数

HuiBean做的其中一件事是

我们可以用STARTUP_TUNE编辑器来编辑STARTUP_TUNE

所以我们需要更多这样的东西来创造更好的界面

我们已经有了基础

我们可以创建lua脚本,可以用javascript创建复杂的网页

我们有服务器端lua支持,在web html中嵌入lua脚本

可以访问车辆上任意的lua操作、参数等。

所以你的网页在你的地面站上运行

并访问所有数以百计的lua功能

现在这些功能在你的飞控中也可用

这为你的飞行器创造真正丰富的受控环境提供了巨大的机会

但我们需要优秀的网络开发人员

他们可以利用这一点开发出漂亮的界面

希望在未来的演讲中,在未来的几年里

我们可以展示这些类型的新界面,新功能

还有问题吗 好的 非常感谢大家。

相关文章:

DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲

本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频: 你也可以直接通过Bilibili链…...

从 App Search 到 Elasticsearch — 挖掘搜索的未来

作者:来自 Elastic Nick Chow App Search 将在 9.0 版本中停用,但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为,激励开发人员创造更具活力、更直观、更引人入…...

如何给GitHub的开源项目贡献PR

🎯导读:本文详细介绍了如何向开源项目“代码随想录”贡献自己的题解。首先,需要Fork原项目的仓库至个人GitHub账户,然后解决克隆仓库时可能遇到的SSH密钥问题。接着,按照标准流程对本地仓库进行代码或文档的修改&#…...

架构-微服务-服务配置

文章目录 前言一、配置中心介绍1. 什么是配置中心2. 解决方案 二、Nacos Config入门三、Nacos Config深入1. 配置动态刷新2. 配置共享 四、nacos服务配置的核心概念 前言 服务配置--Nacos Config‌ 微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个…...

鱼眼相机模型-MEI

参考文献: Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下: // 相机坐标系下的点投影到畸变图像// 输入:相机坐标系点坐标cam 输出: 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…...

设计模式——抽象工厂模式

定义与概念 抽象工厂模式是一种创建型设计模式。它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。简单来说,抽象工厂就像是一个工厂的抽象蓝图,这个蓝图定义了生产一组产品的方法,但具体怎么生产这些产…...

大语言模型(LLM)不平衡的内存使用问题;训练过程中 Transformer层1和Transformer层2的反向传播计算量差异

目录 大语言模型(LLM)不平衡的内存使用问题 一、不平衡的内存使用概述 二、不平衡的内存使用举例 嵌入层与Transformer层之间的内存差异: 不同Transformer层之间的内存差异: 输入数据对内存使用的影响: 三、不平衡的内存使用带来的问题 四、解决方案 大语言模型的…...

AI需求条目化全面升级!支持多格式需求,打破模板限制!

AI需求条目化全面升级!支持多格式需求,打破模板限制! 一、多格兼济 标准立成 1、功能揭秘 预览未来 平台需求板块的AI需求条目化功能迎来全面升级。它支持多种需求格式,不再受限于模板文件,能够一键自动快速且灵活地生…...

C#:时间与时间戳的转换

1、将 DateTime 转换为 Unix 时间戳(秒) public static long DateTimeToUnixTimestamp(DateTime dateTime) {// 定义UTC纪元时间DateTime epochStart new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);// 计算从UTC纪元时间到指定时间的总秒数Tim…...

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言

目录 C 语言实现 Python 实现 Java 实现 Js 实现 Ts 实现 题目&#xff1a;输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析&#xff1a;利用while语句,条件为输入的字符不为\n。 C 语言实现 #include <stdio.h>int mai…...

贪心-区间问题——acwing

题目一&#xff1a;最大不相交区间数量 908. 最大不相交区间数量 - AcWing题库 分析 跟区间选点一样。区间选点&#xff1a;贪心——acwing-CSDN博客 代码 #include<bits/stdc.h> using namespace std;const int N 1e510;struct Range {int l, r;// 重载函数bool op…...

OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...

Maven 插件

为 Maven 插件配置环境变量通常涉及到设置 Java 环境变量以及 Maven 相关的环境变量。以下是一些基本步骤&#xff1a; 1. 设置 Java 环境变量 Maven 需要 Java 运行环境&#xff0c;因此您需要确保 Java 的环境变量已经正确设置。 - **JAVA_HOME**&#xff1a;指向您的 Java…...

【Java基础入门篇】一、变量、数据类型和运算符

Java基础入门篇 一、变量、数据类型和运算符 1.1 变量 计算机中的数据表示方式是&#xff1a;“二进制(0/1)”&#xff0c;但是同时也可以兼容其他进制&#xff0c;例如八进制、十进制、十六进制等。 Java变量的本质是&#xff1a;存储在固定空间的内容&#xff0c;变量名是…...

[论文阅读]Poisoning Retrieval Corpora by Injecting Adversarial Passages

Poisoning Retrieval Corpora by Injecting Adversarial Passages 通过注入对抗性文本对检索语料库进行中毒 http://arxiv.org/abs/2310.19156 EMNLP2023 文章的目标就是要让检索器检索的结果包含攻击者生成的对抗性文本&#xff0c;如果能够检索到&#xff0c;则认为攻击成…...

[Redis#10] scan | db_0 | redis_cli | RESP | C++-redis启动教程

目录 1. 渐进式遍历 1.2 常见指令 - scan 2. 数据库管理 3.redis 客户端 是否前面学习的这些 redis 命令&#xff0c;没有价值了呢&#xff1f; 4.RESP 自定义协议 为什么能编写出一个自定义的 Redis 客户端&#xff1f; RESP 协议 5.在 Ubuntu 下启用 C 操作 Redis …...

LCR 151.彩灯装饰记录III

题目 代码 class Solution { public List<List> levelOrder(TreeNode root) { if(root null){ return new ArrayList<>(); } Queue<TreeNode> queue new LinkedList<>();List<List<Integer>> res new ArrayList<>();int sum 1;…...

vue实现滚动条滑动到底部分页调取后端接口加载数据

一、案例效果 二、前提条件 接口返回数据 三、案例代码 子组件 const $emit defineEmits([cloneItem, updateList]);const props defineProps({rightList: {type: Array,},chartTableData: {type: Array as () > ChartListType[],},deleteChartInfo: {type: Object,}…...

Vscode连接服务器

在VS Code中连接服务器的主要步骤如下‌&#xff1a;‌ 1.‌安装Remote-SSH插件‌&#xff1a;打开VS Code&#xff0c;进入插件市场搜索“Remote-SSH”并安装。安装完成后&#xff0c;VS Code的侧边栏会出现一个远程资源管理器的图标。 2.‌配置服务器信息‌&#xff1a;点击…...

工作中Linux 内核的链表算法的使用

在 Linux 内核中,链表是一个非常重要的数据结构,广泛用于各种场景,如任务调度、设备管理、进程管理等。Linux 内核提供了高效且灵活的链表实现,能够更好地管理系统中的数据和对象。我们将深入浅出地讲解 Linux 内核链表的实现原理、用法,并举例展示如何使用。 1. 链表基本…...

洛谷P1115

最大子段和 - 洛谷 最大子段和 题目描述 给出一个长度为 n的序列a&#xff0c;选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数&#xff0c;表示序列的长度n。 第二行有n个整数&#xff0c;第i个整数表示序列的第 i个数字 a_i。 输出格式 输出一行…...

USB Type-C一线通扩展屏:多场景应用,重塑高效办公与极致娱乐体验

在追求高效与便捷的时代&#xff0c;启明智显USB Type-C一线通扩展屏方案正以其独特的优势&#xff0c;成为众多职场人士、娱乐爱好者和游戏玩家的首选。这款扩展屏不仅具备卓越的性能和广泛的兼容性&#xff0c;更能在多个应用场景中发挥出其独特的价值。 USB2.0显卡&#xff…...

使用Native AOT发布C# dll 提供给C++调用

Native AOT&#xff0c;即提前本地编译&#xff08;Ahead-Of-Time Compilation&#xff09;&#xff0c;是一种将托管代码&#xff08;如 C#&#xff09;编译为本机可执行文件的技术&#xff0c;无需在运行时进行任何代码生成。 &#xff08;Native AOT 优缺点截图摘自张善友博…...

Excel中根据某列内容拆分为工作簿

简介&#xff1a;根据A列的内容进行筛选&#xff0c;将筛选出来的数据生成一个新的工作簿(可以放到指定文件夹下)&#xff0c;且工作簿名为筛选内容。 举例&#xff1a; 将上面的内容使用VBA会在当前test1下生成5个工作簿&#xff0c;工作簿名分别为TEST1.xls TEST2.xls TEST3…...

网络安全体系与网络安全模型

4.1 网络安全体系概述 4.1.1 网络安全体系概述 一般面言&#xff0c;网络安全体系是网络安全保障系统的最高层概念抽象&#xff0c;是由各种网络安全单元按照一定的规则组成的&#xff0c;共同实现网络安全的目标。网络安全体系包括法律法规政策文件、安全策略、组织管理、技术…...

彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法

1.参考文章&#xff1a; &#xff08;1&#xff09;https://www.zhihu.com/question/25111128 这里面的第一个回答&#xff0c;有一幅图&#xff1a; 只要理解的四叉树的构建&#xff0c;对于八叉树的构建原理类比方法完全一样&#xff1a;对于二维平面内的随机分布的这些点&…...

Altium Designer脚本工具定制

原理图设计自动化 ➡️Altium原理图检查工具 ➡️元器件参数集导入导出 ➡️原理图符号自动创建 ➡️原理图高级查找 ➡️原理图库文档高级查找 ➡️原理图文档对比 ➡️原理图库文档对比 PCB设计自动化 ➡️各种各样的PCB线圈自动创建 ➡️PCB文档导出成SVG格式文档…...

容器化与容器编排(Containerization and Orchestration)

一、容器化与容器编排介绍 容器化技术(Containerization)是一种轻量级的虚拟化技术,它允许开发者将应用及其所有依赖打包到一个独立的、隔离的容器中。容器比传统虚拟机(VM)更加轻便、高效,可以跨平台部署,并且提供一致的运行环境。而容器编排(Container Orchestratio…...

娱乐API:快速生成藏头诗、藏尾诗和藏中诗

引言 诗歌是中国传统文化的重要组成部分&#xff0c;其中藏头诗、藏尾诗和藏中诗因其独特的形式而备受喜爱。为了满足广大文学爱好者的需求&#xff0c;我们推出了一款娱乐API&#xff0c;支持快速生成藏头诗、藏尾诗和藏中诗。本文将详细介绍该API的功能、使用方法以及如何将…...

基于Python制作一个简易UI界面

基于Python制作一个简易UI界面 目录 基于Python制作一个简易UI界面1 原理简介2 编写程序3 程序测试 1 原理简介 这里用到了Python自带的UI库tkinter。 tkinter 是 Python 的标准 GUI&#xff08;图形用户界面&#xff09;库&#xff0c;用于创建和管理图形界面。它提供了一个简…...

【视频】OpenCV:读写视频文件VideoCapture和VideoWriter

1、VideoCapture:获取视频 VideoCapture可以从摄像头或者视频文件(eg:mp4,avi)中获取视频数据。 1.1 打开视频 1)打开摄像头 cv::VideoCapture cap(0); 参数:0表示默认摄像头 2)打开视频文件 cv::VideoCapture cap("video.mp4");3)判断是否打开成功 …...

【Leecode】Leecode刷题之路第62天之不同路径

题目出处 62-不同路径-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 62-不同路径-官方解法 方法1&#xff1a;动态规划 思路&#xff1a; 代码示例&#xff1a;&#xff08;Java&…...

HarmonyOS NEXT应用开发,关于useNormalizedOHMUrl选项的坑

起因是这样的&#xff1a;我这库打包发布出问题了&#xff0c;这个有遇到的吗&#xff1f; 源码里面就没有 request .d.ts,这打包后哪来个这文件&#xff1f;且漏掉了其他文件。 猫哥csdn.yyz_1987 为啥我打包的har里面&#xff0c;只有接口&#xff0c;没有具体实现呢&#x…...

基于SpringBoot实现的编程训练系统(代码+论文)

&#x1f389;博主介绍&#xff1a;Java领域优质创作者&#xff0c;阿里云博客专家&#xff0c;计算机毕设实战导师。专注Java项目实战、毕设定制/协助 &#x1f4e2;主要服务内容&#xff1a;选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 &#x1f496;精彩专栏…...

Spring Cloud Stream实现数据流处理

1.什么是Spring Cloud Stream&#xff1f; Spring Cloud Stream的核心是Stream&#xff0c;准确来讲Spring Cloud Stream提供了一整套数据流走向&#xff08;流向&#xff09;的API&#xff0c; 它的最终目的是使我们不关心数据的流入和写出&#xff0c;而只关心对数据的业务处…...

DETR:End-to-End Object Detection with Transformers

【DETR 论文精读【论文精读】-哔哩哔哩】 https://b23.tv/Iy9k4O2 【DETR源码解读4-哔哩哔哩】 https://b23.tv/Qp1uH5v 摘要&#xff1a; 将目标检测看作一个集合预测的问题 任务&#xff1a;给定一张图片&#xff0c;预测一组框&#xff0c;每个框需要得到坐标信息和包含的…...

【C++/Qt 】使用QCustomplot类打造一款数学函数图像生成工具(支持latex公式渲染+Python连接AI大模型)

✨✨ Rqtz 个人主页 : 点击✨✨ &#x1f308;Qt系列专栏:点击 软件介绍 基于Qt的开源项目QCustomplot类的一款在线的数学函数图像生成工具&#xff0c;涉及到了数学的latex公式渲染&#xff0c;如何将latex语法转换为Python的函数&#xff0c;和如何在Qt中使用QCustomplot类进…...

Hackathon靶机系列Hackathon2

扫描ip&#xff1a; 获得靶机的ip&#xff1a;192.168.108.134 扫描端口&#xff1a; 获得80端口&#xff0c;7223的ssh和一个ftp服务器服务器中存在两个文件&#xff1a; 先看ftp&#xff1a; 默认用户名为ftp&#xff1a; 下载两个文件&#xff1a; 和 打开flag1.txt: 获得…...

Mybatis 复习

1 什么是MyBatis MyBatis是一个优秀的持久层框架&#xff0c;它对JDBC操作数据库的过程进行封装&#xff0c;使开发者只需要关注 SQL 本身&#xff0c;而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、 结果集检索等JDBC繁杂的过程代码 。…...

BurpSuite安装教程(详细!!附带下载链接)

声明 学习内容来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3fb;作者简介&#xff1a;致…...

Istio_05_Istio架构

Istio_05_Istio架构 ArchitectureControl PlanePilotCitadelGalley Data PlaneSidecarIstio-proxyPilot-agentMetadta Exchange Ambient Architecture 如: Istio的架构(控制面、数据面) Gateway: Istio数据面的出/入口网关 Gateway分为: Ingress-gateway、Egress-gateway外部访…...

R语言结构方程模型(SEM)在生态学领域中的应用

目录 专题一、R/Rstudio简介及入门 专题二、结构方程模型&#xff08;SEM&#xff09;介绍 专题三&#xff1a;R语言SEM分析入门&#xff1a;lavaan VS piecewiseSEM 专题四&#xff1a;SEM全局估计&#xff08;lavaan&#xff09;在生态学领域高阶应用 专题五&#xff1…...

node.js基础学习-fs模块-文件操作(六)

一、前言 fs模块是 Node.js 内置的文件系统&#xff08;File System&#xff09;模块&#xff0c;它提供了一系列用于与文件系统进行交互的方法。通过fs模块&#xff0c;可以对文件或目录进行读取、写入、删除、重命名、查询状态等操作&#xff0c;这使得 Node.js 能够很好地处…...

EXCEL截取某一列从第一个字符开始到特定字符结束的字符串到新的一列

使用EXCEL中的公式进行特定截取 假设列A是一组产品的编码&#xff0c;我们需要的数据是“-”之前的字段。 我们需要在B1单元格输入公式“LEFT(A1,SEARCH("-",A1)-1)”然后选中B1至B4单元格&#xff0c;按“CTRLD”向下填充&#xff0c;就可以得出其它几行“-”之前的…...

JVM的垃圾回收算法有哪些

标记清除算法 标记清除算法&#xff0c;是将垃圾回收分为2个阶段&#xff0c;分别是标记和清除 根据可达性分析算法得出的垃圾进行标记对这些标记为可回收的内容进行垃圾回收 优点:标记和清除速度较快缺点:碎片化较为严重&#xff0c;内存不连贯的 标记整理算法 优缺点同标记…...

看华为,引入IPD的正确路径

目录 前言 引发重视 作者简介 前言 华为将 IPD 的引入过程归结为三步&#xff1a; 先僵化、后优化、再固化。 如果只是单纯模仿&#xff0c;在不清楚底层逻辑的情况下&#xff0c; 就开始走先僵化的流程&#xff0c;去搞削足适履式的引入。 开始执行后&#xff0c;你就…...

2024142读书笔记|《别无归处是归处》——一壶酒,一竿身,世上如侬有几人

2024142读书笔记|《别无归处是归处》——一壶酒&#xff0c;一竿身&#xff0c;世上如侬有几人 《别无归处是归处&#xff1a;吴镇的“渔父”画题&#xff08;文人画的真性&#xff09;》作者朱良志。诗词与古画并存的一本书&#xff0c;古画是比较偏复古黯淡微黄及墨色的&…...

think php处理 异步 url 请求 记录

1、需求 某网站 需要 AI生成音乐&#xff0c;生成mp3文件的时候需要等待&#xff0c;需要程序中实时监听mp3文件是否生成 2、用的开发框架 为php 3、文件结构 配置路由设置 Route::group(/music, function () {Route::post(/musicLyrics, AiMusic/musicLyrics);//Ai生成歌词流式…...

PostgreSQL详细安装教程

#安装PostgreSQL的yum仓库 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#安装PostgreSQL 15版本 sudo yum install -y postgresql15-server#初始化数据库&#xff08;若要自定义数据库存储目录…...

电子电气架构 --- 车载网关GW连接外部IP Tester

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...