xacro
다리가 네 개인 로봇이면 같은 글을 네 번 써야 할까?
문제
같은 숫자가 여기저기 흩어집니다
2편에서 본 다리 link입니다. 오른쪽 다리와 왼쪽 다리가 이름만 빼고 같습니다. 다리 길이를 0.7m로 바꾸려면 0.6을 두 군데, 그 절반인 0.3을 두 군데 고쳐야 합니다. 하나라도 빠뜨리면 모양이 어긋납니다.
xacro란
URDF를 찍어 내는 매크로 언어
xacro(XML Macros)는 URDF를 짧게 쓰게 돕는 도구입니다. .urdf.xacro 파일에 상수, 계산, 매크로를 써 두면 xacro 명령이 이를 풀어 보통 URDF로 내보냅니다.
파일 맨 위 robot 태그에 xmlns:xacro="http://www.ros.org/wiki/xacro"를 적어야 읽힙니다.
상수
xacro:property로 이름 붙이기
xacro:property로 값에 이름을 붙이고, 쓰는 곳에는 ${leglen}처럼 적습니다. 이제 다리 길이는 맨 위 한 줄만 고치면 됩니다.
계산
${ } 안에서 계산도 됩니다
사칙연산과 괄호를 쓸 수 있고, pi나 sin, cos도 있습니다. 3편에서 본 0.22도 몸통 반지름 0.2에 0.02를 더한 값이었습니다. 이렇게 적어 두면 몸통을 키울 때 다리가 저절로 따라 나갑니다.
wheeldiam=0.07, width=0.2는 urdf_tutorial 08-macroed.urdf.xacro의 값입니다.
매크로
xacro:macro로 틀을 찍어 냅니다
xacro:macro는 params로 값을 받는 틀입니다. <xacro:leg .../>라고 부를 때마다 틀이 펼쳐져 link와 joint가 생깁니다. reflect를 −1(오른쪽)과 1(왼쪽)로 주어 다리를 몸통 양쪽에 놓습니다.
따라 하기
xacro 파일도 그대로 띄웁니다
ros2 launch urdf_tutorial display.launch.py model:=urdf/08-macroed.urdf.xacro
이 런치 파일은 모델을 늘 xacro에 먼저 통과시킵니다. 펼친 결과는 둘째 명령으로 봅니다.
xacro $(ros2 pkg prefix --share urdf_tutorial)/urdf/08-macroed.urdf.xacro > robot.urdf
다음 편