(略微更新以下本文)
目前carla-autoware bridge官方已經更新,這裡是上一版本的安裝過程,舊版本網站:
carla-simulator/carla-autowaregithub.com
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZ2YTM0EzM0YmYlRmYyQ2NxYjY3UTMyYmMlFmZxUWN48CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
本文總結了CARLA與autoware和ROS的聯合仿真的安裝過程和一些問題。主要參考了以下連結: 1. Autoware-Carla Bridge的官方連結為:
https://github.com/carla-simulator/carla-autowaregithub.com
2. Carla-ROS Bridge的官方連結為:
https://github.com/carla-simulator/ros-bridgegithub.com
和
https://carla.readthedocs.io/en/latest/ros_installation/carla.readthedocs.io
1. 安裝Carla-Autoware-Bridge
預先安裝的軟體
- Carla 0.9.7 (官方連結用的是0.9.6版本) 第一個疑問解決 :官方的ROS-bridge其實是不支援0.9.6及以下的CARLA版本的,我安裝之後看了下autoware-carla裡面ros-bridge的
檔案,發現這裡用的ROS-bridge其實是支援CARLA 0.9.4版本及其以上,是以 autoware-carla已經包含了ros-bridge, 也就是不需要額外再安裝ROS-bridge了。readme.md
- Autoware 1.12.0 (安裝詳情可以見我的這篇部落格)
Carla-Autoware-Bridge安裝過程
其實Carla-Autoware-Bridge本質上算是一個ROS Package,整個包的大小大約在
1.6GB
左右。其安裝過程按照官方連結中的指令做基本就可以。
但是遇到的問題就是下載下傳太慢,git clone中有子檔案夾。1. Ubuntu下安裝
git lfs
(直接跟着官方連結走就可以)
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
- 下載下傳Carla-Autoware-Bridge檔案包
cd ~
git lfs clone https://github.com/carla-simulator/carla-autoware.git
cd carla-autoware
git submodule update --init
疑問解決: 這一步需要花費很多時間,請保持耐心 。這裡要用
git submodule update --init
是因為當用
git clone 網址
下載下傳時,檔案包中的子檔案夾不會被下載下傳。
git submodule update --init
的作用就是自動下載下傳子檔案夾。(後續ROS-Bridge也有相同的問題)
建立catkin工作空間、安裝相關依賴并編譯#初始化工作空間
cd catkin_ws
source ~/autoware.ai/install/setup.bash
catkin_init_workspace src/
#安裝依賴
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
#編譯工作空間
catkin_make
其中
source ~/autoware.ai/install/setup.bash
的作用和在autoware的運作中一樣,都是把autoware中的子節點加入到環境變量中。後續的
catkin_init_workspace src/
是正常的ROS中初始化工作空間的指令。
如果
rosdep update出現網絡連接配接問題,可以參考我的這篇部落格
運作Carla-Autoware-Bridge
- 啟動Carla伺服器
cd <path-to-Carla_0.9.7.4>
./CarlaUE4.sh -opengl
(最好把這些指令存到
~
目錄下的shell腳本中,友善啟動) 2. 啟動Carla-Autoware-Bridge
export CARLA_AUTOWARE_ROOT=~/carla-autoware/autoware_launch
export CARLA_MAPS_PATH=~/carla-autoware/autoware_data/maps
source $CARLA_AUTOWARE_ROOT/../catkin_ws/devel/setup.bash
export PYTHONPATH=$PYTHONPATH:~/CARLA_0.9.7.4/PythonAPI/carla/dist/carla-0.9.7-py2.7-linux-x86_64.egg
roslaunch $CARLA_AUTOWARE_ROOT/devel.launch
這裡的
export CARLA_MAPS_PATH=~/carla-autoware/autoware_data/maps
的作用是把相關的pcd點雲檔案加入到環境變量中,不添加的會可能rivz中不顯示雷射雷達地圖。如果不添加
carla-0.9.7-py2.7-linux-x86_64.egg
到環境變量中會出現導入carla庫失敗
ImportError: no module named CARLA的情況。
以下代碼用來檢查carla環境變量是否配置成功:
python -c 'import carla;print("Success")'
輸入以上指令之後會出現一個pygame的視窗顯示運作結果,等上一段時間車輛會開始緩慢行駛。也可以手動控制車輛,==
按下B鍵即可切換。==
(如果車輛沒有自動行駛,說明devel.launch
啟動中出現錯誤,建議根據終端顯示的報錯資訊進行調試。) 這裡
我遇到的坑是
缺少幾個python子產品:分别是
networkx
和
simple_pid
出現的報錯如下:
File "<path-to-user>/carla-autoware/catkin_ws/src/ros-bridge/carla_waypoint_publisher/src/carla_waypoint_publisher/carla_waypoint_publisher.py", line 30, in <module>
from agents.navigation.global_route_planner import GlobalRoutePlanner
File "<path-to-user>/CARLA_0.9.7.4/PythonAPI/carla/agents/navigation/global_route_planner.py", line 11, in <module>
import networkx as nx
ImportError: No module named networkx
[carla_waypoint_publisher-7] process has died [pid 11565, exit code 1, cmd /home/guo/carla-autoware/catkin_ws/src/ros-bridge/carla_waypoint_publisher/src/carla_waypoint_publisher/carla_waypoint_publisher.py __name:=carla_waypoint_publisher __log:=/home/guo/.ros/log/3f7c326a-a0b1-11ea-abbb-e0d55ea64ade/carla_waypoint_publisher-7.log].
log file: /home/guo/.ros/log/3f7c326a-a0b1-11ea-abbb-e0d55ea64ade/carla_waypoint_publisher-7*.log
用以下指令安裝确實的包:
pip install networkx
pip install simple_pid
安裝simple_pid後建議檢測一下終端是否會出現警告,如下
python
from simple_pid import PID
出現以下情況
<path-to-user>/.local/lib/python2.7/site-packages/simple_pid/PID.py:22UserWarning: time.monotonic() not available in python < 3.3, using time.time() as fallback warnings.warn('time.monotonic() not available in python < 3.3, using time.time() as fallback')
之後打開目錄對應的檔案,将
time.monotonic
改為
time.time
即可
- 啟動Rviz ROS中的RVIZ能夠幫助可視化carla城市中的雷射點圖。 (這裡不需要用autoware中的rviz)
rosrun rviz rviz
當然,也可以通過autoware的
runtime manager
打開rviz顯示。
啟動之後效果圖如下:(Carla-Autoware-Bridge中已經包含各個城市的雷射點雲資料)
動圖如下:
2. 源碼安裝ROS-Bridge
踩坑:第一次安裝嘗試了apt安裝Carla-ROS-Bridge,運作時報錯。為節省時間,我直接按照官網要求進行源碼安裝(開發者),我覺得apt安裝和源碼安裝bridge出現報錯的原因是一樣的,因為用源碼安裝,在
git clone
過程中檔案夾
ros-bridge
中的
carla_msgs
為空,對應ros-bridge的github網址中高亮的檔案:
下載下傳的工程帶有submodule,可以用
git submodule update --init
進行子檔案夾下載下傳。(我是直接從github下載下傳的,沒有用該指令,不能保證其有效性。)
預先安裝的軟體
- ROS Kinetic
- Carla 0.9.7.4
ROS-Bridge的源碼安裝過程
這裡的源碼安裝過程就直接搬運官網指令了,基本不會出現什麼問題。
mkdir -p ~/carla-ros-bridge/catkin_ws/src
cd ~/carla-ros-bridge
git clone https://github.com/carla-simulator/ros-bridge.git
cd catkin_ws/src
ln -s ../../ros-bridge
source /opt/ros/kinetic/setup.bash #Watch out, this sets ROS Kinetic.
cd ..
#install required ros-dependencies
rosdep update
rosdep install --from-paths src --ignore-src -r
#build
catkin_make
運作過程
- 配置相關環境變量(最好隻對目前終端使用)
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
- 啟動carla 0.9.7.4
**# Option 1: start the ros bridge
roslaunch carla_ros_bridge carla_ros_bridge.launch
# Option 2: start the ros bridge together with RVIZ
roslaunch carla_ros_bridge carla_ros_bridge_with_rviz.launch
# Option 3: start the ros bridge together with an example ego vehicle
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch**