From 5cb2b3b2b38b4805e418796b369aec94fe99d5e6 Mon Sep 17 00:00:00 2001 From: Andrew Mourcos Date: Thu, 22 Nov 2018 19:01:26 -0500 Subject: [PATCH] Made new scenario 3.0 --- Scenario.mat | Bin 0 -> 16064 bytes ...UsingSyntheticRadarandVisionDataWorkshop.m | 93 +++++++--- generateSensorData.m | 162 ++++++++++++++++++ 3 files changed, 229 insertions(+), 26 deletions(-) create mode 100644 Scenario.mat create mode 100644 generateSensorData.m diff --git a/Scenario.mat b/Scenario.mat new file mode 100644 index 0000000000000000000000000000000000000000..3604f9dc4207211ef2f6c4e37d87bf635677137d GIT binary patch literal 16064 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

_AZPt1R^!oIS7VXbh3P2fd;SwoRMHtiylwyZB{a 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 L5mi<{m+b!ozvOX- literal 0 HcmV?d00001 diff --git a/SensorFusionUsingSyntheticRadarandVisionDataWorkshop.m b/SensorFusionUsingSyntheticRadarandVisionDataWorkshop.m index 560a288..578977f 100644 --- a/SensorFusionUsingSyntheticRadarandVisionDataWorkshop.m +++ b/SensorFusionUsingSyntheticRadarandVisionDataWorkshop.m @@ -2,28 +2,69 @@ scenario = drivingScenario; scenario.SampleTime = 0.01; -roadCenters = [0 0; 50 0; 100 0; 250 20; 500 40]; -road(scenario, roadCenters, 'lanes',lanespec(2)); - -% Create the ego vehicle that travels at 25 m/s along the road. Place the -% vehicle on the right lane by subtracting off half a lane width (1.8 m) -% from the centerline of the road. -egoCar = vehicle(scenario, 'ClassID', 1); -path(egoCar, roadCenters(2:end,:) - [0 1.8], 25); % On right lane - -% Add a car in front of the ego vehicle -leadCar = vehicle(scenario, 'ClassID', 1); -path(leadCar, [70 0; roadCenters(3:end,:)] - [0 1.8], 25); % On right lane - -% Add a car that travels at 35 m/s along the road and passes the ego vehicle -passingCar = vehicle(scenario, 'ClassID', 1); -waypoints = [0 -1.8; 50 1.8; 100 1.8; 250 21.8; 400 32.2; 500 38.2]; -path(passingCar, waypoints, 35); - -% Add a car behind the ego vehicle -chaseCar = vehicle(scenario, 'ClassID', 1); -path(chaseCar, [25 0; roadCenters(1:end,:)] - [0 1.8], 25); % On right lane - +roadCenters = [12.1 12.8 0; + 22.8 20.7 0; + 36.5 21.5 0; + 41.6 14.7 0; + 38.1 6.3 0; + 34 3.5 0; + 33.7 -18.2 0; + 12.5 -22.3 0; + 12.1 12.8 0]; +laneSpecification = lanespec(2, 'Width', 3.925); +road(scenario, roadCenters, 'Lanes', laneSpecification); + +% Add the ego car +egoCar = vehicle(scenario, ... + 'ClassID', 1, ... + 'Position', [30.2 20.6 0]); +waypoints = [30.2 20.6 0; + 31.5 20.3 0; + 38.6 17.5 0; + 39 10.6 0; + 34.6 6.3 0; + 30.3 2.5 0; + 29.9 -5.5 0; + 32.2 -16 0; + 29.2 -21.7 0; + 23.7 -23.5 0; + 17.2 -22.8 0; + 13 -20.4 0; + 9.2 -15.9 0; + 4.1 -14.1 0; + 2.3 -5.8 0; + 2.9 3.3 0; + 7.5 11.7 0; + 16.1 19.7 0; + 21.1 21.8 0; + 26.9 19.9 0; + 31.5 20.6 0]; +speed = 60; +trajectory(egoCar, waypoints, speed); + +% Add the non-ego actors +truck = vehicle(scenario, ... + 'ClassID', 2, ... + 'Length', 8.2, ... + 'Width', 2.5, ... + 'Height', 3.5, ... + 'Position', [27.1 -23.2 0]); +waypoints = [27.1 -23.2 0; + 17.5 -22.7 0; + 10.3 -18.2 0; + 6.1 -7.4 0; + 9.1 4.4 0; + 13.4 11.1 0; + 20.2 17.8 0; + 34.5 20.7 0; + 39.5 15.7 0; + 38.2 8.6 0; + 30.4 2.9 0; + 30.4 -9.4 0; + 32.2 -17.5 0; + 28.8 -21.7 0]; +speed = 22; +trajectory(truck, waypoints, speed); sensors = cell(8,1); % Front-facing long-range radar sensor at the center of the front bumper of the car. sensors{1} = radarDetectionGenerator('SensorIndex', 1, 'Height', 0.2, 'MaxRange', 174, ... @@ -35,13 +76,13 @@ % Rear-left-facing short-range radar sensor at the left rear wheel well of the car. sensors{3} = radarDetectionGenerator('SensorIndex', 3, 'Height', 0.2, 'Yaw', 120, ... - 'SensorLocation', [0, egoCar.Width/2], 'MaxRange', 30, 'ReferenceRange', 50, ... - 'FieldOfView', [90, 5], 'AzimuthResolution', 10, 'RangeResolution', 1.25); + 'SensorLocation', [0, egoCar.Width/2], 'MaxRange', 15, 'ReferenceRange', 50, ... + 'FieldOfView', [100, 5], 'AzimuthResolution', 10, 'RangeResolution', 1.25); % Rear-right-facing short-range radar sensor at the right rear wheel well of the car. sensors{4} = radarDetectionGenerator('SensorIndex', 4, 'Height', 0.2, 'Yaw', -120, ... - 'SensorLocation', [0, -egoCar.Width/2], 'MaxRange', 30, 'ReferenceRange', 50, ... - 'FieldOfView', [90, 5], 'AzimuthResolution', 10, 'RangeResolution', 1.25); + 'SensorLocation', [0, -egoCar.Width/2], 'MaxRange', 15, 'ReferenceRange', 50, ... + 'FieldOfView', [100, 5], 'AzimuthResolution', 10, 'RangeResolution', 1.25); % Front-left-facing short-range radar sensor at the left front wheel well of the car. sensors{5} = radarDetectionGenerator('SensorIndex', 5, 'Height', 0.2, 'Yaw', 60, ... diff --git a/generateSensorData.m b/generateSensorData.m new file mode 100644 index 0000000..356cd28 --- /dev/null +++ b/generateSensorData.m @@ -0,0 +1,162 @@ +function [allData, scenario, sensors] = generateSensorData() +%generateSensorData - Returns sensor detections +% allData = generateSensorData returns sensor detections in a structure +% with time for an internally defined scenario and sensor suite. +% +% [allData, scenario, sensors] = generateSensorData optionally returns +% the drivingScenario and detection generator objects. + +% Generated by MATLAB(R) 9.5 and Automated Driving System Toolbox 1.3. +% Generated on: 22-Nov-2018 18:51:15 + +% Create the drivingScenario object and ego car +[scenario, egoCar] = createDrivingScenario; + +% Create all the sensors +[sensors, numSensors] = createSensors(scenario); + +allData = struct('Time', {}, 'ActorPoses', {}, 'ObjectDetections', {}, 'LaneDetections', {}); +running = true; +while running + + % Generate the target poses of all actors relative to the ego car + poses = targetPoses(egoCar); + time = scenario.SimulationTime; + + objectDetections = {}; + laneDetections = []; + isValidTime = false(1, numSensors); + + % Generate detections for each sensor + for sensorIndex = 1:numSensors + [objectDets, numObjects, isValidTime(sensorIndex)] = sensors{sensorIndex}(poses, time); + objectDetections = [objectDetections; objectDets(1:numObjects)]; %#ok + 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}); %#ok + 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 + +% Assign into each sensor the physical and radar profiles for all actors +profiles = actorProfiles(scenario); +sensors{1} = radarDetectionGenerator('SensorIndex', 1, ... + 'SensorLocation', [2.8 -0.9], ... + 'Yaw', -90, ... + 'MaxRange', 15, ... + 'FieldOfView', [120 5], ... + 'ActorProfiles', profiles); +sensors{2} = visionDetectionGenerator('SensorIndex', 2, ... + 'SensorLocation', [3.7 0], ... + 'MaxRange', 100, ... + 'DetectorOutput', 'Objects only', ... + 'Intrinsics', cameraIntrinsics([1814.81018227767 1814.81018227767],[320 240],[480 640]), ... + 'ActorProfiles', profiles); +sensors{3} = radarDetectionGenerator('SensorIndex', 3, ... + 'SensorLocation', [2.8 0.9], ... + 'Yaw', 90, ... + 'MaxRange', 15, ... + 'FieldOfView', [120 5], ... + 'ActorProfiles', profiles); +numSensors = 3; + +function [scenario, egoCar] = createDrivingScenario +% createDrivingScenario Returns the drivingScenario defined in the Designer + +% Construct a drivingScenario object. +scenario = drivingScenario; + +% Add all road segments +roadCenters = [12.1 12.8 0; + 22.8 20.7 0; + 36.5 21.5 0; + 41.6 14.7 0; + 38.1 6.3 0; + 34 3.5 0; + 33.7 -18.2 0; + 12.5 -22.3 0; + 12.1 12.8 0]; +laneSpecification = lanespec(2, 'Width', 3.925); +road(scenario, roadCenters, 'Lanes', laneSpecification); + +% Add the ego car +egoCar = vehicle(scenario, ... + 'ClassID', 1, ... + 'Position', [30.2 20.6 0]); +waypoints = [30.2 20.6 0; + 31.5 20.3 0; + 38.6 17.5 0; + 39 10.6 0; + 34.6 6.3 0; + 30.3 2.5 0; + 29.9 -5.5 0; + 32.2 -16 0; + 29.2 -21.7 0; + 23.7 -23.5 0; + 17.2 -22.8 0; + 13 -20.4 0; + 9.2 -15.9 0; + 4.1 -14.1 0; + 2.3 -5.8 0; + 2.9 3.3 0; + 7.5 11.7 0; + 16.1 19.7 0; + 21.1 21.8 0; + 26.9 19.9 0; + 31.5 20.6 0]; +speed = 60; +trajectory(egoCar, waypoints, speed); + +% Add the non-ego actors +truck = vehicle(scenario, ... + 'ClassID', 2, ... + 'Length', 8.2, ... + 'Width', 2.5, ... + 'Height', 3.5, ... + 'Position', [27.1 -23.2 0]); +waypoints = [27.1 -23.2 0; + 17.5 -22.7 0; + 10.3 -18.2 0; + 6.1 -7.4 0; + 9.1 4.4 0; + 13.4 11.1 0; + 20.2 17.8 0; + 34.5 20.7 0; + 39.5 15.7 0; + 38.2 8.6 0; + 30.4 2.9 0; + 30.4 -9.4 0; + 32.2 -17.5 0; + 28.8 -21.7 0]; +speed = 20; +trajectory(truck, waypoints, speed); +