시뮬레이션, 시나리오 및 자율 주행 – SAE AutoDrive 방식

업데이트: 20년 2021월 XNUMX일
시뮬레이션, 시나리오 및 자율 주행 – SAE AutoDrive 방식

개요

SAE AutoDrive 챌린지는 미국과 캐나다의 4개 팀이 참가하는 8년 간의 대학 디자인 대회입니다. 이 대회 3년 차의 높은 수준의 기술 목표는 SAE 레벨 4에 설명된 대로 자동 운전 모드에서 도시 운전 코스를 탐색하는 것입니다.

MathWorks는 팀이 시뮬레이션을 사용하도록 요구합니다.

시뮬레이션은 자율주행차 개발에 매우 ​​유용한 도구입니다. 모델 기반 테스트는 알고리즘 개발, 단위 및 시스템 수준 테스트, 에지 케이스 시나리오 테스트에 도움이 될 수 있습니다. 현실 세계 감지기 데이터를 기록하고 시스템에 재생하여 융합 알고리즘을 조정할 수 있습니다. 실제 환경을 모델링하기 위해 시뮬레이션 환경을 생성할 수 있으며 다양한 알고리즘 및 센서 위치를 테스트하는 데 사용할 수 있습니다. 성능 결과에 따라 팀 요구 사항을 충족하는 최상의 알고리즘과 센서 위치를 선택할 수 있습니다.

매년 MathWorks는 팀이 시뮬레이션 챌린지를 통해 시뮬레이션을 사용하도록 도전합니다. 이 블로그에서는 1년 챌린지(University of Toronto 및 Kettering University)의 2위 및 2020위 수상자, 그들의 시스템 설계, MathWorks 도구를 사용하여 전체 경쟁 목표를 달성하는 방법을 간략하게 다룹니다. 팀은 다음과 같이 도구를 사용하여 수행한 방식에 따라 평가되었습니다.

  • 개방 루프 인식 테스트 – 개방 루프 테스트를 위한 데이터 합성, 알고리즘의 정확성 평가
  • 폐쇄 루프 제어 테스트 - 폐쇄 루프 시나리오 합성, 제어 알고리즘 성능 평가
  • 제어 알고리즘의 코드 생성 – 알고리즘용 코드 생성, 생성된 코드를 차량에 통합
  • MathWorks 도구를 사용한 혁신 - 기술/technology 위의 3가지 카테고리와는 확연히 다릅니다

University of Toronto

University of Toronto, aUToronto 학생팀이 챌린지에서 1등을 차지했습니다.

개방 루프 인식 테스트

이 팀의 첫 번째 단계는 개방형 루프 인식 테스트를 위한 데이터를 합성하는 것이었습니다. 그들은 센서 융합 알고리즘을 테스트하기로 결정했습니다. 테스트용 합성 데이터를 합성하기 위해 그들은 (DSD)를 사용했습니다. 이 앱을 사용하면 자율 주행 테스트를 위한 합성 주행 시나리오를 설계할 수 있습니다. 팀은 센서 융합 알고리즘에 레이더와 3대의 카메라를 사용했으며 그림 1과 같이 구성되었습니다.

그림 1: 팀 센서 위치(© aUToronto)

그들은 센서 융합 알고리즘에 공급할 센서 데이터를 합성하기 위해 DSD 앱에서 위치, 방향 및 구성과 함께 카메라 센서를 모델링했습니다. DSD는 팀의 이미지 처리 및 컴퓨터 비전 알고리즘 후 카메라 출력을 시뮬레이션하고 데이터에 노이즈와 이상값을 추가합니다.

Scenario Reader 블록은 DSD를 사용하여 생성된 시나리오 정보를 읽는 데 사용되었습니다. 배우 포즈는 다중 감지 생성기에 입력으로 전송되었습니다. 이러한 다양한 센서에 대한 감지는 가변 크기의 ROS(로봇 운영 체제) 메시지 배열로 패키징되어 특정 ROS 주제에 맞춤형 ROS 메시지로 전송되었습니다(그림 2).

그림 2: 개방 루프 테스트를 위한 Simulink 모델(© aUToronto)

팀은 객체 추적기의 출력을 차량의 실측 값과 비교했습니다. RMSE(Root Mean Square Error) 메트릭이 성능 평가에 사용되었습니다.

폐쇄 루프 제어 테스트

팀의 주요 초점은 공사 구역의 경로 변경 및 장애물 주변의 넛징과 같은 새로운 기능에 대한 수정된 플래너를 테스트하는 것이었습니다. 플래너는 필요에 따라 개체 주위의 경로를 찾기 위해 맵에서 가장자리를 잘라내는 격자 구조를 사용하도록 재설계되었습니다(그림 3). DSD는 다시 한 번 시나리오를 만드는 데 사용되었습니다. 장벽과 신호등도 시나리오에 추가되었습니다.

그림 3: 경로 찾기를 위한 격자 구조(© aUToronto)

