Udacity 无人驾驶仿真环境搭建实现自动驾驶小车

1.我的配置

系统:ubuntu 18.04 python 3.5 tensorflow -gpu==1.4.1

2.虚拟环境配置

使用anaconda进行安装,不需要单独安装cuda和cudnn,conda会下载并安装好,不需要考虑版本依赖的问题,简便的地方就是这里了。

1.创建虚拟环境

conda create -n My_tf python = 3.5

2.激活虚拟环境

conda activate My_tf

3.安装Tensorflow-gpu

终端下输入命令来查看所有可用版本的tensorflow-gpu

conda search tensorFlow-gpu

合适的版本,这里选择的是1.4.1版本,输入命令安装tensorflow-gpu,可以看到需要下载cudatoolkit、cudnn、tensorflow-gpu等这些依赖包,不需要我们自己去配环境了,其中的cudatoolkit就是常说的cuda了,输入y就可以安装的。

conda install tensorflow-gpu==1.4.1

4.测试 tensorflow-gpu是否已经安转成功:

python
import tensorflow as tf
print(tf.__version__)    #注意__是两个下划线

如果输出的是对应安装的tensorflow-gpu的版本号,则tensorflow-gpu安装成功了。

5.下载相应的keras包

Tensorflow之环境版本匹配问题_ZONG_XP的博客-CSDN博客_tensorflow版本不匹配

pip install keras==2.0.8

6.pyCharm导入环境和添加解释器

打开PyCharm新建一个项目之后,点击左上角的file,选择Settings,在左侧选择Project Interpreter,然后点击右侧面板的小齿轮,选择Add…,在弹出的窗口左侧选择Conda Environment,接着选择Existing environment,这时候它会自动识别出刚刚创建好的conda环境,然后勾选Make available to all projects,点击OK即可。
创建新项目的时候注意选择好Project Interpreter,因为刚刚的设置可能会不能应用到新项目,需要手动选择一下。


注意:如果在pycharm下更改了tensorflow-gpu的版本,则对应的在aconda的python环境下的tensorflow-gpu的版本与会随之改变。
如果tensorflow-gpu的版本太低,则会出现某些功能不支持的问题:如 AttributeError: module ‘tensorflow’ has no attribute 'keras’等问题。如果tensorflow-gpu的版本太高,则可能与NVIDIA的显卡驱动不匹配。需要酌情考虑版本。

3.udacity仿真环境下载

