ros2+gazebo+urdf:ros2机器人使用gazebo的urdf文件中的<gazebo>部分官网资料

原文链接SDFormat extensions to URDF (the 'gazebo' tag) — Documentation

注意了ros2的gazebo部分已经跟ros1的gazebo部分不一样了:

Toggle navigation 

SDFormat

  • Specification
  • API
  • Documentation
  • Download

Back

Edit                  Version: 1.6           


Table of Contents
  • SDFormat extensions to URDF (the <gazebo> tag)
    • <gazebo> Elements For <robot>
    • <gazebo> Elements For Links
    • Special meaning for <visual>, <collision>, and <material>
      • <gazebo> Elements For Joints
      • Fixed joint lumping

SDFormat extensions to URDF (the <gazebo> tag)

When URDF files are loaded by Gazebo (both Gazebo-classic and the new Gazebo), the URDF content is first converted to SDFormat before being processed by Gazebo. Users who want to modify the resulting SDFormat output to include SDFormat specific elements may do so using the <gazebo> tag in the original URDF file. This is known as the Gazebo extension to the URDF specification (see urdf/XML/Gazebo - ROS Wiki)

The URDF to SDFormat conversion usually happens automatically without users observing the resulting SDFormat file. To diagnose any issues that might come up during the conversion, the tool

gz sdf -p <path to urdf file>

can be used to convert the URDF file to SDFormat that can be inspected by the user.

The following is the documentation of the various tags available under <gazebo> and their corresponding effect on the SDFormat output. While some of the content included here is also available in the "Using a URDF in Gazebo" tutorial of Gazebo-classic, this document should provide a more complete discussion of the extension, especially regarding fixed joint lumping.

<gazebo> Elements For <robot>

<gazebo> tag without a reference attribute applies to the SDFormat <model> that gets generated from the <robot> URDF tag. All elements in the <gazebo> tag are inserted into the SDF <model> tag for the generated SDF.

urdf文件内不带reference属性的<gazebo>转换为sdf文件内<model>标签

Example:

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='no_ref_example'><link name='world'/><gazebo><static>true</static><plugin name='testPlugin' filename='testFileName'/></gazebo>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='no_ref_example'><static>true</static><plugin name='testPlugin' filename='testFileName'/></model>
</sdf>

When using the <gazebo> extension for links, the name of the link has to be specified in the reference attribute. (gazebo标签内的reference属性需要填写joint名称例如laser或camera或base等)There are a number of special tags that modify the values of elements or attributes in the generated SDFormat file. Any tag that is not listed in the table below will be directly inserted into the corresponding <link> element in the SDFormat output. This direct insertion is sometimes referred to as blob insertion.所有不在下表中列出的标签例如<plugin>标签,都会被直接插入sdf文件,原样插入。例如urdf内<plugin>,在sdf文件内还是<plugin>,不变。当然表格里面的需要改变

Table of elements with special meaning:

