openpi π? 項目部署運行邏輯(四)——機器人主控程序 main.py — aloha_real

π? 機器人主控腳本都在 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 來說,記一下詳細的流程筆記:

基本流程思路如下:

  1. 創建一個隔離的 Python 3.10 虛擬環境
  2. 安裝項目所需的依賴(包括第三方庫和本地開發的包)
  3. 運行機器人程序的主模塊(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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82503.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用 Python 爬蟲獲取唯品會 VIP 商品詳情:實戰指南

在當今電商競爭激烈的環境中&#xff0c;VIP 商品往往是商家的核心競爭力所在。這些商品不僅代表著品牌的高端形象&#xff0c;更是吸引高價值客戶的關鍵。因此&#xff0c;獲取 VIP 商品的詳細信息對于市場分析、競品研究以及優化自身產品策略至關重要。Python 作為一種強大的…

鴻蒙桌面快捷方式開發

桌面快捷方式開發實戰 [參考文檔] (https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-desktop-shortcuts) 在module.json5配置文件中的abilities標簽下的metadata中設置resource屬性值為$profile:shortcuts_config&#xff0c;指定應用的快捷方式配置文件&…

3分鐘學會跨瀏覽器富文本編輯器開發:精準光標定位+內容插入(附完整代碼)

一、痛點直擊&#xff1a;傳統編輯器的三大坑 作為前端開發&#xff0c;你是否遇到過以下靈魂拷問&#xff1f; ? 為什么Firefox光標能精準定位&#xff0c;IE卻永遠跳轉到開頭&#xff1f;? 圖片上傳后如何保證插入位置不偏移&#xff1f;? 跨瀏覽器兼容測試時&#xff0…

RK3562 Linux-5.10 內核HUSB311 Type-C 控制器芯片調試記錄

硬件原理&#xff1a; 1. type C 接口&#xff1a; 1.1 HUSB311芯片&#xff0c; CC1和CC2 邏輯接到HUSB311 上面&#xff0c; 接I2C0組和USBCC_INT_L USBCC_INT_L 接到GPIO0_A6 做為CC的邏輯中斷 1.2 TYPEC_DP/TYPEC_DM 接到ARM 端的USB3.0 OTG上面 1.2 TYPEC_RX1P/TYPEC…

深入理解Java中的BigDecimal:高精度計算的核心工具

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 引言 在Java編程中&#xff0c;處理浮點數運算時可能會遇到精度丟失的問題。例如&#xff1a; System.out.println(0.1 0.2); // 輸出&#xff1a;0.30000…

大模型微調(面經總結)

持續更新中 一、LORA篇1、介紹一下Lora的原理2、LoRA 是為了解決什么問題提出的&#xff1f;哪些模型適合用 LoRA 微調&#xff1f;什么是低秩分解&#xff1f;**低秩分解&#xff1a;用小矩陣逼近大矩陣** 3、LoRA初始化4、LoRA初始化秩 r 是怎么選的&#xff1f;為什么不選其…

Camera相機人臉識別系列專題分析之一:人臉識別系列專題SOP及理論知識介紹

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a;內存泄漏和內存占用拆解系列專題 這一篇我們開始講&#xff1a; Camera相機人臉識別系列專題分析之一&#xff1a;人臉識別系列專題SOP及理論知識…

【Elasticsearch】PUT` 請求覆蓋式更新

是的&#xff0c;Elasticsearch 中的 PUT 請求是覆蓋式的。當你使用 PUT 請求向索引中寫入文檔時&#xff0c;如果文檔已經存在&#xff0c;Elasticsearch 會完全替換整個文檔的內容&#xff0c;而不是進行部分更新。 覆蓋式的具體行為 - 文檔存在時&#xff1a;PUT 請求會用新…

計算機系統結構-第4章-數據級并行

數據集并行的概念: 并行場景1: 對不同數據執行相同的操作: 串行執行: 可以同時進行: 可以嘗試一個多條指令,多核執行 引入: SISD: 單核,單線程,串行執行,這樣耗時 MIMD: 多核,多線程,并行執行,一條指令多次重復,變成了MIMID 存在的問題: 在標量CPU流水線中&#xff0…

重新安裝解決mac vscode點擊不能跳轉問題

依次執行以下過程 刪除vscode程序 刪除vscode的緩存文件夾(xxx表示你的用戶名) /Users/xxx/Library/Application Support/Code 重新安裝vscode 這時候你會反向可以跳轉項目內的import 文件以及自定義函數。但是import安裝的包還不能點擊跳轉 配置python環境 如果你電腦沒有安…

題目 3334: 藍橋杯2025年第十六屆省賽真題-園藝

題目 3334: 藍橋杯2025年第十六屆省賽真題-園藝 時間限制: 2s 內存限制: 192MB 提交: 129 解決: 37 題目描述 小藍從左到右種了 n 棵小樹&#xff0c;第 i 棵樹的高度為 hi &#xff0c;相鄰樹的間隔相同。 小藍想挪走一些樹使得剩下的樹等間隔分布&#xff0c;且從左到右高度逐…

Chrome 開發中的任務調度與線程模型實戰指南

內容 概述 快速入門指南 核心概念線程詞典 線程任務優先使用序列而不是物理線程 發布并行任務 直接發布到線程池通過 TaskRunner 發布 發布順序任務 發布到新序列發布到當前&#xff08;虛擬&#xff09;主題 使用序列代替鎖將多個任務發布到同一線程 發布到瀏覽器進程中的主線…

詳解osgb的頂點,紋理,索引,UV讀取與存儲

virtual void apply(osg::Geode& node) {for (int i 0; i < node.getNumDrawables(); i){osg::Geometry* geometry dynamic_cast<osg::Geometry*>(node.getDrawable(i));if (geometry){//apply(*g);//***********************************************//解析頂點…

CSS闖關指南:從手寫地獄到“類”積木之旅|得物技術

一、背景 在Web開發網頁設計中&#xff0c;CSS&#xff08;層疊樣式表&#xff09;扮演著至關重要的角色&#xff0c;它用于控制網頁的布局、外觀和視覺效果。CSS不僅可以美化網頁的視覺表現&#xff0c;還可以提高網頁的可訪問性、可維護性和響應式設計。在我們進行網頁開發的…

【大模型應用開發】Qwen2.5-VL-3B識別視頻

0. 編寫代碼并嘗試運行 克隆以下代碼 git clone https://gitee.com/ai-trailblazer/qwen-vl-hello.git 嘗試運行qwen-vl-hello.py&#xff0c;報錯原因缺少modelscope&#xff1a; 1. 安裝qwen-vl-utils工具包 pip install qwen-vl-utils[decord]0.0.8 嘗試運行&#xff0c;…

MySQL 窗口函數深度解析:語法、應用場景與性能優化

一、窗口函數核心概念 ??本質??&#xff1a;對一組與當前行相關聯的行執行計算&#xff0c;??不改變原表行數?? ??與聚合函數的區別??&#xff1a; SELECT department, AVG(salary) -- 普通聚合&#xff1a;每個部門一行 FROM employees GROUP BY department;SE…

新版Chrome瀏覽器加載eDrawings 3D Viewer控件網頁查看DWG、DXF

eDrawings是一款由達索系統&#xff08;DASSAULT SYSTMES&#xff09;開發的免費跨平臺CAD看圖工具&#xff0c;專注于3D模型和2D工程圖的查看、協作與共享。其核心功能包括多格式支持、動態模型展示、跨平臺適配及輕量化操作體驗&#xff0c;適用于工程設計、教育培訓等領域。…

阿姆斯特朗數

阿姆斯特朗數也就是俗稱的水仙花數&#xff0c;是指一個n位數&#xff0c;其各位數字的n次方之和等于該數本身。例如&#xff0c;153是一個水仙花數&#xff0c;因為153&#xff1d;13&#xff0b;53&#xff0b;33。請問100-10000所有水仙花數有哪些。 采用窮舉法對范圍之間的…

vmvare 虛擬機內存不足

centos 擴展物理卷df -hT / sudo du -hx --max-depth1 / | sort -rh | head -n 20 // 查看前20個的大文件 # 清理舊日志&#xff08;保留最近7天&#xff09; sudo find /var/log -type f -mtime 7 -delete sudo journalctl --vacuum-time7d # 清理yum緩存 sudo yum clean …

C++?繼承!!!

一、引言 代碼的復用對于代碼的質量以及程序員的代碼設計上都是非常重要的&#xff0c;C中的許多特性都體現了這一點&#xff0c;從函數復用、模板的引入到今天我們將一起學習的&#xff1a;繼承 二、什么是繼承&#xff1f; 1、繼承的概念 繼承(inheritance)機制是面向對象程…