一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

大象機(jī)器人六軸協(xié)作機(jī)械臂myCobot 320 進(jìn)行手勢識別!

大象機(jī)器人科技 ? 來源:大象機(jī)器人科技 ? 作者:大象機(jī)器人科技 ? 2024-01-31 16:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言
我是一名專注于機(jī)器學(xué)習(xí)機(jī)器人技術(shù)自由者。我的熱情始于大學(xué)期間的人工智能課程,這促使我探索人機(jī)交互的新方法。尤其對于機(jī)械臂的操作,我一直想要簡化其復(fù)雜性,使之更加直觀和易于使用。

這個項目的靈感源自于我對創(chuàng)新技術(shù)的熱愛以及對改善人機(jī)互動方式的追求。我的目標(biāo)是開發(fā)一個基于手勢的機(jī)械臂控制系統(tǒng),使非專業(yè)人士也能輕松操作。為此,我選擇了Google的MediaPipe庫進(jìn)行手勢識別,并以myCobot 320 m5作為實驗平臺。

技術(shù)概述
Google MediaPipe
MediaPipe是由Google開發(fā)的一個開源跨平臺框架,專門用于構(gòu)建各種感知管道。這個框架提供了豐富的工具和預(yù)先構(gòu)建的模塊,使得開發(fā)者能夠輕松地構(gòu)建和部署復(fù)雜的機(jī)器學(xué)習(xí)模型和算法,尤其在圖像和視頻分析方面。

wKgaomW57DCAXSqEAAaq4Rw2I2Y692.png

MediaPipe的一個顯著特點是它對實時手勢和面部識別的支持。它能夠高效地處理視頻流,并實時識別和追蹤人的手勢、面部特征等。這種能力使其在交互式應(yīng)用程序、增強(qiáng)現(xiàn)實(AR)、虛擬現(xiàn)實(VR)以及機(jī)器人技術(shù)中變得極其有用。

你可以嘗試試用一下手勢識別在線功能,無需安裝。

https://mediapipe-studio.webapps.google.com/home

它的簡單易用的API和豐富的文檔使得更容易集成這個框架,非常適合使用在機(jī)器學(xué)習(xí)和計算機(jī)視覺領(lǐng)域當(dāng)中。

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

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

產(chǎn)品介紹
myCobot 320M5 stack
myCobot 320 M5 是大象機(jī)器人開發(fā)的一款面向用戶的六軸協(xié)作機(jī)械臂。它具有350mm的工作半徑和最大1000g的負(fù)載能力。該機(jī)械臂適用于開放的ROS仿真開發(fā)環(huán)境,并包含運動學(xué)正逆解算法。它支持多種編程語言,包括Python、C++、Arduino、C#JavaScript,且兼容Android、Windows、Mac OSX和Linux平臺。myCobot 320 M5的多功能性使其適用于多種開發(fā)和集成應(yīng)用。

wKgZomW57LKANfFiABDaLxmv7OY091.png

2D 相機(jī)
一個能夠安裝在mycobot320末端的2D相機(jī),用USB數(shù)據(jù)線進(jìn)行通信。能夠呈現(xiàn)機(jī)械臂末端所看到的視野。

wKgZomW57ROACkenAALThT4_X1A554.png

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

Gesture Recognition: 主要用來處理手勢的識別,能夠返回信息當(dāng)欠手勢是什么,比如說豎大拇指等等。

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

Program logic:用來處理程序運行的邏輯,設(shè)置確認(rèn)手勢時間,重置識別時間等,后續(xù)將一一詳細(xì)介紹。

wKgZomW57SuAIDswAAA_RhHMNkI728.png

編譯環(huán)境
操作系統(tǒng):windows 11

編程語言:Python3.9+

使用的庫:opencv,mediapipe,pymycobot,time

手勢的識別
做識別首先得獲得到相機(jī)的一個畫面,這里我們就用到了opencv庫來獲取相機(jī)的畫面

