chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino探索漫游車3—編程

tr4578 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 16:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

pYYBAGPzFBqAXnsNAAHi-t7um74401.jpg

歡迎回到ArduRover系列!在第一部分第二部分中,我們已經(jīng)構(gòu)建了一個Arduino六輪驅(qū)動漫游車。在最后一部分內(nèi)容中,我們將致力于編寫一個用于機(jī)器人控制的程序。在第二部分中,我們已經(jīng)介紹了一些代碼,但是那些代碼僅僅是用于控制電機(jī)運行的。這一次,我們希望能夠得到所有傳感器的數(shù)據(jù),并且能夠通過使用Android手機(jī)來實現(xiàn)實際遠(yuǎn)程操控!

硬件

? 通過第一部分和 第二部分制作的ArduRover

軟件

? Arduino IDE 1.8.1

? Android Studio 3.0

? Arduino 庫:

? LoRaLib – GitHub

? RohmMultiSensor – GitHub

? JPEGDecoder – GitHub

? Arduino 設(shè)計圖 – GitHub

? Android 應(yīng)用程序 – GitHub

對接線的修正

在本系列的上一部分里,除了部件的制作,我還介紹了邏輯電路(所有傳感器和模塊)的接線。那時,我只測試了電機(jī),因為VNH5019驅(qū)動器是其中唯一我沒使用過的子系統(tǒng),當(dāng)然,我使用的代碼也只能用來控制它們。由于電機(jī)運行得很好,我就以為直接把其他所有函數(shù)(例如控制傳感器、相機(jī)和伺服器的代碼)添加上去是沒有問題的。所以您可以想象出當(dāng)我看到所有電機(jī)在添加了那些函數(shù)后馬上就停止運行時,我有多么驚訝。

當(dāng)類似這種問題發(fā)生的時候,我們必須返回上一步,回顧一下一切運行正常時的情況。我更改了代碼,這很簡單,只需要上傳一個不同的Arduino設(shè)計圖就可以了,然后查看一下問題是出在硬件還是軟件上。果然,電機(jī)在之前的代碼下恢復(fù)了運行。通過對新代碼進(jìn)行謹(jǐn)慎的添加和刪除,我發(fā)現(xiàn)Servo庫在某種程度上導(dǎo)致了該錯誤的發(fā)生。在調(diào)用servo.attach()函數(shù)后,電機(jī)就會停止運轉(zhuǎn)。這似乎很奇怪,直到我意識到了信號傳輸?shù)膯栴}:使用Servo庫的時候,電機(jī)控制部分好像完全沒有信號輸出。

VNH5019允許您通過使用脈沖寬度調(diào)制(PWM)來控制電機(jī)轉(zhuǎn)速。伺服器也使用PWM來將小型電機(jī)設(shè)定在某一位置并保持不變。事實證明,在Arduino Mega上,PWM控制具有一些沒有在官方文件中提及的特點。起初,我的伺服器PWM輸入端連接到Arduino Mega的引腳8和9上,電機(jī)PWM連接到引腳44和46。根據(jù)Arduino官方文件,這些引腳都是支持PWM的。但是,這些文件沒有提及的是,當(dāng)您通過引腳2和13使用Servo庫時,會失去引腳44和46的PWM功能支持。這是因為Servo庫使用了一個ATmega2560定時器,該定時器同樣用于控制引腳44到46上的PWM,那么自然而然,定時器一次只能執(zhí)行一個任務(wù)。

考慮到這一點,我修正了接線原理圖。如下圖所示,用于電機(jī)的PWM移至引腳5和6。經(jīng)過這次更改,伺服器和電機(jī)就可以同時工作了。

poYBAGPzFB2AFx9IAAKwGFHLNHg474.jpg

圖1:修正后的邏輯端原理圖

Arduino 程序結(jié)構(gòu)

在編寫控制如此復(fù)雜的系統(tǒng)的程序時,最好把所有需要考慮的因素都寫下來。對于ArduRover,需要考慮的有以下內(nèi)容:

? 電機(jī)控制 – 這可能是最重要的部分,因為顯然我們需要控制機(jī)器人的行進(jìn)方向。

? 傳感器控制 – 我們需要從連接在機(jī)器人上的所有傳感器中獲取一些數(shù)據(jù)。

