Ardupilot开源飞控之FollowMe计划
1. 源由
随着现在的智能设备越来越智能,FollowMe就是一个最基本的特性。(注:远程遥控,传感联动,这些都是最基本的自动化控制技术,个人认为这些都不是我们这里提及的智能。)
问题是如何做到FollowMe特性,技术上有各种方法。从逻辑的角度看待这个问题,一个物要跟随人,那么有如下几个动作:
- 识别物
- 定位物
- 相对位置计算
- 更新跟踪轨迹
- 执行目标跟踪
- 异常情况处理
- 重复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. 分析
从上述信息来看,主要分为两种类型:
- 主动FollowMe:采用位置beacon信息
- 被动FollowMe:采用视觉感知信息
典型的例子:
- Ardupilot飞控实现的FollowMe就是采用将GPS位置信息通过电传报告发送到另一台Ardupilot设备,后者通过计算轨迹进行跟随。
- OAK,通过摄像头视觉进行目标检测,随后进行位置估算,进而跟随,详见:ArduPilot Visual Follow Me Mode with OAK D。
注:上述讨论的问题没有涉及跟随路径上出现障碍的情况。阳光情况,我们可以假想只有两个AB点,不存在其他障碍物。实际障碍物区分静态和动态,此时,复杂度将呈非线性指数级增加。
3. 计划
从当前技术的角度,站在“巨人的肩膀上”做事,我们离这个目标并非遥不可及,而且从当前的信息来看,已经有人很好的完整了原型验证。
即使是成熟的技术,在从没有接触过的角度来看,那就是什么都不知道,什么都不懂,甚至在脑海中“压根没有这个技术存在过”。
因此,接下来,我们将按照如下要点逐步执行:
- 【无障碍物】主动FollowMe功能(采用GPS) – Topic 1
- 目标飞控发送GPS位置坐标
- 跟随飞控计算轨迹跟踪目标
- 【无障碍物】被动FollowMe(采用视觉) – Topic 2
- 【伴机电脑】通过MAVLink控制飞控运动
- 【伴机电脑】通过视觉跟踪目标
- 【伴机电脑】通过视觉估算位置信息
- 【伴机电脑】通过MAVLink跟随目标
- 【有障碍物】自主轨迹导航 – Topic 3
- 【伴机电脑】物体检测
- 【伴机电脑】障碍物检测
- 【伴机电脑】轨迹规划
- 【有障碍物】被动FollowMe(采用视觉) – Topic 4
- 【伴机电脑】进行障碍物检测
- 【伴机电脑】跟随轨迹与障碍物分析,判断轨迹安全与否
- 【伴机电脑】分析多目标,构建地图
- 【伴机电脑】根据跟随轨迹安全与否,分析更新跟踪安全路线
整体来说,这个计划还是比较大的,不过相信,在开源社区里,这些都不是事情,我们还是有机会的!
4. 话题
整个过程相信会比较漫长,中间也会有不少讨论的话题,我们做一个整理,大家也可以参与进来: