关于lattice planner

使用编程创建驾驶场景。

1.使用Driving scenario Designer 交互方式创建驾驶场景 

2.导出matalb function 

3.修正这个函数,创建原始场景的变体。

4.调用这个函数,生成drivingScenario object。

5.在simulink中仿真,导入这个objcet ,使用Scenario Reader 模块

在APP中创建场景。

drivingScenarioDesigner('LeftTurnScenarioNoSensors.mat')

点击导出MATLAB Function

 生成了下图的函数

 

 

 

 

function [scenario, egoVehicle] = LeftTurnScenarioNoSensors()
% createDrivingScenario Returns the drivingScenario defined in the Designer% Generated by MATLAB(R) 9.13 (R2022b) and Automated Driving Toolbox 3.6 (R2022b).
% Generated on: 21-Aug-2023 22:30:51% Construct a drivingScenario object.构建结构体对象
scenario = drivingScenario;% Add all road segments
roadCenters = [150 24.2 0;134.3 24.7 0;54 24.2 0];
laneSpecification = lanespec([2 2]);
road(scenario, roadCenters, 'Lanes', laneSpecification, 'Name', 'Road');roadCenters = [105 75 0;105.2 54.5 0;105 -20 0];
laneSpecification = lanespec([2 2]);
road(scenario, roadCenters, 'Lanes', laneSpecification, 'Name', 'Road1');% Add the ego vehicle
egoVehicle = vehicle(scenario, ...'ClassID', 1, ...'Position', [56 19 0], ...% 初始位置'Mesh', driving.scenario.carMesh, ...% 车的形状'Name', 'egoVehicle');
waypoints = [56 19 0;135 19 0];
speed = 10;
smoothTrajectory(egoVehicle, waypoints, speed);% Add the non-ego actors
otherVehicle = vehicle(scenario, ...'ClassID', 1, ...'Position', [103 73 0], ...'Mesh', driving.scenario.carMesh, ...'Name', 'otherVehicle');
waypoints = [103 73 0;102.8 34.3 0;114.3 22.4 0;148.1 22.4 0];
speed = [11;10;10;11];
yaw =  [-90;-90;0;0];
smoothTrajectory(otherVehicle, waypoints, speed, 'Yaw', yaw);

运行这个函数会返回道路场景、车以及车上传感器所采集的信息。

修改函数,创建场景变体。

上边代码相当于给你个代码壳子,你可以往里填充。一个常见的变体是测试主车以不同的速度行驶。在上边代码中,ego车的车速是10 m/s。为了生成不同的速度,你可以在上述代码中添加接口。

(1)添加输入变量。

 (2)在平滑轨迹中,替换了speed.

 (3)还可以考虑

修改路和车道的参数。修改轨迹或者车辆初始位置;修改车辆参数。

(4)调用你修改的这个函数

 

 可以看到确实是20m/s

 没修改之前的场景 (10m/s)VS 修改之后的场景(20m/s)

主车跟左拐车没有相遇。

 注意,如果你的主车有传感器,你要使用这个命令去打开app

drivingScenarioDesigner(scenario,sensors).

注意更改classId ,car是1,truck是2。

在simulink中导入场景

使用Scenario Reader 模块。

关于Simulink中如何使用,

 可以通过一个简单的例子来学会。

首先输入Scenario Reader,依次选择

 最后加个小wifi

 炫酷的鸟瞰图。这个场景过于简单,所以不炫酷。

 回到lattice

首先运行的是这个函数。 

 首先看一下车道中心线

 主车和五辆车

