一. 开头两句
<?xml version="1.0"?>
<robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
上边第二行表示是xacro文件的一个声明,是用来告诉系统这个文件是xacro文件格式
二. 常量定义
定义格式:
<xacro:property name="常量名称" value="常量值">
调用格式
${常量名字/带有常量名字的计算}
三. 函数定义
<xacro:macro name="函数名称" param=“参数1名称 参数2名称 ...”>
函数内容
</xacro:macro>
noetic版本调用格式
<xacro:函数1名称 参数1值 参数2值 .../>
四. 文件包含
<xacro:include filename="$(find package_name)/xacoro文件路径/xacro文件名.xacro" />
上边的package要换成xacro文件所在的功能包名称,文件路径要换成自己放置xacro文件的路径(从功能包的下一级路径开始算),再后边是文件名
例如,xacro文件boat_xacro.xacro在功能包boat_xacro下的urdf文件夹里边:
<xacro:include filename="$(find boat_xacro)/urdf/boat_base.xacro" />
五. launch文件(利用xacro文件解析器)
<launch>
<arg name="model" default="$(find xacro)/xacro --inorder '$(find package_name)/xacro文件路径/xacro文件名.xacro'" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(arg model)" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="$(arg gui)"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find packgae_name)/config/需要保存rviz文件的名字.rviz" required="true" />
</launch>
需要改动的就是开始的功能包名称,xacro文件路径,xacro文件名称,还有后边的需要保存的rviz文件的路径。
上述这个方法是比较常用的利用xacro文件编译器来编译,还有一种方法是把它转换成urdf文件再进行编译,因为不常用,所以就没有再写出来了。