11. isaacsim4.2教程-Transform 樹與Odometry

1. 前言

學習目標

在本示例中,你將學習如何:

  • 使用 TF 發布器將相機作為 TF 樹的一部分發布

  • 在 TF 上發布機械臂/可動結構(articulation)的樹狀結構

  • 發布里程計(Odometry)消息


開始之前

前置條件

  • 已完成 “ROS 相機” 和 “URDF 導入:Turtlebot” 教程

  • 已啟用 ROS Bridge,且 roscore 正在運行


2. TF 樹發布器

假設你已經完成了 ROS 相機教程,并且場景中已有兩臺相機。接下來,我們要把它們添加到 TF 樹里,這樣就能實時跟蹤它們在全局坐標系中的位置了。

  1. 打開或新建一個 Action Graph

    • 轉到 Window → Visual Scripting → Action Graph,打開一個新的或已有的可視化腳本編輯窗口。

  2. 添加 ROS1 Publish Transform Tree 節點

    • 在圖中拖入一個 ROS1 Publish Transform Tree 節點。

    • 將它的輸入連接到 On Playback Tick(每幀觸發)和 Isaac Read Simulation Time(仿真時間)節點,如下示例布局。

  3. 配置目標 Prim

    • 選中 ROS1 Publish Transform Tree 節點,在 Property 面板的 targetPrims 字段中填寫:

  4. 查看 TF 樹 : rostopic echo /tf

3.?關節式機器人坐標變換

要獲取關節式機器人中每個連桿(linkage)的坐標變換,只需將機器人的根 Articulation Root 加入 targetPrims 字段。Articulation Root 之后的所有連桿都會被自動發布。

  • targetPrims 字段中添加:

/World/turtlebot3_burger

在 ROS 終端運行:?rostopic echo /tf

驗證機器人所有連桿(無論是固定的還是可動的)的變換是否都發布到了 /tf 話題。

重要提示
如果你發現對關節式機器人生成的 TF 樹選錯了根連桿(root link),可以手動指定 Articulation Root。
這種情況常見于使用 URDF Importer 導入機器人時,勾選了 “Merge Fixed Link” 選項,或是移動機器人模型。

  1. Stage Tree 中選中機器人的根 Prim,在它的 Raw USD Properties 面板里找到 Articulation Root 部分,點擊右上角的 X 將其刪除。

  2. Stage Tree 中選中你想設為根的連桿,在它的 Raw USD Properties 面板里點擊 + ADD,選擇 Physics > Articulation Root,將其添加。

我是通過python腳本修改的,因為我沒有添加root的選項,又找不到:

只能通過代碼修改:

from pxr import Usd, UsdPhysics, UsdGeom# 打開當前 Stage
stage = Usd.Stage.Open("path/to/your/scene.usd")# 定位到你的機器人根 Xform(比如:/World/robot_root)
robot_root = stage.GetPrimAtPath("/World/robot_root")
if not robot_root:raise RuntimeError("找不到 /World/robot_root")# 確保它是一個 Xform
UsdGeom.XformCommonAPI(robot_root).GetResetXformStack()# 給它附上 ArticulationRoot API
UsdPhysics.ArticulationRootAPI.Apply(robot_root)# 保存
stage.GetRootLayer().Save()

4.?發布相對坐標變換

????????默認情況下,所有變換都是相對于世界坐標系(/World)。例如,你可以看到 TurtleBot 的 /base_link 變換是相對于 /World 發布的。
如果想讓變換相對于其他坐標系(比如某個相機),請在 parentPrim 字段中指定該父坐標系。

本示例中,我們希望 TurtleBot 的所有 Prim 都以 /base_link 作為父坐標系:

  • parentPrim 字段中填入:
/World/turtlebot3_burger/base_link
  • 在修改屬性后,務必先 StopPlay 仿真,以驗證 /base_link 是否已成為所有機器人連桿和相機幀的父坐標系。

5. Odometry發布器

把之前的tf圖刪掉,重新在Odometry中構建,否則會有兩個Transform Tree導致沖突!!