? 相機(jī)控制 – 這部分包括拍攝、傳輸圖片,以及通過伺服器支架來轉(zhuǎn)動相機(jī)。

? 數(shù)據(jù)記錄 – 我們有一個板載SD卡,可以通過它來記錄從傳感器和GPS獲取的信息。

一個潛在的問題是回傳圖像數(shù)據(jù)。正如我們在Arduino教程JPEG解碼中所講的那樣,傳輸圖像數(shù)據(jù)會花費很長時間。如果機(jī)器人突然決定一次把整個圖像都傳送過去,那么它將會在相當(dāng)長的一段時間內(nèi)處于無響應(yīng)狀態(tài)。因此,在每次運行主循環(huán)時,我們都需要決定是否傳輸圖像中的某些部分,或者是否對上次循環(huán)執(zhí)行期間傳達(dá)回來的最終指令作出響應(yīng)。

以上述要求為要領(lǐng),我總結(jié)出了以下程序邏輯框圖。

pYYBAGPzFB6AWAyYAAB_9Glk8SI487.jpg

圖2:Arduino程序邏輯框圖

在主循環(huán)函數(shù)的每次迭代過程中,Arduino會首先更新所有當(dāng)前的傳感器數(shù)據(jù),并把它們記錄到SD卡中,包括ROHM傳感器、GPS以及流經(jīng)每個電機(jī)驅(qū)動器電流。然后,會檢查LoRa模塊是否接收到了新的程序包。如果接收到了,那么程序包中的指令將會被執(zhí)行,作出的響應(yīng)將會再次通過LoRa模塊進(jìn)行傳輸。如果沒有接收到新的指令,程序會檢查是否有圖片需要被傳輸,如果有的話,就會傳輸一個圖片數(shù)據(jù)包,如果沒有需要傳輸?shù)膱D片,這一步會被跳過。最后,程序回到循環(huán)的開始,然后重復(fù)該過程。

我們必須意識到,使用這個邏輯結(jié)構(gòu),處理新的指令會比JPEG傳輸擁有更高的優(yōu)先級。這樣的話,我們就可以巧妙地避免上文中提到的機(jī)器人無響應(yīng)的問題。指令與響應(yīng)之間的最長延遲時間只會是傳輸一個圖像數(shù)據(jù)包的時間。

既然已經(jīng)有了程序邏輯結(jié)構(gòu)的總體思路,那么我們需要關(guān)注另一個關(guān)鍵的步驟了:這些指令將會是什么樣子?

指令和指令包結(jié)構(gòu)

既然我們使用LoRa來傳輸和接收數(shù)據(jù),就必須記住該技術(shù)的設(shè)計用途:小容量數(shù)據(jù)的遠(yuǎn)距離傳輸。這意味著我們要盡量精簡我們的指令,因為每一個字節(jié)都會被計數(shù)。我們可以只發(fā)送一些字符串,例如“電機(jī)左側(cè)50”來將左側(cè)的電機(jī)設(shè)置為50%的轉(zhuǎn)速,但是這其實非常浪費空間。這個字符串占用了14個字節(jié)的數(shù)據(jù)容量,但是僅僅傳輸了三個信息塊:該指令的子系統(tǒng)目標(biāo)(“電機(jī)”)中哪些電機(jī)會被影響(“左側(cè)”)以及它們將會被設(shè)置的轉(zhuǎn)速所占最大轉(zhuǎn)速的百分比(“50”)??梢钥隙ǖ卣f,我們可以做得更好。這種類型指令的優(yōu)點是非常易于閱讀,但其實,再重申一下,只要系統(tǒng)運行正常,在指令執(zhí)行這一塊是不需要人為干預(yù)的。

所以,我決定不使用那些長的字符串,而是開發(fā)一種簡單的指令系統(tǒng),在每個指令包中使用的指令最長僅為4個字節(jié)。指令包中的第一個字節(jié)叫做首地址,將會被進(jìn)一步分為兩半:高四位包含來自控制系統(tǒng)的指令分類,低四位用來作為機(jī)器人的響應(yīng)。0表示成功,非零值是具有已知含義的錯誤代碼。

