在ROS环境下进行机器人建模最常用的方法就是使用URDF文件对机器人进行描述,URDF文件形成通常有三种途径:
1.直接使用URDF的XML tag进行文件编写。
2.使用XACRO建模后转换成URDF文件(更简洁灵活,利于程序复用)。
3.使用三维软件Solidworks进行三维绘图后使用SW2URDF 插件转换成URDF文件(插件对不同的SW兼容性不好,不易安装成功)。
本次建模使用上述的第二种方法。模型为一个四自由度机械手,具体的建模程序如下:
-------------------------------------------------------分割线---------------------------------------
<?xml version="1.0"?>
<robot name="dobot_arm" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- Include materials -->
<material name="Black">
<color rgba="0.0 0.0 0.0 1.0"/>
</material>
<material name="Red">
<color rgba="0.8 0.0 0.0 1.0"/>
</material>
<material name="White">
<color rgba="1.0 1.0 1.0 1.0"/>
</material>
<!-- Constants -->
<property name="deg_to_rad" value="0.01745329251994329577"/>
<property name="M_PI" value="3.14159"/>
<property name="x" value="0.0125"/>
<!-- base link properties -->
<property name="base_len" value="0.168" />
<property name="base_width" value="0.168" />
<property name="base_height" value="0.055" />
<!-- shoulder link properties -->
<property name="shoulder_radius" value="0.06" />
<property name="shoulder_len" value="0.085" />
<!-- bigarm link properties -->
<property name="bigarm_radius" value="0.03" />
<property name="bigarm_len" value="0.135" />
<!-- forearm link properties -->
<property name="forearm_radius" value="0.03" />
<property name="forearm_len" value="0.147" />
<!-- chuck link properties -->
<property name="chuck_len" value="0.08" />
<property name="chuck_width" value="0.03" />
<property name="chuck_height" value="0.03" />
<!-- inertial matrix macro definition -->
<xacro:macro name="inertial_matrix" pa