自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 开放空间规划算法

但是经过分析,这⾥⾯约束有⼀个⼆次函数,因此使⽤⾮线性求解器求解,为了提⾼求解效率,Apollo进⾏了⼀个优化,就是把⼆次约束放到约束函数⾥⾯成为软约束, 这样就变成⼆次规划问题,使⽤OSQP求解。从起点到终点可以以⼀种固定的圆弧和直线连接起来的,有48种线型给出了每种线的解析解,C代表圆弧,|代表改变⽅向。C|C|C代表向左然后这种⽅法没法考虑障碍物的碰撞。这样得到的路径平滑了很多,但是栅格点不适⽤了,可能⼀个栅格点有多个点所以A*算法的栅格点搜索不适⽤了,从⼆维的xy扩展到xy 航向⾓theta。

2023-08-20 09:14:41 1330

原创 路径规划算法

路径规划中,每⼀帧都规划,如果感知识别出来的障碍物bounding box不稳定,每⼀帧也会随着bounding box的改变⽽上下跳动,带来的问题就是⾏驶中的不稳定,路径根据障碍物上下跳动。所以Apollo引⼊路径重⽤决策,如果上⼀帧路径没和障碍物发⽣碰撞,这⼀帧路径直接复⽤上⼀帧路径,不会再进⾏接下来的路径规划,直接跳到速度规划的部分。根据路径对障碍物赋予决策,⽐如最后是向左绕⾏的路径,会对绕⾏障碍物进⾏决策,就产⽣⼀个停⽌的决策,这个决策主要是对速度规划使⽤。条件满⾜后会产⽣向左或者向右的决策。

2023-08-20 09:11:52 1643

原创 参考线平滑算法

以及是不是强约束,如果是强约束需要满⾜裕度限制,⾸尾两个点都要满⾜,中间点不⽤。FemPos采⽤,和向量模的平⽅来表⽰,假设有三个点P0,P1以及P2,求出P1P0和P1P2的和向量P1PS,然后计算P1PS的模,如果模⽐较⼩说明⽐较平滑。考虑曲率约束为⾮线性的,使⽤Ipopt求解,不考虑曲率约束则为线性的,使⽤OSQP 求解。此外还需要考虑曲率约束,Apollo通过近似假设计算,找到相邻的三个点,求出外接圆,上⾯的约束是软约束,还需要添加硬约束,也就是横纵向裕度,添加box对参考点进。

2023-08-20 09:10:32 239

原创 第一节 决策技术详解——ApolloPnc专项课

第三层是轨迹,轨迹是决策规划模块最终输出结果,其依据就是第⼆层的结果,同⼀时刻可能有多个参考线,⽐如变道的时候,⾃⾝⻋道和⽬标⻋道都有参考线,但是在决策的时候,Planning模块会决定⻋辆最终要⾛那⼀条路线。这样可以节省不必要的算⼒。因为我们的参考线是⾼精地图来的,⽽这个⾼精地图⼀般是⼈为采集的,⼀般都是不平滑的离散的点,如果直接拿来当参考线,可能导致规划轨迹不平滑,导致⻋辆具体。可以是⼀个静态的⼗字路⼝,也可以是⽆⼈⻋完成的动作,⽐如借道避让针对不同的⾃动驾驶场景,⽐如物流⻋,taxi也是不⼀样的。

2023-08-20 09:07:32 442

原创 Apollo公开课Pnc专项笔记

此外参考线也可以表达环道需求,如果需要换道,生成一个目标参考线,如图所示,目标参考线的优先级大于当前参考路径,表示环道需求。为了提高准确性,输入了所有的信息,包括Routing,道路结构交通信息以及感知的障碍物,以及预测信息。如果需要换道,再判断能不能换道,如果可以换道,就会产生一个换道的路径边界,否则产生道内边界。根据场景,确定Stage,每个Stage都包含了路径的决策,规划。然后将任务分为两种,一种是有车道线的规划,一种是没有车道线的规划。首先是参考路径 ,也叫参考线,很重要。

2023-08-14 22:46:52 732 1

原创 自动驾驶决策规划算法第二章——Apollo EM Planner实践篇

11

2022-10-10 14:14:32 3945 2

原创 自动驾驶决策规划算法第二章——Apollo EM Planner理论篇

111

2022-09-28 09:11:00 6179 4

原创 【自动驾驶】【零基础】基础自动驾驶控制算法笔记

111

2022-09-13 09:25:14 7316 5

原创 自动驾驶决策规划算法第一章

自动驾驶6个级别

2022-08-25 08:33:06 4173

原创 模型预测控制MPC在运动规划Motion Planning中的应用

MPC简介

2022-08-18 09:54:26 1565 3

原创 FAST PLANNER代码阅读笔记

111

2022-08-18 09:52:22 2006 2

原创 基于梯度的轨迹优化grad_traj_optimization阅读笔记

aaa

2022-08-01 11:42:04 1441

原创 LC中的背包问题

