Mujoco xml编写(二)

news/2024/12/29 14:34:51/

目录

.1 运行

1.1 测试

.2 XML

2,1 基础

2.3 简单实例

2.3 进阶例子

 

.1 运行

1.1 测试

基于Mujoco210 Ubuntu 22.04配置安装_啥也不是的py人的博客-CSDN博客完成安装后

import mujoco_py
import os
mj_path= mujoco_py.utils.discover_mujoco()
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
model = mujoco_py.load_model_from_path(xml_path)
sim = mujoco_py.MjSim(model)
print(sim.data.qpos)
sim.step()
print(sim.data.qpos)

运行结果

即为接口没问题

.2 XML

XML 语法 | 菜鸟教程

XML Reference - MuJoCo Documentation

2,1 基础

 模板

 

 注意大小写在XML中是有区别的

1、mujoco

属性-model: 类型-string

可以定义这个模型的名称,也是xml必要开头

2、compiler

这个元素是用于设置内置解析器和编译器选项。解析和编译后不再有任 何影响。这里的设置是全局性的,适用于整个模型。

boundmass: real , "0"

-提供一个比body更低的边界限制,以解决模型建立不准确问题。注意mujoco没有dummy(虚拟实体)设置。

coordinate[坐标系]:[local , global]   "local" for MJCF, always "local" for URDF

-该属性用于指定文档撰写模型的位置方向是在local还是global的。URDF解析器将属性内部设置为loacl,无法修改。

angle:[radian, degree]

-指定弧度制和角度值。MJCF默认弧度制,urdf默认角度制。

meshdir: string, optional

-string是定位mesh或高度场文件路径。

  texturedir:string , optional

-用于搜寻文档

3、optional

timestep:real , "0.002"(实数类型)

-以秒为单位的仿真步长,必须长于CPU时长。

apirate:real , "100"

-套接字API的更新速度。不影响物理仿真。

impratio:real , "1"

-定义较为复杂的摩擦力

gravity:real(3),"0 0 -9.81"

-自然是定义重力的。默认z轴向上。

还有wind、density、viscosity、magnetic风、密度、粘度、磁力等物理性质;

collision : [all , predefined , dynamic] , "all"

-检测几何碰撞。括号内表示检测对象的选择。

4、optional/flag

性质的enable和disable

5、asset

texture、hfield、mesh、skin/bone、material

6、(world)body

name:string,optional

-命名

childclass: string, optional

-继承设置

mocap:[false , true],"false"

-仅为世界实体下属且没有关节才设置为真。

pos: real(3),optional

-默认(0,0,0)

  6.1、body/inertial

pos:real(3),required

-惯性坐标系的位置

quat,axisangle,xyaxes,zaxis,euler

-惯性坐标系方向

mass:real,required

-实体质量。

diainertia:real(3),optional

-对角惯性矩阵,表达相对于惯性坐标系实体的惯性。如果省略则fullinertia必须。

fullinertia:real(6),optional

-3x3的对称阵M,因此只需要六个变量。

6.2、body/joint     在该元素下创建关节,如若没有定义关节,那么实体就是焊接于母体之上的

name:string,optional

class:string,optional

type:[free , ball , slide , hinge],"hinge"

-定义关节类型。

-free-即六自由度关节,就是可以使实体漂浮。

-ball-就是球形关节

-slide-滑动关节

-hinge-铰接关节,有一个转动自由度,并且是默认关节类型

group:int,"0"

-整合关节组,方便调用

pose:real(3),"0 0 0"

-关节位置

axis:real(3)," 0 0 1"

-指定旋转轴铰链关节旋转方向;滑动关节的滑动方向。

range:reeal(2),"0  0"

-可以限制所有关节,除了自由关节

damping:real, "0"

-阻尼设置

9、body/geom  碰撞的必要条件

name:string,optional

class:string,optional

type: [plane,hfield,sphere,capsule,cylinder,box,mesh],"sphere"

-参数代表了几何形状。

rgba:real(4),"0.5  0.5  0.5  1"

-设置颜色和透明度

mesh:string,optional

-应该指的是,设置为网格时,会参考字符串指定形状生成几何形状。

2.3 简单实例

MuJoCo_Lec_1__Working_with_XML_files_(Spring_2022)_哔哩哔哩_bilibili

创建一个hello.xml

然后simulate一下

 或者直接simulate然后拖入xml即可

 ps:mujoco只加载一个xml多个xml无法叠加

以下为代码

<mujoco><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

丢进去的效果

 两个方块的代码

<mujoco><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body><body pos="0 1 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

 

<light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/>

diffuse是光的漫反射颜色

dir是光的照射方向

pos是光的位置

 geom就是导入的物体形状

加一个球的xml如下

<mujoco><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body><body pos="0 1 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body><body pos="0 1 1"><joint type="free"/><geom type="sphere" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

2.3 进阶例子

增加euler角

<mujoco><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 30 0"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

修改渲染措施Frame World可以显示世界坐标系

 compiler 可以修改单位

比如把角度的单位修改为弧度制

 

<mujoco><compiler angle="radian"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 -0.5 0"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

option可以修改一些参数

 修改重力,这样物体降落的很慢

<mujoco><compiler angle="radian"/><option gravity="0 0 -1"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 -0.5 0"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

修改惯性

 加入惯性的xml

