在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arduino機器人繪制一個MATLAB Logo

MATLAB ? 來源:MATLAB ? 2023-07-13 10:04 ? 次閱讀

引言:

隨著學習和研究的不斷深入,在仿真模擬的基礎上引入硬件設備變得越來越流行,也越來越重要,MATLAB/Simulink 在硬件支持方面應用廣泛,提供了上百個硬件支持包來滿足使用者的需求,下載安裝好之后,可以很方便地使用封裝好的函數和模塊對硬件進行控制。依靠 MATLAB 強大的代碼生成功能,可以靈活部署到 Arduino、Raspberry Pi、NVIDIA Jetson 等嵌入式設備中。MATLAB 現在支持生成 C/C++ 代碼、用于 FPGA 的 VHDL 代碼以及 NVIDIA GPU 的 CUDA 代碼等,并且所生成的代碼針對相應的算法也進行了優化,對于不具備相應手寫代碼經驗的用戶來說,極大地降低了學習成本,可以將更多的精力放在模型或算法本身的設計當中。

今天我們就從 Arduino 入手,通過一個簡單的示例介紹 MATLAB 在硬件支持方面的一些初步應用,以及這些內容可以如何應用到教學當中。Arduino 有多個不同型號的開發板,因為成本低廉簡單易學被廣泛應用。在之前的文章 “MATLAB/Simulink × Arduino Engineering Kit | 機電一體化虛擬實操課程”中我們已經了解到 Arduino Engineering Kit(AEK)在課堂教學中的應用。AEK 是 MathWorks 與 Arduino 公司合作開發的工程套件,套件除了基本的開發板還包含配套的電機傳感器等組件,通過組裝調試,用戶可以搭建成三個不同的機器人。同時套件還包含完整的學習材料和 MATLAB/Simulink 代碼模型,非常適合控制類相關領域的初學者學習以及課堂教學。

下面我們將通過對 AEK 組裝調試“墻壁繪圖機器人”過程的詳細介紹,展示 MATLAB 在硬件支持、電機控制、以及圖像處理等方向的應用,無論之前是否有相關基礎都可以快速上手。

1. 組裝機器人

8ba72ba4-209c-11ee-962d-dac502259ad0.png

AEK 套件中包含了組裝繪圖機器人所需的全部零部件,包括一款型號為 Nano 33 IoT 的 Arduino 開發板、擴展板、三個電機以及其他配件。在安裝視頻的指導下,通常 1~2 個小時就可以組裝好。

8bd753ba-209c-11ee-962d-dac502259ad0.png

機器人的工作原理是將兩個滑輪固定在豎直放置的白板頂部兩端,滑輪與兩個直流電機相連,通過控制機器人在白板上移動來進行繪圖,此外機器人還配有伺服電機來控制記號筆的起落。所有的控制和調試都可以在 MATLAB 中進行。

2. 圖像處理

我們繪制的圖形以簡筆畫為主,以下圖(1)所示的 MATLAB logo 為例,你可以在 MATLAB 中連接攝像頭進行拍照,也可以將已有的照片導入 MATLAB 中。要將照片轉化成機器人可以識別的數據格式并用于進一步的復現繪制,需要對圖片進行一系列處理。MATLAB Image Processing Toolbox 中包含了大量成熟的函數和算法可以直接調用,通過運行以下代碼可將圖(1)處理成圖(2)的形式:

img2 = rgb2gray(img);
img3 = ~imbinarize(img2,'adaptive','ForegroundPolarity','dark');
img4 = bwmorph(img3,'clean');
img5 = bwmorph(img4,'thin',inf);

此時圖片中已經只包含繪圖所需的輪廓線,但我們還需要做進一步的處理來獲取對應的坐標。使用遞歸的方法調用 bwboundaries 函數以及數據處理可以獲得圖(3)所示曲線的一系列坐標值。最后將曲線進行合理的分段、合并形成圖(4)所示的三組坐標值,分別用三種顏色表示,這也意味著要完成繪制需要畫三筆。

至此我們已經準備好繪圖需要的數據,接下來可以連接硬件對電機進行控制了。

(1)

(2)

8c6f084a-209c-11ee-962d-dac502259ad0.png

(3)

8c86f252-209c-11ee-962d-dac502259ad0.png

(4)

3. 連接硬件

8c9f32f4-209c-11ee-962d-dac502259ad0.png

MathWorks 官方提供了近 200 個硬件支持包,此外還有大量用戶自己開發上傳的支持包。點擊 MATLAB 中“附加功能”->“獲取硬件支持包”,搜索 Arduino,即可下載 “MATLAB Support Package for Arduino Hardware”。下載完成后通過 USB 將機器人與電腦連接,根據支持包提示進行驅動的安裝與配置,然后就可以在 MATLAB 中控制直流電機和伺服電機的運動了。

在 MATLAB 中運行如下命令:

a = arduino

可以看到工作區中生成了一個類型為 arduino 的對象 a,包含如下屬性:

8d2532aa-209c-11ee-962d-dac502259ad0.png

