Post

Dynamic Reconfigure를 이용해 Sim에서 튜닝하기

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

주의 사항: RQT를 unicorn 환경 밖(또는 source 안 한 터미널)에서 켜면, DDS 통신 설정이 달라서 노드가 몇 개만 보이거나 아예 안 보입니다. 반드시 시뮬레이터와 같은 환경에서 rqt를 켜야 합니다.

만약 올바른 환경에서 RQT를 켰는데 아무것도 안 나온다면, 상단 메뉴에서 Plugins → Configuration → Dynamic Reconfigure를 클릭하면 됩니다.

Plugins → Configuration → Dynamic Reconfigure

2. RQT로 실시간 튜닝하기 (speed_sector_tuner)

평상시:

Global_limit: 전체 속도 튜닝 (0.5)

Sector_scaling: 구간별 속도 튜닝 (sector 1: 0.2)

Sector start & end: 구간 범위 튜닝

Sector 1 : 101 ~ 271 Sector 1 : 101 ~ 271

Sector 1 : 150 ~ 271 Sector 1 : 150 ~ 271

튜닝하고 나서 — 값 저장하기

마음에 드는 값을 찾았다면, RQT에서 save_params 항목을 체크(true)합니다. 그 순간 현재 값들이 파일에 자동으로 저장되어, 다음에 다시 켜도 유지됩니다. (체크 안 하면 차를 끄는 순간 튜닝값이 날아갑니다!)

save_params 체크

3. RQT 튜닝 추천 순서

  1. 일단 한 바퀴 돌려보고 무엇이 문제인지 확인 → 코너에서 밖으로 밀리나? 직선에서 뜨나? 감속이 늦나?
  2. 해당 노드에서 담당하는 파라미터 값을 변경
  3. 한 번에 하나만, 10~20%씩 바꾸고 또 한 바퀴 주행
  4. 만족하면 save_params 체크로 저장

한 번에 한 값만, 조금씩, 매번 돌려보는 게 좋습니다. 여러 개를 동시에 바꾸면 무엇이 좋아지고 나빠졌는지 알 수 없습니다.

마무리

이 글에서는 Dynamic Reconfigure로 차를 재실행하지 않고 주행 중에 파라미터를 실시간으로 튜닝하는 방법을 다뤘습니다 — 시뮬레이터와 같은 unicorn 환경에서 rqt를 켜고, speed_sector_tuner의 Global_limit·Sector_scaling·구간 범위를 바꿔본 뒤 save_params로 저장하면 됩니다. Sim을 처음 띄우는 방법은 Sim 기초 사용법을 참고하세요.

This post is licensed under CC BY 4.0 by the author.