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

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

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

開源六軸協(xié)作機器人myCobot 320結(jié)合人臉表情識別情緒!

大象機器人科技 ? 來源:大象機器人科技 ? 作者:大象機器人科技 ? 2024-08-12 15:21 ? 次閱讀

在大家的印象中,機械臂通常被應(yīng)用在工業(yè)領(lǐng)域,執(zhí)行一些重復(fù)性工作,以幫助和替代人類。然而,機械臂不僅限于此,它們也可以成為陪伴型機器人,為我們提供更多樣化的互動體驗。

今天,我想探索機械臂的一些與眾不同的功能。通過結(jié)合人臉表情識別技術(shù),我們可以讓機械臂感知到我們的情緒變化。當(dāng)我們開心時,機械臂可以跟著一起開心地舞動;當(dāng)我們傷心難過時,它可以過來安慰我們,給予溫暖的撫摸。這種基于表情反饋的互動能讓機械臂更好地陪伴我們。

在接下來的部分中,我們將詳細介紹這種系統(tǒng)的工作原理、技術(shù)實現(xiàn)和應(yīng)用場景,展示機械臂。

文章會分為機械臂介紹,技術(shù)點介紹,項目的實現(xiàn)三部分,首先我將介紹我使用到的機械臂。

Robotic Arm
myCobot 320 M5
Mycobot 320,一款具備六自由度的協(xié)作型機械臂,憑借其獨特的設(shè)計和高精度伺服電機成為了領(lǐng)域內(nèi)的亮點。這款機械臂擁有最大350mm的工作半徑和最大1000g的末端負載能力,使其適用于廣泛的應(yīng)用場景。Mycobot 320不僅支持靈活的視覺開發(fā)應(yīng)用,還提供了深入的機械運動原理解析,為用戶帶來了12個標(biāo)準(zhǔn)的24V工業(yè)IO接口,滿足不同的開發(fā)需求。

wKgaoma5sX-AIX5cAADPi6sEhMk998.png

它的開放性極高,兼容大多數(shù)主流操作系統(tǒng)編程語言,包括PythonROS等,為開發(fā)者提供了極大的靈活性和自由度。無論是在教育、研發(fā)還是工業(yè)應(yīng)用中,Mycobot 320都能提供強大支持,使創(chuàng)新和應(yīng)用開發(fā)更加便捷高效。

攝像頭模組
適配于myCobot 320M5的攝像頭模組可以安裝在機械臂末端。通過攝像頭用USB數(shù)據(jù)線進行通信,實時獲取到機械臂末端的一個畫面,就能夠識別人臉的表情處于怎樣的一個狀態(tài)。

wKgaoma5seKALJCPABAV-cgQqkY374.png

技術(shù)概覽
pymycobot
pymycobot 是一個用于與 mycobot 機械臂進行串行通信和控制的 Python API。這個庫是為了方便開發(fā)者使用 Python 語言控制 mycobot 機械臂而設(shè)計的。它提供了一系列的函數(shù)和命令,讓用戶可以通過編程方式控制機械臂的動作和行為。例如,用戶可以使用該庫獲取機械臂的角度、發(fā)送角度指令來控制機械臂的移動,或者獲取和發(fā)送機械臂的坐標(biāo)信息。

使用這個庫唯一的標(biāo)準(zhǔn)是,得使用mycobot 系列的機械臂,這是專門為mycobot進行適配的一款機械臂。

pymycobot · PyPI

wKgZoma5sjKAb0JYAAGdxcFKrD4775.png

deepface
DeepFace 是一個強大的 Python 庫,用于面部識別和面部屬性分析。它基于多種深度學(xué)習(xí)模型,如 VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID 和 Dlib 等,提供了面部驗證、面部檢測、面部屬性分析(如性別、年齡、種族和情緒)等功能。DeepFace 通過簡單的接口使得復(fù)雜的面部識別和分析任務(wù)變得更加容易,廣泛應(yīng)用于安全系統(tǒng)、用戶身份驗證和智能交互等領(lǐng)域。

GitHub - serengil/deepface: A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python

wKgZoma5soOAUP9FAAJUSq1BpIs907.png

開發(fā)過程
項目架構(gòu)
我將該項目主要分為兩個功能:

Emotion detection Recognition: 主要用來處理人臉面部的情緒識別,能夠返回信息當(dāng)前人臉的情緒主要是什么,平常,開心,還是傷心等表情

