ardupilot官方2018年项目计划表(建议)

本文是一篇ArduPilot开发人员为GSoC2018建议的项目列表,我们翻译过来方便大家观看,文章来源:http://ardupilot.org/dev/docs/gsoc-ideas-list.html

1为多旋翼和无人车完善避障功能,包括使用OctoMap或ROS添加入住网格。

2 对多旋翼和无人车在障碍物周边进行路径规划。

3 为多旋翼和无人车设置禁飞/远离区。

4 针对APSync的实时视频改进,包括针对带宽和视频流进行帧速率优化。

5 改进ROS集成和文档。

6 改进物联网集成,以实现网页上实时查看无人机位置。

7 支持平衡机器人。

8 单直升机或同轴直升机飞行控制改进。

9 直升机自转支持。

10 机器视觉/在直升机或漫游车上机器学习的例程。

11 改进软件在环模拟器以包含3D查看器和对象。

12 ArduPilot 软件在环仿真的SimuLink接口。

13 AirSim无人机模拟器支持ArduPilot软件在环仿真

https://github.com/Microsoft/AirSim/)。

14 JavaScript DataFlash日志解析器和一个用于以与MAVExplorer相似的功能绘制用户日志的系统,但托管在用户浏览器中。

15 改进与ArduPilot的UAVCAN集成。

16 D-Shot电调支持。

17 为固定翼飞机提供3D特技支持。

 

更多细节

以下各节将详细介绍上面列出的一些项目


为多旋翼和无人车完善避障功能

 

