色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

七軸開源協作機械臂myArm視覺跟蹤技術!

大象機器人科技 ? 來源: 大象機器人科技 ? 作者: 大象機器人科技 ? 2023-12-18 11:14 ? 次閱讀

引言
ArUco標記是一種基于二維碼的標記,可以被用于高效的場景識別和位置跟蹤。這些標記的簡單性和高效性使其成為機器視覺領域的理想選擇,特別是在需要實時和高精度跟蹤的場景中。結合機器學習和先進的圖像處理技術,使用ArUco標記的機械臂系統可以實現更高級的自動化功能,如精確定位、導航和復雜動作的執行。

本案例旨在展示結合ArUco標記和機械臂運動控制技術,實現對機械臂的高精度控制和姿態跟蹤。通過分析和解釋腳本的不同組成部分,本文將探討如何通過機器視覺識別技術和復雜的數據處理算法,來增強機械臂的操作能力。此外,還將展示機械臂在捕捉和響應環境變化方面的能力,以及如何通過編程和算法優化來提高整體系統的效率和準確性。

技術概述
機械臂-myArm 300 Pi
myArm 300 Pi是大象機器人最新出的一款七自由度的機械臂,搭載樹莓派4B 4g芯片,專門為機器人定制了ubuntu mate 20.04操作系統。myArm提供了7自由度的靈活性,使它超越6自由度機器人,讓機器人手臂的移動可以如同人類手臂一樣靈活。

myArm內置接口可以進行超高難度的肘關節姿態變換,在實踐教學中,可以用于機器人姿態研究、機器人運動路徑規劃學習、機器人冗余自由度的管理和利用、正逆運動學、ROS機器人開發環境、機器人應用開發、編程語言開發和底層數據處理等多種機器人相關的學科教育。開放了樹莓派4B開發板和末端Atom近乎100%的硬件接口,可以搭配用戶個人的樹莓派4B及M5Atom的周邊配件,進行個性化的場景開發,以滿足不同用戶的創意開發。

wKgaomV_s_WADrxxABMkB8FIQYY603.png

ArUco 碼標記
ArUco 標記是一種二維條形碼系統,它在機器視覺領域中被廣泛用于標記檢測和空間定位。這些標記由黑白圖案組成,通常呈正方形,中心包含一個獨特的二進制模式,使其能夠被計算機視覺系統快速而準確地識別。

wKgaomV_tCeAeKNQAAAheLKN_6g701.pngwKgaomV_tCGAG-dkAAAhhnDfmIc081.png

ArUco 標記的特點:

唯一性:每個 ArUco 標記具有獨特的編碼,允許識別系統輕松區分不同的標記
低成本:與其他高級定位系統相比,ArUco 標記不需要昂貴的設備或復雜的安裝,可以直接打印ArUco標記。
定位和導航:在機器視覺系統中,ArUco 標記被用作參考點,幫助機械臂或移動機器人定位自身位置或導航至特定位置。
姿態估計:通過分析攝像頭捕捉到的 ArUco 標記圖像,系統能夠計算出標記相對于攝像頭的位置和方向(即姿態)。這對于精確控制機械臂或其他自動化設備至關重要。
相關軟件和庫
操作系統:Ubuntu mate 20.04

編程語言:Python 3.9+

主要功能包:pymycobot,OpenCV,numpy,math

pymycobot-控制機械臂運動的庫,多種控制接口
OpenCV- 提供了豐富的圖像處理和視頻分析功能,包括對象檢測,面部識別,運動跟蹤,圖形濾波等
Numpy-是一個核心科學計算哭,它提供了高性能的多維數組對象和工具,用于處理大量數據。
Math-提供了一系列基本的數學運算函數和常量,如三角函數、指數和對數函數、各種數學常數等。
系統設計與實現
物料準備

wKgaomV_taSAN87rAACA_LaBRYs371.pngwKgaomV_tbOAMi7_AAHJ9Ka_cW8408.png

