How can I find the distance travelled by the actor at each Sample Time in Driving Scenario Designer?
3 次查看(过去 30 天)
显示 更早的评论
As I am new to matlab, its taking a while to get the hang of it. Below is the code in which I have added a egoCar and I want to get the distance travelled by the egoCar at each Sample Time until the car reaches its destination waypoint. As I'm a beginner can anyone explain the solution.PLEASE
function [scenario, egoCar] = createDrivingScenario()
scenario = drivingScenario('StopTime', 10);
roadCenters = [7.1 14.5 0;
31.2 3.1 0;
42.2 -19.5 0];
bankAngle = 1;
laneSpecification = lanespec(2, 'Width', 3.925);
road(scenario, roadCenters, bankAngle, 'Lanes', laneSpecification);
egoCar = vehicle(scenario, ...
'ClassID', 1, ...
'Position', [11.7 15 0]);
waypoints = [11.7 15 0;
20.3 12 0;
25.5 9.2 0;
29.5 6.2 0;
33.6 2.3 0;
37.7 -3.1 0;
40.2 -7.7 0;
42.6 -13.7 0];
speed = [28;32;35;27;38;32;30;30];
trajectory(egoCar, waypoints, speed);
rec = record(scenario);
rec(end).SimulationTime(1)
0 个评论
回答(1 个)
Rahul
2023-6-26
According to the information shared by you, a possible way to find the distance travelled by the car can be done using the velocity of the egoCar and leveraging the sample time to find the distance travelled at each time interval and take it's cumulative sum to get the total distance travelled.
Below is the change you can make to your code
function [scenario, egoCar] = createDrivingScenario()
scenario = drivingScenario('StopTime', 10);
roadCenters = [7.1 14.5 0;
31.2 3.1 0;
42.2 -19.5 0];
bankAngle = 1;
laneSpecification = lanespec(2, 'Width', 3.925);
road(scenario, roadCenters, bankAngle, 'Lanes', laneSpecification);
egoCar = vehicle(scenario, ...
'ClassID', 1, ...
'Position', [11.7 15 0]);
waypoints = [11.7 15 0;
20.3 12 0;
25.5 9.2 0;
29.5 6.2 0;
33.6 2.3 0;
37.7 -3.1 0;
40.2 -7.7 0;
42.6 -13.7 0];
speed = [28;32;35;27;38;32;30;30];
trajectory(egoCar, waypoints, speed);
rec = record(scenario);
simulationTime = [rec.SimulationTime];
distanceTraveled = zeros(size(simulationTime));
for i = 2:length(simulationTime)
dt = simulationTime(i) - simulationTime(i-1);
velocityMagnitude = norm(egoCar.Velocity);
distanceTraveled(i) = distanceTraveled(i-1) + velocityMagnitude * dt;
end
disp(distanceTraveled);
rec(end).SimulationTime(1)
The distanceTravelled array will have the distance travelled by the vehicle at each sample time.
Hope this solves your query.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Programmatic Scenario Authoring 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!