function [scenario, egoVehicle] = drivingScenarioTrafficExample()
% createDrivingScenario Returns the drivingScenario defined in the Designer% Generated by MATLAB(R) 9.9 (R2020b) and Automated Driving Toolbox 3.2 (R2020b).
% Generated on: 28-Apr-2020 15:04:44% Construct a drivingScenario object.
scenario = drivingScenario;% 创建一个drivingScenario对象% Add all road segments
roadCenters = [0 50 0;150 50 0;300 75 0;310 75 0;400 0 0;300 -50 0;290 -50 0;0 -50 0;0 -50 0];
laneSpecification = lanespec(4);% 四个车道
road(scenario, roadCenters, 'Lanes', laneSpecification, 'Name', 'Road');% Add the ego vehicle
egoVehicle = vehicle(scenario, ...'ClassID', 1, ...'Position', [10.7 51.4 0], ...'Name', 'Car');% Add the non-ego actors
car1 = vehicle(scenario, ...'ClassID', 1, ...'Position', [34.7 49.3 0], ...'Name', 'Car1');
waypoints = [34.7 49.3 0;60.1 48.2 0;84.2 47.9 0;119 49.3 0;148.1 51.4 0;189.6 58.7 0;230.6 68 0;272.6 74.7 0;301.4 77.5 0;316.7 76.8 0;332.4 75.2 0;348.9 72.2 0;366.2 65.1 0;379.6 55.6 0];
speed = [10;10;10;10;10;10;10;10;10;10;10;10;10;10];
trajectory(car1, waypoints, speed);car2 = vehicle(scenario, ...'ClassID', 1, ...'Position', [17.6 46.7 0], ...'Name', 'Car2');
waypoints = [17.6 46.7 0;43.4 45.5 0;71.3 43.8 0;102.3 43.5 0;123.5 45.5 0;143.6 47.4 0;162.4 50 0;198.5 61 0;241.1 70.1 0;272.3 74.1 0;292 76.6 0;312.8 77.2 0;350.3 75.2 0;362.5 70.4 0;375.9 63.3 0;390.7 49.9 0;401.3 33 0];
speed = [9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9];
trajectory(car2, waypoints, speed);car3 = vehicle(scenario, ...'ClassID', 1, ...'Position', [62.6 51.9 0], ...'Name', 'Car3');
waypoints = [62.6 51.9 0;87.4 51.3 0;117.7 52.2 0;147.6 55 0;174.9 59.7 0;203.3 65.8 0;265 69.7 0;288.3 73.1 0;314.5 73.1 0;334.9 70.8 0;360 59.9 0];
speed = [6;6;6;6;6;6;6;6;6;6;6];
trajectory(car3, waypoints, speed);car4 = vehicle(scenario, ...'ClassID', 1, ...'Position', [101.7 41.1 0], ...'Name', 'Car4');
waypoints = [101.7 41.1 0;124.6 42 0;148.5 43.9 0;171.9 48.2 0;197.1 52.8 0;222.3 58.5 0;252.4 64.4 0;281.4 68.5 0;307.7 69.5 0;329.9 68.2 0;352.7 62.8 0];
speed = [7;7;7;7;7;7;7;7;7;7;7];
trajectory(car4, waypoints, speed);car5 = vehicle(scenario, ...'ClassID', 1, ...'Position', [251.3 75.6 0], ...'Name', 'Car5');
waypoints = [251.3 75.6 0;255.7 76.7 0];
speed = [0.01;0.01];
trajectory(car5, waypoints, speed);

车辆的参数

carLen   = 4.7; % in meters
carWidth = 1.8; % in meters
rearAxleRatio = .25;

画出这个场景

 构造参考路径

结构体,referencePathFrenet。这个结构题可以给出,沿着路径长度的状态。

找到匹配点,提供坐标系转换。

waypoints = [0 50; 150 50; 300 75; 310 75; 400 0; 300 -50; 290 -50; 0 -50]; % in meters
refPath = referencePathFrenet(waypoints);

这两个代码生成了这个结构体

 这六列是什么(x,y,)

 使用show函数show出来,这里就不求甚解了。

ax = show(refPath);
axis(ax,'equal'); xlabel('X'); ylabel('Y');

 详细阅读 referencePathFrenet 

给wayPoints (x,y)或者(x,y,theta)--》平滑修补成连续曲线。

 查询路径上最接近全局状态的点;插值;坐标系转换‘

 全局状态是[x,y,theta,kappa,speed,accel]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv-手势识别

# HandTrackingModule.py import cv2 import mediapipe as mpclass HandDetector:"""使用mediapipe库查找手。导出地标像素格式。添加了额外的功能。如查找方式,许多手指向上或两个手指之间的距离。而且提供找到的手的边界框信息。"""…

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析

如何禁止安装某软件。这里以好课帮app为例做个演示步骤说明。这个博文的目的在于可以阻止他人用手机安装你指定的一些软件。 💔💔💔首先手机上安装好课帮这个软件。打开应用详情找到包名。或者使用第三方工具打开获取这个软件的包名。记住是…

Leetcode74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 class…

opencv-gpu版本编译(添加java支持,可选)实现硬解码

目录 opencv gpu版本编译,实现硬解码,加速rtsp视频流读取1、准备文件2、复制 NVCUVID 头文件到 cuda 安装目录 include3、安装相关依赖4、 执行cmake5、编译安装6、测试 opencv gpu版本编译,实现硬解码,加速rtsp视频流读取 前置条…

html动态爱心代码【一】(附源码)

前言 七夕马上就要到了,为了帮助大家高效表白,下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐,可用于520,情人节,生日,表白等场景,可直接使用。 效果演示 文案修改 var loverNam…

Redis系列(四):哨兵机制详解

首发博客地址 https://blog.zysicyj.top/ 前面我们说过,redis采用了读写分离的方式实现高可靠。后面我们说了,为了防止主节点压力过大,优化成了主-从-从模式 思考一个问题,主节点此时挂了怎么办 这里主从模式下涉及到的几个问题&a…

快速排序 | C++|时间空间复杂度

