Guide Lane Change - ajouatom/openpilot GitHub Wiki

차둜 λ³€κ²½(μ°¨μ„ λ³€κ²½) μ΄ν•΄ν•˜κΈ°

English guide Β· μ½”λ“œμ™€ ν•¨κ»˜ κ΄€λ¦¬ν•˜λŠ” ν•œκ΅­μ–΄ 원본

[!CAUTION] λ°©ν–₯μ§€μ‹œλ“±μ€ μ£Όλ³€ μ°¨λŸ‰μ— μ˜μ‚¬λ₯Ό μ•Œλ¦¬λŠ” μž₯치인 λ™μ‹œμ— openpilotμ—λŠ” 차둜 λ³€κ²½ μš”μ²­μ΄ λ©λ‹ˆλ‹€. λ¨Όμ € 거울과 μ‚¬κ°μ§€λŒ€λ₯Ό ν™•μΈν•˜κ³  μ•ˆμ „ν•œ 간격을 μ„ νƒν•œ λ’€ λ°©ν–₯μ§€μ‹œλ“±μ„ μΌœμ„Έμš”. λ°©ν–₯μ§€μ‹œλ“±λΆ€ν„° 켜고 μ•ˆμ „ μ—¬λΆ€λ₯Ό λ‚˜μ€‘μ— ν™•μΈν•˜λ©΄ 섀정에 따라 차둜 변경이 λ°”λ‘œ μ‹œμž‘λ  수 μžˆμŠ΅λ‹ˆλ‹€.

핡심뢀터 μ•Œμ•„λ³΄κΈ°

차둜 변경이 μ‹œμž‘λœ λ’€μ˜ 경둜, νš‘μ΄λ™ 속도와 μ‘°ν–₯ ν˜•νƒœλŠ” comma μ£Όν–‰ λͺ¨λΈμ΄ λ§Œλ“  예츑 κ²½λ‘œκ°€ μ£Όλ„ν•©λ‹ˆλ‹€. μ œμ–΄κΈ°λŠ” 이 경둜λ₯Ό μ°¨λŸ‰μ˜ μ‘°ν–₯ ν•œκ³„ μ•ˆμ—μ„œ λ”°λΌκ°‘λ‹ˆλ‹€. λ”°λΌμ„œ carrotpilotμ—λŠ” 차둜 λ³€κ²½λ§Œμ„ μœ„ν•œ λͺ©ν‘œ μ‘°ν–₯각, νš‘μ΄λ™ 속도 λ˜λŠ” μ™„λ£Œ μ‹œκ°„μ„ 직접 μ§€μ •ν•˜λŠ” 일반 섀정이 μ—†μŠ΅λ‹ˆλ‹€.

carrotpilot이 주둜 κ²°μ •ν•˜λŠ” 것은 차둜 λ³€κ²½μ˜ λͺ¨μ–‘이 μ•„λ‹ˆλΌ λͺ¨λΈμ— 차둜 λ³€κ²½ μš”μ²­μ„ μ–Έμ œ μ „λ‹¬ν• μ§€μž…λ‹ˆλ‹€. λ°©ν–₯μ§€μ‹œλ“±, μ§€μ—°μ‹œκ°„, μš΄μ „μž μ‘°ν–₯토크 확인, μ°¨μ„  μ’…λ₯˜, μ°¨λŸ‰ BSD와 μ‚¬μš© κ°€λŠ₯ν•œ μΈ‘λ©΄ λ ˆμ΄λ” 정보λ₯Ό μ‹œμž‘ 쑰건으둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

이 쑰건듀은 보쑰 μž₯치이며 μ•ˆμ „ νŒμ •μ„ λŒ€μ‹ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. openpilot은 μ°¨λŸ‰ λ’€μͺ½ ꡐ톡을 λ³΄λŠ” ν›„λ°© 카메라 μž…λ ₯을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©°, BSD와 μΈ‘λ©΄ 물체 μ •λ³΄μ˜ 지원 λ²”μœ„λ„ μ°¨μ’…Β·μž₯μ°© μƒνƒœΒ·μ£Όν–‰ ν™˜κ²½μ— 따라 λ‹€λ¦…λ‹ˆλ‹€. μ˜† 차둜 λ’€μ°¨μ˜ 거리와 μ ‘κ·Ό 속도λ₯Ό μ΅œμ’… νŒλ‹¨ν•˜λŠ” μ±…μž„μ€ 항상 μš΄μ „μžμ—κ²Œ μžˆμŠ΅λ‹ˆλ‹€.

