1.序言
半年沒寫過博客了,不過這對于我的博客來說似乎是常態?這半年來忙著做畢業論文,沒弄什么自己的研究,而實驗室的東西實在是不好泄露出來,所以我也是“雖欲言無可進者”了。
上星期趁著論文提交的空擋,把一直拖著的一個小項目開了個頭,其實是朋友有個外快小項目要做,具體內容不說,項目的基礎是XY平臺的視覺控制,因此在前期研究中主要要做平臺選型、控制購買、接線研究、模擬實驗等工作,這里記述下來以防忘記,順便也給其他人做個參考。
本次控制通過相機采集圖像,以此為反饋信號做控制,使平臺上的某個點位移到指定的位置。然后本文寫得更像隨筆形式,內容可能有點雜亂,見諒了。
2.平臺選型與硬件接線
2.1 XY平臺選型
項目中需要做到精度較高的位移控制,且承重要求3kg以上,因此XY平臺選型時主要考慮步進電機的XY平臺,淘寶上一搜就是一大片。
從中挑選了一臺二手日本平臺,由于價錢便宜店家不提供技術支持,接線什么的得自己搞。
2.2 步進電機驅動
步進電機驅動不需要購買,我手上有一塊前輩留下來的,正好可以用,同樣沒有任何資料。從其電路板上發現驅動芯片是TA8435H,于是查到其引腳功能表。
根據這個功能表可以確定驅動上幾個引腳的功能,并用一個四相步進電機測試,發現驅動板功能完好。
在電機供電上,考慮到要驅動兩臺步進電機,并獲得足夠的驅動力,因此我試用了一個12V 4.5A的開關電源。
2.3采集卡
為了使計算機能夠控制電機驅動,這里還需要一個電腦IO卡,我用的依然是以前留下來mc100 USB Card,方便好用還便宜,淘寶上一搜一大把。這個東西IO口波紋比較大,而且沒做好隔離容易燒,不過既然是實驗用,那就將就一下了,實際產品中是肯定不能用這個的。
2.4平臺接線
平臺到貨后檢查發現電機型號查不到,只知道是三洋1.5A的步進電機,沒辦法只好電機的線給撥了,用物理方法來測極性。撥開線后發現步進電機是8相的,于是要測出四組通路,通過萬用表測通,發現相通的幾根線是這樣的:
紅-綠
藍-白
黃-棕
黑-灰
為了測出四組線的相性,需要進行多次接線測試,并匯總結果得到下表(只保留了幾組數據,實際中我為了完全確認相性,各種接線組合都測了):
根據這個表,可以確定最終的接線方法,此處使用的是并聯接法,連線如下表。
8相步進電機還有另外一種串聯接法如下圖:
2.5硬件組裝結果
最后把兩個電機都接到步進電機驅動上,USB采集卡插好,XY平臺鎖死,相機固定。
得到了個凌亂的實驗現場,圖中上面那坨黑的是工業相機。
3.平臺控制算法
控制這一塊我已經丟了差不多三年了,現在再撿起來發現PID都不會寫了,再加上步進電機的控制我也沒做過,總之是不好弄啊。
首先極力回憶一下本科時微機原理課程設計里做步進電機控制那題是什么做控制的,想起有兩種控制方式,一是控制步進電機的步長,二是控制其步數。那么這里既然要控制的是位移量,那么控制步數應該是比較好的選擇。但對步進電機來說,每秒走1000步幾乎已經是極限了,再快的話電機扭矩會不夠,而1000步轉換到XY平臺上實際也就位移了1cm,所以當位移量較大時,控制的滯后環節可能會較大。但走幾步就再控制一下也不現實,畢竟相機的采樣時間擺在那,幾步就采樣控制一下那么控制花費的時間可能會較長……
想來想去也沒想到一個最佳的控制方案,總之先用PID控制試試看。
于是搜索增量式PID公式,花十幾分鐘把C++版本的PID控制器寫出來:
然后設計控制周期為100ms,死區5個像素,胡亂設置一下PID參數,只做x方向的平臺控制。結果…好嘛,不管怎么樣調試系統震蕩都很嚴重,大概是這樣子的:
最后我實在是懶得整定PID參數了,于是重新設計控制算法。
當誤差大于50像素,用PD控制快速移動平臺。
當誤差在50像素以內時,根據事先做好的標定[注1],查表獲得位移的步長進行一次移動。
移動完成后再次檢查還有多少誤差,以1的步長慢慢消除該誤差。
[注1]這里目標點的位置是固定的,因此可以實現進行多次標定,確定圖像上各個坐標上的點要位移目標點處需要走多少步,但考慮到相機畸變這個標定是無法完全準確的,因此為盡量減少畸變造成的誤差,位移的目標點應放在相機視野中心,且只做該點半徑50像素內的點的位移步數標定。
根據上述控制流程,能夠較為快速地完成控制,控制精度可在0.5像素以內,具體可以達到多少由于現在相機的安裝位置角度都沒定下來,所以我暫時也沒仔細測了。
4.程序結構設計
XY平臺涉及到X方向與Y方向的控制,兩個控制是相互獨立的,因此我采用了兩個線程對它們分別控制,下面是隨手亂畫的結構圖:
程序運行后開辟三個線程,其中兩個分別負責驅動兩臺電機,主線程則負責計算控制量,該控制量也就是另外兩個控制線程的步數。
在架構上尚未做設計,但為了提高程序的可拓展性(畢竟實用化后相機、采集卡都得換),項目內的幾個操作類都通過基類設計好了統一的接口,以方便今后更換硬件。
5.圖像處理算法
這里圖像處理算法偷懶了,采用的是《相機位姿估計2:[應用]實時位姿估計與三維重建相機姿態》中跟蹤紅點的方法,原理是差不多的,只是這里改成了追蹤黑點而已,就不詳細寫了。
實際項目里圖像算法當然不會那么簡單,不過這里目前還是一片空白,是下一步的工作重點了。
6.實驗截圖
最后隨便給兩張程序運行時的截圖,控制臺坐標是當前黑點坐標,控制目標是[500,500],u1是x平臺的控制量,u2是y平臺的控制量。
運行過程中
兩秒后完成位移,黑點被移動到設定位置。
完成控制
-
步進電機
+關注
關注
151文章
3115瀏覽量
147643 -
反饋信號
+關注
關注
0文章
31瀏覽量
8248
發布評論請先 登錄
相關推薦
評論