(ps: 需要下载unity才能运行,我电脑已经安装unity,如果需要可以在这里下载 unity下载

先下载仿真器,我用的是version2 的Linux版 

Term 1  Instructions: Download the zip file, extract it and run the executable file. 

Version 2, 2/07/17 Linux Mac Windows 

Version 1, 12/09/16  Linux Mac Windows 32 Windows 64

装好后效果如图所示,有两个模式,第一个是训练模式可以采集数据集,第二个是自动模式,可以用程序进行控制,测试效果。

配置

手动解压,或查找相应命令解压文件;

cd到解压得到的文件目录,例如我的为cd /home/xxx/Downloads/beta_simulator_lunux ;

手动或利用命令将与系统对应版本(32位还是64位)beta_simulator.x86_64[64位]或beta_simulator.x86[32位]变成可执行文件,例如在终端执行sudo chmod +x beta_simulator.x86_64;

需要先分别输入下面两行代码,就可以打开udacity模拟器。

chmod a+r+w+x *
sudo ./beta_simulator.x86_64

 下面图片是输入上述代码过程

后面只需要在该模拟器文件夹下输入下列代码,就可以直接打开模拟器。

./beta_simulator.x86_64

Controls:在Simulator中的按键指南

Training Mode:人为控制车辆模式,用来收集数据

Autonomous Mode:全自动模式,使用训练好的模型进行无人驾驶

4.数据收集

进入Training Mode开始玩游戏,熟练一下按键和操作!在Simulator中,这辆车的传感器是三个前置摄像头,分别放置在左、中、右三个方向,对周围的环境进行拍摄录制,结果之后会以图片形式保存到电脑上。

开始收集数据:

  • 首先按下R键 (Record),选择数据保存目录,确认

  • 再次按下R键,进入录制模式

  • 驾驶车辆在车道中行驶

  • 行驶完毕后第三次按下R键,数据会被保存到硬盘上

进入TRAINING MODE后点击右上角的RECORD选择训练数据保存的位置(注意保存位置要点选到文件夹上,不要选到文件夹内空白处),然后Select,如下图:

 再次点击右上角RECOED,当其变成RECORDING时,就可以手动驾驶小车了,大概驾驶8,9分钟,点击右上角RECORDING,界面中间出现绿色Capturing Data,表示正在记录并存储图片与转向角,8,9分钟左中右三个摄像头共可采集2万多张图片,这时,在相应目录下会生成两个文件: driving_log.csv和IMG文件夹。顾名思义,driving_log.csv中保存了用户开车时的log,IMG文件夹中保存了摄像头的照片。driving_log.csv基本结构如下图。

  • 前三列分别表示在当时左中右摄像头的照片路径

  • D列表示车的方向盘角度

  • E列表示油门力度

  • F列表示刹车力度

  • G列表示当前速度

为了简洁明了,在本文中我们只采用A,B,C,D列数据,即利用摄像头照片预测方向盘角度。另外,收集数据时有几个tips:

首先大概收集两圈比较完美的数据,尽量保持车在道路中间行驶;

在转弯或模型训练之后比较容易出错的地方多收集几次数据。

5.Drive.py下载与驱动

自动模式需要drive.py进行端口数据交互。

这里有drive文件 CarND-Behavioral-Cloning-P3

很重要的一个点是drive.py的socketio的连接

socketio很容易不兼容,这里提供一个兼容版本

pip install Flask-SocketIO==4.3.1 
pip install python-engineio==3.13.2 
pip install python-socketio==4.6.0 
pip install --upgrade h5py

其他模块 

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip install flask
pip install pillow
pip install eventlet
pip install numpy

训练判断转向角的全连接模型

有了训练数据我们就可以搭建我们的训练模型了,我们使用csv库读取数据,利用Keras建立模型。下载包cv2包

pip install opencv--python

在pycharm中,运行下列程序,

    import csv
    import cv2
    import numpy as np
    from keras.models import Sequential
    from keras.layers import Flatten, Dense
    
    
    # 初始化行的数组,将csv中的数据传入到数组中
    lines = []
    # 读取csv文件
    with open('.../data/driving_log.csv') as csvfile: 
        reader = csv.reader(csvfile)
        for line in reader:
            lines.append(line)
#'.../data/driving_log.csv' 数据存储到目录,可能需要设置成自己的数据集存储的目路。我的是'/home/yu/wen/data/IMG/'
    
    # 初始化图片矩阵和转向角
    images = []
    measurements = []
    for line in lines:
        source_path = line[0]
        filename = source_path.split("/")[-1]
        # 图片路径
        current_path = '.../data/IMG/' + filename
        # 将所有的图片数据存入images数组中
        image = cv2.imread(current_path)
        images.append(image)
        # 将相对应的转向角数据存入measurement数组中
        measurement = float(line[3])
        measurements.append(measurement)
    
    # 将images和measurements作为训练数据
    X_train = np.array(images)
    y_train = np.array(measurements)
    
    # 使用Keras建立模型
    model = Sequential()
    model.add(Flatten(input_shape=(160, 320, 3)))
    model.add(Dense(1))
    
    model.compile(loss='mse', optimizer='adam')
    model.fit(X_train, y_train, validation_split=0.2, shuffle=True, nb_epoch=10)
    
    model.save('model.h5')

得到model.h5文件,将这个文件复制到上面下载的drive文件:CarND-Behavioral-Cloning-P3-master文件夹中,在该文件打开终端,切换到对应的conda虚拟环境,输入

python drive.py model.h5

 ​​​​​​​运行成功

 

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Udacity自动驾驶数据集是Udacity为其自动驾驶算法比赛专门准备的数据集。该数据集对连续视频图片进行了仔细的标注,主要包含了汽车、行人、大型车辆等类别。数据集的大小为1.5G,共有9420张图像。标注格式采用了2D坐标,包括了Car、Truck、Pedestrian三类。如果你需要使用该数据集,你可以通过下载dataset1来获取数据。同时,你可以使用数据格式转化工具将数据转化为voc格式,以便更好地进行处理和分析。\[2\]\[3\] #### 引用[.reference_title] - *1* [Udacity CH2 数据集解析小技巧](https://blog.csdn.net/weixin_44337149/article/details/118541085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Udacity Self-Driving 目标检测数据集简介与使用](https://blog.csdn.net/Jesse_Mx/article/details/72599220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Udacity Self-Driving自动驾驶目标检测数据集使用指南](https://blog.csdn.net/u010801994/article/details/85092375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值