第1個字節(jié) 指令描述
0x00 停止所有電機(jī)
0x10 設(shè)置所有電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向
0x20 設(shè)置所有左側(cè)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向
0x30 設(shè)置所有右側(cè)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向
0x40 設(shè)置相機(jī)傾斜角度
0x50 設(shè)置相機(jī)平移距離
0x60 使用相機(jī)拍攝圖片
0x70 開始JPEG 傳輸
0x80 強(qiáng)制啟動新傳感器測量
0x90 獲取最新傳感器數(shù)據(jù)
0xA0 重新發(fā)送最終指令包
0xB0 設(shè)置LoRa調(diào)制調(diào)節(jié)器配置
0xC0 獲取當(dāng)前所有存在的錯誤信息
0xD0 未被使用
0xE0 未被使用
0xF0 未被使用

指令包的下一部分內(nèi)容是有效負(fù)載 – 這也是在有關(guān)頭文件中指令的所有附加信息存儲的地方。這部分比首地址更簡單一些,因為它的內(nèi)容取決于指令類型:有些指令不需要任何附加信息,比如說0x00(停止兩側(cè)電機(jī))。所以這些指令的有效負(fù)載為空。然而,一些命令要求額外數(shù)據(jù)不能超過三個字節(jié),比如指令0xD0(LoRa配置),要求每個主要設(shè)置,如帶寬、擴(kuò)頻因子、以及編碼率(有關(guān)LoRa細(xì)節(jié)請參考LoRaLib教程 或者 GitHub wiki)只占一個字節(jié)。下表描述了所有指令包的結(jié)構(gòu)。

第1個字節(jié) 第2個字節(jié) 第3個字節(jié) 第4個字節(jié)
0x00
0x10 左側(cè)PWM控制轉(zhuǎn)速 右側(cè)PWM控制轉(zhuǎn)速 轉(zhuǎn)向
0x20 左側(cè)PWM控制轉(zhuǎn)速 轉(zhuǎn)向
0x30 右側(cè)PWM控制轉(zhuǎn)速 轉(zhuǎn)向
0x40 傾斜角度
0x50 平移距離
0x60
0x70 圖片編碼
0x80 傳感器 ID(s)
0x90 傳感器 ID(s)
0xA0
0xB0 帶寬 擴(kuò)頻因子 編碼率
0xC0
0xD0
0xE0
0xF0

當(dāng)然,這些只是由控制系統(tǒng)發(fā)送然后機(jī)器人來接收的指令包。我們也希望機(jī)器人能夠作出響應(yīng)。對于某些指令,這種響應(yīng)可能非常簡單,僅僅是為了讓控制系統(tǒng)知道指令是否被成功執(zhí)行。如果您仔細(xì)看上文中的表格,會注意到所有的指令都只用了第一個指令字節(jié)的高四位,這樣剩下的低四位可以用于響應(yīng)。這種方法有兩個顯著的優(yōu)勢:首先,始終可以追蹤到每個響應(yīng)所屬的指令,因為指令位總是作為響應(yīng)值的一部分返回;其次,對于每一個指令,都有足夠的空間用于16種不同的響應(yīng)。

讓我們用一個例子來進(jìn)行說明。假設(shè)我們想用相機(jī)拍攝一張圖片,那么我們會發(fā)送指令0x60。那么機(jī)器人有16種不同的方式來響應(yīng)。如果響應(yīng)是0x60,這意味指令已經(jīng)被成功執(zhí)行。所有其他類型的響應(yīng),0x61到0x6F,都意味著出現(xiàn)了錯誤。這樣我們不僅知道指令執(zhí)行失敗了,還會知道為什么失敗并且進(jìn)行修正。當(dāng)然,這些響應(yīng)不一定總是只有一個字節(jié)的長度,有些指令會要求機(jī)器發(fā)回一些附加信息,比如傳感器數(shù)據(jù)。下表顯示的是所有針對不同指令的響應(yīng)包。

指令 第1個字節(jié) 第2個字節(jié) 第3個字節(jié) 第4~240字節(jié)
0x00 0x00
0x10 0x10
0x20 0x20
0x30 0x30
0x40 0x40
0x50 0x50
0x60 0x6_
0x70 0x7_ 圖像數(shù)據(jù) 圖像數(shù)據(jù) 圖像數(shù)據(jù)
0x80 0x8_ 發(fā)生錯誤的傳感器 傳感器數(shù)據(jù) 傳感器數(shù)據(jù)
0x90 0x9_ 發(fā)生錯誤的傳感器 傳感器數(shù)據(jù) 傳感器數(shù)據(jù)
0xA0 0xA0
0xB0 0xB0
0xC0 0xC_ 錯誤標(biāo)志 錯誤標(biāo)志
0xD0 0xD0
0xE0 0xE0
0xF0 0xF0

