快速入門(Quickstart)

前言大綱

本指南將幫助您設置編程環境,以使用 Spot Python SDK 成功下指令和控制波士頓動力公司的 Spot 機器人。本指南默認為 Linux 設置。

Windows 用戶:請查找此類註釋以幫助您了解 Windows 與 Linux 的不同之處。

系統設置(System Setup)

系統要求(System Requirements)

波士頓動力 Spot Python SDK 適用於大多數操作系統,包括:
  • Linux Ubuntu 18.04 LTS
  • Windows 10
  • MacOS 10.14 (Mojave)
  • 由於具有圖形的示例太多,因此不鼓勵使用 Windows WSL。

Python要求(Python Requirements)

Spot Python SDK 僅適用於 Python 3.6 或 Python 3.7。不支持 Python 3.8。

可以在 https://www.python.org/ 找到有關安裝 Python 的下載和說明。

我們在本指南中使用“python”,但是……如果您安裝了多個版本的 Python,那麼運行 python 可能會引用不正確的版本(例如 2.7 版)。例如,要在 Ubuntu 18.04 上運行 python 3,您將運行 python3,而在 Windows 上,您可以使用 Python 啟動器( Python launcher) 並運行 py -3。我們的文檔使用 python 假設該命令啟動一個兼容版本的 Python。 Virtualenv(如下所述)是解決這些問題的絕佳方式。

驗證您的 python 安裝版本是否正確。打開命令提示符或啟動您的 Python IDE:
$ python --version
Python 3.6.8

Windows 用戶:在命令行上啟動 Python 解釋器有兩種常用方法。首先,啟動終端:開始 > 命令提示符。在命令提示符下,輸入:

> python.exe

或是

> py.exe

前者會直接調用PATH環境變量中優先級最高的python.exe。(請注意,您還可以提供完整路徑名 c:\path\to\install\python.exe 以直接調用可執行文件)。

後者使用 Python 啟動器,默認情況下會啟動安裝的最新版本的 Python。您還可以選擇將參數傳遞給啟動器以控制要啟動的 Python 版本:
  • py.exe -2 (launches Python 2)
  • py.exe -3 (launches Python 3)
  • py.exe -3.6 (launches Python 3.6)

套件安裝器(Pip Installation)

Pip 是 Python 的軟件包安裝程序。 Spot SDK 及其許多編程示例使用的第三方軟件包均使用 pip 進行安裝。

通過請求其版本來檢查 pip 是否已安裝:

$ python3 -m pip --version
pip 19.2.1 from <PATH_ON_YOUR_COMPUTER>

Windows 用戶 : 

> py.exe -3 -m pip --version

如果找不到 pip,則需要安裝它。有幾個選項:

  • pip 預裝了從 python.org 下載的所有 Python 3 版本 >= 3.4
  • 使用 get-pip.py  安裝腳本
  • 使用特定於操作系統的套件管理器(例如 Ubuntu 上的 python3-pip 套件)
  • 權限被拒絕(Permission Denied):如果您不使用 virtualenv(如下所述),當您使用 pip 安裝軟件包時,您可能會收到 Permission Denied 錯誤,如果是這樣,請將 --user 選項添加到您的 pip 命令中。

使用 virtualenv 管理多個 Python 環境(Manage Multiple Python Environments with virtualenv)

此部分是選項的,但建議使用。

擁有多個 python 版本、anaconda 等的用戶,負責分別維護這些之間的安裝。常見的失敗,包括使用錯誤版本的python,將python包安裝到錯誤的python,或使用與錯誤python相關的pip。提高 Spot 代碼和預先存在的 Python 代碼穩定性的一種方法是使用虛擬環境將它們分開。這裡有一些使用 virtualenv 的技巧。

安裝虛擬環境 virtualenv。

創建一個 virtualenv,小心指向正確的 python 可執行文件。

激活虛擬環境 virtualenv。

根據需要安裝軟件包,包括 Spot SDK。
$ python3 -m pip install virtualenv
$ python3 -m virtualenv my_spot_v2_0_env
$ source my_spot_v2_0_env/bin/activate
$ (install packages including Spot SDK, code, edit, execute, etc.)

要退出 virtualenv…
$ deactivate

注意:請確保 virtualenv 是使用預期版本的 python 創建的。如果你看到:
$ python -m virtualenv my_spot_v2_0_env
Running virtualenv with interpreter /usr/bin/python2 ...

這表示,使用了錯誤的解釋器。您可以將解釋器作為附加參數傳遞,例如:
$ python -m virtualenv -p /usr/bin/python3 my_spot_v2_0_env

Windows 用戶:
> py.exe -3 -m pip install virtualenv
> py.exe -3 -m virtualenv my_spot_v2_0_env
> .\my_spot_v2_0_env\Scripts\activate.bat
> (install packages including Spot SDK, code, edit, execute, etc.)