NameTypeDescriptionCorresponding SDFormat element
turnGravityOffboolA value of "true" turns gravity off. Alternatively, gravity (with opposite boolean value) can be used via blob insertiongravity
dampingFactordoubleExponential velocity decay of the link velocity - takes the value and multiplies the previous link velocity by (1-dampingFactor).velocity_decay/linear and velocity_decay/angular
maxVeldoubleMaximum contact correction velocity truncation term. (See the Gazebo-classic tutorial on Constraints Parameters for more detail)collision/surface/contact/ode/max_vel
minDepthdoubleMinimum allowable depth before contact correction impulse is applied. (See the Gazebo-classic tutorial on Constraints Parameters for more detail)collision/surface/contact/ode/min_depth
mu1doubleFriction coefficients μ for the principal contact directions along the contact surface as defined by the Open Dynamics Engine (ODE) (see parameter descriptions in ODE's user guide and the Gazebo-classic tutorial on Friction Parameters for more detail)collision/surface/friction/ode/mu
mu2collision/surface/friction/ode/mu2
fdir1vector3-tuple specifying direction of mu1 in the collision local reference frame. (See the Gazebo-classic tutorial on Friction Parameters for more detail)collision/surface/friction/ode/fdir1
kpdoubleContact stiffness k_p and damping k_d for rigid body contacts as defined by ODE (ODE uses erp and cfm but there is a mapping between erp/cfm and stiffness/damping. Also see See the Gazebo-classic tutorial on Contact Parameters for more detail)collision/surface/contact/ode/kp
kdcollision/surface/contact/ode/kd
selfCollideboolIf true, the link can collide with other links in the model.self_collide
maxContactsintMaximum number of contacts allowed between two entities. This value overrides the max_contacts element defined in physics.(See the Gazebo-classic tutorial on Contact Parameters for more detail)collision/max_contacts
laserRetrodoubleIntensity value returned by laser sensor.collision/laser_retro
visualelementThe content of the element will be inserted into each visual of the SDFormat linkvisual
materialelementThe content of the element will be inserted into each material of the SDFormat linkvisual/material
collisionelementThe content of the element will be inserted into each collision of the SDFormat linkcollision

Note: The XPath used in the "Corresponding SDFormat element" column is relative to the link element.

Example:

The following shows how to set the first coefficient of friction for all <collision> elements in a link

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='friction_example'><link name='base_link'><inertial><mass value='0.12' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><collision><geometry><sphere radius="2"/></geometry></collision><collision><geometry><cylinder radius="1" length="2"/></geometry></collision></link><gazebo reference='base_link'><mu1>0.25</mu1></gazebo>
</robot>

This creates the element //surface/friction/ode/mu in the collision element of the referenced link.

<!--SDFormat-->
<sdf version='1.9'><model name='friction_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.12</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><collision name='base_link_collision'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry><surface><contact><ode/></contact><friction><ode><mu>0.25</mu></ode></friction></surface></collision><collision name='base_link_collision_1'><pose>0 0 0 0 0 0</pose><geometry><cylinder><length>2</length><radius>1</radius></cylinder></geometry><surface><contact><ode/></contact><friction><ode><mu>0.25</mu></ode></friction></surface></collision></link></model>
</sdf>

Special meaning for <visual><collision>, and <material>

The <visual> and <collision> are meant to update existing visuals and collisions in the URDF as they get converted to SDFormat. At the time of writing, these tags do not insert new visuals or collision elements into the referenced link. Note also that these tags affect all visuals and collisions, respectively, found in the referenced link.

Example:

Given the following URDF file with two visuals, the <gazebo> extension applies the element <transparency> to each visual in base_link.

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='visual_example'><link name='base_link'><inertial><mass value='0.12' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><geometry><sphere radius="2"/></geometry></visual><visual><origin xyz="2 0 0" rpy="0 0 0"/><geometry><cylinder length="1" radius="2"/></geometry></visual></link><gazebo reference='base_link'><visual><transparency>0.25</transparency></visual></gazebo>
</robot>

Converts to the following SDFormat

<!--SDFormat-->
<sdf version='1.9'><model name='visual_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.12</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><visual name='base_link_visual'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry><transparency>0.25</transparency></visual><visual name='base_link_visual_1'><pose>2 0 0 0 0 0</pose><geometry><cylinder><length>1</length><radius>2</radius></cylinder></geometry><transparency>0.25</transparency></visual></link></model>
</sdf>

The <material> tag, when used directly under the <gazebo> tag, i.e //gazebo/material, accepts a string value of the name of a material defined in a Gazebo-classic's material script. Examples include colors like Gazebo/SkyBlue as well as textures such as Gazebo/WoodFloor. The <material> tag affects all visuals found in the referenced link, similar to the behavior of <visual> and <collision>

Example:

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='material_example'><link name='base_link'><inertial><mass value='0.1' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><geometry><sphere radius="2"/></geometry></visual></link><gazebo reference='base_link'><material>Gazebo/Orange</material></gazebo>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='material_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.10000000000000001</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><visual name='base_link_visual'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry><material><script><name>Gazebo/Orange</name><uri>file://media/materials/scripts/gazebo.material</uri></script></material></visual></link></model>
</sdf>

This tag is only relevant when using Gazebo-classic as the new version of Gazebo does not use material scripts. However, it is still possible to change the appearance of visuals that is compatible with the new Gazebo and this is by using the //gazebo/visual/material tag. Note the difference from the previous tag as the <material> tag is not directly under <gazebo>, but under <visual>. This <material> tag contains child elements as defined in the material specification.

Example:

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='material_example'><link name='base_link'><inertial><mass value='0.12' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><geometry><sphere radius="2"/></geometry></visual></link><gazebo reference='base_link'><visual><material><diffuse>0 0 1 1 </diffuse></material></visual></gazebo>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='material_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.12</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><visual name='base_link_visual'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry><material><diffuse>0 0 1 1</diffuse></material></visual></link></model>
</sdf>

where the <diffuse> tag has been added to the visual of base_link.

Warning: At the time of writing, there is a bug in the URDF to SDFormat converter that behaves incorrectly when <visual> and <collision> tags in the URDF file have names.

<gazebo> Elements For Joints

When using the <gazebo> extension for joints, the name of the joint has to be specified in the reference attribute. There are a number of special tags that modify the values of elements or attributes in the generated SDFormat file. Any tag that is not listed in the table below will be directly inserted into the corresponding <joint> element in the SDFormat output.

Table of elements with special meaning:

NameTypeDescriptionCorresponding SDFormat element
stopCfmdoubleJoint stop constraint force mixing (cfm) and error reduction parameter (erp) used by ODEphysics/ode/limit/cfm
stopErpphysics/ode/limit/erp
provideFeedbackboolAllows joints to publish their wrench data (force-torque) via a Gazebo pluginphysics/provide_feedback and physics/ode/provide_feedback
implicitSpringDamperboolIf this flag is set to true, ODE will use ERP and CFM to simulate damping. This is a more stable numerical method for damping than the default damping tag. The cfmDamping element is deprecated and should be changed to implicitSpringDamper.physics/ode/implicit_spring_damper
springStiffnessdoubleSpring stiffness in N/m.axis/dynamics/spring_stiffness
springReferencedoubleEquilibrium position for the spring.axis/dynamics/spring_reference
fudgeFactordoubleScale the excess for in a joint motor at joint limits. Should be between zero and one.physics/ode/fudge_factor
preserveFixedJointboolBy default, fixed joints in the URDF are "lumped", meaning that the contents of the child link are merged with the parent link with appropriate pose offsets and the joint is discarded. Setting this to true preserves the fixed joint and effectively disables fixed joint lumping.
disableFixedJointLumpingboolBy default, fixed joints in the URDF are "lumped", meaning that the contents of the child link are merged with the parent link with appropriate pose offsets and the joint is discarded. Setting this to true disables fixed joint lumping. This has a similar effect as preserveFixedJoint but, for backward compatibility reasons, replaces the fixed joint with a revolute joint with position limits set to 0. Users are encouraged to use preserveFixedJoint instead.

Note: The XPath used in the "Corresponding SDFormat element" column is relative to the joint element.

Example: The spring reference and stiffness of a joint can be set using <springReference> and <springStiffness> respectively.

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='joint_example'><link name='base_link'><inertial><mass value='0.12' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial></link><joint name='j1' type='continuous'><parent link='base_link'/><child link='end_effector'/><origin xyz='0 0 1' rpy='0 0 0'/></joint><link name='end_effector'><inertial><mass value='0.12' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial></link><gazebo reference='j1'><springReference>0.5</springReference><springStiffness>0.25</springStiffness></gazebo>
</robot>

This creates the elements //axis/dynamics/spring_reference and //axis/dynamics//spring_stiffness in the referenced joint of the SDFormat output.

<!--SDFormat-->
<sdf version='1.9'><model name='joint_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.12</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial></link><joint name='j1' type='revolute'><pose relative_to='base_link'>0 0 1 0 0 0</pose><parent>base_link</parent><child>end_effector</child><axis><xyz>1 0 0</xyz><limit><lower>-10000000000000000</lower><upper>10000000000000000</upper></limit><dynamics><spring_reference>0.5</spring_reference><spring_stiffness>0.25</spring_stiffness></dynamics></axis><physics><ode><limit><cfm>0</cfm><erp>0.20000000000000001</erp></limit></ode></physics></joint><link name='end_effector'><pose relative_to='j1'>0 0 0 0 0 0</pose><inertial><pose>0 0 0 0 0 0</pose><mass>0.12</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial></link></model>
</sdf>

Fixed joint lumping

Fixed joint lumping (aka joint reduction), in the URDF to SDFormat conversion is the process of taking the child link of a fixed joint and merging all of its contents into the parent link. It is an optimization that benefits maximal coordinate physics engines by reducing the number of constraints needed to simulate the model. The process preserves the total mass of the two links and computes the center of mass and moment of inertia of the resultant link. All visual and collision elements present in the child link are moved to the parent link with appropriate pose offsets. The fixed joint itself is discarded and does not appear in the SDFormat output. As of libsdformat 9.9.0 frame elements that represent the discarded joint and child link are generated to preserve their pose information.

Fixed joint lumping is enabled by default, but can be disabled by setting preserveFixedJoint or disableFixedJointLumping to true. The two parameters behave similarly, but the preserveFixedJoint=true configuration results in a joint with a fixed type whereas the disableFixedJointLumping=true configuration results in a revolute joint with position limits set to 0. Note that when both preserveFixedJoint=true and disableFixedJointLumping=true are set on a joint, the preserveFixedJoint setting will take precedence and the resulting joint will have a fixed type. Fixed joint lumping can also be disabled for all joints if ParserConfig::URDFPreserveFixedJoint is true.

Warning: Disabling joint lumping should only be done when both parent and child links have positive mass and corresponding <inertial> elements.

Example: The following URDF demonstrates fixed joint lumping where the resulting SDFormat output only has one link

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='fixed_joint_lumping_example'><link name='base_link'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><sphere radius="2"/></geometry></collision></link><joint name='j1' type='fixed'><parent link='base_link'/><child link='end_effector'/><origin xyz='0 0 1' rpy='0 0 0'/></joint><link name='end_effector'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><origin xyz="2 0 0" rpy="0 0 0"/><geometry><cylinder length="1" radius="2"/></geometry></visual></link>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='fixed_joint_lumping_example'><link name='base_link'><inertial><pose>0 0 0.5 0 0 0</pose><mass>0.5</mass><inertia><ixx>0.14499999999999999</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.14499999999999999</iyy><iyz>0</iyz><izz>0.02</izz></inertia></inertial><collision name='base_link_collision'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry></collision><visual name='base_link_fixed_joint_lump__end_effector_visual'><pose>2 0 1 0 0 0</pose><geometry><cylinder><length>1</length><radius>2</radius></cylinder></geometry></visual></link><frame name='j1' attached_to='base_link'><pose>0 0 1 0 -0 0</pose></frame><frame name='end_effector' attached_to='j1'/></model>
</sdf>

Note that the mass of base_link is the sum of the masses of the original base_link and end_effector links. The visual element of end_effector has been merged into base_link with a pose value that takes into account the pose of the original end_effector link and joint j1 as well as the pose of the original visual.

Example: The same example above is repeated, but fixed joints preserved (preserveFixedJoint=true).

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='preserve_fixed_joint_lumping_example'><link name='base_link'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><sphere radius="2"/></geometry></collision></link><joint name='j1' type='fixed'><parent link='base_link'/><child link='end_effector'/><origin xyz='0 0 1' rpy='0 0 0'/></joint><link name='end_effector'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><origin xyz="2 0 0" rpy="0 0 0"/><geometry><cylinder length="1" radius="2"/></geometry></visual></link><gazebo reference='j1'><preserveFixedJoint>true</preserveFixedJoint></gazebo>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='preserve_fixed_joint_lumping_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.25</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><collision name='base_link_collision'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry></collision></link><joint name='j1' type='fixed'><pose relative_to='base_link'>0 0 1 0 0 0</pose><parent>base_link</parent><child>end_effector</child><axis><dynamics><spring_reference>0</spring_reference><spring_stiffness>0</spring_stiffness></dynamics><xyz>0 0 1</xyz><limit><lower>-10000000000000000</lower><upper>10000000000000000</upper></limit></axis><physics><ode><limit><cfm>0</cfm><erp>0.20000000000000001</erp></limit></ode></physics></joint><link name='end_effector'><pose relative_to='j1'>0 0 0 0 0 0</pose><inertial><pose>0 0 0 0 0 0</pose><mass>0.25</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><visual name='end_effector_visual'><pose>2 0 0 0 0 0</pose><geometry><cylinder><length>1</length><radius>2</radius></cylinder></geometry></visual></link></model>
</sdf>

Here, the link end_effector is still present in the SDFormat output with mass and inertia equal to the URDF end_effector link. The visual of end_effector is also still present in the end_effector link of the SDFormat output. The joint j1 is also still present and its type is fixed.

Example: The same example above is repeated, but with fixed joint lumping disabled (disableFixedJointLumping=true).

<?xml version='1.0' encoding='UTF-8'?>
<!--URDF-->
<robot name='disable_fixed_joint_lumping_example'><link name='base_link'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><sphere radius="2"/></geometry></collision></link><joint name='j1' type='fixed'><parent link='base_link'/><child link='end_effector'/><origin xyz='0 0 1' rpy='0 0 0'/></joint><link name='end_effector'><inertial><mass value='0.25' /><inertia ixx='0.01' ixy='0' ixz='0' iyy='0.01' iyz='0' izz='0.01' /></inertial><visual><origin xyz="2 0 0" rpy="0 0 0"/><geometry><cylinder length="1" radius="2"/></geometry></visual></link><gazebo reference='j1'><disableFixedJointLumping>true</disableFixedJointLumping></gazebo>
</robot>

results in:

<!--SDFormat-->
<sdf version='1.9'><model name='disable_fixed_joint_lumping_example'><link name='base_link'><inertial><pose>0 0 0 0 0 0</pose><mass>0.25</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><collision name='base_link_collision'><pose>0 0 0 0 0 0</pose><geometry><sphere><radius>2</radius></sphere></geometry></collision></link><joint name='j1' type='revolute'><pose relative_to='base_link'>0 0 1 0 0 0</pose><parent>base_link</parent><child>end_effector</child><axis><limit><lower>0</lower><upper>0</upper></limit><dynamics><damping>0</damping><friction>0</friction><spring_reference>0</spring_reference><spring_stiffness>0</spring_stiffness></dynamics><xyz>0 0 1</xyz></axis><physics><ode><limit><cfm>0</cfm><erp>0.20000000000000001</erp></limit></ode></physics></joint><link name='end_effector'><pose relative_to='j1'>0 0 0 0 0 0</pose><inertial><pose>0 0 0 0 0 0</pose><mass>0.25</mass><inertia><ixx>0.01</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.01</iyy><iyz>0</iyz><izz>0.01</izz></inertia></inertial><visual name='end_effector_visual'><pose>2 0 0 0 0 0</pose><geometry><cylinder><length>1</length><radius>2</radius></cylinder></geometry></visual></link></model>
</sdf>

The output is the same as preserveFixedJoint=true example, execept that joint j1 has a revolute type.

©2020 Open Source Robotics Foundation

SDFormat is open-source licensed under 

Apache 2.0

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

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

相关文章

Shell 脚本应用(四)

正则表达式概述 正则表达式又称正规表达式&#xff0c;常规表达式。在代码中常简写为regex&#xff0c;regexp 或RE.正则表达式 是使用单个字符串来描述&#xff0c;匹配一系列符合某个句法规则的字符串&#xff0c;简单来说&#xff0c;是一种匹配字符串 的方法&#xff0c;通…

文件夹共享功能的配置 以及Windows server2012防火墙的配置

目录 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 1.2 配置文件夹共享 1.3 访问共享文件夹 1.4 配置取消 用户名和密码认证 二. windows server 2012防火墙配置 思维导图 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 我们在工作和生活中经…

信号与线性系统翻转课堂笔记12——时域取样定理

信号与线性系统翻转课堂笔记12 The Flipped Classroom12 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff09;了解信号取样的概念&#xff1…

智能优化算法应用:基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.浣熊算法4.实验参数设定5.算法结果6.参考文献7.MA…

【python与机器学习3】感知机和门电路:与门,或门,非门等

目录 1 电子和程序里的与门&#xff0c;非门&#xff0c;或门&#xff0c;与非门 &#xff0c;或非门&#xff0c;异或门 1.1 基础电路 1.2 所有的电路情况 1.3 电路的符号 1.4 各种电路对应的实际电路图 2 各种具体的电路 2.1 与门&#xff08;and gate&#xff09; 2…

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

2024年元旦节放假通知

致尊敬的客户以及全体同仁&#xff1a; 旧岁已展千重锦&#xff0c;新年再进百尺竿。在这辞旧迎新之际&#xff0c;易天光通信提前祝您元旦快乐&#xff01;生意兴隆&#xff0c;身体健康&#xff0c;万事如意&#xff01;根据国家法定假期的规定&#xff0c;并结合公司实际情…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代&#xff0c;搜索引擎已经是许多应用的核心组件之一&#xff0c;近年随着大模型以及AI技术&#xff08;如&#xff1a;自然语言处理NLP&#xff09;的流行&#xff0c;这些技术的结合将会创造出更多的应用场景&#xff0c;比如&#xff1a;电商商品搜索、…

centos 安装oracle 11.2.04 并配置数据库自启动操作记录,一次完成

环境&#xff1a; centos版本7.3&#xff0c;安装的有图形化界面 Oracle11.2.04&#xff0c;之所以选择这个版本是因为网上有人说11其他版本的在安装的过程中会出现这样或那样的问题&#xff0c;下载地址放到文章下面 步骤&#xff0c;按顺序&#xff1a; 1、创建安装Oracle…

nginx反向代理服务器及负载均衡服务配置

一、正向代理与反向代理 正向代理&#xff1a;是一个位于客户端和原始服务器(oricin server)之间的服务器&#xff0c;为了从原始服务器取得内容&#xff0c;客户端向代理发送一个请求并指定目标(原始服务器)&#xff0c;然后代理向原始服务器转交请求并将获得的内容返回给客户…

Tauri:构建高效安全的桌面应用程序 | 开源日报 No.124

tauri-apps/tauri Stars: 64.6k License: Apache-2.0 Tauri 是一个开源项目&#xff0c;它可以通过 Web 前端构建更小、更快和更安全的桌面应用程序。 该项目具有以下优势和特点&#xff1a; Tauri 可以帮助用户构建桌面应用程序&#xff0c;并使用 web 前端技术进行界面设计…

Bug:Too many open files【ulimit限制】

Bug&#xff1a;Too many open files 今天在开发某个下载功能时&#xff0c;发现文件总是下载到250多个程序就挂掉&#xff0c;同时会打崩服务器&#xff0c;查看错误日志发现报&#xff1a;too many open files. 思路&#xff1a;根据错误信息可以知道打开的文件数过多&#x…

k8s的二进制部署

k8s的二进制部署&#xff1a;源码包部署 k8smaster01: 20.0.0.101 kube-apiserver kube-controller-manager kube-scheduler etcd k8smaster02: 20.0.0.102 kube-apiserver kube-controller-manager kube-scheduler node节点01: 20.0.0.103 kubelet kube-proxy etcd node节点02…

2024 年 11 款最佳 Android 数据恢复软件应用

Android 设备上的数据丢失可能是一种令人痛苦的经历&#xff0c;通常会导致不可替代的信息瞬间消失。 意外删除、系统崩溃或格式错误都可能发生&#xff0c;重要数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是&#xff0c;技术进步带来了多种恢复解决方案&…

微信小程序预览pdf,修改pdf文件名

记录微信小程序预览pdf文件&#xff0c;修改pdf名字安卓和ios都可用。 1.安卓和苹果的效果 2.需要用到的api 1.wx.downloadFile wx.downloadFile 下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求&#xff0c;返回文件的本地临时路径 (本地路径)&#xff0c;单次下载…

数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构&#xff0c;它由节点和边组成。树的每个节点可以有零个或多个子节点…

深圳鼎信|输电线路防山火视频监控预警装置:森林火灾来袭,安全不留白!

受线路走廊制约和环保要求影响&#xff0c;输电线路大多建立在高山上&#xff0c;不仅可以减少地面障碍物和人类活动的干扰&#xff0c;还能提高线路的抗灾能力和可靠性。但同时也会面临其它的难题&#xff0c;例如森林火灾预防。今天&#xff0c;深圳鼎信智慧将从不同角度分析…

基于AR+地图导航的景区智慧导览设计

随着科技的飞速发展&#xff0c;智慧旅游已经成为现代旅游业的一个重要趋势。在这个背景下&#xff0c;景区智慧导览作为智慧旅游的核心组成部分&#xff0c;正逐渐受到越来越多游客的青睐。本文将深入探讨地图导航软件在景区智慧导览中的应用&#xff0c;并分析其为游客和景区…

Vue-Pinina基本教程

前言 官网地址&#xff1a;Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容&#xff0c;需要有vuex的基础&#xff0c;下面很多概念会直接省略&#xff0c;比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库&#xff0c;它允许您跨…

Graylog日志搜索技巧

graylog搜索日志用的语法是Syntax接近Lucene&#xff0c;搜起来比较方便 Search query languagehttps://go2docs.graylog.org/4-0/making_sense_of_your_log_data/writing_search_queries.html?tocpathSearching%20Your%20Log%20Data|_____1 1.Syntax 语法 1.1 基本匹配 搜…