λˆ„κ°€ 무엇을 κ²°μ •ν•˜λ‚˜μš”?

주체 λ‹΄λ‹Ήν•˜λŠ” 일 λ‹΄λ‹Ήν•˜μ§€ μ•ŠλŠ” 일
μš΄μ „μž κ±°μšΈΒ·μ‚¬κ°μ§€λŒ€Β·λ’€μ°¨ μ ‘κ·Ό 속도 확인, μ•ˆμ „ν•œ 간격 선택, λ°©ν–₯μ§€μ‹œλ“± μ‘°μž‘, ν•„μš” μ‹œ μ·¨μ†ŒΒ·κ°œμž… μ•ˆμ „ νŒλ‹¨μ„ μ‹œμŠ€ν…œμ— λ„˜κΈ°λŠ” 것
carrotpilot μ‹œμž‘ 쑰건 차둜 λ³€κ²½ λŒ€κΈ°, μ„€μ •λœ μ§€μ—°, μ‘°ν–₯토크 확인, μ°¨μ„ Β·BSDΒ·μΈ‘λ©΄ 물체 쑰건 확인 μ•ˆμ „ν•œ 차간을 μ™„μ „ν•˜κ²Œ 보μž₯ν•˜κ±°λ‚˜ 차둜 λ³€κ²½ 경둜의 각도λ₯Ό μ„€κ³„ν•˜λŠ” 것
comma μ£Όν–‰ λͺ¨λΈ 차둜 λ³€κ²½ μš”μ²­μ„ 받은 λ’€ μž₯면에 λ§žλŠ” μ£Όν–‰ 경둜 생성 μš΄μ „μž λŒ€μ‹  μ‚¬κ°μ§€λŒ€μ™€ λ’€μ°¨μ˜ μ•ˆμ „μ„ λ³΄μ¦ν•˜λŠ” 것
μ°¨λŸ‰ μ œμ–΄κΈ° λͺ¨λΈ 경둜λ₯Ό μ°¨λŸ‰κ³Ό μ•ˆμ „ μ œν•œμ΄ ν—ˆμš©ν•˜λŠ” λ²”μœ„μ—μ„œ μΆ”μ’… λͺ¨λΈμ΄ μ˜λ„ν•œ 차둜 λ³€κ²½ 경둜λ₯Ό μƒˆλ‘œ μ„€κ³„ν•˜λŠ” 것

μ‹€μ œ λ™μž‘ μˆœμ„œ

  1. μš΄μ „μžκ°€ 거울과 μ‚¬κ°μ§€λŒ€λ₯Ό ν™•μΈν•˜κ³  λ’€μ°¨μ™€μ˜ 거리뿐 μ•„λ‹ˆλΌ μ ‘κ·Ό μ†λ„κΉŒμ§€ νŒλ‹¨ν•©λ‹ˆλ‹€.
  2. μ•ˆμ „ν•œ 간격을 μ„ νƒν•œ λ’€ μ›ν•˜λŠ” λ°©ν–₯의 λ°©ν–₯μ§€μ‹œλ“±μ„ μΌ­λ‹ˆλ‹€. ATCκ°€ μš”μ²­ν•œ 차둜 변경도 이후 과정은 κ°™μœΌλ©° μš΄μ „μžμ˜ 감독이 ν•„μš”ν•©λ‹ˆλ‹€.
  3. carrotpilot은 차둜 λ³€κ²½ λŒ€κΈ° μƒνƒœμ—μ„œ μ„€μ •λœ μ§€μ—°κ³Ό μ‹œμž‘ 쑰건을 ν™•μΈν•©λ‹ˆλ‹€.
  4. 쑰건이 만쑱되면 λͺ¨λΈμ— μ™Όμͺ½ λ˜λŠ” 였λ₯Έμͺ½ 차둜 λ³€κ²½ μš”μ²­μ„ λ³΄λƒ…λ‹ˆλ‹€.
  5. comma μ£Όν–‰ λͺ¨λΈμ΄ 차둜 λ³€κ²½ 경둜λ₯Ό λ§Œλ“€κ³  μ°¨λŸ‰ μ œμ–΄κΈ°κ°€ 이λ₯Ό λ”°λΌκ°‘λ‹ˆλ‹€.
  6. μš΄μ „μžλŠ” μ „ 과정을 계속 κ°λ…ν•˜κ³ , μœ„ν—˜ν•˜λ©΄ μ¦‰μ‹œ μ‘°ν–₯ν•˜μ—¬ μ·¨μ†Œν•˜κ±°λ‚˜ 직접 μ œμ–΄ν•©λ‹ˆλ‹€.

