天天看點

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

基于3DOF機械臂的五子棋機器人

文章目錄

  • 基于3DOF機械臂的五子棋機器人
    • 1. 前言
    • 2. 機器視覺系統概述
      • 2.1 機器
      • 2.2 視覺
      • 2.3 系統
    • 3. 系統組成概述
      • 3.1 使用工具盤點
      • 3.2 流程圖
    • 4. 制作步驟建議
    • 5. 需要的知識及參考資料推薦
      • 5.1 機械設計部分
      • 5.2 下位機控制與控制原理部分
      • 5.3 視覺部分
      • 5.4 上位機部分
    • 6. 參考資料

1. 前言

  2020年因為疫情,全國大學都不開學,差不多在家裡呆了大半年吧,因為不想無所事事,是以雜七雜八的學了很多東西。到6月份的時候,因為我是畢業生,需要回學校辦理一些畢業事項和離校手續,就在學校進行封閉式隔離。說真的,在學校的日子實在是挺無聊的,啥事也不能幹,因為恰好學了學c++和opencv,是以就想做點東西,最後就搞了個軟體層面的,能人機互動的五子棋系統。大搞也就寫了一個多星期吧。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

軟體五子棋

  因為碰巧看了一些做五子棋機器人的視訊,後來就一直心理念念不忘,想搞個硬體和機械層面的五子棋機器人。于是從七月開始就一直在着手策劃了,零零散散,斷斷續續的做着,正好11月1号完工了,前前後後可能花費了大約4個月的時間吧,最後決定寫個五子棋機器人系列的文章,做個總結,也希望告訴其他人應該怎麼做這個事情,打算不但把自己成功的一些方法寫進來,也把失敗和遇到的一些問題寫進來。有時候出現的問題可能更加具有參考價值。

  這篇文章就寫個系統概述,說一說這個系統都包括了什麼,需要什麼基礎知識,以及怎麼做。後面大概會寫機械結構怎麼設計,設計的時候應該注意什麼問題;下位機怎麼開發,如何通過運動學逆解求解舵機的角度,怎麼通過軌迹規劃,使得運動更加平滑;上位機如何開發,怎麼識别棋盤和棋子;五子棋的軟體層面是什麼邏輯;如何通過序列槽通訊把系統組合起來;以及一些涉及到手工制作的東西怎麼做。

  不過吧,這裡也要說一句,我确實不是學相關專業的人士,我學和做這些個東西,算是個業餘愛好吧,要是有哪裡說得不專業了,請各位網友包涵哈!

  順便讓五子棋機器人系統亮個相。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

五子棋機器人整體圖

2. 機器視覺系統概述

  機器視覺系統[1],從字面意思看,主要包括機器、視覺和系統三個部分。

2.1 機器

  機器就是指機械的結構設計和運動控制,機械結構就比如這裡的機械臂,運動控制可以使用單片機、PLC等進行控制。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

機械臂

2.2 視覺

  視覺部分是機器的眼睛,為了能夠看機器正常工作,就必須能夠讓他看到環境的狀态,包括光源和攝像頭。隻有營造好良好的視覺系統,才能夠有良好的圖檔輸入,如果圖檔品質比較高的話,軟體層面的圖像處理就會比較順利。光源主要目的是為了照明,提供足夠的亮度,同時光源的布置必須注意光照均勻、盡量減少系統的反光,不然圖檔處理層面比較難解決。光源包括點光源、線光源、平行光源等。不過我的系統裡面沒有專門的光源。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

  攝像頭包括usb攝像頭、工業攝像頭等,主要用來把光信号轉換為計算機能夠處理的電信号。usb攝像頭價格比較低,但是會産生一些圖像畸變的問題。同時,如果在攝像頭前面增加合适的鏡片,可以對光進行一些預處理。比如有些usb鏡頭視野比較小,可以增加廣角鏡頭;光源處理不當平面有反光,可以選擇增加偏振光濾光鏡頭;比如光強太大,可以用中性灰階鏡減少光線的整體輸入。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

usb攝像頭

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

偏振光濾光片

2.3 系統

  系統主要是指軟體層面的東西。如果說視覺是機器的眼睛的話,系統就是機器的大腦。從視覺系統中擷取到的圖檔,傳送給電腦,在電腦端進行圖像的處理,将處理得到的結果傳遞給下位機,即可控制執行部件完成指定的功能。

3. 系統組成概述

3.1 使用工具盤點

  在視覺部分,我并沒有專門配備光源。攝像頭選擇了最普通的usb攝像頭,還是有一點點模糊的。攝像頭通過USB接口連接配接到電腦,構成了系統的輸入部分。如果不希望電腦連接配接很多線的話,也可了利用wifi技術,購買帶有wifi圖傳功能的攝像頭子產品,在電腦端寫一個套接字接收圖檔即可。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

