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

        在学习Mujoco仿真的过程中,mujoco的版本要选择合适。先前我将mujoco的版本升级到了mujoco-3.1.4,在运行act的仿真代码时遇到了问题,撰写了博客:

Aloha机械臂的mujoco仿真问题记录-CSDN博客


下面在进行mujoco仿真时,统一安装如下包的版本:

pip install mujoco==2.3.7

pip install dm_control==1.0.14

好!承接上一篇博客:

Mujoco仿真【xml文件的学习 3】_mujoco打开xml文件-CSDN博客


        下面我们继续来学习mujoco仿真中的xml文件,这次以一个实际的案例来学习别人编写好的xml文件,本次的案例为aloha的双臂仿真平台【sim_transfer_cube_scripted】:

其中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>

这段代码是一个 XML 格式的 Mujoco 模型文件的一部分,用于包含机器人手臂的模型文件和相关配置。以下是对其中各部分的详细解释:

  1. <compiler>:编译器选项,用于设置模型的编译参数。

    • angle="radian":角度单位设置为弧度。
    • inertiafromgeom="auto":惯性矩从几何体自动计算。
    • inertiagrouprange="4 5":定义了惯性矩计算的组范围。
  2. <asset>:模型的资源部分,包含了机器人手臂的各个部件的网格模型文件和相关配置。

    • <mesh>:定义了多个网格模型文件,每个文件对应一个机器人手臂的部件,如基座、肩部、上臂等。每个 <mesh> 元素包含以下属性:
      • name:部件名称。
      • file:部件对应的 STL 格式的网格模型文件。
      • scale:模型缩放比例。

这段代码描述了一个包含机器人手臂各个部件模型文件的配置,用于构建机器人手臂的物理模拟环境。


其中vx300s_left.xmlvx300s_right.xml文件类似,我们选用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" rgba="0.2 0.2 0.2 1" />
        <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" rgba="0.2 0.2 0.2 1"/>
            <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" rgba="0.2 0.2 0.2 1"/>
                <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" rgba="0.2 0.2 0.2 1"/>
                    <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" rgba="0.2 0.2 0.2 1"/>
                        <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" rgba="0.2 0.2 0.2 1"/>
                            <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" rgba="0.2 0.2 0.2 1"/>
                                <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" rgba="0.2 0.2 0.2 1"/>
                                <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" rgba="0.2 0.2 0.2 1"/>
                                </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" rgba="0.2 0.2 0.2 1"/>
                                </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" rgba="0.2 0.2 0.2 1"/>
                                </body>
                            </body>
                        </body>
                    </body>
                </body>
            </body>
        </body>
    </body>
</mujocoinclude>

这段代码是一个 XML 格式的 Mujoco 模型文件的一部分,用于描述机器人手臂的模型和相关配置。以下是对其中各部分的详细解释:

  1. <mujocoinclude>:用于包含另一个 Mujoco 模型文件的标签,这里包含了机器人手臂的模型和配置信息。

  2. <body>:定义了机器人手臂的主体部分,包括了各个连接部件和其位置信息。

    • name="vx300s_left":机器人手臂的名称。
    • pos="-0.469 0.5 0":机器人手臂的位置。
  3. <geom>:定义了机器人手臂的几何形状,通常用于可视化和碰撞检测。

    • quat="0.707107 0 0 0.707107":指定了几何体的旋转四元数。
    • type="mesh":指定了几何体的类型为网格。
    • mesh="vx300s_1_base":指定了该几何体所使用的网格模型。
    • rgba="0.2 0.2 0.2 1":指定了几何体的颜色。
  4. <inertial>:定义了每个连接部件的惯性参数。

    • pos:惯性中心的位置。
    • quat:惯性矩阵的旋转四元数。
    • mass:部件的质量。
    • diaginertia:惯性矩阵的对角线元素。
  5. <joint>:定义了连接部件之间的关节。

    • name:关节的名称。
    • pos:关节的位置。
    • axis:关节的旋转轴。
    • limited="true":表示关节是否有限制。
    • range:关节的运动范围。
    • frictionloss:关节的摩擦损失。
  6. <site>:定义了站位点,用于可视化和其他用途。

    • pos:站位点的位置。
    • size:站位点的大小。
    • type:站位点的类型。
  7. <camera>:定义了摄像机用于模拟环境的观察

    • name:摄像机的名称。
    • pos:摄像机的位置。
    • fovy摄像机的视场角
    • mode="targetbody"摄像机的模式,以指定的物体为目标
  8. <geom>:定义了机器人手臂的各个连接部件的几何形状。

    • quat:指定了几何体的旋转四元数。
    • type="mesh":指定了几何体的类型为网格。
    • mesh:指定了该几何体所使用的网格模型。
    • rgba:指定了几何体的颜色。

