当前位置: 首页 > news >正文

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

相关文章:

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

在学习Mujoco仿真的过程中&#xff0c;mujoco的版本要选择合适。先前我将mujoco的版本升级到了mujoco-3.1.4&#xff0c;在运行act的仿真代码时遇到了问题&#xff0c;撰写了博客&#xff1a; Aloha机械臂的mujoco仿真问题记录-CSDN博客 下面在进行mujoco仿真时&#xff0c;统…...

vue数据持久化仓库

本文章是一篇记录实用性vue数据持久化仓的使用&#xff01; 首先在src中创建store文件夹&#xff0c;并创建一个根据本页面相关的名称&#xff0c; 在终端导入&#xff1a;npm i pinia 和 npm i pinia-plugin-persistedstate 接下来引入代码&#xff1a; import { defineSt…...

OrangePi AIpro评测 - 基础操作篇

0. 环境 ●OrangePi AIpro ●win10笔记本 ●路由器 准备下win10电脑、路由器&#xff0c;这些板卡通常是在网络正常的环境下才方便测试。 还要准备OrangePi AIpro的官方资料&#xff1a; http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-suppo…...

不含一阶导数项的线性二阶微分方程的通解

假设这里有一个线性二阶微分等式&#xff0c;形式如下&#xff1a; &#xff08;1&#xff09; 其中是连续的&#xff0c;是在实闭区间是连续的,如果有人倾向于推广&#xff0c;在相对假弱的假设下&#xff0c;这个结果能够被发现。如果是下列其次线性方程的任意两个线性无关的…...

Redis篇 String

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

【vue-2】v-on、v-show、v-if及按键修饰符

目录 1、v-on事件 2、按键修饰符 3、显示和隐藏v-show 4、条件渲染v-if 1、v-on事件 创建button按钮有以下两种方式&#xff1a; <button v-on:click"edit">修改</button> <button click"edit">修改</button> 完整示例代码…...

华为交换机基础实验----VLAN基础

交换机篇实验&#xff1a; 给交换机创建VLAN 1.单个VLAN的创建 [S]vlan 10 查看的方法&#xff1a;dis vlan 2.批量创建vlan的方法 Vlan b 20 30 40 连续创建三个vlan&#xff0c;分别为vlan20 vlan30和vlan40 [SONY-S1-vlan10]vlan b 20 30 40 3.批量创建连续的vlan&#xf…...

Vue3学习使用axios和qs进行POST请求和响应处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言1.准备工作2.发送POST请求3.处理响应数据4.总结 一、前言 在前端开发中&#xff0c;经常需要与后端进行数据交互&#xff0c;其中包括发送POST请求并处理响…...

张大哥笔记:赚钱高手养成计划---如何将一份时间产生N份收入?

我们常说的赚钱的四种境界有哪些&#xff1f; 1.靠体力挣钱 2.靠技能挣钱 3.靠知识挣钱 4.靠平台钱生钱 所以对应的收入的模式就会是下面4种模式&#xff1a; 1.一份时间卖1次 2.一份时间卖N次 3.一份时间溢价卖N次 4.购买他人时间为自己所用 时间对于每个人都是相同的…...

excel里如何将数据分组转置?

这个表格怎样转换为下表&#xff1f;按照国家来分组&#xff0c;把不同年份对应的不同序列值进行转置&#xff1f;&#xff1f; 这演示用数据透视表就完成这个数据转换。 1.创建数据透视表 选中数据中任意单元格&#xff0c;点击插入选项卡&#xff0c;数据透视表&#xff0c;…...

WHAT - 前端安全性测试和常见攻击手段

目录 一、安全性测试二、前端安全性测试三、跨站脚本&#xff08;XSS&#xff09;攻击1. 介绍2. 三大类型反射型 XSS&#xff08;Reflected XSS&#xff09;存储型 XSS&#xff08;Stored XSS&#xff09;DOM 型 XSS&#xff08;DOM-based XSS&#xff09; 3. xss 盲打4. xss 水…...

重量and体积,不要在傻傻的花冤枉钱寄快递了!

寄快递时有没有遇到过明明不重却被按体积收费的情况&#xff1f;别急&#xff0c;今天就来给大家揭秘快递收费的奥秘&#xff01; 实际重量和体积重量&#xff01; 首先&#xff0c;我们要明白两个概念&#xff1a;实际重量和体积重量。实际重量就是你看到的物品重量&#xf…...

docker ps显示的参数具体是什么意思

1&#xff0c;运行一个容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"这段命令的作用是使用 docker run 命令运行一个基于 ubuntu:15.10 镜像的 Docker 容器&#xff0c;并在容器中执行一个无限循环的命令。 具体解…...

【C++】多态:编程中的“一人千面”艺术

目录 一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数的重写2.1 什么是虚函数&#xff1f;2.2 虚函数的重写是什么&#xff1f;2.3 虚函数重写的两个例外2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类3.1 概念3.2 接口继承和实现…...

【必备工具】gitee上传-保姆级教程

目录 1.gitee是什么 2.gitee怎么注册 ​编辑 3.gitee怎么提交代码 4.gitee的三板斧 Clone仓库 Q&A 1. Gitee 只有三板斧吗&#xff1f; 2. Git 教了&#xff0c;Gitee 上没有绿点怎么办&#xff1f; 3. 用户名和密码输入错误怎么办&#xff1f; 4. 操作时不小心…...

P1115 最长子段和

题目描述 给出一个长度为 &#x1d45b;n 的序列 &#x1d44e;a&#xff0c;选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数&#xff0c;表示序列的长度 &#x1d45b;。 第二行有 &#x1d45b;n 个整数&#xff0c;第 &#x1d456; 个整数表示序列的…...

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务&#xff0c;我们会定义&#xff1a; //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男&#xff0c;0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…...

NSS题目练习4

[LitCTF 2023]1zjs 打开后是一个游戏&#xff0c;用dirsearch扫描&#xff0c;什么都没发现 查看源代码搜索flag&#xff0c;发现没有什么用 搜索php&#xff0c;访问 出现一堆符号&#xff0c;看样子像是jother编码 解码得到flag&#xff0c;要删掉[] [LitCTF 2023]Http pro …...

【算法】合并k个已排序的链表

✨题目链接&#xff1a; NC51 合并k个已排序的链表 ✨题目描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤&#x1d45b;≤50000≤n≤5000&#xff0c;每个节点的val满足 ∣&#x1d463;&#x1d44e;&#x1d459;∣&…...

【Muduo】三大核心之EventLoop

Muduo网络库的EventLoop模块是网络编程框架中的核心组件&#xff0c;负责事件循环的驱动和管理。以下是对EventLoop模块的详细介绍&#xff1a; 作用与功能&#xff1a; EventLoop是网络服务器中负责循环的重要模块&#xff0c;它持续地监听、获取和处理各种事件&#xff0c;…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...