【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)
基于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,所以就想做點東西,最后就搞了個軟件層面的,能人機交互的五子棋系統。大搞也就寫了一個多星期吧。
??因為碰巧看了一些做五子棋機器人的視頻,后來就一直心理念念不忘,想搞個硬件和機械層面的五子棋機器人。于是從七月開始就一直在著手策劃了,零零散散,斷斷續續的做著,正好11月1號完工了,前前后后可能花費了大約4個月的時間吧,最后決定寫個五子棋機器人系列的文章,做個總結,也希望告訴其他人應該怎么做這個事情,打算不但把自己成功的一些方法寫進來,也把失敗和遇到的一些問題寫進來。有時候出現的問題可能更加具有參考價值。
??這篇文章就寫個系統概述,說一說這個系統都包括了什么,需要什么基礎知識,以及怎么做。后面大概會寫機械結構怎么設計,設計的時候應該注意什么問題;下位機怎么開發,如何通過運動學逆解求解舵機的角度,怎么通過軌跡規劃,使得運動更加平滑;上位機如何開發,怎么識別棋盤和棋子;五子棋的軟件層面是什么邏輯;如何通過串口通訊把系統組合起來;以及一些涉及到手工制作的東西怎么做。
??不過吧,這里也要說一句,我確實不是學相關專業的人士,我學和做這些個東西,算是個業余愛好吧,要是有哪里說得不專業了,請各位網友包涵哈!
??順便讓五子棋機器人系統亮個相。
2. 機器視覺系統概述
??機器視覺系統[1],從字面意思看,主要包括機器、視覺和系統三個部分。
2.1 機器
??機器就是指機械的結構設計和運動控制,機械結構就比如這里的機械臂,運動控制可以使用單片機、PLC等進行控制。
2.2 視覺
??視覺部分是機器的眼睛,為了能夠看機器正常工作,就必須能夠讓他看到環境的狀態,包括光源和攝像頭。只有營造好良好的視覺系統,才能夠有良好的圖片輸入,如果圖片質量比較高的話,軟件層面的圖像處理就會比較順利。光源主要目的是為了照明,提供足夠的亮度,同時光源的布置必須注意光照均勻、盡量減少系統的反光,不然圖片處理層面比較難解決。光源包括點光源、線光源、平行光源等。不過我的系統里面沒有專門的光源。
??攝像頭包括usb攝像頭、工業攝像頭等,主要用來把光信號轉換為計算機能夠處理的電信號。usb攝像頭價格比較低,但是會產生一些圖像畸變的問題。同時,如果在攝像頭前面增加合適的鏡片,可以對光進行一些預處理。比如有些usb鏡頭視野比較小,可以增加廣角鏡頭;光源處理不當平面有反光,可以選擇增加偏振光濾光鏡頭;比如光強太大,可以用中性灰度鏡減少光線的整體輸入。
usb攝像頭 偏振光濾光片2.3 系統
??系統主要是指軟件層面的東西。如果說視覺是機器的眼睛的話,系統就是機器的大腦。從視覺系統中獲取到的圖片,傳送給電腦,在電腦端進行圖像的處理,將處理得到的結果傳遞給下位機,即可控制執行部件完成指定的功能。
3. 系統組成概述
3.1 使用工具盤點
??在視覺部分,我并沒有專門配備光源。攝像頭選擇了最普通的usb攝像頭,還是有一點點模糊的。攝像頭通過USB接口連接到電腦,構成了系統的輸入部分。如果不希望電腦連接很多線的話,也可了利用wifi技術,購買帶有wifi圖傳功能的攝像頭模塊,在電腦端寫一個套接字接收圖片即可。
??有了輸入部分之后,就需要有處理部分了。處理部分就是PC機。我的上位機開發環境是VS2019+opencv 3.4.9,編程語言使用的是c++。計算機通過usb接口,讀取攝像頭采集到的圖片,通過opencv對圖片進行預處理,對攝像頭讀取的圖片進行識別,讀取得到了網格線的像素坐標,以及棋子的坐標。將棋局信息送入五子棋裁決部分,即可解析得到落子點,將落子點返回給下位機即可完成自己的任務。
??最后是執行部分。執行部分的機械結構是吸盤機械臂,通過大氣壓吸取棋子,完成棋子的拿取和放下的動作。控制部分使用的是arduino nano和配套的舵機控制板。arduino通過串口數據線,獲取上位機來的指令,通過運動學的逆解,將坐標信息解析為舵機的關節角,即可驅動機械臂拾取棋子。如果不希望通過數據線連接電腦進行數據交換,可以使用wifi或者藍牙模塊進行數據的交互。
??其余還用到了一些東西就比如自己制作的棋盤,購買的棋子以及整個系統的固定底座了。
棋盤和棋子 CAD畫的底板3.2 流程圖
4. 制作步驟建議
??關于制作步驟,我個人的想法是
(1)多看看別人是怎么做的,了解整個系統架構。我是在b站看了看別人怎么設計的,采用差不多的路子做的。
(2) 購買一個比較簡單的機械臂了解一下結構和原理,并進行結構設計,或者購買現成的,省去這一步。如果想作為參考物的話,淘寶這種木質的就很好,因為非常便宜。
(3) 熟悉arduino的使用和舵機的控制方法
(4) 完成運動學正逆解和軌跡規劃,完成拾取一些小物件的功能。
(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]機器視覺系統有哪些部分組成
總結
以上是生活随笔為你收集整理的【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索计算机无法输入法,电脑输入法不能切换
- 下一篇: html字体自动变大变小,浏览器上的字体