ROS/3장 3D 모델링
xacro
한종서
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" />