Mujoco仿真【xml文件的学习 2】

 承接上一篇的博客: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.xmlvx300s_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文件的案例展示到此结束~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13791.shtml

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

相关文章

EventSource 在项目中常用的两种方式

一、认识EventSource EventSource&#xff08;也称为Server-Sent Events&#xff0c;简称SSE&#xff09;是HTML5中的一种新的API&#xff0c;用于实现服务器端向客户端推送事件。其数据主要基于HTTP协议进行传输&#xff0c;并且数据帧必须编码成UTF-8的格式。 eventSource…

本地电子邮件测试工具-MailHog

通过MailHog&#xff0c;可以在浏览器中查看本机发的邮件内容&#xff0c;而无需发送到外网。 https://github.com/mailhog/MailHog在 macOS 环境下&#xff0c;下载文件后: 添加可执行权限:chmod x MailHog_darwin_amd64 运行:./MailHog_darwin_amd64 浏览器打开查看邮件:htt…

LitCTF

[LitCTF 2023]enbase64 base 64 里面有一个换表的函数 写代码 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() {char *result; char Destination[65]; int v3[65];int j;int i; char Source[]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcde…

【Python设计模式15】适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而无法一起工作的类能够一起工作。通过使用适配器模式&#xff0c;可以使得现有的类能够适应新的接口需…

打造高效安全新标杆:智慧楼宇视频智能管理系统的建设探索

大数据、人工智能、5G等技术在城市中的不同应用也让人们看到了数字化和智能化技术赋予城市管理的巨大潜力&#xff0c;为更多城市数字化应用场景的发展带来机遇。在新基建的大背景下&#xff0c;人工智能、物联网等先进技术与基础设施的深度融合&#xff0c;将大力推进电网、楼…

PostgreSQL自带的命令行工具25- ecpg

PostgreSQL自带的命令行工具25- ecpg ecpg 是 PostgreSQL 提供的一个工具&#xff0c;允许在 C 语言程序中嵌入 SQL 语句&#xff0c;从而能够与 PostgreSQL 数据库进行交互。ecpg 全称是 Embedded SQL in C&#xff0c;采用了标准的 SQL 预编译技术&#xff0c;将 SQL 语句嵌…

ArcGIS批量更改所有符号的格式

这期谈一下&#xff0c;如何修改所有符号的样式。 比如&#xff0c;我们需要更改下图的面符号位无轮廓的 该如何批量修改的呢&#xff1f; 视频教学吧&#xff1a; ArcGIS批量更改所有符号的格式 ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放-CSDN博客文章浏览阅…

el-input 自动获取焦点

前言&#xff1a; 需求描述&#xff1a;在 Dialog 对话框中 使用 input 组件&#xff1b;当点击按钮&#xff0c;Dialog 对话框显示&#xff0c;且里面的 input 组件要自动获取焦点。因为页面上还存在其他的 input 组件&#xff0c;所以使用 自动获取焦点属性没用&#xff01;&…

Docker仓库解析

目录 1、Docker仓库类型2、Docker仓库的作用3、工作原理4、管理与使用最佳实践 Docker仓库是Docker生态系统中的重要组成部分&#xff0c;它是用于存储和分发Docker镜像的集中化服务。无论是公共还是私有&#xff0c;仓库都是开发者之间共享和复用容器镜像的基础。 1、Docker仓…

2024年5月23号PMP每日三题含答案

2024年5月23号PMP每日三题含答案 1.项目可交付成果已移交给客户&#xff0c;项目经理现在必须收集项目参与者的反馈意见。项目经理应该查阅哪份文件来确定哪些人应该被包含进请求反馈意见的名单中&#xff1f; A.干系人登记册 B.沟通管理计划 C.经验教训 D.项目资源管理计划 1…

基于Java的推箱子游戏设计与实现(论文 + 源码)

【免费】关于基于JAVA的推箱子游戏.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89325018 基于Java的推箱子游戏设计与实现 摘 要 社会在进步&#xff0c;人们生活质量也在日益提高。高强度的压力也接踵而来。社会中急需出现新的有效方式来缓解人们的压力。…

Centos7离线安装RabbitMQ教程

目录 安装包准备开始安装1. 创建目录2. 上传文件3. 安装erlang语言4. 安装socat5. 安装rabbitmq6. 启动、停止rabbitmq7. 设置开机启动8. 开启web界面管理工具9. 开启防火墙(root)10. 访问页面11. 附录 安装包准备 &#xff08;1&#xff09;准备RabbitMQ的安装包&#xff08;…

IT革命浪潮:技术革新如何改变我们的生活与工作

一、技术革新与行业应用 当前的IT行业正处于前所未有的技术革新阶段。其中&#xff0c;量子计算和虚拟现实是两项引人注目的技术。 量子计算&#xff1a;量子计算以其超越传统计算的潜力&#xff0c;正在逐步从理论走向实践。在材料科学、药物研发和气候模型等复杂计算领域&a…

本地搭建LLaMA-Factory环境进行大模型调优

LLaMA Factory LLaMA Factory快速对大模型进行快速调优&#xff0c;本文看一下如何本地搭建环境并调优&#xff0c;本文使用 ModelScope 社区中的模型&#xff0c;模型在国内&#xff0c;下载速度非常友好。 下载最新代码 ## LLaMA Factory官方 git pull https://github.com…

docker -JDK8安装

文章目录 前言docker -JDK8安装1. 新建一个 Docker 容器2. 在容器中安装和配置 JDK 8 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实…

spring cloud gateway一些相关概念

在云架构中运行着众多客户端和服务端&#xff0c;API网关的存在提供了保护和路由消息&#xff0c;隐藏服务&#xff0c;限制负载等等功能。下图是spring cloud gateway所处的位置。 它有三大概念&#xff1a; 路由&#xff1a;路由是构建网关的基本模块&#xff0c;它由ID&…

vue中的事件

vue中的事件是什么 绑定事件用v-on&#xff0c;简写v-on指令的参数是事件名&#xff08;原生或者自定义&#xff09;&#xff0c;值是事件处理器有原生事件&#xff08;click&#xff09;和自定义事件&#xff08;myEvent&#xff09;在组件上使用原生事件&#xff0c;需要加n…

worklist配置调试日志记录

工作记录用,不拘小节&#xff01; 设备请求日志 2024-05-23 09:03:14,503 [WorkListServer: 10.87.232.253 [18]] INFO - LISTMWL Request from [gehc]: (0008,0005) CS [ISO_IR 100] # 10 Specific Character Set 1-N (0008,0020) DA [] …

用python做的一个登录界面——浔川python社

以下代码是一个基于Tkinter的简单的登录注册界面。 代码的功能如下&#xff1a; 导入tkinter模块&#xff0c;并重命名为tk。 创建一个窗口对象window&#xff0c;并设置标题和大小。 创建一个随机的四位数作为验证码&#xff0c;并将其显示在窗口中。 创建用户名、密码和验…

如何搭建一个vue项目(完整步骤)

搭建一个新的vue项目 一、安装node环境二、搭建vue项目环境1、全局安装vue-cli2、进入你的项目目录&#xff0c;创建一个基于 webpack 模板的新项目3、进入项目&#xff1a;cd vue-demo&#xff0c;安装依赖4、npm run dev&#xff0c;启动项目 三、vue项目目录讲解四、开始我们…