这段代码描述了一个机器人手臂的模型和配置信息,包括了各个连接部件的几何形状、惯性参数、关节、站位点以及摄像机等元素。


其中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"/>

        <!-- floor -->
        <texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072"/>
        <texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3"
        markrgb="0.8 0.8 0.8" width="300" height="300"/>
        <material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/>

    </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"/>-->

        <headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0"/>
        <rgba haze="0.15 0.25 0.35 1"/>
        <global azimuth="140" elevation="-30"/>

    </visual>

    <worldbody>
        <!-- default castshadow = "false" -->
        <light castshadow="true" 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="true" directional='true' diffuse='.3 .3 .3' specular='0.3 0.3 0.3' pos='0 1 1'
               dir='0 -1 -1'/>

        <!-- floor -->
        <body name="floor" pos="0 0 -0.001">
        <geom name="floor" size="0 0 0.01" type="plane" material="groundplane"/>
        </body>

        <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>

这段代码是一个 XML 格式的 Mujoco 模型文件的一部分,用于描述一个模拟环境中的物体、光源和相机等元素。以下是对其中各部分的详细解释:

  1. <mujocoinclude>:Mujoco 模型文件的包含标签,用于将其他文件的内容包含到当前文件中。

  2. <asset>:模型的资源部分,定义了模型中使用的各种资产,如网格、纹理和材质。

    • <mesh>:指定了一个网格文件作为桌面,定义了它的名称和缩放比例。
    • <texture>:定义了两种类型的纹理:
      • "skybox":用于模拟天空的渐变效果。
      • "2d":用于地面的棋盘格纹理,包括颜色、尺寸和边缘标记。
    • <material>:定义了地面的材质,引用了前面定义的地面纹理,并设置了反射率和纹理重复参数。
  3. <visual>:模型的可视化部分,用于定义模拟环境中的视觉效果。

    • <map>:定义了雾化效果的参数,包括起始和结束位置以及力度。
    • <quality>:设置了阴影和抗锯齿的参数。
    • <headlight>:设置了头灯的参数,包括漫反射、环境光和高光。
    • <rgba>:设置了雾化效果的颜色。
    • <global>:设置了全局光照的方向。
  4. <worldbody>:模型的世界部分,定义了模拟环境中的物体、光源和相机等元素。

    • <light>:定义了三个光源,包括其类型、漫反射和高光等参数。
    • <body>:定义了模拟环境中的物体,包括桌面和悬空的物体。
      • 桌面:由一个平面几何体组成,使用前面定义的地面材质。
      • 悬空的物体:这里只是一个站位点,未指定具体的几何形状。
    • <camera>:定义了多个摄像机,包括其位置、视场角和模式等参数。其中,mode="targetbody" 表示摄像机会以指定的物体为目标,视角随之调整

这个模型文件描述了一个简单的模拟环境,其中包括一个桌面、一个悬空的物体和多个摄像机,用于模拟不同视角的变化。


其中bimanual_viperx_ee_transfer_cube.xml文件代码:

