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