多旋翼和无人车已经实现“简单”的物体避让(http://ardupilot.org/dev/docs/code-overview-object-avoidance.html),它可以在撞到障碍物之前停下来,但是只在搭载的声纳/激光雷达/视觉系统感知到周边的物体时才能起作用。然而在使用激光雷达/声纳时,可能会由于在三维空间中无法观测到各个方向障碍时出现问题。飞行器(无人车)会在正面碰撞物体之前停下来,但当用户将它向左或向右转动90度(从而使障碍物在激光雷达的视野之外),它就会向左或向右飞向障碍物。更好的解决方法是:

 

●使用OctoMap或ROS等程序建立我们感知障碍物的区域的3D地图。但是,很可能只有高性能的飞控或配套的计算机才能够运行这些程序(应该确认一下配置是否达到要求)。

●使用上面生成的3D地图来决定我们可以或不可以飞入某个方向,然后使用mavlink DISTANCE_SENSOR消息向车辆的回避/距离库提供“哪条路是安全的”信息。

 

对多旋翼和无人车在障碍物周边进行路径规划

 

这个项目的目的是让多旋翼和无人车在障碍物周围自主移动。有两个关键点十分重要:

 

●该无人机(无人车)正在开始其基于“航点”的旅程。这时,我们的导航控制器记录起点和目的地,然后向下级控制器发送姿态和推力命令(每秒多次),以遵循直线路径。在这个项目中,我们将添加一个新的路径规划导航库,它将基于已知的障碍物创建一条路径(可能由多条直线组成)。这些障碍物数据最初只包括地形数据(已经可用),但可以在将来扩展到其他来源(即参见下面的“禁飞区域”)。

 

基于实时声纳/激光雷达信息,无人机(无人车)飞行过程中会遇到面对障碍物的情况。它可以使用“路径规划”试图找到绕过阻碍物的路线。如果无人机(无人车)卡住超过几秒钟,可能会触发“失控保护”。它试图到达的最终位置将被提供给路径规划者,并且由路径规划者将提供三维运动(可能是三维速度向量)以便无人机(无人车)绕过障碍物。这种实时路径规划功能可能需要完成上述“为多旋翼和无人车的完善避障功能”,以便3D地图可用。

 

为多旋翼和无人车设置禁飞/远离区

 

在这个项目中,多旋翼和无人车将停靠于/或避免进入由用户或外部第三方数据提供商(如https://www.altitudeangel.com/)提供的“禁飞”(又名“勿入”)区域。

 

●区域可能被定义为3D柱面或立方体,其属性包括位置(纬度,经度,高度)和范围大小。

●地面站(即MissionPlanner或QGroundControl)负责将用户定义的禁飞区域与地面站计算机上的第三方数据提供者信息进行合并。

●ArduPilot固件(运行于飞控系统上)将向地面站发送mavlink消息,以请求给定区域内的所有禁飞区信息。应答消息将被处理并保存在飞行控制器上的一个小型数据库中,类似于我们如何存储地形数据(请参阅AP_Terrain库)。

●AC_Avoidance库将被延长以阻止车和飞行器进入这些禁飞区,类似于我们如何避免击中护栏。

●将来,这个禁飞区域信息也可能提供给“路径规划者”(参见“对多旋翼和无人车在障碍物周边进行路径规划”)。


这是未来几年在一些国家为监管目的而需要的重要功能,也是众多老用户请求之一

 

实时视频改进

 

大多数用户希望实时视频从他们的无人机(无人车)直接传送到地面站。 ArduPilot的APSync包括使用gstreamer的实时视频,但其性能可以通过以下方式得到极大改善:

 

●基于带宽修改帧速率和视频质量。

●允许地面站判断来自飞行器(无人车)的视频流中哪些可用。

●允许开启/关闭视频流传输。


英特尔相机流式守护程序已经完成了大量工作,因此这可能是一个很好的起点。

 

改进ROS集成和文档

 

通过使用mavros(http://wiki.ros.org/mavros)和阅读我们的一些教程文档,ArduPilot可以和ROS(http://ardupilot.org/dev/docs/ros.html)一起使用。 该项目涉及:

 

●确认ROS / ardupilot设置说明是正确的,如果不正确,帮助纠正。

●代码根据需要更改为mavros或ArduPilot以提高集成度。

●开发和编写示例脚本/程序以向其他开发人员展示如何执行常见任务。

●如果时间允许,将ROS添加到APSync映像(http://ardupilot.org/dev/docs/apsync-intro.html),以便新用户进行设置。

对这个项目感兴趣的开发人员应该对ROS有很好的理解。

 

改善物联网集成

 

该项目的目的是通过直接增加ArduPilot对MQTT协议的支持,或在协同计算机上运行的APSync,将ArduPilot无人机更容易集成到物联网中。

 

如果支持直接添加到ArduPilot中,应该类似于我们如何支持现有的MAVLink和FrSky协议,这意味着我们将添加一个知道如何使用和发布mqtt消息的新库,并根据需要填入从ArduPilot的各种子系统获取的数据,如GPS,加速度计等。

 

如果支持已添加到APSync,则最好通过添加mavlink / mqtt转换程序来处理此项目。即一个翻译层,接受来自外部来源的ardupilot和mqtt消息的mavlink。

 

对此项目感兴趣的开发人员可能首先需要花费精力定义我们应该支持哪些mqtt消息,它们的格式以及ArduPilot子系统中可以找到这些信息的位置。通过像这样的一些早期尝试,这将变得更加容易。

 

支持平衡机器人

 

ArduPilot支持各种类型的飞行器和无人车,但却不支持平衡机器人(这是来自MAKE杂志的描述)。该项目涉及扩展ArduPilot的Rover固件以支持平衡机器人。 这个项目中的一些步骤是:

 

●扩展AR_AttitudeControl库。可能需要俯仰角实现油门/加速度控制,并可能需要转向和油门控制器耦合。

●确保所有现有的驱动模式兼容平衡机器人

●在wiki上记录设置过程。

 


单轴直升机和/或共轴直升机飞行控制改进


单机直升机和同轴直升机是顶部有一个或两个电机的飞行器,以及下面4个伺服控制的小翼诱导空气纵横姿态。 ArduPilot已经支持这些飞机,并且已经有一些成功的试飞,但是他们的姿态控制器需要我们投入更多的精力,以使之达到其他飞机类型的性能水平。

 

这个项目将需要首先在模拟器(可能是RealFlight8)中运行飞行器,然后在真实飞行器上进行测试。

 

希望参与该项目的开发人员应该对控制理论(PID控制器)有所了解,并准备对模拟和实际飞行的数据闪存日志进行详细分析,以确保我们的控制方法与这些飞机的物理特性相匹配。

 

直升机自旋支持


当发动机在直升机上失效时,好的飞行员可以使用自动旋转功能安全降落直升机。我们也希望ArduPilot具备自旋功能。我们已经有了一个非常不错的使用RealFlightFlightAxis后端的直升机仿真系统,为开发此功能提供了理想的测试环境。该项目将需要在模拟器中使用转子RPM和电机RPM传感器,以从各种高度和飞行速度产生可靠的自旋。如果模拟器测试进行得很顺利,那么它可以在一些真正的直升机上进行测试。

 

在旋翼或无人车上实现机器视觉/机器学习


该项目涉及使用机器视觉和/或机器学习并为ArduPilot的无人机/无人车固件添加一项新的实用功能。这可能是为了让一架旋翼/无人车沿着一条道路行驶,让一架无人机决定着陆的安全地点,或者在GPS丢失的情况下找到回家的路。

 

●可能需要高计算效率的电脑(http://ardupilot.org/dev/docs/companion-computers.html)(可能是NVidia TX1 / TX2)。

●使用机器视觉或学习(或许使用TensorFlow)(https://www.tensorflow.org/ )识别道路,着陆点或回家路径,

●发送速度命令(可能使用SET_GLOBAL_POSITION_INT:

http://mavlink.org/messages/common#SET_POSITION_TARGET_LOCAL_NED或SET_POSITION_TARGET_GLOBAL_INT

http://mavlink.org/messages/common#SET_POSITION_TARGET_GLOBAL_INT

)以正确的方向驱动飞行器。

●添加解决方案到APSync (http://ardupilot.org/dev/docs/apsync-intro.html)

●记录解决方案


添加3D查看器到软件在环仿真中


在环仿真中的ArduPilot软件支持许多物理后端。其中一些后端具有很好的3D接口,可以实现飞行显示,但“内置”物理后端没有这个功能。内置后端对于快速开发非常方便,因此在使用这些后端时如果可以使用可视化的方式显示车辆是非常不错的。当前,我们确实有一个解决方案,即可以在外部使用FlightGear进行可视化时,但它没有提供我们想要的可视化效果,我们也无法添加属于物理环境的部分的对象(如建筑物)。该项目将涉及添加3D可视化后端,以及支持物理模拟可与之交互的后端对象。如果可以加载车辆的不同3D模型将是非常不错的功能。


支持AirSim模拟器


微软最近发布了对基于虚幻3D游戏引擎的AirSim无人机模拟器的支持。 它看起来像一个非常好的仿真框架,我们希望增加对ArduPilot开发的支持。 该项目将涉及在AirSim和ArduPilot之间添加接口代码,如果需要增强其API(如添加锁步调度),则需要与AirSim开发人员合作。 请注意,这个项目将要求你有足够快的PC来运行AirSim(好的显卡和大量的内存)。

 

JavaScript日志查看器


我们希望能够为ArduPilot用户提供基于浏览器的日志分析和绘图工具。这将涉及为ArduPilotDataFlash日志格式编写JavaScript解析器,并根据解析的数据为浏览器添加一个漂亮的图形界面。我们正在寻找的用户交互模型与基于python的MAVExplorer相似(请参阅http://ardupilot.org/dev/docs/using-mavexplorer-for-log-analysis.html),其中可以使用任意图形表达结果,并且可以从通用图表菜单中进行选择。理想情况下,该工具还将支持使用pymaylinkJavaScript代码生成器的MAVLink遥测日志。该工具将与日志上传网站相结合,为所有ArduPilot用户提供良好的日志分析。

 

D-Shot电调协议支持


D-Shot是一种相对较新的与包括BLHeli 电调在内的一些电调进行通信的协议(请参见此处的说明https://oscarliang.com/dshot/)。 除了低延迟之外,D-Shot支持双向通信,意味着ArduPilot可能潜在感应电机故障并采取纠正措施。

 

在ArduPilot中改进固定翼3D特技飞行支持


通过在ArduPilot中增加prop-hang(参见http://discuss.ardupilot.org/t/ardupilot-flying-3d-aircraft-including-overover/14837),我们现在已经开始为固定翼提供一个漂亮的3D特技飞行表演。这个项目需要将固件升级以增加对“特技”模式的支持。 在特技模式下,用户可以使用各种常见的3D操作,包括(特技动作)knife-edge, loops, harrier和rolling loops。 实现这将涉及到四元数控制器的一些仔细的使用,但一个好的UI设计能使控制这些技巧的控制杆输入很容易学习。测试可以在FlightAxis模拟器中完成,实现仿真开发而不会冒外场试飞飞机的风险。


猜你喜欢

转载自blog.csdn.net/msq19895070/article/details/79762153
今日推荐