import cv2 # 獲取相機(jī)流,默認(rèn)的攝像頭-0 外接的攝像頭按照順序往上- 1,2,3 cap = cv2.VideoCapture(1) # 持續(xù)獲取相機(jī)畫面 while cap.isOpened(): #獲取當(dāng)前圖像畫面 ret, frame = cap.read() # 將BGR圖像轉(zhuǎn)換為RGB rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 在電腦中顯示畫面 cv2.imshow('gesture control',frame) # 按下 'q' 鍵退出,避免死循環(huán) if cv2.waitKey(1) & 0xFF == ord('q'): break

wKgZomW57qeARcKYAA40aSs54V0103.png


到這里圖像畫面就獲取成功了,接下來我們用mediapipe手勢進(jìn)行識別。

import mediapipe as mp # 初始化MediaPipe Hands模塊 mp_hands = mp.solutions.hands hands = mp_hands.Hands() mp_draw = mp.solutions.drawing_utils # 處理圖像并檢測手部 result = hands.process(rgb_frame) if result.multi_hand_landmarks: for hand_landmarks in result.multi_hand_landmarks: mp_draw.draw_landmarks(frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)

wKgaomW5-eiAB5_QAAsYkML_m8E026.png

這是識別手勢之后的輸出的結(jié)果,它能夠精準(zhǔn)的識別出手上的每個關(guān)節(jié),并且將每個關(guān)節(jié)的點都命名。MediaPipe Hands 提供了21個手部關(guān)鍵點(landmarks),這些關(guān)鍵點共同描繪了手的結(jié)構(gòu),包括手腕、各個手指的各個關(guān)節(jié)。以大拇指舉例子,一共有四個關(guān)節(jié),從下往上分別是CMC,MCP,IP,TIP.

cmc: Carpometacarpal Joint mcp:Metacarpophalangeal Joint ip:Interphalangeal Joint tip:tip

有了這些還不夠,我們要讓他識別特定的手勢,要需要去設(shè)定一個方法,來確定這個手勢,比如說我想要一個手勢是豎大拇指,那么我們分析在豎大拇指的時候,拇指的指尖的位置是在整個手掌的最上方,這樣就容易多了。只要確定在畫面中大拇指的指尖是高于其他所有手指頭的都指尖,那么這個手勢就是豎大拇指。(也可以通過別的進(jìn)行分析)

一般情況下,我們可以獲取到某個關(guān)節(jié)的X,Y,Z的三個屬性,表示改關(guān)節(jié)在圖像中的位置。

#獲取大拇指指尖的屬性 thump_tip = hand_landmarks.landmark[mp.hands.HandLandmark.THUMB_TIP] #獲取大拇指指尖的高度 thump_tip.y #判斷豎大拇指手勢 def is_thump_up(hand_landmarks): thumb_tip = hand_landmarks.landmark[mp_hands.HandLandmark.THUMB_TIP] index_tip = hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP] # 判斷那個關(guān)節(jié)比較高。 if thumb_tip.y < index_tip.y: return True return False


如果想要別的手勢的話,也可以根據(jù)手型的特點來設(shè)定一個專門的辨別方法。到這里手勢的識別就完成了。

機(jī)械臂運動控制
我一開始的想法是,當(dāng)相機(jī)識別到手勢的時候就會給機(jī)械臂發(fā)送一條控制命令,這里我們先簡單的設(shè)置一個讓機(jī)械臂點頭的動作。

pymycobot 這個功能庫,開放了很多功能在控制機(jī)械臂的時候非常的方便。

from pymycobot.mycobot import Mycobot import time #鏈接機(jī)械臂 mc = Mycobot(port,baud) #以關(guān)節(jié)角度控制機(jī)械臂運動 mc.send_angles([angles_list],speed) #以坐標(biāo)控制機(jī)械臂進(jìn)行運動 mc.send_coords([coords_list],speed,mode) #點頭動作 def ThumpUpAction(self): self.mc.send_angles([0.96, 86.22, -98.26, 10.54, 86.92, -2.37], 60) time.sleep(1.5) for count in range(3): self.mc.send_angles([0.79, 2.46, (-8.17), 4.3, 88.94, 0.26], 70) time.sleep(1) self.mc.send_angles([(-3.6), 30.32, (-45.79), (-46.84), 97.38, 0.35], 70) time.sleep(1) self.mc.send_angles([0.79, 2.46, (-8.17), 4.3, 88.94, 0.26], 70) time.sleep(1) self.mc.send_angles([0.96, 86.22, -98.26, 10.54, 86.92, -2.37], 60)


