UDRF在建立复杂模型时、缺少重用性、模块化、可编程型。
用xacro代替urdf
定义常量
<xacro:property name="base_link_length" value="0.01"/>
<xacro:property name="base_link_radius" value="0.2"/>
<cylibder length="{base_link_length}" radius="{base_link_radius}"/>
数学表达式
<cylibder length="{base_link_length}" radius="{base_link_radius+0.2}"/>
macro(宏)
<xacro:macro name="inertial_mat" params="mass"/>
<!--name 名字 params:参数-->
<inertial>
<mass value="${mass}">
<inertia ixx="0.5" ixy="0" ixz="0" iyy="0.5" iyz="0.0" izz="0.5">
</inertial>
</xacro:macro>
使用
<xacro:inertial_mat mass="1"/>
详细
xacro 转换为urdf
rosrun xacro xacro xxx.xacro --inorder > xxx.urdf
Transmissions
是机器人的传动系统,机器人每个需要运动的关节都需要配置相应的Transmission
如何配置transmissions
<transmission name="tran2"><!--定义一个关节变量 名为:tran2-->
<type>transmission_interface/SimpleTransmission</type> 类型
<joint name="swivel_J1"> 需要设置传动的关节名
<hardwareInterface>EffortJointInterface</hardwareInterface>
</joint>
<actuator name="motor2"> 驱动名
<hardwareInterface>EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>