使用 MATLAB 和 Simulink 开发 自动驾驶 王鸿钧,MathWorks 中国 2015 The MathWorks, Inc. 1
您可以如何使用 MATLAB 和 Simulink 开发自动驾驶算法? 感知 Perception 控制 Control 规划 Planning 2
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception 控制 Control 对实时数据的传感器融合 路径规划 规划 Planning 3
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception 控制 Control 对实时数据的传感器融合 路径规划 规划 Planning 4
自动驾驶系统工具箱 Automated Driving System Toolbox 为标注视频数据, 引入真实值标注程序 (Ground Truth Labeler) 10:45 Introduction to Automated Driving System Toolbox 5
使用 Ground Truth Labeler 自动标注车道线 6
在 Ground Truth Labeler 中定义区域的子标签和属性 7
使用 Ground Truth Labeler 自动标注像素点 8
通过这个案例了解如何训练一个深度学习网络 使用深度学习训练可行驶区域检测网络 Computer Vision System Toolbox TM 9
载入和显示训练图像 % Create datastore for images imds = imagedatastore(imgdir); I = readimage(imds, 1); I = histeq(i); imshow(i) imagedatastore 可管理大型的图像数据集 10
载入和叠加显示被标注像素点 % Load pixel labels classes = ["Sky"; "Building";... "Pole"; "Road"; "Pavement"; "Tree";... "SignSymbol"; "Fence"; "Car";... "Pedestrian"; "Bicyclist"]; pxds = pixellabeldatastore(... labeldir,classes,labelids); % Display labeled image C = readimage(pxds, 1); cmap = camvidcolormap; B = labeloverlay(i,c,'colormap',cmap); imshow(b) pixellabeldatastore 可管理大型的像素点标签数据集 11
可视化被标注像素点的分布 % Visualize label count by class tbl = counteachlabel(pxds) frequency = tbl.pixelcount /... sum(tbl.pixelcount); bar(1:numel(classes),frequency) xticks(1:numel(classes)) xticklabels(tbl.name) xtickangle(45) ylabel('frequency') 或许能较好检测路面 未必能较好检测骑车人 在这个集合中被标注像素点的分布是不均衡的 12
创建和可视化基础网络 % Create SegNet architecture lgraph = segnetlayers(... imagesize, numclasses,... 'vgg16'); % Display network structure plot(lgraph) title('complete Layer Graph')% % Display last layers plot(lgraph); ylim([0 9.5]) title('last 9 Layers Graph') 最后的网络层 13
添加权重层, 补偿不均衡的数据集 % Create weighted layer pxlayer = pixelclassificationlayer(... 'Name','weightedLabels', 'ClassNames',tbl.Name,... 'ClassWeights',classWeights) % Replace layer lgraph = removelayers(lgraph, 'pixellabels'); lgraph = addlayers(lgraph, pxlayer); lgraph = connectlayers(lgraph,... 'softmax', 'weightedlabels'); % Display network structure plot(lgraph); ylim([0 9.5]) title('replaced Layers Graph') 被替代的网络层 14
训练网络并观察训练过程 [net, info] = trainnetwork(datasource, lgraph, options); 15
计量交并比 (IoU), 评估相似度 iou = jaccard(actual,... expected); table(classes,iou) ans = 11 2 table classes iou "Sky" 0.92659 "Building" 0.7987 "Pole" 0.16978 "Road" 0.95177 "Pavement" 0.41877 "Tree" 0.43401 "SignSymbol" 0.32509 "Fence" 0.492 "Car" 0.068756 "Pedestrian" 0 "Bicyclist" 0 16
数据中的标签分布对 IoU 的影响 在原始数据集中的标签分布 网络的计量评估结果 未被充分表现的类例如行人 骑车人, 没有像天空 道路一样获得良好的分割 17
使用语义分割检测可行驶区域 18
了解更多的深度学习感知算法开发案例 添加语义分割自动算法到 Ground Truth Labeler 工具 Automated Driving System Toolbox TM 训练深度学习网络可行驶空间检测应用 Computer Vision System Toolbox TM 生成 CUDA 代码在 NVIDIA GPU 上运行 DAG 网络 GPU Coder TM 19
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception 控制 Control 对实时数据的传感器融合 路径规划 规划 Planning 20
自动驾驶系统工具箱 Automated Driving System Toolbox 为开发传感器融合算法, 引入多目标跟踪器 (Multi-object tracker) Multi-Object Tracker Detections Track Manager Tracking Filter Tracks 分配检测结果到目标跟踪 创建新的目标跟踪 更新已经存在的目标跟踪 删除过期的目标跟踪 目标跟踪的状态预测与更新 支持线性 扩展 无迹卡尔曼滤波 19:27 Introduction to Automated Driving System Toolbox 21
CAN 如何使用实时数据测试我的传感器融合算法? Radar Camera CAN Tx CAN FD IMU TCP/IP Ethernet 22
CAN 使用来自车辆的实时数据测试前向碰撞预警算法 Radar FCW application Vision Object Radar Object Camera CAN Tx CAN FD CAN Rx Lane Vehicle Speed Yaw Rate Read sensor data stream and video stream IMU TCP/IP Ethernet TCP/IP Video frame FCW algorithm Visualization 23
通过这个案例了解如何开发对实时数据的传感器融合算法 发送端 接收端 以太网 视频流 传输 CAN FD 数据流在笔记本电脑上验证原型算法 Vehicle Network Toolbox TM Vector CAN 界面 VN1610 CAN FD 目标列表 ( 视觉 / 雷达 /IMU) 24
使用来自车辆替代者的实时数据测试前向碰撞预警算法 Transmitter FCW application Vision Object Recorded messages Vision Object Radar Object Lane Vehicle Speed Yaw Rate CAN Tx CAN FD CAN Rx Radar Object Lane Vehicle Speed Yaw Rate Read sensor data stream and video stream Recorded video Video frame TCP/IP Ethernet TCP/IP Video frame FCW algorithm Visualization 25
通过 CAN FD 和 TCP/IP 发送实时数据 26
通过 CAN FD 和 TCP/IP 接收实时数据 27
生成前向碰撞预警算法的 C/C++ 代码 28
通过 CAN FD 和 TCP/IP 传输实时数据流, 并运行编译后的代码 29
了解更多的传感器融合算法开发案例 使用记录的数据设计包含多目标跟踪器的算法 Automated Driving System Toolbox TM 生成 C/C++ 代码对包含多目标跟踪器的算法 MATLAB Coder TM 传输 CAN FD 数据流在笔记本电脑上验证原型算法 Vehicle Network Toolbox TM 30
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception 控制 Control 对实时数据的传感器融合 路径规划 规划 Planning 31
自动驾驶系统工具箱 Automated Driving System Toolbox 人工构建场景, 测试传感器融合算法 26:10 Introduction to Automated Driving System Toolbox 32
使用雷达和视觉检测器 传感器融合 模型预测控制等模块, 进行系统的闭环仿真 含传感器融合的自适应巡航控制 33
模拟传感器检测结果, 测试传感器融合与模型预测控制算法 34
使用视觉检测器模拟车道线检测 35
使用驾驶场景工具 (drivingscenario) 创建双曲线道路 道路与驾驶路径 驾驶员在道路曲率变化处出现分心 模拟驾驶路径 驾驶员在曲率变化处出现分心 36
分心驾驶员的仿真结果 37
车道保持辅助介入后的仿真结果 38
对比分心与辅助后的结果 道路与驾驶路径 驾驶员在道路曲率变化处获得辅助 检测车道偏离 在驾驶员分心时保持车道 39
最大化横向安全距离后的车道跟随 40
观察车道跟随结果 车辆始终保持在车道边界线内 道路与驾驶路径 驾驶员在道路曲率变化处获得辅助 41
图形化的驾驶场景设计器 (Driving Scenario Designer) 42
导出用于生成场景的 MATLAB 代码 43
进一步调整参数, 适应高曲率道路 44
通过这些案例了解如何模拟传感器和驾驶场景, 用于开发控制算法 仿真与生成 C/C++ 代码模型预测控制与传感器融合算法 仿真与生成 C/C++ 代码模型预测控制与含车道线检测的视觉传感器 编辑道路 交通参与者及传感器使用驾驶场景设计器 drivingscenariodesigner 45
车辆动力学模块库 Vehicle Dynamics Blockset 46
通过这些案例了解如何对车辆动力学建模, 用于开发控制算法 车辆动力学仿真用于闭环控制设计 Vehicle Dynamics Blockset TM 与 Unreal 引擎协同仿真设置交通参与者位置及获取摄像机图像 Vehicle Dynamics Blockset TM 47
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception 控制 Control 对实时数据的传感器融合 路径规划 规划 Planning 48
机器人系统工具箱 Robotics System Toolbox 提供与 ROS 生态系统的连接性 使用 ROS 通信与外部的 ROS 组件集成 与 Gazebo 通信机器人系统的可视化仿真 路径跟随基于 ROS 的差分驱动机器人仿真 49
车辆路径规划算法的设计和仿真 Rapidly-exploring Random Tree (RRT*) 50
通过这些案例了解如何开发路径规划算法 规划车辆路径预定义地图的应用 Automated Driving System Toolbox TM 绘制地图瓦片使用 World Street Map (ESRI) Automated Driving System Toolbox TM 仿真 V2X 通信评估信道吞吐量 LTE System Toolbox TM 51
使用 MATLAB 和 Simulink 开发自动驾驶算法的案例 深度学习 传感器建模 & 模型预测控制 感知 Perception Perception 控制 Control Control 对实时数据的传感器融合 路径规划 规划 Planning 52
MathWorks 能够帮助您自定义 MATLAB 和 Simulink, 建立专门的自动驾驶开发工具 基于 Web 的真实值标注 与 Caterpillar 合作的咨询项目 2017 年 MathWorks 北美汽车年会视频 激光雷达真实值标注 与 Autoliv 联合发表论文 (SAE 论文 2018-01-0043) 用于 Unreal 引擎的激光雷达传感器模型 与 Ford 联合发表论文 (SAE 论文 2017-01-0107) 53
您可以使用 MATLAB 和 Simulink 开发自动驾驶算法 感知 Perception Perception 控制 Control Control 规划 Planning 54
同时获得完善的设计验证工具支持 Polyspace Simulink Verification & Validation Simulink Requirements Simulink Coverage Simulink Check Simulink Design Verifier Simulink Test 55
Q&A 56