使用ROS-Industrial机器人支持包(Support Packages)

 

1、概述

本教程将概述构成ROS工业机器人支持软件包的文件和目录,并说明如何正确有效地利用此类软件包提供的功能。

这些支持程序包的目的和结构类似于可以在ROS中找到的典型机器人描述程序包(例如pr2_description程序包)。但是,为了处理通常更成熟的产品范围,及可能存在的大量机器人模型变体,并利用工业机器人制造商采用的更为结构化的命名方式,这些软件包的命名和组织方式与ROS软件包略有不同。类似地,使用这些软件包也略有不同。

以下各节将重点介绍由机器人支持软件包打包的两种主要产物:启动文件(launch files)xacro宏(xacro macros)前者用于与工业控制器(industrial controller)进行交互检查模型进行状态可视化,而后者用于提供受支持的机器人变体urdf模型

注意:本页上的所有示例均基于Fanuc M-10iA(如m10ia)。对于其他机器人和制造商,只需将每一个出现的fanuc_m10ia替换为适当的名称即可。以Motoman MH5为例,它将变成motoman_mh5。

 

2、机器人支持包的结构

ROS-Industrial中的所有官方支持程序包在所有型号和所有制造商之间共享通用的文件和目录布局。 这样做是为了能够有效地使用这些程序包,因为标准化命名和文件位置可以省去大量的猜测工作,并且无需经常查找手写代码的存储位置或命名方式。

以下清单显示了机器人支持包的顶级目录布局

fanuc_m10ia_support

├─config

├─launch

├─meshes

├─test

└─urdf

简而言之,config包含存储信息的文件,例如关节名称,RViz配置或任何其他特定于模型的配置。 launch存储所有支持包通用的启动文件集。 meshes目录存储在urdfs中引用的用于可视化和碰撞检测的所有3D网格。 每个支持包还包含一组标准化(roslaunch)测试,可以在test目录中找到它们。 这些测试通常会在启动时检查启动文件中的错误,但也可能包括其他测试。 最后,所有urdfs和xacros都存储在urdf目录中。

 

3、使用提供的启动文件(launch files)

所有ROS工业机器人支持软件包均包含以下启动文件:

fanuc_m10ia_support

├─..

├─launch

│ ├─..

│ ├─load_m10ia.launch

│ ├─test_m10ia.launch

│ ├─robot_state_visualize_m10ia.launch

│ ├─robot_interface_(streaming|download)_m10ia.launch

│ └─..

└─..

 

load_m10ia.launch

load_m10ia.launch文件仅将此特定模型的urdf上载到参数服务器上的robot_description参数。建议用户将此启动文件包含在自己的启动文件中,而不是加载urdf或直接调用xacro。并非所有模型都是加载简单的或单个urdfxacro,此启动文件将这些详细信息隐藏在简单的界面后面。

test_m10ia.launch

使用test_m10ia.launch文件,用户可以在RViz中检查和验证urdf模型。它会自动加载适当的urdf(通过包含load_m10ia.launch),并启动joint_state_publisherrobot_state_publisher节点以允许用户与模型进行交互。此启动文件不需要访问任何实际的硬件。

robot_state_visualize_m10ia.launch

robot_state_visualize_m10ia.launch允许用户在RViz中可视化真实(或模拟)机器人的当前状态。它是通过从相应的ROS工业机器人驱动程序包中启动相关节点,为它们提供与该特定模型(在本例中为Fanuc M-10iA)正确连接所需的任何参数,以及通过启动RVizrobot_state_publisher节点。

这个启动文件显然需要访问真实(或仿真)硬件,并且具有(至少)一个必需的参数:工业控制器的IP地址控制器必须已经在运行适当的ROS-Industrial服务器程序

robot_interface_streaming_m10ia.launch

最后一个文件robot_interface_streaming_m10ia.launch启动了在ROS与工业控制器之间建立完全双向连接所需的所有ROS节点。状态报告(state reporting)节点轨迹中继(trajectory relay)节点都已启动(参阅《工业机器人客户端-设计》)。在大多数情况下,该启动文件是由ROS工业驱动程序软件包为控制器提供的类似文件的包装,但是驱动程序可能需要其他信息才能正确地与特定模型对接(在这种情况下,M -10iA)。

