機器人絕對是當前的一個熱門話題之一。從工業(yè)機器人到掃地機器人,從實驗室機器人到各種創(chuàng)新玩具機器人,機器人逐漸走進了大眾的視野,進入了普通人的生活。不管是技術(shù)發(fā)燒友還是普通消費者,都越來越多的把目光投向了機器人。隨著網(wǎng)絡(luò)眾籌的興起,技術(shù)創(chuàng)業(yè)的經(jīng)濟門檻降低,一個又一個明星眾籌項目也激發(fā)了越來越多的技術(shù)愛好者從關(guān)注到實踐,紛紛投身機器人開發(fā)的懷抱。每個人都期待著自己開發(fā)的創(chuàng)新原型,能稱為下一個被投資人或公眾所矚目的焦點。 古人云,“工欲善其事,必先利其器?!?現(xiàn)在讓我們來看看如何使用MATLAB 這個“利器” 來幫助我們快速實現(xiàn)我們的創(chuàng)意。 MATLAB 平臺 MATLAB 是全球知名的數(shù)據(jù)分析和處理軟件,這個紅色的二次曲面 LOGO 幾乎出現(xiàn)在每一所大學(xué)的教科書里。 ![]() 圖1 MATLAB LOGO 但事實上,它不再僅僅是那個我們在學(xué)生時代所認識的僅僅用于數(shù)據(jù)處理與畫圖的“超級計算器”,它在行業(yè)內(nèi)的應(yīng)用遠比教育領(lǐng)域更為廣泛和深入。從下圖的工具箱結(jié)構(gòu)可以窺知一二??梢钥吹接覀?cè)的深藍色模塊,它也為各個專門的應(yīng)用領(lǐng)域開發(fā)了一系列工具箱。 ![]() 圖2 MATLAB 工具箱 MATLAB/Simulink 算法開發(fā)平臺也幾乎是汽車、軍工等行業(yè)進行控制算法設(shè)計的必備工具?;?Simulink模型的建模、仿真、測試驗證以及代碼生成,這種基于模型的設(shè)計理念 (MBD)也正在替代傳統(tǒng)的手寫 C 代碼的開發(fā)流程,成為算法開發(fā)的主流與未來的趨勢。 ![]() 圖3 基于模型的設(shè)計 那么,這對于開發(fā)機器人意味著什么呢?這意味著,你不僅可以擺脫繁復(fù)的 C 代碼編程,還可以借助 MATLAB 強大的工具箱系列,通過仿真來幫助你測試算法、優(yōu)化參數(shù)等等。如果用戶購買了代碼生成工具箱,還可以提取所生成的嵌入式 C/C++ 算法函數(shù),集成到自己外部的工程項目中去,如圖4左側(cè)箭頭,這也是商業(yè)產(chǎn)品開發(fā)的主流選擇。 MATLAB/Simulink Support Package 我這里主要想介紹一下免費硬件支持包: MATLAB/Simulink Support Package。它相當于是 MATLAB 與各種低成本硬件之間的橋梁。 下載安裝官方免費的 MATLAB/Simulink Support package,簡單設(shè)置好對應(yīng)的板卡后,Simulink 框圖或者 MATLAB腳本便可以一鍵編譯下載到硬件運行了,如下圖右側(cè)箭頭。這對于快速實現(xiàn)早期創(chuàng)意非常有用,尤其是對小的開發(fā)團隊來說,可以將注意力更多的放到算法設(shè)計與開發(fā)上,而不是基本的 C 代碼實現(xiàn)。 ![]() 圖4 從模型到實現(xiàn) MATLAB/Simulink Support Package為一系列所支持的板卡提供了基本的驅(qū)動模塊,只需要在軟件界面上進行簡單的配置,就可以將實現(xiàn)框圖式的算法模型一鍵下載到硬件板卡上去,有助于我們快速實現(xiàn)早期創(chuàng)意,縮短原型開發(fā)周期。 通過它,我們可以很容易實現(xiàn)與這些硬件通訊,讀取數(shù)據(jù)到 MATLAB 環(huán)境進行分析和處理,輕松下載 Simulink這種框圖式的算法來實現(xiàn)各種有創(chuàng)意的應(yīng)用。 ![]() 圖5 MATLAB\Simulink Support Package 案例介紹 下面,我們使用 Arduino MEGA 2560來演示如何實現(xiàn)將模型一鍵下載到硬件。這是一個非常簡單的例子:使用光敏電阻來控制LED燈的明暗。 硬件連線 簡單的說就是利用光敏電阻與固定電阻串聯(lián)形成分壓電路,并將分壓電壓讀入Arduino,然后用這個值來輸出控制發(fā)光二極管的明暗。將分壓電壓值讀入Arduino的A1 引腳;將發(fā)光二極管的正極連接PWM的第二個引腳,如下圖所示。其它的基本連線不再繁述。 ![]() 圖6 硬件連線圖
軟件準備 通過 MATLAB 主界面上的 Add-Ons 的 Get Hardware Support Packages向?qū)?,選擇所需要安裝的支持包。 ![]() 圖7 安裝包下載入口 選擇 Arduino,根據(jù)向?qū)崾鞠螺d或安裝支持包。 ![]() 圖8 下載安裝向?qū)?/p> 安裝完成后,打開Simulink Library Browser 中的Simulink Support Package for Arduino Hardware庫,如下圖。我們可以看到為 Arduino提供的一系列驅(qū)動模塊,從模塊的示意圖以及端口的符號,我們可以大概推測它的作用:從各種類型的板卡接口讀取或輸出信號。 另外從左側(cè)樹狀圖可以看到,還提供了 Ethernet Shield 與 Wifi Shield 的驅(qū)動模塊。 ![]() 圖9 Arduino 支持庫 建模 Simulink 建模簡單可以描述為模塊的拖拽與連線的過程。 我們需要從A1端口(分壓線接入)讀取分壓信號,所以從庫里拖入一個 Analog Input模塊,并雙擊設(shè)置端口號為1,設(shè)置采樣時間為 0.01 S。另外還需要輸出到 PWM的第二個引腳( LED連接處),所以拖入一個 PWM 模塊,并雙擊設(shè)置端口號為2。 為了簡化整個下載過程,我們這里對信號不做任何算法處理,直接將兩個模塊連接起來,如下圖。這也就意味著 LED 的亮度與光敏電阻狀態(tài)直接相關(guān)。 ![]() 圖10 模型截圖 編譯下載 Simulink Support Package for Arduino Hardware支持幾乎所有的 Arduino 型號。在點擊紅色方框的按鈕編譯下載之前,需要通過配置頁面來指定當前所使用的 Arduino 板卡類型,如下圖。 ![]() 圖11 設(shè)置Arduino板卡 確保 Arduino 與電腦相連,點擊上圖模型截圖中紅色方框的編譯按鈕,框圖將會自動生成C/C++ 代碼,并后臺自動調(diào)用 Arduino IDE 進行編譯下載到 Arduino板卡上去。 此時,你用手捂住光敏電阻,便會看到 LED 燈亮度的變化。 在線調(diào)試 對于 Arduino MEGA 2560等型號,還支持在線調(diào)試。在配置頁面,除了選擇型號外,如下圖設(shè)置為 ‘External mode’。 ![]() 圖12 設(shè)置在線調(diào)試運行 點擊圖中的綠色仿真按鈕。 ![]() 圖13 在線調(diào)試 此時,框圖同樣被生成代碼并編譯下載到 Arduino 上運行,同時 Simulink 模型運行,雙擊打開示波器 Scope 模塊實時看到當前所讀取的傳感器信號。這個數(shù)據(jù)也可以保存下載,做后期傳感器標定與分析。 ![]() 圖14 信號波形 傳感器標定,也就是經(jīng)常都需要將原始值進行線性或非線性縮放以及平移,得到有物理含義的數(shù)值,比如自定義的光照強度等級。如下圖,中間接入一個簡單的查表模塊進行線性縮放。 ![]() 后續(xù) 支持一鍵下載的硬件除了舉例的 Arduino之還有很多,算法的設(shè)計也可以非常復(fù)雜。實際上,越是復(fù)雜的算法,才越能體現(xiàn)框圖式算法設(shè)計方法的優(yōu)勢。 下載安裝對應(yīng)的硬件支持包之后,幫助文檔里都會提供由淺入深的應(yīng)用案例。如下圖是一個LEGO解魔方算法的一個案例。 ![]() 圖15 LEGO解魔方算法模型 打開這個模型,點擊編譯,就可以把這個算法完整下載到 LEGO 機器人上去了,有興趣的可以自己親自動手試一試。 ![]() 圖16 LEGO解魔方 結(jié)語 使用MATLAB/Simulink Support Package 相當于鋪平了從Simulink 到硬件實現(xiàn)的路,使得不擅長寫 C 代碼的人可以徹底擺脫代碼實現(xiàn)的困擾,借助 Simulink 平臺也能輕易的開發(fā)出更多有趣的應(yīng)用來。 (本文來自互聯(lián)網(wǎng),不代表微看點的觀點和立場) |
|