Mujoco xml < sensor>

< sensor>

  • jointpos
  • jointvel
  • jointactuatorfrc
  • framequat
  • gyro
  • accelerometer
  • framepos
  • framelinvel
  • touch
  • objtype="site" objname="imu" 和site="imu"的區別
  • python中與sensor有關的寫法
    • 傳感器名字索引第幾個id
    • id索引傳感器名字
    • 傳感器數量
    • sensor中的順序

jointpos

jointpos 是 MuJoCo 內置傳感器類型之一,用于測量關節的位置

對于旋轉關節(hinge):輸出一個標量,單位為 弧度。(一般情況)
對于滑動關節(slide):輸出一個標量, 單位為 米。
對于球關節(ball):輸出為四元數 [w, x, y, z]表示的旋轉,維度為 4。
對于自由關節(free):輸出為 7維(3維位置 + 4維姿態四元數)數據 [x, y, z, qw, qx, qy, qz],表示位置和姿態。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><joint name="joint1" type="hinge" axis="0 0 1"/><geom type="capsule" size="0.05 0.1"/></body></worldbody><sensor><jointpos name="joint1_pos_sensor" joint="joint1"/></sensor>
</mujoco>
<!-- joint="joint1":指定這個傳感器測量 joint1 的位置。 -->
<!-- name="joint1_pos_sensor":這個傳感器的名稱,可用于在Python中查找 -->

不涉及 site、body、geom、objtype、objname 等其他對象類型,因為它工作于關節級別

jointvel

jointvel 是用于測量 關節速度 的傳感器。

輸出的是該關節的瞬時速度:
對于 旋轉關節(hinge),單位是 弧度/秒。
對于 滑動關節(slide),單位是 米/秒。
對于 球關節(ball),輸出的是 3維角速度。
對于 自由關節(free),輸出的是 6維(3維線速度 + 3維角速度)。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><joint name="joint1" type="hinge" axis="0 0 1"/><geom type="capsule" size="0.05 0.1"/></body></worldbody><sensor><jointvel name="joint1_vel_sensor" joint="joint1"/></sensor>
</mujoco>

jointvel 也不會使用 objname、objtype、site,它只針對關節,不針對幾何體、site、body等

jointactuatorfrc

jointactuatorfrc 是 MuJoCo 中的一個傳感器類型,用于測量 作用在關節上的控制力或控制矩。
這個力/矩 是 驅動器(actuator) 施加在關節上的效果,它只適用于那些與關節相關聯的 actuator,如:motor(電機),position,velocity 控制器等。

對于旋轉關節(hinge):輸出的是 力矩,單位是 牛頓·米(Nm)。
對于滑動關節(slide):輸出的是 線性力,單位是 牛頓(N)。
對于多自由度關節(ball、free):每個自由度會有一個相應的力或力矩分量輸出。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><joint name="joint1" type="hinge" axis="0 0 1"/><geom type="capsule" size="0.05 0.1"/></body></worldbody><actuator><motor joint="joint1" ctrlrange="-1 1"/></actuator><sensor><jointactuatorfrc name="joint1_frc_sensor" joint="joint1"/></sensor>
</mujoco>
# 假設仿真過程中 joint1 的驅動器作用力矩為 0.5 Nm
mj_data.sensordata = [0.5]

jointactuatorfrc 僅與關節相關,不依賴 site、body、geom 等對象。所以不會使用 objtype,不會使用objname,不會使用 site。

framequat

framequat 是用于測量某個對象(site、body、geom)的 姿態(方向) 的傳感器。
它的輸出是該對象當前的姿態,以 四元數 [w, x, y, z] 的形式表示。

framequat 需要指定 測量哪個對象的姿態,所以它必須使用:objtype:對象類型(site、body、geom),objname:對象的名稱。不用寫joint,不是作用到joint上的。
objtype 值是什么,就測量什么的姿態,比如site,body,geom。

objtype 和 objname 的用途:framequat 必須 指定 哪個對象的姿態。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><geom type="box" size="0.1 0.1 0.1"/><site name="imu_site" pos="0 0 0.1" size="0.01"/></body></worldbody><sensor><framequat name="imu_quat_sensor" objtype="site" objname="imu_site"/></sensor>
</mujoco>
mj_data.sensordata[start_idx : start_idx+4] = [0.707, 0, 0.707, 0]
# 表示該 site 當前的方向為繞 y 軸旋轉 90 度。

gyro

gyro 是 MuJoCo 用于模擬 陀螺儀 的傳感器。
它測量的是某個對象的 角速度,即該對象在其局部坐標系下繞 x, y, z 軸 的旋轉速度[ωx, ωy, ωz]。單位是 弧度/秒。