Robotic Arm Control:主要功能用于設(shè)置機械臂的運動控制,例如坐標(biāo)控制,角度控制等等。

情緒識別功能實現(xiàn)
現(xiàn)在的人臉情緒識別已經(jīng)很多厲害的人提供了各種識別的方法在github上了,但如果想自己做一個識別人臉情緒的功能的話還是分為4 個步驟:

1. 數(shù)據(jù)收集和預(yù)處理

2. 模型選擇和訓(xùn)練

3. 模型優(yōu)化和測試

4. 部署和應(yīng)用

從0開始的話,需要做蠻多步驟的,如果我們只是單純的使用,沒有刻意需要用在某些應(yīng)用場景當(dāng)中,我們可以選擇一款別人已經(jīng)訓(xùn)練好的檢測模型,我們直接使用就好了!現(xiàn)在目前有OpenCV,FER(Facial Expression Recognition),DeepFace,Microsoft Azure Face API等等。

這次我們用deepface進行emotion識別的使用。

環(huán)境搭建

首先當(dāng)然是安裝使用環(huán)境啦,opencv的版本不要使用較低的版本會影響使用。

pip install deepface
pip install opencv-python


它有很多功能有年齡的檢測,性別的檢測,情緒的檢測等等多種模型,本次我們主要是用到的是情緒的檢測,要用到“facial_expression_model_weights.h5”這個模型,再使用的過程會自動幫忙下載這個模型來使用。

簡單介紹一下使用的功能。

import os
import cv2
from deepface import DeepFace
# 讀取圖像
image = cv2.imread(image_path)

# 分析圖像中的面部表情
results = DeepFace.analyze(image, actions=['emotion'], enforce_detection=False)

print(result)
[{'emotion': {'angry': 81.24255537986755, 'disgust': 16.530486941337585, 'fear': 1.6193315386772156, 'happy': 6.932554015293135e-05, 'sad': 0.4116043448448181, 'surprise': 0.1861470052972436, 'neutral': 0.009808379400055856}, 'dominant_emotion': 'angry', 'region': {'x': 136, 'y': 65, 'w': 124, 'h': 124, 'left_eye': None, 'right_eye': None}, 'face_confidence': 0.9}]
wKgaoma5tK-AT5TeAAE5KoNifwM234.png


我們可以看到返回的數(shù)據(jù)angry 占81就說明此時的表情是生氣的。

這只是一張圖片的檢測,我們多看看幾張圖片檢測他的準(zhǔn)確率如何。

這是圖片的檢測,我們需要用到一個持續(xù)的,所以就會要啟動攝像頭一直的對畫面進行分析,所以將一張張照片拼接在一起就是一個視頻了。

以下是對視頻的代碼處理。

import cv2
from deepface import DeepFace

# 打開攝像頭
cap = cv2.VideoCapture(0)

if not cap.isOpened():
   print("Error: Could not open webcam.")
   exit()