要設置Odometry發布器,請按照下圖所示構建一個 Action Graph:

  1. Create → Visual Scripting → Action Graph 中新建或打開一個 Action Graph。

  2. 向圖中添加以下節點,并用 On Playback Tick 觸發它們,每幀執行一次:

    • Isaac Read Simulation Time:讀取仿真時間。

    • Isaac Compute Odometry:計算機器人當前位置。

    • ROS1 Publish Odometry:將里程計消息發布到 /odom 話題。

    • ROS1 Publish Transform Tree(或 Raw TF 發布器):將從 /odom/base_link 的單一坐標變換發布到 TF。

  3. Isaac Compute Odometry 節點的屬性面板(Property)中,將 Chassis Prim 輸入字段設置為你的 TurtleBot 實例(例如 /World/turtlebot3_burger),這樣該節點就能根據機器人底盤計算 Odometry

  4. 啟動仿真并運行以下命令,查看構建好的 TF 樹:rosrun rqt_tf_tree rqt_tf_tree

6. 測試TurtleBot

rosrun rviz rviz,然后添加工具驗證功能。

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

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

相關文章

安寶特新聞丨安寶特與Logivations正式建立合作伙伴關系,共筑物流新未來

近日,安寶特與物流創新企業Logivations簽署合作協議,雙方將深度融合技術專長,共同為客戶提供高效、精準的智能物流解決方案,助力企業實現從人工巡檢到智能管控的跨越式升級。 關于Logivations Logivations是一家深耕物流與供應鏈…

第三階段—8天Python從入門到精通【itheima】-139節(pysqark實戰-前言介紹)

目錄 139節——pysqark實戰-前言介紹 1.學習目標 2.spark是什么 3.如下是詳細介紹 PySpark 的兩種使用方式,并提供具體的代碼示例【大數據應用開發比賽的代碼熟悉如潮水一般沖刷我的記憶】: 一、本地模式(作為 Python 第三方庫使用&#…

redis數據庫的四種取得 shell方法

Redis作為高性能內存數據庫,若配置不當(特別是未授權訪問),將面臨極高安全風險。攻擊者可利用漏洞實現遠程代碼執行(GetShell),嚴重威脅數據安全與服務器控制權。本文深入剖析此類漏洞的核心原理…

墨者:SQL過濾字符后手工繞過漏洞測試(萬能口令)

1. 墨者學院:SQL過濾字符后手工繞過漏洞測試(萬能口令)🚀 2. 漏洞背景分析🔍 近期發現某登錄系統存在SQL注入漏洞,攻擊者可通過構造特殊用戶名admin,a,a)#繞過身份驗證。本文將深入解析其工作原理,并演示完整滲透測試流…

Kafka 順序消費實現與優化策略

在 Apache Kafka 中,實現順序消費需要從 Kafka 的架構和特性入手,因為 Kafka 本身是分布式的消息系統,默認情況下并不完全保證全局消息的順序消費,但可以通過特定配置和設計來實現局部或完全的順序消費。以下是實現 Kafka 順序消費…

CSP-J 2022_第三題邏輯表達式

題目 邏輯表達式是計算機科學中的重要概念和工具,包含邏輯值、邏輯運算、邏輯運算優先級等內容。 在一個邏輯表達式中,元素的值只有兩種可能:0(表示假)和 1(表示真)。元素之間有多種可能的邏輯運…

從釋永信事件看“積善“與“積惡“的人生辯證法

博客目錄起心動念皆是因,當下所受皆是果。"起心動念皆是因,當下所受皆是果。"這句古老的智慧箴言,在少林寺方丈釋永信涉嫌違法被調查的事件中得到了令人唏噓的印證。一位本應六根清凈、持戒修行的佛門領袖,卻深陷貪腐丑…

圖片格式轉換

文章目錄 背景目標實現下載 背景 格式碎片化問題 行業標準差異:不同領域常用格式各異(如設計界用PSD/TIFF,網頁用JPG/PNG/WEBP,系統圖標用ICO/ICNS)。 設備兼容性:老舊設備可能不支持WEBP,專業…

Flutter實現Android原生相機拍照

方法1:使用Flutter的camera插件(完整實現) 1. 完整依賴與權限配置 # pubspec.yaml dependencies:flutter:sdk: fluttercamera: ^0.10.52path_provider: ^2.0.15 # 用于獲取存儲路徑path: ^1.8.3 # 用于路徑操作permission_handler:…

