Back to top
  • 공유 Share
  • 인쇄 Print
  • 글자크기 Font size
URL copied.

輝達(NVIDIA,NVDA)公開 Holoscan 5 重力補償範例

在工作台測試重力補償控制的機器手臂 / TokenPost.ai

輝達(NVIDIA,NVDA)9日公開以 Holoscan 5 SDK 建置機器手臂重力補償控制迴路的範例,展示讀取關節狀態、計算支撐手臂重量所需扭矩,再向馬達送出指令的流程。

輝達在技術部落格表示,範例使用 Seeed Studio 的 reBot Arm B601-DM,分別以 Python 和 C++ 實作相同控制流程。重力補償會依手臂姿勢計算所需扭矩,讓馬達支撐手臂重量;範例中,使用者用手移動手臂時,馬達會持續支撐它。

控制迴路由三個運算子組成,分別負責讀取關節狀態、計算重力扭矩及傳送馬達指令。中間的計算步驟使用 Pinocchio,根據包含機器人結構與質量資訊的 URDF 模型,計算各關節所需的重力扭矩。

三個運算子在同一個控制分區內依序執行,以避免階段之間跨執行緒傳遞資料。佇列會優先保留最新狀態,避免舊觀測值累積。啟動前可檢查圖表連線與設定,也可使用 Nsight Systems 檢視各階段延遲和週期變動。

關節狀態讀取設定為每 2.5 毫秒啟動一次,相當於每秒 400 次;這不代表實際硬體的狀態更新一定能維持此頻率。技術指南指出,若執行延遲,系統可能會合併處理累積的週期。

輝達公布的 p99.99 延遲數據顯示,在固定並隔離 CPU 前後,C++ 實作從 86.6 微秒降至 17.2 微秒,Python 實作則從 1,373.5 微秒降至 142.6 微秒。輝達表示,兩者分別改善約 5 倍和 9.6 倍。

比較實驗對每種設定測量超過 100 萬次控制週期,並排除前 10 秒。研究人員將控制執行緒固定在特定 CPU 核心,並把輔助及效能分析執行緒安排在其他核心,再將兩個實體核心與其他應用程式隔離。測量時間從第一個運算子開始執行,到最後一個運算子開始執行為止。

這項測量不包含傳送馬達指令的時間,也不包含從實際感測器到馬達的完整耗時,因此公布的數據只反映控制迴路內運算子區段的時間,與實際裝置的整體反應時間範圍不同。相關測量方式見輝達技術指南。

範例已在 x86 Ubuntu 24.04、Jetson Orin Nano 和 Jetson Thor 上測試。執行 Python 範例需要 Linux 與 Python 3.12 或更新版本。

輝達於 10 月 20 日宣布 Holoscan 5,並表示已重新設計執行環境,以及執行和設定 API。這套 SDK 可透過同一套運算子與圖表架構處理感測器資料和控制工作;此次機器手臂範例則將這套架構用於實際裝置。

實際應用時,回饋資料是否及時,以及如何停止系統都很重要。輝達技術指南指出,預設的 motorbridge 驅動程式會回傳已儲存的回饋資料,但不附上接收時間或封包編號。若回饋中斷而指令仍持續傳送,系統可能沿用舊的關節狀態。

若一批指令在預設 100 毫秒監控逾時值內未完成,監控器會停止圖表並嘗試停用馬達;但它不會偵測回饋資料是否已停滯。

停止控制後,馬達不再支撐手臂重量,手臂可能下墜。教程建議啟動前先將手臂置於安全的原點位置,並在正常結束前以手動方式將手臂移回該位置。

<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>

Most Popular

Other related articles

Comment 0

Comment tips

Great article. Requesting a follow-up. Excellent analysis.

0/1000

Comment tips

Great article. Requesting a follow-up. Excellent analysis.
1