為了讓整體代碼看起來可讀性高,可修改性高,創(chuàng)建機(jī)械臂類方便進(jìn)行調(diào)用和修改

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 ThumpUpAction(self): ... def OtherAction(self): ...

程序邏輯的處理
在調(diào)試的過程中,出現(xiàn)了一些問題,在識別收拾的時候,它是一直識別,這就意味著如果在1s中內(nèi)識別了10次的話,會給機(jī)械臂發(fā)送10個命令,這樣肯定不是我一開始所設(shè)想的。

所以在邏輯上就要有所處理,下面是我處理的方式。

# 設(shè)置一個2S的時間來確定這個手勢,當(dāng)豎大拇指出現(xiàn)2s的時候才進(jìn)行下發(fā)機(jī)械臂控制的命令,用控制變量的方式來進(jìn)行。 #初始化變量 #檢測手勢是否存在的變量 gesture_detected = False #確定手勢出現(xiàn)后計時的變量 gesture_start_time = None # 設(shè)定手勢出現(xiàn)2s后的變量 gesture_confirmation_time = 2 后續(xù)的處理邏輯: 當(dāng)特定手勢出現(xiàn)的時候,gesture_start_time就開始計時,這個時候在不停的做判斷如果時間到達(dá)了2S之后,確定手勢接下來執(zhí)行相對應(yīng)手勢的機(jī)械臂運動。 current_time = time.time() if current_gesture: if not gesture_detected: gesture_detected = True gesture_start_time = current_time elif current_time - gesture_start_time > gesture_confirmation_time and not action_triggered: # 根據(jù)手勢執(zhí)行相應(yīng)動作 if current_gesture == "thumb_up": robotic arm action()


但是這樣還不夠,因為手如果出現(xiàn)超過2s后也會持續(xù)發(fā)送機(jī)械臂的指令,這里我們需要在設(shè)置一個冷卻的時間,有充足的時間讓機(jī)械臂完成運動。

#冷卻時間的變量 #機(jī)械臂是否完成動作的變量 action_triggered = False #冷卻時間計時的變量 cooldown_start_time = None #固定2s冷卻時間 cooldown_period = 2


這樣就能夠滿足需求了。完整的邏輯代碼處理如下

# 處理手勢 current_time = time.time() if current_gesture: if not gesture_detected: gesture_detected = True gesture_start_time = current_time elif current_time - gesture_start_time > gesture_confirmation_time and not action_triggered: # 根據(jù)手勢執(zhí)行相應(yīng)動作 if current_gesture == "thumb_up": print('good good') mc.thum_up() elif current_gesture == "palm_open": print('forward') mc.increment_x_and_send() # 可以添加更多手勢和對應(yīng)動作的判斷 action_triggered = True cooldown_start_time = current_time else: gesture_detected = False gesture_start_time = None if action_triggered and current_time - cooldown_start_time > cooldown_period: print('can continue') action_triggered = False cooldown_start_time = None

演示
https://youtu.be/9vOPKO_IG9M

總結(jié)
這個項目展示了使用手勢識別控制myCobot 320的方法,開創(chuàng)了人機(jī)互動的新形式。盡管目前僅實現(xiàn)了有限的幾個手勢與機(jī)械臂動作的對應(yīng),但它為未來更廣泛的機(jī)械臂應(yīng)用奠定了基礎(chǔ)。結(jié)合手勢與機(jī)械臂的創(chuàng)新嘗試不僅提升了我的編程技能,還鍛煉了我的問題解決能力,為未來的相關(guān)項目提供了寶貴經(jīng)驗。

