人脸跟踪和运动跟踪无人机

Ashwini Kumar Sinha

540

我们一定都看到过无人机,有些人甚至可能操作过。市面上大多数无人机都是手动操作的,要么是遥控遥控的帮助,要么是通过无线网络连接的手机。以这种方式操作无人机可能有点棘手,特别是当有许多控制和按钮时。

为了让驾驶无人机的体验更加有趣,我决定做一些不同的事情,建立一个智能无人机控制系统,可以借助我们的面部手势来操作。如果我们想让无人机拍摄一张特定的脸并跟踪它,我们可以使用这个系统。

在这里,我使用了一个DJI Tello无人机,它是使用Python及其SDK编程和控制的。所以你在这里需要的部件只是一台Tello无人机和一台PC或笔记本电脑。就是这样。

先决条件

由于我使用的是Linux操作系统,命令和设置指令都是基于Linux的。您可以使用VirtualBox在Windows上运行Linux, VirtualBox是一个开源的管理程序,它支持大量来宾操作系统。

首先,在操作系统中设置Python环境。然后使用以下命令安装OpenCV、dlib、NumPy和面部识别Python模块:

安装python-opencv

sudo pip3安装face_recognition

Sudo pip3安装numpy

安装以上模块后,安装能够与Tello无人机连接的Python模块来控制它。为此,有各种各样的Python模块可用,但在这里我们将使用Tello Python来控制Tello无人机。

注意:-在制作无人机控制系统之前,检查一些功能和命令,我们将使用它们来控制无人机。

Tello Python可以与Tello无人机连接,允许执行不同的功能,如:

  • 发射无人机使用drone.takeoff ()
  • 将无人机向前移动到一定距离内(厘米)使用drone.forward (cm)
  • 按顺时针方向旋转无人机90度drone.cw (90)
  • 将无人机向上、向后、向左或向右翻转drone.flip(“l”)
  • 使用无人机摄像机创建一个直播流drone.streamon ()
  • 使用无人机降落无人机。land()

要控制无人机的高度和左右移动,请使用您的面部手势,但起飞时,请使用启动时的自动起飞功能。要降落无人机并停止代码运行,使用键盘键“Q”。

参考我在其他几个项目中给出的相同的人脸识别代码,包括基于人脸识别的汽车锁,人工智能机器人,智能门和更多。通过实现这段代码,您可以使用您的面部动作来控制无人机。

编码

除了包含人脸识别的相同代码外,还需要导入Tello无人机库和模块(在先决条件部分中提到)。之后,创建两个变量,将存储人脸位置坐标,这将有助于计算人脸移动和导航的无人机。初始化drone.streamon ()在代码中随drone.takeoff ()

图2所示。

循环的人脸识别代码,添加另一个代码分析的方向的面部运动。检查面部的当前位置并使用如果条件将当前的人脸位置与之前的人脸位置进行比较。如果它们不匹配,那就意味着这张脸移到了一个新的位置。如果新位置的值大于或小于之前的位置,则使用它来确定脸部移动的方向。

用你脸部的向上、向下、向左或向右的方向移动无人机。通过使用左点和顶点位置值,可以确定和比较人脸的位置和移动方向,以便在相同的方向上控制无人机。

假设之前的左坐标在x坐标中为30,新的左坐标在x坐标中为40。由于新的左边位置比之前的左边位置大,你必须将你的脸移动到新的方向,即右。这将反过来将无人机移动到相同的方向。类似地,无人机将根据坐标的变化向其他方向移动。

图4所示。

测试

打开Tello无人机,然后连接你将运行上面给定代码的设备。我用的是树莓派(Raspberry Pi),它与Tello WiFi相连,可以运行代码。几秒钟后,连接就建立了。在运行代码时,人脸的视频出现了。通过在相机框架内向上、向下、向左或向右移动你的脸,你可以控制无人机。

恭喜你! !你已经成功制造了一个面部手势操控的无人机。

代码

2的评论

分享你的想法和评论

请输入您的评论!
请在这里输入你的名字