gyro 只支持 site,不使用 objtype 和 objname,不能對 body 或 geom 直接測量 gyro(但可以創建 site 附著在 body 或 geom 上)

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><geom type="box" size="0.1 0.1 0.1"/><site name="imu_site" pos="0 0 0.1" size="0.01"/></body></worldbody><sensor><gyro name="imu_gyro_sensor" site="imu_site"/></sensor>
</mujoco>

accelerometer

accelerometer 是 MuJoCo 中用于模擬 加速度計 的傳感器。

它測量的是某個對象(通常是 site)在局部坐標系下的 線加速度[ax, ay, az]。這個加速度包含:線性運動的加速度;重力分量(默認是帶重力的加速度,除非設置排除)。

accelerometer 不使用 objtype 和 objname。只能通過 site 定位測量點。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><geom type="box" size="0.1 0.1 0.1"/><site name="imu_site" pos="0 0 0.1" size="0.01"/></body></worldbody><sensor><accelerometer name="imu_acc_sensor" site="imu_site"/></sensor>
</mujoco>
mj_data.sensordata[start_idx : start_idx+3] = [0.0, 0.0, 9.81]

framepos

framepos 是 MuJoCo 用于測量某個對象(site、body、geom)在 世界坐標系 下的 位置 的傳感器。它輸出的是該對象參考系的 三維平移位置,單位是 米(m)。適用于跟蹤某物體的位置,比如 IMU 位置、物體質心位置等。表示該對象(site、body、geom)在 世界坐標系 下的 x, y, z 位置。不能用于不能用于關節joint。
對于body就是測量某個剛體的質心位置。

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><geom type="box" size="0.1 0.1 0.1"/><site name="imu_site" pos="0 0 0.1" size="0.01"/></body></worldbody><sensor><framepos name="imu_pos_sensor" objtype="site" objname="imu_site"/></sensor>
</mujoco>
mj_data.sensordata[start_idx : start_idx+3] = [0.0, 0.0, 0.6]

framelinvel

framelinvel 是 MuJoCo 中用于測量某個對象(site、body、geom)的 線速度 的傳感器。
它輸出的是該對象在 世界坐標系 下的 線速度分量[vx, vy, vz]。常用于模擬 IMU 中的速度傳感器,或者跟蹤物體運動狀態。

objtype=“site”:指定測量對象類型,可以是 site、body 或 geom。不能用于關節joint

<mujoco><worldbody><body name="link1" pos="0 0 0.5"><geom type="box" size="0.1 0.1 0.1"/><site name="imu_site" pos="0 0 0.1" size="0.01"/></body></worldbody><sensor><framelinvel name="imu_linvel_sensor" objtype="site" objname="imu_site"/></sensor>
</mujoco>
mj_data.sensordata[start_idx : start_idx+3] = [0.1, 0.2, 0.0]

touch

touch 是 MuJoCo 中用于檢測 對象是否發生接觸 的傳感器。
它輸出的是一個標量:0 表示當前沒有接觸;非0 表示有接觸發生(輸出接觸力的模長也就是大小)。

測量某個對象(site、body、geom)在 世界坐標系 下的接觸以及接觸力的傳感器。

<mujoco><worldbody><body name="finger" pos="0 0 0.1"><geom name="finger_geom" type="sphere" size="0.01"/></body><body name="table" pos="0 0 0"><geom name="table_geom" type="box" size="0.2 0.2 0.01"/></body></worldbody><sensor><touch name="finger_touch_sensor" objtype="geom" objname="finger_geom"/></sensor>
</mujoco>
mj_data.sensordata[start_idx] = 5.3
# 表示 finger_geom 正在接觸某物體,接觸力模長為 5.3 牛頓。

objtype=“site” objname=“imu” 和site="imu"的區別

site是定義一個對象的屬性。

site="imu"直接綁定到某個 site 上測量局部數據。是傳感器“裝在哪兒”測局部值。

objtype=“site” objname="imu"測量某個對象(site/body/geom)的世界坐標下狀態。是傳感器“測誰”的全局狀態。

這也使得一些傳感器會使用一個特定寫法,比如像機器人質心imu會寫objtype=“site” objname="imu"表示全局的方向。機器人的陀螺儀gyro會用site="imu"表示機器人自己的旋轉角速度。

python中與sensor有關的寫法

傳感器名字索引第幾個id

# 模型,類型是傳感器,傳感器名字
sensor_id = mujoco.mj_name2id(mj_model, mujoco.mjtObj.mjOBJ_SENSOR, "imu_gyro_sensor")

id索引傳感器名字

sensor_name = mujoco.mj_id2name(self.mj_model, mujoco._enums.mjtObj.mjOBJ_SENSOR, i)
# 得到imu這種

