作者:Travis Foss
一個(gè)反復(fù)提出的有趣問(wèn)題是控制 XRP 的不同方法是什么。我碰巧發(fā)現(xiàn)了適用于 Raspberry Pi Pico 的 Kitronik 迷你控制器,Kitronik 有一篇關(guān)于將此控制器與他們的 Pico 自主機(jī)器人平臺(tái)一起使用的精彩文章,該平臺(tái)也是一個(gè)基于 Raspberry Pi Pico 的機(jī)器人。我認(rèn)為由于這兩個(gè)平臺(tái)相似,因此使用 XRP 會(huì)更容易過(guò)渡。
我開(kāi)始深入研究他們的 GitHub 存儲(chǔ)庫(kù)[KitronikLtd/Kitronik-Pico-Mini-Controller-MicroPython (github.com)] ,我在 GitHub 頁(yè)面的自述文件部分注意到的第一件事是控制器和機(jī)器人都需要一份KitronikPicoWBluetooth.py 來(lái)自此頁(yè)面[,Kitronik-Pico-W-Bluetooth-MicroPython/KitronikPicoWBluetooth.py 位于 main · Kitronik Ltd/Kitronik-Pico-W-Bluetooth-MicroPython (github.com)] 。我將此文件的副本下載到我的計(jì)算機(jī)上以供將來(lái)使用。
瀏覽 Pico Controller.py 后,我發(fā)現(xiàn)該文件無(wú)需更改即可與 XRP 配合使用。由于控制器上需要 Kitronik 藍(lán)牙和 Pico 控制器文件,因此我將 Kitronik_Pico_W_Bluetooth 和 Pico 控制器文件安裝到我要在控制器中使用的 Pico W 上
接下來(lái),我開(kāi)始深入研究機(jī)器人的代碼。在 Pico ARP.py 文件的頂部,我注意到他們導(dǎo)入了 PicoAutonomousRobotics 文件。因此,我決定深入研究該文件,該文件位于此處,[Kitronik-Pico-Autonomous-Robotics-Platform-MicroPython/PicoAutonomousRobotics.py at main · KitronikLtd/Kitronik-Pico-Autonomous-Robotics-Platform-MicroPython (github .com)] 。在查看此文件時(shí),我注意到他們正在使用的許多功能已經(jīng)在 XRP 上設(shè)置的庫(kù)中調(diào)用。這讓我很好奇是否可以在不使用這個(gè)庫(kù)的情況下讓 XRP 工作。然后我再次研究 Pico ARP.py 文件。我知道我將嘗試在不使用前面提到的庫(kù)的情況下運(yùn)行 XRP,因此我首先注釋掉它調(diào)用該庫(kù)及其使用的函數(shù)的行。我首先刪除了設(shè)置越野車(chē)的開(kāi)始部分。
然后我查看了下一部分,其中 LED 燈亮起以顯示機(jī)器人已開(kāi)啟。知道它使用了我不會(huì)使用的庫(kù),然后我決定編寫(xiě)一個(gè)名為 test_leds 的新函數(shù)。然后立即調(diào)用該函數(shù),以便機(jī)器人準(zhǔn)備好后 LED 就會(huì)閃爍。目前,代碼設(shè)置為在關(guān)閉前閃爍 3 次,但是,通過(guò)更改代碼中第 20 行括號(hào)中的數(shù)字,可以輕松將其更改為閃爍更多次。
代碼中的下一系列行定義了與控制器連接相關(guān)的函數(shù),因此我將這些行保持原樣,而不進(jìn)行任何更改。
然后代碼調(diào)用將 LED 設(shè)置為綠色,以表明機(jī)器人已準(zhǔn)備好進(jìn)行控制。我決定對(duì)此代碼發(fā)表評(píng)論,因?yàn)槲艺J(rèn)為此時(shí)不需要它。
代碼的下一部分控制機(jī)器人的運(yùn)動(dòng)。在這一部分,我意識(shí)到我可以使用 XRP 庫(kù)控制機(jī)器人。
我決定讓其中一個(gè)按鈕起作用來(lái)測(cè)試代碼更改。我從第 74 行開(kāi)始,該行指出如果按下控制器上的向上按鈕,就會(huì)導(dǎo)致機(jī)器人向前移動(dòng)。我決定嘗試使用我根據(jù) XRP 上的原始驅(qū)動(dòng)器示例設(shè)置的命令,而不是使用 Kitronik 示例中使用的 buggy.motorOn 命令。我將文件命名為 Driving_for_controller,并設(shè)置了幾個(gè)不同的函數(shù):drive_straight、drive_backwards、point_turn_left 和 point_turn_right。這些功能的設(shè)置方式與機(jī)器人的設(shè)置方式類(lèi)似,機(jī)器人會(huì)施加一定的力并移動(dòng)一小段時(shí)間,在本例中為 1/2 秒。
我還必須在代碼開(kāi)頭調(diào)用庫(kù)才能使其正常工作。我在頂部添加了這些行。添加后,我在代碼的前部部分輸入了 Drive Straight 命令。
在 XRP 上進(jìn)行測(cè)試后,它確實(shí)有效,但是,機(jī)器人會(huì)結(jié)結(jié)巴巴,因?yàn)檫@會(huì)導(dǎo)致機(jī)器人向前行駛,然后在繼續(xù)執(zhí)行下一個(gè)前進(jìn)命令之前停止。這不是我希望機(jī)器人執(zhí)行的方式。因此,我開(kāi)始思考想法,并想為什么不按下按鈕來(lái)設(shè)置電機(jī)的力度級(jí)別,直到釋放按鈕?為了實(shí)現(xiàn)這一點(diǎn),我將代碼更改為按下按鈕時(shí)的drivetrain.set_effort命令。
然后我轉(zhuǎn)到 else 語(yǔ)句,當(dāng)按鈕被釋放時(shí),并將左右輪的作用力設(shè)置為 0。檢查之間的睡眠時(shí)間已經(jīng)設(shè)置,所以我想我會(huì)像示例中那樣嘗試一下。
令我驚訝的是,這段代碼運(yùn)行得非常好。它運(yùn)行得非常好,我決定保持原樣,然后繼續(xù)設(shè)置其他方向按鈕。您會(huì)注意到,在第 76、80、84 和 88 行,我注釋掉了我在代碼中設(shè)置的先前驅(qū)動(dòng)方法,并注釋了我調(diào)用控制器庫(kù)驅(qū)動(dòng)的行。
最后,我留下了 A 和 B 按鈕,沒(méi)有為它們添加任何代碼,除了添加的打印語(yǔ)句以便我可以確認(rèn)這些按鈕是否正常工作。
根據(jù)我正在從事的項(xiàng)目,我可以設(shè)置這些按鈕來(lái)完成特定任務(wù),但是為了測(cè)試,我不確定我會(huì)使用什么,所以我只是給它們留下了打印語(yǔ)句。在稍后考慮這一點(diǎn)時(shí),我可以使用它們將力度設(shè)置為一半或使用它們來(lái)控制伺服器拾取物體,但是,在編寫(xiě)本指南之前我從未深入研究過(guò)這一點(diǎn)。這可能是未來(lái)項(xiàng)目的一部分。
現(xiàn)在編碼部分已在 XRP 上完成,最后一步是對(duì)其進(jìn)行測(cè)試。首先,我將為控制器編程的 Pico W 插入控制器。接下來(lái),我打開(kāi) XRP,一旦板載 Pico 上的燈開(kāi)始閃爍,我就打開(kāi)控制器。使用此代碼,如果控制器和 XRP 之間的配對(duì)綁定成功,控制器上 Pico 上的 LED 將亮起并保持亮起狀態(tài)。如果由于某種原因第一次沒(méi)有發(fā)生這種情況,它似乎有助于重新啟動(dòng)控制器,然后它似乎會(huì)立即綁定。一旦控制器上的燈亮起,程序就應(yīng)該啟動(dòng)并運(yùn)行。將 XRP 放在有空間行駛的表面上并嘗試一下。我在頁(yè)面底部鏈接了完整的代碼供您參考。
該控制器的一個(gè)奇妙之處在于,它具有通過(guò)模擬輸入引腳添加操縱桿的引腳分配,以及帶有其他斷開(kāi)的 IO 的額外按鈕。我計(jì)劃在未來(lái)的項(xiàng)目中嘗試使用額外的按鈕,但是目前還不需要。如果您想查看這方面的教程,請(qǐng)告訴我們,我可以將其放在一起。
以下是 XRP 的完整代碼:
復(fù)制代碼
從藍(lán)牙導(dǎo)入BLE
從時(shí)間導(dǎo)入sleep_ms
#from PicoAutonomousRobotics ?導(dǎo)入 KitronikPicoRobotBuggy
從KitronikPicoWBluetooth導(dǎo)入?BLEPeripheral
#from Driving_for_controller import *
? from XRPLib.defaults import *
? 導(dǎo)入時(shí)間
#設(shè)置 Pico 自主機(jī)器人 ?平臺(tái)越野車(chē)
? #buggy = KitronikPicoRobotBuggy()
? ? #將越野車(chē)速度設(shè)置為 50%
? ? #speed = 50
#將 LED 設(shè)置為紅色以顯示其已打開(kāi)
? #for i in range(4):
? ? # buggy.setLED(i, (100, 0, 0))
? ? # buggy.show()
def test_leds () :
board.led_blink( 3 )
時(shí)間.睡眠( 1 )
?board.led_off()?
? ?
test_leds()?
#設(shè)置藍(lán)牙外設(shè)
外設(shè) = BLEPeripheral(BLE())?
#等待連接...
審核編輯 黃宇
-
控制器
+關(guān)注
關(guān)注
114文章
17113瀏覽量
184374 -
機(jī)器人
+關(guān)注
關(guān)注
213文章
29748瀏覽量
212958 -
XRP
+關(guān)注
關(guān)注
0文章
4瀏覽量
8546 -
Pico
+關(guān)注
關(guān)注
0文章
182瀏覽量
17653
發(fā)布評(píng)論請(qǐng)先 登錄
Raspberry Pi Pico是什么
微控制器開(kāi)發(fā)板Raspberry Pi Pico
DIY一個(gè)友好型自主機(jī)器人
基于raspberry pi pico的EPS系統(tǒng)
Raspberry Pi 4/3B的Pico開(kāi)發(fā)板
適用于Raspberry Pi的ADAU1452 + AD1934
可視頻直播的Raspberry Pi網(wǎng)絡(luò)控制機(jī)器人

樹(shù)莓派 Raspberry Pi 設(shè)計(jì)的微控制器 RP2040迷你開(kāi)發(fā)板Raspberry Pi Pico

適用于Raspberry Pi 4的Raspberry Pi Pico開(kāi)發(fā)板

適用于Raspberry Pi 3/4的Jamma街機(jī)板

基于Raspberry Pi Pico的自主機(jī)器人ISLA
適用于類(lèi)人機(jī)器人的TI DLP? Pico?技術(shù)

使用串行連接通過(guò) Raspberry Pi 增強(qiáng)您的 XRP 項(xiàng)目

Raspberry Pi Pico 2

評(píng)論