Jetson Thor部署OpenClaw控制機(jī)械臂:邊緣AI與物理控制實(shí)戰(zhàn)
1. 項(xiàng)目緣起當(dāng)邊緣AI遇到機(jī)械臂控制最近在折騰一個挺有意思的項(xiàng)目核心目標(biāo)是在NVIDIA Jetson Thor這塊性能怪獸上跑通OpenClaw這個新興的AI智能體框架用它來驅(qū)動一臺SO-Arm機(jī)械臂。聽起來像是把兩個前沿技術(shù)硬生生焊在一起對吧但這事兒背后的邏輯其實(shí)很清晰我們想驗(yàn)證的是能否讓一個具備自主決策和工具調(diào)用能力的AI Agent在資源受限的邊緣設(shè)備上直接、實(shí)時地操控物理世界中的機(jī)械臂完成一些簡單的抓取、放置或交互任務(wù)。Jetson Thor是NVIDIA面向機(jī)器人、邊緣AI和自主機(jī)器推出的頂級計(jì)算平臺算力驚人專為處理復(fù)雜的感知、規(guī)劃和多模態(tài)AI任務(wù)而生。而OpenClaw你可以把它理解為一個“AI智能體操作系統(tǒng)”它允許你通過自然語言或配置文件定義一系列技能Skill然后由AI模型比如Qwen、DeepSeek等作為“大腦”來理解和執(zhí)行這些技能調(diào)用各種工具Tools去完成任務(wù)。SO-Arm則是一個典型的桌面級協(xié)作機(jī)械臂開源、模塊化在創(chuàng)客和機(jī)器人教育領(lǐng)域很常見。這個組合的想象空間很大。傳統(tǒng)的機(jī)械臂控制需要編寫復(fù)雜的運(yùn)動學(xué)逆解、軌跡規(guī)劃代碼調(diào)試門檻高。而如果能讓AI Agent理解“把那個紅色的方塊拿起來放到左邊”這樣的指令并自動分解成一系列底層控制命令那機(jī)器人的易用性和智能化程度將得到質(zhì)的飛躍。這不僅僅是“語音控制機(jī)械臂”而是讓AI具備了理解和執(zhí)行復(fù)雜、多步驟物理任務(wù)的能力。對于倉儲分揀、實(shí)驗(yàn)室自動化、甚至是未來的家庭服務(wù)機(jī)器人這都是一個關(guān)鍵的探索方向。2. 環(huán)境基石Jetson Thor的系統(tǒng)準(zhǔn)備與依賴部署在Jetson Thor上搞開發(fā)第一步永遠(yuǎn)是搞定系統(tǒng)環(huán)境。Thor預(yù)裝的是基于Ubuntu的JetPack SDK但OpenClaw作為一個相對較新的項(xiàng)目其對系統(tǒng)依賴和Python環(huán)境的要求可能比較“挑剔”。2.1 系統(tǒng)級依賴與Python環(huán)境隔離首先更新系統(tǒng)并安裝基礎(chǔ)編譯工具鏈?zhǔn)潜仨毜?。Jetson平臺是ARM架構(gòu)很多預(yù)編譯的Python包可能不兼容需要從源碼編譯。sudo apt update sudo apt upgrade -y sudo apt install -y python3-pip python3-venv git curl wget build-essential cmake緊接著強(qiáng)烈建議使用Python虛擬環(huán)境。這是我在邊緣設(shè)備上開發(fā)血淚教訓(xùn)的總結(jié)。系統(tǒng)Python環(huán)境非常寶貴胡亂安裝包極易導(dǎo)致依賴沖突甚至破壞JetPack自帶的一些關(guān)鍵庫如TensorRT、CUDA相關(guān)綁定。我們?yōu)镺penClaw單獨(dú)創(chuàng)建一個環(huán)境python3 -m venv ~/openclaw_env source ~/openclaw_env/bin/activate激活虛擬環(huán)境后你的命令行提示符前會出現(xiàn)(openclaw_env)字樣。所有后續(xù)的pip安裝操作都必須在這個激活的虛擬環(huán)境中進(jìn)行。2.2 OpenClaw的核心部署與“踩坑”實(shí)錄OpenClaw的官方安裝看似簡單但在ARM平臺上暗藏玄機(jī)。根據(jù)其文檔通常是通過pip安裝pip install openclaw然而直接執(zhí)行大概率會失敗。問題主要出在它的某些依賴項(xiàng)上特別是那些包含了C擴(kuò)展的包比如某些加密庫、加速庫它們可能沒有為ARM64架構(gòu)提供預(yù)編譯的wheel文件pip會嘗試從源碼編譯而編譯過程又可能缺少必要的頭文件或庫。第一個坑系統(tǒng)庫缺失。常見的報(bào)錯是fatal error: Python.h: No such file or directory或關(guān)于openssl/opensslv.h的錯誤。解決方法sudo apt install -y python3-dev libssl-dev libffi-dev第二個坑也是最大的坑uvloop編譯失敗。OpenClaw的異步核心可能依賴uvloop這是一個用Cython寫的高性能事件循環(huán)在ARM上從源碼編譯極其容易失敗。我的經(jīng)驗(yàn)是先嘗試安裝一個更通用的、可能兼容的版本或者如果非必需就在安裝OpenClaw時跳過它。但OpenClaw的依賴聲明可能比較嚴(yán)格。這里提供一個經(jīng)過驗(yàn)證的迂回方案先嘗試安裝一個為manylinux2014_aarch64構(gòu)建的uvloop如果有的話但這通常需要特定的pip版本和索引源配置成功率不高。更可靠的方法是從OpenClaw的GitHub倉庫源碼安裝并允許其使用純Python的替代方案。這需要一些技巧# 克隆倉庫 git clone https://github.com/openclaw/openclaw.git cd openclaw # 查看其setup.py或pyproject.toml找到uvloop的依賴聲明。 # 通常我們可以嘗試編輯requirements.txt或使用環(huán)境變量繞過。 # 一個常見做法是先安裝除uvloop外的其他依賴最后再處理OpenClaw本身。 pip install -r requirements.txt --no-deps # 先不安裝依賴項(xiàng) # 然后手動安裝OpenClaw并告訴setuptools忽略依賴檢查謹(jǐn)慎使用 pip install . --no-deps # 或者更好的方法是創(chuàng)建一個修改過的requirements.txt將uvloop注釋掉或替換為asyncio如果OpenClaw支持回退。實(shí)際上OpenClaw的最新版本可能已經(jīng)考慮到了跨平臺問題。如果上述方法太復(fù)雜最直接的方法是查閱OpenClaw項(xiàng)目在GitHub的Issues頁面搜索“ARM”、“Jetson”、“aarch64”等關(guān)鍵詞很大概率已經(jīng)有先驅(qū)者提供了解決方案或補(bǔ)丁。這就是開源社區(qū)的優(yōu)勢。第三個坑模型文件與運(yùn)行時。OpenClaw的運(yùn)行離不開AI模型。它可能默認(rèn)使用某個在線API如OpenAI但在邊緣離線場景我們更希望使用本地模型。這就需要安裝像ollama、lmstudio這樣的本地模型服務(wù)或者配置OpenClaw使用本地部署的模型端點(diǎn)如通過vLLM、TensorRT-LLM部署的模型。在Jetson Thor上由于內(nèi)存和算力相對充裕運(yùn)行一個70億參數(shù)7B量級的量化模型如Qwen2.5-7B-Instruct是可行的。你需要先部署好模型服務(wù)并確保其API端點(diǎn)通常是http://localhost:11434/v1對于Ollama可以被OpenClaw訪問。注意在Jetson平臺上從源碼編譯任何Python包都是一個耗時且易錯的過程。務(wù)必保持耐心仔細(xì)閱讀錯誤日志。優(yōu)先尋找ARM兼容的wheel文件其次再考慮源碼編譯。對于關(guān)鍵依賴可以嘗試使用pip install --no-binary :all:強(qiáng)制從源碼編譯但這要求所有系統(tǒng)依賴都已就位。3. 技能配置讓OpenClaw“學(xué)會”控制SO-ArmOpenClaw的核心是“技能”Skill。一個技能定義了AI Agent能做什么。要讓OpenClaw控制SO-Arm我們需要創(chuàng)建一個自定義技能這個技能本質(zhì)上是一個Python函數(shù)它接收自然語言指令或結(jié)構(gòu)化參數(shù)然后將其轉(zhuǎn)換為對SO-Arm控制接口的調(diào)用。3.1 SO-Arm控制接口的抽象首先我們需要一個能與SO-Arm通信的Python客戶端。SO-Arm通常通過串口、USB或網(wǎng)絡(luò)如ROS、Modbus TCP、自定義TCP協(xié)議接受控制。假設(shè)我們使用一個基于TCP的簡易指令協(xié)議例如發(fā)送MOVE_TO x,y,z,rx,ry,rz格式的字符串。我們需要編寫一個底層的驅(qū)動類# so_arm_driver.py import socket import json import time class SOArmClient: def __init__(self, host192.168.1.100, port5000): self.host host self.port port self.socket None self.connect() def connect(self): 建立TCP連接 try: self.socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect((self.host, self.port)) print(fConnected to SO-Arm at {self.host}:{self.port}) except Exception as e: print(fConnection failed: {e}) self.socket None def send_command(self, cmd_type, **params): 發(fā)送指令并等待響應(yīng) if not self.socket: print(Not connected to SO-Arm.) return None # 構(gòu)造指令字典 command {type: cmd_type, **params} message json.dumps(command) \n try: self.socket.sendall(message.encode(utf-8)) # 接收響應(yīng)假設(shè)服務(wù)端會返回JSON response self.socket.recv(1024).decode(utf-8).strip() return json.loads(response) if response else None except Exception as e: print(fCommand failed: {e}) return None def move_to(self, x, y, z, rx0, ry0, rz0, speed50): 移動機(jī)械臂末端到指定位姿 return self.send_command(MOVE_TO, xx, yy, zz, rxrx, ryry, rzrz, speedspeed) def gripper_open(self): 打開夾爪 return self.send_command(GRIPPER, actionopen) def gripper_close(self): 關(guān)閉夾爪 return self.send_command(GRIPPER, actionclose) def get_status(self): 獲取機(jī)械臂狀態(tài) return self.send_command(GET_STATUS)這個類封裝了與SO-Arm硬件通信的基本操作。你需要根據(jù)SO-Arm實(shí)際的通信協(xié)議進(jìn)行調(diào)整。3.2 創(chuàng)建OpenClaw自定義技能接下來我們將這個驅(qū)動封裝成OpenClaw能識別的技能。OpenClaw通常通過裝飾器或YAML配置文件來定義技能。這里以裝飾器方式為例# so_arm_skill.py from openclaw.skill import skill from openclaw.types import Message from .so_arm_driver import SOArmClient # 導(dǎo)入上面的驅(qū)動 # 初始化全局驅(qū)動實(shí)例或使用依賴注入 _arm_client None def get_arm_client(): global _arm_client if _arm_client is None: # 這里可以從配置文件中讀取IP和端口 _arm_client SOArmClient(host192.168.1.100, port5000) return _arm_client skill( namecontrol_so_arm, description控制SO-Arm機(jī)械臂執(zhí)行移動、抓取等動作。, parameters{ action: { type: string, description: 要執(zhí)行的動作可選move_to, gripper_open, gripper_close, get_status, required: True }, x: {type: number, description: 目標(biāo)位置X坐標(biāo)毫米, required: False}, y: {type: number, description: 目標(biāo)位置Y坐標(biāo)毫米, required: False}, z: {type: number, description: 目標(biāo)位置Z坐標(biāo)毫米, required: False}, # ... 其他參數(shù) } ) async def control_so_arm(action: str, **kwargs): 根據(jù)指令控制SO-Arm機(jī)械臂。 client get_arm_client() if not client.socket: return 無法連接到SO-Arm機(jī)械臂請檢查網(wǎng)絡(luò)和電源。 if action move_to: # 從kwargs中提取坐標(biāo)參數(shù) x kwargs.get(x) y kwargs.get(y) z kwargs.get(z) if None in (x, y, z): return 移動動作需要提供x, y, z坐標(biāo)參數(shù)。 result client.move_to(x, y, z) return f已發(fā)送移動指令到({x},{y},{z})響應(yīng){result} elif action gripper_open: result client.gripper_open() return f夾爪已打開響應(yīng){result} elif action gripper_close: result client.gripper_close() return f夾爪已關(guān)閉響應(yīng){result} elif action get_status: result client.get_status() return f機(jī)械臂狀態(tài){result} else: return f未知的動作指令{action}這個技能定義了一個名為control_so_arm的函數(shù)它通過skill裝飾器向OpenClaw注冊。AI Agent在分析用戶指令時如果判斷需要調(diào)用機(jī)械臂就會嘗試匹配這個技能并提取出action、x、y等參數(shù)然后調(diào)用這個函數(shù)。3.3 技能集成與OpenClaw配置創(chuàng)建好技能文件后我們需要讓OpenClaw加載它。這通常通過在OpenClaw的配置文件如config.yaml或skills目錄中聲明來實(shí)現(xiàn)。假設(shè)你的項(xiàng)目結(jié)構(gòu)如下~/openclaw_project/ ├── config.yaml ├── skills/ │ └── so_arm_skill.py └── main.py在config.yaml中你需要配置模型端點(diǎn)指向本地Ollama服務(wù)和技能路徑# config.yaml model: provider: openai # 使用OpenAI兼容的API base_url: http://localhost:11434/v1 # Ollama的API地址 api_key: ollama # Ollama不需要真key但字段需要存在 model: qwen2.5:7b # 你本地部署的模型名稱 skills: paths: - ./skills # 技能文件所在目錄 # 其他配置如日志級別、網(wǎng)關(guān)設(shè)置等 logging: level: INFO然后在你的主程序main.py中啟動OpenClaw并加載配置# main.py import asyncio from openclaw import OpenClaw import yaml async def main(): # 加載配置文件 with open(config.yaml, r) as f: config yaml.safe_load(f) # 創(chuàng)建OpenClaw實(shí)例 claw OpenClaw(configconfig) # 啟動OpenClaw await claw.start() # 這里可以添加一個簡單的對話循環(huán)或者連接飛書/微信等網(wǎng)關(guān) # 例如測試一個指令 test_response await claw.process_message(用戶說請把機(jī)械臂移動到X100, Y200, Z300的位置。) print(fAI回復(fù): {test_response}) # 保持運(yùn)行 await asyncio.Event().wait() if __name__ __main__: asyncio.run(main())當(dāng)OpenClaw啟動時它會掃描./skills目錄自動加載so_arm_skill.py中定義的control_so_arm技能。AI模型在理解指令“把機(jī)械臂移動到X100, Y200, Z300的位置”后會識別出需要調(diào)用control_so_arm技能并自動填充參數(shù)actionmove_to, x100, y200, z300。4. 通信橋接從自然語言到控制指令的轉(zhuǎn)化邏輯這是整個項(xiàng)目最核心也最微妙的部分。OpenClaw的AI模型如何準(zhǔn)確地將一句模糊的自然語言指令解析成結(jié)構(gòu)化的技能調(diào)用參數(shù)這不僅僅依賴于模型本身的理解能力更依賴于我們?nèi)绾卧O(shè)計(jì)技能的描述Description和參數(shù)Parameters。4.1 技能描述與提示工程回顧我們定義的技能description控制SO-Arm機(jī)械臂執(zhí)行移動、抓取等動作。, parameters{ action: { type: string, description: 要執(zhí)行的動作可選move_to, gripper_open, gripper_close, get_status, required: True }, x: {type: number, description: 目標(biāo)位置X坐標(biāo)毫米, required: False}, ... }這里的description和每個參數(shù)的description至關(guān)重要。它們會被OpenClaw拼接到給AI模型的系統(tǒng)提示System Prompt或函數(shù)調(diào)用Function Calling描述中。模型正是根據(jù)這些文本來判斷“用戶的話是否在請求這個技能”以及“用戶的話里哪些詞對應(yīng)哪個參數(shù)”。舉例分析用戶指令“夾爪打開一下。”AI模型分析這句話的核心意圖是操作夾爪。掃描所有已加載技能的描述發(fā)現(xiàn)control_so_arm的描述是“控制SO-Arm機(jī)械臂執(zhí)行移動、抓取等動作。”“抓取”與“夾爪”相關(guān)。進(jìn)一步查看該技能的參數(shù)發(fā)現(xiàn)action參數(shù)描述中包含“gripper_open”。因此模型推斷出應(yīng)該調(diào)用control_so_arm(actiongripper_open)。用戶指令“去位置(150, 0, 250)?!盇I模型分析這句話包含明確的坐標(biāo)信息。匹配到control_so_arm技能其參數(shù)中有x, y, z。模型需要從文本中提取數(shù)字。它可能會將“150, 0, 250”解析為x150, y0, z250并推斷action應(yīng)為move_to因?yàn)橐苿硬判枰鴺?biāo)。所以最終調(diào)用是control_so_arm(actionmove_to, x150, y0, z250)。這里的關(guān)鍵技巧描述要具體且包含同義詞在技能描述和參數(shù)描述中盡可能多地包含用戶可能使用的詞匯。例如在action的描述里除了“move_to”可以加上“移動到”、“去”、“定位到”在夾爪動作描述里加上“張開”、“合攏”、“抓住”、“松開”。參數(shù)類型要準(zhǔn)確type: number會引導(dǎo)模型從文本中提取數(shù)字。如果坐標(biāo)可能是字符串格式如“150mm”你可能需要更復(fù)雜的解析邏輯或者在技能函數(shù)內(nèi)部做清洗。處理模糊指令對于“把那個東西拿過來”這種指令模型目前是無法理解的因?yàn)樗狈σ曈X感知和“那個東西”的指代信息。這需要結(jié)合視覺識別技能先識別出“東西”的坐標(biāo)再調(diào)用移動和抓取技能。這引出了多技能協(xié)作Agent的概念。4.2 多技能協(xié)作與工作流一個復(fù)雜的任務(wù)如“把桌上的紅色方塊放到盒子里”需要分解為多個子技能視覺識別技能識別“紅色方塊”和“盒子”在相機(jī)坐標(biāo)系下的位置。坐標(biāo)轉(zhuǎn)換技能將相機(jī)坐標(biāo)系下的位置轉(zhuǎn)換到機(jī)械臂基坐標(biāo)系下的(x, y, z)。路徑規(guī)劃技能可選計(jì)算無碰撞的移動軌跡。機(jī)械臂控制技能我們的control_so_arm執(zhí)行移動和抓取。OpenClaw的Agent能力允許你定義這樣的工作流。你可以創(chuàng)建一個“主”技能或使用OpenClaw的會話記憶和規(guī)劃能力讓AI模型自己決定調(diào)用技能的先后順序。這通常通過更高級的提示詞設(shè)計(jì)或者利用OpenClaw的“規(guī)劃器”Planner功能來實(shí)現(xiàn)。在配置上你可能需要設(shè)置enable_planning: true并確保模型有足夠強(qiáng)的推理能力如使用Qwen2.5-14B或更高參數(shù)量的模型。模型會根據(jù)全局目標(biāo)“把紅色方塊放到盒子里”自主規(guī)劃出“識別方塊位置 - 移動到方塊上方 - 抓取 - 識別盒子位置 - 移動到盒子上方 - 釋放”的行動鏈并依次調(diào)用相應(yīng)的技能。5. 實(shí)戰(zhàn)調(diào)試與穩(wěn)定性優(yōu)化將一切組裝起來并啟動后真正的挑戰(zhàn)才剛剛開始。在Jetson Thor這樣的邊緣設(shè)備上運(yùn)行完整的AI Agent加硬件控制鏈路穩(wěn)定性是首要問題。5.1 端到端鏈路測試與排錯分層測試硬件層先用一個簡單的Python腳本不通過OpenClaw測試SOArmClient確保TCP連接、指令發(fā)送、響應(yīng)接收都正常。這是基礎(chǔ)必須首先打通。技能層在OpenClaw環(huán)境內(nèi)寫一個測試腳本直接調(diào)用control_so_arm技能函數(shù)傳入硬編碼參數(shù)看機(jī)械臂是否動作。這排除了AI模型解析的問題。模型層在OpenClaw的對話界面或通過API發(fā)送結(jié)構(gòu)非常清晰的指令如“執(zhí)行動作move_to參數(shù)x100, y200, z300”看AI模型能否正確識別并調(diào)用技能。這測試了技能描述的有效性。自然語言層最后才使用真正的自然語言指令如“請移動到100,200,300”觀察整個鏈路的反應(yīng)。常見錯誤與排查技能未找到檢查技能文件是否在配置的skills.paths目錄下Python語法是否有錯誤以及skill裝飾器是否正確導(dǎo)入。參數(shù)解析錯誤AI模型可能提取了錯誤的參數(shù)值。查看OpenClaw的詳細(xì)日志設(shè)置logging.level: DEBUG觀察模型決定調(diào)用技能時生成的參數(shù)列表是什么。根據(jù)錯誤調(diào)整技能或參數(shù)的description。網(wǎng)絡(luò)超時或連接中斷機(jī)械臂控制指令的響應(yīng)時間可能較長。在SOArmClient中增加重試機(jī)制和超時設(shè)置。在技能函數(shù)中使用asyncio.sleep或異步超時控制避免整個OpenClaw進(jìn)程被一個慢速的硬件調(diào)用阻塞。資源競爭Jetson Thor上同時運(yùn)行大語言模型推理和實(shí)時控制循環(huán)CPU/GPU/內(nèi)存資源緊張。使用tegrastats或jtop工具監(jiān)控資源使用情況。考慮將模型服務(wù)Ollama的線程數(shù)、批處理大小調(diào)低或?yàn)镺penClaw進(jìn)程設(shè)置CPU親和性taskset。5.2 性能與延遲優(yōu)化模型選擇與量化在Jetson Thor上選擇推理速度快的模型至關(guān)重要。Qwen2.5-7B-Instruct的4位或5位量化版本GGUF格式通過Ollama運(yùn)行是一個不錯的平衡點(diǎn)。避免使用參數(shù)量過大如14B或未量化的模型。上下文長度管理OpenClaw的會話歷史會作為上下文輸入模型。過長的上下文會顯著增加推理延遲和內(nèi)存占用。在配置中限制上下文長度如4096 tokens并啟用有效的歷史摘要或滑動窗口功能如果OpenClaw支持。技能調(diào)用的異步化確保技能函數(shù)是async的并且在執(zhí)行耗時操作如網(wǎng)絡(luò)IO、等待機(jī)械臂運(yùn)動時使用asyncio.to_thread或異步HTTP客戶端防止阻塞事件循環(huán)。硬件通信優(yōu)化如果SO-Arm的控制協(xié)議允許可以考慮使用二進(jìn)制協(xié)議而非JSON文本協(xié)議以減少數(shù)據(jù)量?;蛘咴跈C(jī)械臂控制器端實(shí)現(xiàn)一個簡單的指令隊(duì)列和狀態(tài)機(jī)Jetson Thor只需發(fā)送高級指令如GOTO_PICK_POSITION由下位機(jī)負(fù)責(zé)具體的軌跡插補(bǔ)從而減少通信頻率和實(shí)時性要求。5.3 安全性與異常處理讓AI控制物理設(shè)備安全是紅線。運(yùn)動范圍限制在SOArmClient的move_to函數(shù)中加入工作空間邊界檢查。如果目標(biāo)坐標(biāo)超出安全范圍直接拒絕執(zhí)行并返回錯誤。def move_to(self, x, y, z, ...): SAFE_X_MIN, SAFE_X_MAX 0, 500 if not (SAFE_X_MIN x SAFE_X_MAX): return {error: fX坐標(biāo){x}超出安全范圍[{SAFE_X_MIN}, {SAFE_X_MAX}]} # ... 其他坐標(biāo)檢查 # 檢查通過后再發(fā)送底層指令 return self._send_raw_command(...)急停與狀態(tài)監(jiān)控實(shí)現(xiàn)一個獨(dú)立的監(jiān)控線程或協(xié)程定期通過get_status查詢機(jī)械臂狀態(tài)如電流、錯誤碼。一旦檢測到異常如堵轉(zhuǎn)、碰撞立即向OpenClaw發(fā)送一個高優(yōu)先級的告警消息或者直接調(diào)用急停技能。指令確認(rèn)機(jī)制對于關(guān)鍵操作如大范圍移動、抓取貴重物品可以在技能中設(shè)計(jì)二次確認(rèn)。例如當(dāng)AI模型解析出移動指令后先不直接執(zhí)行而是回復(fù)用戶“即將移動機(jī)械臂到(100,200,300)請確認(rèn)前方無障礙物并回復(fù)‘確認(rèn)’以繼續(xù)?!?收到確認(rèn)后再執(zhí)行。這可以通過在技能中返回一個特定的“等待確認(rèn)”狀態(tài)并在OpenClaw中設(shè)計(jì)相應(yīng)的會話邏輯來實(shí)現(xiàn)。經(jīng)過以上步驟一個在Jetson Thor上通過OpenClaw智能體控制SO-Arm機(jī)械臂的原型系統(tǒng)就搭建起來了。這個過程充滿了挑戰(zhàn)從ARM環(huán)境下的軟件部署到技能定義的精確描述再到整個系統(tǒng)的穩(wěn)定性和安全性打磨每一步都需要細(xì)致的調(diào)試和豐富的經(jīng)驗(yàn)。但當(dāng)你看到AI通過一句簡單的自然語言指令流暢地驅(qū)動機(jī)械臂完成一個物理任務(wù)時那種成就感無疑是巨大的。這不僅僅是技術(shù)的集成更是向更智能、更易用的人機(jī)協(xié)作邁出的扎實(shí)一步。