審核編輯 黃宇

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

    關(guān)注

    8

    文章

    228

    瀏覽量

    48281
  • 人工智能
    +關(guān)注

    關(guān)注

    1806

    文章

    49007

    瀏覽量

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

    關(guān)注

    3

    文章

    3678

    瀏覽量

    43811
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

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

    關(guān)注

    13

    文章

    554

    瀏覽量

    25374
  • 大象機(jī)器人
    +關(guān)注

    關(guān)注

    0

    文章

    86

    瀏覽量

    121
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    大象機(jī)器人攜手進(jìn)迭時空推出 RISC-V 全棧開源機(jī)械產(chǎn)品

    大象機(jī)器人成立于2016年,專注協(xié)作機(jī)器人研發(fā)與應(yīng)用,產(chǎn)品線涵蓋輕量級協(xié)作機(jī)器人、人形
    的頭像 發(fā)表于 06-06 16:55 ?515次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機(jī)器人</b>攜手進(jìn)迭時空推出 RISC-V 全棧開源<b class='flag-5'>六</b><b class='flag-5'>軸</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>產(chǎn)品

    大象機(jī)器人攜手進(jìn)迭時空推出 RISC-V 全棧開源機(jī)械產(chǎn)品

    大象機(jī)器人成立于2016年,專注協(xié)作機(jī)器人研發(fā)與應(yīng)用,產(chǎn)品線涵蓋輕量級協(xié)作機(jī)器人、人形
    發(fā)表于 04-25 17:59

    大象機(jī)器人×進(jìn)迭時空聯(lián)合發(fā)布全球首款RISC-V全棧開源小機(jī)械

    革新產(chǎn)品——全球首款基于RISC-V全棧開源的協(xié)作機(jī)械 myCobot 280 RISC-
    的頭像 發(fā)表于 04-25 14:19 ?743次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機(jī)器人</b>×進(jìn)迭時空聯(lián)合發(fā)布全球首款RISC-V全棧開源小<b class='flag-5'>六</b><b class='flag-5'>軸</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>

    大象機(jī)器人攜手地瓜機(jī)器人打造全國產(chǎn)輕量級教育協(xié)作機(jī)械新標(biāo)桿

    機(jī)器人技術(shù)、人工智能技術(shù)飛速發(fā)展的今天,全球機(jī)器人產(chǎn)業(yè)正在加速重構(gòu),據(jù)智庫數(shù)據(jù)顯示,2025年中國教育機(jī)器人市場規(guī)模將突破800億元,其中高校實驗室設(shè)備采購占比超40%。中國教育機(jī)器人
    的頭像 發(fā)表于 04-16 15:21 ?659次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機(jī)器人</b>攜手地瓜<b class='flag-5'>機(jī)器人</b>打造全國產(chǎn)輕量級教育<b class='flag-5'>協(xié)作</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>新標(biāo)桿

    大象機(jī)器人推出myCobot 280 RDK X5,攜手地瓜機(jī)器人共建智能教育機(jī)

    摘要大象機(jī)器人全新推出輕量級高性能教育機(jī)械myCobot280RDKX5,該產(chǎn)品集成地瓜機(jī)器人
    的頭像 發(fā)表于 04-15 22:05 ?549次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機(jī)器人</b>推出<b class='flag-5'>myCobot</b> 280 RDK X5,攜手地瓜<b class='flag-5'>機(jī)器人</b>共建智能教育機(jī)

    大象機(jī)器人以科技治愈人心

    當(dāng)冰冷的代碼被賦予人性的溫度,科技便有了治愈人心的力量。大象機(jī)器人公司始終致力于通過機(jī)器人技術(shù)改善人們的生活,"享受機(jī)器人世界"是大象
    的頭像 發(fā)表于 02-20 11:17 ?736次閱讀

    專為機(jī)器人教育而設(shè)計的創(chuàng)客友好型機(jī)械

    本文重點介紹了一款專為機(jī)器人教育而設(shè)計的具有動態(tài)跟蹤功能的創(chuàng)客友好型機(jī)械 硬件組件 M5Stack ESP32 Basic Core IoT Development Kit Raspberry
    的頭像 發(fā)表于 02-12 11:12 ?621次閱讀
    專為<b class='flag-5'>機(jī)器人</b>教育而設(shè)計的創(chuàng)客友好型<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>

    如何使用PLC控制myCobot 320機(jī)械

    根據(jù)持續(xù)的用戶反饋,目前市場對 PLC 與 myCobot 系統(tǒng)集成的需求很大,因此本文提供的案例介紹了如何使用 PLC(可編程邏輯控制器)來控制 myCobot 320 機(jī)械
    的頭像 發(fā)表于 01-23 14:03 ?1130次閱讀
    如何使用PLC控制<b class='flag-5'>myCobot</b> <b class='flag-5'>320</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>

    安川工業(yè)機(jī)器人結(jié)構(gòu)

    的連接線纜,也可以根據(jù)現(xiàn)場的實際需求來進(jìn)行選配。 --機(jī)器人本體各部分組成:由圖可知安川6工業(yè)機(jī)器人可分為機(jī)器人底座、S頭、L
    的頭像 發(fā)表于 12-19 09:59 ?1435次閱讀
    安川工業(yè)<b class='flag-5'>機(jī)器人</b>結(jié)構(gòu)

    大象機(jī)器人11月大事件回顧

    冬意漸濃,在過去的11月里,大象機(jī)器人活躍在國內(nèi)外的多個行業(yè)盛會上,向廣大機(jī)器人愛好者和行業(yè)專家展示了我們在協(xié)作機(jī)器人、人形
    的頭像 發(fā)表于 12-03 15:35 ?598次閱讀

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-運動追蹤之傳感器使用場景

    身上,用于實時監(jiān)控機(jī)器人的運動和姿態(tài),幫助機(jī)器人進(jìn)行自主導(dǎo)航和姿態(tài)控制。2.智能手機(jī)和智能手表:傳感器可以用于智能手機(jī)和智能手表中的計步
    發(fā)表于 12-02 09:47

    飛凌嵌入式ElfBoard ELF 1板卡-運動追蹤之傳感器使用場景

    身上,用于實時監(jiān)控機(jī)器人的運動和姿態(tài),幫助機(jī)器人進(jìn)行自主導(dǎo)航和姿態(tài)控制。2.智能手機(jī)和智能手表:傳感器可以用于智能手機(jī)和智能手表中的計步
    發(fā)表于 11-29 08:57

    焊接機(jī)器人分別是什么作用

    任務(wù)。那么,焊接機(jī)器人分別是什么作用?本文將詳細(xì)介紹。 一機(jī)器人基座旋轉(zhuǎn)軸 一
    的頭像 發(fā)表于 11-21 17:45 ?1161次閱讀
    焊接<b class='flag-5'>機(jī)器人</b><b class='flag-5'>六</b>個<b class='flag-5'>軸</b>分別是什么作用

    大象機(jī)器人10月大事件回顧

    金秋10月,大象機(jī)器人積極參加數(shù)個海內(nèi)外知名行業(yè)盛會,向全球機(jī)器人愛好者與行業(yè)專家展示最新的成果,也收獲了一些獎項、報道,通過這些難得的展示機(jī)會,大象
    的頭像 發(fā)表于 10-31 16:43 ?957次閱讀

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

    在大家的印象中,機(jī)械通常被應(yīng)用在工業(yè)領(lǐng)域,執(zhí)行一些重復(fù)性工作,以幫助和替代人類。然而,機(jī)械不僅限于此,它們也可以成為陪伴型機(jī)器人,為我們
    的頭像 發(fā)表于 08-12 15:21 ?1421次閱讀
    開源<b class='flag-5'>六</b><b class='flag-5'>軸</b><b class='flag-5'>協(xié)作</b><b class='flag-5'>機(jī)器人</b><b class='flag-5'>myCobot</b> <b class='flag-5'>320</b>結(jié)合人臉表情<b class='flag-5'>識別</b>情緒!