while True:
   # 讀取視頻幀
   ret, frame = cap.read()
   if not ret:
       break

   # 分析視頻幀中的面部表情
   try:
       result = DeepFace.analyze(frame, actions=['emotion'], enforce_detection=False)
       emotion_info = result[0]['emotion']  # 獲取情緒信息
       dominant_emotion = result[0]['dominant_emotion']  # 獲取主要表情
       emotion_probability = emotion_info[dominant_emotion]  # 獲取主要表情的概率

       # 在視頻幀上顯示主要表情及其概率
       text = f'{dominant_emotion}: {emotion_probability:.2f}%'
       cv2.putText(frame, text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

       # 顯示視頻幀
       cv2.imshow('Emotion Detection', frame)
   except Exception as e:
       print(f"Error analyzing frame: {e}")

   # 按 'q' 鍵退出
   if cv2.waitKey(1) & 0xFF == ord('q'):
       break

# 釋放攝像頭并關(guān)閉窗口
cap.release()
cv2.destroyAllWindows()

就能夠得到下面的效果了。我們可以根據(jù)主要的表情來返回數(shù)值。

wKgaoma5teSAUVYoABMw7MbVGs4819.png

有時候確實會出現(xiàn)一些不夠準(zhǔn)確的情況,但是我們可以人為的進行判斷,一個表情長時間出現(xiàn)的時候才觸發(fā)機械臂的運動。

機械臂運動控制
在這一部分我來介紹如何對mycobot 320進行機械臂的控制,主要用到的是pymcyobot庫。

首先還是安裝環(huán)境

pip install pymycobot


以下是幾種常用mycobot機械臂的控制方法,

from pymycobot.mycobot import MyCobot

send_angles(degrees, speed)
功能: 發(fā)送所有角度給機械臂所有關(guān)節(jié)
參數(shù):
degrees: (List[float])包含所有關(guān)節(jié)的角度 ,六軸機器人有六個關(guān)節(jié)所以長度為 6,四軸長度為 4,表示方法為:[20,20,20,20,20,20]
speed: 表示機械臂運動的速度,取值范圍是 0-100

ex:
mc = MyCobot("com10",115200)
mc.send_angles([0,0,0,0,0,0],100)


角度控制是對每個關(guān)節(jié)的角度進行調(diào)整,用于一些固定點位的控制比較合適,使用的范圍比較局限,接下來還有另一種控制方法,坐標(biāo)控制。

坐標(biāo)控制指的是精準(zhǔn)控制機械臂末端執(zhí)行器的位置和姿態(tài),使其在特定的坐標(biāo)系中完成各種操作任務(wù),是比較常用的一種控制方式。

from pymycobot.mycobot import MyCobot

send_coords(coords, speed, mode)

功能: 發(fā)送整體坐標(biāo)和姿態(tài),讓機械臂頭部從原來點移動到您指定點
參數(shù):
coords:
六軸:[x,y,z,rx,ry,rz]的坐標(biāo)值,長度為 6
四軸:[x,y,z,rx]的坐標(biāo)值,長度為 4
speed: (int) 表示機械臂運動的速度,范圍是 0-100
mode: (int): 取值限定 0 和 1
0 表示機械臂頭部移動的路徑為非線性,即隨機規(guī)劃路線,只要機械臂頭部以保持規(guī)定的姿態(tài)移動到指定點即可。
1 表示機械臂頭部移動的路徑為線性的,即智能規(guī)劃路線讓機械臂頭部以直線的方式移動到指定點.

ex
mc = MyCobot("com10",115200)
mc.send_coords([100,20,30,-50,60,-100],100,1)

為了讓整體代碼看起來可讀性高,可修改性高,創(chuàng)建機械臂類方便進行調(diào)用和修改,將對應(yīng)的動作給提前寫入進去。

class RobotArmController:

       def __init__(self,port):
       #初始化鏈接
       self.mc = MyCobot(port, 115200)
       self.init_pose = [0.96, 86.22, -98.26, 10.54, 86.92, -2.37]
       self.coords = [-40, -92.5, 392.7, -92.19, -1.91, -94.14]
       self.speed = 60
       self.mode = 0
       
       def SadAction(self):
           ...
           
       def HappyAction(self):
           ...


當(dāng)我生氣的時候在我面前打招呼

當(dāng)我開心的時候它和我一起開心的跳起舞來了

總結(jié)
科技發(fā)展的越來的越快,在未來應(yīng)該也會有智能的人形機器人,搭配ChatGPT等一些人工智能的模型,說不定在某一天能夠幫助人們排憂解難,甚至可以成為心理醫(yī)生來治療一些有心理疾病的人,真期待未來科技的發(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)注

    210

    文章

    28103

    瀏覽量

    205849
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3215

    瀏覽量

    42328
  • 人臉表情識別
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5964
收藏 人收藏

    評論

    相關(guān)推薦

    表情機器人網(wǎng)絡(luò)大賽

    表情機器人網(wǎng)絡(luò)大賽近日,廣東省計算機協(xié)會智能軟件與機器人分會舉辦的表情機器人創(chuàng)意設(shè)計全國大賽于2012年9月1日正式開始,比賽歷時三個月零七
    發(fā)表于 09-11 09:17

    表情機器人網(wǎng)絡(luò)大賽

    廣東省計算機協(xié)會智能軟件與機器人分會舉辦首屆表情機器人大賽,大賽官網(wǎng):http://www.maskrobot.org/表情機器人網(wǎng)絡(luò)大賽近
    發(fā)表于 09-15 09:44

    stm32紅外機器人

    足爬行機器人畢業(yè)時的作品,當(dāng)時還處于入門狀態(tài),c程序?qū)懙谋容^菜(程序?qū)懙谋容^亂,僅作參考),一直想把這個機器人作品優(yōu)化一下,可惜,一直在忙,現(xiàn)借助電路城這個平臺
    發(fā)表于 03-27 18:51

    工業(yè)機器人的主要特點

    ,而且還具有記憶能力、語言理解能力、圖像識別能力、推理判斷能力等人工智能,這些都是微電子技術(shù)的應(yīng)用,特別是計算機技術(shù)的應(yīng)用密切相關(guān)。關(guān)節(jié)工業(yè)機器人的研發(fā)設(shè)計及制造已經(jīng)有好幾十年的歷
    發(fā)表于 08-08 11:30

    協(xié)作機器人伺服和傳感器核心器件揭秘

    機器人設(shè)計的這款7柔性多關(guān)節(jié)機器人,可以說是國內(nèi)首臺7自由度協(xié)作機器人,具備快速配置、牽引示教、視覺引導(dǎo)、碰撞檢測等功能。如果在一個狹小的
    發(fā)表于 10-12 11:02

    機器人、協(xié)作機器人和移動機器人,你分的清楚嗎

    我覺得現(xiàn)在是時候討論一些更有趣的話題,今天的話題是介紹工業(yè)機器人、協(xié)作機器人和移動機器人。我想每個人都知道機器人是什么。
    發(fā)表于 10-30 11:33

    【技術(shù)雜談】用AI讀懂人心?情感科學(xué)專家:靠表情識別情緒不靠譜

    `AI 能否識別人類感情?原則上來說,AI 可以通過語音識別、視覺識別、文字識別表情識別等數(shù)據(jù)
    發(fā)表于 07-30 04:30

    在黑暗里機器人怎么識別人臉?

    在當(dāng)今的機器人領(lǐng)域,基于視覺的人臉面部識別和檢測發(fā)展得非常之快,并且已經(jīng)運用于很多領(lǐng)域。
    發(fā)表于 09-17 09:11

    協(xié)作機器人的應(yīng)用類型

    機交互技術(shù)。機器人CPS可以使用視覺系統(tǒng)來檢測,跟蹤和手勢識別人類,也可以使用來自人類的音頻信號命令機器人。各類傳感器和執(zhí)行器可以使三者之間產(chǎn)生多種不同的交互方式。  在人機協(xié)作中,會
    發(fā)表于 12-01 14:24

    基于Matlab的開源自由度協(xié)作機器人實驗平臺

    一前言針對機器人相關(guān)專業(yè)的教學(xué)需求,商飛信息科技開發(fā)出此開源自由度協(xié)作機器人實驗平臺。該平臺有以下幾大特色
    發(fā)表于 09-07 07:10

    大族機器人-機器人

    大族機器人-機器人
    發(fā)表于 12-25 22:15 ?0次下載

    SEER模擬情緒表達機器人:可同步追蹤人臉表情,甚至眼神接觸

    在溫哥華舉行的 SIGGRAPH 2018 計算機圖形技術(shù)大會上,出現(xiàn)一款名為「SEER」的模擬情緒表達機器人,他可以和人類進行同步的表情,甚至眼神接觸,相當(dāng)栩栩如生。
    發(fā)表于 08-31 11:17 ?2946次閱讀

    機器人如何選購?機器人的選購技巧

    山東康道智能資訊:機器人如何選購?現(xiàn)在機床機器人廠家極多,這就使得我們在選擇
    發(fā)表于 03-21 20:54 ?1016次閱讀

    機器人如何選購?

    山東康道智能資訊:關(guān)節(jié)機器人如何選購?現(xiàn)在關(guān)節(jié)機器人廠家極多,這就使得我們在選擇
    發(fā)表于 03-25 21:45 ?808次閱讀

    大象機器人協(xié)作機械臂myCobot 320 進行手勢識別!

    引言 我是一名專注于機器學(xué)習(xí)和機器人技術(shù)自由者。我的熱情始于大學(xué)期間的人工智能課程,這促使我探索人機交互的新方法。尤其對于機械臂的操作,我一直想要簡化其復(fù)雜性,使之更加直觀和易于使用。 這個項目
    的頭像 發(fā)表于 01-31 16:17 ?681次閱讀
    大象<b class='flag-5'>機器人</b><b class='flag-5'>六</b><b class='flag-5'>軸</b><b class='flag-5'>協(xié)作</b>機械臂<b class='flag-5'>myCobot</b> <b class='flag-5'>320</b> 進行手勢<b class='flag-5'>識別</b>!