精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

大象機器人六軸協作機械臂myCobot 320 進行手勢識別!

大象機器人科技 ? 來源:大象機器人科技 ? 作者:大象機器人科技 ? 2024-01-31 16:17 ? 次閱讀

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

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

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

wKgaomW57DCAXSqEAAaq4Rw2I2Y692.png

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

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

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

它的簡單易用的API和豐富的文檔使得更容易集成這個框架,非常適合使用在機器學習和計算機視覺領域當中。

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

使用這個庫唯一的標準是,得使用mycobot 系列的機械臂,這是專門為mycobot進行適配的一款機械臂。

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

wKgZomW57LKANfFiABDaLxmv7OY091.png

2D 相機
一個能夠安裝在mycobot320末端的2D相機,用USB數據線進行通信。能夠呈現機械臂末端所看到的視野。

wKgZomW57ROACkenAALThT4_X1A554.png

開發過程
項目架構
我將該項目主要分為三個木塊功能:

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

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

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

wKgZomW57SuAIDswAAA_RhHMNkI728.png

編譯環境
操作系統:windows 11

編程語言:Python3.9+

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

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

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

wKgZomW57qeARcKYAA40aSs54V0103.png


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

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

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

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

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

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

#獲取大拇指指尖的屬性 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] # 判斷那個關節比較高。 if thumb_tip.y < index_tip.y: return True return False


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

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

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

from pymycobot.mycobot import Mycobot import time #鏈接機械臂 mc = Mycobot(port,baud) #以關節角度控制機械臂運動 mc.send_angles([angles_list],speed) #以坐標控制機械臂進行運動 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)


為了讓整體代碼看起來可讀性高,可修改性高,創建機械臂類方便進行調用和修改

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): ...

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

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

# 設置一個2S的時間來確定這個手勢,當豎大拇指出現2s的時候才進行下發機械臂控制的命令,用控制變量的方式來進行。 #初始化變量 #檢測手勢是否存在的變量 gesture_detected = False #確定手勢出現后計時的變量 gesture_start_time = None # 設定手勢出現2s后的變量 gesture_confirmation_time = 2 后續的處理邏輯: 當特定手勢出現的時候,gesture_start_time就開始計時,這個時候在不停的做判斷如果時間到達了2S之后,確定手勢接下來執行相對應手勢的機械臂運動。 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: # 根據手勢執行相應動作 if current_gesture == "thumb_up": robotic arm action()


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

#冷卻時間的變量 #機械臂是否完成動作的變量 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: # 根據手勢執行相應動作 if current_gesture == "thumb_up": print('good good') mc.thum_up() elif current_gesture == "palm_open": print('forward') mc.increment_x_and_send() # 可以添加更多手勢和對應動作的判斷 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

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 手勢識別
    +關注

    關注

    8

    文章

    225

    瀏覽量

    47773
  • 人工智能
    +關注

    關注

    1791

    文章

    46896

    瀏覽量

    237660
  • 開源
    +關注

    關注

    3

    文章

    3256

    瀏覽量

    42419
  • python
    +關注

    關注

    56

    文章

    4783

    瀏覽量

    84473
  • 機械臂
    +關注

    關注

    12

    文章

    510

    瀏覽量

    24499
收藏 人收藏

    評論

    相關推薦

    焊接機器人分別是什么作用

    任務。那么,焊接機器人分別是什么作用?本文將詳細介紹。 一機器人基座旋轉軸 一
    的頭像 發表于 11-21 17:45 ?121次閱讀
    焊接<b class='flag-5'>機器人</b><b class='flag-5'>六</b>個<b class='flag-5'>軸</b>分別是什么作用

    大象機器人10月大事件回顧

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

    開源協作機器人myCobot 320結合人臉表情識別情緒!

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

    大象機器人開源協作機械機械接入GPT4o大模型!

    和智能化的任務,提升了人機協作的效率和效果。我們個人平時接觸不太到機械這類的機器人產品,但是有一種小型的機械
    的頭像 發表于 07-03 14:09 ?796次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機器人</b>開源<b class='flag-5'>協作</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    基于維力傳感器的機械自動裝配應用

    外部環境的關鍵裝置,維力傳感器通常安裝于機器末端執行器與機械之間,用于檢測作業中的機器人
    的頭像 發表于 06-06 13:49 ?698次閱讀
    基于<b class='flag-5'>六</b>維力傳感器的<b class='flag-5'>機械</b><b class='flag-5'>臂</b>自動裝配應用

    焊接機器人的操作流程

    靈活的操作性和較高的工作效率,今天跟隨創想智控焊縫跟蹤小編一起了解焊接機器人的操作流程。 一、機器人準備 開機自檢:啟動機器人控制系統,
    的頭像 發表于 04-29 09:56 ?780次閱讀
    <b class='flag-5'>六</b><b class='flag-5'>軸</b>焊接<b class='flag-5'>機器人</b>的操作流程

    大象機器人開源協作機械myCobot 630 全面升級!

    1. 開篇概述 在快速發展的機器人技術領域中,Elephant Robotics的myCobot 600已經證明了其在教育、科研和輕工業領域的顯著適用性。作為一款具備自由度的機械
    的頭像 發表于 04-28 15:19 ?947次閱讀
    <b class='flag-5'>大象</b><b class='flag-5'>機器人</b>開源<b class='flag-5'>協作</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>myCobot</b> 630 全面升級!

    自然語言控制機械:ChatGPT與機器人技術的融合創新(下)

    和Google的Speech-to-text服務,以及我們是如何通過pymycobot模塊來控制機械的。通過將自然語言處理和機械控制相結合,我們的項目旨在降低
    的頭像 發表于 04-11 15:54 ?810次閱讀
    自然語言控制<b class='flag-5'>機械</b><b class='flag-5'>臂</b>:ChatGPT與<b class='flag-5'>機器人</b>技術的融合創新(下)

    myCobot Pro 630 煥新上市!全面助力自由度協作機器人商用化進程推進!

    在快速變化的現代社會中,教育和商業領域面臨著前所未有的挑戰和機遇。隨著技術的不斷進步,尋求高效、靈活的自動化解決方案成為了推動創新和增強競爭力的關鍵。 自大象機器人myCobot Pro 600系列
    的頭像 發表于 04-03 11:12 ?355次閱讀
    <b class='flag-5'>myCobot</b> Pro 630 煥新上市!全面助力<b class='flag-5'>六</b>自由度<b class='flag-5'>協作</b><b class='flag-5'>機器人</b>商用化進程推進!

    使用ChatGPT學習大象機器人協作機械mechArm!

    調試的過程中,出現了一些問題,在識別收拾的時候,它是一直識別,這就意味著如果在1s中內識別了10次的話,會給機械發送10個命令,這樣肯定不
    的頭像 發表于 01-31 14:39 ?629次閱讀
    使用ChatGPT學習<b class='flag-5'>大象</b><b class='flag-5'>機器人</b><b class='flag-5'>六</b><b class='flag-5'>軸</b><b class='flag-5'>協作</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b>mechArm!

    自動化革命:大象機器人的Mercury A1機械

    引言 大象機器人的Mercury系列,是面向工業自動化和智能制造的新型機械產品線。這些機械
    的頭像 發表于 01-15 14:41 ?692次閱讀
    自動化革命:<b class='flag-5'>大象</b><b class='flag-5'>機器人</b>的Mercury A1<b class='flag-5'>機械</b><b class='flag-5'>臂</b>

    13個精選創意應用案例!協作機器人與智慧生活的融合!

    2023年,大象機器人協作機器人產品年出貨量超1萬臺,銷往海內外50+國家,獲國內外超500+所高校、企業的認可和應用。
    的頭像 發表于 01-10 14:23 ?4514次閱讀
    13個精選創意應用案例!<b class='flag-5'>協作</b><b class='flag-5'>機器人</b>與智慧生活的融合!

    宏集新品 | 宏集Franka系列FP3協作機器人,如人類手臂般靈活! #協作機器人 #機械

    機械協作機器人
    虹科工業物聯網技術
    發布于 :2024年01月04日 15:32:40

    ?大象機器人首發萬元級水星Mercury人形機器人系列

    水星Mercury機器人系列共有三款產品:水星Mercury A1 七協作機械和水星Mercury B1半人形雙臂
    發表于 01-03 09:59 ?256次閱讀
    ?<b class='flag-5'>大象</b><b class='flag-5'>機器人</b>首發萬元級水星Mercury人形<b class='flag-5'>機器人</b>系列

    LabVIEW的工業機器人運動控制系統

    LabVIEW開發工業機器人運動控制系統 本項目開發了一個高效的工業機器人控制系統,重點關注于運動學算法和軌跡規劃算法的實現和測試。LabVIEW作為一個關鍵技術,在項目中扮演了核
    發表于 12-21 20:03