1.概念 快速排序(QuickSort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 2.算法思想描述 1.进行一次划分&…

深入理解JMM和并发三大特性

并发和并行 并发和并行的目的都是为了使CPU的使用率最大化,这两个概念也是我们容易混淆的。 并行(Parallel) 并行是指在同一时刻,有多条指令在多个处理器上同时执行,因为并行要求程序能同时执行多个操作&#xff0c…

python连接PostgreSQL 数据库

执行如下命令安装 pip3 install psycopg2 python代码 Author: tkhywang 2810248865qq.com Date: 2023-08-21 11:42:17 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-08-21 11:51:56 FilePath: \PythonProject02\PostgreSQL 数据库.py Description: 这是默认设置…

C#系统锁屏事件例子 - 开源研究系列文章

今天有个网友问了个关于操作系统锁屏的问题。 我们知道,操作系统是基于消息和事件处理的,所以我们只要找到该操作系统锁屏和解屏的那个事件,然后在事件里进行处理即可。下面是例子介绍。 1、 项目目录; 下面是项目目录&#xff1a…

jQuery Editable Select可搜索下拉选项框

前言 可搜索的下拉选项框 源码地址:https://github.com/indrimuska/jquery-editable-select 可搜索的下拉选项框 引入依赖 <script src"//code.jquery.com/jquery-1.12.4.min.js"></script> <script src"//rawgithub.com/indrimuska/jquery…

漏洞指北-VulFocus靶场专栏-初级02

漏洞指北-VulFocus靶场02-初级 初级005 &#x1f338;phpunit 远程代码执行 (CVE-2017-9841)&#x1f338;step1&#xff1a;进入漏洞页step2&#xff1a; burpsuite 抓包,等待请求页&#xff0c;获得flag 初级006 &#x1f338;splunk 信息泄露 &#xff08;CVE-2018-11409&am…

工业类LMQ61460AASRJRR,汽车类LMQ61460AFSQRJRRQ1、LMQ61460AASQRJRRQ1 6A、降压转换器简化原理图

一、LMQ61460AASRJRR器件概述&#xff1a; LMQ61460 是一款具有集成旁路电容器的高性能直流/直流同步降压转换器。该器件具有集成式高侧和低侧MOSFET&#xff0c;能够在 3.0V 至 36V 的宽输入电压范围内提供高达 6A 的输出电流&#xff1b;可耐受 42V 电压&#xff0c;简化了输…

juc概述和Lock接口

目录 一、什么是JUC 1、JUC概述 2、进程与线程 3、线程的状态 4、wait/sleep 的区别 5、并发与并行 6、管程 7、用户线程和守护线程 二、Lock接口 1、Synchronized 使用synchronized实现售票案例 使用synchronized实现增减变量操作 2、什么是 Lock 买票例子使用lo…

[ MySQL ] — 复合查询和内外连接的使用

目录 复合查询 多表查询 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 union union all 表的内连接和外连接 内连接 外连接 左外连接 右外连接 复合查询 多表查询 实际开发中往往数据来自不同的表&#xff0c;所以需要多表查…

解决运行在微信小程序中报[ app.json 文件内容错误] app.json: app.json 未找到(env: Windows,mp,1.05.2204

找到project.config.json文件夹 添加 "miniprogramRoot": "unpackage/dist/dev/mp-weixin/", 即可

Docker之Compose

目录 前言 一、Docker-compose概述 1.1Docker Swarm与Docker Compose 1.1.1Docker Swarm 1.1.2Docker Compose 1.1.2.1 三层容器 ​编辑 二、YAML 2.1YAML概述 2.2注意事项 2.3Docker Compose 环境安装 2.3.1下载 三、Docker-Compose配置常用字段 四、Docker-com…

Python学习笔记_实战篇(二)_django多条件筛选搜索

多条件搜索在很多网站上都有用到&#xff0c;比如京东&#xff0c;淘宝&#xff0c;51cto&#xff0c;等等好多购物教育网站上都有&#xff0c;当然网上也有很多开源的比楼主写的好的多了去了&#xff0c;仅供参考&#xff0c;哈哈 先来一张效果图吧&#xff0c;不然幻想不出来…

06 mysql all查询 和 主键查询 和 非索引列查询

前言 本文主要调试一下 mysql 的如下两种查询语句 我们也来深入的看一下, 究竟如下两个普通的查询, mysql 做了什么事情 1. select * from user where id 991; 2. select * from user; 3. select * from user where name jerry991; 环境介绍 测试表 user schema 如下…

机器学习之数据清洗

一、介绍 数据清洗是机器学习中的一个重要步骤&#xff0c;它涉及对原始数据进行预处理和修复&#xff0c;以使数据适用于机器学习算法的训练和分析。数据清洗的目标是处理数据中的噪声、缺失值、异常值和不一致性等问题&#xff0c;以提高数据的质量和准确性。 二、方法 处理…