Apollo

Baidu사에서 만든 오픈소스 자율 주행 플랫폼

Homepage : https://apollo.auto/

GitHub : https://github.com/ApolloAuto/apollo

YouTube : https://www.youtube.com/channel/UC8wR_NX_NShUTSSqIaEUY9Q

 

환경 설정

  • 그래픽 드라이버 설치

    • Sotftware & Update 에 진입한다.

    • 자신에게 맞는 NVIDIA 드라이버를 선택 후 “Apply Changes” 를 클릭하여 설치 한다.

  • Apollo master 브랜치를 사용하는 경우에는 NVIDIA Ampere (30x0) GPU를 지원합니다.

  • 터미널 창에 “nvidia-smi” 를 입력하여 정상 설치 되었는지 확인한다.

Morai SIM

현재 “Jeju-Airport”, “2017_KIA_NIRO, 2017_hyundai_solati_h350” 차량만 지원

MORAI SIM Network 설정

  • Frame Rate Setting

    • Apollo로 전송되는 데이터의 Frame을 변경 가능

Target Frame은 “30”로 설정 해준다.

  • IP Setting

    • Host, Destination IP 설정 가능.

    • Local에서 동작 하고자 한다면 Host IP, Destination IP 모두 127.0.0.1로 설정한다.

  • 아래 PORT 번호는 수정하지 않고 사용.

  • 설정을 마친 후 Apply를 클릭해 적용한다.

  • 적용을 마친 후 키보드의 “P” 버튼을 눌러 Parking 모드로 변경 해 둔다.

Cmd Control

  • Host, Destination IP 설정.

Publisher, Subscriber

  • Frame Rate, IP Setting 설정.

GT data

  • obstacles, traffic light

Apollo 실행

Apollo에 관한 자세한 설명은 아래 URL을 참고 한다.

환경 설정

  • Repositoty clone

    • https://github.com/morai-developergroup/apollo

    • 위 Repository 에서 master branch 를 clone 한다.

    • MORAI에서 제공하는 Repository는 21.12.08 일의 Apollo master branch를 Fork 후 MORAI SIM과 연동할 수 있는 Bridge 코드를 추가

  • Apollo 공식 Repository가 아닌 MORAI에서 제공하는 Repository 에서 git clone 하여 테스트

  • Docker 설치

    • clone이 완료 되었으면 install_docker.sh 을 실행하여 도커를 설치한다.

      cd /apollo/docker/setup_host
      chmod +x install_docker.sh
      
      ./install_docker.sh
      
      sudo groupadd docker
      sudo usermod -aG docker $USER
      CODE
  • NVIDIA Container Toolkit 설치

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get -y update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

sudo reboot
NONE

  • Apollo Docker 진입

    • $APOLLO_ROOT_DIR 에서 아래 명령어를 입력한다.

    • dev_start.sh 쉘 파일을 실행하기 위해서는 유선 인터넷이 연결 되어 있어야 한다.

./docker/scripts/dev_start.sh
./docker/scripts/dev_into.sh
CODE

  • Network 세팅

    • Apollo → Morai SIM 으로 Control cmd를 전송하는 “remote_ip”는 기본 “127.0.0.1” 으로 설정 되어 있다.

    • 다른 PC에서 실행 하고자 한다면 “remote_ip” 변경 필요.

  • Map 추가

    • jeju map을 “apollo/modules/map/data/” 경로에 넣고 압축을 풀어준다.

    • apollo/modules/map/data/Jeju_Airport/맵파일 로 구성되도록 한다.

Jeju_Airport.zip

  • Car 차량 추가

    • “apollo/modules/calibration/data” 내에 아래 파일 압축 해제

Vehicle_config.zip

  • Apollo Build

    • 아래 명령어를 통해 Apollo를 빌드 한다.

./apollo.sh build_opt_gpu
CODE

Apollo 세팅 및 주행 테스트

  • Dreamview 실행

    • 아래 명령어 입력

./scripts/bootstrap.sh
CODE

  • Dreamview 설정

    • dreamview 실행 코드를 입력 후에 크롬을 이용하여 주소창에 “localhost:8888”을 입력하여 접속한다.

  • 위와 같은 화면을 확인 하였으면 우측 상단의 설정 창을 이용하여 아래 와 같이 설정해 준다.

    • 사용하고자 하는 차량과, 맵을 선택한다.

  • DreamView

  • DreamView 설정 방법

    • Module Controller 탭을 클릭하여 열어준다.

    • 기본적으로 GT 데이터를 사용하여 목적지 까지 가고 자 한다면 Control, Localization, Obstacle GT_data, Planning, Prediction, Routing, Traffic Light GT_data, Transform을 클릭하여 동작 시켜 준다.

    • Obstacle Perception을 이용하고자 한다면 Velodyne 128ch 을 연결 후 Obstacle Perception 버튼을 클릭하여 동작 할 수 있다.

  • 다음과 같이 RTK Localization 되는 것을 확인 할 수 있다.

  • 경로 설정

    • 왼쪽편의 Route Editing을 선택

    • 아래와 같은 화면을 확인한다.

    • 마우스의 휠을 이용하여 지도를 축소한뒤 원하는 목표지점을 선택 후 상단의 “Send Routing Request”를 클릭한다.

    • 다시 왼쪽의 메뉴 중 “Tasks” 를 선택하여 경로가 생성된 것을 확인 한다.

    • Morai SIM 으로 돌아와서 키보드의 “q” 키를 클릭 해 자율주행 모드로 변경한다.

    • Dreamview, Morai SIM에서 목표지점으로 가는 것을 확인한다.

Sensor 설정

Lidar Velodyne 128ch

  • Velodyne 128ch을 원하는 위치에 추가한다.

  • 카메라에 대한 설정을 마친 후 자신의 네트워크에 맞게 Host IP, Destination IP를 설정한다.

    • Host Sensor Port : 2369, Destination Port : 2368 로 설정 한다.

  • 설정을 마친 후 “Connect” 버튼을 클릭하여 연결한다.

DreamView의 Module Controller창에서 Velodyne 128ch 모듈을 클릭하여 동작 시켜준다.

  • Velodyne 128ch 연동 확인

    • Cmd 창에 “cyber_visualizer” 를 입력하고 실행하여 준다.

    • cyber_visualizer
      CODE
    • 상단의 “Show PointCloud” 버튼을 클릭하여 “PointCloud2” 채널을 생성한다.

    • “ChannelName”을 선택한 뒤 “/apollo/sensor/lidar16/PointCloud2”를 선택한다.

  • 아래와 같이 PointCloud가 출력되는 것을 확인한다.

Camera

  • 카메라를 원하는 위치에 추가한다.

  • 카메라에 대한 설정을 마친 후 자신의 네트워크에 맞게 Host IP, Destination IP를 설정한다.

    • Host Sensor Port : 15009, Destination Port 15019 로 설정 한다.

    • Traffic light Perception을 이용하려면 해상도를 1920x1080으로 사용하여야 한다.

  • 설정을 마친 후 “Connect” 버튼을 클릭하여 연결한다.

Sim Frame이 30 이하인 경우 통신이 끊길 수 있음

DreamView의 Module Controller창에서 Camera 모듈을 클릭하여 동작 시켜준다.

Camera 연동 확인 - 1

  • Dreamview 하단의 Camera Sensor 스위치를 클릭하면 우측 하단에서 카메라 영상을 확인 할 수 있다.

Camera 연동 확인 - 2

  • cyber_launch start modules/bridge/launch/morai_bridge_camera.launch
    CODE
  • 위 명령어 입력 (위 명령어를 통해 Bridge 연결 시 “cyber_visualizer”로 연동 확인 가능)

  • cmd 창에 “cyber_visualizer” 명령어 입력

  • “Add Image” 를 클릭하여 카메라를 추가

  • Camera0 의 채널을 “/apollo/sensor/camera/image” 로 선택 후 “Play” 버튼을 클릭한다.

DreamView의 Module Controller - Camera 모듈과 동시에 작동 할 수 없다.

Morai SIM의 camera영상은 “/apollo/sensor/camera/front_6mm/image/compressed”로 전송하고 있다.

  • Camera 영상 정상 출력 확인