基準跟隨 Fiducial Follow
前言大綱
此示例程序演示如何讓 Spot 以交互方式走到它使用其內置相機看到的基準標記(april tags)。機器人將迭代反覆:
檢測任何 Spot 相機中的基準,如果有多個檢測,則選擇它接收到的第一個基準檢測。
根據基准在真實世界中的位置確定首選位置。
命令機器人走向基準點並重複。
此示例可以在兩種模式下運行:
- 使用真實世界物件服務來檢測基準點,這些基準點是使用 Spot 的感知系統在真實世界幀框中作為變換提供的。這種模式已經在spot-sdk的1.2軟件版本中加入了。
- 要使用 外部 AprilTag 庫 檢測圖像源中的 april 標籤,請計算邊界幀框,然後將像素坐標轉換為真實世界坐標。
設置相依性
此範例需要安裝 bosdyn API 和客戶端,並且必須使用 python3 運行。使用 pip,可以使用以下命令安裝這些相依性:
python3 -m pip install -r requirements.txt
此外,該示例需要 Spot 視野範圍內的基準點。該基準(也稱為 april tag)必須是 Spot 的用戶指南和文檔中指定的正確大小。
外部 AprilTag 庫
如果用戶打算僅使用來自世界物件服務的基準檢測,則可以跳過這些安裝說明。
此示例使用來自外部存儲庫 external repo ( https://github.com/AprilRobotics/apriltag.git ) 的 AprilTag ,請按照 AprilTag github 自述文件中的說明完整設置該庫(外部 github 上的說明針對的是 Linux 操作系統)。
在 Linux 上,請按照以下說明正確構建 apriltag 存儲庫:
- 外部 apriltag repo 指令的 make install 命令將安裝共享庫並需要設置LD_LIBRARY_PATH=/usr/local/lib。
- 要在名為 venv 的 virtualenv 中運行示例,請將 apriltag.cpython-36m-x86_64-linux-gnu.so 從 ~/.local/lib/python3.7/site-packages/ 複製到 venv/lib/python3.7/site-packages/ 。請注意,“python3.7” 是您系統的 Python 版本的 placeholder。
- 如果未安裝,請安裝 cmake。
- 運行 open/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg 以安裝缺少的 stdio.h 文件。 pkg 文件的名稱可能會有所不同,具體取決於 MacOS 版本。
- 克隆上面引用的 apriltag git repo。
- 刪除 , -rpath=lib
- 用 libapriltag.dylib 替換 libapriltag.so
- 按照 apriltag README 文件中指定的方式運行 cmake 和 make 命令
- 將編譯後的 apriltag 庫複製到您的 python site-packages 文件夾中。比如你配置了一個名為venv 的 virtualenv,執行這個命令 cp /Users/apitester/.local/lib/python3.7/site-packages/apriltag.cpython-37m-darwin.so venv/lib/python3.7/site-packages/
請注意,在這些說明中,文件路徑 /Users/apitester/.local/lib/python3.7/site-packages/ 表示 apriltag github 庫在 MacOS 上默認安裝的文件夾,其中包含 “apitester” 作為佔位符placeholder您的系統用戶名,以及“python3.7”作為系統python版本的佔位符placeholder。
如果要使用外部 apriltag 庫,則 Windows 操作系統不支持此示例。但是,可以使用世界物件服務運行該示例。
運行範例
急停端點相依性
該示例依賴於外部 E-Stop 端點應用程序來配置 E-Stop 並在必要時切斷機器人中所有電機的電源。 與此示例並行運行 E-Stop SDK 示例作為 E-Stop 控制器。
運行跟隨基準示例
警告:默認情況下,避障功能處於禁用狀態,以便機器人在必要時可以準確地走到標籤的位置。 這意味著如果在程序繼續迭代時標籤保持靜止,機器人將非常靠近牆壁或任何持有四月標籤的人。 可以重新啟用避障,但這會阻止 Spot 完全達到目標點(April Tag 位置)。
運行範例:
python3 -m fiducial_follow --username USER --password PASSWORD ROBOT_IP
要阻止機器人移動,請從所有相機的視野中移除它所跟隨的基準點,或者在命令行中停止代碼。
機器人運動
如果布林值 _standup 為真,則機器人將通電並站起來,但不會走到基準點。 如果布林值 _movement_on 也為真,則機器人將走向基準點。 可以通過更改_max_x_speed 和_max_y_speed 的值來調整最大速度。 默認情況下,機器人平面運動的速度限制為 1m/s。 要禁用速度限制,請將命令行參數 --limit-speed 設置為 False。 要啟用避障,請將命令行參數 --avoid-obstacles 設置為 True。
剎車距離
有一個緩衝區可以讓機器人在距標籤固定距離處停止。 這可以使用命令行參數--distance-margin 設置,它將沿著基準點和機器人之間的向量偏移與基準點的距離(以米為單位)的位置。 當此參數設置為 0 時,機器人將準確地停在其感知的基準點位置,直到檢測到另一個基準點。
留言
張貼留言
Aron阿龍,謝謝您的留言互動!