π? 機器人主控腳本都在 examples 中:
可以看到包含了多種類機器人適配
此筆記首先記錄了 aloha_real 部分
aloha_real 中,main.py 是 openpi ALOHA 平臺上“主控執行入口”,負責:
- 建立與推理服務器(serve_policy.py,WebSocket服務)的通信
- 啟動實際的機器人環境交互回路(包括視覺、動作、狀態反饋)
- 循環執行策略推理與動作下發,控制機器人完成任務
目錄
1 庫引用
2?參數定義
3?主流程 main
4 流程邏輯
5?使用方法總結
1 庫引用
import dataclasses # 用于創建結構化參數對象
import logging # 用于日志輸出,便于調試和運行記錄# 導入 openpi_client 相關模塊,用于動作下發與策略服務器通信
from openpi_client import action_chunk_broker
from openpi_client import websocket_client_policy as _websocket_client_policy
from openpi_client.runtime import runtime as _runtime
from openpi_client.runtime.agents import policy_agent as _policy_agent
import tyro # 更現代的命令行參數解析庫# 導入當前目錄下的 env.py,包含真實機器人環境封裝
from examples.aloha_real import env as _env
2?參數定義
# 命令行參數結構體定義
@dataclasses.dataclass
class Args:host: str = "0.0.0.0" # 策略服務端的IP地址或主機名,默認監聽所有地址(本地)port: int = 8000 # 策略服務端口號,默認8000action_horizon: int = 25 # 每次下發給機器人的連續動作片段長度num_episodes: int = 1 # 總共要運行多少個完整任務回合(episode)max_episode_steps: int = 1000 # 每個任務允許的最大動作步數(防止卡死)
- host, port:推理服務器(策略服務端)的地址端口
- action_horizon:每次規劃/推理的連續動作片段長度
- num_episodes:循環任務的數量(實驗集大小,通常=1)
- max_episode_steps:每個任務最大步驟數(超限自動終止)
3?主流程 main
def main(args: Args) -> None:# 實例化WebSocket策略客戶端,與策略服務器建立通信ws_client_policy = _websocket_client_policy.WebsocketClientPolicy(host=args.host,port=args.port,)# 打印推理服務器返回的模型元信息,幫助調試logging.info(f"Server metadata: {ws_client_policy.get_server_metadata()}")metadata = ws_client_policy.get_server_metadata()# 構建機器人運行時回路對象,包括環境、Agent等runtime = _runtime.Runtime(environment=_env.AlohaRealEnvironment(reset_position=metadata.get("reset_pose") # 從服務器元數據獲取初始重置位姿),agent=_policy_agent.PolicyAgent(# 使用ActionChunkBroker,支持批量連續動作推理,減少通訊延遲policy=action_chunk_broker.ActionChunkBroker(policy=ws_client_policy,action_horizon=args.action_horizon,)),subscribers=[], # 可擴展的觀測/日志/可視化訂閱者,目前為空max_hz=50, # 主循環最大頻率(Hz),實際受通信/硬件影響num_episodes=args.num_episodes, # 任務回合數max_episode_steps=args.max_episode_steps, # 單回合最大動作步數)runtime.run() # 啟動機器人任務主循環if __name__ == "__main__":logging.basicConfig(level=logging.INFO, force=True) # 全局設置日志級別tyro.cli(main) # 使用tyro自動從命令行解析參數并運行main()
具體流程如下:
1.?建立一個 WebSocket 客戶端,連接遠端策略推理服務
2.?獲取服務器的模型元數據(包括是否需要語言提示、動作空間信息等)
3.?構建機器人回路的“運行時對象” Runtime,內含多個關鍵組件:
- environment:物理環境交互接口,這里是實際的 ALOHA 機器人(重置姿態等參數從 server metadata 獲取)
- agent:決策主體,這里是通過 PolicyAgent 封裝、帶有“連續 chunk 動作預測能力”的 policy
- subscribers:訂閱者/觀察器(可擴展,用于實時數據流轉或遠程監控)
- max_hz:主循環最大頻率
- num_episodes、max_episode_steps:回合數與最大步長
ActionChunkBroker 實現了高效的“分塊推理”,一次請求多個動作 chunk,減少通信和延遲
4.?開始回路,實際控制機器人感知、推理、動作執行和反饋的全流程
4 流程邏輯
+-------------------+ WebSocket +---------------------+
| main.py | <-------------> | serve_policy.py |
| (機器人主控) | | (策略推理服務) |
+-------------------+ +---------------------+| v 控制機器人硬件
5?使用方法總結
目前給的幾個機器人樣例還是很詳細的,對于?aloha_real 來說,記一下詳細的流程筆記:
基本流程思路如下:
- 創建一個隔離的 Python 3.10 虛擬環境
- 安裝項目所需的依賴(包括第三方庫和本地開發的包)
- 運行機器人程序的主模塊(examples.aloha_real.main)
1.?創建虛擬環境
# Create virtual environment
uv venv --python 3.11 examples/aloha_real/.venv
使用 uv?在指定路徑下創建一個隔離的 Python 環境,避免與系統或其他項目的依賴沖突
PS:此處建議為了依賴問題安裝?Python 版本 ≥3.11
2. 激活虛擬環境
source examples/aloha_real/.venv/bin/activate
3. 同步依賴
uv pip sync examples/aloha_real/requirements.txt
使用 uv pip 安裝 requirements.txt 中列出的所有依賴包
4. 以可編輯模式安裝本地包
uv pip install -e packages/openpi-client
- -e:可編輯模式,允許直接修改包代碼而無需重新安裝
- packages/openpi-client:本地包的路徑
5. 運行機器人程序
# Run the robot
python -m examples.aloha_real.main
- -m:以模塊形式運行
修改主機 ip:
host: str = "192.168.1.20"
最后,運行連接
python -m examples.aloha_real.main