Speed (속도) 카테고리
1. MaxSpeed (기본값: 3000)
최대 주행 속도 (cm/s)
환산: 3000 cm/s = 30 m/s ≈ 108 km/h
2. MinSpeed (기본값: 400)
커브에서도 이 속도 이하로는 안 내려감 (cm/s)
환산: 400 cm/s = 4 m/s ≈ 14 km/h
3. ThrottleGain (기본값: 0.002)
속도 차이를 페달 입력으로 바꾸는 비율
사용: 목표 - 현재 = 100 cm/s 차이일 때, 페달 = 0.2 (20%)
언제 조절?
- 늘림: 가속/감속 반응 빠르게
- 줄임: 부드럽게
4. AccelRate (기본값: 1.0) / DecelRate (기본값: 0.5)
목표 속도가 변할 때 부드러움 정도
- AccelRate: 가속할 때 (높을수록 빠르게)
- DecelRate: 감속할 때 (낮을수록 부드럽게)
가속은 빠르게 감속은 부드럽게
언제 조절?
- DecelRate 늘림 : 급제동이 필요한 시연 (위험 상황 회피 등)
- AccelRate 줄임 : 차분한 운전 표현
- 둘 다 늘림 : 스포티한 거동
- 둘 다 줄임 : 트럭/버스 같은 묵직한 거동
5. CoastDeadzone (기본값: 0.05)
페달 명령이 이 값보다 작으면 둘 다 떼고 관성 주행
|Cmd| < 0.05 면 가속도 브레이크도 안 함
페달이 0.001, -0.001, 0.002... 작은 값으로 떨리면 차도 떨림 -> 데드존으로 안정화
언제 조절?
- 늘림 (예: 0.1): 차가 떨릴 때, 좀 더 부드럽게
- 줄임 (예: 0.01): 정밀 제어 필요할 때
Steering (조향) 카테고리
1. LookAheadBase (기본값: 1500)
정지 상태에서의 전방 주시 거리 (cm) = 15m 의미: "차 앞 15m 지점을 보고 핸들 조작"
언제 조절?
- 늘림 (예: 2500): 멀리 보고 부드럽게 운전
- 줄임 (예: 800): 좁은 길에서 정밀하게
증상별 조절
- 직선에서 차가 좌우로 흔들릴 때 → 늘림 (멀리 봐야 안정)
- 급커브에서 코너를 잘라먹을 때 → 줄임 (가까이 봐야 정확)
- 구불구불한 길을 가야 함 → 줄임
2. LookAheadSpeedFactor (기본값: 0.3)
속도가 빠를수록 더 멀리 보게 만드는 비율 계산
최종 거리 = LookAheadBase + Speed × LookAheadSpeedFactor
예시:
- 정지: 1500cm
- 1000 cm/s (36km/h): 1500 + 300 = 1800cm
- 3000 cm/s (108km/h): 1500 + 900 = 2400cm
언제 조절?
- 늘림: 고속 주행 시 더 안정적
- 줄임: 저속/고속 차이 적게
3. MaxYawDelta (기본값: 40)
핸들 풀로 꺾을 때의 각도 오차 기준 (도) "차의 방향과 가야 할 방향이 40도 차이나면 핸들 100% 꺾음"
언제 조절?
- 늘림 (예: 60): 핸들 둔감하게 (트럭 같음)
- 줄임 (예: 25): 핸들 민감하게 (스포츠카)
증상별 조절
- "작은 오차에도 핸들 너무 빨리 꺾여" → 늘림
- "오차 큰데도 핸들 늦게 반응해" → 줄임
4. HeadingWeight (기본값: 0.7, 가장 중요)
직선에서 헤딩 오차 vs 위치 오차의 가중치 0.7이면 헤딩 70%, 위치 30%로 섞음
언제 조절?
- 늘림 (예: 0.9): 도로 방향 따라가기 우선 (안정적, 멀리 봄)
- 줄임 (예: 0.5): 위치 추적 우선 (반응 빠름, 가까이 봄)
증상별 조절
- "직선에서 차가 흔들려 (지그재그)" → 늘림
- "도로 중앙에서 자꾸 벗어나" → 줄임
- "스포티한 거동 원함" → 줄임
- "고속도로 같은 안정적 거동" → 늘림
5. HeadingWeightOnSharpCurve (기본값: 0.3)
급커브에서의 헤딩 가중치 (HeadingWeight보다 낮게) 급커브에서는 위치 추적 비중을 높여 정확하게 코너링
언제 조절?
- "급커브에서 코너 안쪽으로 잘림" → 줄임 (예: 0.2)
- "급커브에서 코너 바깥으로 미끄러짐" → 늘림 (예: 0.5)
6. SharpCurveSensitivity (기본값: 3.0)
"급커브"로 판단하는 민감도 곡률 × 이 값을 0~1로 정규화
예시:
- 곡률 0.1 (살짝 휨) × 3 = 0.3 → 30% 급커브로 인식
- 곡률 0.5 (급커브) × 3 = 1.5 → Clamp 1.0 → 100% 급커브
언제 조절?
- 늘림 (예: 5): 작은 휨에도 "급커브" 취급 (예민하게 반응)
- 줄임 (예: 1.5): 큰 커브여야 "급커브" 취급 (둔감하게)
증상별 조절
- "완만한 커브에서도 너무 감속해" → 줄임
- "급커브에 대비가 늦어" → 늘림
7. SharpCurveLookAheadScale (기본값: 0.5)
급커브에서 전방 주시 거리를 줄이는 비율 0.5면 직선의 50%만 봄
언제 조절?
- 줄임 (예: 0.3): 코너에서 더 가까이 봄 (정확한 코너링)
- 늘림 (예: 0.8): 커브에서도 비교적 멀리 봄
8. CrosstrackGain (기본값: 0.0015, 자주 쓰임)
도로 중심선 이탈 보정 강도 1cm 벗어나면 핸들 0.0015 보정
예시:
- 50cm 이탈 시: 핸들 보정 = 50 × 0.0015 = 0.075
언제 조절?
- 늘림 (예: 0.003): 중앙 추적 강하게 (살짝 떨릴 수 있음)
- 줄임 (예: 0.0005): 부드럽게 (이탈 천천히 보정)
증상별 조절
- "중앙선에서 자꾸 벗어나" → 늘림
- "차가 좌우로 떨려" → 줄임
Curvature (곡률) 카테고리
1. LateralFriction (기본값: 0.8, 매우 중요)
타이어-노면 마찰 계수 곡선 안전 속도 V = √(μ × g × R)에서 μ
값별 의미:
- 0.1: 빙판
- 0.25: 눈 쌓임
- 0.5: 비
- 0.8: 마른 일반 도로 (기본)
- 1.0: 새 아스팔트
- 1.2: 레이싱 타이어
언제 조절?
- 줄임: 미끄러운 노면 시뮬레이션 (눈/비)
- 늘림: 그립력 좋은 차량 표현
- 날씨 시스템 만들 때 핵심 변수
2. CurvatureSampleSpan (기본값: 50)
곡률 측정 시 두 샘플 사이의 거리 (cm) 50cm 간격의 두 점에서 도로 방향 비교
언제 조절?
- 줄임 (예: 20): 더 정밀한 곡률 측정 (노이즈에 민감)
- 늘림 (예: 100): 부드러운 곡률 (작은 굴곡 무시)
증상별 조절
- "곡률 추정이 들쑥날쑥" → 늘림
- "작은 커브 못 잡아" → 줄임
3. BrakePreviewDist (기본값: 5000, 자주 쓰임)
미리 감속 시작할 거리 (cm) = 50m "50m 앞 곡률을 미리 보고 감속 준비"
언제 조절?
- 늘림 (예: 8000): 더 멀리 보고 일찍 감속 (안전)
- 줄임 (예: 3000): 늦게까지 빠르게 가다 급감속
증상별 조절
- "커브 진입할 때 너무 빨라" → 늘림
- "직선인데도 자꾸 감속해" → 줄임
- "고속도로 시뮬레이션" → 늘림 (예: 10000)
Path (경로) 카테고리
1. SearchRadius (기본값: 5000)
주변 도로 탐색 반경 (cm) = 50m
언제 조절?
- 늘림: 도로가 멀리 있어도 찾을 수 있게
- 줄임: 가까운 도로만 사용 (여러 도로 있을 때 정확히 선택)
2. EndOfPathThreshold (기본값: 100)
경로 끝 도달로 판단하는 거리 (cm) = 1m
언제 조절?
- 늘림: 더 일찍 정지 (안전 마진)
- 줄임: 진짜 끝까지 주행
Debug 카테고리
bDebugLogCommands (기본값: false)
매 프레임 조향/속도 명령을 로그로 출력할지
언제 조절?
- 켜기: 차량 폰 없이 동작 검증할 때, 튜닝 시
- 끄기: 실제 사용 시 (로그 너무 많이 찍힘)
'프로젝트 > 자율주행 위험구간 분석 시뮬레이터' 카테고리의 다른 글
| [트러블슈팅] 차량을 도로 끝에서 멈추게 하기 (0) | 2026.05.11 |
|---|---|
| [트러블슈팅] 커브길에서 차량이 도로 밖으로 튕겨나가는 문제 (0) | 2026.05.11 |
| 코드 정리와 확장 준비 (0) | 2026.05.08 |
| 커브에서 안 미끄러지는 속도 제어 (0) | 2026.05.08 |
| 조향 알고리즘 (0) | 2026.05.08 |
