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.mzph.cn/news/579911.shtml

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

相关文章

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测 目录 多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多…

Qt/C++音视频开发61-多屏渲染/一个解码渲染到多个窗口/画面实时同步

一、前言 多屏渲染就是一个解码线程对应多个渲染界面&#xff0c;通过addrender这种方式添加多个绘制窗体&#xff0c;我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面&#xff0c;原理应该类似&#xff0c;一个地方负责打开解码播放&#xff0c;将画面…

谷歌 SGE 和生成式 AI 在搜索中:2024 年会发生什么

2024 年&#xff0c;Google 的搜索生成体验将如何影响营销&#xff1f;探索 AI 驱动的搜索趋势、SERP 中的 SGE、自然流量影响等。 最初&#xff0c;Labs 中的 Google 搜索生成体验 &#xff08;SGE&#xff09; 实验预计将于 2023 年 12 月“结束”。但随着谷歌实验室网站的最…

nodejs+vue+微信小程序+python+PHP的勤工俭学系统-计算机毕业设计推荐

微信小程序端 &#xff08;1&#xff09;首页。顶部展示公告&#xff0c;下方展示兼职信息详情&#xff0c;按时间倒序&#xff0c;求职者可以根据兼职内容信息和行业进行模糊筛选用人单位的招聘信息&#xff0c;点击某条信息可查看其信息内容和用人单位的信息&#xff08;包括…

用C语言找最大值最小值极值问题---------(C每日一编程)

一&#xff0c;输入十个数&#xff0c;输出其中的最大值 采用打擂台的方法 void main() {int i, max, a[10];for (i 0; i < 10; i)scanf("%d", &a[i]);max a[0];for (i 1; i < 10; i)if (a[i] > max)max a[i];printf("%d\n", max); } 二…

蓝牙物联网在汽车领域的应用

I、蓝牙的技术特点 ​ 1998 年 5 月&#xff0c;瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM 和英特尔公司五家著名厂商&#xff0c;在联合拓展短离线通信技术的标准化活动时提出了蓝牙技术的概念。蓝牙工作在无需许可的 2.4GHz 工业频段 (SIM)之上(我国的频段范围为2400.0~248…

Text-to-SQL小白入门(十)RLHF在Text2SQL领域的探索实践

本文内容主要基于以下开源项目探索实践&#xff0c; Awesome-Text2SQL:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, Text2DSL、Text2API、Text2Vis and more.DB-GPT-Hub&#xff1a;GitHub - eosphoros-ai…

关于“Python”的核心知识点整理大全41

目录 scoreboard.py game_functions.py game_functions.py 14.3.8 显示等级 game_stats.py scoreboard.py scoreboard.py scoreboard.py game_functions.py game_functions.py alien_invasion.py 14.3.9 显示余下的飞船数 ship.py scoreboard.py 我们将最高得分圆整…

PyTorch深度学习实战(28)——对抗攻击(Adversarial Attack)

PyTorch深度学习实战&#xff08;28&#xff09;——对抗攻击 0. 前言1. 对抗攻击2. 对抗攻击模型分析3. 使用 PyTorch 实现对抗攻击小结系列链接 0. 前言 近年来&#xff0c;深度学习在图像分类、目标检测、图像分割等诸多领域取得了突破性进展&#xff0c;深度学习模型已经能…

常见的一些库函数

什么是库函数&#xff1a; 库函数是一组预先定义好的函数&#xff0c;可以通过包含相应的头文件来使用。它们提供了各种常用的功能和算法&#xff0c;使得编程更加方便和高效。 库函数的作用如下&#xff1a; 提供常用功能&#xff1a;库函数提供了各种常用的功能&#xff0c;…

记一次应急响应练习(Linux)

记一次应急响应练习(Linux) Linux&#xff1a; 请提交攻击者的IP地址 答&#xff1a; 192.168.31.132 思路&#xff1a; 通过查看历史命令和开放的8080端口看到这台主机上运行的是Tomcat服务。并且在历史命令中看到了Tomcat的安装路径。那么就算是找到了日志的查看点了&#x…

设计模式-依赖注入模式

设计模式专栏 模式介绍模式特点应用场景依赖注入和控制反转的区别代码示例Java实现依赖注入模式Python实现依赖注入模式 依赖注入模式在spring中的应用 模式介绍 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种面向对象编程中的设计模式&…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-1x001

如上表所示&#xff0c;MOE1&#xff0c;OSSR0&#xff0c;CCxE0&#xff0c;CCxNE1时&#xff0c;OCx输出状态取决于GPIO端口上下拉状态&#xff0c;OCxN输出状态取决于OCx_REF与极性选择&#xff08;CCxNP&#xff09;。 -------------------------------------------------…

【头歌实训】Spark 完全分布式的安装和部署(新)

文章目录 第1关&#xff1a; Standalone 分布式集群搭建任务描述相关知识课程视频Spark分布式安装模式主机映射免密登录准备Spark安装包配置环境变量修改 spark-env.sh 配置文件修改 slaves 文件分发安装包启动spark验证安装 编程要求测试说明答案代码 第1关&#xff1a; Stand…

C++ Qt开发:QSqlDatabase数据库组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QSqlDatabase数据库模块的常用方法及灵活运用…

Cloudstack多个管理服务器节点

https://docs.cloudstack.apache.org/en/4.18.0.0/adminguide/reliability.html 参考翻译&#xff1a; 代理上支持多个管理服务器 在具有多个管理服务器的Cloudstack环境中&#xff0c;可以根据算法配置代理&#xff0c;将其连接到哪个管理服务器。这对于内部负载均衡器或高可…

【机器学习】人工智能概述

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门研究如何使机器能够像人一样思考、学习和执行任务的学科。它是计算机科学的一个重要分支&#xff0c;涉及机器学习、自然语言处理、计算机视觉等多个领域。 人工智能的概念最早可以追溯到20世…

3.docker 安装失败

1、错误描述 2、报错前操作 ① 安装yum工具 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken ② 更新本地镜像源 # 设置docker镜像源 yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

扫描全能王启动鸿蒙原生应用开发,系HarmonyOS NEXT智能扫描领域首批

近期&#xff0c;“鸿蒙合作签约暨扫描全能王鸿蒙原生应用开发启动仪式”&#xff08;简称“签约仪式”&#xff09;正式举行。合合信息与华为达成鸿蒙合作&#xff0c;旗下扫描全能王将基于HarmonyOS NEXT正式启动鸿蒙原生应用开发。据悉&#xff0c;扫描全能王是鸿蒙在智能扫…

DM、HIVE和Kingbase8(人大金仓数据库)给列增加备注

DM数据库给列增加备注 1、创建表 CREATE TABLE test222 ( id int NOT NULL PRIMARY KEY, name varchar(1000) DEFAULT NULL, email varchar(1000) DEFAULT NULL, phone varchar(1000) DEFAULT NULL ) 2、给列添加注释 comment on column TEST222.NAME is 这是一个列注释; 例如…