我正在尝试控制无人机自主飞行,但是要在无法访问GPS的区域内飞行。在没有GPS的情况下,我能否使用SDK告诉它向前/向后/向上/向下飞行x米?
答案 0 :(得分:2)
答案是“是”。我很少在导航任务中使用GPS。唯一的区别是硬件/软件需要多么复杂
DJI OSDK
在最近的大部分项目中,我使用DJI OSDK ROS通过纯LDIAR或相机来驾驶无人机。请参阅此处的示例视频。它的内部运行带有立体节点的可视内部导航。我尝试使用DJI A3 / N3 / M100 / M210 / M600。一切正常。机载硬件复杂,但软件简单直接。 https://www.youtube.com/watch?v=1AbfRENy3OQ&t=90s
DJI MSDK或PSDK
对于其他情况,例如DJI MSDK或PSDK(如果有访问权限),您可以使用其他方法,例如向下流视频流并进行地面定位,然后发送控制命令。观看我的视频(这不是使用DJI A3,而是使用类似的概念。我将这个想法放到课后项目中,因为它不适合实际的商业应用)。 IMU融合是带EKF的PTAM https://www.youtube.com/watch?v=6xNINp7nnDge
后面运行的代码是从这里https://github.com/tum-vision/tum_ardrone开始的。
DJI MSDK用于替换tum_arrone https://github.com/AutonomyLab/ardrone_autonomy中提到的此链接。
您要做的就是将源代码输入和输出系统修改为android C ++ lib。这不是一件容易的事,但我已经看到其他人在做。它的硬件简单,但软件工作更多
DJI WSDK
即使对于DJI Windows SDK,您仍然可以在功能丰富的区域使用基于PTAM的纯方法。如下图所示。它正在运行ETH集团的半直接视觉测距法。它在硬件和软件上的工作量最小。唯一的问题是您需要使其成为功能丰富的区域。
我非常不同意@Ken,因为光流仅用于低电平/微控制器位置保持。它并不意味着用于动态里程表/状态估计。对于高级通用本地化和制图,它至少需要一个视觉测距法/ SLAM输出。不仅低海拔,中高海拔也将如下图所示工作
有关获取此图片的代码,请点击此处https://github.com/uzh-rpg/rpg_svo
答案 1 :(得分:-1)
由于定位非常依赖飞机的GPS系统,因此我看不到如何精确控制运动。您还会遇到其他问题,因为大多数自动飞行操作只有在有6颗(或7颗)锁定卫星后才能开始。
您还将发现飞机将缺乏保持姿势的能力(除非它的高度足够低,使视觉系统无法保持位置)。
我的建议是研究SDK的“虚拟操纵杆”部分,但老实说,我认为您会不满意,并且可能无法实现上述要求。