该启动文件需要访问实际(或模拟)硬件,并具有(至少)一个必需的参数:工业控制器的IP地址。控制器必须已经在运行适当的ROS-Industrial服务器程序。

 

3.1、流或下载Streaming or downloading

robot_interface启动文件的两个主要版本:流和下载(streaming and download),它们与ROS工业机器人驱动程序与其在工业控制器上运行的服务器组件进行交互的两种主要方式相对应(请参阅“工业机器人客户端”软件包的“通用实现”子页面)。 两者通常都接受相同的参数,但这取决于所涉及节点的特定需求。 当前没有同时支持流传输和下载的机械手驱动程序包,因此所有官方支持包将仅包含启动文件的两种变体之一。

 

3.2、附加参数

在某些情况下,robot_state_visualize和robot_interface_streaming启动文件都可以接受(或要求)其他参数。 例如,Fanuc ROS-Industrial驱动程序要求对它接收或传输的任何数据执行字节顺序交换,但前提是必须连接到真实控制器。 与模拟控制器的连接不需要此交换,因此Fanuc机械手的所有robot_state_visualize和robot_interface_streaming启动文件都接受use_bswap参数,该参数允许用户配置此行为。 在Wiki上没有文档的情况下,最好直接检查启动文件以获取有关其他参数的信息。

 

3.3、示例:启动流接口

例如,以下roslaunch调用将启动ROS-Industrial Fanuc驱动程序,该驱动程序具有与M-10iA接口的适当设置,并已连接到10.10.0.100的控制器:

roslaunch fanuc_m10ia_support robot_interface_streaming_m10ia.launch robot_ip:=10.10.0.100

对于相同的M-10iA,但现在在Windows PC上使用Roboguide在10.10.0.120上进行了仿真:

roslaunch fanuc_m10ia_support robot_interface_streaming_m10ia.launch robot_ip:=10.10.0.120 use_bswap:=false

       请注意使用附加的bswap参数。

 

3.4、示例:包含流接口

作为另一个示例,以下启动文件摘录(摘自“为工业机器人创建MoveIt程序包”教程中创建的典型ROS-I moveit_planning_execution.launch文件),显示了如何启动特定机器人模型的驱动程序,启动文件的一部分如下:

1 ...

2

3 unless="$(arg sim)">

4"$(find fanuc_m10ia_support)/launch/robot_interface_ streaming_m10ia.launch" >

5 name="robot_ip" value="$(arg robot_ip)"/>

6 name="use_bswap" value="$(arg use_bswap)" />

7

8

9

10 ...

在此特定示例中,仅当sim参数为false时才加载驱动程序启动文件(因此,使用真实的机械手时)。 robot_ip和use_bswap参数都从顶层启动文件传递到robot_interface_streaming_m10ia.launch。

 

4、使用提供的xacros

除了标准化的启动文件之外,所有机器人支持软件包还包括一组标准化的xacro文件:一个宏定义和一个提供主宏默认实例化的文件。

这些xacros通常基于“为工业机器人创建URDF”教程创建,并遵循关于机器人,关节和链接命名的通用约定。

每个程序包将始终至少包含以下文件:

fanuc_m10ia_support
├─..
└─urdf
  ├─..
  ├─m10ia_macro.xacro
  ├─m10ia.xacro
  ├─m10ia.urdf
  └─..

m10ia_macro.xacro

m10ia_macro.xacro文件定义了此特定机器人模型变量的主要xacro宏。该文件并不构成完整的urdf:它仅包含宏定义。用户可以将此文件包含在其他派生xacros或合成x​​acros中,以将建好模的机械手的实例添加到场景中。

所有ROS-Industrial机器人宏都接受一个前缀参数,该参数的值会附加到属于运动学结构的所有链接和关节中。应使用该前缀来避免同一宏的多个实例之间或使用相同链接或关节名称的其他urdf结构之间的冲突。

