67、abb_ros2(PickNikRobotics)学习笔记(2)--- 显示机器人

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>
相关推荐
05候补工程师18 分钟前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
知识分享小能手1 小时前
Flask入门学习教程,从入门到精通,数据库操作 — 知识点详解与案例代码(4)
数据库·学习·flask
玄米乌龙茶1231 小时前
LLM成长笔记(十三):系统设计与项目实战
笔记·unity·游戏引擎
wubba lubba dub dub7502 小时前
第四十八周学习周报
学习
生成论实验室2 小时前
用事件关系网络重新理解AI(三):激活函数、微调与元学习
人工智能·学习·算法·语言模型·可信计算技术
searchforAI2 小时前
AI多模态技术:从语音识别到AI结构化笔记是怎么实现的
人工智能·经验分享·笔记·gpt·whisper·语音识别
辰海Coding3 小时前
MiniSpring框架学习-为什么一个请求访问 /helloworld,最后能调用到某个 Controller 方法?原始 MVC实现
java·学习·程序人生·spring·mvc
凉、介3 小时前
深入理解 ARMv7-A|异常/中断处理
笔记·学习·嵌入式·arm
koo3643 小时前
周报5.24
笔记
wxytxdy3 小时前
通过猜数字游戏学习Shell脚本的分支、循环编写
linux·学习