μ£Όν–‰ μž₯λ©΄κ³Ό μ„€μΉ˜λœ λͺ¨λΈ 버전에 따라 같은 λ„λ‘œμ—μ„œλ„ 차둜 변경이 더 λΉ λ₯΄κ±°λ‚˜ 느리게 느껴질 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λͺ¨λΈμ΄ μƒμ„±ν•œ 경둜의 차이일 수 있으며, LaneChangeDelay둜 μ§„ν–‰ 속도λ₯Ό λ°”κΎΈλŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

차둜 λ³€κ²½ 섀정이 λ°”κΎΈλŠ” 것

μ°¨μ„ λ³€κ²½ μ‘°ν–₯토크 μ‚¬μš©

κ°’ λ™μž‘
-1 μš΄μ „μž λ°©ν–₯μ§€μ‹œλ“±μ— μ˜ν•œ μžλ™ 차둜 변경을 μ‚¬μš©ν•˜μ§€ μ•ŠμŒ
0 λ³„λ„μ˜ μš΄μ „μž μ‘°ν–₯토크 확인 없이 쑰건이 만쑱되면 μ‹œμž‘
1 μš΄μ „μžκ°€ 차둜 λ³€κ²½ λ°©ν–₯으둜 핸듀에 μ‘°ν–₯토크λ₯Ό κ°€ν•΄μ•Ό μ‹œμž‘

λ°©ν–₯μ§€μ‹œλ“±μ„ μΆ©λΆ„νžˆ 일찍 μΌœλŠ” μš΄μ „μžλΌλ©΄ 1이 μ˜λ„ν•˜μ§€ μ•Šμ€ μ¦‰μ‹œ μ§„μž…μ„ μ€„μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 토크 확인은 μ•ˆμ „ 확인 λ²„νŠΌμ΄ μ•„λ‹™λ‹ˆλ‹€. 핸듀을 λ°€κΈ° 전에 μš΄μ „μžκ°€ λ‹€μ‹œ 확인해야 ν•©λ‹ˆλ‹€.

μ°¨μ„ λ³€κ²½ μ§€μ—°μ‹œκ°„

ν‘œμ‹œκ°’μ— 0.1초λ₯Ό κ³±ν•œ 만큼 λ°©ν–₯μ§€μ‹œλ“± μž…λ ₯ ν›„ κΈ°λ‹€λ¦½λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ κ°’ 10은 1.0μ΄ˆμž…λ‹ˆλ‹€.

이 섀정은 차둜 변경이 μ‹œμž‘λ˜κΈ° μ „μ˜ λŒ€κΈ°μ‹œκ°„λ§Œ λ°”κΏ‰λ‹ˆλ‹€. 차둜λ₯Ό λ„˜μ–΄κ°€λŠ” 속도, μ‘°ν–₯각 λ˜λŠ” 차둜 λ³€κ²½ μ™„λ£Œ μ‹œκ°„μ€ λ°”κΎΈμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μ•ˆμ „ν•˜λ‹€λŠ” λœ»λ„ μ•„λ‹™λ‹ˆλ‹€.

μ°¨μ„ λ³€κ²½ BSD

κ°’ λ™μž‘
-1 BSD μ‹ ν˜Έλ₯Ό μ‹œμž‘ μ‘°κ±΄μ—μ„œ λ¬΄μ‹œ
0 BSD 감지 쀑 μžλ™ μ‹œμž‘μ€ λ§‰λ˜, μš΄μ „μžκ°€ 같은 λ°©ν–₯으둜 μ‘°ν–₯토크λ₯Ό κ°€ν•˜λ©΄ μž¬μ •μ˜ ν—ˆμš©
1 BSD 감지 μ€‘μ—λŠ” μš΄μ „μž μ‘°ν–₯ν† ν¬λ‘œλ„ μ‹œμž‘ν•˜μ§€ μ•ŠμŒ

