解放双手!使用myCobot280和OAK-D OpenCV DepthAI摄像头制作实时脸部跟踪的手机支架

引言

由于YouTube和Netflix的出现,我们开始躺着看手机。然而,长时间用手拿着手机会让人感到疲劳。这次我们制作了一个可以在你眼前保持适当距离并调整位置的自动移动手机支架,让你无需用手拿着手机。请务必试试!

准备工作

这次我们使用了Elephant Robotics公司的机械臂。与其他产品相比,它价格便宜,作为初学者也相对容易上手。

myCobot 280 Pi- 6 DOF Collaborative Robot (Raspberry Pi version)

为了让摄像头跟踪面部,我们采用了OAK-D OpenCV DepthAI摄像头。它不仅仅是进行视频捕捉,还能辅助进行面部识别所需的神经网络运算,因此即使微控制器没有GPU,也能高速进行面部识别。

这是一个可以始终将显示屏调整到眼前适当距离的手机支架。主要由OAK-D摄像头和机械臂“myCobot”构成。OAK-D摄像头不仅可以获取视频,还可以获取深度信息,从而计算出摄像头到脸部的距离。myCobot是一款具有6个旋转轴的机械臂,能够实现多种动作。通过OAK-D摄像头获取的图像来计算脸部的三维位置,myCobot可以将手机显示屏移动到眼前。这样一来,即使不用手拿着手机也能享受视频。

将OAK-D摄像头和手机安装到myCobot上

myCobot的末端有四个M2.6的螺丝孔。我们3D打印了一个手机壳,并利用这些螺丝孔将壳子固定到myCobot上,从而固定手机。

另一方面,OAK-D摄像头有一个1/4英寸的螺丝孔。我们在3D打印的壳子上也开了一个用于1/4英寸螺丝的孔,以便固定摄像头。

作为参考,这里放置了此次使用的STL数据。

Smartphone holders with a camera for myCobot by techlife_hacking - Thingiverse

机械臂的动作

X方向的移动:J1轴的旋转

Y方向的移动:J4轴的旋转

Z方向的移动:J2和J3轴的旋转(J2和J3反向旋转)

使用J2和J3轴来进行深度方向的移动。仅移动J2会影响Y方向,因此让J3以与J2轴相反的方向旋转相同的量,以减小影响。

3D Face Tracking

在XY平面上跟踪面部

通过对OAK-D摄像头获取的图像进行面部检测,可以获取相机画面中面部的坐标(x, y)。

将OAK-D摄像头画面的中心坐标设为目标值,将面部识别获得的面部坐标(x, y)作为反馈值进行PID控制。

深度方向(Z方向)上的面部跟踪

由于OAK-D摄像头配备了立体摄像头,因此不仅可以获取平面上的面部坐标,还可以获取深度方向的面部坐标z。将面部与显示屏之间既不过近也不过远的距离设为目标值,利用立体摄像头测量的面部坐标(z)作为反馈值进行PID控制。

myCobot和OAK摄像头

将OAK摄像头和myCobot附带的Raspberry Pi通过USB连接。OAK摄像头计算出面部的目标坐标,myCobot附带的Raspberry Pi根据这些坐标进行PID控制,以调整摄像头的方向。

环境

为myCobot附带的Raspberry Pi进行环境构建。

myCobot

在myCobot的Raspberry Pi版本中,只要接通电源,就可以立即使用。机械臂可以通过Python进行操作,并且官方也提供支持。

# test
from pymycobot.mycobot import MyCobot
 
mycobot = MyCobot('/dev/ttyUSB0')
# 使其直立
# go zero
mycobot.send_angles([0,0,0,0,0,0], 80)

OAK-D OpenCV DepthAI摄像头

安装用于操作OAK-D摄像头的depthai库。

# install dependency
sudo curl -fL http://docs.luxonis.com/_static/install_dependencies.sh | bash
 
# get sources
git clone https://github.com/luxonis/depthai.git
 
# install depthai
python3 install_requirements.py

演示

环境搭建完成后,请运行演示程序。若摄像头能够在保持一定距离的同时追踪面部,则说明系统运行正常。

# get demo sources
git clone https://github.com/tech-life-hacking/depthai.git
 
# execute demo
python3 depthai_demo.py

PID的调整

如果myCobot的动作不稳定,请调整PID值。

# settings
PID_control.PID(P值, I值, D值)
pidX.setTargetPosition(帧中的点的位置(X方向): 范围0-1, 0.5是中心)
pidY.setTargetPosition(帧中的点的位置(Y方向): 范围0-1, 0.5是中心)
pidZ.setTargetPosition(摄像头和面部的距离(米), 0.5米 = 50厘米)

#en
 PID_control.PID(P value, I value, D value)
