Autoware

3 minute read

Autoware

자율주행 SW 플랫 폼을 조사하였더니 다음과 같은 SW들을 확인할 수 있었다.

  1. Appolo: Baidu 오픈 플랫폼, ROS Middelware대신 자체 개발한 Cyver RT Middelware 적용
  2. Autoware: ROS + Linux 기반 오픈 플랫폼
  3. EB robinos && EB robinos Predictor: Elektrobit 플랫폼
  4. DriveWorks: Nvidia 플랫폼
  5. OpenPilot: comma.ai 오픈 플랫폼

앞으로의 알아볼 자율주행 SW플랫폼은 Appolo와 Autoware이고 이 중 AutoWare에 대해서 먼저 알아보도록 하자.

Autoware는 오픈소스 소프트웨어로서 일본의 Tier IV를 통해 관리되고 있는 자율주행 개발/시물레이션 소프트웨어 이다.
이러한 오픈소스는 GitHub에 통해서 모든 Source가 공개되어있고 사용할 Version은 1.12이다.
참조: Autoware GitHub

Autoware는 아래와 같은 Spec을 요구하고 있다.
Autoware 필요 Spec

  • Number of CPU cores: 8
  • RAM size: 32GB
  • Storage size: 64GB+

PointCloud형태의 Lidar Data를 다루기 위해서 Memory를 많이 필요로 하고 또한 병렬적으로 실행되는 프로그램들이 많아 많은 RAM Size를 요구하고 있다.

현재 Local Computer의 HardWare 스펙은 다음과 같다.

  • Number of CPU cores: 12
  • RAM size: 32GB
  • Storage size: 400GB

위의 Spec을 만족시키기 때문에 아무런 추가사항없이 설치를 진행하였다.


Autoware Architecture

Autoware의 Architecture를 살펴보면 다음과 같다.

사진 출처: redisle 블로그

위의 Architecture를 살펴보게 되면 크게 3가지의 Component로서 구성되어 있다.

  • Sensing: 하드웨어 센서들의 드라이버와 구동 스크립터
  • Computing: Sensing의 Data를 활용하여 Localization, Object Detection등 Algorithm을 시행한다.
  • Actuation: 전자 신호로 차량을 제어할 수 있게 CAN 신호를 전달하는 프로그램

부가적으로 Data, Socket System, Util등이 존재한다.
이러한 Autoware는 위에서도 설명하였듯이 ROS기반으로 되어있다.
(Autoware를 정확히 이해하고 Customizing을 위하여 C++과 ROS는 따로 공부해야 겠다.)


Autoware 설치

먼저 AutoWare 정식 Homepage에서 권장하는 HW Spec과 SW Version을 살펴보면 다음과 같다.

Supported Configurations

Autoware Version Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04
v1.13.0 X
v1.12.0 X X
v1.11.1 X
v1.11.0 X
v1.10.0 X
v1.9.1 X X
v1.9.0 X X

현재 Ubuntu 18.04 Version 이므로 Autoware를 v1.12.0을 사용한다.

Requirements

Product Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04
ROS Indigo Kinetic Melodic
Qt 4.8.6 or higher 5.2.1 or higher 5.9.5 or higher
CUDA (optional) 8.0GA(?) 9.0 10.0
FlyCapture2 (optional)
Armadillo (optional)


1. ROS 설치

위에서도 Autoware는 ROS기반으로 동작하기 때문에 Base가 되는 ROS를 설치하여야 한다.
ROS는 Ubuntu의 Version에 따라서 지원하는 Version이 각각 다르다.

  • 18.04: Melodic
  • 17.04: Lunar
  • 16.04: Kinetic

위에서 현재 작성자의 Ubuntu Version은 18.04이므로 ROS Melodic 기준으로서 설명하고 설치를 진행하였다.

# Setup your sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

# Setup your keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# Installation
sudo apt update
sudo apt install ros-melodic-desktop-full

# Check Installation
apt search ros-melodic

# Initialize rosdep
sudo rosdep init
rosdep update

# Environment setup
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# Dependencies for building packages
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential python3-vcstool python3-colcon-common-extensions python3-setuptools


2. 사전 필요사항 설치

CUDA의 경우 10.0 Version을 설치를 권하고 있다.
다음의 Code를 입력하게 되면 Ubuntu에서 내장되어있는 Graphic Card와 호환되는 Nvidia-Driver와 CUDA를 자동으로 설치 가능하다.

NVIDIA-Driver 설치

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot


참고 사항으로서 기존에 설치된 프로그램들과 충돌이 발생하면 sudo apt --purge autoremove nvidia* 명령어로 관련 프로그램을 삭제한고 다시 시도한다. (단 autoremove는 말 그대로 관련된 모든 것을 삭제해버려서 어떤것이 삭제 될 지는 모른다…)
또한 Melodic에서 GPU를 지원하려면 Eigen Version >= 3.3.7이 필요하다고 한다.

Eigen 설치

cd && wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
mkdir eigen && tar --strip-components=1 -xzvf 3.3.7.tar.gz -C eigen
cd eigen && mkdir build && cd build && cmake .. && make
sudo make install
cd && rm -rf 3.3.7.tar.gz && rm -rf eigen


위에서 설치한 Eigen Version으로 바꾸여야 합니다.
vi /usr/local/share/eigen3/cmake의 File을 살펴보게 되면
Eigen3Config.cmake, Eigen3Targets.cmake, Eigen3ConfigVersion.cmake, UseEigen3.cmake 4개의 File이 존재하게 됩니다.
Eigen3Config.cmake: 32번째 Line -> : set (EIGEN3_VERSION_STRING “3.3.7”)
설치한 Eigen의 Version이 위와 같이 3.3.7인 것을 확인하면
/usr/local/share/eigen3/cmake 의 모든 File을 /usr/lib/cmake/eigen3로 복사한다.
그 뒤 아래 설치를 진행한다.

gcc, g++ 설치
Ubuntu 18.04를 사용하면 Default된 gcc, g++ Version이 존재하게 된다.
이러한 Version이 아닌 현재 Autoware쪽에서 원하는 Version으로서 Matching하는 작업이 필요하다.
1) g++, gcc 설치

# g++ 7 설치
sudo apt-get install g++-7
# gcc 5 설치
sudo apt-get install gcc-5


2) g++, gcc 등록

# g++ 등록
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 40
# gcc 등록
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40


3) 우선순위 등록
sudo update-alternatives --config gcc & sudo update-alternatives --config g++
위의 명령어를 하게 되면 아래와 같이 등록된 gcc와 g++중에서 선택하여 사용할 수 있다.



3. GitHub Download

실질적인 Autoware의 Simulation환경에서 작업하기 위하여 Autoware가 제공하는 Git을 Download받는다.
Autoware 1.12 다운로드

# src Directory 생성
mkdir -p autoware.ai/src
cd autoware.ai

# Autoware 1.12 Download
wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/master/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos

# ROS Submodule 설치
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

# Compile
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release



참조: redisle 블로그
참조: cnblogs 블로그
참조: Ham and Eggs 블로그
참조: Autoware 정식 사이트
문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment