이 프로젝트는 차선 검출, 경로 결정, 차량 제어 모듈을 포함한 자율주행 차량의 모듈 파이프라인을 구현한 것이다. 각 모듈은 연속적으로 작동하여 차선 경계를 검출하고, 경로를 결정하며, 차량을 제어한다.
이 프로젝트는 다음 세 가지 주요 모듈로 구성된다:
- 이미지를 그레이스케일로 변환하고 필요한 부분만 자른다.
- 수평 그라디언트를 계산하고 쓰레숄딩을 통해 차선 경계를 검출한다.
- 스플라인 피팅을 통해 부드러운 차선 경로를 생성한다.
- 검출된 차선 경계를 기반으로 도로 중심선을 계산한다.
- 중심선을 따라 부드러운 경로를 생성하고 최적화한다.
- 경로의 곡률을 기반으로 차량의 목표 속도를 예측한다.
- Stanley Controller와 PID Controller를 사용하여 차량의 방향과 속도를 제어한다.
- Stanley Controller는 방향 오차와 횡단방향 오차를 계산하여 핸들 각도를 결정한다.
- PID Controller는 속도 오차를 기반으로 가속 및 제동을 조절한다.
- Lane Detection 모듈은 이미지를 그레이스케일로 변환하고, 밝기 그라디언트를 계산하여 차선 경계를 검출한 후 스플라인 피팅을 통해 부드러운 차선 경로를 생성한다.
- Path Decision 모듈은 검출된 차선 경계를 기반으로 도로 중심선을 계산하고, 경로의 곡률을 통해 차량의 목표 속도를 예측한다.
- Vehicle Control 모듈은 Stanley Controller와 PID Controller를 사용하여 차량의 방향과 속도를 제어한다.
- Stanley Controller는 방향 오차와 횡단방향 오차를 계산하여 핸들 각도를 결정하며, PID Controller는 속도 오차를 기반으로 가속 및 제동을 조절한다.
- 최적화 과정에서 각 모듈의 파라미터를 조정하여 주행 안정성과 경로 추적의 정확도를 높인다.
- Waypoint Prediction: 사용되는 waypoint 개수를 조정하여 곡률 계산의 정확도를 높임.
- Target Speed Prediction: 최대 및 최소 속도를 조정하여 주행 안정성 향상.
- Lateral Controller (Stanley): 커브 구간에서의 민감도를 조정하여 안정성 확보.
- Longitudinal Controller (PID): 속도 제어 상수를 조정하여 목표 속도에 빠르게 도달하도록 최적화.