로보쌤

Parameter 실습 연습문제 정답

시행일·최종 수정일: 2026년 9월 1일

정답을 보기 전에

먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.

← 강의와 연습문제로 돌아가기

1. ROS 2 Parameter의 소유 주체와 수명을 설명하세요.

정답과 해설

각 Parameter는 특정 Node가 소유합니다. 일반적으로 Node Process가 살아 있는 동안 유지되며 실행 중 CLI로 바꾼 값은 자동 저장되지 않아 재시작하면 Code 기본값이나 시작 Override로 돌아갑니다.

2. 최대 속도에는 Parameter, 배터리 잔량에는 Topic이 적합한 이유는 무엇인가요?

정답과 해설

최대 속도는 Node가 기억하고 나중에 조회할 설정입니다. 배터리 잔량은 시간에 따라 계속 측정되는 상태 Stream이므로 Topic으로 발행해 여러 Consumer가 최신 값을 받는 것이 적합합니다.

3. 0과 0.0으로 선언한 Parameter의 Type 차이는 무엇인가요?

정답과 해설

0은 integer, 0.0은 double입니다. 기본적으로 선언 후 Type이 고정되므로 integer Parameter에 0.7을 설정하면 Type 불일치로 거절됩니다.

4. declare_parameter, get_parameter와 .value의 역할을 설명하세요.

정답과 해설

declare_parameter는 이름·기본값·Type과 선택적인 Descriptor를 등록합니다. get_parameter는 Parameter 객체를 반환하며 실제 Python 값을 사용하려면 .value를 읽습니다.

5. ParameterDescriptor의 description, read_only, 숫자 Range가 제공하는 기능은 무엇인가요?

정답과 해설

description은 의미와 단위를 공개하고, read_only는 실행 중 변경을 막습니다. Integer·Floating Point Range는 허용 최소·최대·단계를 표시하고 범위 밖 설정을 거절하도록 돕습니다.

6. ros2 param list·get·describe·set·dump·load의 역할을 각각 설명하세요.

정답과 해설

list는 이름, get은 현재 값, describe는 Type·설명·제약을 확인합니다. set은 실행 중 변경, dump는 현재 값을 YAML로 출력하고 load는 YAML 값을 실행 중 Node에 설정합니다.

7. YAML의 Node 이름, ros__parameters와 값 Type을 확인해야 하는 이유는 무엇인가요?

정답과 해설

Parameter Block은 실제 Node 이름·Namespace와 대응해야 하며 그 아래 예약 Key인 ros__parameters가 필요합니다. YAML의 11.0은 Type이 달라 선언 Type과 맞지 않으면 적용이 거절됩니다.

8. Namespace가 있는 Node에 YAML이 적용되지 않을 때 무엇을 비교해야 하나요?

정답과 해설

ros2 node list의 완전한 Node 이름과 YAML의 Key를 비교합니다. 예를 들어 실제 이름이 /robot1/speed_governor라면 정확한 절대 이름 또는 의도한 Wildcard가 해당 이름과 대응해야 합니다.

9. 검증 Callback에서 Cache를 즉시 변경하면 원자적 요청에서 어떤 문제가 생기나요?

정답과 해설

여러 값 중 뒤 Parameter가 거절되면 Parameter Store는 전체 변경을 취소하지만 앞에서 수정한 Cache나 Hardware 상태는 되돌아가지 않을 수 있습니다. Store와 Application 상태가 서로 달라집니다.

10. On-set 검증과 Post-set 적용을 분리해야 하는 이유는 무엇인가요?

정답과 해설

On-set 단계에서는 Side Effect 없이 전체 후보 상태의 유효성을 판단해야 합니다. 모든 검증이 성공한 뒤 Post-set 단계에서 Cache와 Timer를 갱신해야 원자성과 Application 상태의 일관성을 유지할 수 있습니다.

11. set_parameters()와 set_parameters_atomically()의 차이를 설명하세요.

정답과 해설

set_parameters()는 Parameter별 설정 결과를 다룰 수 있습니다. set_parameters_atomically()는 묶음 전체를 하나의 상태로 적용하며 하나라도 실패하면 모두 적용하지 않아 서로 의존하는 설정에 적합합니다.

12. publish_rate_hz 값만 변경해도 기존 Timer 주기가 바뀌지 않는 이유와 해결 방법은 무엇인가요?

정답과 해설

Timer는 생성할 때 주기를 내부에 보관하므로 Parameter Store의 숫자와 자동 연결되지 않습니다. 변경 성공 후 기존 Timer를 취소·파괴하고 새 주기로 만들거나 관리 Loop에 재구성을 요청해야 합니다.

13. Parameter Event Handler의 Callback Handle을 보관해야 하는 이유는 무엇인가요?

정답과 해설

등록 함수가 반환한 Handle의 수명이 Callback 등록을 유지합니다. 지역 변수로만 두어 사라지면 Callback이 제대로 유지되지 않을 수 있으므로 Node의 멤버 변수에 보관해야 합니다.

14. Wheel Radius와 Emergency Stop을 각각 Parameter로 어떻게 다뤄야 하는지 설명하세요.

정답과 해설

Wheel Radius는 Odometry 계약을 바꾸므로 Robot 정지와 재시작·재검증 절차를 요구하는 정적 설정으로 다루는 편이 안전합니다. Emergency Stop은 Parameter 변경으로 구현하지 않고 독립 안전 입력·회로와 상태 Machine으로 처리합니다.

15. Parameter 변경 성공 후 Robot 동작이 그대로일 때 YAML부터 Hardware까지 진단 순서를 설명하세요.

정답과 해설

YAML Key·Type과 시작 인자를 확인하고 param get으로 Store 값을 봅니다. 이어 Post-set Callback과 Application Cache, 출력 Command Topic, Mux·Safety Filter, Driver 내부 설정과 실제 Hardware 반영을 순서대로 비교합니다.

학습 마무리

틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.

← 강의로 돌아가기

Parameter 실습 연습문제 정답과 해설 | 로보쌤