런치 인자
값 하나 바꾸려고 매번 런치 파일을 고쳐야 할까?
고정값
파일에 적은 값은 고정입니다
지금까지 쓴 런치 파일은 값이 파일 안에 박혀 있습니다. 거북이를 다른 이름으로 띄우려면 그때마다 파일을 열어 고치거나, 이름만 다른 파일을 여러 벌 만들어야 합니다.
런치 인자
이름:=값으로 밖에서 넣습니다
런치 인자(launch argument)는 런치 파일이 밖에서 받는 값입니다. ros2 launch 뒤에 이름:=값을 붙여 넘깁니다. 노드에 주는 --ros-args와 달리, 런치 파일 자체에 주는 값입니다.
turtle_ns_launch.py는 이 편에서 만드는 예시 파일입니다.
선언
받을 이름과 기본값을 정합니다
DeclareLaunchArgument는 이 런치 파일이 받을 인자의 이름과 기본값을 정하는 액션입니다. 인자를 주지 않고 띄우면 기본값이 쓰입니다.
선언도 LaunchDescription 목록에 넣는 액션입니다(2편).
꺼내 쓰기
LaunchConfiguration은 빈칸입니다
LaunchConfiguration('turtlesim_ns')은 '그 인자 값으로 나중에 채울 자리'입니다. 파일을 읽을 때가 아니라 런치가 실제로 돌 때 값이 정해집니다. 이런 자리를 치환(substitution)이라고 합니다.
흐름
기본값이냐, 넘긴 값이냐
인자를 주지 않으면 기본값 turtlesim1이, turtlesim_ns:=turtlesim3을 주면 넘긴 값이 빈칸에 들어갑니다. 같은 파일 하나로 이름이 다른 거북이를 띄울 수 있습니다.
따라 하기
받는 인자는 미리 볼 수 있습니다
남이 만든 런치 파일이 어떤 인자를 받는지 모를 때 --show-args를 붙입니다. 노드는 띄우지 않고 인자 이름과 기본값만 보여 줍니다.
첫 줄은 길어서 나눠 보였습니다. DeclareLaunchArgument에 description을 주면 no description given 대신 그 설명이 나옵니다. 15강의 use_sim_time:=True도 런치 인자입니다.
다음 편