在此基礎上可進一步連接擴展板:

carrier = motorCarrier(a)

更多支持的函數可參考幫助文檔:arduino。因為電機與擴展板相連,現在我們可以通過 carrier 連接伺服電機:

s = servo(carrier,3);

設置 pos 的值,調用 writePosition 函數即可控制電機轉動角度即記號筆的位置:

pos = 0.3; %Change this value as per your requirements
writePosition(s,pos)

與伺服電機類似,你也可以通過簡單幾行命令控制直流電機的運動,并且我們可以通過開環和閉環兩種方式實現。開環的方式通過 dcmotor 函數連接電機:

mL = dcmotor(carrier,'M2');
mR = dcmotor(carrier,'M1');

設置好速度后即可通過 start 和 stop 控制電機的運轉:

start(mL)
start(mR)
pause(3) % Wait 3 seconds
stop(mL)
stop(mR)

相對應的,閉環控制的方式是通過 pidMotor 實現,你可以通過調節 PID 參數獲得更精確的控制:

pidML = pidMotor(carrier,2,'position',3,[0.18 0.0 0.01]); % Modify the PID gains [Kp Ki Kd] as per your requirements
pidMR = pidMotor(carrier,1,'position',3,[0.18 0.0 0.01]);

設置好目標角位移 theta 即可通過 writeAngularPosition 控制運轉:

writeAngularPosition(pidML,theta,'rel');
writeAngularPosition(pidMR,theta,'rel');

在下文中我們將通過閉環控制的方式進行繪圖。

以上所有控制函數列表都可以在幫助文檔中查到,與電機類似,你也可以配置自己的傳感器開發更多新的功能。

4. 對圖像數據做進一步處理

現在我們已經得到要繪制的曲線的一系列坐標,也可以對電機進行控制。但是坐標值是基于圖片生成的真實數據,要想在白板上繪制,需要將曲線坐標縮放成合適的大小,并在此基礎上將坐標的變化準確地轉換成電機轉動的角度。

我們需要測量白板的基本尺寸,并通過查閱電機最大扭矩等參數,基于基本的力學分析,將可繪制的區域找出,并進一步設定想要繪制的區域大小,結果如下圖所示。其中云圖標識了根據扭矩計算出的機器人在白板移動時的可行域,可以看到當機器人接近白板頂端時扭矩將會變大,這也符合實際情況。紅色區域為我們選定的最終的繪圖區,根據此區域的大小我們可以將圖像坐標按比例縮放為適合的范圍。

8d4bdcca-209c-11ee-962d-dac502259ad0.png

由于繪制的過程是控制機器人沿一系列坐標點移動,當點過于密集時不僅會花費更多時間,甚至可能會降低精度。我們可以設置一個最小移動距離,遍歷所有的坐標點將小于該距離的中間點移除,經過實驗這里取為 2mm。

最后即可根據機器人的尺寸、初始位置以及電機參數通過三角函數將坐標值轉化成機器人每一步移動時電機需要轉動的角位移。

5.控制機器人進行繪圖

現在我們可以控制機器人進行繪圖了,如前文介紹,繪制的圖像分為三條曲線,首先通過伺服電機將記號筆抬起,移動至第一條曲線的起點,然后將筆落下繪制,結束后再抬起筆移動至第二條曲線依次完成。

我們來通過視頻看一下最終的繪制過程:

6. 總結與展望

通過調試一個簡單的繪圖機器人,我們可以了解圖像處理、硬件連接、控制以及數學等多個領域的基礎知識,快速上手 MATLAB 在這些方向的應用。在此基礎上,你可以開發更為復雜的算法,處理實際拍攝的照片而非簡筆畫,你也可以利用兩只記號筆繪制彩色圖案,關于繪圖機器人還有更多應用和功能等著你來解鎖。除了繪圖機器人,你還可以將 AEK 組裝為移動漫游車或者自平衡小車,三種機器人形態會共享 Arduino 開發板、電機以及部分零部件,詳細信息可以在 MATLAB 或 Arduino 官網上查看。

AEK 套件因為簡單易上手、功能完整等特點,被很多老師選擇用于控制類課程的教學,學生可以作為團隊的形式完成整個項目,也可以根據實際需求側重某一個應用方向來進行拓展。

對于手邊沒有 AEK 完整套件的同學,只需要一個 Arduino 開發板,以及攝像頭、傳感器等一些外設,同樣可以參考 AEK 的代碼和模型以及 MATLAB 的幫助文檔開發自己的應用,使用方法和上文類似,大家可以充分發揮自己的想象力進行一些有趣的嘗試。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    186

    文章

    2981

    瀏覽量

    231090
  • 機器人
    +關注

    關注

    211

    文章

    28688

    瀏覽量

    208648
  • 仿真
    +關注

    關注

    50

    文章

    4127

    瀏覽量

    134059
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73885
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187950

