Autoware
Autoware
자율주행 SW 플랫 폼을 조사하였더니 다음과 같은 SW들을 확인할 수 있었다.
- Appolo: Baidu 오픈 플랫폼, ROS Middelware대신 자체 개발한 Cyver RT Middelware 적용
- Autoware: ROS + Linux 기반 오픈 플랫폼
- EB robinos && EB robinos Predictor: Elektrobit 플랫폼
- DriveWorks: Nvidia 플랫폼
- 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을 남겨주세요.
Leave a comment