我正在一个项目中,我应该使用Parrot AR Drone 2.0的摄像机执行对象跟踪。因此,主要思想是,无人机应该能够识别指定的颜色,然后通过保持一定距离来跟随它。

我正在使用cvdrone API与无人机建立通信。该API提供以下功能:

ARDrone::move3D(double vx, double vy, double vz, double vr)


,它将AR.Drone在3D空间中移动,其中


vx:X速度[ m / s]
vy:Y速度[m / s]
vz:Z速度[m / s]
vr:旋转速度[rad / s]

我编写了一个应用程序,该应用程序使用OpenCV对从无人机的摄像头获得的图像进行简单的图像处理,并找到需要跟踪的对象的轮廓。请参见以下示例:


现在,我苦苦挣扎的部分正在寻找一种技术,通过该技术,我应该找到要发送给move3D函数的速度。我已经读到,进行控制的常用方法是使用PID控制。但是,我已经读过有关该书的内容,无法了解它与该问题的关系。

总而言之,我的问题是如何将机器人移向摄像机中检测到的物体?如何从相机找到某些物体的坐标?

评论

我想说,您现在更大的问题是您的最后一个问题。您将如何使用单眼相机提取对象位置信息?您至少需要知道要跟踪的对象有多大,以便可以将其与相机框架中的对象大小相关联并估算出对象距离。您可以做这个假设吗?

我完全同意@GeorgeZP。最重要的部分是图像处理。单个摄像头无法提供深度线索。

@GeorgeZP然后让我们提前知道对象的大小。那我该怎么办?

#1 楼

如果您不在乎四旋翼相对于目标的位置,而只在乎绝对距离,我想说的是,对于初学者,您可以从OpenCV算法中提取距离信息。 br拥有一个轮廓清晰的目标(例如,彩色球),并从相机框架的中心及其轮廓的大小中找到其相对位置。您不需要特征来提取相对于对象的相对方向,只需知道您应该转向何处以及它要走多远即可。
轮廓线的大小需要进行校准,以便从中提取距离信息它(距离您越远,物体越小)。
目标从相机框架中心的位置将告诉您需要将四旋翼指向的位置。

之后,这是为四旋翼飞机找到控制律的问题,它将使目标与摄像机中心的偏移最小化,并将其保持在摄像机框架所需的尺寸内。这不一定很容易,因为会有相互矛盾的要求。例如,您可能希望通过将其降低俯仰角来使其接近目标,但同时这也会增加瞄准误差。
总而言之,我要说的是,这是一个成熟的论文项目。

评论


$ \ begingroup $
感谢您的回答。对不起,迟到了。只是我在努力理解它。我也对通用Stackoverflow提出了同样的问题,[this](stackoverflow.com/questions/34713594/…)答案给出了非常深入的解释。
$ \ endgroup $
– fiz
16年1月23日在2:14



#2 楼

一种标准方法(使用opencv resolvePnP)是在图像中至少使用4个点来定义已知几何的界标。
然后您可以获取摄影机相对于对象的姿势。 >例如,如果您有一个蓝色矩形可以检测图像中的角,并且知道该矩形的尺寸,则可以算出相对姿势。

机器人之间的相对位置将是一个(旋转的)错误,您可以将其输入给PID。

另请参见:https://stackoverflow.com/questions/16265714/camera-pose-estimation-opencv-pnp