Dynamic Reconfigure를 이용해 Sim에서 튜닝하기
0. 들어가기 전에 — 노드와 파라미터
본격적으로 튜닝하기 전에 용어 두 개만 짚고 가겠습니다.
- 노드(node): 실행되는 프로그램 한 덩어리입니다. 예시로, 우리가 추후에 조절해볼
speed_sector_tuner가 노드입니다. - 파라미터(parameter): 그 노드가 들고 있는 설정값입니다. 예를 들어 “얼마나 멀리 내다보고 운전할지”, “조이스틱 최고 속도는 얼마인지” 같은 값들입니다.
- Dynamic Reconfigure: 차를 멈추거나 재실행하지 않고, 주행 중에 이 파라미터들을 실시간으로 바꿔보는 도구입니다. 값을 바꾸는 순간 바로 주행에 반영됩니다. 그래서 “한 바퀴 돌려보고 → 값 조금 바꾸고 → 또 돌려보고”를 빠르게 반복할 수 있습니다.
핵심: 튜닝 = 노드의 파라미터를 바꿔보는 것, Dynamic Reconfigure = 그걸 실시간으로 하게 해주는 창.
1. 시뮬레이터와 RQT 켜기
unicorn 환경을 켜고, 시뮬레이터와 RQT를 각각 다른 터미널에서 켜줍니다.
1
2
3
# 터미널 1 — 시뮬레이터
unicorn
ros2 launch stack_master race.launch.xml sim:=true map:=f
1
2
3
# 터미널 2 — rqt (반드시 같은 unicorn 환경)
unicorn
rqt
시뮬레이터:
RQT:
주의 사항: RQT를
unicorn환경 밖(또는 source 안 한 터미널)에서 켜면, DDS 통신 설정이 달라서 노드가 몇 개만 보이거나 아예 안 보입니다. 반드시 시뮬레이터와 같은 환경에서 rqt를 켜야 합니다.
만약 올바른 환경에서 RQT를 켰는데 아무것도 안 나온다면, 상단 메뉴에서 Plugins → Configuration → Dynamic Reconfigure를 클릭하면 됩니다.
2. RQT로 실시간 튜닝하기 (speed_sector_tuner)
평상시:
Global_limit: 전체 속도 튜닝 (0.5)
Sector_scaling: 구간별 속도 튜닝 (sector 1: 0.2)
Sector start & end: 구간 범위 튜닝
튜닝하고 나서 — 값 저장하기
마음에 드는 값을 찾았다면, RQT에서 save_params 항목을 체크(true)합니다. 그 순간 현재 값들이 파일에 자동으로 저장되어, 다음에 다시 켜도 유지됩니다. (체크 안 하면 차를 끄는 순간 튜닝값이 날아갑니다!)
3. RQT 튜닝 추천 순서
- 일단 한 바퀴 돌려보고 무엇이 문제인지 확인 → 코너에서 밖으로 밀리나? 직선에서 뜨나? 감속이 늦나?
- 해당 노드에서 담당하는 파라미터 값을 변경
- 한 번에 하나만, 10~20%씩 바꾸고 또 한 바퀴 주행
- 만족하면
save_params체크로 저장
한 번에 한 값만, 조금씩, 매번 돌려보는 게 좋습니다. 여러 개를 동시에 바꾸면 무엇이 좋아지고 나빠졌는지 알 수 없습니다.
마무리
이 글에서는 Dynamic Reconfigure로 차를 재실행하지 않고 주행 중에 파라미터를 실시간으로 튜닝하는 방법을 다뤘습니다 — 시뮬레이터와 같은 unicorn 환경에서 rqt를 켜고, speed_sector_tuner의 Global_limit·Sector_scaling·구간 범위를 바꿔본 뒤 save_params로 저장하면 됩니다. Sim을 처음 띄우는 방법은 Sim 기초 사용법을 참고하세요.