您可以注意到某些指令(主要是關(guān)于電機(jī)和伺服器的那些指令)只能返回0(成功)。這是因為當(dāng)前版本中的板載電子設(shè)備無法判斷這些指令是否被成功執(zhí)行。為了達(dá)到驗證的目的,我們需要增加新的設(shè)備來檢查電機(jī)是否在運轉(zhuǎn),或者伺服器是否在正確的位置。這應(yīng)該不太困難,讓我們暫時忽略它,來看看那些可能會有報錯響應(yīng)的指令:

? 0x60 (用相機(jī)拍攝照片)
這項指令有多種報錯響應(yīng)。如果沒有相機(jī),那么機(jī)器人會返回0x61。如果有相機(jī)并且能夠正常工作,但是無法拍攝照片,那么會返回0x62。最后,如果成功拍攝了照片,但是不能存儲,那么返回值為0x63。

? 0x70 (開始JPEG 傳輸)
這同樣是一個有多種返回值的指令。如果您能夠回想起我之前的文章 Arduino上的JPEG解碼,就知道第一個數(shù)據(jù)包里是有關(guān)圖片的信息,而非真實像素值。我們需要對這兩種類型進(jìn)行區(qū)分,所以說如果數(shù)據(jù)包僅包含圖片信息,響應(yīng)值為0x70,后跟類似寬度、高度和單片機(jī)MCU)計數(shù)的信息。如果數(shù)據(jù)包包含原始像素值,機(jī)器人的響應(yīng)值為0x71,后跟238字節(jié)的像素數(shù)據(jù)。現(xiàn)在我們介紹報錯代碼:如果響應(yīng)值是0x72,這意味著無法找到SD卡。如果是0x73,就表示SD卡沒問題,但是無法找到請求的圖片。

? 0x80 (強(qiáng)制啟動新傳感器測量)
該指令只有一種失敗模式—所請求的傳感器無法進(jìn)行測量。這種情況下,響應(yīng)值為0x81,后跟有包含暗示傳感器故障的一個字節(jié)。在這個字節(jié)中,位的索引對應(yīng)下列傳感器的順序(從MSB到LSB):左VNH5019,右VNH5019, BD1020HFV, ML8511A, BM1383GLV, KX022-1020, RPR-0521RS和BM1422GMV。比如,如果響應(yīng)的第二個字節(jié)是0x03 (0b0000 00011),表示傳感器RPR-0521RS 和 BM1422GMV故障。

? 0x90 (獲取最新傳感器數(shù)據(jù))
該指令與0x80非常相似—只有當(dāng)某些傳感器故障時才會顯示報錯。如果那種情況發(fā)生,將會返回0x91,后跟有錯誤標(biāo)志的相同字節(jié)。之后,將會有來自傳感器的最多46字節(jié)的數(shù)據(jù)。如果沒有傳感器發(fā)生故障,那么返回的第二個字節(jié)將會是簡單的0x00,后跟有包含所有46字節(jié)的數(shù)據(jù)。

? 0xB0 (設(shè)置LoRa調(diào)制調(diào)節(jié)器配置)
這是目前應(yīng)用的指令中最后一個會報錯的指令,雖然這項指令本不應(yīng)該會執(zhí)行失敗。該指令將設(shè)置新的LoRa調(diào)制調(diào)節(jié)器配置,LoRaLib檢驗所提供配置的有效性。如果有一個或者更多的配置值無效,那么響應(yīng)字節(jié)中低四位之一將會被設(shè)置為相應(yīng)值。所以如果提供的帶寬是無效的,那么機(jī)器人將返回0xB1 (0b1011 0001)。如果提供的所有配置值都不正確,那么會返回0xB7 (0b1011 0111)。這項指令本不應(yīng)該會失敗,因為用戶只能從已知設(shè)定值中進(jìn)行選擇。但是,在執(zhí)行該指令時最好還是再檢查一遍。LoRa模塊是最關(guān)鍵的子系統(tǒng),沒有了它,就無法對機(jī)器人進(jìn)行控制。由于LoRa調(diào)制的屬性,兩個模塊上的設(shè)置必須相同,否則,接收器就無法對傳輸內(nèi)容進(jìn)行解調(diào)。

