Python实现自动驾驶

本文介绍了如何使用Python和gym库搭建自动驾驶环境,重点是highway-env包的安装、配置和训练模型的过程。通过Kinematics、Grayscale Image和Occupancy grid三种state表示,以及连续和离散action,训练DQN模型。实验证明,随着训练次数增加,模型的平均碰撞发生率降低,但epoch平均时长增加。highway-env环境适合端到端算法的训练,但在自动控制方面灵活性较低。
摘要由CSDN通过智能技术生成

今天来一个好玩一点的,汽车已经能够自动驾驶了,Python怎么能没有呢?这不,必须安排上。

一、安装环境

gym是用于开发和比较强化学习算法的工具包,在python中安装gym库和其中子场景都较为简便。

安装gym:
pip install gym

在这里插入图片描述

安装自动驾驶模块,这里使用Edouard Leurent发布在github上的包highway-env(链接:https://github.com/eleurent/highway-env):

Python学习交流Q群:906715085###
pip install --user git+https://github.com/eleurent/highway-env

其中包含6个场景:

•高速公路——“highway-v0”

•汇入——“merge-v0”

•环岛——“roundabout-v0”

•泊车——“parking-v0”

•十字路口——“intersection-v0”

•赛车道——“racetrack-v0”

详细文档可以参考这里:

https://highway-env.readthedocs.io/en/latest/

在这里插入图片描述

二、配置环境

安装好后即可在代码中进行实验(以高速公路场景为例):

import gym
import highway_env
%matplotlib inline

env = gym.make('highway-v0')
env.reset()
for _ in range(3):
    action = env.action_type.actions_indexes["IDLE"]
    obs, reward, done, info = env.step(action)
    env.render()

运行后会在模拟器中生成如下场景:

在这里插入图片描述

绿色为ego vehicle env类有很多参数可以配置,具体可以参考原文档。

在这里插入图片描述

三、训练模型

1、数据处理

(1)state

highway-env包中没有定义传感器,车辆所有的state (observations) 都从底层代码读取,节省了许多前期的工作量。根据文档介绍,state (ovservations) 有三种输出方式:Kinematics,Grayscale Image和Occupancy grid。

Kinematics

输出V*F的矩阵,V代表需要观测的车辆数量(包括ego vehicle本身),F代表需要统计的特征数量。例:

在这里插入图片描述

数据生成时会默认归一化,取值范围:[100, 100, 20, 20],也可以设置ego vehicle以外的车辆属性是地图的绝对坐标还是对ego vehicle的相对坐标。

在定义环境时需要对特征的参数进行设定:

config = \
    {
   
    "observation": 
         {
   
        "type": "Kinematics",
        #选取5辆车进行观察(包括ego vehicle)
        "vehicles_count": 5,  
        #共7个特征
        "features": ["presence", "x", "y", "vx", "vy", "cos_h", "sin_h"], 
        "features_range": 
            {
   
            "x": [-100, 100],
            "y": [-100, 100],
            "vx": [-20, 20],
            "vy": [-20, 20]
            },
        "absolute": False,
        "order": "sorted"
        },
    "simulation_frequency": 8,  # [Hz]
    "policy_frequency": 2,  # [Hz]
    }

Grayscale Image

生成一张W*H的灰度图像,W代表图像宽度,H代表图像高度

Occupancy grid

生成一个WHF的三维矩阵,用W*H的表格表示ego vehicle周围的车辆情况,每个格子包含F个特征。

(2) action

highway-env包中的action分为连续和离散两种。连续型action可以直接定义throttle和steering angle的值,离散型包含5个meta actions:

ACTIONS_ALL = {
   
        0: 'LANE_LEFT',
        1: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值