Ardupilot开源飞控之FollowMe计划
- 1. 源由
- 2. 分析
- 3. 计划
- 4. 话题
- 5. 设备
- 6. 后续
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,通过摄像头视觉进行目标检测,随后进行位置估算,进而跟随。
注:上述讨论的问题没有涉及跟随路径上出现障碍的情况。阳光情况,我们可以假想只有两个AB点,不存在其他障碍物。实际障碍物区分静态和动态,此时,复杂度将呈非线性指数级增加。
3. 计划
从当前技术的角度,站在“巨人的肩膀上”做事,我们离这个目标并非遥不可及,而且从当前的信息来看,已经有人很好的完整了原型验证。
即使是成熟的技术,在从没有接触过的角度来看,那就是什么都不知道,什么都不懂,甚至在脑海中“压根没有这个技术存在过”。
因此,接下来,我们将按照如下要点逐步执行:
- 【无障碍物】主动FollowMe功能(采用GPS)
- 目标飞控发送GPS位置坐标
- 跟随飞控计算轨迹跟踪目标
- 【无障碍物】被动FollowMe(采用视觉)
- 【伴机电脑】通过MAVLink控制飞控运动
- 【伴机电脑】通过视觉跟踪目标
- 【伴机电脑】通过视觉估算位置信息
- 【伴机电脑】通过MAVLink跟随目标
- 【有障碍物】被动FollowMe
- 【伴机电脑】进行障碍物检测
- 【伴机电脑】跟随轨迹与障碍物分析,判断轨迹安全与否
- 【伴机电脑】分析多目标,构建地图
- 【伴机电脑】根据跟随轨迹安全与否,分析更新跟踪安全路线
整体来说,这个计划还是比较大的,不过相信,在开源社区里,这些都不是事情,我们还是有机会的!
4. 话题
整个过程相信会比较漫长,中间也会有不少讨论的话题,我们做一个整理,大家也可以参与进来:
- ArduPilot Visual Follow Me Mode with OAK D
- Monocular obstacle avoidance using companion computer
- VINS-Mono - Can it be deployed on bare linux (not ROS)? #450
- 无人机跟随一维高度避障场景–逻辑分析
5. 设备
主要用到的一些设备和飞控,后续如有补充,再增加:
- 【1】Ardupilot开源代码之Rover上路计划
- 【2】ArduPilot开源代码之CompanionComputer上天计划
- 【3】Linux 36.2@Jetson Orin Nano之基础环境构建
6. 后续
感兴趣的小伙盘,可以留言,也可以看看这个系列要多久能出完,呵呵。
- TBD
- 请持续关注,点赞,评论都是好习惯!!!