OpenAI Gym + ROS + Gazebo:在家训练一个独立的机器人。 第一部分

在过去的几年中,我们目睹了人工智能技术在日常生活中的应用-从机器人吸尘器到无人驾驶无人机。 在人工智能的控制下,所有这些对我们来说已经司空见惯。 但是,尽管如此,从设计到实现的开发过程要花费数年,而且并不便宜。 此外,机器学习算法需要大数据,并且不能保证所有事情都能长期解决。

每个开发人员迟早都会得出这样的结论:在创建真正的机器人之前,您需要在仿真中测试概念,调试所有系统,最后了解是否选择了开发路径。

Andrew Howard博士与他的学生Nathon Koenig于2002年开始在南加州大学开发3D模拟器Gazebo时,也有类似的想法。 由于需要在各种困难的户外条件下测试机器人,因此出现了高精度模拟器的概念。 在开发的第一阶段,这种方法可节省购买必要设备的时间和金钱。

在本系列文章中,我想分享一下我在仅用一个普通摄像机作为传感器的情况下模拟和训练无人驾驶汽车的经验。



大家好 我是柏林应用科技大学(HTW-Berlin)的应用信息学理学硕士(计算机科学,MS)。

作为课程的一部分,我研究了使用ROS [1],Gazebo [2]和OpenAI Gym [3]在模拟环境中训练自主机器人的方法。 本课程分为两部分。

第一部分致力于框架的开发,该框架将简化在凉亭模拟中的各种自主机器人上进行强化学习(强化训练)算法的测试。

在第二部分中,我将重点介绍自动驾驶算法的实现。 我将在下学期对此进行研究,因此本期和下一篇文章将主要关注凉亭的OpenAI Gym环境的实现。 强化学习(RL)本身将受到表面影响。

完整的项目代码可以在这里找到。

系统要求


  • Ubuntu 18.04或Windows WSL Ubuntu 18.04
  • Python 2.7
  • 点子
  • Tenserflow CPU或GPU

我们将使用ROS版本的Melodic。 这个版本有几个限制,其中最重要的是Ubuntu 18(也可以在Windows WSL和Ubuntu Headless上安装ROS,但在其他时候可以安装更多)。 此外,ROS仍然不支持Python 3。

第一部分:简介


在本试验部分中,我将简要讨论将用于创建环境的技术。 我还将介绍安装过程,最后我们将启动一个完整的仿真,可以通过Gym API对其进行控制。

ROS:“不要重新发明轮子”


机器人操作系统(ROS)是用于对机器人进行编程的框架。 ROS是一种“软件胶水”,使开发人员可以专注于其特定任务。 尽管ROS不是操作系统,但它确实提供了诸如硬件抽象,低级设备管理,实现常用功能,在进程之间传递消息以及管理程序包(插件)之类的服务。

ROS被设计为一个松散耦合的系统,其中一个称为节点的进程必须负责一项任务。 节点使用通过称为主题的逻辑通道传递的消息进行相互通信。 每个节点都可以使用发布-订阅模式从另一个节点发送或接收数据

对于ROS,已经实现了驱动程序,该驱动程序允许与多种设备一起使用,例如控制器,GPS,摄像机,激光测距仪等。

因此,安装ROS Melodic( 完整说明

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt update sudo apt install ros-melodic-desktop-full sudo rosdep init rosdep update echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source /opt/ros/melodic/setup.bash 

由于某些原因,完整的安装程序包不包括某些必需的程序包。 分别安装它们:

 sudo apt install ros-melodic-ackermann-msgs sudo apt install ros-melodic-effort-controllers sudo apt install ros-melodic-joy sudo apt install ros-melodic-tf2-sensor-msgs 

我们不会详细介绍它们。 需要它们来控制我们的机器人,这将在后面讨论。

凉亭


凉亭是由开源机器人基金会开发的开源动态3D仿真器,与ROS紧密交互。 凉亭使您能够在困难的室内和室外条件下准确,高效地模拟机器人。

该模拟器由gzserver服务器组成,该服务器参与计算物理量,碰撞和模拟传感器。 客户端可以连接到服务器,例如gzclient (用于桌面)和gzweb (用于浏览器)。 他们是渲染模型的人。

所有这些使在虚拟空间中更快地测试复杂的机器人系统成为可能,并且没有损坏昂贵的真实机器人的风险。

凉亭包含在完整的ROS安装包中,因此您无需安装其他任何东西。 对于无头配置,需要gzweb 。 我将在以下部分中谈论他。

OpenAI体育馆


OpenAI是由Ilon Max共同创立的非营利性人工智能研究公司。
OpenAI Gym是一个Python库,提供用于开发和比较RL算法与大量虚拟环境和通用API的API。 Gym已经有许多现成的环境,包括Atari游戏。

openai_ros


我的项目基于openai_ros包。 该软件包实现了The Construct团队提出的体系结构。 构造专家已经开发了一个通用框架,该框架实现了用于管理模拟的必要API,并描述了将Gazebo集成到Gym中的API,仅需最少的实现。 提议的结构由三个逻辑层组成(您可以实际使用任意数量),其中最低的是将Gym API与凉亭连接起来的另一种“胶水”。 在下一部分中,当我们将分析代码时,将对此进行更多介绍。

全部放在一起


首先,我们需要为catkin创建一个工作目录。 catkin是一个类似CMake的构建自动化系统,默认情况下包含在ROS安装包中:

 cd ~ mkdir catkin_ws cd catkin_ws/ mkdir src cd src/ 

并克隆必要的ROS软件包。

米特赛车


我们需要由MIT开发的带有所有传感器的机器人模型。

 git clone https://github.com/mit-racecar/racecar.git git clone https://github.com/mit-racecar/racecar-simulator.git 

openai_ros


 git clone https://bitbucket.org/theconstructcore/openai_ros.git 

神经种族


好吧,实际上,项目本身

 git clone https://github.com/karray/neuroracer.git 

接下来,您需要编译所有这些软件包

 cd ~/catkin_ws catkin_make 

您还需要安装所有必需的python库。

 pip install -U numpy tensorflow gym keras 

运行模拟


要运行任何ROS软件包,我们首先需要将编译后的所有ROS软件包加载到当前的终端会话中:

 source ~/catkin_ws/devel/setup.bash 

现在我们可以运行Racecar机器人模拟了:

 roslaunch racecar_gazebo racecar_tunnel.launch 

此命令将启动ROS主服务器,Gazebo服务器及其UI(在桌面上),并为其加载机器人和世界。

屏幕截图:

扰流板方向


在我们的RL算法的第二个终端中也是如此:

 source ~/catkin_ws/devel/setup.bash roslaunch neuroracer_gym_rl qlearning.launch 

该团队将启动我们的Neuroracer_gym_rl软件包,该软件包在我们的Gym环境中实现了一个简单的Q学习算法。 我们将在下一部分中对其进行分析。

迫不及待的人可以在这里找到源代码。 展望未来,我要说的是,在一台配备GeForce GTX 1080 Ti 11GB RAM卡的服务器上进行了几天的培训之后,这种简单的算法实际上并没有学到任何东西。 在下一部分中,我将列出可能的原因,但是现在您可以尝试实现了。

结论


因此,我们对自动驾驶汽车进行了全面的仿真,并准备了现成的RL算法模板。 在下一部分中,我们将更详细地分析openai_ros并讨论安装在机器人上的传感器,然后,我将展示如何实现我的算法以及训练过程中可能出现的问题。

PS:这是我第一次写文章。 因此,如果发现错误,有想法或建设性批评,请不要犹豫。 我将在以下各部分中考虑这一点。

参考文献


[1](M。Quigley,K。Conley,B。Gerkey,J。Faust,T。Foote,J。Leibs,R。Wheeler和AY Ng。Ros:开源机器人操作系统。在ICRA研讨会上开源软件,第3卷,第5页。日本神户,2009年。

[2] NP Koenig和A. Howard。 为凉亭设计和使用范例,凉亭是一个开源的多机器人模拟器。 在IROS,第4卷,第2149–2154页 。 Citeseer,2004年。

[3] LPJSJSJTWZ Greg Brockman,张薇薇。 Openai体育馆,2016, arXiv:1606.01540

Source: https://habr.com/ru/post/zh-CN441218/


All Articles