pidX.setTargetPosition(Position of the point in the frame (X direction): Range 0-1, 0.5 is the center)
pidY.setTargetPosition(Position of the point in the frame (Y direction): Range 0-1, 0.5 is the center)
pidZ.setTargetPosition(Distance between the camera and the face (meters), 0.5m = 50cm)

# default
pidX = PID_control.PID(10, 10, 3.75)
pidY = PID_control.PID(6.5, 5, 2.5)
pidZ = PID_control.PID(50, 30, 20)
pidX.setTargetPosition(0.5)
pidY.setTargetPosition(0.5)
pidZ.setTargetPosition(0.5)

确定目标值

确定myCobot摄像头指向目标值的代码如下。nnData[0]表示OAK-D摄像头检测到的面部包围框的四个角的坐标。将这四个角的坐标和除以2,可以得出包围框的中心点。spatialCoordinates.z是一个方法,用于返回摄像头和面部之间的距离测量结果。

x = (self._nnData[0].xmin + self._nnData[0].xmax) / 2
y = (self._nnData[0].ymin + self._nnData[0].ymax) / 2
z = int(self._nnData[0].spatialCoordinates.z) / 1000

结语

这次我们使用OAK-D摄像头进行面部识别,并利用能够做出复杂动作的机械臂进行面部跟踪。通过计算机视觉捕捉人类的动作,并据此操控机械臂,可以发现它能够进行非常多样的动作。希望这能为大家的开发提供参考。

### 回答1: OAK-D-Pro 是一款功能强大的智能深度相机,具有高度的智能化和灵活性。它搭载了 OpenCV、OpenVINO、TensorFlow 等多种先进的 AI 框架和算法,可以用于人脸识别、姿势识别、手势识别、物体检测、场景分析等多种应用场景。 OAK-D-Pro 还支持多种连接方式,包括 USB、HDMI、以太网等,方便与不同的设备进行联接。同时,它也具有较高的处理性能和低功耗,可以在较长时间内进行运算。 总之,OAK-D-Pro 是一款非常优秀的智能深度相机,可以广泛应用于各种 AI 领域,具有很高的性价比。 ### 回答2: 智能深度相机OAK-D Pro是一款功能强大的相机,具有出色的效果和性能。 首先,OAK-D Pro采用了先进的深度感知技术,能够实时获取环境中的深度信息。通过双目立体视觉和深度学习算法的结合,它能够高精度地感知和测量物体的三维空间位置和形状。这使得OAK-D Pro在目标检测、位姿估计、实时地图生成等任务中表现出色。 其次,OAK-D Pro具备较高的图像分辨率和图像质量。它搭载了高清摄像头,能够捕捉到更多细节,并保持图像的清晰度和真实感。这使得其在计算机视觉应用中可以更准确地分析和处理图像。 此外,OAK-D Pro还具备强大的计算能力和算法处理能力。其内置的高性能处理器和深度学习推理芯片可以快速高效地处理和分析图像数据。这使得OAK-D Pro能够在实时应用场景中保持稳定且高效的性能表现。 最后,OAK-D Pro还支持多种接口和数据输出方式,可以与其他设备和平台进行无缝集成。这为用户提供了更大的灵活性,可以在各种应用中充分发挥OAK-D Pro的效能。 综上所述,智能深度相机OAK-D Pro具有优秀的深度感知能力、高清影像质量、强大的计算能力和多样化的数据输出接口。其出色的效果使得它在计算机视觉和人工智能领域有着广泛的应用前景。 ### 回答3: 智能深度相机OAK-D Pro是一款高性能的相机产品,具有出色的效果。它采用了深度学习算法,可以实现更精确的深度感知,并与计算机视觉技术相结合,实现高质量的图像和视频输出。 OAK-D Pro的主要特点之一是其高分辨率和高帧率。它配备了一个强大的传感器,能够捕捉到更多细节,并以每秒30帧的速度进行图像和视频的采集。这意味着用户可以获得更清晰、更流畅的图像和视频体验。 此外,OAK-D Pro还具备智能边缘计算的能力。它内置了强大的处理器和神经网络,能够在设备上进行实时的图像和视频分析,无需依赖云端的计算资源。这种边缘计算的方式大大提高了响应速度,并能够实现更高效的应用,比如目标检测、人脸识别等。 此外,OAK-D Pro还支持深度数据的获取和处理。它能够测量出场景中每个像素的距离,并生成精确的深度图像。这为各种应用提供了更多可能性,比如虚拟现实、增强现实等。 综上所述,智能深度相机OAK-D Pro具有出色的性能和效果。它不仅能够提供高质量的图像和视频输出,还能够进行智能边缘计算和深度数据处理,满足用户在各种应用场景中的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值