本节采用matlab自动驾驶工具箱开发AEB算法,首先建立仿真场景并添加传感器,在传感器融合得到障碍物信息之后,搭建AEB算法模块进行仿真测试;
测试效果图:
1. 场景搭建及传感器信息处理
AEB(Autonomous Emergency Braking)算法是一种用于自动驾驶和车辆安全系统的算法,旨在帮助减少碰撞风险并减轻碰撞的严重程度。AEB系统通过使用传感器和算法来监测车辆前方的障碍物,并在检测到潜在碰撞的情况下自动触发制动系统,以减少车辆的速度或完全停车,从而避免或减轻碰撞的后果。算法整体框图如下:
1.1 场景搭建与导出
打开matlab→APP→driving scenario design,创建一个新场景:
在创建的场景中,可以查看鸟瞰图,我们创建一个主车触发AEB减速避让行人的场景,其中,行人的速度为1.5m/s,主车的行驶速度为10m/s;在设置仿真场景后,在主车上配置传感器,此处选择装一个毫米波雷达和一个相机,右图橙色点即为毫米波雷达扫描到的障碍物信息:
在搭建场景结束后,点击右上角的explore将本场景导出为.m脚本:
% function [allData, scenario, sensors] = AEBscenario() %创建场景 [scenario, egoVehicle] = createDrivingScenario; %创建传感器 [sensors, numSensors] = createSensors(scenario); allData = struct('Time', {}, 'ActorPoses', {}, 'ObjectDetections', {}, 'LaneDetections', {}, 'PointClouds', {}, 'INSMeasurements', {}); running = true; while running % 生成车辆 poses = targetPoses(egoVehicle); time = scenario.SimulationTime; objectDetections = {}; laneDetections = []; ptClouds = {}; insMeas = {}; isValidTime = false(1, numSensors); % Generate detections for each sensor for sensorIndex = 1:numSensors sensor = sensors{sensorIndex}; [objectDets, isValidTime(sensorIndex)] = sensor(poses, time); numObjects = length(objectDets); objectDetections = [objectDetections; objectDets(1:numObjects)]; %#ok<AGROW> end % Aggregate all detections into a structure for later use if any(isValidTime) allData(end + 1) = struct( ... 'Time', scenario.SimulationTime, ... 'ActorPoses', actorPoses(scenario), ... 'ObjectDetections', {objectDetections}, ... 'LaneDetections', {laneDetections}, ... 'PointClouds', {ptClouds}, ... %#ok<AGROW> 'INSMeasurements', {insMeas}); %#ok<AGROW> end % Advance the scenario one time step and exit the loop if the scenario is complete running = advance(scenario); end % Restart the driving scenario to return the actors to their initial positions. restart(scenario); % Release all the sensor objects so they can be used again. for sensorIndex = 1:numSensors release(sensors{sensorIndex}); end %%%%%%%%%%%%%%%%%%%% % Helper functions % %%%%%%%%%%%%%%%%%%%% % Units used in createSensors and createDrivingScenario % Distance/Position - meters % Speed - meters/second % Angles - degrees % RCS Pattern - dBsm function [sensors, numSensors] = createSensors(scenario) % createSensors Returns all sensor objects to generate detections % 设置传感器 profiles = actorProfiles(scenario); sensors{1} = drivingRadarDataGenerator('SensorIndex', 1, ... 'MountingLocation', [3.7 0 0.2], ... 'RangeLimits', [0 120], ... 'TargetReportFormat', 'Detections', ... 'RangeRateLimits', [-120 120], ... 'ReferenceRange', 120, ... 'Profiles', profiles); sensors{2} = visionDetectionGenerator('SensorIndex', 2, ... 'SensorLocation', [1.9 0], ... 'DetectorOutput', 'Objects only', ... 'ActorProfiles', profiles); numSensors = 2; end function [scenario, egoVehicle] = createDrivingScenario % createDrivingScenario Returns the drivingScenario defined in the Designer % Construct a drivingScenario object. scenario = drivingScenario; % Add all road segments roadCenters = [-9.8 10 0; 34.6 9.9 0]; laneSpecification = lanespec(2); road(scenario, roadCenters, 'Lanes', laneSpecification, 'Name', 'Road'); % Add the ego vehicle egoVehicle = vehicle(scenario, ... 'ClassID', 1, ... 'Position', [-9.88904986904784 11.5712861699397 0], ... 'Mesh', driving.scenario.carMesh, ... 'Name', 'Car'); waypoints = [-9.88904986904784 11.5712861699397 0; 34.6 12.1 0]; speed = [10;10]; trajectory(egoVehicle, waypoints, speed); % Add the non-ego actors pedestrian = actor(scenario, ... 'ClassID', 4, ... 'Length', 0.24, ... 'Width', 0.45, ... 'Height', 1.7, ... 'Position', [25.8676788564176 6.41940907360563 0], ... 'RCSPattern', [-8 -8;-8 -8], ... 'Mesh', driving.scenario.pedestrianMesh, ... 'PlotColor', [0.929 0.694 0.125], ... 'Name', 'Pedestrian'); waypoints = [25.8676788564176 6.41940907360563 0; 26 14 0]; speed = [1.5;1.5]; trajectory(pedestrian, waypoints, speed); plot(scenario); end
在最后一行的plot(scenario)可直接画出本场景,因此,我们可以通过写m脚本的方式,无需打开driving design scenario也可绘图,运行结果如下:
1.2 场景中传感器数据导入到simulink中
将场景导入到simulink中,采用自动驾驶工具箱提供的simulink接口模块:
在scenario reader模块中加载预先设定好的场景,对于场景中驾驶员的输入,由于我们采用的egocar的动力学为simulink中的模块,故需要对输入的egocar接口进行配置:
数据类型的BusActors,这个Bus类型数据我们在最后一节创建,ego pack函数如下:
function egoActor = packEgo(pos,vel,yaw,yawRate,egoActorID) egoActor = struct(... 'ActorID',egoActorID,... 'Position', [pos(1) pos(2) 0], ... 'Velocity', [vel(1) vel(2) 0], ... 'Roll', 0, ... 'Pitch', 0, ... 'Yaw', yaw, ... 'AngularVelocity', [0 0 yawRate]);
需要注意的是,egocar这个结构体是我们自己创建的,需要在explore中手动绑定数据类型:
关于所有BUS数据类型的创建,都放在最后一节进行,下图为毫米波雷达和相机的输入接口模块:
Detection Concatenation采用默认设置,无需修改,对传感器融合模块的配置如下:
其中initcvekf为初始化函数,它用于初始化线性卡尔曼滤波观测器,此模块用于对毫米波雷达和相机的数据作融合处理,在融合之,需要将障碍物的信息与主车信息进行数学运算,以确认障碍物与主车之间的相对距离和相对速度:
function [x,vx,mioTrack] = findLeadCar(confirmedTracks, curvature, positionSelector) numStates = 6; % 2. The lane is defined using a parabolic model, where y=ax^2+bx+c. a is % equal to half the road curvature, b=0, and c is the offset of the lane % boundaries relative to the ego car. Overall lane width is assumed to % be 3.6m, typical highway lane width. laneWidth = 3.6; % 3. The ego car is assumed to be traveling in the middle of its lane, with % 1.8m on each side of it. So, c=+1.8m for the left lane boundary and % -1.8m for the right lane boundary. halfLaneWidth = laneWidth/2; % Initialize outputs and parameters maxX = cast(1000, 'like', confirmedTracks.Tracks(1).State); % Far enough forward so that no track is expected to exceed this distance trackID = 1; for i = 1:confirmedTracks.NumTracks position = positionSelector * confirmedTracks.Tracks(i).State; x = position(1); % Longitudinal position of the track relative to ego y = position(2); % Lateral position of the track relative to ego if x < maxX && x > 0 % No point checking otherwise yleftLane = polyval([curvature/2, 0, halfLaneWidth],x); % Half a lane to the left yrightLane = polyval([curvature/2, 0, -halfLaneWidth],x); % Half a lane to the right % Find a new lead car if (yrightLane <= y) && (y <= yleftLane) maxX = x; trackID = i; end end end if trackID>0 mioState = confirmedTracks.Tracks(trackID).State; else mioState = inf(numStates,1,'like',confirmedTracks.Tracks(1).State); end % Output: x = mioState(1); % Longitudinal position of the lead car vx = mioState(2); % Longitudinal velocity of the lead car mioTrack = trackID; % Index of the most important track
2.车辆动力学模块
本小节采用matlab自带三自由度动力学模型进行车辆仿真:
其中,Fx与油门刹车的对应关系如下:
输出量为动力学模型计算得到的X,Y的坐标以及车辆的横摆角速度,航向角和X,Y方向的速度。
3. AEB主算法模块搭建
AEB著算法模块建模如下:
其中转向系的模拟模型如下,用于对驾驶员进行模拟,由道路曲率与车辆横摆角进行修正:
AEB主算法如下图:
首先,采用之前得到的相对距离与相对速度计算剩余碰撞时间(ttc):
计算各个AEB模式下的碰撞时间,由于安全需要冗余,故加上一部分的反应时间:
AEB的状态机调度如下,最终输出的为车辆的减速度:
此外,车辆的速度控制器模型如下:
此模型实时对车速进行控制,当AEB不触发时,采用此速度控制器控制车速,当AEB触发时,将油门踏板置为0:
4.采用m脚本管理数据并进行测试
最后,采用m脚本对文中的总线数据和结构体数据进行管理,脚本如下:
clc clear % 速度控制器数据字典 SpeedController.v_set=5.5;%设定的速度 SpeedController.Kp=1.1;%PID控制器参数 SpeedController.Ki=0.1;%PID控制器参数 SpeedController.Amax=3;%速度控制器限幅 SpeedController.Amin=-3;%速度控制器限幅 % AEB主算法数据字典 AEB.PB1_decel=3.8;%AEB轻制动的制动减速度 AEB.PB2_decel=5.3;%AEB重制动的制动减速度 AEB.FB_decel=9.8;%AEB全制动的制动减速度 AEB.timeMargin=0;%AEB剩余碰撞时间时间裕值 AEB.headwayOffset=6.7;%相对距离安全裕值 %FCW功能数据字典 FCW.driver_decel=4; FCW.timeToReact=1.2; % 定义bus对象的属性 BusActors = Simulink.Bus; BusActors.Description = ''; BusActors.DataScope = 'Auto'; BusActors.HeaderFile = ''; BusActors.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; saveVarsTmp{1}.Name = 'NumActors'; saveVarsTmp{1}.Complexity = 'real'; saveVarsTmp{1}.Dimensions = [1 1]; saveVarsTmp{1}.DataType = 'double'; saveVarsTmp{1}.Min = []; saveVarsTmp{1}.Max = []; saveVarsTmp{1}.DimensionsMode = 'Fixed'; saveVarsTmp{1}.SamplingMode = 'Sample based'; saveVarsTmp{1}.DocUnits = ''; saveVarsTmp{1}.Description = ''; saveVarsTmp{1}(2, 1) = Simulink.BusElement; saveVarsTmp{1}(2, 1).Name = 'Time'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; saveVarsTmp{1}(3, 1) = Simulink.BusElement; saveVarsTmp{1}(3, 1).Name = 'Actors'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [1 1]; saveVarsTmp{1}(3, 1).DataType = 'Bus: BusActorsActors'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; BusActors.Elements = saveVarsTmp{1}; clear saveVarsTmp; %创建BusActorsActors的BUS数据类型 BusActorsActors = Simulink.Bus; BusActorsActors.Description = ''; BusActorsActors.DataScope = 'Auto'; BusActorsActors.HeaderFile = ''; BusActorsActors.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; saveVarsTmp{1}.Name = 'ActorID'; saveVarsTmp{1}.Complexity = 'real'; saveVarsTmp{1}.Dimensions = [1 1]; saveVarsTmp{1}.DataType = 'double'; saveVarsTmp{1}.Min = []; saveVarsTmp{1}.Max = []; saveVarsTmp{1}.DimensionsMode = 'Fixed'; saveVarsTmp{1}.SamplingMode = 'Sample based'; saveVarsTmp{1}.DocUnits = ''; saveVarsTmp{1}.Description = ''; saveVarsTmp{1}(2, 1) = Simulink.BusElement; saveVarsTmp{1}(2, 1).Name = 'Position'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 3]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; saveVarsTmp{1}(3, 1) = Simulink.BusElement; saveVarsTmp{1}(3, 1).Name = 'Velocity'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [1 3]; saveVarsTmp{1}(3, 1).DataType = 'double'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; saveVarsTmp{1}(4, 1) = Simulink.BusElement; saveVarsTmp{1}(4, 1).Name = 'Roll'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [1 1]; saveVarsTmp{1}(4, 1).DataType = 'double'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; saveVarsTmp{1}(5, 1) = Simulink.BusElement; saveVarsTmp{1}(5, 1).Name = 'Pitch'; saveVarsTmp{1}(5, 1).Complexity = 'real'; saveVarsTmp{1}(5, 1).Dimensions = [1 1]; saveVarsTmp{1}(5, 1).DataType = 'double'; saveVarsTmp{1}(5, 1).Min = []; saveVarsTmp{1}(5, 1).Max = []; saveVarsTmp{1}(5, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(5, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(5, 1).DocUnits = ''; saveVarsTmp{1}(5, 1).Description = ''; saveVarsTmp{1}(6, 1) = Simulink.BusElement; saveVarsTmp{1}(6, 1).Name = 'Yaw'; saveVarsTmp{1}(6, 1).Complexity = 'real'; saveVarsTmp{1}(6, 1).Dimensions = [1 1]; saveVarsTmp{1}(6, 1).DataType = 'double'; saveVarsTmp{1}(6, 1).Min = []; saveVarsTmp{1}(6, 1).Max = []; saveVarsTmp{1}(6, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(6, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(6, 1).DocUnits = ''; saveVarsTmp{1}(6, 1).Description = ''; saveVarsTmp{1}(7, 1) = Simulink.BusElement; saveVarsTmp{1}(7, 1).Name = 'AngularVelocity'; saveVarsTmp{1}(7, 1).Complexity = 'real'; saveVarsTmp{1}(7, 1).Dimensions = [1 3]; saveVarsTmp{1}(7, 1).DataType = 'double'; saveVarsTmp{1}(7, 1).Min = []; saveVarsTmp{1}(7, 1).Max = []; saveVarsTmp{1}(7, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(7, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(7, 1).DocUnits = ''; saveVarsTmp{1}(7, 1).Description = ''; BusActorsActors.Elements = saveVarsTmp{1}; clear saveVarsTmp; %创建BusMultiObjectTracker1总线数据类型 BusMultiObjectTracker1 = Simulink.Bus; BusMultiObjectTracker1.Description = ''; BusMultiObjectTracker1.DataScope = 'Auto'; BusMultiObjectTracker1.HeaderFile = ''; BusMultiObjectTracker1.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; saveVarsTmp{1}.Name = 'NumTracks'; saveVarsTmp{1}.Complexity = 'real'; saveVarsTmp{1}.Dimensions = [1 1]; saveVarsTmp{1}.DataType = 'double'; saveVarsTmp{1}.Min = []; saveVarsTmp{1}.Max = []; saveVarsTmp{1}.DimensionsMode = 'Fixed'; saveVarsTmp{1}.SamplingMode = 'Sample based'; saveVarsTmp{1}.DocUnits = ''; saveVarsTmp{1}.Description = ''; saveVarsTmp{1}(2, 1) = Simulink.BusElement; saveVarsTmp{1}(2, 1).Name = 'Tracks'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [20 1]; saveVarsTmp{1}(2, 1).DataType = 'Bus: BusMultiObjectTracker1Tracks'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; BusMultiObjectTracker1.Elements = saveVarsTmp{1}; clear saveVarsTmp; %创建BusMultiObjectTracker1总线 BusMultiObjectTracker1 = Simulink.Bus; BusMultiObjectTracker1.Description = ''; BusMultiObjectTracker1.DataScope = 'Auto'; BusMultiObjectTracker1.HeaderFile = ''; BusMultiObjectTracker1.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; saveVarsTmp{1}.Name = 'NumTracks'; saveVarsTmp{1}.Complexity = 'real'; saveVarsTmp{1}.Dimensions = [1 1]; saveVarsTmp{1}.DataType = 'double'; saveVarsTmp{1}.Min = []; saveVarsTmp{1}.Max = []; saveVarsTmp{1}.DimensionsMode = 'Fixed'; saveVarsTmp{1}.SamplingMode = 'Sample based'; saveVarsTmp{1}.DocUnits = ''; saveVarsTmp{1}.Description = ''; saveVarsTmp{1}(2, 1) = Simulink.BusElement; saveVarsTmp{1}(2, 1).Name = 'Tracks'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [20 1]; saveVarsTmp{1}(2, 1).DataType = 'Bus: BusMultiObjectTracker1Tracks'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; BusMultiObjectTracker1.Elements = saveVarsTmp{1}; clear saveVarsTmp; %创建BusMultiObjectTracker1Tracks总线 BusMultiObjectTracker1Tracks = Simulink.Bus; BusMultiObjectTracker1Tracks.Description = ''; BusMultiObjectTracker1Tracks.DataScope = 'Auto'; BusMultiObjectTracker1Tracks.HeaderFile = ''; BusMultiObjectTracker1Tracks.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素TrackID saveVarsTmp{1} = Simulink.BusElement; saveVarsTmp{1}.Name = 'TrackID'; saveVarsTmp{1}.Complexity = 'real'; saveVarsTmp{1}.Dimensions = [1 1]; saveVarsTmp{1}.DataType = 'double'; saveVarsTmp{1}.Min = []; saveVarsTmp{1}.Max = []; saveVarsTmp{1}.DimensionsMode = 'Fixed'; saveVarsTmp{1}.SamplingMode = 'Sample based'; saveVarsTmp{1}.DocUnits = ''; saveVarsTmp{1}.Description = ''; %创建元素BranchID saveVarsTmp{1}(2, 1) = Simulink.BusElement; saveVarsTmp{1}(2, 1).Name = 'BranchID'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 1]; saveVarsTmp{1}(2, 1).DataType = 'uint32'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素SourceIndex saveVarsTmp{1}(3, 1) = Simulink.BusElement; saveVarsTmp{1}(3, 1).Name = 'SourceIndex'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [1 1]; saveVarsTmp{1}(3, 1).DataType = 'uint32'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; %创建元素UpdateTime saveVarsTmp{1}(4, 1) = Simulink.BusElement; saveVarsTmp{1}(4, 1).Name = 'UpdateTime'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [1 1]; saveVarsTmp{1}(4, 1).DataType = 'double'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; %创建元素Age saveVarsTmp{1}(5, 1) = Simulink.BusElement; saveVarsTmp{1}(5, 1).Name = 'Age'; saveVarsTmp{1}(5, 1).Complexity = 'real'; saveVarsTmp{1}(5, 1).Dimensions = [1 1]; saveVarsTmp{1}(5, 1).DataType = 'uint32'; saveVarsTmp{1}(5, 1).Min = []; saveVarsTmp{1}(5, 1).Max = []; saveVarsTmp{1}(5, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(5, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(5, 1).DocUnits = ''; saveVarsTmp{1}(5, 1).Description = ''; %创建元素State saveVarsTmp{1}(6, 1) = Simulink.BusElement; saveVarsTmp{1}(6, 1).Name = 'State'; saveVarsTmp{1}(6, 1).Complexity = 'real'; saveVarsTmp{1}(6, 1).Dimensions = [6 1]; saveVarsTmp{1}(6, 1).DataType = 'double'; saveVarsTmp{1}(6, 1).Min = []; saveVarsTmp{1}(6, 1).Max = []; saveVarsTmp{1}(6, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(6, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(6, 1).DocUnits = ''; saveVarsTmp{1}(6, 1).Description = ''; %创建元素StateCovariance saveVarsTmp{1}(7, 1) = Simulink.BusElement; saveVarsTmp{1}(7, 1).Name = 'StateCovariance'; saveVarsTmp{1}(7, 1).Complexity = 'real'; saveVarsTmp{1}(7, 1).Dimensions = [6 6]; saveVarsTmp{1}(7, 1).DataType = 'double'; saveVarsTmp{1}(7, 1).Min = []; saveVarsTmp{1}(7, 1).Max = []; saveVarsTmp{1}(7, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(7, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(7, 1).DocUnits = ''; saveVarsTmp{1}(7, 1).Description = ''; %创建元素ObjectClassID saveVarsTmp{1}(8, 1) = Simulink.BusElement; saveVarsTmp{1}(8, 1).Name = 'ObjectClassID'; saveVarsTmp{1}(8, 1).Complexity = 'real'; saveVarsTmp{1}(8, 1).Dimensions = [1 1]; saveVarsTmp{1}(8, 1).DataType = 'double'; saveVarsTmp{1}(8, 1).Min = []; saveVarsTmp{1}(8, 1).Max = []; saveVarsTmp{1}(8, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(8, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(8, 1).DocUnits = ''; saveVarsTmp{1}(8, 1).Description = ''; %创建元素TrackLogic saveVarsTmp{1}(9, 1) = Simulink.BusElement; saveVarsTmp{1}(9, 1).Name = 'TrackLogic'; saveVarsTmp{1}(9, 1).Complexity = 'real'; saveVarsTmp{1}(9, 1).Dimensions = [1 1]; saveVarsTmp{1}(9, 1).DataType = 'Enum: trackLogicType'; saveVarsTmp{1}(9, 1).Min = []; saveVarsTmp{1}(9, 1).Max = []; saveVarsTmp{1}(9, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(9, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(9, 1).DocUnits = ''; saveVarsTmp{1}(9, 1).Description = ''; %创建元素TrackLogicState saveVarsTmp{1}(10, 1) = Simulink.BusElement; saveVarsTmp{1}(10, 1).Name = 'TrackLogicState'; saveVarsTmp{1}(10, 1).Complexity = 'real'; saveVarsTmp{1}(10, 1).Dimensions = [1 3]; saveVarsTmp{1}(10, 1).DataType = 'boolean'; saveVarsTmp{1}(10, 1).Min = []; saveVarsTmp{1}(10, 1).Max = []; saveVarsTmp{1}(10, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(10, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(10, 1).DocUnits = ''; saveVarsTmp{1}(10, 1).Description = ''; %创建元素IsConfirmed saveVarsTmp{1}(11, 1) = Simulink.BusElement; saveVarsTmp{1}(11, 1).Name = 'IsConfirmed'; saveVarsTmp{1}(11, 1).Complexity = 'real'; saveVarsTmp{1}(11, 1).Dimensions = [1 1]; saveVarsTmp{1}(11, 1).DataType = 'boolean'; saveVarsTmp{1}(11, 1).Min = []; saveVarsTmp{1}(11, 1).Max = []; saveVarsTmp{1}(11, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(11, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(11, 1).DocUnits = ''; saveVarsTmp{1}(11, 1).Description = ''; %创建元素IsCoasted saveVarsTmp{1}(12, 1) = Simulink.BusElement; saveVarsTmp{1}(12, 1).Name = 'IsCoasted'; saveVarsTmp{1}(12, 1).Complexity = 'real'; saveVarsTmp{1}(12, 1).Dimensions = [1 1]; saveVarsTmp{1}(12, 1).DataType = 'boolean'; saveVarsTmp{1}(12, 1).Min = []; saveVarsTmp{1}(12, 1).Max = []; saveVarsTmp{1}(12, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(12, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(12, 1).DocUnits = ''; saveVarsTmp{1}(12, 1).Description = ''; %创建元素IsSelfReported saveVarsTmp{1}(13, 1) = Simulink.BusElement; saveVarsTmp{1}(13, 1).Name = 'IsSelfReported'; saveVarsTmp{1}(13, 1).Complexity = 'real'; saveVarsTmp{1}(13, 1).Dimensions = [1 1]; saveVarsTmp{1}(13, 1).DataType = 'boolean'; saveVarsTmp{1}(13, 1).Min = []; saveVarsTmp{1}(13, 1).Max = []; saveVarsTmp{1}(13, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(13, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(13, 1).DocUnits = ''; saveVarsTmp{1}(13, 1).Description = ''; %创建总线元素ObjectAttributes saveVarsTmp{1}(14, 1) = Simulink.BusElement; saveVarsTmp{1}(14, 1).Name = 'ObjectAttributes'; saveVarsTmp{1}(14, 1).Complexity = 'real'; saveVarsTmp{1}(14, 1).Dimensions = [2 1]; saveVarsTmp{1}(14, 1).DataType = 'Bus: BusRadarDetectionsObjectAttributes'; saveVarsTmp{1}(14, 1).Min = []; saveVarsTmp{1}(14, 1).Max = []; saveVarsTmp{1}(14, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(14, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(14, 1).DocUnits = ''; saveVarsTmp{1}(14, 1).Description = ''; BusMultiObjectTracker1Tracks.Elements = saveVarsTmp{1}; %创建总线BusRadarDetectionsObjectAttributes BusRadarDetectionsObjectAttributes = Simulink.Bus; BusRadarDetectionsObjectAttributes.Description = ''; BusRadarDetectionsObjectAttributes.DataScope = 'Auto'; BusRadarDetectionsObjectAttributes.HeaderFile = ''; BusRadarDetectionsObjectAttributes.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素TargetIndex saveVarsTmp{1}(1, 1).Name = 'TargetIndex'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素SNR saveVarsTmp{1}(2, 1).Name = 'SNR'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; BusRadarDetectionsObjectAttributes.Elements = saveVarsTmp{1}; %创建总线BusRadar BusRadar = Simulink.Bus; BusRadar.Description = ''; BusRadar.DataScope = 'Auto'; BusRadar.HeaderFile = ''; BusRadar.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素NumDetections saveVarsTmp{1}(1, 1).Name = 'NumDetections'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素IsValidTime saveVarsTmp{1}(2, 1).Name = 'IsValidTime'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 1]; saveVarsTmp{1}(2, 1).DataType = 'Boolean'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建总线元素Detections saveVarsTmp{1}(3, 1).Name = 'Detections'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [50 1]; saveVarsTmp{1}(3, 1).DataType = 'Bus: BusRadarDetections'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; BusRadar.Elements = saveVarsTmp{1}; %创建总线BusRadarDetections BusRadarDetections = Simulink.Bus; BusRadarDetections.Description = ''; BusRadarDetections.DataScope = 'Auto'; BusRadarDetections.HeaderFile = ''; BusRadarDetections.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素Time saveVarsTmp{1}(1, 1).Name = 'Time'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素Measurement saveVarsTmp{1}(2, 1).Name = 'Measurement'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [6 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素MeasurementNoise saveVarsTmp{1}(3, 1).Name = 'MeasurementNoise'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [6 6]; saveVarsTmp{1}(3, 1).DataType = 'double'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; %创建元素SensorIndex saveVarsTmp{1}(4, 1).Name = 'SensorIndex'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [1 1]; saveVarsTmp{1}(4, 1).DataType = 'double'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; %创建元素ObjectClassID saveVarsTmp{1}(5, 1).Name = 'ObjectClassID'; saveVarsTmp{1}(5, 1).Complexity = 'real'; saveVarsTmp{1}(5, 1).Dimensions = [1 1]; saveVarsTmp{1}(5, 1).DataType = 'doubler'; saveVarsTmp{1}(5, 1).Min = []; saveVarsTmp{1}(5, 1).Max = []; saveVarsTmp{1}(5, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(5, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(5, 1).DocUnits = ''; saveVarsTmp{1}(5, 1).Description = ''; %创建总线元素MeasurementParameters saveVarsTmp{1}(6, 1).Name = 'MeasurementParameters'; saveVarsTmp{1}(6, 1).Complexity = 'real'; saveVarsTmp{1}(6, 1).Dimensions = [1 1]; saveVarsTmp{1}(6, 1).DataType = 'Bus: BusRadarDetectionsMeasurementParameters'; saveVarsTmp{1}(6, 1).Min = []; saveVarsTmp{1}(6, 1).Max = []; saveVarsTmp{1}(6, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(6, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(6, 1).DocUnits = ''; saveVarsTmp{1}(6, 1).Description = ''; %创建总线元素ObjectAttributes saveVarsTmp{1}(7, 1).Name = 'ObjectAttributes'; saveVarsTmp{1}(7, 1).Complexity = 'real'; saveVarsTmp{1}(7, 1).Dimensions = [1 1]; saveVarsTmp{1}(7, 1).DataType = 'Bus: BusRadarDetectionsObjectAttributes'; saveVarsTmp{1}(7, 1).Min = []; saveVarsTmp{1}(7, 1).Max = []; saveVarsTmp{1}(7, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(7, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(7, 1).DocUnits = ''; saveVarsTmp{1}(7, 1).Description = ''; BusRadarDetections.Elements = saveVarsTmp{1}; %创建总线BusRadarDetectionsMeasurementParameters BusRadarDetectionsMeasurementParameters = Simulink.Bus; BusRadarDetectionsMeasurementParameters.Description = ''; BusRadarDetectionsMeasurementParameters.DataScope = 'Auto'; BusRadarDetectionsMeasurementParameters.HeaderFile = ''; BusRadarDetectionsMeasurementParameters.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素Frame saveVarsTmp{1}(1, 1).Name = 'Frame'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'Enum: drivingCoordinateFrameType'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素OriginPosition saveVarsTmp{1}(2, 1).Name = 'OriginPosition'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [3 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素OriginVelocity saveVarsTmp{1}(3, 1).Name = 'OriginVelocity'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [3 1]; saveVarsTmp{1}(3, 1).DataType = 'double'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; %创建元素Orientation saveVarsTmp{1}(4, 1).Name = 'Orientation'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [3 3]; saveVarsTmp{1}(4, 1).DataType = 'double'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; %创建元素IsParentToChild saveVarsTmp{1}(5, 1).Name = 'IsParentToChild'; saveVarsTmp{1}(5, 1).Complexity = 'real'; saveVarsTmp{1}(5, 1).Dimensions = [1 1]; saveVarsTmp{1}(5, 1).DataType = 'boolean'; saveVarsTmp{1}(5, 1).Min = []; saveVarsTmp{1}(5, 1).Max = []; saveVarsTmp{1}(5, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(5, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(5, 1).DocUnits = ''; saveVarsTmp{1}(5, 1).Description = ''; %创建总线元素HasAzimuth saveVarsTmp{1}(6, 1).Name = 'HasAzimuth'; saveVarsTmp{1}(6, 1).Complexity = 'real'; saveVarsTmp{1}(6, 1).Dimensions = [1 1]; saveVarsTmp{1}(6, 1).DataType = 'boolean'; saveVarsTmp{1}(6, 1).Min = []; saveVarsTmp{1}(6, 1).Max = []; saveVarsTmp{1}(6, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(6, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(6, 1).DocUnits = ''; saveVarsTmp{1}(6, 1).Description = ''; %创建总线元素HasElevation saveVarsTmp{1}(7, 1).Name = 'HasElevation'; saveVarsTmp{1}(7, 1).Complexity = 'real'; saveVarsTmp{1}(7, 1).Dimensions = [1 1]; saveVarsTmp{1}(7, 1).DataType = 'boolean'; saveVarsTmp{1}(7, 1).Min = []; saveVarsTmp{1}(7, 1).Max = []; saveVarsTmp{1}(7, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(7, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(7, 1).DocUnits = ''; saveVarsTmp{1}(7, 1).Description = ''; %创建总线元素HasRange saveVarsTmp{1}(8, 1).Name = 'HasRange'; saveVarsTmp{1}(8, 1).Complexity = 'real'; saveVarsTmp{1}(8, 1).Dimensions = [1 1]; saveVarsTmp{1}(8, 1).DataType = 'boolean'; saveVarsTmp{1}(8, 1).Min = []; saveVarsTmp{1}(8, 1).Max = []; saveVarsTmp{1}(8, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(8, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(8, 1).DocUnits = ''; saveVarsTmp{1}(8, 1).Description = ''; %创建总线元素HasVelocity saveVarsTmp{1}(9, 1).Name = 'HasVelocity'; saveVarsTmp{1}(9, 1).Complexity = 'real'; saveVarsTmp{1}(9, 1).Dimensions = [1 1]; saveVarsTmp{1}(9, 1).DataType = 'boolean'; saveVarsTmp{1}(9, 1).Min = []; saveVarsTmp{1}(9, 1).Max = []; saveVarsTmp{1}(9, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(9, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(9, 1).DocUnits = ''; saveVarsTmp{1}(9, 1).Description = ''; BusRadarDetectionsMeasurementParameters.Elements = saveVarsTmp{1}; %创建总线BusVision BusVision = Simulink.Bus; BusVision.Description = ''; BusVision.DataScope = 'Auto'; BusVision.HeaderFile = ''; BusVision.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素NumDetections saveVarsTmp{1}(1, 1).Name = 'NumDetections'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素IsValidTime saveVarsTmp{1}(2, 1).Name = 'IsValidTime'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [1 1]; saveVarsTmp{1}(2, 1).DataType = 'boolean'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素Detections saveVarsTmp{1}(3, 1).Name = 'Detections'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [20 1]; saveVarsTmp{1}(3, 1).DataType = 'Bus: BusVisionDetections'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; BusVision.Elements = saveVarsTmp{1}; %创建总线BusVisionDetections BusVisionDetections = Simulink.Bus; BusVisionDetections.Description = ''; BusVisionDetections.DataScope = 'Auto'; BusVisionDetections.HeaderFile = ''; BusVisionDetections.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素Time saveVarsTmp{1}(1, 1).Name = 'Time'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素Measurement saveVarsTmp{1}(2, 1).Name = 'Measurement'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [6 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素MeasurementNoise saveVarsTmp{1}(3, 1).Name = 'MeasurementNoise'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [6 6]; saveVarsTmp{1}(3, 1).DataType = 'double'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; %创建元素SensorIndex saveVarsTmp{1}(4, 1).Name = 'SensorIndex'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [1 1]; saveVarsTmp{1}(4, 1).DataType = 'double'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; %创建元素ObjectClassID saveVarsTmp{1}(5, 1).Name = 'ObjectClassID'; saveVarsTmp{1}(5, 1).Complexity = 'real'; saveVarsTmp{1}(5, 1).Dimensions = [1 1]; saveVarsTmp{1}(5, 1).DataType = 'double'; saveVarsTmp{1}(5, 1).Min = []; saveVarsTmp{1}(5, 1).Max = []; saveVarsTmp{1}(5, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(5, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(5, 1).DocUnits = ''; saveVarsTmp{1}(5, 1).Description = ''; BusVisionDetections.Elements = saveVarsTmp{1}; %创建总线元素MeasurementParameters saveVarsTmp{1}(6, 1).Name = 'MeasurementParameters'; saveVarsTmp{1}(6, 1).Complexity = 'real'; saveVarsTmp{1}(6, 1).Dimensions = [1 1]; saveVarsTmp{1}(6, 1).DataType = 'Bus: BusVisionDetectionsMeasurementParameters'; saveVarsTmp{1}(6, 1).Min = []; saveVarsTmp{1}(6, 1).Max = []; saveVarsTmp{1}(6, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(6, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(6, 1).DocUnits = ''; saveVarsTmp{1}(6, 1).Description = ''; BusVisionDetections.Elements = saveVarsTmp{1}; %创建总线元素ObjectAttributes saveVarsTmp{1}(7, 1).Name = 'ObjectAttributes'; saveVarsTmp{1}(7, 1).Complexity = 'real'; saveVarsTmp{1}(7, 1).Dimensions = [1 1]; saveVarsTmp{1}(7, 1).DataType = 'Bus: BusVisionDetectionsObjectAttributes'; saveVarsTmp{1}(7, 1).Min = []; saveVarsTmp{1}(7, 1).Max = []; saveVarsTmp{1}(7, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(7, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(7, 1).DocUnits = ''; saveVarsTmp{1}(7, 1).Description = ''; BusVisionDetections.Elements = saveVarsTmp{1}; %创建总线BusVisionDetectionsMeasurementParameters BusVisionDetectionsMeasurementParameters = Simulink.Bus; BusVisionDetectionsMeasurementParameters.Description = ''; BusVisionDetectionsMeasurementParameters.DataScope = 'Auto'; BusVisionDetectionsMeasurementParameters.HeaderFile = ''; BusVisionDetectionsMeasurementParameters.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素Frame saveVarsTmp{1}(1, 1).Name = 'Frame'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'Enum: drivingCoordinateFrameType'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; %创建元素OriginPosition saveVarsTmp{1}(2, 1).Name = 'OriginPosition'; saveVarsTmp{1}(2, 1).Complexity = 'real'; saveVarsTmp{1}(2, 1).Dimensions = [3 1]; saveVarsTmp{1}(2, 1).DataType = 'double'; saveVarsTmp{1}(2, 1).Min = []; saveVarsTmp{1}(2, 1).Max = []; saveVarsTmp{1}(2, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(2, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(2, 1).DocUnits = ''; saveVarsTmp{1}(2, 1).Description = ''; %创建元素Orientation saveVarsTmp{1}(3, 1).Name = 'Orientation'; saveVarsTmp{1}(3, 1).Complexity = 'real'; saveVarsTmp{1}(3, 1).Dimensions = [3 3]; saveVarsTmp{1}(3, 1).DataType = 'double'; saveVarsTmp{1}(3, 1).Min = []; saveVarsTmp{1}(3, 1).Max = []; saveVarsTmp{1}(3, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(3, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(3, 1).DocUnits = ''; saveVarsTmp{1}(3, 1).Description = ''; %创建元素HasVelocity saveVarsTmp{1}(4, 1).Name = 'HasVelocity'; saveVarsTmp{1}(4, 1).Complexity = 'real'; saveVarsTmp{1}(4, 1).Dimensions = [1 1]; saveVarsTmp{1}(4, 1).DataType = 'boolean'; saveVarsTmp{1}(4, 1).Min = []; saveVarsTmp{1}(4, 1).Max = []; saveVarsTmp{1}(4, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(4, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(4, 1).DocUnits = ''; saveVarsTmp{1}(4, 1).Description = ''; BusVisionDetectionsMeasurementParameters.Elements = saveVarsTmp{1}; %创建总线BusVisionDetectionsObjectAttributes BusVisionDetectionsObjectAttributes = Simulink.Bus; BusVisionDetectionsObjectAttributes.Description = ''; BusVisionDetectionsObjectAttributes.DataScope = 'Auto'; BusVisionDetectionsObjectAttributes.HeaderFile = ''; BusVisionDetectionsObjectAttributes.Alignment = -1; saveVarsTmp{1} = Simulink.BusElement; %创建元素TargetIndex saveVarsTmp{1}(1, 1).Name = 'TargetIndex'; saveVarsTmp{1}(1, 1).Complexity = 'real'; saveVarsTmp{1}(1, 1).Dimensions = [1 1]; saveVarsTmp{1}(1, 1).DataType = 'double'; saveVarsTmp{1}(1, 1).Min = []; saveVarsTmp{1}(1, 1).Max = []; saveVarsTmp{1}(1, 1).DimensionsMode = 'Fixed'; saveVarsTmp{1}(1, 1).SamplingMode = 'Sample based'; saveVarsTmp{1}(1, 1).DocUnits = ''; saveVarsTmp{1}(1, 1).Description = ''; BusVisionDetectionsObjectAttributes.Elements = saveVarsTmp{1}; clear saveVarsTmp;
加速度变化曲线如下: