2024 年世界科学大会建议项目清单¶
这是 ArduPilot 开发人员为以下项目建议的项目列表 GSoC 2024.这些只是建议,如果您有自己的想法,请在 ArduPilot Discord 聊天室 或在 在此讨论服务器.我们的 ArduPilot 开发团队中有许多才华横溢的开发人员,他们非常愿意为 GSoC 2024 指导优秀学生。
利用人工智能进行视觉跟踪
MAVProxy 人工智能聊天功能增强
WebTools 自动日志分析
改进定制构建服务器
高空非 GPS 定位估算
改进用于文件管理和参数管理的网络服务器
有关上述部分项目的更多详情,请参阅本页下方的内容
时间表¶
时间表 GSoC 2024 来了
如何提高被录取的机会¶
在做出录取学生的艰难决定时,我们关注的是
清晰详细的申请表,说明您认为如何完成该项目
先前的相关经验
具有为 ArduPilot 或其他开源项目做贡献的经验
了解 Git 和/或 GitHub
利用人工智能进行视觉跟踪¶
所需技能Python、Yolo、C++
导师兰迪-麦凯
预计尺寸: 175h 或 350h
难度级别中等
预期成果:旋翼飞行器或漫游车跟随用户,同时保持相机支架对准用户
这个项目有两个步骤
第 1 步是为所有的 ArduPilot 摄像机万向节:
ArduPilot 的 GCS_MAVLink 和 AP_Mount 将对程序库进行改进,以便将该命令转发至配套计算机(如 NVidia Nano、RPI5 等)。
配套计算机将运行一个新的 Python 程序,使用 Yolov8 (或类似设备)来识别物体(如人),然后发送 mavlink 云台指令 使云台对准目标物
Python 程序可首先作为 MAVProxy 模块编写,然后再迁移为独立程序
第 2 步是让载具跟踪物体
扩展 Python 程序,计算物体的位置(如纬度、经度、高度)(见 AP_Mount_Backend::get_poi() 或 AP_Scripting 的 mount-poi.lua 了解如何实现)。应使用 相机跟踪地理状态 信息
增强 旋翼飞行器的跟随模式 (超过罗孚的)来消费和使用 相机跟踪地理状态 信息
该项目的一个重要成果是为未来的开发人员和用户记录设置情况。
部分开发工作可以使用 SITL 模拟器 但如果需要,还将为遥控车框架、(飞行)控制器和配套计算机(如 NVidia Nano、RPI5 等)提供资金。
增强 MAVProxy 人工智能聊天功能¶
所需技能Python、人工智能
导师兰迪-麦凯
预期尺寸: 175h
难度级别中等
预期成果MAVProxy 聊天模块能更好地控制旋翼飞行器、飞机和漫游车,包括创建新任务
该项目涉及许多小的增强功能和错误修复,以 MAVProxy 的人工智能聊天模块 (参见博客包括
上膛和控制飞机
为漫游车和船只上膛并对其进行控制
相机云台控制(指向云台、拍照、录制视频)
创建简单的任务
提高现有功能的可靠性
一个扩展目标是用本地安装的开源 LLM 取代 OpenAI 的使用。
大部分开发工作都可以使用 SITL 模拟器 并承担任何 OpenAI 使用费用。如有需要,还将为(飞行)控制器和框架提供资金。
WebTools 自动日志分析¶
所需技能HTML、JavaScript
导师彼得-霍尔
预计大小:175 至 350h
难度级别中等
预期成果:新的 WebTool 能够自动突出显示和诊断飞行日志中的常见问题。
ArduPilot 有几个 网络工具 这些工具可在任何浏览器中运行,所有计算均在客户端进行。到目前为止,我们已经有了用于设置任务的工具(FilterReivew、PIDReview、MAGFit)和一个专注于硬件问题的工具(HarwareReport)。下一个发展方向是寻找飞行中问题的工具。现有两种自动日志审查工具。 Mission Planner地面站 包括一个基本分析工具。 Dronekit 日志分析仪 检查次数较多(见 分析仪),并将成为该项目的初始基准。一旦该工具的框架建立起来并开始运行,就可以添加尽可能多的问题检查,该工具的重点应该是使检查易于添加和更新,而不是设计一个花哨的界面。
改进定制构建服务器¶
所需技能Python、Flask、Javascript、Docker
导师Shiv Tyagi、Peter Barker
预计大小:175 至 350h
难度级别中等
预期成果:增强定制构建服务器,自动估算构建规模并改进操作/安全性
定制构建服务器是一种宝贵的实用工具,它使用户能够有选择地启用或禁用对其特定要求不太重要的功能,从而定制自己的软件构建,从而节省飞行控制器上的闪存。该应用程序最初是作为 2020 年 "谷歌代码之夏 "计划的一部分而开发的,现已证明其在提高灵活性和资源管理方面的有效性。不过,它仍有改进的余地,以进一步提高其可用性并扩大其吸引力,确保满足不断扩大的用户群的不同需求。
我们在定制构建服务器中观察到的一些问题如下:
出现构建失败的原因是过多地选择了无法与预定电路板内存相匹配的功能。
在构建步骤或流程中的任何其他步骤中,应用程序可能会因意外异常而无法响应。
每次在 github.com/ardupilot/ardupilot 发布版本时,都需要手动添加分支。
测试环境不完善。开发人员没有简单的方法来测试功能的添加和删除。
为解决这些问题,可以采取以下改进措施
提出一种数学算法来估算分支上每个特征的大致大小。这可以通过利用 test_build_options.py 脚本来测量每个特征依次启用和禁用时二进制的大小。应开发一种算法来估算单个特征的大小,同时考虑它们之间的依赖关系。请记住,当一个特征被启用时,它也会激活任何从属特征。
为运行应用程序实施容器化。通过将应用程序容器化,还可将其划分为多个服务,如主应用程序和负责报告服务器构建状态等任务的微服务。容器化不仅能增强应用程序的安全性,还能提高可扩展性和部署的便捷性。
开发一项服务,负责监控 GitHub 代码库(github.com/ardupilot/ardupilot)或 firmware.ardupilot.org 的新版本。这项服务可自动向主应用程序添加相关条目,使其能够为新发布的分支提供定制的构建服务。这种自动化简化了将新版本集成到构建服务器的过程。
增强构建服务器,以支持来自任何版本库的构建,而不仅仅是上游版本库。在实施这一功能时,必须认真考虑与支持来自多个版本库的构建相关的潜在复杂性和挑战。
一些 github 问题对自定义构建服务器提出了功能请求:
请记住,这些只是建议。投稿者可在以下网址使用申请表 custom.ardupilot.org,阅读源代码 这里 并提出他们希望在应用程序中看到的其他改进建议。
高空非 GPS 定位估算¶
所需技能Python、C++
导师兰迪-麦凯
预计尺寸: 175h 或 350h
难度等级:难
预期成果:在没有 GPS 的情况下,旋翼飞行器能在高空保持位置
ArduPilot 副驾驶飞行器支持多种方法,包括 非 GPS 导航 但大多数 GPS 都是为室内使用而设计的,在海拔超过 40 米时就无法工作,这意味着它们实际上并不能用于防止 GPS 丢失。
该项目的目标是让 Copters 在至少 100 米的高度使用向下摄像头(安装在万向节上)保持适当的位置估计。
将采集一组已知位置(纬度、经度、海拔高度、地形高度)的基础图像。这些图像可能是载具在 GPS 正常运行时拍摄的,也可能是该地区的卫星图像
配套计算机(如 RPI 或 NVidia Nano)将从朝下的摄像头捕捉图像,并将其与基础图像进行比较,从而计算出新的经纬度和高度。滞后是很重要的,因为如果估算时间超过 0.25 秒,EKF 可能会很吃力。
然后,应使用这些受支持的 mavlink 信息之一将估计位置发送给(飞行)控制器
视觉位置估计 推荐
mav_cmd_external_position_estimate (要求载具使用死锁功能 风速估计 但对滞后的敏感度也较低)
可能需要对 EKF 进行一些调整,以使 EKF 能够预计到噪声非常大的位置估计值
如果时间允许 GPS/Non-GPS 过渡 Lua 脚本 (就像这个可开发
该项目的一个重要成果是为未来的开发人员和用户记录设置情况。
大部分开发工作可能可以使用 SITL, gazebo 和/或 实时飞行 但如果需要,还将为多旋翼飞行器框架和摄影云台提供资金。
改进用于文件和参数管理的网络服务器¶
在 ArduPilot 4.5.x 中,我们内置了网络支持和网络服务器,预计将来会有很多 aicraft 使用它。
我们希望扩展网络服务器,以便:
文件管理,可上传和下载文件
参数管理,具有良好的用户界面来显示和编辑参数
负责该项目的 GSoC 学生需要具备良好的 JavaScript 和 HTML 技能,以创建漂亮的用户界面。他们还需要了解一些 lua,不过大部分代码将使用 JavaScript。
往年完成的项目¶
2023 年,学生们完成了以下项目:
2022 年,学生们开展了这些项目:
2019 年,学生们成功完成了这些项目:
AirSim 模拟器支持 ArduPilot SITL
为传统旋翼飞行器开发自主自动导航系统
进一步开发UGV无人车帆船支持系统
集成 ArduPilot 和 VIO 跟踪摄像头,实现无 GPS 定位和导航
MAVProxy 图形用户界面和模块开发
2018 年,学生们顺利完成了这些项目:
RedTail 与 ArduPilot 的集成
改进 APSync 实时视频
2017 年,3 名学生成功完成了这些项目:
智能返航,包括存储载具当前位置并保持尽可能短的安全返航路径
重构 ArduRover 架构,以允许更多配置和漫游器类型 (详见此处)
增加 ArduPilot 的 "传感器头 "操作,由两个 CPU 分担
您可以在 谷歌 GSoC 2017 档案页面