在解釋完所有內(nèi)容后,讓我們回到最開始的內(nèi)容。我們想要把左側(cè)電機(jī)的轉(zhuǎn)速設(shè)置為50%。我們已經(jīng)知道了指令首地址為0x20。所以根據(jù)表格內(nèi)容,我們可以填寫剩下的字節(jié),從控制器發(fā)送的指令包如下所示:

0x20 0x7F 0x00 0x00

第一個字節(jié)顯然是首地址—設(shè)置左側(cè)電機(jī)轉(zhuǎn)速。下一個字節(jié)是轉(zhuǎn)速。電機(jī)驅(qū)動器通過PWM調(diào)制來改變電機(jī)轉(zhuǎn)速,所以數(shù)字0xF7(十進(jìn)制為127)對應(yīng)50%占空比或50%轉(zhuǎn)速。第三個字節(jié)是轉(zhuǎn)向—0x00表示正向,0x01表示逆向。最后一個字節(jié)僅用來占位—添加該字節(jié)來使指令包始終為四字節(jié)長。一旦指令被接收并被機(jī)器人成功執(zhí)行,會返回以下指令包:

0x20

對于機(jī)器人上所運行的Arduino程序,其指令系統(tǒng)的實現(xiàn)都可以在我的GitHub中查看。通常我在這上面發(fā)布實際代碼。不幸的是,代碼文件太大無法放在本文中。所以如果您對于代碼實現(xiàn)的細(xì)節(jié)有興趣的話,請查看實際代碼中的注釋?,F(xiàn)在,我們來繼續(xù)看一些有趣的東西吧,那就是實現(xiàn)遠(yuǎn)程操控的應(yīng)用程序!

遠(yuǎn)程控制應(yīng)用程序

在ArduRover系列的最后一部分,我發(fā)布了一個機(jī)器人在計算機(jī)的控制下行駛的視頻。計算機(jī)上運行的程序通過一個串行端口將數(shù)據(jù)發(fā)送給Arduino,然后Arduino傳送數(shù)據(jù)給機(jī)器人。但是,這種設(shè)置有幾個比較大的問題。

首先,通過鍵盤來控制機(jī)器人是非常困難的。下圖是我在視頻中用來控制機(jī)器人的應(yīng)用程序的一個截圖。

poYBAGPzFCCAc5BNAACrxgjLACM147.jpg

圖3:測試電機(jī)的C#應(yīng)用程序

這是在Visual Studio 中的.NET框架下用C#語言來編寫的。雖然它能夠?qū)y試電機(jī)起到一些作用,但是對于一次只調(diào)整一側(cè)電機(jī)來控制機(jī)器人仍是一個挑戰(zhàn)。這真是令人心煩。用戶唯一可以控制的就是設(shè)置電機(jī)轉(zhuǎn)速的滑動按鈕和使機(jī)器人立馬停止工作的按鈕。

我遇到的另一個比較大的問題是用來測試的筆記本電腦比較重,不能用一只手拿著隨身攜帶,然后空出另一只手來控制機(jī)器人。好吧,一個隨身帶著筆記本電腦和寵物機(jī)器人的人看起來可能是有點奇怪。

為了使控制器變得更加簡單和便攜,我需要一些可以連接到Arduino,并且重量輕、便于長時間攜帶的、最好是可以手持的設(shè)備。如果隱蔽性比較好那就更好了。起初,我打算使用一個可以安裝在Arduino上的舊RC飛機(jī)控制器,但是后來我想到了一個更簡單的解決方案:我的Android手機(jī)!它完美地符合所有要求:很輕并且可以手持。我們只需要通過USB端口或藍(lán)牙將其與Arduino連接即可。

我提出的下一個應(yīng)用程序是通過Android Studio用Java編寫的。這比上文中的C#語言應(yīng)用程序高級得多。它具有多個屏幕,允許用戶控制所有子系統(tǒng),而不僅僅是電機(jī)。讓我們來看一下其中一個屏幕上的布局。