安裝套件(Install Spot Python Packages)

正確安裝和配置 python 和 pip 後,可以使用以下命令從 PyPI 輕鬆安裝或升級 Python 套件。
$ python3 -m pip install --upgrade bosdyn-client bosdyn-mission bosdyn-choreography-client

安裝 bosdyn-clientbosdyn-choreography-client bosdyn-mission 套件,也將安裝具有相同版本的 bosdyn-api bosdyn-core 套件。上面的命令安裝最新版本的套件。要從 PyPI 安裝不同版本的套件,例如 2.2.0,請使用以下命令。

$ python3 -m pip install bosdyn-client==2.2.0 bosdyn-mission==2.2.0 bosdyn-choreography-client==2.2.0

版本不兼容:

如果您在 pip 安裝過程中看到版本不兼容錯誤,例如:
ERROR: bosdyn-core <VERSION_STRING> has requirement bosdyn-api==<VERSION_STRING>, but you have bosdyn-api 2.2.0 which is incompatible.

嘗試卸載 bosdyn 套件(注意:與安裝不同,您需要明確列出所有 4 個套件)然後重新安裝:
>$ python3 -m pip uninstall bosdyn-client bosdyn-mission bosdyn-api bosdyn-core
$ python3 -m pip install bosdyn-client bosdyn-mission

驗證您的 Spot 套件安裝

確保已安裝套件。
$ python3 -m pip list --format=columns | grep bosdyn
bosdyn-api 2.3.5
bosdyn-choreography-client 2.3.5
bosdyn-choreography-protos 2.3.5
bosdyn-client 2.3.5
bosdyn-core 2.3.5
bosdyn-mission 2.3.5

Windows 用戶:
> python3 -m pip list --format=columns | findstr bosdyn

如果您在目標版本中沒有看到 4 個 bosdyn 套件,則說明安裝過程中出現問題。聯繫 support@bostondynamics.com 尋求幫助。

接下來,啟動python解釋器:
$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bosdyn.client
>>> help(bosdyn.client)
Help on package bosdyn.client in bosdyn:

NAME
bosdyn.client

DESCRIPTION
The client library package.
Sets up some convenience imports for commonly used classes.

PACKAGE CONTENTS
__main__
...

如果套件安裝不正確,您可能會看到如下錯誤:
>>> import bosdyn.client
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'bosdyn.client'

如果是這種情況,請再次運行 python -m pip list 以確保安裝了波士頓動力 Python 套件。

如果您無法在沒有錯誤的情況下導入 bosdyn.client,則您的計算機上可能有多個 Python 實例,並且在運行另一個時已將 bosdyn 安裝到其中一個。檢查 python 可執行文件的路徑名。他們是你期望的地方嗎?如果沒有,這是一個潛在的跡象,表明您可能安裝了多個 python。考慮使用虛擬環境(見上文)。如果所有其他方法都失敗,請聯繫 support@bostondynamics.com 尋求幫助。

驗證你的命令與瀏覽機器人(Verify you can command and query Spot)

要驗證您的套件與 Spot 一起正常工作,您需要:
  • 與您的套件版本相同的 Spot 機器人
  • 機器人上的用戶帳戶

取得Spot機器人(Get a Spot Robot)

聯繫 sales@bostondynamics.com 獲取 Spot 機器人。

取得在Spot上的帳號(Get a user account on the robot)

如果您剛剛將 Spot 機器人拆箱,您會在電池腔內找到一個貼紙,上面有 wifi、管理員和用戶名“用戶”憑據。 但請注意,波士頓動力公司建議您首先讓指定的機器人管理員使用管理員憑據登錄機器人並更改密碼以提高安全性。

以下示例將假設用戶名“user”和密碼“password”。

Ping Spot

Spot 通電。等待風扇關閉(之後可能是 10-20 秒)

通過 wifi 連接到 Spot。

Ping spot at 192.168.80.3

$ ping 192.168.80.3

請求Spot ID(Request Spot’s ID from Spot)

發出以下命令以獲取您的 Spot 機器人的 ID:

$ python3 -m bosdyn.client 192.168.80.3 id
beta-BD-90490007 02-19904-9903 beta29 spot (V3)
Software: 2.3.4 (b11205d698e 2020-12-11 11:53:12)
Installed: 2020-12-11 15:06:57

如果這,成功!SUCCESS! 您現在已成功通過 Python 與 Spot 通信!請注意,返回的輸出會顯示您的 Spot 機器人的唯一序列號、暱稱和機器人類型(Boston Dynamics 有多個機器人)、軟件版本和安裝日期。

如果您看到以下內容:
$ python3 -m bosdyn.client 192.168.80.3 id
Could not contact robot with hostname "192.168.80.3"

機器人未啟動或無法訪問。返回並嘗試使用 ping。您還可以嘗試使用 -v --verbose 來獲取更多信息來調試問題。