相關(guān)新聞

主會話別被調(diào)研淹沒:同步 `Agent` 子代理

主會話別被調(diào)研淹沒:同步 `Agent` 子代理

系列回顧:主循環(huán) 代碼庫工具 REPL 項(xiàng)目上下文 Skills 權(quán)限 Write MCP 概念 MCP 實(shí)現(xiàn) Context Budget Bash compact 2.0 autocompact Hooks Memory 主會話一路 Read / Grep / Bash,細(xì)節(jié)全堆進(jìn) messages[]——下一輪還要帶著這些噪音繼續(xù)聊?!?/p>

2026/8/3 1:07:51 閱讀更多
UML活動圖實(shí)戰(zhàn)指南:從核心元素到復(fù)雜流程設(shè)計(jì)

UML活動圖實(shí)戰(zhàn)指南:從核心元素到復(fù)雜流程設(shè)計(jì)

1. 項(xiàng)目概述:為什么活動圖是系統(tǒng)設(shè)計(jì)的“流程圖”與“劇本”?在軟件工程和系統(tǒng)設(shè)計(jì)的日常工作中,我們常常需要向不同背景的團(tuán)隊(duì)成員——產(chǎn)品經(jīng)理、開發(fā)工程師、測試人員甚至客戶——清晰地傳達(dá)一個復(fù)雜業(yè)務(wù)流程或系統(tǒng)功能的執(zhí)行邏輯。單純靠文…