pYYBAGPzFCKAYBdCAAC1qEISqnQ781.jpg

圖4:基本的應(yīng)用程序布局

每個屏幕都會被分成幾個部分。在屏幕的兩側(cè),有兩個滑動按鈕(上圖中1和2標(biāo)記的地方)來分別對左側(cè)和右側(cè)的電機(jī)設(shè)定轉(zhuǎn)向和轉(zhuǎn)速。這樣的布置可以使用戶能夠以更自然的方式來對機(jī)器人的移動進(jìn)行控制:滑動按鈕向上移動使其前進(jìn),向下移動使其后退。按鈕扭矩越大,那一側(cè)的電機(jī)轉(zhuǎn)速就越大。很簡單!

接下來是下面(3)的一個大“停止”按鈕。它的作用看起來很好解釋:按下這個按鈕,電機(jī)就會停止。當(dāng)我用C#應(yīng)用程序測試機(jī)器人時,這應(yīng)該是最有用的按鈕了,所以我決定在該應(yīng)用程序中保留這個設(shè)計。在應(yīng)用程序的頂部,有一個帶有多個標(biāo)簽的欄(4)。由于控制內(nèi)容太多,無法都呈現(xiàn)在一個屏幕上,這個條形欄可以使用戶在不同屏幕間切換。該屏幕中的內(nèi)容顯示在中心位置(5)。這意味著用戶可以通過任何屏幕上來控制機(jī)器人以及停止所有電機(jī)!

這些屏幕(按照應(yīng)用程序頂部條形欄中的排列順序)為:

? “相機(jī)”屏。 – 用戶可以更改相機(jī)位置,拍攝并保存圖片。目前相機(jī)的傾斜角度和水平位移也都顯示在這里。中間的藍(lán)色大框中還能顯示接收到的圖像。

poYBAGPzFCOAbHyQAABnGnrV44s230.jpg

圖5:相機(jī)屏

? “GPS”屏。 – 在當(dāng)前版本應(yīng)用程序中還未實現(xiàn)。這個想法是希望有一個地圖,可以顯示最近一次接收到的機(jī)器人位置。

pYYBAGPzFCWAUfAqAABANpKsEj0208.jpg

圖6:GPS屏

? “圖形”屏。 – 同樣在最新版本中尚未實現(xiàn)。在這個屏幕中,傳感器的輸出將以圖形顯示,類似于Arduino IDE中的串行繪圖儀。

poYBAGPzFCaAZR2LAAA_1D4vqsI345.jpg

圖7:圖形屏

? “傳感器”屏。 – 該頁面顯示傳感器的最近一次輸出,同時也包含一些按鈕來強(qiáng)制啟動傳感器進(jìn)行新的測量,或更新顯示值。

pYYBAGPzFCiAUaHsAACuKDnsXhM167.jpg

圖8:傳感器屏

? “監(jiān)視器”屏。 – 基本上與Arduino IDE中的串行監(jiān)視器相同:用戶打字輸入,監(jiān)視器顯示輸出。該屏幕也顯示所有發(fā)送的指令(黑色文本),機(jī)器人的所有響應(yīng)(藍(lán)色文本),所有報錯(紅色文本),或者來自應(yīng)用程序的常規(guī)信息(灰色文本)。

poYBAGPzFCmAEHn7AADGmTzSY0k321.jpg

圖9:監(jiān)視器屏

? “設(shè)置”屏。 – 包含多種設(shè)置,大部分與USB、藍(lán)牙和LoRa通信相關(guān)。此外,屏幕上有一個按鈕,我們可以用它來從機(jī)器人獲取當(dāng)前存在的所有錯誤。

poYBAGPzFCuAZ9z9AACiJy6fMOg984.jpg

圖10:設(shè)置屏

結(jié)論


像往常一樣,我們呈現(xiàn)一些試駕的照片!

pYYBAGPzFC2AK3rFAAHo2SS6VfM408.jpg

pYYBAGPzFC-ARzBrAAHc9fCqJm8828.jpg

poYBAGPzFDGAZpr5AAF3Lrj7Jvs206.jpg

poYBAGPzFDOAaUhEAAHTnDNI3MY204.jpg

pYYBAGPzFDWAR4qiAAIsiu-QpDU837.jpg

