按照你的要求修改后报错:
WARNING: Package name "robotName_description" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits, underscores, and dashes.
[robot_state_publisher-6] process has died [pid 16305, exit code 1, cmd /home/robot/UR5-Pick-and-Place-Simulation-main/catkin_ws/devel/.private/robot_state_publisher/lib/robot_state_publisher/robot_state_publisher __name:=robot_state_publisher __log:=/home/robot/.ros/log/19d1baf8-bef1-11f0-850d-37c6b361701a/robot_state_publisher-6.log].
log file: /home/robot/.ros/log/19d1baf8-bef1-11f0-850d-37c6b361701a/robot_state_publisher-6*.log
[INFO] [1762860318.982315, 0.000000]: Loading model XML from ros parameter robot_description
[INFO] [1762860318.989154, 0.000000]: Waiting for service /gazebo/spawn_urdf_model
Waining gazebo service..
[INFO] [1762860319.100038077]: Finished loading Gazebo ROS API Plugin.
[INFO] [1762860319.100860444]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
[INFO] [1762860319.136844153]: Finished loading Gazebo ROS API Plugin.
[INFO] [1762860319.137435485]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting...
Warning [parser.cc:833] XML Attribute[version] in element[sdf] not defined in SDF, ignoring.
Warning [parser.cc:833] XML Attribute[version] in element[sdf] not defined in SDF, ignoring.
[INFO] [1762860319.468792526]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[INFO] [1762860319.480553920]: Physics dynamic reconfigure ready.
../src/intel/isl/isl.c:2105: FINISHME: ../src/intel/isl/isl.c:isl_surf_supports_ccs: CCS for 3D textures is disabled, but a workaround is available.
[INFO] [1762860319.593003, 0.000000]: Calling service /gazebo/spawn_urdf_model
../src/intel/isl/isl.c:2105: FINISHME: ../src/intel/isl/isl.c:isl_surf_supports_ccs: CCS for 3D textures is disabled, but a workaround is available.
libcurl: (60) SSL: no alternative certificate subject name matches target host name 'fuel.ignitionrobotics.org'
[INFO] [1762860321.401597103]: Camera Plugin: The 'robotNamespace' param did not exit
[INFO] [1762860321.404988328]: Camera Plugin (ns = ) <tf_prefix_>, set to ""
[INFO] [1762860321.413659008]: SetStatic service at: /link_attacher_node/setstatic
[INFO] [1762860321.414917514]: Attach service at: /link_attacher_node/attach
[INFO] [1762860321.415299813]: Detach service at: /link_attacher_node/detach
[INFO] [1762860321.415338479]: Link attacher node initialized.
Error [parser_urdf.cc:3267] Unable to call parseURDF on robot model
Error [parser.cc:488] parse as old deprecated model file failed.
以下为修改后的完整xacro文件内容:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- 1. 底盘参数 -->
<xacro:property name="wheel_radius" value="0.05" />
<xacro:property name="wheel_width" value="0.02" />
<xacro:property name="base_radius" value="0.15" />
<xacro:property name="base_height" value="0.05" />
<xacro:property name="pi" value="3.1415926535" />
<!-- 2. 底盘基座 -->
<link name="base_footprint"/>
<joint name="base_footprint_joint" type="fixed">
<parent link="base_footprint"/>
<child link="mobile_base"/>
<origin xyz="0 0 ${base_height/2}" rpy="0 0 0"/>
</joint>
<!-- 3. 底盘主体 -->
<link name="mobile_base">
<visual>
<geometry>
<cylinder radius="${base_radius}" length="${base_height}"/>
</geometry>
<material name="blue">
<color rgba="0 0 0.8 0.5"/>
</material>
</visual>
<collision>
<geometry>
<cylinder radius="${base_radius}" length="${base_height}"/>
</geometry>
</collision>
<inertial>
<mass value="5.0"/>
<inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/>
</inertial>
</link>
<!-- 4. 驱动轮宏定义 -->
<xacro:macro name="drive_wheel" params="prefix x y">
<link name="${prefix}_wheel">
<visual>
<geometry>
<cylinder radius="${wheel_radius}" length="${wheel_width}"/>
</geometry>
<material name="black"/>
</visual>
<collision>
<geometry>
<cylinder radius="${wheel_radius}" length="${wheel_width}"/>
</geometry>
</collision>
<inertial>
<mass value="0.5"/>
<inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001"/>
</inertial>
</link>
<joint name="${prefix}_wheel_joint" type="continuous">
<parent link="mobile_base"/>
<child link="${prefix}_wheel"/>
<origin xyz="${x} ${y} -${base_height/2}" rpy="${pi/2} 0 0"/>
<axis xyz="0 1 0"/>
</joint>
</xacro:macro>
<!-- 5. 万向轮宏定义 -->
<xacro:macro name="caster_wheel" params="prefix x y">
<link name="${prefix}_caster">
<visual>
<geometry>
<sphere radius="${wheel_radius}"/>
</geometry>
<material name="gray"/>
</visual>
<collision>
<geometry>
<sphere radius="${wheel_radius}"/>
</geometry>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001"/>
</inertial>
</link>
<joint name="${prefix}_caster_joint" type="fixed">
<parent link="mobile_base"/>
<child link="${prefix}_caster"/>
<origin xyz="${x} ${y} -${base_height/2}" rpy="0 0 0"/>
</joint>
</xacro:macro>
<!-- 6. 实例化轮子 -->
<xacro:drive_wheel prefix="left" x="0" y="${base_radius*0.8}"/>
<xacro:drive_wheel prefix="right" x="0" y="-${base_radius*0.8}"/>
<xacro:caster_wheel prefix="front" x="${base_radius*0.7}" y="0"/>
<xacro:caster_wheel prefix="rear" x="-${base_radius*0.7}" y="0"/>
<!-- 7. 机械臂基座连接点 -->
<joint name="arm_base_joint" type="fixed">
<parent link="mobile_base"/>
<child link="base_link"/> <!-- 连接原有UR5的根链接 -->
<origin xyz="0 0 ${base_height/2}" rpy="0 0 0"/>
</joint>
<xacro:include filename="$(find ur5_description)/urdf/ur.transmission.xacro" />
<xacro:include filename="$(find ur5_description)/urdf/ur.gazebo.xacro" />
<!-- Inertia parameters -->
<xacro:property name="base_mass" value="4.0" /> <!-- This mass might be incorrect -->
<xacro:property name="shoulder_mass" value="3.7000" />
<xacro:property name="upper_arm_mass" value="8.3930" />
<xacro:property name="forearm_mass" value="2.2750" />
<xacro:property name="wrist_1_mass" value="1.2190" />
<xacro:property name="wrist_2_mass" value="1.2190" />
<xacro:property name="wrist_3_mass" value="0.1879" />
<xacro:property name="shoulder_cog" value="0.0 0.00193 -0.02561" />
<xacro:property name="upper_arm_cog" value="0.0 -0.024201 0.2125" />
<xacro:property name="forearm_cog" value="0.0 0.0265 0.11993" />
<xacro:property name="wrist_1_cog" value="0.0 0.110949 0.01634" />
<xacro:property name="wrist_2_cog" value="0.0 0.0018 0.11099" />
<xacro:property name="wrist_3_cog" value="0.0 0.001159 0.0" />
<!-- Kinematic model -->
<!-- Properties from urcontrol.conf -->
<!--
DH for UR5:
a = [0.00000, -0.42500, -0.39225, 0.00000, 0.00000, 0.0000]
d = [0.089159, 0.00000, 0.00000, 0.10915, 0.09465, 0.0823]
alpha = [ 1.570796327, 0, 0, 1.570796327, -1.570796327, 0 ]
q_home_offset = [0, -1.570796327, 0, -1.570796327, 0, 0]
joint_direction = [-1, -1, 1, 1, 1, 1]
mass = [3.7000, 8.3930, 2.2750, 1.2190, 1.2190, 0.1879]
center_of_mass = [ [0, -0.02561, 0.00193], [0.2125, 0, 0.11336], [0.11993, 0.0, 0.0265], [0, -0.0018, 0.01634], [0, 0.0018,0.01634], [0, 0, -0.001159] ]
-->
<xacro:property name="ur5_d1" value="0.089159" />
<xacro:property name="ur5_a2" value="-0.42500" />
<xacro:property name="ur5_a3" value="-0.39225" />
<xacro:property name="ur5_d4" value="0.10915" />
<xacro:property name="ur5_d5" value="0.09465" />
<xacro:property name="ur5_d6" value="0.0823" />
<!-- Arbitrary offsets for shoulder/elbow joints -->
<xacro:property name="shoulder_offset" value="0.13585" /> <!-- measured from model -->
<xacro:property name="elbow_offset" value="-0.1197" /> <!-- measured from model -->
<!-- link lengths used in model -->
<xacro:property name="shoulder_height" value="${ur5_d1}" />
<xacro:property name="upper_arm_length" value="${-ur5_a2}" />
<xacro:property name="forearm_length" value="${-ur5_a3}" />
<xacro:property name="wrist_1_length" value="${ur5_d4 - elbow_offset - shoulder_offset}" />
<xacro:property name="wrist_2_length" value="${ur5_d5}" />
<xacro:property name="wrist_3_length" value="${ur5_d6}" />
<!--property name="shoulder_height" value="0.089159" /-->
<!--property name="shoulder_offset" value="0.13585" /--> <!-- shoulder_offset - elbow_offset + wrist_1_length = 0.10915 -->
<!--property name="upper_arm_length" value="0.42500" /-->
<!--property name="elbow_offset" value="0.1197" /--> <!-- CAD measured -->
<!--property name="forearm_length" value="0.39225" /-->
<!--property name="wrist_1_length" value="0.093" /--> <!-- CAD measured -->
<!--property name="wrist_2_length" value="0.09465" /--> <!-- In CAD this distance is 0.930, but in the spec it is 0.09465 -->
<!--property name="wrist_3_length" value="0.0823" /-->
<xacro:property name="shoulder_radius" value="0.060" /> <!-- manually measured -->
<xacro:property name="upper_arm_radius" value="0.054" /> <!-- manually measured -->
<xacro:property name="elbow_radius" value="0.060" /> <!-- manually measured -->
<xacro:property name="forearm_radius" value="0.040" /> <!-- manually measured -->
<xacro:property name="wrist_radius" value="0.045" /> <!-- manually measured -->
<xacro:macro name="cylinder_inertial" params="radius length mass *origin">
<inertial>
<mass value="${mass}" />
<xacro:insert_block name="origin" />
<inertia ixx="${0.0833333 * mass * (3 * radius * radius + length * length)}" ixy="0.0" ixz="0.0"
iyy="${0.0833333 * mass * (3 * radius * radius + length * length)}" iyz="0.0"
izz="${0.5 * mass * radius * radius}" />
</inertial>
</xacro:macro>
<xacro:macro name="ur5_robot" params="prefix joint_limited">
<link name="${prefix}base_link" >
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/base.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/base.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.06" length="0.05" mass="${base_mass}">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}shoulder_pan_joint" type="revolute">
<parent link="${prefix}base_link" />
<child link = "${prefix}shoulder_link" />
<origin xyz="0.0 0.0 ${shoulder_height}" rpy="0.0 0.0 0.0" />
<axis xyz="0 0 1" />
<xacro:unless value="${joint_limited}">
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="150.0" velocity="3.15"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="150.0" velocity="3.15"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}shoulder_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/shoulder.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/shoulder.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.06" length="0.15" mass="${shoulder_mass}">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}shoulder_lift_joint" type="revolute">
<parent link="${prefix}shoulder_link" />
<child link = "${prefix}upper_arm_link" />
<origin xyz="0.0 ${shoulder_offset} 0.0" rpy="0.0 ${pi / 2.0} 0.0" />
<axis xyz="0 1 0" />
<xacro:unless value="${joint_limited}">
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="150.0" velocity="3.15"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="150.0" velocity="3.15"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}upper_arm_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/upperarm.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/upperarm.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.06" length="0.56" mass="${upper_arm_mass}">
<origin xyz="0.0 0.0 0.28" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}elbow_joint" type="revolute">
<parent link="${prefix}upper_arm_link" />
<child link = "${prefix}forearm_link" />
<origin xyz="0.0 ${elbow_offset} ${upper_arm_length}" rpy="0.0 0.0 0.0" />
<axis xyz="0 1 0" />
<xacro:unless value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="150.0" velocity="3.15"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="150.0" velocity="3.15"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}forearm_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/forearm.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/forearm.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.06" length="0.5" mass="${forearm_mass}">
<origin xyz="0.0 0.0 0.25" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}wrist_1_joint" type="revolute">
<parent link="${prefix}forearm_link" />
<child link = "${prefix}wrist_1_link" />
<origin xyz="0.0 0.0 ${forearm_length}" rpy="0.0 ${pi / 2.0} 0.0" />
<axis xyz="0 1 0" />
<xacro:unless value="${joint_limited}">
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="28.0" velocity="3.2"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="28.0" velocity="3.2"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}wrist_1_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/wrist1.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/wrist1.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.6" length="0.12" mass="${wrist_1_mass}">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}wrist_2_joint" type="revolute">
<parent link="${prefix}wrist_1_link" />
<child link = "${prefix}wrist_2_link" />
<origin xyz="0.0 ${wrist_1_length} 0.0" rpy="0.0 0.0 0.0" />
<axis xyz="0 0 1" />
<xacro:unless value="${joint_limited}">
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="28.0" velocity="3.2"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="28.0" velocity="3.2"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}wrist_2_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/wrist2.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/wrist2.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.6" length="0.12" mass="${wrist_2_mass}">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}wrist_3_joint" type="revolute">
<parent link="${prefix}wrist_2_link" />
<child link = "${prefix}wrist_3_link" />
<origin xyz="0.0 0.0 ${wrist_2_length}" rpy="0.0 0.0 0.0" />
<axis xyz="0 1 0" />
<xacro:unless value="${joint_limited}">
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="28.0" velocity="3.2"/>
</xacro:unless>
<xacro:if value="${joint_limited}">
<limit lower="${-pi}" upper="${pi}" effort="28.0" velocity="3.2"/>
</xacro:if>
<dynamics damping="0.0" friction="0.0"/>
</joint>
<link name="${prefix}wrist_3_link">
<visual>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/visual/wrist3.dae" />
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</visual>
<collision>
<geometry>
<mesh filename="package://ur5_description/meshes/ur5/collision/wrist3.stl" />
</geometry>
</collision>
<xacro:cylinder_inertial radius="0.6" length="0.12" mass="${wrist_3_mass}">
<origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
</xacro:cylinder_inertial>
</link>
<joint name="${prefix}ee_fixed_joint" type="fixed">
<parent link="${prefix}wrist_3_link" />
<child link = "${prefix}ee_link" />
<origin xyz="0.0 ${wrist_3_length} 0.0" rpy="0.0 0.0 ${pi/2.0}" />
</joint>
<link name="${prefix}ee_link">
<collision>
<geometry>
<box size="0.01 0.01 0.01"/>
</geometry>
<origin rpy="0 0 0" xyz="-0.01 0 0"/>
</collision>
</link>
<xacro:ur_arm_transmission prefix="${prefix}" />
<xacro:ur_arm_gazebo prefix="${prefix}" />
<!-- ROS base_link to UR 'Base' Coordinates transform -->
<link name="${prefix}base"/>
<joint name="${prefix}base_link-base_fixed_joint" type="fixed">
<!-- NOTE: this rotation is only needed as long as base_link itself is
not corrected wrt the real robot (ie: rotated over 180
degrees)
-->
<origin xyz="0 0 0" rpy="0 0 ${-pi}"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}base"/>
</joint>
<!-- Frame coincident with all-zeros TCP on UR controller -->
<link name="${prefix}tool0"/>
<joint name="${prefix}wrist_3_link-tool0_fixed_joint" type="fixed">
<origin xyz="0 ${wrist_3_length} 0" rpy="${pi/-2.0} 0 0"/>
<parent link="${prefix}wrist_3_link"/>
<child link="${prefix}tool0"/>
</joint>
<!-- 在base_link下方添加底盘 -->
<link name="mobile_base">
<visual>
<geometry>
<cylinder length="0.05" radius="0.20"/> <!-- 底盘尺寸 -->
</geometry>
<material name="blue"/>
</visual>
<collision>...</collision>
<inertial>...</inertial>
</link>
<joint name="base_to_mobile_joint" type="fixed">
<parent link="base_link"/> <!-- 原机械臂基座 -->
<child link="mobile_base"/> <!-- 新底盘 -->
<origin xyz="0 0 -0.1" rpy="0 0 0"/> <!-- Z轴下移10cm -->
</joint>
</xacro:macro>
<!-- 注意:确保原有UR5的根链接名为"base_link" -->
<xacro:ur5_robot prefix="" joint_limited="true"/>
<!-- ====== 用户提供的UR5代码结束 ====== -->
<!-- 9. Gazebo差分驱动插件 -->
<gazebo>
<plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
<commandTopic>cmd_vel</commandTopic>
<odometryTopic>odom</odometryTopic>
<odometryFrame>odom</odometryFrame>
<robotBaseFrame>base_footprint</robotBaseFrame>
<publishWheelTF>true</publishWheelTF>
<wheelSeparation>${base_radius*1.6}</wheelSeparation>
<wheelDiameter>${wheel_radius*2}</wheelDiameter>
<torque>5</torque>
<publishTf>1</publishTf>
<leftJoint>left_wheel_joint</leftJoint>
<rightJoint>right_wheel_joint</rightJoint>
</plugin>
</gazebo>
</robot>