ROS机器人项目开发11例(原书第2版)
上QQ阅读APP看书,第一时间看更新

3.6.3 机械臂建模

在ROS中构建的机械臂的可视化形象如图3.10所示。

图3.10 基于2D连杆元素展示的机械臂可视化形象

由于已经在3.5.3节中对如何使用相关方法进行建模进行了所有必要的解释,并且本部分也将采用相同的方法进行机械臂建模,因此我们直接开始逐步构建机械臂模型。

1.初始化工作空间

我们将在专为本章创建的工作空间(chapter_3_ws)中进行初始化。首先在前面给出的链接中下载网格文件,然后进入urdf文件夹,创建一个名为robot_arm.urdf.xacro的文件,具体命令如下:

使用以下代码初始化XML的version标签以及<robot>标签,然后一步步地将下载得到的文件中的代码按照后面的内容添加到该文件中:

至此我们完成了工作空间的初始化,下面定义连杆组件。

2.定义连杆组件

至此,我们已经定义了机器人模型的一部分,下面将下列代码复制到<robot>标签中(即将代码复制到两个<robot>标签之间)。需要注意的是,由于5个连杆组件均包含各自不同的坐标信息,因此我们直接在此对其进行定义。下面我们给出5个连杆组件之一——机械臂底座的详细定义信息:

读者可以从https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/robot_arm.urdf.xacro中找到其他连杆组件的定义信息,如二头肌组件、bottom_wrist、肘部连杆组件和bottom_wrist等。

可以尝试将<visual>和<collision>标签中的参数定义分别修改为宏定义的形式,但这有时可能会使初学者困惑。因此,为了简单起见,我们在本书中只定义了最小的宏。如果读者觉得自己已经掌握了宏,欢迎通过添加更多的宏来测试相应的技能。

3.定义关节组件

我们将为机械臂定义可旋转的关节,即可以在指定区间之间旋转运动。由于此机械臂中的所有关节都在指定区间之间移动,并且对所有关节都是通用的,因此我们将这些关节组件定义在之前构建机器人底座时创建的同一robot_essentials.xacro文件中:

在robot_arm.urdf.xacro文件中定义关节组件,如下所示:

至此我们完成了文件内容的添加,下面我们可以使用rviz进行可视化,查看构建的机械臂是否和我们预期的一样。具体操作过程为执行以下命令:

添加机器人模型,并在选项“Global”中将“Fixed Frame”设置为arm_base。如果一切顺利的话,读者将能够在可视化界面中看到我们构建的机器人模型。可以添加tf显示,并与图3.10进行对比。可以通过将gui参数设置为true来启动滑块控制器,进而通过拖动滑块来移动机械臂连杆。