自动驾驶预测与决策规划(二)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院自动驾驶预测与决策规划学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
路径与轨迹规划(笔记)
基于搜索的路径规划
Hybrid A*算法
节点的拓展基于车辆运动学模型
代价的计算基于栅格栏
代价计算
代价包括节点遍历代价和两个启发函数,即F(n)=g(n)+h1(n)+h2(n)F(n)=g(n)+h_1(n)+h_2(n)F(n)=g(n)+h1(n)+h2(n),其中
g(n)g(n)g(n)主要考虑路径长度、运动学约束、方向变换成本;
h1(n)h_1(n)h1(n)只考虑车辆的运动学约束而不考虑障碍物;
h2(n)h_2(n)h2(n)只考虑障碍物信息而不考虑车辆的运动学约束;
基于采样的路径规划
Frenet坐标系
Werling M , Ziegler J , Kammel S , et al. Optimal Trajectory Generation for Dynamic Street Scenarios in a Fren ...
自动驾驶预测与决策规划(一)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院自动驾驶预测与决策规划学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
自动驾驶决策规划简介
实验准备
下载nuplan-devkit
在终端中进入希望的安装目录,以主目录为例,运行代码拉取命令:
12cd ~git clone https://github.com/motional/nuplan-devkit.git
安装miniconda
在终端中输入以下命令下载miniconda安装包:
12cd ~wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
运行安装包,安装过程中按照指示一直按enter和选择yes即可:
1bash Miniconda3-latest-Linux-x86_64.sh
conda全局初始化将conda的环境路径添加到用户目录的.bashrc文件中,终端每次启动时执行.bashrc添加conda的环境路径,初始化后重新启动终端即可使用c ...
机器人中的数值优化(五)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
附录(笔记)
函数的光滑技巧
Inf convolution卷积
Inf convolution 卷积操作适应于凸函数,Inf convolution 卷积操作的目标是把不光滑的凸函数进行光滑近似,并使得光滑近似后的函数于原函数尽量吻合。
对于两个凸函数f1,f2f_1, f_2f1,f2,它们之间的Inf convolution 卷积操作记为f1□f2f_1\Box f_2f1□f2,即找一个u1u_1u1和u2u_2u2,满足u1+u2=xu_1+u_2=xu1+u2=x的条件下,使得f1(u1)+f2(u2)f_1(u_1)+f_2(u_2)f1(u1)+f2(u2)最大或最小,如下面的第一个表达式所示,由于满足u1+u2=xu_1+u_2=xu1+u2=x,因此可消去一个uuu进行简化,简化后的表达式如下面第二个式子所示:
(f1□f2)(x)=inf(u1 ...
机器人中的数值优化(四)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
锥规划(笔记)
锥和对称锥
尖锥
如果一组点κ⊆Rn\kappa\subseteq\mathbb{R}^nκ⊆Rn满足以下条件,则称为尖锥:
Conic:a∈K,λ≥0⇒λa∈KPointed:a∈K and −a∈K⇒a=0\begin{aligned}&{\text{Conic:}\quad a\in\mathcal{K},\lambda\geq0\Rightarrow\lambda a\in\mathcal{K}}\\&{\text{Pointed:}\quad a\in\mathcal{K}\mathrm{~and~}-a\in\mathcal{K}\Rightarrow a=0}\end{aligned}
Conic:a∈K,λ≥0⇒λa∈KPointed:a∈K and −a∈K⇒a=0
第一个条件即向量aaa在集合K\mathcal{K}K中,λ≥0\lambd ...
机器人中的数值优化(三)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
有约束优化(笔记)
分类
低维线性规划(LP)
目标函数:
f(x1,x2…xd)=c1x1+c2x2+⋯+cdxdf(x_1,x_2\ldots x_d)=c_1x_1+c_2x_2+\cdots+c_dx_d
f(x1,x2…xd)=c1x1+c2x2+⋯+cdxd
约束:
a1,1x1+⋯+a1,dxd⩽b1a2,1x1+⋯+a2,dxd⩽b2an,1x1+⋯+an,dxd⩽bn\begin{array}{l}
a_{1,1} x_{1}+\cdots+a_{1, d} x_{d} \leqslant b_{1} \\
a_{2,1} x_{1}+\cdots+a_{2, d} x_{d} \leqslant b_{2} \\
a_{n, 1} x_{1}+\cdots+a_{n, d} x_{d} \leqslant b_{n} \\
\end{array}
a1,1 ...
机器人中的数值优化(二)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
无约束优化
拟牛顿法
为什么要用拟牛顿法?
一般情况下,当函数为曲线平滑的凸函数时,我们使用牛顿法。牛顿法如下:
通过二阶泰勒展开:
f(x)≈f^(x)≜f(xk)+∇f(xk)T(x−xk)+12(x−xk)T∇2f(xk)(x−xk)(1)f(\boldsymbol{x})\approx\hat{f}\left(\boldsymbol{x}\right)\triangleq f(\boldsymbol{x}_k)+\nabla f(\boldsymbol{x}_k)^T(\boldsymbol{x}-\boldsymbol{x}_k)+\frac12(\boldsymbol{x}-\boldsymbol{x}_k)^T\nabla^2f(\boldsymbol{x}_k)(\boldsymbol{x}-\boldsymbol{x}_k) \tag{1}
f(x)≈f^(x)≜f(xk) ...
机器人中的数值优化(一)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。
凸优化基础
最优化问题概括
最优化问题一般可以描述为:
minf(x)s.t.g(x)≤0h(x)=0\begin{array}{rl}\min&f(x)\\\mathrm{s.t.}&g(x)\leq0\\&h(x)=0\end{array}
mins.t.f(x)g(x)≤0h(x)=0
凸集合与凸函数
凸集
对于Rn\mathbb{R}^{n}Rn中的两个点x1≠x2x_{1}\ne x_{2}x1=x2,形如y=θx1+(1−θ)x2y=\theta x_{1}+(1-\theta) x_{2}y=θx1+(1−θ)x2的点形成了过点x1x_{1}x1和x2x_{2}x2的直线。当0≤θ≤10\le \theta \le10≤θ≤1,这样的点形成了连接点的x1x_{1}x1和x2x_{2}x2的线段。
定义:如果过集合C中任意两点的直线都 ...
强化学习(四)PPO近端策略优化
文档维护:Arvin
网页部署:Arvin
▶
近端策略优化(PPO)算法
重要性采样
基于策略的方法可以分为**同策略(on-policy)和异策略(off-policy)**方法。在强化学习中,如果要学习的智能体和与环境交互的智能体是相同的,我们称为同策略。如果是不同的,我们称为异策略。
为什么我们会想要考虑异策略?让我们回忆一下策略梯度。策略梯度是同策略的算法,因为在策略梯度中,我们需要一个智能体、一个策略和一个演员。演员去与环境交互搜集数据,搜集很多的轨迹 τ\tauτ,根据搜集到的数据按照策略梯度的公式更新策略的参数,所以策略梯度是一个同策略的算法。PPO是策略梯度的变形,它是现在 OpenAI 默认的强化学习算法。
∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]\nabla \bar{R}_{\theta}=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right]
∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]
问题在于上式 ...
强化学习(三)策略梯度优化
文档维护:Arvin
网页部署:Arvin
▶
策略梯度算法
原理
强化学习由三部分组成:智能体、环境和奖励函数。**策略梯度(Policy Gradient)**模型是强化学习中的一个经典模型。它用来在某种环境下训练智能体。
智能体是在环境中实施行为的实体。它与环境的交互如下图所示。首先一个episode开始,环境初始化后将释放出一个状态信息s1s1s1,依据该信息做思考和决策,得到行为a1a_1a1。环境再根据智能体的行为a1a_1a1,释放信息s2s_2s2。智能体观测到状态信息s2s_2s2,经过自身决策得到行为a2a_2a2。该过程一直持续下去,直到该episode结束。
采用数学方式描述上述过程:
假设在一个episode中,智能体与坏境交互所产生的状态信息sss和行为aaa形成一个集合,称为迹。
τ={s1,a1, s2,a2,…,sTn,aTn}\tau=\left\{\mathrm{s}_{1}, \mathrm{a}_{1}, \mathrm{~s}_{2}, \mathrm{a}_{2}, \ldots, \mathrm{s}_{\mathrm{T}_ ...
ROS(七)插件
文档维护:Arvin
网页部署:Arvin
▶
写在前面:pluginlib是一个c++库, 用来从一个ROS功能包中加载和卸载插件(plugin)。插件是指从运行时库中动态加载的类。通过使用Pluginlib,不必将某个应用程序显式地链接到包含某个类的库,Pluginlib可以随时打开包含类的库,而不需要应用程序事先知道包含类定义的库或者头文件。
例如:目前我们想在ROS中实现自己的路径规划算法,就需要以plugin的方式。
下面本文将逐步介绍如何实现A*算法作为ROS中的全局路径规划。
编写the Path Planner Class
这里我们采用A*算法,其伪代码如下:
123456789101112131415* 初始化open_set和close_set;* 将起点加入open_set中,并设置优先级为0(优先级最高);* 如果open_set不为空,则从open_set中选取优先级最高的节点n: * 如果节点n为终点,则: * 从终点开始逐步追踪parent节点,一直达到起点; * 返回找到的结果路径,算法结束; * 如果节点n不 ...