自动驾驶模拟工具CARLA的安装
最近研究了一下自动驾驶的模拟器Airsim和CARLA,准备搭建一个学习环境来学习自动驾驶的相关知识。
Airsim最初是微软推出的一个模拟飞行的平台,之后增加了模拟驾驶的内容,这个平台据网上的资料是微软的一个较小的开源项目,因此也没有得到太大的重视,我看了一下平台好像也好久没有更新了,平台上的问题也没有什么人解答。我在Linux环境上下载的City Environment始终解压有问题,看到平台上也没有人答复,因此暂时放弃。
CARLA是Intel和西班牙的一个实验室的合作项目,也是目前比较出名的一个开源的模拟驾驶平台,因此我目前是选择了这个项目来搭建我的模拟驾驶平台。我的环境是由一台Linux PC(装配了1个GTX1070Ti和1个GTX2080Ti显卡,没有配置显示器),另外一台Windows PC远程接入进行控制。CARLA在Linux的安装可以直接在https://github.com/carla-simulator/carla上下载编译好的文件,也可以自己下载源代码进行编译,下面介绍一下这两种方式。
1. 直接下载编译好的文件
推荐这种方式。把下载好的文件解压缩到CARLA文件夹后,即可直接运行CarlaUE4.sh来启动CARLA服务器。因为我的Linux PC没有接显示器,因此我需要把图形输出定向到我的Windows PC,以下是配置过程:
- 在Linux PC上配置虚拟显示器,运行sudo nvidia-xconfig -s -a --force-generate --allow-empty-initial-configuration --cool-bits=12 --registry-dwords="PerfLevelSrc=0x2222" --no-sli --connected-monitor="DFP-0",修改/etc/X11/xorg.conf文件,增加虚拟显示器的EDID(这个可以自己在有连接显示器的PC上生成或者网上下载),修改后的xorg.conf文件如下:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 410.48
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 1070 Ti"
BusID "PCI:1:0:0"
Option "ConnectedMonitor" "DFP"
Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce RTX 2080 Ti"
BusID "PCI:38:0:0"
Option "ConnectedMonitor" "DFP"
Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Coolbits" "12"
Option "ConnectedMonitor" "DFP-0"
Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
Option "RegistryDwords" "PerfLevelSrc=0x2222"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "Coolbits" "12"
Option "ConnectedMonitor" "DFP-0"
Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"
Option "RegistryDwords" "PerfLevelSrc=0x2222"
SubSection "Display"
Depth 24
EndSubSection
EndSection
- 编写调整显卡转速的脚本文件。因为在Linux里面只用图形界面才能调整风扇转速,通过上面的配置,我们不需要接显示器也能调整风扇转速:
export DISPLAY=:0
xhost +
nvidia-settings -a "[gpu]/GPUFanControlState=1" -a "[fan]/GPUTargetFanSpeed=90"
- 安装CARLA的python库。在CARLA->PythonAPI->carla->dist目录里面有2个egg文件。我的Linux安装的是Anaconda的3.7的Python,因此用easy_install来安装3.5的那个egg文件。
- 配置VirtualGL和TurboVNC,按照CARLA的介绍配置即可https://carla.readthedocs.io/en/latest/carla_headless/, 只是其中的“Configure your X”这里的命令不需要执行,因为在前面我们已经用另一种方式配置过了(这个原因是我发现按照这里的命令来执行则无法通过nvidia-settings来设置显卡的风扇转速)
- 运行sudo nohup Xorg :7 &,这个命令运行之后有可能会自动stop,不太清楚是什么原因,一般可以运行sudo service lightdm status之后再运行就没问题了。之后运行/opt/TurboVNC/bin/vncserver :8,然后运行DISPLAY=:8 vglrun -d :7.0 ./CarlaUE4.sh -carla-server -benchmark -fps=50 -windowed -ResX=80 -ResY=60, 这样就可以通过TurboVNC连接:8端口来显示CARLA Server。要运行CARLA的Python客户端,可以运行/opt/TurboVNC/bin/vncserver :9,然后运行DISPLAY=:9 vglrun -d :7.1 python PythonAPI/examples/manual_control.py,这样就可以通过TurboVNC连接:9端口来模拟控制车。另外,可以运行python spawn_npc.py -n 80来自动增加一些车和行人。
2. 下载CARLA的源代码进行编译
参考官网的这个文档:
https://carla.readthedocs.io/en/latest/how_to_build_on_linux/
Unreal Engine 4.22的安装
这个按照官网的步骤安装即可,没有遇到问题。需要注意的是,要从UE4的Github上面把代码克隆下来,但是Github实在是太慢了,可以在码云gitee.com上面来复制一个仓库,这样就快很多。
CARLA的安装
首先是克隆CARLA的Github仓库,同理可以在gitee.com上面复制一份。执行./Update.sh,这个操作会下载CARLA的UE4资源,大概有6个多G,建议下载完后把这个Content目录保存一下,以后重装的时候直接用回这个目录的数据即可,不用再运行./Update.sh
然后执行make launch,这里我就遇到了pyconfig.h无法找到的问题。我用的是Anaconda的python 3.7的环境,因为CARLA建议的是python 3.5,因此创建一个3.5的环境,执行conda create --name carla python=3.5, conda activate carla
环境创建完成后,还要再输入命令export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:path/to/your/Anaconda3/include/python3.5m
之后再执行make launch即可
然后是make PythonAPI, 这里会出现问题说在PythonAPI/carla/dependicies/lib里面找不到libboost_python35.a文件,看了Github的 issues里面提到了可以把libboost_python27.a拷贝一份为libboost_python35.a,但是我试过了虽然可以make成功,但是之后执行Python,import carla就会报错, Pystring_type not define。我研究了一下Util/BuildTools/Setup.sh文件,在其中和boost相关的部分我们可以看到对于python3的安装,有以下语句:
./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j
在这一句里面增加
--with-python include="path/to/your/anaconda3/envs/carla/include/python3.5m/"
然后再编译即可。
注意如果之前采用拷贝libboost_python27.a为libboost_python35.a的方式编译过,那么需要把path/to/your/anaconda3/envs/carla/lib/python3.5/site-packages里面的carlaXXX.egg文件删掉,把easy-install.pth里面相应的那行也删掉。
最后编译make package,应该就没有遇到什么问题了。可以增加-j10的参数(10表示用10个CPU核心来make,加快速度,根据你的环境来设置)
更多推荐
所有评论(0)