matlab自动驾驶工具箱场景搭建与位置数据提取

本文详细介绍了如何使用Matlab进行基本绘图,如SinFunction和时间序列的生成,以及如何利用AutonomousDrivingToolbox搭建和导出自动驾驶场景。重点强调了时间序列处理和工具箱的场景设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. matlab基本绘图脚本

在做自动驾驶算法开发及测试时,需要用到matlab进行绘图,下面是一个简单的matlab绘图脚本,用于对图像进行绘图:

% 创建一个新的图形窗口
figure

% 将图形窗口的颜色设置为白色
set(gcf, 'Color', 'white')

% 绘制图形
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y)

% 添加标题和标签
title('Sin Function')
xlabel('X')
ylabel('Y')

结果如下:

其次,由于车辆轨迹中包含有时间信息,因此我们经常需要处理大量的时间序列数据。时间序列的创建与使用非常重要,下面是一个时间序列的生成方法:

% 创建时间序列
t = 1:0.1:10;

% 创建对应的函数值序列
y = sin(t);

% 绘制图形
plot(t, y);
set(gcf,'Color','w')
xlabel('时间');
ylabel('函数值');
title('sin(t)函数图像');

结果如下:

需要留意的是,轨迹和常规绘图方法将在后续大量使用,必须掌握。

2.matlab自动驾驶工具箱场景搭建

本小节为本专栏开篇,先介绍对matlab自动驾驶工具箱的基本使用方法,包括场景搭建,导出matlab脚本以及场景修改:

1.创建一个基本的自动驾驶场景:打开APP→Driving Scenario Design工具箱

2.创建一个基本的场景:

设置道路和车辆如下:

在左侧可更改车道路的长度,车道线,车道宽度等。

对车辆的设置如下,点击Actor即可放置车辆:

设置车辆轨迹,点击ADD新增车辆轨迹:

点击运行即可播放车辆动画:

3.实际运用

对自动驾驶工具箱而言,有两种方式,一种是直接直接将数据导入到workspace中进行储存使用,此方法使用时一般需将储存的数据转换为时间序列,故前文要求的转换方法必须掌握,此外,可将传感器数据导入到simulink模块中,本章节只介绍第一种方法,在创立好的工程中点击export将建立的场景导出为matlab function:

导出的matlab脚本如下:

function [scenario, egoVehicle] = createDrivingScenario()
% createDrivingScenario Returns the drivingScenario defined in the Designer

% Generated by MATLAB(R) 9.14 (R2023a) and Automated Driving Toolbox 3.7 (R2023a).
% Generated on: 18-Jan-2024 00:58:11

% Construct a drivingScenario object.
scenario = drivingScenario;%创建场景

% Add all road segments
roadCenters = [-0.2 0.3 0;%设置车道属性
    50.2 0.6 0];
road(scenario, roadCenters, 'Name', 'Road');%创建场景中的车道线

% Add the ego vehicle
egoVehicle = vehicle(scenario, ...
    'ClassID', 1, ...
    'Position', [1.8 -1.3 0], ...
    'Mesh', driving.scenario.carMesh, ...
    'Name', 'Car');%添加主车

% Add the non-ego actors
car1 = vehicle(scenario, ...
    'ClassID', 1, ...
    'Position', [9 2 0], ...
    'Mesh', driving.scenario.carMesh, ...
    'Name', 'Car1');
waypoints = [9 2 0;
    15.2 0.3 0;
    19.4 -0.8 0;
    24.1 -0.7 0;
    33.1 -1.1 0;
    50 -1.3 0]%添加从车
speed = [30;30;30;30;30;30];%添加车速
trajectory(car1, waypoints, speed);%添加轨迹
plot(scenario)%画场景

值得注意的是,我们导出的为matlab function,若去掉第一行的创建函数,也是可行的,只是在生生成的mat文件上略有不同,可直接使用导出的脚本进行场景搭建。

生成的.mat文件结构如下:

其中SampleTime为采样时间,Actors为我们放置的车辆配置参数,点击打开:

对需要使用的变量用点(.)进行引用即可;

下面是在matlab环境中运行并保存车辆位置点的一个示例:


scenario = drivingScenario;%创建场景
scenario.SampleTime = 0.1;    % 采样时间
% Add all road segments
roadCenters = [-0.2 0.3 0;%设置车道属性
    50.2 0.6 0];
road(scenario, roadCenters, 'Name', 'Road');%创建场景中的车道线

% Add the ego vehicle
egoVehicle = vehicle(scenario, ...
    'ClassID', 1, ...
    'Position', [1.8 -1.3 0], ...
    'Mesh', driving.scenario.carMesh, ...
    'Name', 'Car');%添加主车

% Add the non-ego actors
car1 = vehicle(scenario, ...
    'ClassID', 1, ...
    'Position', [9 2 0], ...
    'Mesh', driving.scenario.carMesh, ...
    'Name', 'Car1');
waypoints = [9 2 0;
    15.2 0.3 0;
    19.4 -0.8 0;
    24.1 -0.7 0;
    33.1 -1.1 0;
    50 -1.3 0]%添加从车
speed = [30;30;30;30;30;30];%添加车速
trajectory(car1, waypoints, speed);%添加轨迹
i=1;%初始化i
 while advance(scenario)%启动仿真
    ActorPositon(i,1:2) = scenario.Actors(1,2).Position(1,1:2);%创建矩阵以存放位置
    i=i+1;
 end
 disp(i);%显示循环后变量i的值,便于调试
 time=0.1*(i-1);%场景跑完花费的时间
 disp(time)
 t = 0.1:0.1:time;%分步长创建时间序列的时间区间
 disp(t)
ActorPos = timeseries(ActorPositon(:,1:2),t);%将位置信息转换为时间序列
plot(scenario)%画场景
xlabel('时间');
ylabel('位置')
plot(t,ActorPositon(:,1),'r');
hold on
plot(t,ActorPositon(:,2),'b');
legend('纵坐标', '横坐标');
set(gcf,'Color','w')

生成的时间序列结果如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值