LaunchDescription과 Node
런치 파일은 결국 파이썬 코드일까?
생김새
함수 하나가 목록을 돌려줍니다
파이썬 런치 파일에는 generate_launch_description() 함수가 꼭 있어야 합니다. ros2 launch가 이 함수를 불러, 돌려받은 LaunchDescription(런치 설명)대로 실행합니다.
공식 튜토리얼 "Creating a launch file"과 같은 모양입니다.
LaunchDescription
할 일을 담은 목록입니다
목록에 든 하나하나를 액션(action)이라고 부릅니다. 노드 띄우기가 가장 흔한 액션이고, 인자 선언(5편)과 다른 런치 파일 넣기(7편)도 액션입니다.
9강의 액션(goal·feedback·result)과는 이름만 같은 다른 개념입니다.
Node
ros2 run 한 줄과 같은 뜻
Node는 노드 하나를 띄우는 액션입니다. package에 패키지 이름, executable에 실행 파일 이름을 적으니, ros2 run에 치던 두 단어가 그대로 들어갑니다.
name을 주면 노드 이름을 바꿔 띄웁니다.
두 노드
Node를 하나 더 넣으면
목록에 Node를 하나 더 넣으면 두 노드가 함께 뜹니다. draw_square는 turtlesim에 들어 있는 예제 노드로, 거북이를 네모 모양으로 몰고 다닙니다.
목록 순서대로 켜지지만, 앞 노드가 준비될 때까지 기다려 주지는 않습니다.
따라 하기
파일을 만들고 경로로 띄웁니다
mkdir launch로 폴더를 만들고, 이 편 둘째 장의 틀(import 두 줄 + def generate_launch_description():) 안에 앞 장의 목록을 넣어 square_launch.py로 저장합니다. 그 폴더에서 ros2 launch square_launch.py처럼 파일 경로를 바로 주면 됩니다.
-1, -2는 런치가 붙인 순번입니다. 출력은 일부만 보였습니다.
다른 형식
XML·YAML로도 씁니다
같은 내용을 XML이나 YAML로도 쓸 수 있고, ros2 launch는 세 형식을 모두 읽습니다. XML·YAML은 짧고 읽기 쉽고, 파이썬은 조건이나 계산을 넣기 좋습니다.
이 강의는 파이썬으로 씁니다. 14~15강에서 볼 TurtleBot3·Nav2 런치 파일도 파이썬입니다.
다음 편