先说一下我的安装环境:
Ubuntu18.04
ROS melody
Python2.7及Conda Python3.6
从小白开始安装到和Ros打通前前后后画了一周多时间
强调:安装前需要保证有150G的空间,否则白了个白。
首先是官方的参考文档放在这里:https://carla.readthedocs.io/en/latest/build_linux/
之后基于以下这几位大佬的帖子,但是我任然遇到很多网上找不到的坑在这里记录下。
帖子1:https://blog.csdn.net/weixin_42259296/article/details/120127475?spm=1001.2014.3001.5506
帖子2:https://blog.csdn.net/k_NGU_L/article/details/123399894?spm=1001.2014.3001.5506
帖子3:https://blog.csdn.net/weixin_36184353/article/details/126373080?spm=1001.2014.3001.5506
主要的问题总结如下(从0起步):
新手不建议使用从英伟达官网下载自己安装
直接从系统软件和更新中的附加驱动里更新
要是不显示 sudo update
一下
通过使用ubuntu-drivers devices
得到系统推荐的显卡驱动进行选择(比如:这里截图用的笔记本2060,实际操作的实验室为3090则安装的515)
可通过nvidia-smi
查看系统GPU情况
详细步骤见https://blog.csdn.net/qq_42751676/article/details/121001049
之后便是进入正题安装Carla
首先你需要有github和UE4的账号,没有的话注册就行没有Epic的账号可使用Steam登陆Epic,
登陆虚幻4官网www.unrealengine.com
注册完成后需要绑定github和UE4账号如下图:绑定账户的就行,多数帖子为老图,连接下没有区分。
其他可见https://blog.csdn.net/qq_31788759/article/details/86530309
绑定后接下来进入GITHUB中的UE4专栏https://github.com/EpicGames,
注意!!!!!!!!:此时网页顶端会有一个提示邀请你加入Epic games team,必须点击!!
要开放两个端口:
iptables -I INPUT -p tcp --dport 2000 -j ACCEPT
iptables -I INPUT -p tcp --dport 2001 -j ACCEPT
iptables-save
CARLA 需要许多不同类型的软件才能运行,废话不多说,下面的命令直接全部执行,想了解的可以自己去搜,都有。
sudo apt-get update && sudo apt-get install wget software-properties-common && sudo add-apt-repository ppa:ubuntu-toolchain-r/test && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - && sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" && sudo apt-get update
sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 && sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180
python3.6安装
pip3 -V
pip3 install --upgrade pip
pip install --user setuptools && pip3 install --user -Iv setuptools==47.3.1 && pip install --user distro && pip3 install --user distro && pip install --user wheel && pip3 install --user wheel auditwheel
git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine_4.26
输入上面代码后需要输入你的Github账号和Token(注意不是密码,Github修改了方式)
具体Token怎么获得见此贴:
https://blog.csdn.net/m0_51693209/article/details/124664968
之后运行下面代码
cd ~/UnrealEngine_4.26
./Setup.sh && ./GenerateProjectFiles.sh && make
cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor
大佬们都说是可以加速编译,先运行下面代码
sudo apt-get install aria2
下载Carla,如下直接下载的最新版(当前最新即为0.9.13)
git clone https://github.com/carla-simulator/carla
(补充下载特定版本)
git clone --depth=x -b x.x.xx https://github.com/carla-simulator/carla ~/Carla_x.x.xx#将XX换为需要的版本
然后更新一下:
./Update.sh
添加环境变量 gedit ~/.bashrc
也可在主目录下,使用Ctrl+H显示隐藏文件.bashrc
将此代码添加至最后 export UE4_ROOT=~/UnrealEngine_4.26
注意 从这往后开始编译,有很多坑
在你安装Carla的路径下执行(可使用cd carla
(注意你自己的大小写)也可直接主目录打开carla文件夹)
make PythonAPI
这里会有网络问题,如果是校园网,尽量使用V6,
我总结的网络切换优先级 V6>镜像源>科学上网(我在没使用科学上网的前提下在阿里,中科大,华为中均成功过)
下面编译到一半有个大坑(如果你已经开始不要暂停)
xerces-c-3.2.3.tar.gz下载不到,原网址已经不提供了,不是网路问题,而是从根上就没了!原网址提供的3.3.4,有两种解决方式
第一种将位于carla//Util/BuildTools/中的Setup.sh脚本中的3.2.3改为3.2.4
具体方法见此贴后面:(但是可能会出现其它问题,不一定好用,我没有成功)
https://blog.csdn.net/weixin_42259296/article/details/120127475?spm=1001.2014.3001.5506
我的使用的方法是从网上自己下载下来3.2.3,如果采用我这种方式下载链接见百度云,也可自己搜(如果没有百度云连接说明我还没传上去,懒狗一个)
注意!!执行下面操作前要将修改的脚本备份以防万一!!!
具体方法是将此文件放到carla/build文件夹里,将位于carla//Util/BuildTools/中的Setup.sh脚本中的下载代码注释掉,如下图
注释掉后保存退出
等他报错以后接着运行
make PythonAPI
其他的错误大概率都是网络问题,我通过换源完美解决,暂时还没碰到其他的坑。
之后就是
make launch
这里耐心等待就可以,我没遇到坑如有可参考开头几篇帖子的。
弹出窗口UE4的窗口代表大概路成功了,
测试
python3 -m pip install -r requirements.txt
python3 generate_traffic.py
如果UE4里面也生成了对应车辆在跑,那就恭喜你编译成功了。
大佬们在这部分似乎都很顺利,但是我踩了很多坑(布置为何(苦逼脸))
首先是安装问题,直接下载安装包的方式,我试过很多,都安装不成功,
我于是采用源码安装
先解释下rosdepc,一个非常牛逼的大佬做的国内rosdep镜像,具体见
https://blog.csdn.net/sinat_16643223/article/details/120950026?spm=1001.2014.3001.5506
安装ROS卡在rosdep这一步直接用此法!!
执行:sudo pip install rosdepc
安装rosdepc。
mkdir -p ~/carla-ros-bridge/catkin_ws/src
cd ~/carla-ros-bridge
git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git catkin_ws/src/ros-bridge
source /opt/ros/melodic/setup.bash # 我是Ubuntu18.04所以这里是 ROS melodic,注意你的版本
cd catkin_ws
sudo rosdepc init
rosdepc update
rosdepc install --from-paths src --ignore-src -r
catkin_make
将下面代码加到.bashrc
文件中
export PYTHONPATH=$PYTHONPATH:~/carla/PythonAPI/carla/dist/carla-0.9.13-py2.7-linux-x86_64.egg
注意carla-0.9.13-py2.7-linux-x86_64.egg
此文件来源路径以及名称,
对于仿真环境,我们最理想的配置应该是:
CARLA.0.9.13 + Anaconda3(python3.6) + ros(melodic) + carla-ros-bridge;
但是实际情况却是:由于我们使用的操作系统为ubuntu18.04,对应安装的ros版本是melodic,而其内置的python版本为2.7,这
与ubuntu自带内置的python版本相同。但是,我在安装CARLA那一步在/carla/PythonAPI/carla/dist/路径下生成的为python3.6版本在运行carla-ros-bridge时
会出现ImportError: dynamic module does not define module export function (PyInit__tf2)
这样的问题,我尝试了
各种帖子的方法,但是都不见效果,如果你是2.7版本可忽略这一步。
我的解决方式是
先在carla路径下以make PythonAPI ARGS="--python-version=2"
来编译一遍在上面路径下得到2.7版本,如果在`make
PythonAPI ARGS=“–python-version=2”`后直接make launch 我出现了很多奇奇怪怪的问题
所以我再此直接make PythonAPI 编译 再make launch 重新对Carla编译,成功解决问题。
以上这些工作都完成之后,可以尝试运行carla-ros-bridge:
carla目录下make launch
启动carla
启动ros
执行:source ~/carla-ros-bridge/catkin_ws/devel/setup.bash(我是将他加到.bashrc文件中了,有大佬指出加了可能会出问题见开头帖子)
启动carla-ros-bridge:roslaunch carla_ros_bridge carla_ros_bridge.launch
,在此之前,保证在其它终端运行了roscore,且carla已经运行,并点击了play播放按键。在其它终端中执行rostopic list,可以看到包含carla的节点。