0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用myCobot和OAK-D OpenCV DepthAI攝像頭制作一個可以在眼前始終享受視頻的手機(jī)支架!

大象機(jī)器人科技 ? 來源:大象機(jī)器人科技 ? 作者:大象機(jī)器人科技 ? 2024-07-02 18:23 ? 次閱讀

引言
由于YouTube和Netflix的出現(xiàn),我們開始躺著看手機(jī)。然而,長時間用手拿著手機(jī)會讓人感到疲勞。這次我們制作了一個可以在你眼前保持適當(dāng)距離并調(diào)整位置的自動移動手機(jī)支架,讓你無需用手拿著手機(jī)。請務(wù)必試試!

準(zhǔn)備工作
這次我們使用了Elephant Robotics公司機(jī)械臂。與其他產(chǎn)品相比,它價格便宜,作為初學(xué)者也相對容易上手。

wKgZomaD1AuAVppxAAEi2xuBV2A460.png

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

為了讓攝像頭跟蹤面部,我們采用了OAK-D OpenCV DepthAI攝像頭。它不僅僅是進(jìn)行視頻捕捉,還能輔助進(jìn)行面部識別所需的神經(jīng)網(wǎng)絡(luò)運算,因此即使微控制器沒有GPU,也能高速進(jìn)行面部識別。

wKgZomaD1AaAbJWBAAgqpK_SvU4151.pngwKgaomaD1BKAeLKYAClo97uDIxY406.png

這是一個可以始終將顯示屏調(diào)整到眼前適當(dāng)距離的手機(jī)支架。主要由OAK-D攝像頭和機(jī)械臂“myCobot”構(gòu)成。OAK-D攝像頭不僅可以獲取視頻,還可以獲取深度信息,從而計算出攝像頭到臉部的距離。myCobot是一款具有6個旋轉(zhuǎn)軸的機(jī)械臂,能夠?qū)崿F(xiàn)多種動作。通過OAK-D攝像頭獲取的圖像來計算臉部的三維位置,myCobot可以將手機(jī)顯示屏移動到眼前。這樣一來,即使不用手拿著手機(jī)也能享受視頻。

將OAK-D攝像頭和手機(jī)安裝到myCobot上
myCobot的末端有四個M2.6的螺絲孔。我們3D打印了一個手機(jī)殼,并利用這些螺絲孔將殼子固定到myCobot上,從而固定手機(jī)。

另一方面,OAK-D攝像頭有一個1/4英寸的螺絲孔。我們在3D打印的殼子上也開了一個用于1/4英寸螺絲的孔,以便固定攝像頭。

wKgaomaD1CWAA0ogAAEpz7mhYDE171.png

作為參考,這里放置了此次使用的STL數(shù)據(jù)。

As a reference, here are the STL files used for this project.

Smartphone holders with a camera for myCobot by techlife_hacking - Thingiverse

機(jī)械臂的動作

wKgZomaD1DWAGxn3AAJYH20IQ6M510.png


X方向的移動:J1軸的旋轉(zhuǎn)

Y方向的移動:J4軸的旋轉(zhuǎn)

Z方向的移動:J2和J3軸的旋轉(zhuǎn)(J2和J3反向旋轉(zhuǎn))

wKgZomaD1EGAD_oHACtzVHDgZ4U771.png

使用J2和J3軸來進(jìn)行深度方向的移動。僅移動J2會影響Y方向,因此讓J3以與J2軸相反的方向旋轉(zhuǎn)相同的量,以減小影響。

3D Face Tracking
在XY平面上跟蹤面部
通過對OAK-D攝像頭獲取的圖像進(jìn)行面部檢測,可以獲取相機(jī)畫面中面部的坐標(biāo)(x, y)。

wKgaomaD1FCAXFjyAAGlx4IBHl0274.png

將OAK-D攝像頭畫面的中心坐標(biāo)設(shè)為目標(biāo)值,將面部識別獲得的面部坐標(biāo)(x, y)作為反饋值進(jìn)行PID控制。

wKgZomaD1F-AcA-HAABChU3BIKM457.png

深度方向(Z方向)上的面部跟蹤
由于OAK-D攝像頭配備了立體攝像頭,因此不僅可以獲取平面上的面部坐標(biāo),還可以獲取深度方向的面部坐標(biāo)z。將面部與顯示屏之間既不過近也不過遠(yuǎn)的距離設(shè)為目標(biāo)值,利用立體攝像頭測量的面部坐標(biāo)(z)作為反饋值進(jìn)行PID控制。

wKgZomaD1HWAVb17AABC9LbXHrg320.png

myCobot和OAK攝像頭
將OAK攝像頭和myCobot附帶的Raspberry Pi通過USB連接。OAK攝像頭計算出面部的目標(biāo)坐標(biāo),myCobot附帶的Raspberry Pi根據(jù)這些坐標(biāo)進(jìn)行PID控制,以調(diào)整攝像頭的方向。

wKgZomaD1IOAdsgIAAEDOwbJqvg362.png

環(huán)境
為myCobot附帶的Raspberry Pi進(jìn)行環(huán)境構(gòu)建。

myCobot

在myCobot的Raspberry Pi版本中,只要接通電源,就可以立即使用。機(jī)械臂可以通過Python進(jìn)行操作,并且官方也提供支持。

# 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庫。

OAK-D OpenCV DepthAI Camera

Install the depthai library to operate the OAK-D camera.

# 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


演示

環(huán)境搭建完成后,請運行演示程序。若攝像頭能夠在保持一定距離的同時追蹤面部,則說明系統(tǒng)運行正常。

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

# execute demo
python3 depthai_demo.py


