機(jī)器人絕對(duì)是當(dāng)前的一個(gè)熱門話題之一。從實(shí)驗(yàn)室機(jī)器人到各種創(chuàng)新玩具機(jī)器人,越來越多的技術(shù)愛好者從關(guān)注到實(shí)踐,紛紛投身機(jī)器人開發(fā)的懷抱。
工欲善其事,必先利其器。
MATLAB/Simulink算法開發(fā)平臺(tái)作為汽車、軍工等行業(yè)進(jìn)行控制算法設(shè)計(jì)的必備工具,基于Simulink模型的建模、仿真、測(cè)試驗(yàn)證以及代碼生成的設(shè)計(jì)理念(MBD)也正在替代傳統(tǒng)的手寫C代碼的開發(fā)流程,成為算法開發(fā)的主流與未來的趨勢(shì)。
這對(duì)于開發(fā)機(jī)器人意味著什么呢?
你不僅可以擺脫繁復(fù)的C代碼編程,還可以借助MATLAB強(qiáng)大的工具箱系列,通過仿真來幫助你測(cè)試算法、優(yōu)化參數(shù)等等。如果用戶購買了代碼生成工具箱,還可以提取所生成的嵌入式 C/C++算法函數(shù),集成到自己外部的工程項(xiàng)目中去,這也是商業(yè)產(chǎn)品開發(fā)的主流選擇。
MATLAB/Simulink Support Package
MATLAB/Simulink Support Package為一系列所支持的板卡提供了基本的驅(qū)動(dòng)模塊,只需要在軟件界面上進(jìn)行簡單的配置,就可以將實(shí)現(xiàn)框圖式的算法模型一鍵下載到硬件板卡上去,有助于我們快速實(shí)現(xiàn)早期創(chuàng)意,縮短原型開發(fā)周期。
通過它,我們可以很容易實(shí)現(xiàn)與這些硬件通訊,讀取數(shù)據(jù)到MATLAB環(huán)境進(jìn)行分析和處理,輕松下載Simulink這種框圖式的算法來實(shí)現(xiàn)各種有創(chuàng)意的應(yīng)用。
從模型到實(shí)現(xiàn)
使用MATLAB/Simulink Support Package相當(dāng)于鋪平了從Simulink到硬件實(shí)現(xiàn)的路,使得不擅長寫C代碼的人可以徹底擺脫代碼實(shí)現(xiàn)的困擾,借助Simulink平臺(tái)也能輕易的開發(fā)出更多有趣的應(yīng)用來。
案例介紹
硬件:Arduino MEGA 2560
Step 1:硬件連線
利用光敏電阻與固定電阻串聯(lián)形成分壓電路,并將分壓電壓讀入Arduino,然后用這個(gè)值來輸出控制發(fā)光二極管的明暗。將分壓電壓值讀入Arduino的A1引腳;將發(fā)光二極管的正極連接PWM的第二個(gè)引腳,如下圖所示。
硬件連接圖
Step 2:軟件準(zhǔn)備
通過MATLAB主界面上的Add-Ons的Get Hardware Support Packages向?qū)Вx擇所需要安裝的支持包。
安裝包下載入口
選擇 Arduino,根據(jù)向?qū)崾鞠螺d或安裝支持包。
下載安裝向?qū)?/p>
安裝完成后,打開Simulink Library Browser中的Simulink Support Package for Arduino Hardware庫,如下圖。我們可以看到為Arduino提供的一系列驅(qū)動(dòng)模塊,從模塊的示意圖以及端口的符號(hào),我們可以大概推測(cè)它的作用:從各種類型的板卡接口讀取或輸出信號(hào)。
另外從左側(cè)樹狀圖可以看到,還提供了 Ethernet Shield 與 Wifi Shield 的驅(qū)動(dòng)模塊。
Arduino支持庫
Step 3:建模
Simulink建模可以簡單描述為模塊的拖拽與連線的過程。
我們需要從A1端口(分壓線接入)讀取分壓信號(hào),所以從庫里拖入一個(gè)Analog Input模塊,并雙擊設(shè)置端口號(hào)為1,設(shè)置采樣時(shí)間為0.01 S。另外還需要輸出到 PWM的第二個(gè)引腳( LED連接處),所以拖入一個(gè)PWM模塊,并雙擊設(shè)置端口號(hào)為2。
為了簡化整個(gè)下載過程,我們這里對(duì)信號(hào)不做任何算法處理,直接將兩個(gè)模塊連接起來,如下圖。這也就意味著LED的亮度與光敏電阻狀態(tài)直接相關(guān)。
模型截圖
Step 4:編譯下載
Simulink Support Package for Arduino Hardware支持幾乎所有的Arduino型號(hào)。在點(diǎn)擊紅色方框的按鈕編譯下載之前,需要通過配置頁面來指定當(dāng)前所使用的Arduino板卡類型。
設(shè)置Arduino板卡
確保Arduino與電腦相連,點(diǎn)擊上圖模型截圖中紅色方框的編譯按鈕,框圖將會(huì)自動(dòng)生成C/C++代碼,并后臺(tái)自動(dòng)調(diào)用Arduino IDE進(jìn)行編譯下載到Arduino板卡上去。此時(shí),你用手捂住光敏電阻,便會(huì)看到LED燈亮度的變化。
Step 5:在線調(diào)試
對(duì)于Arduino MEGA 2560等型號(hào),還支持在線調(diào)試。在配置頁面,除了選擇型號(hào)外,如下圖設(shè)置為 “External model"。
設(shè)置在線調(diào)試運(yùn)行
點(diǎn)擊綠色按鈕開始仿真。
此時(shí),框圖同樣被生成代碼并編譯下載到Arduino上運(yùn)行,同時(shí)Simulink模型運(yùn)行,雙擊打開示波器Scope模塊實(shí)時(shí)看到當(dāng)前所讀取的傳感器信號(hào)。這個(gè)數(shù)據(jù)也可以保存下載,做后期傳感器標(biāo)定與分析。
信號(hào)波形
傳感器標(biāo)定,也就是經(jīng)常都需要將原始值進(jìn)行線性或非線性縮放以及平移,得到有物理含義的數(shù)值,比如自定義的光照強(qiáng)度等級(jí)。如下圖,中間接入一個(gè)簡單的查表模塊進(jìn)行線性縮放。
支持一鍵下載的硬件除了舉例的Arduino之還有很多,算法的設(shè)計(jì)也可以非常復(fù)雜。實(shí)際上,越是復(fù)雜的算法,才越能體現(xiàn)框圖式算法設(shè)計(jì)方法的優(yōu)勢(shì)。
下載安裝對(duì)應(yīng)的硬件支持包之后,幫助文檔里都會(huì)提供由淺入深的應(yīng)用案例。如下圖是一個(gè)LEGO解魔方算法的一個(gè)案例。
LEGO解魔方算法模型
打開這個(gè)模型,點(diǎn)擊編譯,就可以把這個(gè)算法完整下載到 LEGO 機(jī)器人上去了,有興趣的可以自己親自動(dòng)手試一試。
-
傳感器
+關(guān)注
關(guān)注
2563文章
52589瀏覽量
763766 -
示波器
+關(guān)注
關(guān)注
113文章
6546瀏覽量
188218 -
機(jī)器人
+關(guān)注
關(guān)注
213文章
29498瀏覽量
211573
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論