Ubuntu18.04配置无人驾驶赛车游戏平台TORCS
菜菜的博主又开始记笔记了,前段时间折腾了一下apollo无人驾驶仿真平台搭建,弄好了以后发现好像他自带各种算法,去B站看了一堆视频,怎么这东西都是介绍自己的算法呢,我想的是跑自己的路径规划和控制决策代码,光看它美丽的界面去了,没明白咋跑自己的代码,又找了找一个叫TORCS的赛车游戏,一说游戏瞬间有了研究下去的动力,而且这个直接就可以改源代码了,本身研究的重点就是路径规划等等这些算法部分,所以这个正合适,貌似界面也还不错呢。
一、资源下载TORCS《The Open Racing Car Simulator》
先去github下载gym-torcs源码:https://github.com/ugo-nama-kun/gym_torcs
可以使用HTTP或者SSH两种下载方式,建议使用SSH,下载会快一些(注意,在哪个目录下执行,下载的文件就会保存在哪,所以最好先自己找好下载目录,然后在该目录执行下载命令)
git clone git@github.com:ugo-nama-kun/gym_torcs.git #SSH
git clone https://github.com/ugo-nama-kun/gym_torcs.git #HTTP
二、环境搭建
本文使用的是Ubuntu18.04+Python3.6
- 安装xautomation
直接开启一个命令行,在其中输入指令:
sudo apt-get install xautomation
- 配置gym_torcs目录中的vtorcs-RL-color
需要解决vtorcs-RL-color中的一堆编译错误(坑巨多,不断尝试花了半天时间,一定先把这一步全部整好,本人在安装过程中没有注意,编译的时候报错找不到libplib,整了半天原来是一个libplib-dev没装上,省的后面麻烦),看别人博客上都是直接完成了下面的前两步而已,但我执行完以后执行./configure
的时候还是出现了下面几个错误,然后通过尝试知道这几个错误需要的就是对应的哪几个依赖包,如果有人执行完前两步也出现类似情况,可以试着根据错误信息安装对应的包,这是解决这种错误的思路。
开启终端,cd进入下载好的gym_torcs/vtorcs-RL-color文件夹,开始以下(1)~(5)的配置过程,(6)执行时已不在这个目录了:
- (1)安装依赖包
sudo apt-get install libglib2.0-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libplib-dev libopenal-dev libalut-dev libxi-dev libxmu-dev libxrender-dev libxrandr-dev libpng-dev #很多博客写的是安装libpng12-dev,但实际上已经找不到这个包了,所以这里用的是libpng-dev
- (2)安装gym环境
sudo apt install -y python3-dev zlib1g-dev libjpeg-dev cmake swig python-pyglet python3-opengl libboost-all-dev libsdl2-dev libosmesa6-dev patchelf ffmpeg xvfb
如果到这里没有任何错误,所有依赖包都正常安装了,请直接跳至第(6)步,如果后来发现./configure
过程报错,而且包含下面几项,可以尝试执行对应的指令安装相关依赖包,然后重新执行./configure
。
- (3)OpenGL的安装,解决Can’t find GL/glut.h.错误
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
- (4)OpenAL与ALUT的安装, 解决Can’t find AL/alut.h.错误
sudo apt-get install libopenal0a libopenal-dev
sudo apt-get install libalut0 libalut-dev
- (5) 安装libxmu-dev包,解决出现的libXmu错误
sudo apt-get install libxmu-dev
- (6)修改源码,解决因Ubuntu18.04中高版本GCC导致的error: ‘isnan’ was not declared in this scope,这一步骤避免了make指令执行过程中出现如下错误:
修改过程:在下载的gym_torcs文件夹中,打开终端,使用文本编辑修改代码
sudo gedit vtorcs-RL-color/src/drivers/olethros/geometry.cpp
注意打开的编辑器右下角显示当前光标所在行,点击文本区域找到373行,原来的if (isnan(r)) {
替换成if (std::isnan(r)) {
即可。
- 安装第三方库,用于正常执行py代码
sudo pip3 install numpy
sudo pip3 install gym
- 开始编译
以下过程还是在gym_torcs/vtorcs-RL-color目录下开启终端完成。注意这里的第一行./configure
操作,会得到很多行以yes或no结尾的输出,如果出现no,注意看是哪一个结尾为no,类似前文所述(3)~(5)步中解决方式进行处理,一般出现no都是因为前面的某一个依赖包安装过程出了问题导致的,对应的包重新安装一次即可。
确保./configure
指令输出所有的行结尾都是yes之后,再继续往下执行!
./configure #检查配置
make #编译
sudo make install #安装
sudo make datainstall
三、运行游戏与测试
打开一个终端,直接执行指令torcs
,便可以看到弹出下图这样的游戏界面了,测试一下源码给出的示例程序吧。
依次点击Race –> Practice –> New Race,弹窗会进入一个带有许多英文的蓝屏界面,如下:
此时还是进入下载好的gym_torcs目录,打开一个新的终端,在该目录下的执行Python代码:
python snakeoil3_gym.py
接下来就可以看到游戏中赛车自动跑起来的画面了,默认的应该是下图这种第一人称视角:
到这里TORCS游戏仿真平台就算配置完成了,还可以手动操作玩一玩,其他玩法这里不做赘述了,可以自行摸索,目前正在研究跑自己的强化学习算法,有了成果再做更新吧。