poYBAGPzFDaAd1vlAAG6hexOLis135.jpg

顯然,在許多地方仍然有很大的改進(jìn)空間。比如說,測試機(jī)器人的時候,我注意到抑制器會有向下垂的趨勢。

pYYBAGPzFDiABjlRAAF6Bk9kOcA143.jpg

圖11:機(jī)器人移動時的懸架細(xì)節(jié)可以注意到車身前部離地面較近

盡管這不是一個很大的問題,但它表明出抑制器內(nèi)部的彈簧設(shè)置得有點松。彈簧設(shè)置更緊一些,機(jī)器人的車體就會更高一些,這樣在崎嶇地形中被困住的可能性會更小。

另一個可以改進(jìn)的是應(yīng)用程序。顯然,其中某些部分現(xiàn)在只是個占位符而已:GPS和圖形選項不包含任何內(nèi)容,所以如果能夠?qū)崿F(xiàn)這些功能就更好了。不幸的是,在編寫程序的時候,我還沒想到該怎么做,所以我可能還需要更多的Android Studio經(jīng)驗才能找到方法。

最后,傳感器和相機(jī)的位置布局也是可以改善的部分。雖然通常的習(xí)慣是將相機(jī)放在機(jī)器人的前方,但是這樣還是有些暴露??赡芡ㄟ^使用某種桿來放在中間會更好一些,就像你在所有火星探測器上看到的那樣。既然說到這里,添加一些太陽能電池板并將整個設(shè)備用于某些太空任務(wù)可能也是個不錯的注意!如果您有幾億美元的閑置資金并且愿意用來資助這項驚人的太空冒險計劃,就跟我聯(lián)系吧!

言歸正傳,非常感謝您閱讀這篇文章以及對整個系列的關(guān)注。如果您對機(jī)器人有任何想法請在下面討論區(qū)留言!如果您決定要親自構(gòu)建屬于您自己的ArduRover,請記得與全世界分享您的成果!

poYBAGPzDYeADKbwAAAIfvIYPTY692.jpg

Jan Gromes

