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. 话题
整个过程相信会比较漫长,中间也会有不少讨论的话题,我们做一个整理,大家也可以参与进来:
4.1 Topic 1
- ArduCopter Follow Mode
- Hardware and software config for follow me, with GPS and visual follow
- AP_Follow: Calculate acceleration target #20922
4.2 Topic 2
4.3 Topic 3
4.4 Topic 4
4.5 参考视频&代码
视频DEMO:
- How to - Autonomous FOLLOW mode with ArduPilot
- ArduPlane autonomous follow with Lua script
- Autonomous Path Following with ArduPilot
- Segmentation for obstacle avoidance Rover AutonomousVechicle
- Object Tracking Drone Raspberry Pi OpenCV DIYLIFEHACKER
- Autonomous Drone Flight Over 1 Kilometer Forest Trail
- Extreme Mountain Biking FPV Drone Chasing
DEMO Code(Might work):
- dronekit/visual-followme
- Semantic Segmentation based navigation for ArduPilot
- NVIDIA-AI-IOT/redtail
- ArduPilot/redtail
- mtbsteve/redtail
- AnishDey27/Object-Tracking-Drone
5. 设备
主要用到的一些设备、飞控、资料:
注:后续如有补充,再增加相关链接。
- 【1】Ardupilot开源代码之Rover上路计划
- 【2】ArduPilot开源代码之CompanionComputer上天计划
- 【3】Ardupilot开源飞控之VTOL之旅:配件规格
- 【4】Linux 36.2@Jetson Orin Nano之基础环境构建
- 【5】Linux 36.3@Jetson Orin Nano之系统安装
- 【6】Jetson Orin Nano v6.0 + tensorflow2.15.0+nv24.05 GPU版本安装
- 【7】ArduPilot开源代码之ROS2Humble+CartographerSLAM+SITL+Gazebo
6. 后续
感兴趣的小伙盘,可以留言,也可以看看这个系列要多久能出完,呵呵。
请持续关注,点赞,评论都是好习惯!!!
6.1 Topic 1
6.2 Topic 2
TBD … …
6.3 Topic 3
- 【1】Linux 35.5 + JetPack v5.1.3@Fast-Planner编译安装
- 【2】Linux 35.5 + JetPack v5.1.3@FUEL编译安装
- 【3】Linux 35.5 + JetPack v5.1.3@RACER编译安装
- 【4】Linux 35.5 + JetPack v5.1.3@ego-planner编译安装
- 【5】Linux 35.5 + JetPack v5.1.3@ego-planner-swarm编译安装
注:貌似这块要去实际飞,需要不少结构件,需要点投资啊,呵呵!
6.4 Topic 4
6.5 Jetson AI Certification
貌似有机会参与下Jetson AI Certification的认证。
对于Jetson Orin Nano板子用户,貌似还是从github-dusty-nv/jetson-inference直接入手会比较合适。
- Jetson AI Specialist Certification For J. Orin Nano
- Jetson AI Certification README reference question on Jetson Orin Nano #1777