步驟1:零件和材料
MATLAB 2018a
-MATLAB是2018年的首選版本,主要是因為它與連接到移動設備的代碼配合使用效果最佳。但是,我們的大多數代碼都可以在大多數MATLAB版本中進行解釋。
iRobot創建設備
-該設備是專用的特殊設備目的是用于編程和編碼。 (這不是實際的真空)
Raspberry Pi(帶相機)
-作為iRobot的大腦的主板。它可能很小,但是可以處理許多事情。相機是附加附件。它還使用樹莓派獲取其所有功能和命令。上圖所示的攝像機安裝在田納西大學工程基礎系創建的3D打印支架上。
步驟2:Roomba數據庫文件
您需要一個主文件,以便為Roomba使用適當的功能和命令。您可以在此文件中編寫代碼來借鑒功能,以使Roomba的操作更易于管理。
您可以從此鏈接下載文件,也可以從下面的可下載文件下載
https://ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
步驟3:連接到Roomba
首先,您必須確保將機器人連接到樹莓派通過使用微型USB插頭安裝主板。然后,您需要將計算機和機器人正確連接到同一WiFi。完成此操作后,您可以打開機器人電源并使用機器人數據庫文件中的給定命令連接到它。 (在使用機器人前后,請務必對其進行硬重置)。例如,我們使用命令“ r.roomba(19)”連接到我們的機器人,將變量r分配給我們的設備。這是指數據庫文件,該文件將我們的變量設置為可以在任何給定時刻引用的結構。
第4步:代碼
我們在下面附加了完整的代碼,但這是一個簡要概述,突出顯示了腳本中的重要元素。我們利用了所有傳感器以及攝像頭,以充分發揮機器人的潛力。我們還包含了允許我們將移動設備連接到機器人并使用其Gryoscope手動控制它的代碼。
我們從簡單的命令“ r.setDriveVelocity(.06)”開始,該命令將機器人的前進速度設置為.06 m/s。這只是為了讓機器人事先移動。
然后,我們的主腳本從一個while循環開始,該循環通過創建可以在下面的條件語句中引用和使用的結構來檢索給定機器人的數據。我們告訴機器人根據機器人用其傳感器讀取的結構數據執行某個命令。我們對其進行設置,以便機器人讀取其懸崖傳感器并遵循一條黑色路徑。
while true%while循環會一直進行到出現“ false”(在這種情況下,它會無限進行)。
data = r.getCliffSensors; data2 = r.getBumpers;%連續獲取有關懸崖傳感器值的數據,并將其分配給變量%img = r.getImage; %從已安裝的相機拍攝照片%image(img); %顯示拍攝的圖像。%red_mean = mean(mean(img(:,:,1)));%如果data.rightFront 《2000 r.turnAngle(-2);則獲取綠色的平均值。一旦右前懸崖傳感器的值降至2000 r.set%以下,Room將Roomba旋轉約.2度C.setDriveVelocity(.05); elseif data.leftFront 《2000 r.turnAngle(2);一旦左前側懸崖傳感器的值降至2000 r。%以下,Room將Roomba逆時針旋轉約0.2度。setDriveVelocity(.05); elseif 2000》 data.leftFront && 2000》 data.rightFront r.moveDistance(.1); %指示Roomba如果來自右前傳感器和左前傳感器的兩個值都低于2000%r.turnAngle(0),則繼續以大約.2 m/s的速度前進。 %告訴Roomba如果上述條件為真,則不要打開
elseif data2.right == 1 r.moveDistance(-。12); r.turnAngle(160); r.setDriveVelocity(0.05); elseif data2.left == 1 r.moveDistance(-。2); r.turnAngle(5); r.setDriveVelocity(0.05); elseif data2.front == 1 r.moveDistance(-。12); r.turnAngle(160); r.setDriveVelocity(.05);
此while循環之后,我們進入另一個while循環,該循環觸發通過攝像機獲取的數據。而且,我們在while循環中使用了if語句,該語句使用特定程序(alexnet)識別圖像,并且一旦識別出圖像,就會立即觸發移動設備的遠程控制。
anet = alexnet; %將alexnet深度學習分配給變量
while true%無限while循環img = r.getImage; img = imresize(img,[227,227]);標簽= classify(anet,img);如果label ==“紙巾” || label ==“ refrigerator” label =“ water”;結束圖片(img);標題(炭(標簽)); Drawnow;
while循環使我們可以用手機控制設備,從手機的陀螺儀中檢索該數據,然后將其插入矩陣,該矩陣將數據連續地流回計算機上的MATLAB中。我們使用一條if語句,該語句讀取矩陣的數據,并根據電話陀螺儀的某些值提供輸出以移動設備。重要的是要知道我們使用了移動設備的方向傳感器。上面提到的一乘三矩陣按電話方向傳感器的每個元素分類,即方位角,間距和側面。 if語句創建的條件表明當邊超過50或低于-50時,機器人將向前(正50)或向后(負50)移動一定距離。音調值也一樣。如果螺距值超過落在-25以下的25個值,則機器人將以1度(正25度)或負1度(負25度)的角度旋轉。
,而true
pause(.1)%暫停0.5秒,然后取每個值Controller = iphone.Orientation; %將iPhone方向值的矩陣分配給變量Azimuthal = Controller(1); %將矩陣的第一個值分配給變量Pitch = Controller(2); %將矩陣的第二個值分配給一個變量(將iPhone側放時向前和向后傾斜)Side = Controller(3); %將矩陣的第三個值分配給變量(當iPhone側向傾斜時,向左和向右傾斜)%如果Side》 130 ||,則基于電話的方向進行輸出側面《-130%如果手機正面朝下翻轉,它將停止Roomba并退出循環r.stop break elseif側面》 25 r.moveDistance(-。1)%如果iPhone是iPhone,則將Roomba向后移動約.1米向后傾斜至少25度,否則Side 《-25 r.moveDistance(.1)%如果iPhone向前傾斜至少25度,則將Roomba向前移動約0.1米,否則如果俯仰》 25 r.turnAngle(-1)%旋轉如果iPhone向左傾斜至少25度,則將Roomba逆時針旋轉1度左右;如果Pitch 《-25 r.turnAngle(1)%如果將iPhone傾斜至少25度,則將Roomba逆時針旋轉1度。
這些只是我們代碼主要部分的重點內容,如果您需要快速復制并粘貼一段內容以利于您,我們將其中包含這些內容。但是,如果需要,我們的整個代碼附在下面。
步驟5:結論
我們編寫的這段代碼是專門為機器人以及項目的總體愿景而設計的。我們的目標是利用我們所有的MATLAB編碼技能,以設計出能夠充分利用機器人大部分功能的精心設計的腳本。使用電話控制器并不像您想像的那么困難,我們希望我們的代碼可以幫助您更好地理解對iRobot進行編碼的概念。
-
matlab
+關注
關注
186文章
2983瀏覽量
231159 -
機器人
+關注
關注
211文章
28733瀏覽量
208798 -
可編程
+關注
關注
2文章
876瀏覽量
39976 -
iRobot
+關注
關注
0文章
33瀏覽量
14468
發布評論請先 登錄
相關推薦
使用 Thonny 對 XRP 機器人進行編程
![使用 Thonny 對 XRP <b class='flag-5'>機器人</b>進行<b class='flag-5'>編程</b>](https://file1.elecfans.com/web3/M00/06/96/wKgZO2eMxiaAdqCvAACOBsaye5w448.jpg)
【「具身智能機器人系統」閱讀體驗】2.具身智能機器人的基礎模塊
【「具身智能機器人系統」閱讀體驗】2.具身智能機器人大模型
歐姆龍協作機器人TM25S可使用多種方法進行編程
![歐姆龍協作<b class='flag-5'>機器人</b>TM25S可使用多種方法進行<b class='flag-5'>編程</b>](https://file1.elecfans.com/web1/M00/F5/C8/wKgZoWdEN7CAAQjVAAA3FBr5808192.png)
掃地機器人廠商iRobot將裁員16%
愛普生SG-8101CA可編程晶振應用在工業自動化機器人
![愛普生SG-8101CA<b class='flag-5'>可編程</b>晶振應用在工業自動化<b class='flag-5'>機器人</b>](https://file1.elecfans.com/web2/M00/0B/AC/wKgaomcoOBiACKpyAADxcuKCkco029.png)
評論