Jan 目前在布爾諾工業(yè)大學(xué)學(xué)習(xí)電氣工程。他有多年使用Arduino和其他微控制器來構(gòu)建項目的經(jīng)驗,對于機(jī)器人系統(tǒng)的機(jī)械設(shè)計十分感興趣。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3686

    瀏覽量

    95032
  • Arduino
    +關(guān)注

    關(guān)注

    189

    文章

    6495

    瀏覽量

    190457
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Made with KiCad(十二):JPL開源漫游

    “ ?JPL 開源漫游是 JPL 用于探索火星表面的六輪漫游設(shè)計的縮減版,是一種開源、自己動手制造的
    的頭像 發(fā)表于 12-04 18:05 ?1218次閱讀
    Made with KiCad(十二):JPL開源<b class='flag-5'>漫游</b><b class='flag-5'>車</b>

    esp32-S3支持arduino編程嗎?

    arduino選開發(fā)板的時候沒有es32-s3, 只有s2可選。 請問: 1. esp32-S3支持arduino編程嗎 2.
    發(fā)表于 06-27 08:23

    玩轉(zhuǎn)Arduino手機(jī)編程

    ,縮短了開發(fā)的周期。隨著智能手機(jī)時代的來臨,手機(jī)儼然成為人們的另一個器官,而玩Arduino的創(chuàng)客們也期待著有這么一款可以支持手機(jī)端編程的平臺。于是在2017年前后,有國外大神開發(fā)了安卓版本的手機(jī)端
    發(fā)表于 10-21 23:05

    Arduino教程_Arduino圖形化編程教程_ArduBlock

    Arduino教程_Arduino圖形化編程軟件_ArduBlock
    發(fā)表于 09-25 09:22 ?0次下載
    <b class='flag-5'>Arduino</b>教程_<b class='flag-5'>Arduino</b>圖形化<b class='flag-5'>編程</b>教程_ArduBlock

    arduino編程資料

    arduino開發(fā)資料,arduino編程是參考資料。語法,函數(shù),運算符。
    發(fā)表于 09-13 15:07 ?11次下載

    自主漫游的制作

    我們剛剛完成了第一輛遙控漫游只使用一些開源軟件。在我的下一個指導(dǎo)中,我將教您如何使用ROS和圖像處理技術(shù)來進(jìn)行自主流動站,而無需更改流動站中的任何內(nèi)容
    的頭像 發(fā)表于 10-31 09:58 ?1753次閱讀
    自主<b class='flag-5'>漫游</b><b class='flag-5'>車</b>的制作

    Exxelia元件助力毅力號漫游

    Exxelia是致力于制造應(yīng)用于惡劣環(huán)境的復(fù)雜無源元件和子系統(tǒng)的領(lǐng)先公司,如今這家公司搭載毅力號(Perseverance)漫游重返火星,為 3 個關(guān)鍵的高精度測量和采樣儀器提供零部件。
    發(fā)表于 09-14 15:51 ?1535次閱讀
    Exxelia元件助力毅力號<b class='flag-5'>漫游</b><b class='flag-5'>車</b>

    Exxelia元件助力毅力號漫游

    Exxelia是致力于制造應(yīng)用于惡劣環(huán)境的復(fù)雜無源元件和子系統(tǒng)的領(lǐng)先公司,如今這家公司搭載毅力號(Perseverance)漫游重返火星,為 3 個關(guān)鍵的高精度測量和采樣儀器提供零部件。
    的頭像 發(fā)表于 08-09 10:38 ?1004次閱讀

    基于Arduino UNO的自主導(dǎo)航漫游

    這個項目中的目標(biāo)是制造一個能夠在你家周圍進(jìn)行許多活動的自動漫游。這個想法來自于我了解好奇號等火星探測器及其運作方式。我決定自己做一個小漫游會很有趣也很有幫助。我開始這個項目是為了制
    發(fā)表于 12-20 15:52 ?0次下載

    Arduino 101 BLE漫游者遙控器

    電子發(fā)燒友網(wǎng)站提供《Arduino 101 BLE漫游者遙控器.zip》資料免費下載
    發(fā)表于 12-22 15:48 ?0次下載
    <b class='flag-5'>Arduino</b> 101 BLE<b class='flag-5'>漫游</b>者遙控器

    關(guān)于幫助農(nóng)民的地球漫游開源案例

    電子發(fā)燒友網(wǎng)站提供《關(guān)于幫助農(nóng)民的地球漫游開源案例.zip》資料免費下載
    發(fā)表于 12-22 16:49 ?0次下載
    關(guān)于幫助農(nóng)民的地球<b class='flag-5'>漫游</b><b class='flag-5'>車</b>開源案例

    洞穴探險漫游開源分享

    電子發(fā)燒友網(wǎng)站提供《洞穴探險漫游開源分享.zip》資料免費下載
    發(fā)表于 02-06 14:25 ?0次下載
    洞穴探險<b class='flag-5'>漫游</b><b class='flag-5'>車</b>開源分享

    Arduino探索漫游2—電子設(shè)備與布線

    歡迎回到ArduRover系列的第二部分!在Arduino 探索漫游1—底盤中我們構(gòu)建了一個可以在崎嶇地形行駛的六輪驅(qū)動大型越野機(jī)器人。
    的頭像 發(fā)表于 03-01 11:22 ?1154次閱讀
    <b class='flag-5'>Arduino</b><b class='flag-5'>探索</b><b class='flag-5'>漫游</b><b class='flag-5'>車</b>2—電子設(shè)備與布線

    AWS DeepRacer到自動駕駛漫游

    電子發(fā)燒友網(wǎng)站提供《AWS DeepRacer到自動駕駛漫游.zip》資料免費下載
    發(fā)表于 06-19 10:47 ?0次下載
    AWS DeepRacer到自動駕駛<b class='flag-5'>漫游</b><b class='flag-5'>車</b>

    用 樹莓派 Zero 打造的智能漫游

    使用PXFMini和樹莓派Zero打造您自己的自主漫游。本項目所用組件硬件組件ErleRoboticsPXFmini×1樹莓派Zero×1樹莓派2ModelB×1樹莓派3ModelB×1軟件應(yīng)用與在線服務(wù)APM飛行
    的頭像 發(fā)表于 05-13 16:39 ?372次閱讀
    用 樹莓派 Zero 打造的智能<b class='flag-5'>漫游</b><b class='flag-5'>車</b>!