m10ia.xacro

此m10ia.xacro是顶层xacro文件,该文件实例化由相关xacro宏建模的机器人在默认为空的场景中的单个实例。这是默认的便捷xacro,并不意味着要包含在其他xacros中(而应使用m10ia_macro.xacro)。 prefix参数设置为“”(空字符串)。

该文件由前面讨论的load_m10ia.launch文件加载,也用于创建m10ia.urdf文件。

 

m10ia.urdf

通过xacro工具转换后,m10ia.urdf可由m10ia.xacro产生。因此,它包含与m10ia_macro.xacro完全相同的运动学结构。

它可以与不能直接加载xacros的ROS软件包/工具一起使用,或者在不希望依赖或使用xacro的情况下使用。作为完整的urdf,它不能包含在其他文件中,应将其视为顶层urdf。

可手动将xacros文件更改urdf文件,以在moveit_setup_assistant中使用以产生moveit_config包。更改时只需将xacros文件头部分更改+文件中所有 ${prefix} 字段删除。

4.1、命名

urdf目录中所有xacros的命名均遵循标准化的命名方案。 这也会影响文件中定义的宏的名称。

urdf目录中的文件不包含制造商名称作为其文件名的一部分。 由于完整的软件包名称是指定其位置的路径的一部分,因此添加额外的前缀将是多余的。

宏的名称确实包括制造商的名称。 这样做是为了避免与其他文件中定义的具有相同名称的宏发生名称冲突,并提高复杂xacros中的宏的可识别性。

 

 

4.2、标准化链接Link/框架Frame

除了正常的运动链之外,机器人模型urdfs还包含三个额外的标准化框架。它们是底座(base),法兰(flange)和工具架(tool0 frame)。实践证明,这些框架在与工业机器人控制器一起使用时非常方便。

底座base框架与工业控制器定义的基本框架重合,并具有相同的方向(即:其主笛卡尔坐标系的原点)。其目的是允许用户将点转换到机器人的笛卡尔基础框架。此框架的某些特定于供应商的名称是World Frame(Fanuc),$ ROBROOT(KUKA)。

工具框(tool0 frame与工业控制器定义的默认工具框重合,并且具有相同的方向。其目的是促进将点转换到机器人的笛卡尔工具框架。 tool0框架与未配置的或全零的工具框架匹配。该框架不得被编辑。应将其他工具框架定义为法兰(flange)的子代children(或对于某些机器人,是运动链中最后一个链节的子代)。该框架的某些特定于供应商的名称是Tool Frame (Fanuc), $TOOL (KUKA).

法兰框架(flange frame是用于将EEF模型连接到机器人主运动链的框架。与tool0相反,此框架将始终根据REP 103进行定向,x +指向前方。这使EEF模型的连接变得笔直,因为无需再旋转即可将EEF模型与机器人法兰连杆对准。请注意,法兰没有分配任何几何图形,它是一个空框架。此框架也不得被编辑。

有关其他框架,它们的定义和用途的更多信息,请参见为工业机器人创建URDF教程的其他/标准框架部分。

 

 

4.3、示例:向机器人添加末端执行器

作为示例,以下内容显示了如何将末端执行器模型end-effector model(位于虚构的my_eef_description程序包中)连接到M-10iA的xacro的法兰链接flange link(来自fanuc_m10ia_support程序包)。 此处显示的概念可用于创建任意复杂的场景。

   1 
   2 
   3   
   4   
   5   
   6 
   7   
   8   
   9 
  10     
  11     
  12     
  13 
  14     
  15     
  17     
  18       
  19       
  20       
  21     
  22 
  23   
  24 

通过将新的复合结构本身包装在宏中,可以用与原始M-10iA宏几乎相同的方式实例化它。

还鼓励用户将此类复合xacros存储在独立的程序包中,其中包括“使用提供的启动文件”部分中描述的启动文件集,以及“使用提供的xacros”中描述的顶层xacro文件。

 

 

 

你可能感兴趣的:(ROS开发)