当前位置: 首页 > news >正文

自动驾驶---Motion Planning之构建SLT Driving Corridor

1 背景

        在上篇博客《自动驾驶---Motion Planning之Speed Boundary》中,主要介绍了Apollo中Speed Boundary的一些内容,可以构造ST图得到边界信息,最后结合粗糙的速度曲线和路径曲线,即可使用优化的方法求解得到最终的轨迹信息(s,s',s'',l,l',l'')。

        本篇博客笔者主要介绍近几年开始逐渐投入到量产中的方法:SLT同步构造。本质上与Apollo的方案有相似之处。

        本篇博客的主要参考文献为《Safe Trajectory Generation for Complex UrbanEnvironments Using Spatio-temporalSemantic Corridor》,香港科技大学大疆联合实验室为第一作者。

2 STSC介绍

        什么是STSC(论文中简称为SSC)呢?可以理解为:时空联合走廊。

        Spatio-Temporal Semantic Corridor(STSC)是一个在复杂城市环境中用于轨迹规划和导航的概念。它主要利用时空语义信息来生成一个安全可行的轨迹走廊,使得车辆可以在这个走廊中安全、有效地行驶。以下是关于STSC的详细介绍:

(1)概念

        STSC是一个在三维时空中的轨迹走廊,其中包含了语义信息,如道路标记、交通信号、行人、车辆等。这些语义信息有助于车辆更好地理解其周围环境,并做出合适的驾驶决策。

(2)生成过程

  • 种子生成:首先,根据车辆的前向预测模块生成一系列离散的点作为种子。
  • Cube膨胀:然后,以这些种子点为中心,通过cube膨胀的方式逐渐向外扩展,直到碰到障碍物或语义边界为止(cube的ST剖面构建如下图中的a-b-c-d的顺序,LT剖面的构建同理可得,细节可参考论文)。
  • 确定约束:在膨胀过程中,需要确定各种约束条件,如速度约束、停止线约束、变道时间约束等。这些约束条件确保了生成的轨迹既安全又可行。
  • 保留约束:在生成走廊的过程中,只保留硬约束(如速度约束)和无碰撞约束,而放松其他允许的最大余量。

0dc165d9869e4f79b14ac31c98ab58df.png

 构建Cube的代码如下(整体思路如上所述,也比较容易理解):

// 根据输入的轨迹点来构建cube
ErrorType SscMap::ConstructCorridorsUsingInitialTrajectories(GridMap3D *p_grid, const vec_E<vec_E<common::FsVehicle>> &trajs) {GetSemanticVoxelSet(p_grid);driving_corridor_vec_.clear();int trajs_num = trajs.size();if (trajs_num < 1) return kWrongStatus;// ~ Stage I: Get seedsvec_E<vec_E<Vec3i>> seeds_vec;for (int i = 0; i < trajs_num; ++i) {common::DrivingCorridor3D driving_corridor;vec_E<Vec3i> traj_seeds;int num_states = static_cast<int>(trajs[i].size());if (num_states > 1) {bool first_seed_determined = false;for (int k = 0; k < num_states; ++k) {std::array&
http://www.lryc.cn/news/319129.html

相关文章:

  • 本地文件包含漏洞利用
  • 【docker】docker的常用命令
  • jmeter实战
  • 面试官常问问题
  • 外包就干了2个月,技术退步明显....
  • 面向对象 汇总(详细内容见Day12—16)
  • 结构体联合体枚举和位段
  • 人类程序员真要失业?首位“AI软件工程师”亮相引爆科技圈
  • redis的过期策略以及内存淘汰机制
  • 华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)
  • 网络通信与网络协议
  • 【矩阵】240. 搜索二维矩阵 II【中等】
  • 详解uniapp的生命周期
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PluginComponent)
  • mysql笔记:15. 事务和锁
  • Learn OpenGL 15 面剔除
  • EndeavourOs(arch系)安装sunpinyin输入法(ibus) + 迅雷(xunlei-bin)
  • Spring Cache框架的介绍和使用
  • perl 用 XML::Parser 解析 XML文件,访问哈希
  • MATLAB中的矩阵和数组,它们之间有什么区别?
  • python爬虫实战——抖音
  • Day1-力扣刷题学习打卡
  • C语言的位操作与位字段
  • 应用实战|从头开始开发记账本1:如何获取BaaS服务
  • el-form v-for循环列表的表单如何校验
  • 笔记:《NCT全国青少年编程能力等级测试教程Python语言编程三级》
  • 地平线旭日x3派部署yolov5--全流程
  • 【Golang星辰图】Go语言云计算SDK全攻略:深入Go云存储SDK实践
  • 深入理解TCP:序列号、确认号和自动ACK的艺术
  • 家电工厂5G智能制造数字孪生可视化平台,推进家电工业数字化转型