從github取得完整的SDK(Get a copy of the full SDK distribution from github)

雖然只需安裝波士頓動力 Python 包就足以部署解決方案,但開發人員需要下載完整的 Spot SDK 發行版才能實際開發解決方案。發行版 con 包含編程示例、protobuf 定義和 API 文檔。

Spot Python SDK 發行版可從 https://github.com/boston-dynamics/spot-sdk 獲得。

用戶可以:
下載 zipfile 發行版:
  • 從網頁中選擇綠色框“克隆或下載Clone or download”。
  • 選擇“下載 ZIP”。
  • 將文件解壓縮到您的主目錄。
  • 將最上級目錄 spot-sdk-master 重命名為 spot-sdk。 (僅用於與本文檔保持一致,也不是必需的)

執行Hello Spot並看到機器人移動(Run Hello Spot - let’s see the robot move!)

好的,現在我們已經正確安裝了python套件,成功使用這些套件與Spot通信,並下載了發行版,讓我們看看機器人做些什麼!

將您的工作目錄更改為發行版中的 hello_spot 範例。使用 requirements.txt 作為參數執行 pip install,以便安裝任何有相依性的套件。然後運行hello_spot:

有用的提示:在使用任何 Spot SDK 編程範例時,請始終使用相關的 requirements.txt 來安裝相依性的第三方套件。
$ cd ~/spot-sdk/python/examples/hello_spot # or wherever you installed Spot SDK
$ python3 -m pip install -r requirements.txt # will install dependent packages
$ python3 hello_spot.py --username user --password password 192.168.80.3

Hello_spot 將失敗,因為沒有 E-Stop 端點。

2020-03-30 15:26:36,283 - ERROR - Robot is E-Stopped. Please use an external E-Stop client, such as the E-Stop SDK example, to configure E-Stop.

如果您看到以下錯誤:

$ python3 hello_spot.py --username usehername --password pazwierd 192.168.80.3 2020-04-03 15:10:28,189 - ERROR - Hello, Spot! threw an exception: bosdyn.api.GetAuthTokenResponse: Provided username/password is invalid.

您的用戶名或密碼不正確。檢查您的拼寫並與您的機器人管理員核實您的憑據。

執行急停(Run an Independent E-Stop)

將您的工作目錄更改為 E-Stop 示例並運行 nogui 版本:
$ cd ~/spot-sdk/python/examples/estop # 或您安裝 Spot SDK 的任何地方
$ python3 -m pip install -r requirements.txt # 將安裝相依性的套件
$ python3 estop_nogui.py --username user --password password 192.168.80.3

現在嘗試運行 estop_gui 版本:

$ python3 estop_gui.py --username user --password password 192.168.80.3

您現在應該在屏幕上顯示一個大的紅色 STOP 按鈕。你現在準備好了! (或在緊急情況下停下來!!)

執行Hello Spot系列2 (Run Hello Spot - Take 2)

好的,現在我們有一個急停。讓它繼續運行,打開第二個 python 窗口,再次運行 hello_spot:

$ cd ~/spot-sdk/python/examples/hello_spot # or wherever you installed Spot SDK
$ python3 hello_spot.py --username user --password password 192.168.80.3

你的 Spot 機器人應該已經啟動了它的電機,站起來,擺了幾個姿勢,拍了一張照片,然後坐下。如果沒有,請務必檢查 Spot 背面的電機電源啟用按鈕是否已正確打開。

再試一次,這一次,按下急停按鈕,觀察機器人“滑行停止glide-stop”。請記住,急停是您的朋友。

恭喜,您現在是一名成熟的 Spot 編程範例操作者!

但是,如果您還想成為一名成熟的 Spot 程序員,則需要更多地了解 Spot 的工作原理。以下是我們建議的後續步驟:

後續步驟 (Next Steps)

閱讀我們的下一節,強烈推薦  Spot Programming 

花點時間探索所有以與 hello_spot 基本相同的方式啟動的 編程範例 programming examples

嘗試對代碼進行簡單的修改。 

注意:如果您使用 zipfile 安裝 SDK,請注意了解您所做的更改,因為用戶有時會無意中將錯誤注入 SDK 代碼。 Git 用戶可以簡單地使用 git diff 來了解他們所做的所有更改。

嘗試  wasd 編程範例 wasd programming example。 這是一個構建在 Python API 之上的更詳細的示例,它允許您使用開發機器上的鍵盤以交互方式控制 Spot。 它涵蓋了比本 快速入門quick start 更詳細的發出命令。 這很有趣!

通讀 協議緩衝區定義 protocol buffer definitions 和  Spot Python SDK 源代碼文檔source code documentation  以了解更多信息。

如果您有任何問題,請發送電子郵件至 support@bostondynamics.com。


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

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

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

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

下載網頁使用 requests 模組