傳感器數量

<sensor><accelerometer site="box_site" name="accel_sensor"/><gyro site="box_site" name="gyro_sensor"/>
</sensor>
print("Number of sensors:", model.nsensor)
# Number of sensors: 2

sensor中的順序

在代碼中要找到xml中sensor的數據需要注意xml中傳感器的順序

   <sensor><jointpos name="joint1_pos" joint="joint1" /><jointpos name="joint2_pos" joint="joint2" /><framequat name="imu_quat" objtype="site" objname="imu" /><gyro name="imu_gyro" site="imu" /><accelerometer name="imu_acc" site="imu" /></sensor>
mj_model = mujoco.MjModel.from_xml_path(config.ROBOT_SCENE)
mj_data = mujoco.MjData(mj_model)print("sensordata 內容:", mj_data.sensordata)
輸出是一個數組這樣,[0.1, 0.2, 0.707, 0, 0.707, 0, 0.01, 0.02, 0.03, 9.8, 0, 0]按索引來是這樣的順序:
sensordata[0] = 0.1    # joint1_pos
sensordata[1] = 0.2    # joint2_pos
sensordata[2] = 0.707  # imu_quat (w)
sensordata[3] = 0.0    # imu_quat (x)
sensordata[4] = 0.707  # imu_quat (y)
sensordata[5] = 0.0    # imu_quat (z)
sensordata[6] = 0.01   # imu_gyro (x)
sensordata[7] = 0.02   # imu_gyro (y)
sensordata[8] = 0.03   # imu_gyro (z)
sensordata[9] = 9.8    # imu_acc (x)
sensordata[10] = 0.0   # imu_acc (y)
sensordata[11] = 0.0   # imu_acc (z)

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

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

相關文章

Python爬蟲從入門到實戰詳細版教程

