基準跟隨 Fiducial Follow

前言大綱

此示例程序演示如何讓 Spot 以交互方式走到它使用其內置相機看到的基準標記(april tags)。機器人將迭代反覆:

檢測任何 Spot 相機中的基準,如果有多個檢測,則選擇它接收到的第一個基準檢測。

根據基准在真實世界中的位置確定首選位置。

命令機器人走向基準點並重複。

此示例可以在兩種模式下運行:

  1. 使用真實世界物件服務來檢測基準點,這些基準點是使用 Spot 的感知系統在真實世界幀框中作為變換提供的。這種模式已經在spot-sdk的1.2軟件版本中加入了。
  2. 要使用 外部 AprilTag 庫 檢測圖像源中的 april 標籤,請計算邊界幀框,然後將像素坐標轉換為真實世界坐標。
命令行參數 --use-world-objects 將在這些模式之間切換。默認情況下,此參數設置為 true,因此程序將使用真實世界物件服務(mode 1)。

設置相依性

此範例需要安裝 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。
在 MacOS 上,請按照以下說明正確構建 apriltag 存儲庫:

  • 如果未安裝,請安裝 cmake
  • 運行 open/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg   以安裝缺少的 stdio.h 文件。 pkg 文件的名稱可能會有所不同,具體取決於 MacOS 版本。
  • 克隆上面引用的 apriltag   git repo。
打開 CMakeLists.txt 並:

  • 刪除 , -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 時,機器人將準確地停在其感知的基準點位置,直到檢測到另一個基準點。


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

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

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

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

下載網頁使用 requests 模組