CARLA를 이용한 Autoware기반 자율주행 stack 시뮬레이션 방법
카테고리 없음

CARLA를 이용한 Autoware기반 자율주행 stack 시뮬레이션 방법

작성중인 글입니다. 모든 명령어가 실제로 올바르게 동작하는지 확인되지 않았습니다.

혹시 글에 오타나 오류 또는 질문이 있으시다면 댓글 부탁드립니다.

 

 

Ubuntu 18.04 설치 후 초기 상태임을 가정하고 설명을 진행하며, 본 글에서는 ROS, CARLA, Autoware.AI의 설치부터 다룰 예정.


참고 및 주의사항:

현재(22.04.20)기준 최신인 CARLA 0.9.13과 Openplanner가 통합된 Autoware.AI 1.15 를 사용하였음.

본 글에 작성된 모든 명령어는 별도의 표시가 없는 한, 한 줄씩 한 줄로 입력, 실행하여야 하며,
각 패키지의 설치가 끝나면 새로운 터미널 창을 열어 진행하여야 함.

명령어 실행 중 error발생 시, 해당 문제를 해결, 시도한 명령을 완료한 후에 다음 단계로 진행하여야 함.

본 글과 다른 위치에 패키지를 설치하거나 파일 이동 시, 관련된 변수가 쓰인 곳 모두를 바꾸어 주어야 하며, 이는 본 글에서 다루지 않음.

각 패키지의 설치 방법과 명령어는 reference를 참고하여 제작하였음.


1. ROS melodic 설치

ROS melodic및 기타 패키지 한줄설치 명령어

wget https://raw.githubusercontent.com/kemjensak/ROS_single_line_install/main/install_ros_melodic.sh && sed -i -e 's/\r$//' install_ros_melodic.sh && chmod 755 ./install_ros_melodic.sh && bash ./install_ros_melodic.sh


Error 발생 시 다시 입력하거나 reference 참고하여 진행.

또는 ROS wiki 참고하여 line by line 수동 설치 가능.

 

Reference:
https://github.com/kemjensak/ROS_single_line_install - 한줄설치 명령어 및 bash script
http://wiki.ros.org/melodic/Installation/Ubuntu - ROS wiki 수동 설치

 

2. CARLA 0.9.13 설치

CARLA의 경우 Debian package로 설치하는 방법, repository에서 package를 직접 받는 방법이 있으며 이후 설정과 관리의 용이성을 위해 후자의 방법으로 진행함.

CARLA 0.9.13 package 압축파일 다운로드 및 압축해제 명령어

mkdir -p ~/carla_simulator/CARLA_0.9.13 && wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.13.tar.gz -P ~/carla_simulator && tar -zxvf ~/carla_simulator/CARLA_0.9.13.tar.gz -C ~/carla_simulator/CARLA_0.9.13

CARLA 실행 명령어

cd ~/carla_simulator/CARLA_0.9.13
./CarlaUE4.sh

명령어 입력 후 아래의 창이 뜨는 것을 확인하면 CARLA의 설치는 완료되었다. 창을 열어두고 다음 설치과정을 진행하면 된다.

 

 

Reference:
https://carla.readthedocs.io/en/0.9.13/start_quickstart/#b-package-installation


3. CARLA Client library 설치

CARLA Client library 또한 여러 설치 방법이 있으나 .egg 파일을 이용한 방법으로 진행함.

CARLA 설치 경로인 ~/carla_simulator/CARLA_0.9.13/PythonAPI/carla/dist/ 에 .egg 파일이 있으며

해당 파일을 PYTHONPATH에 추가해주어햐 함.

 

~/.bashrc 파일에 관련 환경변수를 추가하는 명령어

sh -c "echo \"# CARLA\" >> ~/.bashrc"
sh -c "echo \"export CARLA_VERSION=0.9.13\" >> ~/.bashrc"
sh -c "echo \"export CARLA_ROOT=~/carla_simulator/CARLA_$CARLA_VERSION\" >> ~/.bashrc"
sh -c "echo \"export PYTHONPATH="$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/:$CARLA_ROOT/PythonAPI/carla/agents/:$CARLA_ROOT/PythonAPI/carla/dist/carla-$CARLA_VERSION-py2.7-linux-x86_64.egg"\" >> ~/.bashrc"

sh -c "echo \"export CARLA_AUTOWARE_ROOT=~/ros_ws/carla-autoware/autoware_launch\" >> ~/.bashrc"
sh -c "echo \"export CARLA_MAPS_PATH=~/ros_ws/carla-autoware/autoware_data/maps\" >> ~/.bashrc"
sh -c "echo \"export CARLA_SERVER=~/carla_simulator/CARLA_$CARLA_VERSION/CarlaUE4.sh" >> ~/.bashrc"

Python API 를 통한 client 실행 명령어

cd ~/carla_simulator/CARLA_0.9.13/PythonAPI/examples
python -m pip install -r requirements.txt
python manual_control.py

타 차량이나 보행자를 추가하는 명령어(다른 터미널 창을 열어 입력)

cd ~/carla_simulator/CARLA_0.9.13/PythonAPI/examples
python generate_traffic.py

잘 작동함을 확인했다면 두 터미널과 CARLA창을 닫고 다음 과정으로 진행.

 

Reference:

https://carla.readthedocs.io/en/0.9.13/start_quickstart/#install-client-library

 

4. Autoware.AI 설치

Openplanner 최신 버전이 통합된 repository로 설치하며, Docker를 사용하지 않고 source build로 설치함.

CUDA(NVIDIA GPU) 가속 지원 없이 빌드하며,  CUDA 활성화 빌드 방법은 reference 참고.

 

Autoware 설치 명령어

sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools
mkdir ~/ros_ws && cd ~/ros_ws
git clone https://github.com/hatem-darweesh/autoware.ai.openplanner.git
cd autoware.ai.openplanner
mkdir -p src
vcs import src < openplanner.1.15.repos
rosdep update
# 문제 발생 시 rosdep init
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
rm -rf ~/ros_ws/autoware.ai.openplanner/src/autoware/core_perception/op_tlr
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
 

마지막 명령어 입력 후, 작업 중 aborted된 패키지 없이 모든 패키지가 빌드된 것을 터미널 출력을 통해 확인하여야 함.

 

설치된 디렉토리가 새로운 ROS workspace로서 기능하므로 setup.bash를 source하는 작업을 /.bashrc 파일에 입력해야 한다.

 

~/.bashrc 파일에 setup.bash 추가 명령어

sh -c "echo \"source ~/ros_ws/autoware.ai.openplanner/install/setup.bash\" >> ~/.bashrc"

Autoware runtime manager 실행 명령어

source ~/.bashrc # 위 명령어의 setup.bash를 source 하기 위함. 이후 실행시 입력하지 않아도 됨
roslaunch runtime_manager runtime_manager.launch

명령어 입력 후 아래의 창이 뜨는 것을 확인하면 Autoware의 설치는 완료되었다. 창을 닫고 다음 설치과정을 진행하면 된다.

 

Reference:

https://github.com/hatem-darweesh/autoware.ai.openplanner

https://github.com/Autoware-AI/autoware.ai/wiki/Source-Build

 

5. CARLA-ROS bridge, CARLA-Autoware bridge 설치 및 HDmap 설정

글 작성일 기준 CARLA-ROS bridge의 경우 0.9.12, CARLA-Autoware bridge의 경우 0.9.10 버전까지만 지원하므로

공식 repository의 package에서 일부 코드를 수정, 추가하였고, 해당 수정된 package들을 받아 진행한다.

 

수정된 bridge 설치 명령어

cd ~/ros_ws && git clone --recurse-submodules https://github.com/kemjensak/carla-autoware.git
cd carla-autoware/catkin_ws
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
catkin_make -DCMAKE_BUILD_TYPE=Release

터미널 출력으로 error 없이 100%까지 진행되었음을 확인한다.

 

설치된 디렉토리가 새로운 ROS workspace로서 기능하므로 setup.bash를 source하는 작업을 /.bashrc 파일에 입력해야 한다.

 

~/.bashrc 파일에 setup.bash 추가 명령어

sh -c "echo \"source ~/ros_ws/carla-autoware/catkin_ws/devel/setup.bash" >> ~/.bashrc"

 

CARLA는 Unreal engine기반으로 만들어졌고, 둘 다 xy평면을 지면으로 하고 z+방향을 위로 하는 left-handed coordinate system을 사용한다. CARLA와 함께 제공된 PCD파일도 이를 기준으로 작성되어 있으며, 이를 right-handed coordinate system을 사용하는 ROS에서 그대로 사용하면 좌우가 반전되어 표시된다.

 

이를 해결하기 위해 ROS에 맞게 제작된 PCD파일들을 아래 링크에서 다운로드 받는다.

https://bitbucket.org/carla-simulator/autoware-contents/src/master/maps/point_cloud_maps/

다운로드 받은 파일은 ~/ros_ws/carla-autoware/autoware_data/maps로 이동한다.

 

CARLA server와 ROS-bridge 실행 명령어

source ~/.bashrc # 위 명령어의 setup.bash를 source 하기 위함. 이후 실행시 입력하지 않아도 됨
cd ~/carla_simulator/CARLA_0.9.13 && ./CarlaUE4.sh -RenderOffScreen
# RenderOffScreen 옵션을 붙이면 화면 출력 없이 CARLA 서버가 실행됨
roslaunch ~/ros_ws/carla-autoware/autoware_launch/test.launch # 다른 터미널에서 실행

아래 화면과 같이 manual control과 Rviz상에 PCD map이 뜨는 것을 확인하였다면, ROS-bridge의 설치를 완료하였다.

Reference:

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

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

https://gitlab.com/hatem-darweesh-autoware.ai/carla-autoware

 

6. Scenario runner 설치

CARLA상에 차량, 보행자 등의 object를 편리하게 spwan하고 움직일 수 있게 하는 scenario runner 패키지이다.

(앞서 설치한 client library의 python API를 통해 직접 object를 spawn할 수도 있다.)

 

Scenario runner의 경우 python 2.7의 지원을 중단하였으므로 일부 수정한 코드를 받아 진행한다.

 

수정된 scenario runner 설치 명령어

git clone https://github.com/kemjensak/scenario_runner.git
cd ~/scenario_runner/
sudo apt remove python3-networkx #if installed, remove old version of networkx
pip3 install --user -r requirements.txt

샘플 시나리오를 사용한 scenario runner 실행 명령어

python3 scenario_runner.py --scenario FollowLeadingVehicle_1 --reloadWorld

 

아래 터미널 화면과 같이 error 없이  Running scenario가 출력되었다면 정상적으로 실행된 것이다.

 

 

7. full stack 실행

roslaunch ~/ros_ws/carla-autoware/autoware_launch/devel.launch

 

Scenario runner 사용 시 ros_bridge에 포함된 carla_ros_scenario_runner를 실행하면 되고, devel.launch에 사용 예시가 주석처리 되어 있다.

실행 후 scenario를 load하는 service를 call 해주어야 실제 시나리오가 CARLA에서 작동한다.

 

scenario service call 명령어

rosservice call /scenario_runner/execute_scenario "scenario: name: '' scenario_file: '~/scenario_runner/LaneChangeSimple.xosc'"

-내용 추가 예정