팀은 Stateflow를 사용하여 신호등 게시자를 모델링했습니다(그림 4). 자기 차량이 신호등의 범위를 벗어나면(> 50m) 알 수 없는 상태가 게시됩니다. 자아가 범위 내에 들어오면 빨간불 메시지가 게시됩니다. 에고가 5초 동안 정지한 후 메시지가 녹색 표시등으로 전환됩니다.

그림 4: 모델 컨트롤러에 대한 Stateflow(© aUToronto)

컨트롤러, 플래너 및 차량 모델 ROS 노드가 출시되었습니다. 장애물이 자아 차량에서 50m 이내에 있으면 그 위치가 Simulink 모델에 ROS 메시지로 전송되었습니다(그림 5).

그림 5: 위치 메시지를 보내는 논리(© aUToronto)

제어 알고리즘의 코드 생성

팀은 정지 신호 처리 알고리즘을 위한 코드를 생성했습니다(그림 6). Simulink Coder는 Stateflow를 C++ 코드로 변환하는 데 사용되었습니다. 독립형 모듈 코드 패키징 기능을 사용하여 생성되었습니다. 생성된 모듈은 팀 코드베이스에 병합되었습니다.

그림 6: 정지등 제어 논리 Stateflow(© aUToronto)

MathWorks 도구를 사용한 혁신 - Lidar 카메라 보정

라이더와 카메라 센서의 입력으로 장면의 객체를 정확하게 해석하려면 센서 출력을 함께 융합해야 합니다. 따라서 팀은 센서 융합을 위해 Lidar 포인트를 이미지에 투영하거나 그 반대로 하기 위해 Lidar와 팀 카메라 사이의 변환을 수행했습니다. 프로젝션이 좋아 보일 때까지 손으로 측정하고 카메라를 회전시키는 대신 팀은 Lidar 처리 도구 상자에서 새로 개발된 Lidar 카메라 보정 도구를 사용했습니다. 이 도구는 3D 라이더 평면의 점과 이미지 평면의 픽셀 사이의 대응 관계를 설정하는 강성 변환 행렬을 추정합니다.

그들은 현재의 것이 도구에 비해 너무 작았기 때문에 더 큰 교정 보드를 만들었습니다. 카메라 보정 도구는 카메라의 고유 매트릭스를 얻는 데 사용되었습니다. 바둑판의 모서리는 각 이미지와 Lidar 데이터에서 발견되었습니다. Lidar와 카메라 사이의 견고한 변환 매트릭스가 발견되었습니다. 이 프로세스는 포인트 클라우드 데이터를 이미지에 투영하거나 그 반대로 투영하는 데 사용할 수 있는 변환을 출력합니다. 이러한 단계는 그림 7에 나와 있습니다.

그림 7: (a) 카메라 고유 매트릭스 (b) 체커보드 모서리 (c) Lidar에서 카메라로의 변환 매트릭스(© aUToronto)

케터링 대학

XNUMXD덴탈의 학생 팀 Kettering University 출신이 챌린지에서 2위를 차지했습니다.

개방 루프 인식 테스트

팀은 언리얼 엔진을 사용하여 다양한 시나리오를 만들었습니다. 시뮬레이션 3D 카메라 블록을 사용하여 Unreal의 자아 차량에 카메라가 추가되었습니다. 비현실적인 이미지를 사용하여 차선 감지를 수행하기 위해 Simulink 모델이 사용되었습니다(그림 8). 파란색 사각형은 차선 감지 기능을 나타내고 노란색은 각 단계의 출력을 나타냅니다. 이러한 출력 수치는 그림 9에 나와 있습니다.

그림 8: 개방형 루프 테스트를 위한 Simulink 모델(© Kettering University)

그림 9: 차선 감지 출력(© Kettering University)

폐쇄 루프 제어 테스트

팀의 시스템 설계는 2개의 상태 기계(세로 및 측면)로 구성되었습니다. 그림에 표시된 이러한 상태 머신은 센서 및 의사 결정 데이터를 기반으로 컨트롤러 선택 논리를 모델링하는 데 사용되었습니다. 이들은 서로 연결되어 컨트롤러 하위 시스템을 활성화하고 초기화하는 데 사용되었습니다.

그림 10: 상태 머신(© Kettering University)

그림 11의 Simulink 모델과 결합된 컨트롤러 시뮬레이션을 수행하여 모든 팀 컨트롤러의 작동을 확인했습니다. 이러한 컨트롤러에 대한 입력은 슬라이더와 게이지를 사용하여 제공되었습니다.

그림 11: 폐쇄 루프 테스트를 위한 Simulink 모델(© Kettering University)

종방향 상태 기계의 컨트롤러 하위 시스템에는 종방향 속도 컨트롤러와 자동 비상 제동(AEB)이 포함됩니다. 상태는 가속, 순항, 감속, 정지 및 주차와 같은 종방향 차량 동역학에 의해 결정되었습니다.

측면 상태 시스템의 컨트롤러 하위 시스템에는 LKA(Lane Keep Assist), 차선 변경 및 회전 컨트롤러가 포함됩니다. 상태는 측면 차량 동역학을 기반으로 결정되었습니다(그림 12). 종방향 속도, 차선 변경 및 LKA 컨트롤러는 아래에서 설명합니다.

그림 12: 측면 컨트롤러 상태(© Kettering University)

세로 컨트롤러

그림 13은 세로 컨트롤러를 모델링하는 데 사용되는 Simulink 모델을 보여줍니다. 속도에 기반한 PID로 구성되었습니다. 기준 및 출력 토크 속도는 경쟁 가속 및 저크 제한 내에서 유지되도록 제한되었습니다. 시스템 입력은 슬라이더로 초기화 및 편집되었으며 범위는 데이터를 보는 데 사용되었습니다. 그림 14는 목표 및 실제 종방향 속도 출력을 보여줍니다.

그림 13: 세로 컨트롤러 Simulink 모델(© Kettering University)

그림 14: 종방향 속도 비교(© Kettering University)

차선 변경 컨트롤러

팀의 차선 변경 컨트롤러는 적응형 MPC(모델 예측 제어)를 사용했습니다. 차량 속도 및 차선 폭과 같은 차선 변경 입력과 함께 파라메트릭 기능을 사용하여 기준 경로를 생성했습니다. 컨트롤러에 대한 출력은 기준 측면 위치 및 Yaw였습니다. 차체를 시뮬레이션하기 위해 3DOF(자유도) 모델이 사용되었습니다. 그림 15는 시뮬레이션에 사용된 Simulink 모델을 보여줍니다. 그림 16은 차량 내 테스트 후 얻은 경로와 함께 참조 및 시뮬레이션된 차선 변경 경로가 있는 시뮬레이션의 출력을 보여줍니다.

그림 15: 차선 변경 컨트롤러 Simulink 모델(© Kettering University)

그림 16: 차선 변경 경로 비교(© Kettering University)

차량 모델

팀은 3DOF 단일 및 이중 트랙 차량 모델을 개발하고 검증했습니다. 선형 자전거 모델을 사용하여 초기 검증을 수행했습니다. 최종 검증은 물리적 테스트 데이터로 수행되었습니다. 그림은 테스트 데이터가 있는 경우와 없는 경우의 초기 및 최종 검증이 있는 측면 가속도 비교 출력을 보여줍니다.

그림 17: (a) 측면 가속도 비교 (b) 테스트 데이터와의 비교(© Kettering University)

MathWorks 도구를 사용한 혁신 – 언리얼 시티

팀은 모든 컨트롤러의 폐쇄 루프 테스트에 Unreal을 사용했습니다. 그들은 보행자의 움직임과 신호등을 제어할 수 있는 언리얼 도시를 만들었습니다. 사용자 지정 가능한 액터가 생성되고 액터 이름, 액터 유형, 액터 세부 정보, 애니메이션 세부 정보 및 태그와 같은 정보가 빠른 액세스를 위해 저장되었습니다. 신호등 지도도 그림 18이라는 표시등 위치와 함께 생성되었습니다.

그림 18: 언리얼 신호등 맵(© Kettering University)

그림 19는 Simulink-Unreal 시스템 통신 구조를 보여줍니다. 차량 위치, 보행자 이동, 신호등 상태 등으로 구성된 Unreal 장면에 대한 의사 결정은 Stateflow를 사용하여 수행되었으며 컨트롤러에 대한 입력으로 전송되었습니다(그림 20).

그림 19: Simulink Unreal 시스템 통신 구조(© Kettering University)

그림 20: Unreal 장면 의사 결정을 위한 Stateflow(© Kettering University)

결론적으로 University of Toronto와 Kettering University의 학생 팀은 MATLAB 및 Simulink를 활용하여 융합, 추적 및 내비게이션 알고리즘을 설계, 구축, 테스트 및 평가하여 시뮬레이션에서 SAE 레벨 4 자율 주행 차량을 구축하는 데 한 걸음 더 다가갈 수 있었습니다. 그들은 서로 다른 시뮬레이션 환경에서 신호등과 여러 행위자가 있는 복잡한 시나리오를 작성하고 Simulink와 환경을 통합하고 이러한 시나리오에서 선택한 알고리즘을 배포 및 테스트했습니다. 개방 루프 및 폐쇄 루프 인식 알고리즘은 Simulink를 사용하여 모델링 및 테스트되었으며 이러한 시스템에 대한 코드가 생성되었습니다. 또한 팀은 Simulink 및 Stateflow를 사용하여 다양한 컨트롤러 알고리즘을 설계하고 테스트했습니다. 이 두 챔피언십 팀은 MathWorks 도구를 혁신적이고 광범위하게 사용했습니다.