天天看點

agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程

(略微更新以下本文)

目前carla-autoware bridge官方已經更新,這裡是上一版本的安裝過程,舊版本網站:

carla-simulator/carla-autoware​github.com

agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程

本文總結了CARLA與autoware和ROS的聯合仿真的安裝過程和一些問題。主要參考了以下連結: 1. Autoware-Carla Bridge的官方連結為:

https://github.com/carla-simulator/carla-autoware​github.com

2. Carla-ROS Bridge的官方連結為:

https://github.com/carla-simulator/ros-bridge​github.com

https://carla.readthedocs.io/en/latest/ros_installation/​carla.readthedocs.io

1. 安裝Carla-Autoware-Bridge

預先安裝的軟體

  1. Carla 0.9.7 (官方連結用的是0.9.6版本) 第一個疑問解決 :官方的ROS-bridge其實是不支援0.9.6及以下的CARLA版本的,我安裝之後看了下autoware-carla裡面ros-bridge的

    readme.md

    檔案,發現這裡用的ROS-bridge其實是支援CARLA 0.9.4版本及其以上,是以 autoware-carla已經包含了ros-bridge, 也就是不需要額外再安裝ROS-bridge了。
  2. 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
           
  1. 下載下傳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

  1. 啟動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

即可

  1. 啟動Rviz ROS中的RVIZ能夠幫助可視化carla城市中的雷射點圖。 (這裡不需要用autoware中的rviz)
rosrun rviz rviz
           

當然,也可以通過autoware的

runtime manager

打開rviz顯示。

啟動之後效果圖如下:(Carla-Autoware-Bridge中已經包含各個城市的雷射點雲資料)

agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程
agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程

動圖如下:

agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程

2. 源碼安裝ROS-Bridge

踩坑

:第一次安裝嘗試了apt安裝Carla-ROS-Bridge,運作時報錯。為節省時間,我直接按照官網要求進行源碼安裝(開發者),我覺得apt安裝和源碼安裝bridge出現報錯的原因是一樣的,因為用源碼安裝,在

git clone

過程中檔案夾

ros-bridge

中的

carla_msgs

為空,對應ros-bridge的github網址中高亮的檔案:

agx 安裝ros opencv_CARLA與Autoware和ROS的聯合仿真安裝過程

下載下傳的工程帶有submodule,可以用

git submodule update --init

進行子檔案夾下載下傳。(我是直接從github下載下傳的,沒有用該指令,不能保證其有效性。)

預先安裝的軟體

  1. ROS Kinetic
  2. 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
           

運作過程

  1. 配置相關環境變量(最好隻對目前終端使用)
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
           
  1. 啟動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**
           

繼續閱讀