機械臂的姿態跟蹤
定義:姿態跟蹤通常指的是監測和記錄一個物體在三維空間中的精確位置(平移)和方向(旋轉),即其“姿態”。
技術應用:在機械臂的應用中,姿態跟蹤涉及到實時監控和控制機械臂自身的各個關節和末端執行器的精確位置和方向。這通常需要復雜的傳感器系統和算法,以實現高精度的控制。
用途:姿態跟蹤對于執行精密的操作任務非常關鍵,如在制造業中的裝配、焊接、在醫療領域中的外科手術輔助
項目組成部分
整個系統的架構主要分為以下幾個部分:

1.硬件組成:機械臂,usb攝像頭以及使用到的設備。
2.軟件和控制系統:通過OpenCV識別ArUco 標記,控制算法,機械臂運動控制的系統來實現案例。
3.數據流程:用于圖像的捕捉,圖像處理,數據分析和轉換,機械臂的執行。

wKgaomV_tnGAInyoAABlWy8E2_4732.png


功能實現
圖像捕捉
使用到OpenCV捕獲圖像的方法

# 初始化攝像頭
cap = cv2.VideoCapture(0) # 0代表默認攝像頭的序號

#讀取圖像幀
ret, frame = cap.read()

#顯示圖像
cv2.imshow('video", frame)
def capture_video():
   cap = cv2.VideoCapture(0)
   if not cap.isOpened():
       print("Can't open camera")
       return
   
   try:
       while True:
           ret, frame = cap.read()
           if not ret:
               print("Can't read the pic from camera")
               break
           cv2.imshow('Video Capture', frame)
           # enter 'q'  quit 
           if cv2.waitKey(1) & 0xFF == ord('q'):
               break
   finally:
       cap.release()
       cv2.destroyAllWindows()

圖像處理與ArUco標記識別
對攝像頭捕獲的圖像進行處理以及對ArUco的標記碼進行識別

#檢測ArUco標記
   def detect_marker_corners(self, frame: np.ndarray) -> Tuple[NDArray, NDArray, NDArray]:
       # 灰度化
       gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
       corners : Any
       ids : Any
       rejectedImgPoints : Any
       corners, ids, rejectedImgPoints = self.detector.detectMarkers(gray)
       return corners, ids, rejectedImgPoints
       
 #在圖像中標記出ArUco碼,并且在每個標志上繪制坐標軸  
   def draw_marker(self, frame: np.ndarray, corners, tvecs, rvecs, ids) -> None:
       # cv2.aruco.drawDetectedMarkers(frame, corners, None, borderColor=(0, 255, 0))
       cv2.aruco.drawDetectedMarkers(frame, corners, ids, borderColor=(0, 200, 200))
       for i in range(len(ids)):
           corner, tvec, rvec, marker_id = corners[i], tvecs[i], rvecs[i], ids[i]
           cv2.drawFrameAxes(frame, self.mtx, self.dist, rvec, tvec, 30, 2)
           
while True:
           ret, frame = cap.read()
           corners, ids, rejectedImgPoints = aruco_detector.detect_marker_corners(frame)
            if ids is not None:
               detector.draw_marker(frame, corners, tvecs, rvecs, ids)
               ArucoDetector.draw_position_info(frame, corners, tvecs)           
           cv2.imshow('Video Capture', frame)
       
           # enter 'q'  quit 
           if cv2.waitKey(1) & 0xFF == ord('q'):
               break

數據解析與處理
因為該案例要做的是姿態跟蹤,所以我們在檢測ArUco標記的時候得檢測該姿態,標注每個旋轉向量(rvec)和平移向量(tvecs),這些向量描述了標記相對于攝像頭的三位位置和方向。

   def estimatePoseSingleMarkers(self, corners):
       """
       This will estimate the rvec and tvec for each of the marker corners detected by:
          corners, ids, rejectedImgPoints = detector.detectMarkers(image)
       corners - is an array of detected corners for each detected marker in the image
       marker_size - is the size of the detected markers
       mtx - is the camera matrix
       distortion - is the camera distortion matrix
       RETURN list of rvecs, tvecs, and trash (so that it corresponds to the old estimatePoseSingleMarkers())
       """
       marker_points = np.array([[-self.marker_size / 2, self.marker_size / 2, 0],
                                 [self.marker_size / 2, self.marker_size / 2, 0],
                                 [self.marker_size / 2, -self.marker_size / 2, 0],
                                 [-self.marker_size / 2, -self.marker_size / 2, 0]], dtype=np.float32)
       rvecs = []
       tvecs = []
       for corner in corners:
           corner : np.ndarray
           retval, rvec, tvec = cv2.solvePnP(marker_points, corner, self.mtx, self.dist, None, None, False, 
                                             cv2.SOLVEPNP_IPPE_SQUARE)
           if retval:
               rvecs.append(rvec)
               tvecs.append(tvec)

       rvecs = np.array(rvecs)
       tvecs = np.array(tvecs)
       (rvecs - tvecs).any()
       return rvecs, tvecs

捕獲數據的時候會大量的數據,為了提高檢測的準確性需要使用濾波器來進行對數據的處理。

用到了中值濾波器,平均濾波器還有二階濾波器。

中值濾波器:中值濾波器非常有效于去除所謂的“椒鹽”噪聲,同時保持信號的邊緣信息。它在圖像處理中常用于去除噪點,同時不會使圖像模糊。

wKgZomV_t6qAHdy1AAMJiWy3gVM096.png

平均濾波器:平均濾波器常用于去除隨機噪聲、平滑和軟化數據。在圖像處理中,它可以用于平滑圖像,但可能會導致邊緣信息丟失,可以看到圖像處理過后會模糊一些。

wKgZomV_t6GAIB4EAAEt8-ok4H0874.png

二階濾波器:精確控制信號頻率成分時使用,例如在信號處理和控制系統中,用于減少振蕩和提高穩定性,特別是在姿態估計和精確運動控制中。

def median_filter(pos, filter, filter_len):
   if not np.any(filter):
       # 如果濾波器為空,用pos填充濾波器
       filter[:] = pos

   # 將pos加入濾波器
   filter[filter_len - 1] = pos

   # 移動濾波器中的元素
   for i in range(filter_len - 1):
       filter[i] = filter[i + 1]

   # 計算中值并存儲到輸出數組中
   output = np.median(filter)

   return output

def Average_filter(pos, filter, filter_len):
   if not np.any(filter):
       # 如果濾波器為空,用pos填充濾波器
       filter[:] = pos

   # 將pos加入濾波器
   filter[filter_len - 1] = pos

   # 移動濾波器中的元素
   for i in range(filter_len - 1):
       filter[i] = filter[i + 1]

   # 計算中值并存儲到輸出數組中
   output = np.mean(filter)

   return output
def twoorder_filter_single_input(input):
   global prev1
   global prev2
   global prev_out1
   global prev_out2

   if np.array_equal(prev1, np.zeros(3)):
       output, prev1, prev_out1 = input, input, input
       return output
   
   if np.array_equal(prev2, np.zeros(3)):
       prev2, prev_out2 = prev1, prev_out1
       output, prev1, prev_out1 = input, input, input
       return output
   
   fc = 20   # Hz 截止頻率 (設計的濾波器頻率)
   fs = 100  # Hz 斬波頻率  (采樣頻率)
   Ksi = 10  # 品質因數
   
   temp1 = (2 * 3.14159 * fc)**2
   temp2 = (2 * fs)**2
   temp3 = 8 * 3.14159 * fs * Ksi * fc
   temp4 = temp2 + temp3 + temp1
   
   K1 = temp1 / temp4
   K2 = 2 * K1
   K3 = K1
   K4 = 2 * (temp1 - temp2) / temp4
   K5 = (temp1 + temp2 - temp3) / temp4
   
   
   output = K1 * prev2 + K2 * prev1 + K3 * input - K4 * prev_out2 - K5 * prev_out1

   # 更新全局變量
   prev2, prev1, prev_out2, prev_out1 = prev1, input, prev_out1, output
   
   return output


從檢測到的標記(如ArUco標記)中提取機械臂或相機的姿態信息,并對提取的角度數據進行濾波處理,最終獲得目標的坐標。

機械臂控制命令生成
在機械臂運動控制的方式上,我們得設置它的運動模式

# Set end coordinate system 1-tool
arm.set_end_type(1)
time.sleep(0.03)
# Set tool coordinate system
arm.set_tool_reference([-50, 0, 20, 0, 0, 0])
time.sleep(0.03)
# Set command refresh mode
arm.set_fresh_mode(0)
time.sleep(0.03)


在獲取到目標坐標,就得發送給機械臂去執行命令。

from pymycobot import MyArm
arm = MyArm("COM11",debug=False)
# 發送坐標控制機械臂運動
arm.send_coords(target_coords, 10, 2)
關鍵技術點
關鍵的技術點主要在幾個方面:

ArUco 檢測:
ArUco 標記的檢測是整個系統運行的基礎。通過攝像頭識別這些標記,系統能夠獲取關于標記位置和方向的關鍵信息。這些信息對于機械臂的精確控制和操作至關重要,尤其是在需要精確位置調節的應用中,如在自動化、機器人編程和增強現實中。

使用圖像處理技術,用openCV庫從攝像頭捕獲的圖像中識別標記,并且提取他們的位置和姿態信息。

濾波技術:
在處理圖像數據或機械臂傳感器數據時,濾波技術是保證數據質量和系統穩定性的關鍵。它們幫助去除數據中的噪聲和誤差,從而提高系統的準確性和可靠性。

機械臂控制:
在開始實現機械臂姿態跟蹤前提,需要設置其運動模式。確保機械臂的運動與預期任務相匹配、提高操作的精度和可靠性非常關鍵。通過調整坐標系統、工具參考點和指令執行方式,可以使機械臂更加適應特定的操作環境和任務需求。

https://twitter.com/i/status/1733806097050558951

總結
在該項目中,深入了解圖像處理和機器視覺的原理,特別是ArUco標記檢測和位姿最終方面。可以掌握各種濾波技術的應用,理解它們在提高數據質量和系統性能中的重要。總而言之,該項目可以實踐應用各個方面。

審核編輯 黃宇

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

    關注

    211

    文章

    28466

    瀏覽量

    207313
  • 開源
    +關注

    關注

    3

    文章

    3363

    瀏覽量

    42535
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84752
  • 機械臂
    +關注

    關注

    12

    文章

    515

    瀏覽量

    24609
收藏 人收藏

    評論

    相關推薦

    OrangePi AIpro應用:機械應用開發指南

    2024世界人工智能大會上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區亮相,給大家帶來AI+互動的沉浸式體驗。其中,搭載OrangePiAIpro開發板的智能機械吸引了
    的頭像 發表于 08-19 16:42 ?596次閱讀
    OrangePi AIpro應用:<b class='flag-5'>機械</b><b class='flag-5'>臂</b>應用開發指南

    工業機器人和機械的設計、功能和應用有哪些區別?

    自動化設備,專門用于在工業生產線或其他工業環境中執行各種操作任務。它們通常具備多關節結構,能夠在三維空間內自由移動,并搭載各種工具、夾具或傳感器來完成特定的任務。 工業機器人和機械都屬于自動化設備,用于執行
    的頭像 發表于 08-16 09:43 ?504次閱讀

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

    與眾不同的功能。通過結合人臉表情識別技術,我們可以讓機械感知到我們的情緒變化。當我們開心時,機械可以跟著一起開心地舞動;當我們傷心難過時
    的頭像 發表于 08-12 15:21 ?928次閱讀
    <b class='flag-5'>開源</b>六<b class='flag-5'>軸</b><b class='flag-5'>協作</b>機器人myCobot 320結合人臉表情識別情緒!

    機器視覺控制運動原理是什么

    機器視覺控制運動原理是一個復雜而深入的主題。下面將從以下幾個方面進行介紹: 機器視覺概述 機器視覺是一種模擬人類視覺的計算機
    的頭像 發表于 07-04 10:42 ?562次閱讀

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

    和智能化的任務,提升了人機協作的效率和效果。我們個人平時接觸不太到機械這類的機器人產品,但是有一種小型的機械我們人人都可以擁有它myCo
    的頭像 發表于 07-03 14:09 ?948次閱讀
    大象機器人<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大模型!

    國產Cortex-A55人工智能教學實驗箱_基于Python機械跳舞實驗案例分享

    一、實驗目的 本實驗通過TL3568-PlusTEB教學實驗箱修改機械不同舵機的角度,增加延遲時間,從而做到機械跳舞的效果。 二、實驗原理 ROS(機器人操作系統) ROS(機器
    發表于 06-28 14:37

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

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

    大象機器人發布智能遙操作機械組合myArm M&amp;C,加速具身智能研究與發展!

    。 在此背景下,大象機器人myArm MC一經上市,已交付海內外數十臺訂單,收獲開發者一致認可。這一系列的智能化6自由度遙操作機械,不僅達到了市場對高性能機器人的苛刻要求,更通過其前沿的遙操作
    的頭像 發表于 04-14 16:44 ?785次閱讀
    大象機器人發布智能遙操作<b class='flag-5'>機械</b><b class='flag-5'>臂</b>組合<b class='flag-5'>myArm</b> M&amp;C,加速具身智能研究與發展!

    機械技術的前沿探索:年度案例回顧!

    在過去的幾年里,機械技術經歷了前所未有的發展,其應用領域從傳統的制造業擴展到了醫療、服務、物流等多個新興行業。這種跨界擴展得益于科技的飛速進步,尤其是在傳感器、控制系統和人工智能領域的突破。特別是
    的頭像 發表于 03-12 15:14 ?1150次閱讀
    <b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>技術</b>的前沿探索:年度案例回顧!

    如何去提升機械的位置控制性能?

    控制性能。?? 精度衡量:直接測量機械末端的位置比較困難,這里采用一種近似的方式,比較機械指令角度與實際編碼器反饋角度間的偏差值。
    的頭像 發表于 03-05 08:43 ?1002次閱讀
    如何去提升<b class='flag-5'>機械</b><b class='flag-5'>臂</b>的位置控制性能?

    【先楫HPM5361EVK開發板試用體驗】(原創)5.手把手實戰AI機械

    的其他外設。 驅動編寫:根據硬件的規格和SDK文檔,編寫或集成適當的驅動程序來控制這些外設。 游戲邏輯:設計游戲邏輯,例如目標識別、機械控制、得分機制等。 機器視覺與ChatGPT集成:將機器
    發表于 02-06 10:28

    【國產FPGA+OMAPL138開發板體驗】(原創)2.手把手玩轉游戲機械

    ChatGPT,是一項相當復雜的任務。下面我把系統方案和代碼框架開源共享一下,這是一個相當復雜且技術性強的項目,需要多領域的專業知識,包括嵌入式系統、機械控制、紅外傳感器
    發表于 02-01 20:18

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

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

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

    調試的過程中,出現了一些問題,在識別收拾的時候,它是一直識別,這就意味著如果在1s中內識別了10次的話,會給機械發送10個命令,這樣肯定不是我一開始所設想的。我一開始的想法是,當相機識別到手勢的時候就會給機械
    的頭像 發表于 01-31 14:39 ?675次閱讀
    使用ChatGPT學習大象機器人六<b class='flag-5'>軸</b><b class='flag-5'>協作</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b>mechArm!
    主站蜘蛛池模板: 亚洲精品无码国产爽快A片| 9LPORM原创自拍达人| 福利社影院| 忘忧草秋观看未满十八| 国产一区二区内射最近更新| 一二三区乱码不卡手机版| 老阿姨才是最有V味的直播| caoporn超碰视频| 无码人妻少妇色欲AV一区二区 | 麻豆免费观看高清完整视频在线| AV久久久囯产果冻传媒| 午夜性色一区二区三区不卡视频| 久久精品国产免费播高清无卡| tube日本护士| 亚洲蜜桃AV色情精品成人| 暖暖视频免费观看高清完整版| 国产精品人妻无码久久久蜜桃臀| 一道本无吗d d在线播放| 秋霞电影网午夜鲁丝片无码| 国内精品久久久久影院亚洲| CHESENGAY痞帅警察GV| 亚洲精品久久久久久久蜜臀老牛| 暖暖在线观看播放视频| 国产午夜在线观看视频播放| adc我们的永久网址| 亚洲精品有码在线观看| 强奷乱码欧妇女中文字幕熟女| 红豆视频免费资源观看| 成年妇女免费播放| 中文字幕 人妻熟女| 学生妹被爆插到高潮无遮挡| 欧美大香线蕉线伊人久久| 精品国产99久久久久久麻豆| 成人网视频在线观看免费| 最近2019中文字幕免费版视频 | 亚洲一区在线视频观看| 日本成熟bbxxxxxxxx| 蓝男色gay| 精品久久电影网| 国产精品久久久久久久久久影院 | 色偷偷888欧美精品久久久|