μ°¨λŸ‰ BSDλŠ” 보쑰 μ‹ ν˜Έμž…λ‹ˆλ‹€. μ„Όμ„œμ˜ 감지 λ²”μœ„ 밖에 μžˆκ±°λ‚˜ λΉ λ₯΄κ²Œ μ ‘κ·Όν•˜λŠ” μ°¨λŸ‰, μ˜€ν† λ°”μ΄, μ•…μ²œν›„μ™€ μ„Όμ„œ 였λ₯˜λ₯Ό λͺ¨λ‘ μ±…μž„μ§€μ§€ λͺ»ν•©λ‹ˆλ‹€. BSD ν‘œμ‹œκ°€ μ—†λ‹€λŠ” 사싀을 β€œλ’€μ°¨ μ—†μŒβ€μœΌλ‘œ ν•΄μ„ν•˜μ§€ λ§ˆμ„Έμš”.

μ°¨μ„ λ³€κ²½ μ°¨μ„ νŒλ‹¨

κ°’ λ™μž‘
0 μ°¨λŸ‰μ΄ μ œκ³΅ν•˜λŠ” μ°¨μ„  색상 정보λ₯Ό μ‚¬μš©ν•˜λ©° λ…Έλž€μ„ μ—μ„œ 차단
1 점선·싀선 νƒ€μž…μ„ κΈ°μ€€μœΌλ‘œ νŒλ‹¨
2 νƒ€μž…μ„ κΈ°μ€€μœΌλ‘œ νŒλ‹¨ν•˜λ˜, μ‹€μ„  차단을 μš΄μ „μž μ‘°ν–₯ν† ν¬λ‘œ μž¬μ •μ˜ν•  수 있음

μΉ΄λ©”λΌλ‚˜ μ°¨λŸ‰μ΄ 차선을 잘λͺ» λΆ„λ₯˜ν•  수 있고, μ„€μ • 2λŠ” μ‹€μ„  톡과λ₯Ό μ•ˆμ „ν•˜κ±°λ‚˜ ν•©λ²•μ μœΌλ‘œ λ§Œλ“€μ–΄ μ£Όμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ„λ‘œ ν‘œμ‹œμ™€ ꡐ톡 λ²•κ·œλ₯Ό μš΄μ „μžκ°€ 직접 확인해야 ν•©λ‹ˆλ‹€.

λ°”λ€Œμ§€ μ•ŠλŠ” 것과 ν˜Όλ™ν•˜κΈ° μ‰¬μš΄ μ„€μ •

  • LaneChangeDelayλŠ” μ§„μž… μ‹œμ λ§Œ 늦μΆ₯λ‹ˆλ‹€. μ§„ν–‰ 쀑인 차둜 변경을 천천히 λ§Œλ“€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 일반 μ„€μ •μ—λŠ” 차둜 λ³€κ²½ μ „μš© 각도, νš‘μ΄λ™ 속도, 경둜 λͺ¨μ–‘ μ‘°μ ˆκ°’μ΄ μ—†μŠ΅λ‹ˆλ‹€.
  • CustomSteerDeltaUpLC, CustomSteerDeltaDownLCλŠ” 일뢀 토크 μ°¨λŸ‰μ—μ„œ 차둜 λ³€κ²½ 쀑 μ‘°ν–₯ν† ν¬μ˜ λ³€ν™” μ œν•œμ„ μ‘°μ •ν•˜λŠ” κ³ κΈ‰ μ°¨λŸ‰ μ œμ–΄κ°’μž…λ‹ˆλ‹€. λͺ¨λΈμ˜ λͺ©ν‘œ κ²½λ‘œλ‚˜ 차둜 λ³€κ²½ 속도λ₯Ό μ§€μ •ν•˜λŠ” 값이 μ•„λ‹™λ‹ˆλ‹€.
  • SteerActuatorDelay, LatSmoothSec 같은 일반 μ‘°ν–₯ 섀정은 전체 경둜 μΆ”μ’…μ˜ μ‹œμ κ³Ό λ°˜μ‘μ— 영ν–₯을 쀄 수 μžˆμ§€λ§Œ, 차둜 λ³€κ²½ λͺ¨μ–‘을 μ„ νƒν•˜λŠ” μ „μš© 섀정은 μ•„λ‹™λ‹ˆλ‹€.
  • DynamicTFollowLCλŠ” 차둜 λ³€κ²½ μ‹œμž‘ μ§ν›„μ˜ μ’…λ°©ν–₯ 차간거리λ₯Ό λ°”κΎΈλ©° 횑방ν–₯ 차둜 λ³€κ²½ μ†λ„λ‚˜ 각도λ₯Ό λ°”κΎΈμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 방법

  1. λ°©ν–₯μ§€μ‹œλ“±μ„ 켜기 전에 룸미러, μ‚¬μ΄λ“œλ―ΈλŸ¬μ™€ μ‚¬κ°μ§€λŒ€λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
  2. λ’€μ°¨μ™€μ˜ ν˜„μž¬ 거리만 보지 말고, λ’€μ°¨κ°€ λΉ λ₯΄κ²Œ κ°€κΉŒμ›Œμ§€λŠ”μ§€λ„ ν™•μΈν•©λ‹ˆλ‹€.
  3. μ¦‰μ‹œ μ‹œμž‘ λͺ¨λ“œ(LaneChangeNeedTorque=0, 짧은 μ§€μ—°)λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ λ°©ν–₯μ§€μ‹œλ“±μ„ μΌœλŠ” μˆœκ°„ 차둜 변경을 ν—ˆκ°€ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
  4. 미리 λ°©ν–₯μ§€μ‹œλ“±μ„ 켜고 κΈ°λ‹€λ¦¬λŠ” μš΄μ „ μŠ΅κ΄€μ΄λΌλ©΄ μ‘°ν–₯토크 확인(LaneChangeNeedTorque=1) λ˜λŠ” μ μ ˆν•œ μ‹œμž‘ 지연을 μ‚¬μš©ν•©λ‹ˆλ‹€. κ·Έλž˜λ„ 좜발 직전에 λ‹€μ‹œ ν™•μΈν•©λ‹ˆλ‹€.
  5. 차둜 λ³€κ²½ μ€‘μ—λŠ” 핸듀을 놓지 말고, λ’€μ°¨κ°€ κ°€μ†ν•˜κ±°λ‚˜ μ˜† 차둜 상황이 λ³€ν•˜λ©΄ μ¦‰μ‹œ κ°œμž…ν•©λ‹ˆλ‹€.
  6. BSDΒ·μΈ‘λ©΄ λ ˆμ΄λ” 차단이 λ°˜λ³΅ν•΄μ„œ μ˜ˆμƒκ³Ό λ‹€λ₯΄λ©΄ ν•΄λ‹Ή κΈ°λŠ₯을 μ‹ λ’°ν•΄ 계속 μš΄ν–‰ν•˜μ§€ 말고 μ°¨λŸ‰ 지원 μƒνƒœμ™€ 둜그λ₯Ό μ κ²€ν•©λ‹ˆλ‹€.