記錄幾個SystemVerilog的語法——隨機

1. 隨機穩定性(random stability)隨機穩定性是指每個線程(thread)或對象(object)的random number generator(RNG)是私有的,一個線程返回的隨機值序列與其他線程或對象的RNG是無關的。隨機穩定性適用于以下情況:系統隨機方法調用:$urandom()和…

初識 docker [下] 項目部署

項目部署Dockerfile構建鏡像DockerCompose基本語法基礎命令項目部署 前面我們一直在使用別人準備好的鏡像,那如果我要部署一個Java項目,把它打包為一個鏡像該怎么做呢? …省略一萬字 站在巨人的肩膀上更適合我們普通人,所以直接介紹兩種簡單…

Android15廣播ANR的源碼流程分析

Android15的廣播ANR源碼流程跟了下實際代碼的流程,大概如下哈:App.sendBroadcast() // 應用發起廣播→ AMS.broadcastIntentWithFeature() // 通過Binder IPC進入system_server進程→ AMS.broadcastIntentLocked() // 權限校驗廣播分類(前…

密碼學中的概率論與統計學:從頻率分析到現代密碼攻擊

在密碼學的攻防博弈中,概率論與統計學始終是破解密碼的“利器”。從古典密碼時期通過字母頻率推測凱撒密碼的密鑰,到現代利用線性偏差破解DES的線性密碼分析,再到側信道攻擊中通過功耗數據的統計特性還原密鑰,統計思維貫穿了密碼分…

力扣刷題977——有序數組的平方

977. 有序數組的平方 題目: 給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。示例 1: 輸入:nums [-4,-1,0,3,10] 輸出:[0,1,9,16,100] 解釋&…

應用加速游戲盾的安全作用

在數字娛樂產業蓬勃發展的今天,游戲已從單純的娛樂工具演變為連接全球數十億用戶的社交平臺與文化載體。然而,伴隨游戲市場的指數級增長,網絡攻擊的頻率與復雜性也呈爆發式上升。從DDoS攻擊導致服務器癱瘓,到外掛程序破壞公平競技…

linux安裝zsh,oh-my-zsh,配置zsh主題及插件的方法

這是一份非常詳細的指南,帶你一步步在 Linux 系統中安裝 Zsh、配置主題和安裝插件。 Zsh(Z Shell)是一個功能強大的 Shell,相比于大多數 Linux 發行版默認的 Bash,它提供了更強的自定義能力、更智能的自動補全、更漂亮…

【設計模式系列】策略模式vs模板模式

策略模式是什么?如何定義并封裝一系列算法策略模式 (Strategy Pattern)模板模式 (Template Pattern)模板模式與策略模式的深度對比與區分混合使用兩種模式的場景策略模式 (Strategy Pattern) 應用場景:當需要根據不同條件選擇不同算法或行為時&#xff…

aigc(1.1) opensora-2.0

open sora-2.0相關鏈接: arxiv鏈接 huggingface頁面 HunyuanVideo VAE open sora2.0的VAE模型復用了HunyuanVideo的3D VAE,HunyuanVideo的arxiv鏈接。下圖來自論文,可見VAE是一個因果注意力的3D結構。在配圖左側,視頻會被編碼為video token序列,而在配圖右側,去噪的vide…

Linux驅動21 --- FFMPEG 音頻 API

目錄 一、FFMPEG 音頻 API 1.1 解碼步驟 創建核心上下文指針 打開輸入流 獲取輸入流 獲取解碼器 初始化解碼器 創建輸入流指針 創建輸出流指針 初始化 SDL 配置音頻參數 打開音頻設備 獲取一幀數據 發送給解碼器 從解碼器獲取數據 開辟數據空間 初始化內存 音頻重采樣…

《計算機“十萬個為什么”》之 [特殊字符] 序列化與反序列化:數據打包的奇妙之旅 ??

《計算機“十萬個為什么”》之 📦 序列化與反序列化:數據打包的奇妙之旅 ??歡迎來到計算機“十萬個為什么”系列! 本文將以「序列化與反序列化」為主題,深入探討計算機世界中數據的打包與解包過程。 讓我們一起解開數據的神秘面…