Spot檢測和跟踪 Spot Detect and Follow
前言大綱
Spot Detect and Follow 示例從兩個前置 Spot 攝像頭收集圖像並對指定的類別執行物件檢測。此檢測通過 Spot Tensorflow Detector 示例中的 tensorflow_object_detector 使用 Tensorflow。它接受任何 Tensorflow 模型,並允許用戶指定模型中包含的檢測類別的子集。它為預定義的迭代次數執行這組操作,在每次迭代之間阻塞blocking預定義的時間量。該示例然後確定指定類別的最高置信度檢測的位置並走向物件。步行有一個約3米的內置緩衝區。
如果使用此示例來跟踪一個人,請遵守所有安全規程。遠離所有樓梯。
該程序被組織成三組與 Spot 機器人通信的 Python 程序。流程圖如下所示。主進程通過 GRPC 與 Spot 機器人通信並不斷接收圖像。這些圖像被推入 RAW_IMAGES_QUEUE 並由 Tensorflow 程序讀取。這些程序檢測圖像中的對象並將位置推送到 PROCESSED_BOXES_QUEUE。主執行緒然後確定對象的位置並向機器人發出命令以走向物件。
用戶指南
安裝(僅當您想在沒有 Docker 的情況下運行時)
要在 Ubuntu 18.04 上安裝此示例,請按照以下說明操作:
- 安裝python3:sudo apt-get install python3.6
- 安裝 pip3: sudo apt-get install python3-pip
- 安裝 virtualenv:python3 -m pip install virtualenv
- 進入示例目錄:cd spot_detect_and_follow
- 創建虛擬環境(一次操作): virtualenv -p {PATH_TO_PYTHON3_EXECUTABLE} venv。 可執行文件的路徑是 which python3 命令的輸出,通常設置為 /usr/bin/python3。
- 啟動虛擬環境:source venv/bin/activate
- 安裝相依性:python3 -m pip install -r requirements.txt
- 將 tensorflow 檢測器模塊添加到您的 PYTHONPATH: export PYTHONPATH=/path/to/examples/spot_tensorflow_detector:$PYTHONPATH
- 在 spot_tensorflow_detector 目錄中運行 python3 -m pip install -r requirements.txt
- 使用下一節中的說明運行示例
- 要退出虛擬環境,請運行 deactivate
執行
在運行示例之前,您需要從其他來源(例如已連接的筆記本電腦或平板電腦)獲取 estop 訪問權限。這允許您緊急停止機器人,因為此應用程序沒有 GUI。此示例遵循預期參數的常見模式。它需要用於配置 SDK 和連接到 Spot 的常用參數:
- -用戶名
- -密碼
- 主機名作為最後一個參數傳遞
- –model-path(必需)參數,指定 Tensorflow 模型的路徑(.pb 格式的文件)
- –detection-class(必需)參數,指定要遵循的 Tensorflow 模型中的檢測類別(類別代碼列表可以在 spot_detect_and_follow.py 中的 COCO_CLASS_DICT 中找到)
- –detection-threshold(可選)參數,指定用於將 Tensorflow 檢測視為真實檢測的置信閾值 (0-1)。較低的值會增加誤報。較高的值可能會降低檢測率;默認為 0.7
- –number-tensorflow-processes(可選)參數,指定要啟動的 Tensorflow 進程的數量。使用 GPU 運行時,1 個進程就足夠了,因為 GPU 負責並行化;默認為 1
- –sleep-between-capture(可選)參數指定每次圖像捕獲迭代之間的睡眠時間(以秒為單位)。增加這個參數的值會減少隊列的大小,但也會降低管道末端的命令更新率;默認為 1.0。
- –max-processing-delay(可選)參數,指定每個圖像在處理前允許的最大延遲(以秒為單位);延遲較大的圖像將不會被處理;默認為 7.0。
python3 spot_detect_and_follow.py --username USER --password PASSWORD --model-path <path_to_pb> --detection-class <integer cladd id> ROBOT_IP
在 Docker 中運行
有關如何在 SpotCORE 上作為 docker 容器運行軟件應用程序的一般說明,請參閱 本文檔。
此示例提供了一個用於在容器中運行的 Dockerfile。 這需要安裝 Nvidia Docker。 您可以按照 https://github.com/NVIDIA/nvidia-docker 上的說明安裝 Nvidia Docker。 Nvidia Docker 預裝在 Spot CORE AI 上。
要構建圖像,您首先需要先複製 tensorflow 檢測器文件:
cp /path/to/examples/spot_tensorflow_detector/tensorflow_object_detector.py .
sudo docker build -t spot_detect_and_follow .
要運行容器:
sudo docker run --gpus all -it \ --network=host \ -v:/model.pb \ -v :/classes.json \ spot_detect_and_follow \ --model-path /model.pb \ --detection-class 1 ROBOT_HOSTNAME
例如,可以在此處獲得在 COCO 數據集上預訓練的 fast_rcnn_inception_v2_coco Tensorflow 模型。 運行示例,其中 --model-path 指向該模型中的 pb 文件,並將 --detection-classes 參數設置為 1 以檢測相機圖像中的人物。 Windows 或 MacOS 不支持該模型。 使用機器人的攝像頭時,預訓練的模型可能不擅長檢測某些類別,因為魚眼失真、低分辨率和黑白圖像會影響圖像質量。 例如,由於缺乏顏色,預先訓練的模型可能無法很好地檢測“運動球”。 ssd_mobilenet_v2_coco 和 faster_rcnn_inception_v2_coco 已經過測試,可以很好地檢測人類。
參考資料
- Spot Detect and Follow
- deactivate : 停用 解除動員
留言
張貼留言
Aron阿龍,謝謝您的留言互動!