<mujoco><compiler angle="radian"/><option gravity="0 0 -1"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 -0.5 0"><joint type="free"/><inertial pos="0 0 0" mass="1" diaginertia="0.01 0.01 0.01"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

inertial pos="0 0 0" pos的修改会影响物体的质心

可以显示mass中心和接触力()

 visual模块

场景和物体更亮

<mujoco><compiler angle="radian"/><visual><headlight ambient="1 0.5 0.5"></visual><option gravity="0 0 -1"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 -0.5 0"><joint type="free"/><inertial pos="0 0 0" mass="1" diaginertia="0.01 0.01 0.01"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody>
</mujoco>

asset

类似于xarco定义一个变量后续标签直接调用

<mujoco><compiler angle="radian"/><visual><headlight ambient="0.5 0.5 0.5"/></visual><asset><material name="white" rgba="1 1 1 1"/></asset><option gravity="0 0 -1"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 -0.5 0"><joint type="free"/><inertial pos="0 0 0" mass="1" diaginertia="0.01 0.01 0.01"/><!-- <geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/> --><geom type="box" size=".1 .2 .3" material="white"/></body></worldbody>
</mujoco>

 加入两个盒子

<mujoco><compiler angle="radian"/><visual><headlight ambient="0.5 0.5 0.5"/></visual><asset><material name="white" rgba="1 1 1 1"/></asset><option gravity="0 0 -1"/><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1" euler="0 0 0"><joint type="free"/><inertial pos="0 0 0" mass="1" diaginertia="0.01 0.01 0.01"/><!-- <geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/> --><geom type="box" size=".1 .2 .3" material="white"/></body><body pos="0 0 2" euler="0 1.57 0"><joint type="free"/><inertial pos="0 0 0" mass="1" diaginertia="0.01 0.01 0.01"/><!-- <geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/> --><geom type="box" size=".1 .2 .3" material="white"/></body></worldbody>
</mujoco>

 


http://www.ppmy.cn/news/260792.html

相关文章

长短连接对压测的影响有多大?!

【引言】 当我们进行压力测试时&#xff0c;长短连接是一个非常重要的参数。但是&#xff0c;你知道吗&#xff1f;长短连接对于压测结果有着非常大的影响&#xff01;如果你不理解这个参数&#xff0c;那么你的压测结果可能会出现严重的偏差。 在这篇文章中&#xff0c;我将…

卡尔曼滤波与组合导航原理(八)遗忘滤波

函数模型 { X k Φ k l k − 1 X k − 1 Γ k − 1 W k − 1 Z k H k X k V k \left\{\begin{array}{l} \boldsymbol{X}_{k}\boldsymbol{\Phi}_{k l k-1} \boldsymbol{X}_{k-1}\boldsymbol{\Gamma}_{k-1} \boldsymbol{W}_{k-1} \\ \boldsymbol{Z}_{k}\boldsymbol{H}_{k} \…

嵌入式Linux应用程序开发——期末复习重点

目录 前言 题型分布第1章 搭建嵌入式Linux开发环境1.1 构建嵌入式linux交叉开发环境1.2 Bootloader 第2章 Linux系统调用及用户编程接口(&#xff21;&#xff30;&#xff29;)2.1.2 用户编程接口(&#xff21;&#xff30;&#xff29;)2.2 Linux 文件I/O系统概述2.3 底层文件…

TUIO+激光投影互动

一款全新的触屏互动方式&#xff0c;把红外灯光覆盖到规则物体的表面&#xff0c; 通过红外摄像头捕捉此区域的红外光的变化经数字处理后&#xff0c;转换为 WIDNWOS的鼠标位移轨迹&#xff0c;从而实现视频、动画、游戏 的效果互动。 由红外摄像捕捉到参与者的肢体动作将图像传…

地面互动投影解决方案

地面互动投影是一种很受欢迎的投影技术&#xff0c;简单来说就是参与者和地面上影像的真实互动&#xff0c;使多名参与者融入场景中&#xff0c;同时参与游戏。 地面互动投影有水波纹、翻转、碰撞、擦除、避让、跟随等多种表现形式。 互动投影系统通过观众的身体动作来与图像…

全息投影是计算机技术吗,全息互动投影是什么?有什么特别优势?

原标题&#xff1a;全息互动投影是什么&#xff1f;有什么特别优势&#xff1f; 说起全息投影&#xff0c;可能很多朋友对此有了解&#xff0c;这是一种记录并且再现物体三维信息的展示方式&#xff0c;而互动投影则是一种通过计算机视觉技术以及多媒体投影显示技术&#xff0c…

【展馆设计】互动多媒体投影有哪些实用价值

互动投影技术是当今展厅设计中流行且常见的多媒体互动技术&#xff0c;与传统投影相比&#xff0c;互动投影最大的特点是游客在观看投影的同时&#xff0c;可以与投影中的图片有很强的互动体验。 一、互动投影&#xff0c;以其新颖的投影方式和极大的观赏价值&#xff0c;可以充…

球幕互动投影

之前课余时间开发的一个球幕互动的演示平台&#xff0c;拿出来和大家分享。 源码下载地址&#xff1a; https://github.com/vic-w/MyUniverse 先看看具体的效果&#xff1a; http://v.youku.com/v_show/id_XMzM3ODEyMjMy.html 这个互动软件是需要投影仪从球幕下方将图像投影到球…