PID的調(diào)整

如果myCobot的動作不穩(wěn)定,請調(diào)整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)

確定目標(biāo)值
Setting Target Values

確定myCobot攝像頭指向目標(biāo)值的代碼如下。nnData[0]表示OAK-D攝像頭檢測到的面部包圍框的四個角的坐標(biāo)。將這四個角的坐標(biāo)和除以2,可以得出包圍框的中心點。spatialCoordinates.z是一個方法,用于返回攝像頭和面部之間的距離測量結(jié)果。

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


結(jié)語
這次我們使用OAK-D攝像頭進(jìn)行面部識別,并利用能夠做出復(fù)雜動作的機(jī)械臂進(jìn)行面部跟蹤。通過計算機(jī)視覺捕捉人類的動作,并據(jù)此操控機(jī)械臂,可以發(fā)現(xiàn)它能夠進(jìn)行非常多樣的動作。希望這能為大家的開發(fā)提供參考。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 攝像頭
    +關(guān)注

    關(guān)注

    59

    文章

    4793

    瀏覽量

    95275
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • 面部識別
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

    26609
  • 機(jī)械臂
    +關(guān)注

    關(guān)注

    12

    文章

    506

    瀏覽量

    24458
  • 具身智能
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    28
收藏 人收藏

    評論

    相關(guān)推薦

    OpenWRT + OpenCV 無線攝像頭監(jiān)控和圖像處理

    知道視頻流是jpeg類型,因此“偽造”了jpeg文件名下圖是修改OpenCV官網(wǎng)的dem
    發(fā)表于 02-09 22:15

    如何將攝像頭視頻通過藍(lán)牙傳送給手機(jī)?

    如何將攝像頭視頻通過藍(lán)牙傳送給手機(jī)?求各位大神幫忙啊 。,,謝謝了、
    發(fā)表于 09-20 09:49

    NanoPi 2接USB攝像頭使用OpenCV

    `NanoPi 2接USB攝像頭使用OpenCVOpenCV的全稱是Open Source Computer Vision Library,是跨平臺的計算機(jī)視覺庫。NanoPi 2跑Debian
    發(fā)表于 12-24 18:34

    Nanopi M3 u***攝像頭使用opencv

    首先先準(zhǔn)備好器材1.M3板子2.燒寫好debian系統(tǒng)的sd卡3.lcd屏 (我用的是x710的電容屏,7寸的)4.USB(FA-CAM202)200萬攝像頭模塊啟動系統(tǒng)后:OpenCV的全稱
    發(fā)表于 10-11 15:42

    u***攝像頭如何改成水下無線攝像頭

    請教大神,我有u***攝像頭(也可買直接視頻輸出的那種攝像頭),有線連接也想過,想把它改成可以
    發(fā)表于 01-31 23:26

    【大聯(lián)大友尚安森美半導(dǎo)體感光芯片USB雙目攝像頭模組試用體驗】使用opencv打開攝像頭

    攝像頭,一個是只有灰度值的紅外攝像頭。我們把燈關(guān)上看下效果:可以看到rgb攝像頭
    發(fā)表于 09-26 21:54

    回收手機(jī)攝像頭 收購oppo手機(jī)攝像頭

    回收手機(jī)攝像頭 收購oppo手機(jī)攝像頭◆◆回收oppo手機(jī)攝像頭,收購oppo
    發(fā)表于 01-07 17:44

    回收手機(jī)攝像頭 收購手機(jī)攝像頭

    !高價回收! 優(yōu)勢回收索尼Xperia Z1攝像頭,回收索尼Z2攝像頭,回收索尼Z3攝像頭,回收索尼 Z3mini攝像頭,高價回收!高價回收!手機(jī)
    發(fā)表于 07-05 11:01

    回收手機(jī)攝像頭,收購攝像頭芯片

    的倒車后視,都有用到攝像頭。 特別是手機(jī),手機(jī)至少2攝像頭,有的還有三四
    發(fā)表于 07-14 17:53

    專業(yè)回收手機(jī)攝像頭 收購手機(jī)攝像頭價格高

    系列手機(jī)攝像頭......回收小米手機(jī)紅米系列指紋排線,小米max系列手機(jī)攝像頭,小米系列手機(jī)
    發(fā)表于 10-16 17:13

    深圳回收華為手機(jī)攝像頭 專業(yè)收購華為手機(jī)攝像頭

    回收手機(jī)攝像頭,上門回收手機(jī)攝像頭,高價回收手機(jī)攝像頭,個人
    發(fā)表于 12-13 14:13

    有什么方法可以將雙目攝像頭結(jié)合OpenCV起使用嗎

    有什么方法可以將雙目攝像頭結(jié)合OpenCV起使用嗎?
    發(fā)表于 03-02 09:52

    RK3399實現(xiàn)視頻攝像頭獲取轉(zhuǎn)至OPENCV的方法是什么?

    RK3399實現(xiàn)視頻攝像頭獲取轉(zhuǎn)至OPENCV的方法是什么?
    發(fā)表于 03-07 08:00

    基于DirectShow的多攝像頭視頻采集

    1.為什么使用DirectShow 筆者使用的是兩USB攝像頭,單攝像頭視頻采集使用OpenCV的VideoCapture類沒有問題,但是
    發(fā)表于 02-08 03:24 ?3244次閱讀

    使用Python OpenCV讀取攝像頭視頻文件并播放顯示的詳細(xì)說明

    要從攝像頭視頻文件讀取視頻,首先導(dǎo)入opencv 庫cv2. 使用cv2.VideoCapture() 方法創(chuàng)建
    發(fā)表于 01-19 16:57 ?5次下載