<mujoco>
    <include file="scene.xml"/>
    <include file="vx300s_dependencies.xml"/>

    <equality>
        <weld body1="mocap_left" body2="vx300s_left/gripper_link" solref="0.01 1" solimp=".25 .25 0.001" />
        <weld body1="mocap_right" body2="vx300s_right/gripper_link" solref="0.01 1" solimp=".25 .25 0.001" />
    </equality>


    <worldbody>
        <include file="vx300s_left.xml" />
        <include file="vx300s_right.xml" />

        <body mocap="true" name="mocap_left" pos="0.095 0.50 0.425">
            <site pos="0 0 0" size="0.003 0.003 0.03" type="box" name="mocap_left_site1" rgba="1 0 0 1"/>
            <site pos="0 0 0" size="0.003 0.03 0.003" type="box" name="mocap_left_site2" rgba="1 0 0 1"/>
            <site pos="0 0 0" size="0.03 0.003 0.003" type="box" name="mocap_left_site3" rgba="1 0 0 1"/>
        </body>
        <body mocap="true" name="mocap_right" pos="-0.095 0.50 0.425">
            <site pos="0 0 0" size="0.003 0.003 0.03" type="box" name="mocap_right_site1" rgba="1 0 0 1"/>
            <site pos="0 0 0" size="0.003 0.03 0.003" type="box" name="mocap_right_site2" rgba="1 0 0 1"/>
            <site pos="0 0 0" size="0.03 0.003 0.003" type="box" name="mocap_right_site3" rgba="1 0 0 1"/>
        </body>

        <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="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="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 模型文件,描述了一个模拟环境中的物体、关节、动作控制器等元素。让我们逐个解释其中的内容:

  1. <include file="scene.xml"/><include file="vx300s_dependencies.xml"/>:引用了其他两个 XML 文件,将它们的内容包含到当前文件中。

  2. <equality>:定义了两个关节的约束,使得两个物体固定在一起。

    • <weld>:将两个物体通过关节连接在一起,设置了约束参数如刚度和阻尼等。
  3. <worldbody>:模型的世界部分,定义了模拟环境中的各种物体。

    • <include file="vx300s_left.xml" /><include file="vx300s_right.xml" />:引用了两个 XML 文件,将机器人的左臂和右臂的模型包含进来。
    • <body mocap="true" name="mocap_left" pos="0.095 0.50 0.425"><body mocap="true" name="mocap_right" pos="-0.095 0.50 0.425">定义了两个虚拟的 mocap 体,用于捕捉运动数据
    • <body name="box" pos="0.2 0.5 0.05">:定义了一个名为 box 的物体,用于模拟一个红色的盒子。
      • <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" />:定义了盒子的几何形状和纹理颜色等属性。
  4. <actuator>:定义了动作控制器,用于控制机器人的手指关节的运动。

    • <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="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"/>:控制右臂机器人手指的位置。
  5. <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"/>:指定了各个关节的位置信息,用于模拟开始时的初始状态
    • qpos:这个属性定义了关节的位置。它包含了多个数值,每两个数值代表一个关节的位置信息。在这个关键帧中,一共有六个关节,因此包含了 6*2=12 个数值。
    • 这些数值代表了每个关节的位置或方向。例如,0 -0.96 1.16 0 -0.3 0 描述了左臂的一组关节位置,0.024 -0.024 描述了右臂手指的位置,0.2 0.5 0.05 描述了盒子的位置,1 0 0 0 描述了盒子的方向。

这样,当模拟开始时,Mujoco 将模拟环境中的物体调整到这个关键帧指定的位置和方向,从而实现了初始状态的设定

整个 <mujoco> 块描述了一个模拟环境中的物体、约束、控制器等元素,用于进行机器人控制和物体运动的仿真。


具体的仿真代码运行可视化效果【record_sim_episodes.py】:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 再次刷新认知边界:GPT-4 颠覆语音助手市场,流畅度直逼真人互动?

前言 近日&#xff0c;美国人工智能研究公司 OpenAI 发布了其最新旗舰模型 GPT-4o&#xff0c;这一革命性的进展不仅标志着人工智能领域的新突破&#xff0c;更预示着即将步入一个全新的交互时代&#xff1f;GPT-4o 的发布&#xff0c;对于我们来说&#xff0c;意味着人工智能…

数据集004:跌倒检测数据集 (含数据集下载链接)

数据集简介&#xff1a; 该数据集为跌倒检测数据集&#xff0c;属于imageclassify任务&#xff0c;分为fall和nofall两大类&#xff0c;累计共1000张图片&#xff0c;均为人工标注 xml格式&#xff0c;可用于yolo训练。 数据集链接&#xff1a;跌倒检测数据集&#xff08;1000…

在virtualbox中ubuntu如何利用mobaxterm来拖拽文件

首先得先利用ssh、ubuntu的ip 一、开启ssh 安装 openssh-server sudo apt-get install openssh-server 检查 ssh 服务是否启动成功 sudo ps -e | grep ssh 如果有 sshd 则说明 ssh 服务已启动&#xff0c;如果没有启动&#xff0c;输入下边命令启动 ssh 服务 sudo servi…

Latex公式编辑:在矩阵内画横线与竖线

在LaTeX中&#xff0c;要在矩阵内绘制横线和竖线&#xff0c;我们通常使用array或matrix环境&#xff0c;并结合\hline&#xff08;用于横线&#xff09;和|&#xff08;用于竖线&#xff09;来实现。但需要注意的是&#xff0c;\hline通常用于表格环境中。 LaTeX中绘制分块矩阵…

Transformers集成SwanLab实现AI训练可视化监控

&#x1f917;HuggingFace Transformers Hugging Face 的 Transformers 是一个非常流行的开源库&#xff0c;它提供了大量预训练的模型&#xff0c;主要用于自然语言处理&#xff08;NLP&#xff09;任务。这个库的目标是使最新的模型能够易于使用&#xff0c;并支持多种框架&…

js深入理解对象的 属性(properties)的特殊 特性(attributes)

对象 js对象 // 构造一个对象 let obj {}; let obj new Object(); 我们知道js中一切皆对象&#xff0c;对象是一个键值对集合&#xff08;key: value)&#xff0c;一个键(key)对应一个值(value)&#xff0c;而每个键都是这个对象的属性&#xff0c;我们可以通过对象的属性来…

2024最新下载kettle方法

