Stateflow 차트를 사용하여 지능형 차량의 제어 자동화하기
이 예제에서는 동일한 의사 결정 로직에 의해 제어되는 지능형 차량이 있는 고속도로 시나리오를 모델링하는 방법을 보여줍니다. 각 차량은 독립 실행형 Stateflow® 차트에 정의된 논리에 따라 가속하거나 감속하거나 차선을 변경할 때를 결정합니다. 주행 조건(주변 차량의 상대적 위치와 속도 포함)은 차량마다 다르기 때문에, MATLAB®의 개별 차트 객체가 고속도로의 개별 차량을 제어합니다.
주행 시나리오 열기
예제를 시작하려면 스크립트 sf_driver_demo.m
을 실행하십시오. 이 스크립트는 긴 고속도로와 여러 대의 차량이 있는 3차원 애니메이션을 표시합니다. 뷰는 한 대의 차량과 그 차량의 주변 환경에 중점을 둡니다. 이 차량이 고속도로를 따라 이동할 때, 독립 실행형 Stateflow 차트 sf_driver
는 차량의 동작을 결정하는 의사 결정 로직을 보여줍니다.
각 차량은 임의의 위치에서 출발하여 목표 속도로 이동하는 것을 시도합니다. 목표 속도는 무작위로 선택되므로 차량은 서로를 방해할 수 있습니다. 이 상황에서 차량은 차선 변경을 시도하고 목표 속도로 이동하는 것을 재개합니다.
클래스 파일 HighwayScenario
는 고속도로와 그 위의 차량이 포함된 3차원 환경을 나타내는
객체를 정의합니다. 차량의 모션을 제어하기 위해 drivingScenario
(Automated Driving Toolbox)drivingScenario
객체는 Stateflow 차트 객체로 구성된 배열을 만듭니다. 각 차트 객체는 시뮬레이션에서 다른 차량을 제어합니다.
차량의 의사 결정 로직 실행하기
Stateflow 차트 sf_driver
는 두 개의 최상위 수준 상태 LaneKeep
과 LaneChange
로 구성됩니다.
LaneKeep
상태가 활성이면 대응되는 차량은 해당 차선을 유지합니다. 이 상태에서 가능한 두 가지 하위 상태는 다음과 같습니다.
Cruise
는 차량 바로 앞의 영역이 비어 있고 차량이 목표 속도로 이동할 수 있는 경우 활성입니다.Follow
는 차량 바로 앞의 영역이 비어 있지 않고 목표 속도가 선행 차량의 속도보다 빠른 경우 활성화됩니다. 이 경우 차량은 강제로 감속하고 차선 변경을 시도합니다.
LaneChange
상태가 활성이면 대응되는 차량은 차선 변경을 시도합니다. 이 상태에서 가능한 두 가지 하위 상태는 다음과 같습니다.
Continue
는 차량 옆의 영역이 비어 있고 차량이 안전하게 차선을 변경할 수 있는 경우 활성입니다.Abort
는 차량 옆의 영역이 비어 있지 않은 경우 활성화됩니다. 이 경우 차량은 강제로 차선을 유지합니다.
상태 LaneKeep
과 LaneChange
간 천이는 isLaneChanging
값에 의해 가드됩니다. LaneKeep
상태에서, 차트는 하위 상태 Follow
가 활성이고 차량의 옆에 차선 변경을 위한 충분한 공간이 있으면 이 로컬 데이터를 true
로 설정합니다. LaneChange
상태에서, 차트는 차량이 차선 변경을 완료하면 이 로컬 데이터를 false
로 설정합니다.
참고 항목
drivingScenario
(Automated Driving Toolbox)
도움말 항목
- Create Stateflow Charts for Execution as MATLAB Objects
- 프로그래밍 방식으로 주행 시나리오 만들기 (Automated Driving Toolbox)
- Create Actor and Vehicle Trajectories Programmatically (Automated Driving Toolbox)
- Define Road Layouts Programmatically (Automated Driving Toolbox)