圖形導航命令行 Graph Nav Command Line

前言大綱

這些示例程序通過創建命令行界面來記錄地圖,然後本地化和導航這些地圖來演示如何使用 GraphNav API。

設置相依性

此範例需要安裝 bosdyn API 和客戶端,並且必須使用 python3 運行。使用 pip,可以使用以下命令安裝這些相依性:
python3 -m pip install -r requirements.txt

紀錄服務命令行

該介面公開了記錄服務的記錄和創建地圖的請求。 記錄服務必須進入“記錄模式”才能將航點添加到地圖(自動和手動)。 在記錄地圖時,可以使用平板電腦上的應用程序或 WASD python 示例來驅動機器人(並具有 E-Stop)。 當機器人四處走動時,路點將根據機器人行走的路徑自動添加到地圖中。 還可以選擇在機器人當前所在的位置手動創建航點。

開始記錄地圖時,建議機器人能夠看到基準點(有關基準點大小和類型的詳細信息,請參閱 Spot 用戶指南和文檔)並站起來進行更好的初始化。

地圖完全記錄後,即可下載,以便 GraphNav 命令行界面或地圖查看器使用。

示例執行

python3 -m recording_command_line --username USER --password PASSWORD --download-filepath <path_to_downloaded_map> ROBOT_IP

請注意,download-filepath 命令行參數必須是完整路徑。 這個參數是可選的; 如果未提供,則將使用當前工作目錄。 下載地圖後,它將下載到指定文件夾中名為 downloaded_graph 的子文件夾中,佈局為:

download-filepath
   - downloaded_graph
       - graph              # Serialized protobuf containing the waypoints and edges.
       - waypoint_snapshots # Large sensor data associated with waypoints.
           - snapshot_...   # Waypoints may share snapshots. The IDs of snapshots are unrelated to the IDs of waypoints.
           - snapshot_...
       - edge_snapshots     # Large sensor data associated with edges.
           - edge_snapshot_...

GraphNav 服務命令行

此界面演示瞭如何使用不同的 GraphNav 請求將地圖上傳到機器人,獲取機器人在地圖上的當前位置,並導航地圖(使用特定路線或目的地航點 ID),以及清除現有地圖 在機器人上。 導航命令需要機身租賃和急停,因此必須斷開平板電腦或 WASD python 示例。 此外,客戶端必須手動啟動 E-Stop 端點,該端點可以從文件夾 bosdyn 中的第二個命令行終端運行:

python3 -m estop_gui --username USER --password PASSWORD ROBOT_IP

圖形和快照可以從 upload-filepath 命令行參數中指定的文件夾上傳到機器人。 upload-filepath 參數必須是完整路徑,文件夾必須包含圖形和文件夾“edge_snapshots”和“waypoint_snapshots”

在發出導航命令時,使用地圖查看器查看不同的航點 ID 以及它們之間的邊緣。 該工具將允許您在執行導航命令之前更好地可視化機器人將行進的位置。 此外,您可以在命令行上從機器人當前加載的地圖中列出所有航點 id 和邊緣 id(由連接的航點的兩個 id 表示)。

示例執行

python3 -m graph_nav_command_line --username USER --password PASSWORD --upload-filepath ~/Downloads/my_graph_folder ROBOT_IP

在機器人可以完成任何導航命令之前,必須在最近不關閉機器人電源的情況下將地圖上傳到機器人或記錄在機器人上。 此外,必須設置定位:如果它只是在沒有任何電源循環的情況下記錄在機器人上,它將自動定位到地圖上; 否則,當機器人站在記錄地圖中的基準點附近時,必須手動初始化定位。

導航命令將機器人開機並站立,執行所需的路線,然後在導航完成後坐下並關閉機器人。 使用 E-Stop 或退出命令行來停止導航。

當發出導航請求時,提供目的地航點的 id 作為命令行中的第二個參數。 例如,輸入可以是:

> 6 zigzag-filly-8ieN.xz8c9pL5tDZtQYW+w==

請注意,可以通過從命令行列出圖形 id 來顯示航點和邊的 id。 另請注意,只要明確無誤,您就可以使用 2 個字母的短代碼。 在這個例子中,“zigzag-filly-8ieN.xz8c9pL5tDZtQYW+w==”可能只是“zf”,如果它是唯一的。

要發出導航路線命令,列出的航路點必須按照從起始航路點到最終目的地航路點的順序排列。 同樣,每對連續的航路點之間必須有一條在地圖中的邊。 例如,輸入可以是:

> 7 hammy-skink-iKQI6hGQ.fCBWXJy6mmjqg== unread-beagle-vQfl7NrKVhHPOUoos+ffIg== zigzag-filly-8ieN.xz8c9pL5tDZtQYW+w==

在這個例子中,還有一個已知邊(從航點 id:hammy-skink-iKQI6hGQ.fCBWXJy6mmjqg==,到航點 id:unread-beagle-vQfl7NrKVhHPOUoos ffIg==)和第二條邊(從航點 id:unread- beagle-vQfl7NrKVhHPOUoos ffIg==,到航路點 id:zigzag-filly-8ieN.xz8c9pL5tDZtQYW w==)。 請注意,您可能可以使用短代碼將其簡化為“7 hs ub zf”

參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組