1.点击链接进入官网 Pentaho from Hitachi Vantara download | SourceForge.netDownload Pentaho from Hitachi Vantara for free. End to end data integration and analytics platform. Pentaho Community Edition can now be downloaded from https://www.hitachivantara.…

数据结构——不相交集(并查集)

一、基本概念 关系&#xff1a;定义在集合S上的关系指对于a&#xff0c;b∈S&#xff0c;若aRb为真&#xff0c;则a与b相关 等价关系&#xff1a;满足以下三个特性的关系R称为等价关系 (1)对称性&#xff0c;aRb为真则bRa为真&#xff1b; (2)反身性,aRa为真; (3)传递性,aRb为真…

布局、基本控件

一、as布局 布局文件 layout drawable 设置背景的文件 新建drawable-xhdpi文件 — 放一些item或图片 values&#xff1a; theme app风格&#xff0c;string 字符串&#xff08;相当于宏定义&#xff0c;可以引用&#xff09;&#xff0c;colors颜色配置&#xff08;可以引用…

OpenLayers6入门,OpenLayers实现在地图上拖拽编辑修改绘制图形

专栏目录: OpenLayers6入门教程汇总目录 前言 在前面一章中,我们已经学会了如何绘制基础的三种图形线段、圆形和多边形:《OpenLayers6入门,OpenLayers图形绘制功能,OpenLayers实现在地图上绘制线段、圆形和多边形》,那么本章将在此基础上实现图形的拖拽编辑功能,方便我…

【R语言】堆叠折线图绘制大揭秘

&#x1f44b;&#x1f4da;&#x1f4cc; 之前绘制过相关的图&#xff0c;但是时间一久就不知道把代码放到哪里去了&#xff0c;索性重新写一个绘图代码&#xff0c;用以记录&#xff0c;需要的自取。 library(readxl) library(ggplot2) library(dplyr) # setwd("D:/Dat…

python表达式解析的陷阱与技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;表达式的复杂性 二、案例分析&#xff1a;表达式的解读 三、陷阱揭示…

Spring Boot集成shiro之使用redis缓存demo

1.背景 上次发了这篇文章《Spring Boot集成Shiro快速入门Demo》后&#xff0c;有网友“just.blue”后台反馈集成redis有点问题&#xff0c;今天特地把集成过程发出来 2.为什么要使用cache 用来减轻数据库的访问压力&#xff0c;从而提升查询效率。 3.Shiro使用Redis做缓存 …

粒子爱心特效||轻松实现浪漫效果||完整代码

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 你是否曾经想过&#xff0c;在特殊的日子里给你的爱人一个惊喜&#xff1f;或者在朋友的生日派对上&#xff0c;给他们展示一个充满爱意的特效&#xff1f;今天&#xff0c;我要分享一个我…

【简单介绍下容器是什么?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【el-table 实现自定义单选】

el-table 实现自定义单选 示例图片代码 示例图片 代码 row-click"singleElection"<el-table-columnalign"center"label"选择"><template slot-scope"scope"><el-radio:key"scope.row.id"v-model"templa…

Redis篇 String

String概念和set,get扩充 一. String类型的基本介绍二. String中set,get方法扩充 一. String类型的基本介绍 redis中所有的key都是字符串类型的,但是value的类型差异很大. redis中的字符串,直接就是二进制方式存储的,可以存储整数,二进制数据 文本数据,Json,xml还有音频等. 二.…

Windows10映射网络驱动器之后不显示映射盘

目录 背景解决步骤1、按 Windows R 打开运行2、打开注册表编辑器3、 System上新建-- DWORD(32bit)4、对新建的文件重命名5、将EnableLinkedConnections的数值改为16、退出注册表编辑器&#xff0c;重启系统。 知识扩展断开连接备份注册表 背景 目前有一台NAS服务器,和一台lin…

斯洛文尼亚普利雅玛城堡:吉尼斯世界纪录认证的世界最大溶洞城堡

除了著名的波斯托伊纳溶洞&#xff08;Postojna Cave&#xff09;&#xff0c;普利雅玛城堡&#xff08;Predjama Castle&#xff09;也是波斯托伊纳洞穴公园&#xff08;Postojna Cave Park&#xff09;不容错过的景点之一。这座城堡坐落在斯洛文尼亚&#xff08;Slovenia&…

C语言动态顺序表结构的创建、初始化结构、尾插、尾删、头插、头删、指定位置插入、指定位置删除、找指定数值下标等的介绍

文章目录 前言一、 结构创建二、 初始化结构三、 打印动态顺序表四、 销毁动态顺序表五、 尾插六、尾删七、 头插八、 头删九、指定位置插入十、指定位置删除十一、找指定数值下标总结 前言 C语言动态顺序表结构的创建、初始化结构、尾插、尾删、头插、头删、指定位置插入、指…