跳轉到內容

Khepera III 工具箱/簡介

來自華夏公益教科書

Khepera III 機器人執行嵌入式 Linux(核心 2.6),具有所有最常見的 Linux 工具,除了程式編譯。因此,程式必須在另一臺具有 arm-linux 工具鏈的計算機上交叉編譯,然後可以使用 SCP 複製並透過 SSH 連線啟動。對於熟悉 Linux 的人來說,這原則上很簡單,但在從頭開始時可能很麻煩。

這就是 Khepera III 工具箱發揮作用的地方。工具箱可以理解為 Khepera III 機器人的瑞士軍刀,提供三種不同型別的工具

  • 與機器人互動的指令碼:提供一系列指令碼,用於在您的機器人上覆制檔案、遠端執行程式以及執行許多管理任務。這些指令碼可以並行處理多個機器人,例如,將檔案複製到整個機器人艦隊。
  • 用於 Khepera III 機器人的程式:提供許多小程式,用於玩轉機器人的感測器和執行器。
  • 具有標準功能的模組:幾個模組提供基本功能,您可以輕鬆地將這些功能整合到您為 Khepera III 機器人編寫的程式中。除了用於讀取感測器和配置執行器的函式外,還有一些模組用於解析命令列引數、簡單的里程計跟蹤等等。

本章的其餘部分以教程的方式展示瞭如何使用機器人執行一些花哨的操作,使用 指令碼程式模組將在後面的章節中討論。

準備電腦和機器人

[編輯 | 編輯原始碼]

我們假設您已按照 下載和安裝 中的說明安裝了 Khepera III 工具箱,並且您正在使用最近的 Linux 系統上的 bash shell。

開啟您的 Khepera III 機器人並 連線到您的計算機。在本介紹的其餘部分,我們假設您的機器人使用 USB 線纜連線。如果您使用的是 WLAN 連線,只需將 "+usb" 替換為 "+ROBOTID"(其中 ROBOTID 是您的機器人編號)。

要檢查一切是否正常,請輸入

k3ping +usb

這將執行ping 192.168.1.2為您。

現在您的計算機和機器人應該都準備好了 - 是時候玩機器人了!

使用鍵盤進行遠端控制

[編輯 | 編輯原始碼]

請輸入

cd Programs
k3put +usb motor_initialize motor_stop motion_arrowkeys

將三個電機程式複製到您的機器人。(請注意,您需要輸入機器人 root 密碼 4 次。預設情況下,此密碼為“rootme”。)正如您在終端中看到的,這只是啟動了 scp 命令。

現在輸入

k3go +usb

並再次輸入 root 密碼以登入機器人。如果您現在輸入ls(在機器人上),您將注意到建立了一個以您的使用者名稱命名的目錄。這是一種避免在您的同事也使用同一個機器人時互相覆蓋檔案的好方法。因此,cd 到此目錄並輸入

./motor_initialize
./motion_arrowkeys

第一個程式將初始化電機(例如,設定 PID 值),然後退出。第二個程式將持續執行,直到您按 Ctrl-C,並允許您使用鍵盤上的 W(增加速度)、A(左轉)、S(停止)、D(右轉)和 X(降低速度)鍵來控制機器人。

請注意,當您使用 Ctrl-C 退出此程式時,電機將保持最後指示的速度。這是此工具箱中所有程式的一般規則,應該被視為一項功能 - 而不是一個錯誤。有時很有用的程式是“motor_stop”,它會立即停止電機。

玩完機器人後,您可以透過輸入

exit

在命令列中退出。這會將您帶回計算機上,回到您執行k3go命令之前的位置。

紅外感測器趣味

[編輯 | 編輯原始碼]

提供兩個程式用於查詢紅外感測器:infrared_ambientinfrared_proximity。前者只是讀取所有紅外接收器,而後者使用每個感測器進行兩次連續測量(一次是 IR LED 關閉,一次是 IR LED 開啟),以估計其到障礙物的距離。

同樣,我們首先需要將必要的程式複製到機器人。假設您仍在 Programs 目錄中,請輸入

k3put +usb infrared_ambient infrared_proximity

然後,登入機器人(k3go +usb)並 cd 到您的目錄。

透過輸入獲取環境 IR 測量值

./infrared_ambient

這將為您提供類似以下內容

$IRAMBIENT,0,31887,4080,4073,4080,4081,4093,4093,4094,4077,4094,4081,4094

前兩個值表示樣本編號(從 0 開始)和主微控制器的當前時間戳。所有其他值都在 0 - 4096 範圍內,對應於機器人上的一個感測器。感測器按順時針方向(從頂部看)從 0(左後感測器)到 8(後傳感器)編號。感測器 9 和 10 分別是右側和左側地板感測器。在晴朗的天氣裡,您可以用手指遮住一個感測器,同時進行另一次測量,您應該會看到值之間有明顯差異。在接近模式下(./infrared_proximity).

您可以進行類似的實驗。與其多次啟動命令,您可以告訴程式連續執行多次(這裡:10 次)測量

./infrared_ambient -r 10

或直到按 Ctrl-C 為止才執行測量

./infrared_ambient -r

輸出格式

[編輯 | 編輯原始碼]

此時,您可能想知道輸出格式,尤其是所有行開頭的 $IRAMBIENT。這是 NMEA 0183,一種非常簡單的基於文字的通訊格式,它已透過 GPS 裝置(幾乎始終使用這種格式)而變得十分普及。有關此格式的更多資訊,請參閱 解析程式輸出 一章。

使用超聲波感測器測量距離

[編輯 | 編輯原始碼]
超聲波感測器位於機器人外圍,如這裡所示。

Khepera III 機器人配備了 5 個超聲波感測器,可用於檢測障礙物。這些感測器在開啟後會發出超聲波脈衝並記錄其回聲。由於聲波在空氣中的傳播速度幾乎恆定,因此這種技術可用於測量到環境中物體的距離。請注意,事情稍微複雜一點。當您發出脈衝時,您記錄的是一系列回聲的組合,這些回聲是由環境中的各種物體反射而來的。幸運的是,機器人會為您處理訊號,併為您提供接收訊號中最突出的回聲。

請輸入

cd Programs
k3put +usb ultrasound ultrasound_enable

將這兩個程式複製到您的機器人。現在登入機器人(k3go +usb)並 cd 到您的目錄。

將您的機器人指向牆壁並輸入

./ultrasound front

您將得到類似以下內容

TODO

每行對應於一個接收到的回聲,幷包含其振幅以及估計的物體距離。在我們的示例中,我們從距離為 0.98 米的物體獲得了非常強的回聲,以及來自距離為 0.45 米和 1.22 米的物體的兩個強度較低的回聲。請注意,精度約為幾釐米,並且每次您可能都會得到略微不同的值。

預設情況下,只有前感測器啟用。要同時啟用左側和右側感測器,請輸入

./ultrasound_enable left front right

此程式將相應地配置機器人並報告活動感測器。現在,您也可以使用左側和右側的感測器進行測量

./ultrasound left
./ultrasound right

獲取幫助

[編輯 | 編輯原始碼]

要獲取有關某個標準程式的幫助,只需使用 -h 選項呼叫該程式

./battery -h

閱讀此幫助以及一些想象力,應該可以讓您輕鬆地使用所有標準程式。

更多教程和實踐練習

[編輯 | 編輯原始碼]

如需更多教程,請檢視 示例 部分。這些示例的編寫方式使您可以使用自己的 Khepera III 機器人進行復制,並逐漸瞭解它。

華夏公益教科書