런치 인자

값 하나 바꾸려고 매번 런치 파일을 고쳐야 할까?

고정값

파일에 적은 값은 고정입니다

지금까지 쓴 런치 파일은 값이 파일 안에 박혀 있습니다. 거북이를 다른 이름으로 띄우려면 그때마다 파일을 열어 고치거나, 이름만 다른 파일을 여러 벌 만들어야 합니다.

런치 인자

이름:=값으로 밖에서 넣습니다

런치 인자(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도 런치 인자입니다.

다음 편

토픽 이름과 파라미터도 런치에서 정할 수 있을까요?

6편런치에서 리매핑과 파라미터 10강 목록