한종서 2023. 12. 24. 17:32

xacro는 로봇 디스크립션 내에 매크로를 생성하고 재사용할 수 있다.

간단한 프로그래밍 기능을 지원한다. 변수, 상수, 조건문, 수학적 표현 등이 있다.

파일 확장자는 .xacro이다.

<xacro:property name="pan_link_length" value="0.4" />
<xacro:property name="pan_link_radius" value="0.04" />
...

<link name="pan_link">
    ...
	<cylinder length="${pan_link_length}" radius="${pan_link_radius}"/>
    
    <collision>
    ...
	  <cylinder length="${pan_link_length}" radius="${pan_link_radius+0.02}"/>
    </collision>
</link>

 

매크로 활용

<xacro:macro name="inertial_matrix" params="mass">
   <inertial>
           <mass value="${mass}" />
           <inertia ixx="0.5" ixy="0.0" ixz="0.0"
                    iyy="0.5" iyz="0.0"
                    izz="0.5" />
   </inertial>
</xacro:macro>

inertial_matrix 를 매크로로 만들어 놓고 각 inertial 코드 블록을
다음과 같이 한 행으로 교체할 수 있다.

<xacro:inertial_matrix mass="1"/>

 

xacro 파일은 urdf로 변환할 수  있다.

rosrun xacro xacro.py pan_tilt.xacro > pan_tilt_generated.urdf

 

xacro를 urdf로 변환을 위해 launch파일을 아래와 같이 수정하여 실행할 수 있다.

변경 전
<param name="robot_description" textfile="$(find mastering_ros_robot_description_pkg)/urdf/pan_tilt.urdf" />

변경 후
<param name="robot_description" command="$(find xacro)/xacro $(find mastering_ros_robot_description_pkg)/urdf/pan_tilt.xacro" />