1、01背包lc416. 分割等和子集class Solution {public: bool canPartition(vector<int>& nums) { int sum = 0; for(int i = 0 ; i < nums.size(); i++) sum += nums[i]; if(sum % 2 == 1) return false; /* vector&l

2022-04-26 00:16:50 253

原创 动态规划-状态机-古票系列

1、lc121. 买卖股票的最佳时机class Solution {public: int maxProfit(vector<int>& prices) { vector<vector<int>> f(prices.size(),vector<int>(2)); f[0][1] = -prices[0]; for(int i = 1;i < prices.size(); i...

2022-04-19 23:53:50 171

原创 经典背包问题

1、01背包问题暴力做法#include <iostream>using namespace std;const int N = 1100;int n,m;int v[N],w[N];int f[N][N];int main(){ cin>>n>>m; // n代表4个物品,m代表背包容量是5 for(int i = 1; i <= n; i ++) cin>>v[i]>>w[i]; .

2022-04-07 20:07:09 328

原创 路径最短算法

1、路径权值为正数使用dijkstra算法,如果是稠密图,即边长数量比较少,那么用朴素dijkstra算法,时间复杂度O(mn),如果是稀疏图,用堆优化dijkstra算法(1)朴素dijkstra算法#include <iostream>#include <cstring>using namespace std;const int N = 510;int n,m,g[N][N];int dist[N];bool st[N];int dikjst

2022-04-06 16:45:22 84

原创 单调栈和单调队列

单调栈#include <iostream>using namespace std;const int N = 1e5+10;int n;int stk[N],tt;int main(){ cin.tie(0); cin>>n; for(int i = 0; i < n; i++) { int x; cin>>x; while(tt && x &.

2022-04-02 14:52:04 218

原创 位运算常用

一、求一个正数二进制第k位数字是什么比如 x=10 的二进制为1010,求其第2位的数字,先右移2位,然后再&1,即可得到该位数字即右移k位后的数字是 x>>k&1例:求一个正数的二进制表示比如10,求它的二进制表示int x = 10;for(int i = 3;i>0;i--) cout<< (x>>i&1);二、Lowbit:求一个数二进制从右往左第一个1的位置举例:10的二进制为1010,low

2022-04-01 15:03:47 388

原创 快排+归并排序模板,堆排序

1、快排 #include <iostream>#include<algorithm>const int N = 1e6 + 10;int f[N];using namespace std;void quicksort(int q[],int l,int r){ if(l>=r) return; int x = q[(l+r)/2]; //这里选择的partition对排序速度影响很大 int i = l-1; ...

2022-03-31 20:39:49 449

原创 二分查找关键

两种情况关键:确保划分完的区间内部一定有答案举例:数的范围#include <iostream>using namespace std;const int N = 1e6 +10;int n,m;int f[N];int main(){ cin>>n>>m; for(int i = 0; i < n; i++) cin>>f[i]; while(m--){ int x;

2022-03-31 20:37:36 61

原创 dp-最长上升子序列

LIS问题:longest increasing sequenceLeetcode300class Solution {public: int lengthOfLIS(vector<int>& nums) { if(nums.size() == 1) return 1; vector<int> f(nums.size(),1); for(int i = 0;i<nums.size();i++){

2022-03-29 21:36:07 74

原创 三个dp问题

1、数字三角形#include <iostream>#include <algorithm>using namespace std;const int N = 510;int w[N][N];int f[N][N];int m,n;int main(){ int T; cin>>T; for(int i = 1;i<=T;i++) for(int j = 1;j<=i;j++) ..

2022-03-29 18:20:59 63

原创 C++常用容器

容器简介容器的概念:一种特殊的类型,其对象可以放置其它类型的对象(元素) – 需要支持的操作:对象的添加、删除、索引、遍历 – 有多种算法可以实现容器,每种方法各有利弊容器分类 – 序列容器:其中的对象有序排列,使用整数值进行索引 – 关联容器:其中的对象顺序并不重要,使用键进行索引 – 适配器:调整原有容器的行为,使得其对外展现出新的类型、接口或返回新的元素 – 生成器:构造元素序列迭代器:用于指定容器中的一段区间,以执行遍历、删除等操作 – 获

2022-02-22 15:48:49 1061

原创 二叉树经典算法

一、二叉树遍历二叉树节点定义 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, T

2022-02-16 14:05:01 774

原创 加一(Leetcode)

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。class Solution {public: vector<int> plusOne(vector<int>& digits) { for(int i = digits.size()-1; i>=0 ; i--){

2022-02-13 00:24:44 91

原创 两个数组的交集 II

给你两个整数数组nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int&gt.

2022-02-13 00:24:00 317

原创 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?class Solution {public: int singleNumber(vector<int>& nums) { int reduce = 0; for(int i = 0; i<nums.size();i++){

2022-02-13 00:23:13 46

原创 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_map<int, int> Hash; for(int i = 0;i<nums.size();i++){

2022-02-13 00:21:33 179

原创 旋转数组L

给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。class Solution {public: void reverse(vector<int>& nums, int start,int end){ while(start<end){ int temp = nums[start]; nums[start] = nums[end]; nums[end] =...

2022-02-13 00:18:46 206

原创 麦麦古票的事迹II

给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格。在每一天,你可能会决定购买和/或出售股票。你在任何时候最多只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。返回 你能获得的 最大 利润。思路:贪心算法当前元素比下一个元素小,则将他们的差值累积,所得总和即为最大利润。class Solution {public: int maxProfit(vector<int>& prices) { ...

2022-02-13 00:16:57 75

原创 删除排序数组中的重复项

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。.

2022-02-13 00:00:19 405

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除