原文標題:暑假怎么玩?來用 Arduino 機器人繪制一個 MATLAB Logo 吧!

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Arduino構建消防機器人

    在這個項目中,我們將學習如何使用Arduino構建簡單的機器人,它可以向火移動并在火周圍抽水來撲滅火。這是
    發表于 11-23 17:10 ?2038次閱讀
    如何使用<b class='flag-5'>Arduino</b>構建<b class='flag-5'>一</b><b class='flag-5'>個</b>消防<b class='flag-5'>機器人</b>

    matlab機器人

    請問一下機器人的計算工作是否用MATLAB在計算呢?能簡單說明下嗎?
    發表于 05-30 16:58

    DIY打招呼的烏龜機器人

    Arduino IDE自帶)和NewPing.h(點擊這里下載)。我首先定義了觸發引腳、相應引腳以及超聲波傳感器的最大距離;之后我又定義了布爾變量,可以用來切換機器人的自動模式。
    發表于 12-11 17:26

    如何學做一個機器人

    我想用arduino一個機器人。源碼不知道,去哪找。還有應該看那些參考書籍。各位前輩有什么好的建議嗎?
    發表于 05-15 22:32

    自律型機器人制作入門.基于Arduino

    開始,詳細介紹了簡單自律機器人的制作方法,包括輪型機器人和關節型機器人兩種類型。讀者可以購買相應的套件組裝,也可以自己動手制作。《自律型機器人制作入門:基于
    發表于 06-23 11:18

    Arduino機器人制作指南

    Arduino機器人制作指南
    發表于 06-14 17:40

    Arduino調試Rapiro機器人

    火了把。Rapiro這個名字來源于RAspberry PI RObot(樹莓派機器人),它是12自由度的機器人,其處理器為MEGA32
    發表于 08-10 20:19

    怎樣去設計基于arduino的簡單記憶機器人

    arduino的入門作品——簡單的記憶機器人作為新手小白但卻有這顆激情與熱愛的心的我,在昨天上午看到記憶機械手的視頻后實在是按耐不住自
    發表于 03-02 07:24

    流行的arduino nano避障機器人項目

    描述arduino nano避障機器人這是流行的 Arduino 機器人項目。為了避免大量的
    發表于 08-02 06:44

    構建ARLOK arduino機器人的教程

    描述ARLOK arduino機器人PCB+展示代碼https://github.com/Settorezero/Arlok
    發表于 08-08 07:14

    自制5合1 Arduino機器人

    描述5合1 Arduino機器人機器人控制板包含 ATmega328P 微控制器和
    發表于 08-23 06:23

    Arduino IDE制作劍龍機器人

    非常小的 PCB 來完成。但是,正如我之前所說,PCB 也是美學的基本組成部分。當我在腦海中想象整個機器人時,我想到它的背面應該有大的綠色 PCB,上面有獨特的風箏形板。PCB
    發表于 08-29 07:10

    使用PCB構建Arduino機器人避障項目

    描述Arduino 機器人避障 | PCB版| 更少的布線在這個項目中,我使用 PCB 構建了最小的線版本障礙物,以避免汽車或機器人。技
    發表于 09-13 06:17

    Arduino教學機器人的使用教程

    本文檔的主要內容詳細介紹的是Arduino教學機器人的使用教程
    發表于 09-27 06:53

    制作基于Arduino的邊緣避讓機器人

    電子發燒友網站提供《制作基于Arduino的邊緣避讓機器人.zip》資料免費下載
    發表于 06-26 09:41 ?0次下載
    制作<b class='flag-5'>一</b><b class='flag-5'>個</b>基于<b class='flag-5'>Arduino</b>的邊緣避讓<b class='flag-5'>機器人</b>
    主站蜘蛛池模板: 嫩草影院地址一地址二 | 久青草视频免费视频播放线路1 | 亚洲成在| h国产视频 | 免费的毛片 | 久久免费特黄毛片 | 久久精品国产乱子伦多人 | 福利视频一区二区三区 | 亚洲精品一线二线三线 | 欧美在线视频7777kkkk | 波多野结衣久久国产精品 | 欧美性猛交xxxx免费 | 狠狠色综合网站久久久久久久 | 天天做天天爱夜夜爽女人爽宅 | 美女扒开内裤无遮挡禁18 | 俺来也婷婷 | 中文字幕在线观看亚洲 | 天天干天天干天天色 | 免费在线观看一级毛片 | 亚洲 欧美 自拍 卡通 综合 | 美女啪啪91 | 午夜小视频免费观看 | 免费久久精品国产片香蕉 | 免费一级在线观看 | 天天天操天天天干 | 久久www成人看片 | 美日韩免费视频 | 亚洲日本久久久午夜精品 | 日本黄色电影在线 | 欧美黑人5o厘米全进去 | 国产激情视频一区二区三区 | 亚洲黄色三级网站 | 萝控喷水视频 | 完整日本特级毛片 | 成人精品在线观看 | 日本不卡免费高清视频 | 视频免费播放 | 中韩日欧美电影免费看 | 日本系列 1页 亚洲系列 | 色香蕉在线视频 | 日韩在线天堂免费观看 |