β€œμ°¨λ‘œ 변경이 λ„ˆλ¬΄ κΈ‰ν•΄μ„œ 뒀차와 μœ„ν—˜ν–ˆλ‹€β€λ©΄

이 μƒν™©μ—μ„œλŠ” 두 문제λ₯Ό λ‚˜λˆ„μ–΄ 봐야 ν•©λ‹ˆλ‹€.

  • 차둜λ₯Ό λ„˜μ–΄κ°€λŠ” μ›€μ§μž„ μžμ²΄κ°€ λΉ„μ •μƒμ μ΄μ—ˆλŠ”κ°€? λͺ¨λΈΒ·μ‘°ν–₯ μΆ”μ’…Β·μž₯μ°© μƒνƒœΒ·λ…Έλ©΄ λ“±μ˜ 문제λ₯Ό 둜그둜 ν™•μΈν•©λ‹ˆλ‹€.
  • 차둜 변경을 μ‹œμž‘ν•œ μ‹œμ μ˜ 간격이 μ•ˆμ „ν–ˆλŠ”κ°€? 정상적인 λͺ¨λΈ κ²½λ‘œλΌλ„ λΉ λ₯΄κ²Œ μ ‘κ·Όν•˜λŠ” λ’€μ°¨ μ•žμ—μ„œ μ‹œμž‘ν•˜λ©΄ 좩돌 μœ„ν—˜μ΄ μƒκΉλ‹ˆλ‹€.

특히 μ¦‰μ‹œ μ‹œμž‘ μ„€μ •μ—μ„œλŠ” β€œμΌλ‹¨ λ°©ν–₯μ§€μ‹œλ“±μ„ 켜고 λ’€μ°¨λ₯Ό ν™•μΈβ€ν•˜λŠ” μˆœμ„œκ°€ μœ„ν—˜ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œμ΄ ν•  수 μžˆλŠ” 핡심 쑰정은 μ§„μž… μ‹œμ μ„ κΈ°λ‹€λ¦¬κ²Œ ν•˜λŠ” 것이며, μ‹€μ œλ‘œ μ•ˆμ „ν•œ μˆœκ°„μ„ μ„ νƒν•˜λŠ” 일은 μš΄μ „μžκ°€ ν•΄μ•Ό ν•©λ‹ˆλ‹€.