看過鋼鐵俠的人都知道里面的賈維斯在幫助托尼斯塔克制作裝備的時候,有許多械臂提供幫助制作裝備,讓裝備的制作提高了效率。賈維斯是一個超級強大的人工智能系統(tǒng),有了它的幫助如魚的水。我腦海中浮現(xiàn)出來一個想法,讓機(jī)械臂末端實現(xiàn)人臉識別和跟蹤的功能,也有看到有人實現(xiàn)了機(jī)械臂末端物體的動態(tài)跟蹤,看著這個項目好像很容易實現(xiàn),讓我來試一試吧!
項目設(shè)備
本次項目需要的設(shè)備在下表格里。
mechArm 270-Pi
這是一款大象機(jī)器人生產(chǎn)的小六軸機(jī)械臂,以樹莓派4B為微處理器,ESP32為輔助控制,結(jié)構(gòu)是中心對稱結(jié)構(gòu)(仿工業(yè)結(jié)構(gòu))。mechArm 270-Pi本體重量1kg, 負(fù)載250g,工作半徑270mm,設(shè)計緊湊便攜,小巧但功能強大,操作簡單,能與人協(xié)同、安全工作。
mechArm 的資料豐富,提供了許多python的api接口可以方便提供給我來進(jìn)行使用。它的末端的接口規(guī)格都可以從官網(wǎng)獲取到資料,可以使用3d打印技術(shù)設(shè)計一款合適的設(shè)備。
USB無畸變鏡頭
這里是攝像頭的參數(shù),主要是用于人臉識別。
項目流程介紹
整體項目的流程圖
這個項目的流程如下圖所示,最主要的是解決OpenCV的人臉識別功能和機(jī)械臂手眼標(biāo)定是選擇eye in hand 還是eye to hand。
接下來我將簡單介紹一下這兩個功能有什么作用在項目當(dāng)中。
OpenCV-人臉識別
OpenCV的全名是Open Source Computer Vision Library,是一個跨平臺的電腦視覺庫。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。
人臉識別即程序?qū)斎氲膱D像進(jìn)行判別是否有人臉,并識別出有人臉的圖像所對應(yīng)的人。我們常說的人臉識別一般包含了人臉檢測和人臉識別兩部分。
在人臉檢測中,其主要任務(wù)是構(gòu)造能夠區(qū)分包含人臉實例和不包含人臉實例的分類器。
opencv中提供了三種訓(xùn)練好的級聯(lián)分類器。級聯(lián)分類器顧名思義即通過不同的特征進(jìn)行一步步篩選,最終得出所屬的分類,它將一個復(fù)雜的分類問題拆解為一個個簡單的分類問題,隨著級聯(lián)條件的判斷,能夠一步步篩出大量的負(fù)樣本,極大的提升了后面分類的速度。
opencv人臉識別庫是開源的,還能夠支持python的接口,可以直接進(jìn)行調(diào)用。
這里是分類器的下載地址:http://face-rec.org/databases/
手眼標(biāo)定
手眼標(biāo)定實際上就是為了讓機(jī)械臂知道相機(jī)拍出來的物體相對于機(jī)械臂在什么位置,換一種說法就是建立相機(jī)坐標(biāo)系與機(jī)械臂坐標(biāo)系的映射關(guān)系。
有兩種方式
一種是eye to hand,眼在手外面,就是將相機(jī)固定在機(jī)械臂外面。
由于眼在手外標(biāo)定時,Base坐標(biāo)系和Cam坐標(biāo)系的位置是固定的,因此眼在手外主要是求這兩個坐標(biāo)系的關(guān)系。
另一種是eye in hand,眼在手上,就是將相機(jī)固定在機(jī)械臂末端。
相機(jī)坐標(biāo)系和工具坐標(biāo)系的位置是相對不變的。因此,標(biāo)定的就是cam坐標(biāo)系和tool坐標(biāo)系的關(guān)系。
項目開始
python對mechArm的控制
pymycobot 是用python控制mechArm的庫,可以直接調(diào)用里面的方法。
介紹幾個主要的方法:
release_all_servos()
release all robot arms
get_angles()
get the degree of all joints.
send_angle(id, degree, speed)
Send one degree of joint to robot arm.
send_angles(degrees, speed)
Send the degrees of all joints to robot arm.
degrees: a list of degree value(List[float]), length 6 or 4.
speed: (int) 0 ~ 100
from pymycobot.mycobot import MyCobot
import time
mc = MyCobot('/dev/ttyAMA0',1000000)
time.sleep(4)
for count in range(2):
mc.send_angles([0,0,0,0,0,0],70)
time.sleep(2)
mc.send_angles([0,38.32,(-6.76),10.01,99.22,(-19.77)],70)
time.sleep(2)
mc.send_angles([(-13.18),(-22.14),17.66,147.12,99.22,(-19.77)],70)
time.sleep(2)
mc.send_angles([98.43,(-2.98),(-95.88),161.01,(-1.23),(-19.77)],70)
time.sleep(2)
print(mc.get_angles())
print(mc.get_coords())
mc.send_angles([0,0,0,0,0,0],70)
mechArm Pi還是可以很輕易上手的一款機(jī)械臂操控性很強。
接下來我們來研究一下如何實現(xiàn)人臉識別功能。
openCV 人臉識別的代碼
在前面我介紹到了分類器,讓我來演示一下大概的流程是怎么樣的。
執(zhí)行一下代碼來看一下效果
import cv2
import matplotlib.pyplot as plt
import time
def video_info():
# Loading classifiers
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# Input video stream
cap = cv2.VideoCapture(0)
# To use a video file as input
#cap = cv2.VideoCapture('demo.mp4')
while True:
_, img = cap.read()
# Conversion to greyscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecting faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Drawing the outline
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
center_x = (x+w-x)//2+x
center_y = (y+h-y)//2+y
cv2.circle(img,(center_x,center_y),10,(0,255,255),2)
# Display effects
cv2.imshow('img', img)
k = cv2.waitKey(30) & 0xff
if k==27:
break
cap.release()
不得不說,opencv鍛煉的分類器是十分強大的!很快速的就識別出來了人臉。
就這樣我完成了前兩項技術(shù)的問題:機(jī)械臂的基礎(chǔ)操作和人臉識別功能的復(fù)現(xiàn)。手眼標(biāo)定在查詢資料的時候遇到了困難,在eye in hand 當(dāng)中換算坐標(biāo)的時候出現(xiàn)了一些問題,短時間沒有辦法能夠解決,決定去查詢更多的資料再來跟大家分享。
總結(jié)
這次記錄的項目到這里就結(jié)束了,因為一些技術(shù)上的原因,手眼標(biāo)定涉及的知識面比較廣,需要查詢許多資料和尋求多方面的幫助。待我歸來之時,我的項目必將成功!如果你喜歡這篇文章的話,點贊留言支持我!
我們下次再見,很快就會回來的。
審核編輯黃昊宇
-
人臉識別
+關(guān)注
關(guān)注
76文章
4027瀏覽量
82689 -
機(jī)械臂
+關(guān)注
關(guān)注
12文章
529瀏覽量
24884
發(fā)布評論請先 登錄
相關(guān)推薦

【MYD-Y6ULX申請】基于攝像頭的人臉識別項目
【FPGA開發(fā)者項目連載】Gowin Minstar做機(jī)械視覺處理的機(jī)械臂
myAGV移動機(jī)器人+mechArm六軸機(jī)械臂,開源復(fù)合機(jī)器人開發(fā)與實踐

Arduino Nano 33 BLE Sense的語音識別項目

大象機(jī)器人推出桌面高精度機(jī)械臂ultraArm,配五大套裝,助力最燃AI視覺玩法
如何完成機(jī)械臂的運動控制模塊

眼神科技獨家中標(biāo)渤海銀行人臉識別項目!
自動化革命:大象機(jī)器人的Mercury A1機(jī)械臂

使用ChatGPT學(xué)習(xí)大象機(jī)器人六軸協(xié)作機(jī)械臂mechArm!

項目分享|基于ELF 1開發(fā)板的遠(yuǎn)程監(jiān)測及人臉識別項目

ElfBoard開源項目|車牌識別項目技術(shù)文檔

評論