Mujoco xml编写(二)

news2024/11/28 14:17:15

目录

.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.coloradmin.cn/o/620351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习并深入理解闭包

前言 学习闭包前&#xff0c;先学点别的。 程序执行时&#xff1a; 1.编译阶段 创建变量对象GO&#xff0c;包括变量和函数作用域装在一块内存中。但是没有赋值&#xff0c;变量都是undefined,函数&#xff1a;0xxx 2.创建执行上下文 里面有VO对应ao(函数里的变量&#xff0…

数据结构 -- 跳跃链表

跳跃链表的概念 跳跃链表是有序链表的一个变种&#xff0c;在一个有序链表中&#xff0c;查找一个链表中的元素需要进行一次遍历&#xff0c;时间复杂度为O(n)&#xff0c;为了加快查找的过程&#xff0c;能够跳过某些元素呢&#xff1f;一个思路就是牺牲一定的空间换时间&…

入职外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

Redis系列第一篇:ubuntu18.04下源码编译安装Redis 6.2.12

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似&#xff…

EasyExcel设置动态head数据(不是格式)及postman自测的坑

需求背景&#xff1a; 导出某某业务模块的数据&#xff0c;但是&#xff0c;数据列的标题内容是根据当前日期计算出来的。 比如今天是5月20&#xff0c;那么列就是 5/21 、 5/22…以此类推 问题&#xff1a; EasyExcel 通过Bean的注解实现匹配的&#xff0c;这是最便捷的方式&…

这5款小众又好用的软件,你都知道吗?

1.文件比较——WinMerge WinMerge是一款用于比较和合并文件和文件夹的工具。它可以让你对不同的文件和文件夹进行可视化的对比,并显示出差异和相似之处。WinMerge支持多种功能,如合并,同步,过滤,插件等。这款工具非常实用,但是可以提供强大的文件比较功能,是管理文件和解决冲突…

123 2021年国赛 二分搜索+前缀和

题目描述 小蓝发现了一个有趣的数列&#xff0c;这个数列的前几项如下&#xff1a; 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 小蓝发现&#xff0c;这个数列前 1 项是整数 1&#xff0c;接下来 2 项是整数 1 至 2&#xff0c;接下来 3 项是整数 1 至 3&#xff0c;接下来 4 项是整数…

day2 ARM处理器概论

目录 RISC处理器和CISC处理器 SOC(System on Chip) ARM指令集概述 指令集 ARM指令集 编译原理 ARM存储模型 ARM指令存储 ARM工作模式 工作模式的理解 ARM工作模式分类 RISC处理器和CISC处理器 RISC处理器 只保留常用的的简单指令&#xff0c;硬件结构简单&#xff0c;复…

你觉得你很优秀,为什么连一个软件测试面试都过不了?

目录 前言 简历请用数字化结果不要只是堆研工作经历 简历一:我的工作内容有 简历二:我的工作内容有: 当你和HR面对面坐下来时&#xff0c;迎接我们的第一个问题往往是:“来&#xff0c;请简单介绍下你自己吧。 了解你的过去是判断你未来的最好方式 增加好印象&#xff0c…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图&#xff08;3D&#xff09; 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦&#xff0c;男&#xff0c;西安工程大学电子信…

androidstudio ffmpeg 音频转换

java-ffmpeg-音频转换 需求描述功能流程所需条件步骤步骤1步骤2步骤3一些我使用中遇到的异常 需求描述 项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解…

不同品牌或型号的单片机

以下是一些常见的单片机品牌和型号&#xff1a; 微控制器&#xff08;Microchip&#xff09;&#xff1a;PIC系列&#xff08;如PIC16F877A、PIC18F4550&#xff09; 瑞萨电子&#xff08;Renesas&#xff09;&#xff1a;RX系列&#xff08;如RX231、RX65N&#xff09;需要资…

Termius 最好用的SSH 连接工具

Termius 最好用的SSH 连接工具 一、环境准备二、配置2.1 terminus 安装2.2 删除自动更新2.3 修改用户信息 三、使用四、页面展示 该工具 mac os 可直接使用 本文只展示 windows 使用步骤&#xff0c;本教程使用的 termius 版本为 7.59.6 一、环境准备 termius 下载 官网下载地址…

ubuntu上安装docker报错

执行docker命令的时候报错如下&#xff1a; Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 为了解决这个问题&#xff0c;看了一些帖子有的说重启docker.service服务或者看该服务是否已经正常启动&#xff0c;结果网上…

超实用!新手项目经理掏心窝总结的经验

像项目这样复杂的环境中&#xff0c;往往会出现错误判断、沟通不畅、管理不善以及最常见的错误。因此&#xff0c;项目管理需要项目经理有广泛的经验、洞察力和技能&#xff0c;无论是规划、组织还是有效领导团队&#xff0c;以在规定的时间和预算内实现项目目标。在这种情况下…

基于BAT指令定时备份Oracle并发送邮件

前言 在企业级应用程序中&#xff0c;数据是非常重要的资源。因此&#xff0c;我们需要定期备份数据以确保其安全性和完整性。在Oracle数据库中&#xff0c;我们可以使用多种方法来备份数据&#xff0c;其中一种方法是使用BAT脚本来进行自动化备份。 在本文中&#xff0c;我们…

【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】

前言 这是一款基于AI算法的实时变声器&#xff0c;如果你不懂AI也没事&#xff0c;直接使用我提供的一键安装包 链接&#xff1a;https://pan.baidu.com/s/1f3X6JdBVOgeTNPf0B3CRKg 提取码&#xff1a;k5v2 变声器安装使用 有两款变声器&#xff0c;都是基于RVC做的&#xf…

ctfshow——web入门 SSRF

web351web352web353web354web355web356web357web358web359web360 web351 通过hackbar post提交 urlhttp://127.0.0.1/flag.php 获得flag web352 将127.0.0.1和localhost给过滤了&#xff0c;但并不影响post提交 post urlhttp://127.0.0.1/flag.php web353 过滤了localhost和1…

python基础学习1

pyhton数据分析的优势&#xff1a; ①语法简单精炼 ②有很强大的库 ③功能强大 ④适用于构建生产系统 ⑤胶水语言 python数据分析常用的类库&#xff1a; ①IPython------科学计算标准工具集的组成部分 ②NumPy------python科学计算的基础包 ③SciPy--------解…

【手撕Spring源码】深度理解SpringBoot

文章目录 Tomcat内嵌容器Tomcat 基本结构创建Tomcat内嵌容器内嵌Tomcat集成Spring 容器 Boot 自动配置什么是自动配置类自动配置类原理Aop自动配置DataSource自动配置MyBatis自动配置事务自动配置MVC自动配置条件装配 附&#xff1a;注解小总EnableConfigurationPropertiesCond…