首先为什么选择源码部署,一点是因为想要更高的性能,另一点是方便之后自己设计地图训练ADAS。
首先是ROS2的安装,本文不再阐述,直接小鱼ROS安装desktop即可,另外记得把rosdep也顺带装好。虽然Carla的0.9.16和0.10.0都支持了ROS2的原生功能,但是实际使用中不是很友好,所以本文依旧是使用ROS2-Bridge来进行与ROS2的通讯
我的ubuntu版本为22.04lts,7900x3d 32Gx2 6200mhz RTX3080ti,首先是基础环境安装
sudo apt-get update
sudo apt-get install build-essential g++-12 cmake ninja-build libvulkan1 python3 python3-dev python3-pip python3-venv autoconf wget curl rsync unzip git git-lfs libpng-dev libtiff5-dev libjpeg-dev
接下来是虚幻引擎,这里有个问题,carla目前使用的是修改版的ue4,然后问题是ue4你需要加入epic的ue组才能clone下来,这里就需要你自己将epic账户和github账户绑定,进入ue组之后再去下载引擎,此外你还会需要生成一个Tokens(classic)。进入 GitHub Settings -> Developer settings -> Personal access tokens -> Tokens (classic),点击 Generate new token (classic),勾选 repo 权限,复制生成的 Token(这玩意只会出现一次,记得复制一下)。
之后就是clone下来
git clone https://:@github.com/EpicGames/UnrealEngine.git
另外如果没有魔法或者魔法比较慢,建议用国内镜像,比如gh-proxy,或者你就找找有没有人上传到云盘的,总不能被尿憋死。
cd ~/UnrealEngine_4.26
./Setup.sh && ./GenerateProjectFiles.sh && make
这一步会很慢,非常慢,因为ue4要去拉东西,没有魔法是真的要命,不然你就干等着把。另外你也可以更换目录,不必非得装在用户目录下。TIPS:这一部会产生超大的文件,切记留有300G左右的空间,或者等我之后写个直接安装版。
cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor
这一步只是确认ue4是否安装到为,如果安装完成就会直接弹出编辑菜单。如果你个人比较懒,环境变量可以直接写在.bashrc中
export UE4_ROOT=~/UnrealEngine_4.26
接下来就是clone carla,老规矩,gh-proxy或者魔法二选一
git clone -b ue4-dev https://github.com/carla-simulator/carla //有魔法
git clone -b ue4-dev https://gh-proxy.org/https://github.com/carla-simulator/carla.git //没魔法
clone完毕之后把环境变量写一下
export CARLA_UE4_ROOT=/path/to/carla/folder
然后就是运行${CARLA_UE4_ROOT}/Unreal/CarlaUE4/Content/Carla目录下的./Update.sh来获取资源包,这里注意可以提前安装aria2来多线程并发获取资源。下载完毕后就是编译环境依赖
python3 -m pip install --upgrade -r ${CARLA_UE4_ROOT}/PythonAPI/carla/requirements.txt
安装完毕后make PythonAPI,注意这里也是需要魔法,另外如果你的魔法解析到ipv6,建议ubuntu暂时关闭ipv6功能,相信我。成功之后就可以make launch,如果这一步出现了网络问题,建议删除之后再重新下载,会节省不必要的麻烦。如果成功你就会看到ue4启动并且加载了默认地图,注意会有些卡顿,毕竟要去预渲染。
接着就是ros2-bridge的安装了,这个模块也是你想放在哪就哪,我是直接ue4 carla bridge放同一个目录下
mkdir -p ~/carla-ros-bridge && cd ~/carla-ros-bridge
git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git src/ros-bridge
rosdep update //切记一定小鱼搞好,会帮你改源
rosdep install --from-paths src --ignore-src -r
这里不要着急编译,先去src/ros-bridge/carla_ros_bridge/src/carla_ros_bridge/找个较CARLA_VERSION的文件,把里面的版本修改成你clone下来的版本,我这里是0.9.16,直接改就行,之后再去cmake里改个配置文件
vim carla-ros-bridge/src/ros-bridge/pcl_recorder/CMakeLists.txt
//68行改成
ament_target_dependencies(${PROJECT_NAME}_node rclcpp sensor_msgs
pcl_conversions tf2 tf2_ros tf2_eigen)
保存
退到第一个carla-ros-bridge目录下
colcon build
sudo apt install python3-pygame ros-humble-derived-object-msgs ros-humble-ackermann-msgs
完成后source ./install/setup.bash。记得先打开ue4,烘焙town01,因为下面的脚本是默认开town01,没有烘焙会导致ue4崩溃,烘焙完记得运行。
ros2 launch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch.py
此时会打开一个pygame,生成一个tesla车辆,再查看topic会发现已经出现数据了

开个rviz2和rqt