Python爬蟲從入門到實戰詳細版教程 文章目錄 Python爬蟲從入門到實戰詳細版教程書籍大綱與內容概覽第一部分:爬蟲基礎與核心技術1. 第1章:[爬蟲概述](https://blog.csdn.net/qq_37360300/article/details/147431708?spm=1001.2014.3001.5501)2. 第2章:HTTP協議與Requests庫…

ubuntu--漢字、中文輸入

兩種輸入框架的安裝 ibus 鏈接 (這種方式安裝的中文輸入法不是很智能&#xff0c;不好用)。 Fcitx 鏈接這種輸入法要好用些。 簡體中文檢查 fcitx下載和配置 注意&#xff1a;第一次打開fcitx-config-qt或者fcitx configuration可能沒有“簡體中文”&#xff0c;需要把勾…

Java 數據庫性能優化:SQL 查詢的 10 個關鍵點

Java 數據庫性能優化&#xff1a;SQL 查詢的 10 個關鍵點 在 Java 開發中&#xff0c;數據庫操作是必不可少的一環。然而&#xff0c;隨著數據量的增加&#xff0c;數據庫性能問題往往會成為系統性能的瓶頸。而 SQL 查詢的優化&#xff0c;是提高數據庫性能的重要手段。本文將…

Containerd與Docker的相愛相殺:容器運行時選型指南

容器運行時&#xff08;Container Runtime&#xff09;作為云原生基礎設施的底層引擎&#xff0c;正從Docker一家獨大走向多元化競爭。本文將深入剖析Containerd與Docker的技術血緣、性能差異及選型策略&#xff0c;揭示如何根據場景需求選擇最優解。 一、技術血緣&#xff1a;…

計算機組成與體系結構:緩存(Cache)

目錄 為什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分層設計 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一級緩存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二級緩存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…

HTTP測試智能化升級:動態變量管理實戰與效能躍遷

在Web應用、API接口測試等領域&#xff0c;測試場景的動態性和復雜性對測試數據的靈活管理提出了極高要求。傳統的靜態測試數據難以滿足多用戶并發、參數化請求及響應內容驗證等需求。例如&#xff0c;在電商系統性能測試中&#xff0c;若無法動態生成用戶ID、訂單號或實時提取…

tomcat 的安裝與啟動

文章目錄 tomcat 服務器安裝啟動本地Tomcat服務器 tomcat 服務器安裝 https://tomcat.apache.org/下載 Tomcat 10.0.X 啟動本地Tomcat服務器 進入 Tomcat 的 bin

TCP三次握手與四次揮手面試回答版本

面試官&#xff1a;說一下TCP三次握手的過程 參考面試回答&#xff1a; 在第一次握手的時候、客戶端會隨機生成初始化序號、放到TCP報文頭部的序號字段中、同時把SYN標志設置為1 這樣就表示SYN報文&#xff08;這里是請求報文&#xff09;。客戶端將報文放入 TCP 報文首部的序…

AIGC產品如何平衡用戶體驗與內容安全?

當ChatGPT能寫詩、Sora會拍電影、AI主播24小時帶貨時&#xff0c;一場關于“AI說什么”的隱形戰爭&#xff0c;正在算法與監管的夾縫中悄然爆發。 從DeepSeek的沖擊到多模態技術的祛魅&#xff0c;AIGC正在重塑內容創作的邊界。但同時&#xff0c;諸多質疑也正在發聲&#xff…

安卓垂直進度條

package 你的包名;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android…

hackmyvm-airbind

收集信息 arp-scan -l nmap -sS -v 192.168.195.162 訪問掃描到的ip&#xff0c;直接跳轉到登錄頁面&#xff0c;利用admin/admin弱口令登錄 在settings.php中找到一處文件上傳&#xff0c;上傳一句話木馬&#xff0c;上傳成功 反彈shell 上傳php-reverse-shell.php 抓包&am…

【Rust 精進之路之第14篇-結構體 Struct】定義、實例化與方法:封裝數據與行為

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:超越元組,給數據賦予意義 在之前的學習中,我們了解了 Rust 的基本數據類型(標量)以及兩種基礎的復合類型:元組 (Tuple) 和數組 (Array)。元組允許我們將不同類型的值組合…

jenkins尾隨命令

在訪問jenkins的網址后面可以追加命令&#xff0c;比如訪問地址是 http://10.20.0.124:8080/&#xff0c;常用的有以下幾種方式&#xff1a; 1.關閉Jenkins 只要瀏覽器輸入http://10.20.0.124:8080/exit即可退出&#xff0c;或者http://localhost:8080/exit 2.重啟Jenkins …

相機模型--CMOS和CCD的區別

1--CMOS和CCD的工作原理 CCD&#xff08;Charge Coupled Device&#xff0c;電荷耦合器件&#xff09;&#xff1a; 1. 圖像通過光電效應在感光單元中轉化為電荷&#xff1b; 2. 每個像素上的電荷被依次“耦合”并傳輸到芯片的角落&#xff0c;通過一個或幾個模擬輸出放大器輸…

二叉樹理論基礎

二叉樹種類 滿二叉樹&#xff1a;每個非葉子節點都有且只有兩個子節點。 和完全二叉樹&#xff1a;除了最底層外&#xff0c;其他各層都是滿的&#xff1b;最底層的節點都集中在左側。 二叉搜索樹&#xff1a;對于任意節點 u&#xff0c;左子樹上所有節 點的值都小于 u.val…

使用ZYNQ芯片和LVGL框架實現用戶高刷新UI設計系列教程(第九講)

這一期講解GUI_guider中的容器控件的使用以及相關函數&#xff0c;容器本質上是具有布局和自動調整大小功能的基本對象 &#xff0c;通常用來裝載其他子控件。 打開上一期的項目&#xff0c;在工具欄中選中容器控件拖拽到界面中&#xff0c;具體如圖所示&#xff1a; 容器默認…

qt QGroupButton 實現兩個QPushButton的互斥

import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QButtonGroup, QVBoxLayoutclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 創建兩個 QPushButtonself.button1 QPushButton("按鈕1&quo…

工業物聯網的可視化編程革新:Node-RED與邊緣計算的深度融合-縱橫智控

在工業物聯網的演進歷程中&#xff0c;可視化編程工具正成為打破技術壁壘的核心力量。Node-RED作為開源的可視化編程平臺&#xff0c;通過其獨特的拖拽式邏輯構建能力&#xff0c;為設備連接、數據處理與業務邏輯設計提供了全新范式。本文將深入解析Node-RED的技術優勢&#xf…

Uniapp:view容器(容器布局)

目錄 一、基本概述二、屬性說明三、常用布局3.1 橫向布局3.2 縱向布局3.3 更多布局3.3.1 縱向布局-自動寬度3.3.2 縱向布局-固定寬度3.3.3 橫向布局-自動寬度3.3.4 橫向布局-居中3.3.5 橫向布局-居右3.3.6 橫向布局-平均分布3.3.7 橫向布局-兩端對齊3.3.8 橫向布局-自動填充3.3…

(最新)華為 2026 屆校招實習-硬件技術工程師-硬件通用/單板開發—機試題—(共14套)(每套四十題)

&#xff08;最新&#xff09;華為 2026 屆校招實習-硬件技術工程師-硬件通用/單板開發—機試題—&#xff08;共14套&#xff09;&#xff08;每套四十題&#xff09; 本套題目為硬件通用題目&#xff0c;適合多個崗位方向&#xff0c;如下 **崗位——硬件技術工程師 崗位意向…