1、建立功能包
cd Ros2/irb1200_5_90_2026/src
ros2 pkg create abb_irb1200_support --build-type ament_cmake
2、文件架构
(1)、在功能包下新建launch,rviz2,meshes,urdf文件夹。
(2)、将abb_ros2-humble\robot_specific_config\abb_irb1200_support\urdf文件夹下的irb1200_5_90.xacro、 irb1200_5_90_macro.xacro 和irb1200.ros2_control.xacro文件拷贝到abb_irb1200_support/urdf文件夹中

(3)、将abb_ros2-humble\abb_resources\urdf文件夹中的common_colours.xacro和common_materials.cacro文件拷贝到abb_irb1200_support/urdf文件夹中。

(4)、将abb_ros2-humble\robot_specific_config\abb_irb1200_support\meshes\irb1200_5_90文件夹下的collision和visual文件夹拷贝到abb_irb1200_support/meshes文件夹中

(5)、修改irb1200_5_90_macro.xacro文件(主要是修改路径)
cpp
<?xml version="1.0"?>
<robot xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find abb_irb1200_support)/urdf/common_materials.xacro"/>
<xacro:macro name="abb_irb1200_5_90" params="prefix">
<!-- link list -->
<link name="${prefix}base_link">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="13.7742"/>
<origin xyz="-0.028986 0.000596 0.11273"/>
<inertia ixx="0.101998" ixy="0.000495482" ixz="0.000311158" iyy="0.13969" iyz="-0.000245375" izz="0.130433"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/base_link.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/base_link.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_1">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="11.8419"/>
<origin xyz="0.000877 -0.000631 -0.062883"/>
<inertia ixx="0.11194" ixy="-4.54988e-05" ixz="0.000280961" iyy="0.0915159" iyz="-0.000109905" izz="0.0876456"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_1.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_1.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_2">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="17.5394"/>
<origin xyz="-0.000928 -0.000497 0.250051"/>
<inertia ixx="0.493558" ixy="1.32136e-05" ixz="0.000209024" iyy="0.462939" iyz="-0.00179901" izz="0.0894214"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_2.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_2.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_3">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="7.46365"/>
<origin xyz="0.099588 0.001143 0.032333"/>
<inertia ixx="0.0252424" ixy="0.000142737" ixz="-0.00565542" iyy="0.0906438" iyz="0.000142213" izz="0.0825079"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_3.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_3.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_4">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="2.74436"/>
<origin xyz="0.381678 0.001261 0.005168"/>
<inertia ixx="0.00573099" ixy="-0.000131119" ixz="0.000380232" iyy="0.0118352" iyz="-2.26565e-05" izz="0.0114428"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_4.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_4.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_5">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="0.62953"/>
<origin xyz="0.011197 -0.001056 0.000109"/>
<inertia ixx="0.000502815" ixy="-1.03173e-05" ixz="-8.74347e-08" iyy="0.00108856" iyz="2.07657e-07" izz="0.000918873"/>
</inertial>
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_5.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_5.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<link name="${prefix}link_6">
<!-- See note 1 in package.xml about the inertial and mass values -->
<inertial>
<mass value="0.137"/>
<origin xyz="-0.00706 -0.00017 -1.32E-06" rpy="0 0 0"/>
<inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001"/>
</inertial>
<!-- Meshlab calculated values (below) make gazebo crash when rotating this joint. -->
<!-- <inertial>
<mass value="0.00686711"/>
<origin xyz="-0.00250976 -1.89e-06 0.00010218"/>
<inertia ixx="1.3517e-06" ixy="-1.21316e-11" ixz="9.18065e-12" iyy="6.89813e-07" iyz="-1.21534e-10" izz="6.90097e-07"/>
</inertial> -->
<collision name="collision">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/collision/link_6.stl"/>
</geometry>
</collision>
<visual name="visual">
<geometry>
<mesh filename="package://abb_irb1200_support/meshes/visual/link_6.dae"/>
</geometry>
<xacro:material_abb_yellow />
</visual>
</link>
<!-- end of link list -->
<!-- joint list -->
<joint type="revolute" name="${prefix}joint_1">
<origin xyz="0 0 0.3991" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}link_1"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-2.967" upper="2.967" velocity="5.027"/>
<dynamics damping="50.0" friction="1.0"/>
</joint>
<joint type="revolute" name="${prefix}joint_2">
<origin xyz="0 0 0" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<parent link="${prefix}link_1"/>
<child link="${prefix}link_2"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-1.745" upper="2.269" velocity="4.189"/>
<dynamics damping="50.0" friction="1.0"/>
</joint>
<joint type="revolute" name="${prefix}joint_3">
<origin xyz="0 0 0.448" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<parent link="${prefix}link_2"/>
<child link="${prefix}link_3"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-3.491" upper="1.222" velocity="5.236"/>
<dynamics damping="10.0" friction="1.0"/>
</joint>
<joint type="revolute" name="${prefix}joint_4">
<origin xyz="0 0 0.042" rpy="0 0 0"/>
<axis xyz="1 0 0"/>
<parent link="${prefix}link_3"/>
<child link="${prefix}link_4"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-4.712" upper="4.712" velocity="6.981"/>
<dynamics damping="5.0" friction="1.0"/>
</joint>
<joint type="revolute" name="${prefix}joint_5">
<origin xyz="0.451 0 0" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<parent link="${prefix}link_4"/>
<child link="${prefix}link_5"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-2.269" upper="2.269" velocity="7.069"/>
<dynamics damping="2.0" friction="1.0"/>
</joint>
<joint type="revolute" name="${prefix}joint_6">
<origin xyz="0.082 0 0" rpy="0 0 0"/>
<axis xyz="1 0 0"/>
<parent link="${prefix}link_5"/>
<child link="${prefix}link_6"/>
<!-- See note 2 in package.xml about effort limits and dynamics values -->
<limit effort="1000" lower="-6.283" upper="6.283" velocity="10.472"/>
<dynamics damping="1.0" friction="1.0"/>
</joint>
<!-- end of joint list -->
<!-- ROS-Industrial 'base' frame- base_link to ABB World Coordinates transform -->
<link name="${prefix}base" />
<joint name="${prefix}base_link-base" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}base"/>
</joint>
<!-- ROS-Industrial 'flange' frame- attachment point for EEF models -->
<link name="${prefix}flange"/>
<joint type="fixed" name="${prefix}joint_6-flange">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="${prefix}link_6"/>
<child link="${prefix}flange"/>
</joint>
<!-- ROS-Industrial 'tool0' frame- all-zeros tool frame -->
<link name="${prefix}tool0" />
<joint name="${prefix}link_6-tool0" type="fixed">
<origin xyz="0 0 0" rpy="0 ${radians(90)} 0" />
<parent link="${prefix}flange" />
<child link="${prefix}tool0" />
</joint>
</xacro:macro>
</robot>