强化学习仿真环境Legged Gym的初步使用——训练一个二阶倒立摆
强化学习仿真环境Legged Gym的初步使用——训练一个二阶倒立摆
本篇教程将大致介绍Legged Gym的结构,使用方法,并以一个二阶倒立摆为例来完成一次实际的强化学习训练
回顾强化学习基本概念 —– 五元组
本章节将简要回顾强化学习中五元组的概念,需要读者对强化学习有基本的概念。若对强化学习缺少基本认知,建议先阅读OpenAI推出的Spinning up系列教程。读者也可先大致阅读后续章节,对Legged Gym训练框架有初步认知。
首先我们回顾一下强化学习基本概念之一的五元组,即$M=<S,A,P,R,\gamma>$, 其中$S$表示状态集;$A$表示动作集 $P$ 表示状态和动作的条件转移概率,$R$ 奖励函数,最后$\gamma$表示回报率。以下是这五元组的详细解释:
状态集($S$):
定义:状态集S是所有可能的状态的集合。在强化学习中,状态描述了环境当前的情况或配置。
特点:状态用于确定接下来会发生什么(行动、观察、奖励)。状态是关于历史的函数,即($S_t = f(H_t)$),其中($H_t$)是到时间$t$为止的历史信息。
动 ...
强化学习仿真器Isaac Gym的安装与配置
强化学习仿真器Isaac Gym的安装与配置
写在前面 – 最近强化学习强化学习在机器人领域真是大放异彩,鉴于IsaacGym+LeggedGym的仿真器和训练框架组合已经成为了机器人领域强化学习算法的主流工具,于是我打算写一篇博客来记录一下这个仿真环境的安装和使用。
本文主要参考了这篇博客的内容。
Isaac Gym简介本文主要介绍Isaac Gym强化学习仿真器和Legged Gym强化学习训练框架的安装和使用。Isaac Gym是一个基于GPU加速的并行计算仿真环境,主要可进行强化学习研究。它支持导入URDF和MJCF文件、基于张量(tensor)的API、域随机化(domain randomlization)以及各种传感器和环境。该仿真器使用GPU并行加速,比传统使用cpu计算的仿真如mujoco/raisim等可提速上百倍,非常适合需要大量采样的深度学习类算法使用,但仿真精度相较于mujoco等有略微下降,Isaac Gym框架对显存大小有较高要求,最低显存配置为4GB,(个人推荐8GB以上),对显卡算力最低要求不高GTX10系列及以上可运行。Legged G ...
机器人控制中的强化学习极简入门指南
机器人控制中的强化学习极简入门指南
最近随着深度强化学习在机器人领域大放异彩,大家对这个方向的关注热情日趋高涨。最近老有人来问我相关的问题,借此机会我写了一个强化学习极简入门教程,其实也就是回答了入门应该看一些什么资料的问题。其实我本人也是初学者,如有疏漏或者错误还请大家海涵,如有问题也欢迎大家一起讨论。这是本系列的第一篇文章,计划后续会继续写一些更具体的环境搭建教程和入门教程,争取不鸽。
强化学习/深度学习部分参考资料
OpenAI的spinning up,主要讲深度强化学习的基本概念和算法的主流思想,里面也有配套代码,代码适合初学者学习,不过配置环境有点恶心,涉及到OpenMPI的内容,代码实在跑不起来就算了,能读懂就挺好,这个强烈推荐看完https://spinningup.openai.com/en/latest/
OpenAI的gym(更名为Gymnasium了,其实就是gym)环境,经典的强化学习环境,这个环境可以好好玩玩https://gymnasium.farama.org/https://github.com/Farama-Foundation/Gymn ...
机器学习中的各种熵总结
机器学习中的各种熵
最近学习我发现对机器学习中信息熵,交叉熵,相对熵(KL散度(Kullback-Leibler Divergence))总是容易搞混,特别是连续分布的情况,因此这里简单总结一下相关知识,方便后续查阅。
这篇文章很多内容都是AI生成的,不得不说AIGC进步神速。
信息熵,交叉熵,KL散度的关系信息熵、交叉熵和KL散度之间的关系可以从以下几个方面来理解:
信息熵:可以表示一个事件A的自信息量,也就是A包含多少信息。
KL散度:可以用来表示从事件A的角度来看,事件B有多大不同,适用于衡量事件A,B之间的差异。KL散度在p(x)和q(x)相同时取到最小值0,两个概率分布越相似,则KL散度越小。KL散度包含如下性质:
不对称性,即: $$D_{KL}(P||Q) \neq D_{KL}(Q||P)$$
非负性,即: $$D_{KL}(P||Q) \geq 0$$
交叉熵:可以用来表示从事件A的角度来看,如何描述事件B,适用于衡量不同事件B之间的差异。对于不同的事件B,计算事件AB的KL散度时都同时减去事件A的熵(KL散度=交叉熵-熵(A)),因此,如果 ...
WSL中的GPU原理总结
WSL中的GPU原理总结
自wsl(Windows Subsystem on Linux)发布以来,许多性能已经得到了长足的进步。经过多年的发展,该项目从一个玩具项目发展成现在可以真正用于生产环境的项目,给需要使用Linux环境但是又不想脱离Windows便利生态的开发者们来说带来了福音。wsl的图形性能也受到许多人的关注,特别是自微软2020build大会官方发布支持图形界面的wslg之后,wsl的图形性能发展进入了快车道。本文主要结合微软和英伟达提供的资料简要总结了一下wsl中调用GPU的原理以及使用GPU进行3D渲染加速和CUDA编程可能遇到的问题。
原理关于wsl是如何调用GPU加速的主要参考了这篇微软推出的博客。这篇博客里把大概的原理讲清楚了,简单来说就是hyperv虚拟机虚拟了一个/dev/dxg硬件,这个硬件通过WDDM(Windows Display Driver Model)(版本不低于2.9)共享了Windows端的显卡,然后在这个虚拟出的硬件上建立了一个Direct 3D的API实现了在Linux上使用Direct 3D(真的会有人在Linux上用这个吗。。。) ...
强化学习仿真器Raisim进行深度强化学习的初步尝试
强化学习仿真器Raisim进行深度强化学习的初步尝试本文主要结合Raisim官方实例,介绍如何使用Raisim进行深度强化学习。本文主要参考了Raisim官方文档,以及Raisim的github仓库中的一些例子。部分内容使用AI辅助生成。
raisimGymTorch是raisim的Gym环境示例。还提供了一个简单的基于pytorch的RL框架,但它应该可以很好地与任何其他RL框架配合使用。该项目使用pybind11作为python接口,这样的好处是将矢量化环境包装在C++中,以便使用OpenMP在C++中完成并行化,这极大地提高了仿真速度。这里直接上官方的图。
如图所示,该框架定义了Environment类型,在该类中完成环境的定义。然后VectorizedEnvronment将Environment进行矢量化,以便在C++中进行并行化。最后riasim_gym.cpp和RaisimVecEnv.py使用pybind11将上述C++环境封装成python包供其他RL框架调用。并行化的过程是在C++中完成的,因此可以大大提高仿真速度。
RaisimGymTorch的使用可以参考官方文 ...
强化学习仿真器Raisim的安装,配置,与初步使用
强化学习仿真器Raisim的安装,配置,与初步使用
写在前面 – 最近入坑了强化学习,看了一些基础理论后觉得需要实操一下,于是便研究了一下Raisim这个仿真器。这个仿真器使用的人较少,网上资料也不多,所以在这里记录一下,以便后续查阅。不过说实话,新入强化学习的坑还是建议从OpenAI的gym(gymnasium)看起,毕竟资料多,而且也有很多成熟的算法可以直接使用。不像Raisim是一个单纯的仿真器,gym是一个完整的强化学习框架,可以直接使用,以及配合”stable baseline3”使用可以很快速的将demo跑起来。不过Raisim的优点也很明显,就是仿真速度快,而且可以直接使用C++进行编程,并利用OpenMP并行加速。所以在一些对速度要求较高的场景下,Raisim还是很有优势的。
本文主要介绍了Raisim仿真器的安装,配置,并简要介绍API,以及如何使用Raisim仿真器来进行强化学习仿真环境的搭建。本文主要参考了Raisim官方文档,以及Raisim的github仓库中的一些例子。部分内容使用AI辅助生成。
Raisim简介和安装Raisim是由ETH Zurich的 ...
Image Segmentation via Spectral Clustering
Image Segmentation via Spectral Clustering
Abstract-Image Segmentation is a classic computer vision problem, which is also one of the foundation stones for many computer vision applications, e.g., 3D reconstruction, object tracking. This paper implemented two classic image segmentation methods via spectral clustering. Namely, the image segmentation based on K-means clustering and image segmentation based on normalized cuts and spectral clustering. Although nowadays most image segmentation method ...
基于图像雅可比的目标跟踪控制
基于图像雅可比的目标跟踪控制本文从李群李代数的方式对二轴云台的目标跟踪控制(视觉伺服)问题进行了推导。基于图像的视觉伺服(IBVS)问题多使用基于解析几何的方法进行推到,但是似乎很少有人使用李群李代数进行推到。本文使用李代数完成对基于图像雅可比的视觉伺服问题推导,相比于解析几何的方法,我认为在面对更多更复杂关节的情况下,李代数的方法更具有通用性。下面将介绍系统模型,并基于此模型开始推导。
系统建模
系统模型如上图所示,该系统由两个相机和一个二关节云台构成,其中C1相机为广角相机,C2相机为长焦相机。该系统将使用C1相机检测目标,并控制C2相机跟踪目标。该系统的目标是使C2相机的视野中始终包含目标,即在C1相机能看到目标的情况下使目标在C2相机视野中移动。{C1},{C2}坐标系为前文所述两相机的坐标系; {G1},{G2}为电机法兰坐标系; {M1}{M2}为电机基座坐标系,{M}系与{G}系的z轴同方向共线。
目标目标是使C2相机的视野中始终包含目标,即在C1相机能看到目标的情况下使目标在C2相机视野中移动。为了实现上述目标,我们需要获得长焦相机中目标像素坐标与相机光心坐标的误差与云 ...
Research Report of 360VO Visual Odometry Using A Single 360 Camera
Research Report of 360VO: Visual Odometry Using A Single 360 Camera
Abstract—This article is a review and evaluation of the paper 360VO: Visual Odometry Using A Single 360 Camera in the 2022 IEEE International Conference on Robotics and Automation (ICRA). Starts from this article and summarizes the method of it and then presents the related works. Then, some improvement directions are proposed for this article. Finally, the commercial value and social value of the visual slam field are discussed ...