承接上一篇的博客:Mujoco仿真【xml文件的学习 1】-CSDN博客
我们继续来学习Mujoco仿真中的xml文件,哦豁,gogogo!
给出这次的xml文件案例【bimanual_viperx_transfer_cube.xml】:
<mujoco><include file="scene.xml"/><include file="vx300s_dependencies.xml"/><worldbody><include file="vx300s_left.xml" /><include file="vx300s_right.xml" /><body name="box" pos="0.2 0.5 0.05"><joint name="red_box_joint" type="free" frictionloss="0.01" /><inertial pos="0 0 0" mass="0.05" diaginertia="0.002 0.002 0.002" /><geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0 0 0" size="0.02 0.02 0.02" type="box" name="red_box" rgba="1 0 0 1" /></body></worldbody><actuator><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_left/waist" kp="800" user="1" forcelimited="true" forcerange="-150 150"/><position ctrllimited="true" ctrlrange="-1.85005 1.25664" joint="vx300s_left/shoulder" kp="1600" user="1" forcelimited="true" forcerange="-300 300"/><position ctrllimited="true" ctrlrange="-1.76278 1.6057" joint="vx300s_left/elbow" kp="800" user="1" forcelimited="true" forcerange="-100 100"/><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_left/forearm_roll" kp="10" user="1" forcelimited="true" forcerange="-100 100"/><position ctrllimited="true" ctrlrange="-1.8675 2.23402" joint="vx300s_left/wrist_angle" kp="50" user="1"/><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_left/wrist_rotate" kp="20" user="1"/><position ctrllimited="true" ctrlrange="0.021 0.057" joint="vx300s_left/left_finger" kp="200" user="1"/><position ctrllimited="true" ctrlrange="-0.057 -0.021" joint="vx300s_left/right_finger" kp="200" user="1"/><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_right/waist" kp="800" user="1" forcelimited="true" forcerange="-150 150"/><position ctrllimited="true" ctrlrange="-1.85005 1.25664" joint="vx300s_right/shoulder" kp="1600" user="1" forcelimited="true" forcerange="-300 300"/><position ctrllimited="true" ctrlrange="-1.76278 1.6057" joint="vx300s_right/elbow" kp="800" user="1" forcelimited="true" forcerange="-100 100"/><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_right/forearm_roll" kp="10" user="1" forcelimited="true" forcerange="-100 100"/><position ctrllimited="true" ctrlrange="-1.8675 2.23402" joint="vx300s_right/wrist_angle" kp="50" user="1"/><position ctrllimited="true" ctrlrange="-3.14158 3.14158" joint="vx300s_right/wrist_rotate" kp="20" user="1"/><position ctrllimited="true" ctrlrange="0.021 0.057" joint="vx300s_right/left_finger" kp="200" user="1"/><position ctrllimited="true" ctrlrange="-0.057 -0.021" joint="vx300s_right/right_finger" kp="200" user="1"/></actuator><keyframe><key qpos="0 -0.96 1.16 0 -0.3 0 0.024 -0.024 0 -0.96 1.16 0 -0.3 0 0.024 -0.024 0.2 0.5 0.05 1 0 0 0"/></keyframe></mujoco>
这段代码描述了一个 MuJoCo 模型的 XML 文件。MuJoCo 是一种物理引擎,用于模拟机器人和其他物体的动态行为。
下面解释一下这个 XML 文件的结构和内容:
<mujoco> 标签是整个 MuJoCo 模型的根标签。
<include> 标签用于包含其他 XML 文件,这里包含了 scene.xml 和 vx300s_dependencies.xml以及vx300s_left.xml和vx300s_right.xml。
<worldbody> 标签包含了模拟世界中的物体和关节。
<body> 标签定义了一个名为 "box" 的物体,位于三维空间中的位置 (0.2, 0.5, 0.05),代表一个红色的方块。
在 <body> 标签内部,定义了一个自由关节 (<joint>) 名为 "red_box_joint",其类型为 "free",具有摩擦损耗 0.01。
<inertial> 标签定义了惯性参数,这里的质量为 0.05,惯性矩阵为对角线为 (0.002, 0.002, 0.002) 的矩阵。
<geom> 标签定义了物体的几何形状,这里是一个红色的长方体,大小为 0.02 x 0.02 x 0.02,摩擦系数为 1。
<actuator> 标签定义了执行器,控制模型的关节。
每个 <position> 标签定义了一个关节的位置控制器,包括关节名称、控制范围、控制参数等。
<keyframe> 标签定义了关键帧,即模型在模拟中的一个状态。
<key> 标签包含了关节位置 (qpos) 的值,以及相关信息。
这个 XML 文件描述了一个包含两个机器人手臂的模型,以及一个红色的方块。每个机器人手臂都有多个关节,通过执行器来控制这些关节的位置。
给出scene.xml文件的内容与解释:
<mujocoinclude>
<!-- <option timestep='0.0025' iterations="50" tolerance="1e-10" solver="Newton" jacobian="dense" cone="elliptic"/>--><asset><mesh file="tabletop.stl" name="tabletop" scale="0.001 0.001 0.001"/></asset><visual><map fogstart="1.5" fogend="5" force="0.1" znear="0.1"/><quality shadowsize="4096" offsamples="4"/><headlight ambient="0.4 0.4 0.4"/></visual><worldbody><light castshadow="false" directional='true' diffuse='.3 .3 .3' specular='0.3 0.3 0.3' pos='-1 -1 1'dir='1 1 -1'/><light directional='true' diffuse='.3 .3 .3' specular='0.3 0.3 0.3' pos='1 -1 1' dir='-1 1 -1'/><light castshadow="false" directional='true' diffuse='.3 .3 .3' specular='0.3 0.3 0.3' pos='0 1 1'dir='0 -1 -1'/><body name="table" pos="0 .6 0"><geom group="1" mesh="tabletop" pos="0 0 0" type="mesh" conaffinity="1" contype="1" name="table" rgba="0.2 0.2 0.2 1" /></body><body name="midair" pos="0 .6 0.2"><site pos="0 0 0" size="0.01" type="sphere" name="midair" rgba="1 0 0 0"/></body><camera name="left_pillar" pos="-0.5 0.2 0.6" fovy="78" mode="targetbody" target="table"/><camera name="right_pillar" pos="0.5 0.2 0.6" fovy="78" mode="targetbody" target="table"/><camera name="top" pos="0 0.6 0.8" fovy="78" mode="targetbody" target="table"/><camera name="angle" pos="0 0 0.6" fovy="78" mode="targetbody" target="table"/><camera name="front_close" pos="0 0.2 0.4" fovy="78" mode="targetbody" target="vx300s_left/camera_focus"/></worldbody></mujocoinclude>
这段代码是一个 MuJoCo 模型的 XML 包含文件,它包含了一些场景的描述和相机设置。
下面逐一解释其中的内容:
<mujocoinclude> 标签定义了一个 MuJoCo 模型的包含文件。
<asset> 标签定义了资源,这里包含了一个名为 "tabletop" 的网格模型文件 tabletop.stl,并指定了模型的缩放比例。
<visual> 标签定义了视觉效果的参数,包括雾效、阴影质量和头灯的环境光。
<worldbody> 标签定义了模拟世界中的物体和相机。
<light> 标签定义了灯光,包括了三个方向光,分别位于不同的位置和方向。
<body> 标签定义了一个名为 "table" 的物体,代表一个桌子,位于世界坐标系的位置 (0, 0.6, 0)。
在 <body> 标签内部,定义了一个网格几何体 (<geom>),使用之前定义的 "tabletop" 模型,设置了颜色为灰色。
<body> 标签定义了一个名为 "midair" 的物体,代表空中的一个点,用于标记。
在 <body> 标签内部,定义了一个球体 (<site>),用于可视化,颜色为红色。
<camera> 标签定义了相机,设置了不同位置和方向的相机,以及其参数,如视野角度 (fovy)、模式 (mode) 和目标 (target)。
这个 XML 文件描述了一个模拟世界,包含了一个桌子、一个标记点和多个相机,用于模拟和可视化场景。
给出vx300s_dependencies.xml文件的内容与解释:
<mujocoinclude><compiler angle="radian" inertiafromgeom="auto" inertiagrouprange="4 5"/><asset><mesh name="vx300s_1_base" file="vx300s_1_base.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_2_shoulder" file="vx300s_2_shoulder.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_3_upper_arm" file="vx300s_3_upper_arm.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_4_upper_forearm" file="vx300s_4_upper_forearm.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_5_lower_forearm" file="vx300s_5_lower_forearm.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_6_wrist" file="vx300s_6_wrist.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_7_gripper" file="vx300s_7_gripper.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_8_gripper_prop" file="vx300s_8_gripper_prop.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_9_gripper_bar" file="vx300s_9_gripper_bar.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_10_gripper_finger_left" file="vx300s_10_custom_finger_left.stl" scale="0.001 0.001 0.001" /><mesh name="vx300s_10_gripper_finger_right" file="vx300s_10_custom_finger_right.stl" scale="0.001 0.001 0.001" /></asset></mujocoinclude>
这段代码是一个 MuJoCo 模型的 XML 包含文件,它主要包含了一系列的网格模型文件以及编译器的设置。
下面逐一解释其中的内容:
<mujocoinclude> 标签定义了一个 MuJoCo 模型的包含文件。
<compiler> 标签定义了编译器的参数,包括角度单位 (angle) 和惯性计算方式 (inertiafromgeom)。
<asset> 标签定义了资源,这里包含了多个网格模型文件。
每个 <mesh> 标签定义了一个网格模型文件的路径 (file)、名称 (name) 和缩放比例 (scale)。
这些模型文件看起来是机器人手臂的各个部件,包括底座、肩部、上臂、下臂、手腕、夹爪等。这些模型文件将被用于构建机器人手臂的模拟环境。
给出vx300s_left.xml文件的内容与解释:
<mujocoinclude><body name="vx300s_left" pos="-0.469 0.5 0"><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_1_base" name="vx300s_left/1_base" contype="0" conaffinity="0"/><body name="vx300s_left/shoulder_link" pos="0 0 0.079"><inertial pos="0.000259233 -3.3552e-06 0.0116129" quat="-0.476119 0.476083 0.52279 0.522826" mass="0.798614" diaginertia="0.00120156 0.00113744 0.0009388" /><joint name="vx300s_left/waist" pos="0 0 0" axis="0 0 1" limited="true" range="-3.14158 3.14158" frictionloss="50" /><geom pos="0 0 -0.003" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_2_shoulder" name="vx300s_left/2_shoulder" /><body name="vx300s_left/upper_arm_link" pos="0 0 0.04805"><inertial pos="0.0206949 4e-10 0.226459" quat="0 0.0728458 0 0.997343" mass="0.792592" diaginertia="0.00911338 0.008925 0.000759317" /><joint name="vx300s_left/shoulder" pos="0 0 0" axis="0 1 0" limited="true" range="-1.85005 1.25664" frictionloss="60" /><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_3_upper_arm" name="vx300s_left/3_upper_arm"/><body name="vx300s_left/upper_forearm_link" pos="0.05955 0 0.3"><inertial pos="0.105723 0 0" quat="-0.000621631 0.704724 0.0105292 0.709403" mass="0.322228" diaginertia="0.00144107 0.00134228 0.000152047" /><joint name="vx300s_left/elbow" pos="0 0 0" axis="0 1 0" limited="true" range="-1.76278 1.6057" frictionloss="60" /><geom type="mesh" mesh="vx300s_4_upper_forearm" name="vx300s_left/4_upper_forearm" /><body name="vx300s_left/lower_forearm_link" pos="0.2 0 0"><inertial pos="0.0513477 0.00680462 0" quat="-0.702604 -0.0796724 -0.702604 0.0796724" mass="0.414823" diaginertia="0.0005911 0.000546493 0.000155707" /><joint name="vx300s_left/forearm_roll" pos="0 0 0" axis="1 0 0" limited="true" range="-3.14158 3.14158" frictionloss="30" /><geom quat="0 1 0 0" type="mesh" mesh="vx300s_5_lower_forearm" name="vx300s_left/5_lower_forearm"/><body name="vx300s_left/wrist_link" pos="0.1 0 0"><inertial pos="0.046743 -7.6652e-06 0.010565" quat="-0.00100191 0.544586 0.0026583 0.8387" mass="0.115395" diaginertia="5.45707e-05 4.63101e-05 4.32692e-05" /><joint name="vx300s_left/wrist_angle" pos="0 0 0" axis="0 1 0" limited="true" range="-1.8675 2.23402" frictionloss="30" /><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_6_wrist" name="vx300s_left/6_wrist" /><body name="vx300s_left/gripper_link" pos="0.069744 0 0"><body name="vx300s_left/camera_focus" pos="0.15 0 0.01"><site pos="0 0 0" size="0.01" type="sphere" name="left_cam_focus" rgba="0 0 1 0"/></body><site pos="0.15 0 0" size="0.003 0.003 0.03" type="box" name="cali_left_site1" rgba="0 0 1 0"/><site pos="0.15 0 0" size="0.003 0.03 0.003" type="box" name="cali_left_site2" rgba="0 0 1 0"/><site pos="0.15 0 0" size="0.03 0.003 0.003" type="box" name="cali_left_site3" rgba="0 0 1 0"/><camera name="left_wrist" pos="-0.1 0 0.16" fovy="20" mode="targetbody" target="vx300s_left/camera_focus"/><inertial pos="0.0395662 -2.56311e-07 0.00400649" quat="0.62033 0.619916 -0.339682 0.339869" mass="0.251652" diaginertia="0.000689546 0.000650316 0.000468142" /><joint name="vx300s_left/wrist_rotate" pos="0 0 0" axis="1 0 0" limited="true" range="-3.14158 3.14158" frictionloss="30" /><geom pos="-0.02 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_7_gripper" name="vx300s_left/7_gripper" /><geom pos="-0.020175 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_9_gripper_bar" name="vx300s_left/9_gripper_bar" /><body name="vx300s_left/gripper_prop_link" pos="0.0485 0 0"><inertial pos="0.002378 2.85e-08 0" quat="0 0 0.897698 0.440611" mass="0.008009" diaginertia="4.2979e-06 2.8868e-06 1.5314e-06" />
<!-- <joint name="vx300s_left/gripper" pos="0 0 0" axis="1 0 0" frictionloss="30" />--><geom pos="-0.0685 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_8_gripper_prop" name="vx300s_left/8_gripper_prop" /></body><body name="vx300s_left/left_finger_link" pos="0.0687 0 0"><inertial pos="0.017344 -0.0060692 0" quat="0.449364 0.449364 -0.54596 -0.54596" mass="0.034796" diaginertia="2.48003e-05 1.417e-05 1.20797e-05" /><joint name="vx300s_left/left_finger" pos="0 0 0" axis="0 1 0" type="slide" limited="true" range="0.021 0.057" frictionloss="30" /><geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0.005 -0.052 0" euler="3.14 1.57 0" type="mesh" mesh="vx300s_10_gripper_finger_left" name="vx300s_left/10_left_gripper_finger"/></body><body name="vx300s_left/right_finger_link" pos="0.0687 0 0"><inertial pos="0.017344 0.0060692 0" quat="0.44937 -0.44937 0.545955 -0.545955" mass="0.034796" diaginertia="2.48002e-05 1.417e-05 1.20798e-05" /><joint name="vx300s_left/right_finger" pos="0 0 0" axis="0 1 0" type="slide" limited="true" range="-0.057 -0.021" frictionloss="30" /><geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0.005 0.052 0" euler="3.14 1.57 0" type="mesh" mesh="vx300s_10_gripper_finger_right" name="vx300s_left/10_right_gripper_finger"/></body></body></body></body></body></body></body></body>
</mujocoinclude>
这段代码描述了一个 MuJoCo 模型中左臂机器人的结构,包括了多个关节和连接部件的定义。
下面解释其中的主要部分:
<mujocoinclude> 标签定义了一个 MuJoCo 模型的包含文件。
<body> 标签定义了机器人左臂的主体,名称为 "vx300s_left",并设置了其在世界坐标系中的位置 (x=-0.469, y=0.5, z=0)。
在 <body> 标签内部,定义了机器人左臂的各个部件,包括了底座、肩部、上臂、下臂、手腕和夹爪等。
每个部件使用了 <body> 标签,并设置了名称、位置和姿态。
在每个部件的内部,定义了其惯性参数 (<inertial>),关节 (<joint>),以及几何形状 (<geom>)。
关节定义了关节的类型、位置、轴向、限制范围和摩擦损耗等。
几何形状定义了部件的外形,使用了网格模型文件,并设置了位置、姿态和其他属性。
这段代码描述了一个左臂机器人的结构,包括了多个关节和连接部件,用于模拟和控制机器人在环境中的运动和操作。
给出vx300s_right.xml文件的内容与解释:
<mujocoinclude><body name="vx300s_right" pos="0.469 0.5 0" euler="0 0 3.1416"><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_1_base" name="vx300s_right/1_base" contype="0" conaffinity="0"/><body name="vx300s_right/shoulder_link" pos="0 0 0.079"><inertial pos="0.000259233 -3.3552e-06 0.0116129" quat="-0.476119 0.476083 0.52279 0.522826" mass="0.798614" diaginertia="0.00120156 0.00113744 0.0009388" /><joint name="vx300s_right/waist" pos="0 0 0" axis="0 0 1" limited="true" range="-3.14158 3.14158" frictionloss="50" /><geom pos="0 0 -0.003" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_2_shoulder" name="vx300s_right/2_shoulder" /><body name="vx300s_right/upper_arm_link" pos="0 0 0.04805"><inertial pos="0.0206949 4e-10 0.226459" quat="0 0.0728458 0 0.997343" mass="0.792592" diaginertia="0.00911338 0.008925 0.000759317" /><joint name="vx300s_right/shoulder" pos="0 0 0" axis="0 1 0" limited="true" range="-1.85005 1.25664" frictionloss="60" /><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_3_upper_arm" name="vx300s_right/3_upper_arm"/><body name="vx300s_right/upper_forearm_link" pos="0.05955 0 0.3"><inertial pos="0.105723 0 0" quat="-0.000621631 0.704724 0.0105292 0.709403" mass="0.322228" diaginertia="0.00144107 0.00134228 0.000152047" /><joint name="vx300s_right/elbow" pos="0 0 0" axis="0 1 0" limited="true" range="-1.76278 1.6057" frictionloss="60" /><geom type="mesh" mesh="vx300s_4_upper_forearm" name="vx300s_right/4_upper_forearm" /><body name="vx300s_right/lower_forearm_link" pos="0.2 0 0"><inertial pos="0.0513477 0.00680462 0" quat="-0.702604 -0.0796724 -0.702604 0.0796724" mass="0.414823" diaginertia="0.0005911 0.000546493 0.000155707" /><joint name="vx300s_right/forearm_roll" pos="0 0 0" axis="1 0 0" limited="true" range="-3.14158 3.14158" frictionloss="30" /><geom quat="0 1 0 0" type="mesh" mesh="vx300s_5_lower_forearm" name="vx300s_right/5_lower_forearm"/><body name="vx300s_right/wrist_link" pos="0.1 0 0"><inertial pos="0.046743 -7.6652e-06 0.010565" quat="-0.00100191 0.544586 0.0026583 0.8387" mass="0.115395" diaginertia="5.45707e-05 4.63101e-05 4.32692e-05" /><joint name="vx300s_right/wrist_angle" pos="0 0 0" axis="0 1 0" limited="true" range="-1.8675 2.23402" frictionloss="30" /><geom quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_6_wrist" name="vx300s_right/6_wrist" /><body name="vx300s_right/gripper_link" pos="0.069744 0 0"><body name="vx300s_right/camera_focus" pos="0.15 0 0.01"><site pos="0 0 0" size="0.01" type="sphere" name="right_cam_focus" rgba="0 0 1 0"/></body><site pos="0.15 0 0" size="0.003 0.003 0.03" type="box" name="cali_right_site1" rgba="0 0 1 0"/><site pos="0.15 0 0" size="0.003 0.03 0.003" type="box" name="cali_right_site2" rgba="0 0 1 0"/><site pos="0.15 0 0" size="0.03 0.003 0.003" type="box" name="cali_right_site3" rgba="0 0 1 0"/><camera name="right_wrist" pos="-0.1 0 0.16" fovy="20" mode="targetbody" target="vx300s_right/camera_focus"/><inertial pos="0.0395662 -2.56311e-07 0.00400649" quat="0.62033 0.619916 -0.339682 0.339869" mass="0.251652" diaginertia="0.000689546 0.000650316 0.000468142" /><joint name="vx300s_right/wrist_rotate" pos="0 0 0" axis="1 0 0" limited="true" range="-3.14158 3.14158" frictionloss="30" /><geom pos="-0.02 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_7_gripper" name="vx300s_right/7_gripper" /><geom pos="-0.020175 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_9_gripper_bar" name="vx300s_right/9_gripper_bar" /><body name="vx300s_right/gripper_prop_link" pos="0.0485 0 0"><inertial pos="0.002378 2.85e-08 0" quat="0 0 0.897698 0.440611" mass="0.008009" diaginertia="4.2979e-06 2.8868e-06 1.5314e-06" />
<!-- <joint name="vx300s_right/gripper" pos="0 0 0" axis="1 0 0" frictionloss="30" />--><geom pos="-0.0685 0 0" quat="0.707107 0 0 0.707107" type="mesh" mesh="vx300s_8_gripper_prop" name="vx300s_right/8_gripper_prop" /></body><body name="vx300s_right/left_finger_link" pos="0.0687 0 0"><inertial pos="0.017344 -0.0060692 0" quat="0.449364 0.449364 -0.54596 -0.54596" mass="0.034796" diaginertia="2.48003e-05 1.417e-05 1.20797e-05" /><joint name="vx300s_right/left_finger" pos="0 0 0" axis="0 1 0" type="slide" limited="true" range="0.021 0.057" frictionloss="30" /><geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0.005 -0.052 0" euler="3.14 1.57 0" type="mesh" mesh="vx300s_10_gripper_finger_left" name="vx300s_right/10_left_gripper_finger"/></body><body name="vx300s_right/right_finger_link" pos="0.0687 0 0"><inertial pos="0.017344 0.0060692 0" quat="0.44937 -0.44937 0.545955 -0.545955" mass="0.034796" diaginertia="2.48002e-05 1.417e-05 1.20798e-05" /><joint name="vx300s_right/right_finger" pos="0 0 0" axis="0 1 0" type="slide" limited="true" range="-0.057 -0.021" frictionloss="30" /><geom condim="4" solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0.005 0.052 0" euler="3.14 1.57 0" type="mesh" mesh="vx300s_10_gripper_finger_right" name="vx300s_right/10_right_gripper_finger"/></body></body></body></body></body></body></body></body>
</mujocoinclude>
这段代码描述了一个 MuJoCo 模型中右臂机器人的结构,与之前描述的左臂机器人相似,也包括了多个关节和连接部件的定义。
下面解释其中的主要部分:
<mujocoinclude> 标签定义了一个 MuJoCo 模型的包含文件。
<body> 标签定义了机器人右臂的主体,名称为 "vx300s_right",并设置了其在世界坐标系中的位置 (x=0.469, y=0.5, z=0),以及姿态为 (roll=0, pitch=0, yaw=3.1416),表示绕 Z 轴旋转 180 度。
在 <body> 标签内部,定义了机器人右臂的各个部件,包括了底座、肩部、上臂、下臂、手腕和夹爪等,与左臂结构相似。
每个部件使用了 <body> 标签,并设置了名称、位置和姿态。
在每个部件的内部,定义了其惯性参数 (<inertial>),关节 (<joint>),以及几何形状 (<geom>)。
关节定义了关节的类型、位置、轴向、限制范围和摩擦损耗等。
几何形状定义了部件的外形,使用了网格模型文件,并设置了位置、姿态和其他属性。
这段代码描述了一个右臂机器人的结构,包括了多个关节和连接部件,用于模拟和控制机器人在环境中的运动和操作。
下面在mujoco的bin目录中启动XML文件观看模型的效果:
在bin目录中的文件夹中开启一个终端并执行:
./simulate bimanual_viperx_transfer_cube.xml
没错,这正是斯坦福的aloha双臂!
~~~这个xml文件的案例展示到此结束~~~