2026/8/3 2:07:55 閱讀更多
25 DMA 25DMA-10項(xiàng)目實(shí)戰(zhàn):從原理到部署的DMA驅(qū)動開發(fā)指南

25 DMA 25DMA-10項(xiàng)目實(shí)戰(zhàn):從原理到部署的DMA驅(qū)動開發(fā)指南

這次我們來看一個名為“25 DMA 25DMA-10”的技術(shù)項(xiàng)目。從名稱上看,它很可能與數(shù)據(jù)移動或直接內(nèi)存訪問(DMA)技術(shù)相關(guān),特別是涉及25DMA-10這一特定型號或版本。這類項(xiàng)目通常面向嵌入式系統(tǒng)、高性能計(jì)算或特定硬件加速場景的開發(fā)者&a…

2026/8/3 2:07:55 閱讀更多
個人信息泄漏檢測技術(shù)架構(gòu):如何實(shí)現(xiàn)隱私安全的API查詢系統(tǒng)

個人信息泄漏檢測技術(shù)架構(gòu):如何實(shí)現(xiàn)隱私安全的API查詢系統(tǒng)

個人信息泄漏檢測技術(shù)架構(gòu):如何實(shí)現(xiàn)隱私安全的API查詢系統(tǒng) 【免費(fèi)下載鏈接】leak-check 個人信息 “泄漏” 檢測接口 項(xiàng)目地址: https://gitcode.com/gh_mirrors/le/leak-check 在數(shù)字化時代,個人信息安全已成為每個互聯(lián)網(wǎng)用戶必須面對的現(xiàn)實(shí)挑戰(zhàn)…

2026/8/3 1:57:55 閱讀更多
全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請點(diǎn)擊: https://kaifayun.com 第一章:全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級智能文檔處理的核心組件,專注于高精度OCR、語義結(jié)構(gòu)化提取與跨語言實(shí)體對齊。截至2024年第三季度,全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動批量混剪短視頻,自動把視頻發(fā)布到抖音,快手,小紅書,視頻號上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動化設(shè)備及通用機(jī)械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動機(jī)。額定…

2026/8/2 2:52:49 閱讀更多