日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动解魔方机器人1 [算法篇]

發(fā)布時間:2023/12/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动解魔方机器人1 [算法篇] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

魔方機器人其實上個學期就已經(jīng)做完了,參加了機器人大賽的創(chuàng)意組。

本來想寫一個教程,一直沒時間整理(其實是懶),這次先把我覺得比較重要的東西寫一下,主要是為了記錄一下我的制作過程和制作思路,給有同樣興趣的同學提供一些微小的幫助。

?

?

最終方案是用普通usb攝像頭拍攝魔方的六個面,依次識別每個面,并在MATLAB寫的上位機上把識別結(jié)果顯示出來,確認顏色無誤后再拍攝下一個面,識別完6個面后點擊解魔方,就會在上位機上顯示出解法步驟,點擊發(fā)送就可以從串口發(fā)送給機器人了,MATLAB的代碼簡單易讀,例程也多,所以從入門到寫完這個上位機也沒花多少時間。

機器人的單片機程序也挺簡單的,接收從串口發(fā)送過來的解法步驟,再做相應(yīng)的動作就可以了,使用的是步進電機,不需要閉環(huán)控制,在不丟步的情況下都能轉(zhuǎn)到應(yīng)該的位置。

機器人的機械結(jié)構(gòu),參考了視頻中的方法,要轉(zhuǎn)動魔方的一個面,我們直接轉(zhuǎn)動最中間的那個塊就可以轉(zhuǎn)動整個面了,想用鐵片制作一個爪子可以抓住中間塊的,三個人搞了半天才做出來幾個,使用效果也不是很好。魔方中間塊的蓋子是可以掀開的,我就直接把蓋子固定在電機轉(zhuǎn)軸上,這樣就可以用電機轉(zhuǎn)動魔方了。電機的固定,在實驗室找到幾塊木板,用膠槍搭起來了。

在制作過程中,最重要的就是找到合適的解魔方算法,在找算法的時候先找到了一個軟件叫Cube Explorer,,百度一下就可以找到下載鏈接了,我在寫自己的上位機的時候也是參考這個軟件寫的,后來又找到了直接用命令行調(diào)用算法的版本,這時候我才開始寫上位機。

Cube Explore 中文手冊:

鏈接: https://pan.baidu.com/s/1kU6Wru3 密碼: 8hvd

軟件界面:

Cube Explore是一個比較有名的軟件了,一直都在更新。這個軟件可以直接調(diào)用你電腦上可用的攝像頭,掃描完成后就可以得出結(jié)果了。還有一些網(wǎng)絡(luò)端口什么的,可以直接和這個軟件通訊,沒有研究太多,這個軟件的所有具體說明請看手冊,這個手冊本身也是魔方愛好者寫的。

因為我想鍛煉一下自己,也是為了學習一下做GUI程序,做出自己需要的功能,所以我最終還是選擇自己寫一個上位機。

最終上位機界面:

我自己寫的上位機就不拿出來了,太粗糙了。

kcube算法:

鏈接: https://pan.baidu.com/s/1eRA4oQu 密碼: wtru

閱讀文件中的README.txt或者去作者的網(wǎng)站上看一下詳細說明。

使用方法:這是一個BAT文件,調(diào)用kcube.exe 輸入?yún)?shù)是后面那一串,表示每一面的顏色分布,從左到右從上到下,先確定正面,U面是轉(zhuǎn)向自己時的位置,D面同理,修改時先用記事本打開,修改完成后保存,再點擊運行這個BAT文件就可以了。

也可以直接用DOS命令調(diào)用,方法是先進入kcube.exe文件所在文件夾,然后輸入圖片上那一串就可以了。

下面是運行結(jié)果,會一直計算直到計算出最小步數(shù)解法,一般情況下在1s內(nèi)都可以計算出22步及以下的解法,雖然理論上所有魔方都可以在20以內(nèi)還原,但是在實際計算時計算出20步的解法會花比較長的時間(打亂的次數(shù)足夠多),在打亂次數(shù)小于20次的情況下,基本可以瞬間計算出你打亂時的步驟反過來的解法。

在MATLAB中有保存窗口輸出的方法,從窗口輸出的結(jié)果中取出解法,再通過串口發(fā)送出去就可以了。或者有更好的方法可以告訴我一下。

識別魔方的部分:

MATLAB中自帶了一個應(yīng)用程序,可以點擊調(diào)試讀取攝像頭,設(shè)置讀取畫面窗口范圍,讀取格式(RGB、YUV等),會自動生成相應(yīng)的代碼,然后復(fù)制右邊窗口里的代碼就可以在程序里用了;建立GUI程序的方法百度一下有很多教程,建立以后的.m文件里會有很多代碼,前面一大段代碼都不用看也不要改,注釋里也寫了“以上代碼不需要修改”,主要是創(chuàng)建了按鈕之后,回調(diào)函數(shù)里的內(nèi)容,寫對應(yīng)的處理的代碼,比如統(tǒng)計顏色分布啊,輸出結(jié)果啊什么的。

識別完成后就可以用命令行調(diào)用上面說的kcube.exe了,MATLAB里也有運行DOS命令的方法。

最后就是通過串口發(fā)送了,加了一個藍牙模塊,但是在MATLAB中使用藍牙串口的函數(shù)有點問題。

?

更新

用來水了個項目,當時在學Java,所以只找了Java版的,其他語言的應(yīng)該也有,去GitHub上找找就有了,本來要寫上位機的,本來設(shè)計的是調(diào)用4個攝像頭一鍵掃描,寫的過程讓我很火大,現(xiàn)在想起來都心堵,仿佛能聽到我電腦風扇的轟鳴聲= ?=,eclipse經(jīng)常卡死,沒動力做下去了。

鏈接: https://pan.baidu.com/s/18NGPizgw-8zZJmfr5E0jvA 提取碼: 2w6j?

總結(jié)

以上是生活随笔為你收集整理的自动解魔方机器人1 [算法篇]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。