Mujoco 基础:获取模型中所有 body 的 name, id 以及位姿

视频讲解:Mujoco 基础:获取模型中所有 body 的 name, id 以及位姿_哔哩哔哩_bilibili

代码仓库:https://github.com/LitchiCheng/mujoco-learning

今天介绍下一个很常用的接口:获取模型中所有的 body 的 name,id,以及位姿。

经常做测试时会遇到获取某个 body 的位姿以及利用该位姿,我们可以通过指定 body,先获取 id,再通过 id 获取 ee 的世界坐标系下的位姿,然后将位置作为对运动学的一个目标,同时可以在模型当中添加一些可视化的元素,更直观的来看自己的代码或者说这个实验是否达到预期,如下为常用来的接口或字段:

  1. body的数量

model.nbody

  1. 通过id获取名称

mujoco.mj_id2name

  1. 获取父 id

model.body_parentid

  1. 获取指定 id 的位置

data.body(body_id).xpos

如下代码为获取所有body的id、以及位姿

复制代码
import mujoco
import time
import mujoco_viewer
import numpy as np

class Test(mujoco_viewer.CustomViewer):
    def __init__(self, path):
        super().__init__(path, 3, azimuth=-45, elevation=-30)
        self.path = path
    
    def runBefore(self):
        for body_id in range(self.model.nbody):
            # 参数说明:model=模型,obj_type=对象类型(body),obj_id=body ID
            body_name = mujoco.mj_id2name(self.model, mujoco.mjtObj.mjOBJ_BODY, body_id)
            # 获取父 body ID
            parent_body_id = self.model.body_parentid[body_id]
            # print(f"{body_id:<10} {body_name:<20} {parent_body_id:<15}") 
            pos = self.data.body(body_id).xpos
            quat = self.data.body(body_id).xquat
            print(f"id:{body_id}, name: {body_name}, Position: {pos}, Quaternion: {quat}")
            
    def runFunc(self):
        placeholder = 0

test = Test("./model/franka_emika_panda/scene_pos.xml")
test.run_loop()

也可以通过在viewer中显示body看到实际的位置

相关推荐
lvyuanj17 小时前
深度解析Agent技术演进路径与未来趋势
人工智能
卷卷说风控17 小时前
Claude Code 技术架构深扒:Prompt / Context / Harness 三维设计实践
人工智能·架构·prompt
Frank学习路上17 小时前
【AI技能】跟着费曼学自动驾驶
人工智能·机器学习·自动驾驶
humors22117 小时前
各厂商工具包网址
java·数据库·python·华为·sdk·苹果·工具包
Want59517 小时前
Rokid AI Glasses应用开发实战:把记账助手“戴”在脸上
人工智能
bryant_meng18 小时前
【Reading Notes】(4)Favorite Articles from 2021
人工智能·深度学习·业界资讯
雷工笔记18 小时前
MES / WMS / AGV 交互时序图及生产管理模块界面设计清单
人工智能·笔记
海兰18 小时前
使用 Spring AI 打造企业级 RAG 知识库第二部分:AI 实战
java·人工智能·spring
清空mega18 小时前
动手学深度学习——多尺度锚框
人工智能·深度学习·目标跟踪
pzx_00118 小时前
【优化器】 随机梯度下降 SGD 详解
人工智能·python·算法