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看到实际的位置

相关推荐
小鸡吃米…14 小时前
机器学习 - K - 中心聚类
人工智能·机器学习·聚类
好奇龙猫14 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
沈浩(种子思维作者)14 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
minhuan14 小时前
大模型应用:大模型越大越好?模型参数量与效果的边际效益分析.51
人工智能·大模型参数评估·边际效益分析·大模型参数选择
Cherry的跨界思维14 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS15 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
ASF1231415sd15 小时前
【基于YOLOv10n-CSP-PTB的大豆花朵检测与识别系统详解】
人工智能·yolo·目标跟踪
njsgcs15 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
io_T_T15 小时前
迭代器 iteration、iter 与 多线程 concurrent 交叉实践(详细)
python
水如烟15 小时前
孤能子视角:“意识“的阶段性回顾,“感质“假说
人工智能