自己造的攝像頭

  有了輸入部分之後,就需要有處理部分了。處理部分就是PC機。我的上位機開發環境是VS2019+opencv 3.4.9,程式設計語言使用的是c++。計算機通過usb接口,讀取攝像頭采集到的圖檔,通過opencv對圖檔進行預處理,對攝像頭讀取的圖檔進行識别,讀取得到了網格線的像素坐标,以及棋子的坐标。将棋局資訊送入五子棋裁決部分,即可解析得到落子點,将落子點傳回給下位機即可完成自己的任務。

  最後是執行部分。執行部分的機械結構是吸盤機械臂,通過大氣壓吸取棋子,完成棋子的拿取和放下的動作。控制部分使用的是arduino nano和配套的舵機控制闆。arduino通過序列槽資料線,擷取上位機來的指令,通過運動學的逆解,将坐标資訊解析為舵機的關節角,即可驅動機械臂拾取棋子。如果不希望通過資料線連接配接電腦進行資料交換,可以使用wifi或者藍牙子產品進行資料的互動。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

機械設計

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

arduino nano

  其餘還用到了一些東西就比如自己制作的棋盤,購買的棋子以及整個系統的固定底座了。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

棋盤和棋子

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

CAD畫的底闆

3.2 流程圖

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

4. 制作步驟建議

  關于制作步驟,我個人的想法是

(1)多看看别人是怎麼做的,了解整個系統架構。我是在b站看了看别人怎麼設計的,采用差不多的路子做的。

(2) 購買一個比較簡單的機械臂了解一下結構和原理,并進行結構設計,或者購買現成的,省去這一步。如果想作為參考物的話,淘寶這種木質的就很好,因為非常便宜。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

(3) 熟悉arduino的使用和舵機的控制方法

(4) 完成運動學正逆解和軌迹規劃,完成拾取一些小物件的功能。

【機器視覺系統】基于3DOF機械臂的五子棋機器人(1)基于3DOF機械臂的五子棋機器人

拾取棋子

(5) 制作或者購買棋子和棋盤,完成網格識别和棋子識别,使得電腦端能夠根據圖檔輸出棋盤的資料。

(6) 完成五子棋算法。實作在棋盤上下棋,電腦能夠自動給出對應手,并繪制在棋盤上

(7) 完成序列槽通訊部分,使得上位機和下位機之間能夠互動

(8) 固定各個部件位置,比如制作底闆。

(9) 進行最後的綜合測試。

5. 需要的知識及參考資料推薦

  下面這些參考資料是我看完了的,感覺不錯的,可以根據需要選取。

5.1 機械設計部分

  (1) Solidworks 推薦視訊“solidworks 從入門到精通” ,用來繪制整個機械臂結構的,建議全看完

https://www.bilibili.com/video/BV1nW411Y7W7

  (2)CAD二維設計 推薦視訊“CAD 2018快速入門教程”,用來繪制底闆的,因為亞克力切割淘寶需要cad的檔案。https://www.bilibili.com/video/BV13t411i7c8

  (3) CAD三維設計 推薦視訊"CAD三維模組化完全自學教程",如果有三維亞克力設計需求的,繼續看三維設計視訊。這個三維視訊比較一般吧,有更好的可以找更好的https://www.bilibili.com/video/BV12E41167UD

  (4) grabCAD網站有很多機械臂開源圖紙,也可以參考,強烈推薦這個網站https://grabcad.com/

5.2 下位機控制與控制原理部分

  (1) Arduino 推薦一本書 “Arduino程式設計指南個智能硬體程式設計技巧Simon Monk 人民郵電出版社” ,這本書裡面講了一些比較深入的設計方法,比較有趣。如果沒有時間全看一本書,稍微了解arduino使用方法、舵機控制原理、庫封裝方法也夠了。

  (2) 運動學逆解推薦一本書 《機器人學導論》作者:[美]約翰·克雷格,推薦網課 台大機器人學–林沛群https://www.bilibili.com/video/BV1v4411H7ez。不過如果你隻是使用三自由度機械臂,并且沒有深入學習的欲望,這本書可以跳過不看,不使用線性代數的方法,可以使用幾何方法進行解析。

如果想更加深入的了解機械臂怎麼精确控制,這是本非常經典的書

  (3) 如果要看機器人學導論的話,需要先修線性代數,推薦書籍 《線性代數及其應用》 作者:戴維.c.雷 ,推薦搭配網課 MIT 線性代數 一起閱讀https://www.bilibili.com/video/BV1zx411g7gq

5.3 視覺部分

  (1) opencv ,推薦書籍《opencv3程式設計入門》作者:毛星雲。 推薦兩個up的視訊搭配一起看,緻敬大神https://www.bilibili.com/video/BV1jJ411M7Bo,會飛的吳克https://space.bilibili.com/14672002?spm_id_from=333.788.b_765f7570696e666f.2

書建議全部看完,因為你會有更多解決圖像中出現問題的思路

5.4 上位機部分

  (1) c++。如果隻是想入門的話,看一下"翁恺C++語言程式程式設計全系列"足夠了https://www.bilibili.com/video/BV1j7411L7kL,需要有c語言基礎。

  除此之外,我還看完了《essential c++》和《c++ primer》。讀c++ primer可以配網課一起看 :

  • C++ Primer 初級(C++基礎) https://www.bilibili.com/video/BV1P7411k7Km、
  • C++ Primer 中級(oop)https://www.bilibili.com/video/BV1A7411k7MD、
  • C++ Primer進階(stl及算法) https://www.bilibili.com/video/BV1A7411k7mv

6. 參考資料

[1]機器視覺系統有哪些部分組成

繼續閱讀