前言
- 在学习和项目研究的过程中,我需要在Ur5e上装上工具,以对现实场景进行仿真。网上会有一些装载/配置现成的夹爪,例如Robotiq等。但和我们装载自定义工具的场景还有些差异,因此写一篇博客记录,可能有偏差。如果有问题请后来者指正。
建模与URDF文件的导出
- 首先呢,我们在Solidworks中建好我们的模型,标注好坐标系与转轴就可以利用sw2urdf进行导出urdf文件,可以看我这篇博客。
- 这里挑一些重点讲,比如我的插件导出的urdf文件是有一些小问题的
- 比如标签里应该加载的是
dae
文件,于是把.stl
改为.dae
,当然这个dae
文件已经提前用MeshLab将.stl转换为.dae了。 - 再比如我将
.STL
改为了.stl
,大写改小写。
- 比如标签里应该加载的是
做完导出优化之后,这个urdf文件已经可以为我们所用了。
- 我按照习惯,将整个导出的包放到了
工作空间/src
目录下,作为一个package供我们使用。
修改ur5的urdf文件
- 一开始我看了这位前辈的文章,因为他使用的是单纯的ur5配置文件,我用的是完整的UR机器人驱动包,所以里面的机器人都是xacro格式的文件,通过宏的方式提升通用性,按照这位前辈的做法可能有点小问题。
- 通过研究发现,宏调用过程的一个关键文件是
ur_macro.xacro
,我通过修改这个文件就可以实现修改ur5e的形态
重点概念
-
首先讲两个比较重要的概念,有助于我们理解ur5e的配置文件。因为没有很系统的学习机器人,我对这些概念还很陌生。
- flange:法兰框架,用于将EEF模型连接到机器人主运动链的框架。与tool0相反,此框架将始终根据REP 103进行定向,x +指向前方。这使EEF模型的连接变得笔直,因为无需再旋转即可将EEF模型与机器人法兰连杆对准。请注意,法兰没有分配任何几何图形,它是一个空框架。此框架也不得被编辑。
按我的理解就是,flange可以用来连接我们的自定义工具/末端执行器。在现实生活中,法兰就是用来连接轴与轴的。
- too0:工具框架,与工业控制器定义的默认工具框重合,并且具有相同的方向。其目的是促进将点转换到机器人的笛卡尔工具框架。 tool0框架与未配置的或全零的工具框架匹配。该框架不得被编辑。应将其他工具框架定义为法兰(flange)的子代children(或对于某些机器人,是运动链中最后一个链节的子代)。该框架的某些特定于供应商的名称是_Tool Frame_ (Fanuc), $TOOL (KUKA).
按我自己的理解就是,这个东西在Rviz中就可以体现为规划球 ,也就是我们轨迹规划的末端。
-
对ur5e配置文件的修改依据也是基于此:
1.添加自定义工具的文件位置,并且在flange和自定义工具之间加上轴,关系为fixed(我这里不需要他运动)。
2.在tool0中修改origin的值,以改变 末端(规划球)的位置,使得规划球正好在自定义工具的末端。我这里是根据自己的模型估算的长度。这位大佬利用rosrun tf tf_echo /wrist_3_link /tool0_controller
计算两者之间的距离,更加科学,大家可以学习。
3.如果建模的时候没有注意坐标系的问题,此时需要调整标签中origin的数值来调整方向。
<!--请ing记得修改too0的位置-->
<!-- 我自己加上胶枪模型 -->
<xacro:include filename="/home/zhangshidi/GitHub/Ros_control/src/ur_attachment/jiaoqiang/urdf/jiaoqiang.urdf"/>
<xacro:macro name="jiaoqiang">
<parent link="${prefix}tool0"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:macro>
<joint name="${prefix}too0_jiaoqiang_joint" type="fixed">
<origin xyz="0 0 0.001" rpy="-${pi/2.0} 0 0"/>
<parent link="${prefix}tool0"/>
<child link="jiaoqiang"/>
</joint>
</robot>
效果
- 效果如图