强化学习(四)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不 ...
AutoDL
文档维护:Arvin
网页部署:Arvin
▶
写在前面:通过AutoDL平台租赁云服务器,配置环境,远程桌面。
vscode远程SSH链接
参考链接:https://www.autodl.com/docs/ssh/
vscode安装插件SSH,添加SSH,输入SSH指令,点击connect,输入密码。
然后为remote添加常用的插件。
ros-melodic安装
参考链接:http://www.autolabor.com.cn/book/ROSTutorials/chapter1/12-roskai-fa-gong-ju-an-zhuang/127-zi-65993a-qi-ta-ros-ban-ben-an-zhuang.html
安装源
官方默认安装源:
1sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
或来自国内中科大的安装源
...
路径规划算法(一)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:
全局规划算法与局部规划算法,全局规划属于静态规划,局部规划属于动态规划。
全局规划算法
A*算法
A*算法是一种很常用的路径查找和图形遍历算法。
首先我们需要知道地图信息(栅格地图)、起点位置、终点位置。
然后开始搜索计算每个点的优先级。其核心是下面这个公式:
f(n)=g(n)+h(n)f(n) = g(n) + h(n)
f(n)=g(n)+h(n)
公式是为了求得节点优先级,其中:
f(n)f(n)f(n)是节点n的综合优先级。当选择下一个要遍历的节点时,总会选择综合优先级最高的(值最小)的节点。
g(n)g(n)g(n)是节点nnn距离起点的代价,即节点n与起点的距离。
h(n)h(n)h(n)是节点nnn距离终点的预计代价,也就是A*算法的启发函数,一般采取节点n到终点的曼哈顿距离。
g(n)g(n)g(n)是从开始点到当前点的移动量:
h(n)h(n)h(n)采用曼哈顿距离计算:
然后根据算法进行搜索:
初始化open_set和close_set;
将起点加入open_set中,并设置优先级为0(优先 ...
TSP-RL
文档维护:Arvin
网页部署:Arvin
▶
TSP
TSP问题(Traveling Salesman Problem),是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求所选的路径路程为所有路径中的最小值。
从图论的角度来看,TSP问题的输入是一个边带权的完全图,目标是找一个权值和最小的哈密顿回路。TSP问题可大致分为对称TSP问题和非对称TSP问题。所谓对称指的是在模型中,城市 u 到城市 v 的距离与城市 v 到城市 u 的距离是一样的,其在图中的体现就是对称TSP问题的输入一般是无向图,而非对称TSP问题的输入往往是有向图。本文主要讨论的是对称TSP问题。
假设给定一个 n 个点的带权完全图 G ,本文需要找到它权值和最小的哈密顿回路。或许会有人觉得这是求最短路,但是这并不是求最短路。最短路是求两点之间权值和最小的路径,而TSP求的是一个回路,并不能直接通过求解最短路进行求解。所有可能的路线共有(n−1)!(n−1){!}(n−1)! 种
下面是两篇经典的使 ...
ROS(六)导航
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文旨在记录学习ROS过程中的一些重要知识概念和遇到的错误问题。主要参考赵虚左老师的ROS课程(第一个参考链接),由于赵老师用的noetic版本,而我用的是melodic版本,细节上可能会有所差异。
机器人系统仿真
常用组件
1.URDF:
URDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度…,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。
2.Xacro:
Xacro 是 XML Macros 的缩写,Xacro 是一种 XML 宏语言,是可编程的 XML。
Xacro 可以声明变量,可以通过数学运算求解,使用流程控制控制执行顺序,还可以通过类似函数的实现,封装固定的逻辑,将逻辑中需要的可变的数据以参数的方式暴露出去,从而提高代码复用率以及程序的安全性。
3.Rviz:
RViz 是 ROS V ...
李群李代数(一)
文档维护:Arvin
网页部署:Arvin
▶
写在前面:这篇的内容主要来自于《slam十四讲:从入门到实践》中的第三、四章,是为了引出李群李代数,文章大多记录了一些结论,如果对推导有兴趣可以去看书中详细的过程。
基础知识
三维空间刚体运动
旋转矩阵
1.反对称矩阵
设A=(aij)n×nA=(a_{ij})_{n \times n}A=(aij)n×n,若其中元素满足aij=aji,∀i,j⇔AT=Aa_{ij}=a_{ji},\forall i,j\Leftrightarrow A^T=Aaij=aji,∀i,j⇔AT=A,则称AAA是对称矩阵;若其元素满足aij=−aji,∀i,j⇔AT=−Aa_{ij}=-a_{ji},\forall i,j\Leftrightarrow A^T=-Aaij=−aji,∀i,j⇔AT=−A,则称AAA为反对称矩阵。
若AAA是反对称矩阵,则aij=−aija_{ij}=-a_{ij}aij=−aij,当i=ji=ji=j时,便有aij=0a_{ij}=0aij=0,即反对称矩阵对角线上的元全为零,而位于主对角线两侧对称的元素 ...
RL in Constraint Manifold
文档维护:Arvin
网页部署:Arvin
▶
Abstract
由于许多实际问题,包括安全、机械约束和磨损,机器人技术中的强化学习极具挑战性。
通常,这些问题在机器学习文献中没有被考虑。在现实世界中应用强化学习的一个关键问题是安全探索,这需要在整个学习过程中满足物理和安全约束。为了在这样一个安全关键的环境中进行探索,利用机器人模型和约束等已知信息有助于提供更强大的安全保证。利用这些知识,我们提出了一种新的方法,在满足学习过程中的约束的情况下,有效地学习仿真中的机器人任务。
Introduction
深度强化学习虽然在一些问题上表现的很好,但是在现实世界中使用强化学习还是一项具有挑战性的任务,因为典型的强化学习算法,通过不断试错来最大化累计奖励,并没有考虑在探索过程中对约束的满足,而在实际世界中智能体在探索过程中要受到许多约束。
文章提出了一种新方法,在流形空间的切平面上执行动作(Acting on the Tangent Space of the Constraint Manifold, ATACOM)。该方法将约束强化学习问题转化成无约束强化学习问题。
ATACOM的优势可以概括如 ...
ROS(五)运行管理
文档维护:Arvin
网页部署:Arvin
▶
写在前面:本文旨在记录学习ROS过程中的一些重要知识概念和遇到的错误问题。主要参考赵虚左老师的ROS课程(第一个参考链接),由于赵老师用的noetic版本,而我用的是melodic版本,细节上可能会有所差异。
本章主要解决以下几个问题:
如何关联不同的功能包,繁多的ROS节点该如何启动?
功能包、节点、话题、参数重名时应该如何处理?
不同主机上的节点如何通信?
ROS元功能包
在ROS中,提供了一种方式可以将不同的功能包打包成一个功能包,当安装某个功能模块时,直接调用打包后的功能包即可,该包又称之为元功能包(metapackage)。
MwtaPackage是Linux的一个文件管理系统的概念。是ROS中的一个虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来,我们可以认为它是一本书的目录索引,告诉我们这个包集合中有哪些子包,并且应该去哪里下载。
ROS节点管理launch文件
概念
launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。
作用
...