noetic版本下xacro宏定义的基本使用

一. 开头两句

<?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文件再进行编译,因为不常用,所以就没有再写出来了。

猜你喜欢

转载自blog.csdn.net/weixin_50303783/article/details/113478392