LGSVL 强化学习环境 —— gym-lgsvl

引言

OpenAI gym 是目前非常流行的强化学习算法测试平台。它包含了丰富的仿真环境,其中也有与自动驾驶相关的环境,例如 CarRacing ,但是界面过于简化:

carRacing.png

OpenAI gym 的一个优点是允许用户将自己的环境加入 gym 平台中。例如基于 donkey car 的环境基于 duckietown 的仿真环境,以及本文介绍的基于 LG simulator 的仿真环境。

参考文献:
https://www.lgsvlsimulator.com/docs/openai-gym/
https://stable-baselines.readthedocs.io/en/master/index.html

平台:

  • Ubuntu 16.04
  • python 3.6 (最好在单独的虚拟环境下,虚拟环境的设置可以参考我们之前的文章。假设后边所有的操作都是在虚拟环境下进行的,因此所有的 pip 安装不需要加 sudo 或者 --user 参数。)

安装 LG simulator python API

  1. 这里 下载 LG simulator,目前最新的 release 是 2019.05
  2. 解压文件,进入其中的 Api 文件夹
  3. 用如下命令安装 API
pip install -e .

关于 LG simulator python API 的详细介绍可以参考之前的文章。不过,这里我们只是安装和测试强化学习环境,暂时还不需要自己用 LG API 编写程序。

安装必要的 python package

pip  install  gym  numpy  opencv-python 

pip install tensorflow  # 如果用 GPU 训练,可以替换为 tensorflow-gpu

安装 lgsvl-gym package

git clone https://github.com/lgsvl/gym-lgsvl.git

cd gym-lgsvl/

pip install -e .

安装 stable-baselines

LGSVL 官网上采用了 OpenAI 的 baselines 通过命令行的形式测试了仿真环境,即

python -m baselines.run --alg=a2c --env=gym_lgsvl:lgsvl-v0 --num_timesteps=1e5

我们这里用 OpenAI baselines 的改进版本—— Stable baselines,通过 python 程序与 lgsvl-gym 仿真环境互动,测试其效果。用如下命令安装 Stable baselines

sudo apt-get update 

sudo apt-get install cmake libopenmpi-dev python3-dev zlib1g-dev

pip install stable-baselines

至此,所有的安装流程结束。

测试

下边用一个简单的程序测试一下能否与 lgsvl-gym 交互。
程序内容如下:

import gym
import numpy as np

from stable_baselines.sac.policies import MlpPolicy
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import SAC

env = gym.make('gym_lgsvl:lgsvl-v0')
env = DummyVecEnv([lambda: env])

model = SAC(MlpPolicy, env, verbose=1)
model.learn(total_timesteps=50000, log_interval=10)
model.save("sac_lgsvl")

obs = env.reset()
while True:
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    env.render()

先确保 LG simulator 进入了主界面(即选择了分辨率和显示效果之后进入的那个界面),然后执行程序,如果一切顺利,simulator 将进入仿真环境,python 程序开始执行强化学习:


lg_rl.png

LG simulator 比 OpenAI gym 中自带的 CarRacing 环境更加真实,同时对系统配置的要求更高。我们简单测试了一下,在配置为 128G 内存, 2× Nvidia GTX 1080 GPU,Xeon Silver 4114 CPU @ 2.20GHz × 40 的平台上训练非常吃力,画面很不流畅。我们只能等以后升级了硬件再深入研究一下这个强化学习环境了。

LG 强化学习仿真环境的关键设置可以在这里查阅。

环境的 reward 为车辆在与其他车辆或障碍物碰撞之前行驶的距离:

  def _calculate_reward(self, mult = 1.0):
    """
    Reward is calculated based on distance travelled.
    """
    self.reward += mult * self._distance_travelled()

一旦发生碰撞,之前累加的 reward 减去 50, 并结束本次 episode

  def _on_collision(self, agent1, agent2, contact):
    """
    Collision callback -- results in a negative reward.
    """
    self.reward -= 50
    self.done = True
    name1 = self.vehicles[agent1]
    name2 = self.vehicles[agent2] if agent2 is not None else "OBSTACLE"
    print("{} collided with {} at {}".format(name1, name2, contact))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容