3 분 소요

Autoware 설치작업에 들어가다(5)

오늘 최대한 autoware작업을 끝내보려고 한다. 이거 끝내고 내일 운전면허 필기시험 치러 가야겠다.

일단 문서화를 위해 우분투에서 쉽게 캡처가 가능한 애플리케이션을 설치하자!

기본 스크린샷 단축키를 flameshot으로 대체하기

터미널을 열어 apt로 설치를 진행해주었다.

sudo apt-get install flameshot

해당 프로그램이 깔렸으면 우클릭으로 Configure에 들어가준다.

brave_gfEsPzJCZy

Configure메뉴에서 원하는 설정에 맞게 커스터마이징을 진행해주었다(생략가능)

brave_UWiqFQoeZF

취향에 맞게 설정하고 나서 시작프로그램에 등록을 체크해주었다.

brave_GswOfFcFRH

그리고 settings -> Keyboard -> Keyboard Shortcuts에 들어가서 “print”를 검색하여 원래 기본 내장되어 있던 키를 BackSpace를 통해 지워주었다.

brave_elkLG66J08

이후 Keyboard Shortcuts메뉴 아래에 내려가다 보면 [Custom Shortcuts]가 있는데 클릭해주었다.

brave_ixdCmlcJon

이후 다음과 같이 입력해서 설정해주었다.

brave_wLVtlqW7GW

끝!

우분투22.04에 Nvidia 드라이버 설치하기

  1. 기존 NVIDIA 패키지 제거
sudo apt-get purge '^nvidia-.*'
  1. 패키지 리스트 업데이트
sudo apt-get update
  1. NVIDIA 드라이버 설치
sudo apt install nvidia-driver-535
  1. NVIDIA 모듈 로드하기
sudo modprobe nvidia
  1. 시스템 재부팅하기
sudo reboot
  1. 드라이버 설치 확인
nvidia-smi

끝!

Github에 SSH Key 등록 및 연동하기

  1. SSH Key가 있는지 확인하기(포맷했으면 없을 것이다.)
    jacksmith@jacksmith-desktop:~$ cd ~/.ssh
    jacksmith@jacksmith-desktop:~/.ssh$ ls
    known_hosts
    

    (저 known_hosts는 네트워크 딴에서 사용하는 폴더라 카는데 잘 모르겠다)

  2. SSH Key 생성하기

    ssh-keygen -t rsa -b 4096 -C "2170004487z@gmail.com"
    

    brave_QmwBT79j0M

  3. SSH Key조회하기

     jacksmith@jacksmith-desktop:~/.ssh$ ls
     id_rsa		id_rsa.pub		known_hosts
    
  4. SSH Agent를 백그라운드로 실행하기

     jacksmith@jacksmith-desktop:~/.ssh$ eval $(ssh-agent)
    
  5. 생성한 SSH Key를 ssh-agent에 등록하기

     jacksmith@jacksmith-desktop:~/.ssh$ ssh-add ~/.ssh/id_rsa
    

    brave_upRSkQr2yR

  6. ‘xclip’ 설치하기

     sudo apt-get install xclip
     (공개키를 클립보드에 그냥 복사할수가 없어서 이 유틸리티 도구를 설치해야 한다고 한다.)
    
  7. 깃허브 사이트에 ssh key 등록하기

    사이트에 들어가서 [프로필] -> [settings] ->[SSH and GPG keys] -> [New SSH key] 클릭!

    POWERPNT_RshGNTRShx

    .ssh폴더에서 앞서 발급받았던 공개키를 클립보드에 복사해주었다.

     jacksmith@jacksmith-desktop:~/.ssh$ xclip -sel clip < ~/.ssh/id_rsa.pub
    

    여기다가 붙여넣어준다.

    POWERPNT_qOQplEuefw

끝!

영상 따라서 설치진행하기

여기 링크의 튜토리얼 영상을 통해 튜토리얼을 진행하였다.

  1. 폴더구축하기

    다음과 같이 폴더를 구축할 예정이다.

    POWERPNT_eKSv04yiVq

  2. docker image 땡겨오기

     docker pull ghcr.io/autowarefoundation/autoware-universe:humble-2024.01-cuda-amd64
    
  3. NVIDIA Container Toolkit 설치하기

    • GPU 드라이버 및 CUDA 버전 호환성 확인
    nvidia-smi				# 기본정보 확인 명령어
    nvidia-smi -q 			# 상세정보 확인 명령어
    

    이를 통해 호스트 운영체제에서 현재 사용중인 GPU 드라이버 및 CUDA 버전을 확인할 수 있다. Tensorflow의 버전과 호환되는지 확인한 후에 Docker로 Tensorflow-GPU를 실행하면 원활하게 작업할 수 있다.

# 1.업데이트
sudo apt-get update

# 2.NVIDIA 레포지토리 추가
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

# 3.nvidia-container-toolkit 설치
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

# 4.docker-service 재시작
sudo systemctl restart docker

이제 GPU 지원이 가능한 Docker Container를 실행할 수 있을 것이다.

테스트를 위해 아래와 같이 Tensorflow GPU 이미지를 실행해보자!

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu bash

이게 정상적으로 되면 아래와 같이 실행된 것을 확인할 수 있을 것이다.

brave_5q7geCrZZB

만약 오류가 뜬다면? (※추가 솔루션)

1.)루트 아래에 /etc/docker로 이동해준다.

jacksmith@jacksmith-desktop:~$ cd /etc/docker
jacksmith@jacksmith-desktop:/etc/docker$ 

2)/etc/docker/daemon.json파일이 있는지 확인하고 없으면 만든다.

jacksmith@jacksmith-desktop:/etc/docker$ sudo touch daemon.json

3)해당파일을 편집해서 아래 내용을 넣어준다,

jacksmith@jacksmith-desktop:/etc/docker$ sudo nano daemon.json
{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

4)그리고 nvidia-docker2를 설치해준다.

sudo apt-get install -y nvidia-docker2

5)이후 도커 서비스를 재시작해준다.

sudo systemctl restart docker

  1. rocker 실행
jacksmith@jacksmith-desktop:~/playground/auto-workspace$ rocker --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --nvidia --volume /home/jacksmith/playground/auto-workspace -- ghcr.io/autowarefoundation/autoware-universe:humble-2024.01-cuda-amd64

[Loading....]

root@jacksmith-desktop:/autoware# 
  1. 가상환경 접속하기
root@jacksmith:/autoware# cd /home/jacksmith/playground/auto-workspace/autoware
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# 

(나도 잘은 모르겠는데 가상환경에서 소스코드가 있는 다음 환경으로 이동한 것 같다)

POWERPNT_Z7ewNVNlKS

  1. autoware 아래에 src(source) 디렉토리 생성하기
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# mkdir src
  1. autoware.repos에 정의된 리포지들을 src 디텍토리에 가져오기
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# vcs import src < autoware.repos

src 디텍토리에 들어간 파일들 확인해보았다.

root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# cd src
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# ls
core	launcher	param	sensor_component	sensor_kit	universe	vehicle

brave_2YFzU3yBuA

  1. 창을 하나더 열고 다음과 같이 gitclone 해준다.
# 카를라-오토웨어-브릿지를 git clone 해주기
jacksmith@jacksmith-desktop:~/playground/auto-workspace$ git clone https://github.com/TUMFTM/Carla-Autoware-Bridge.git
  1. 클론한 레포지토리에 들어가기
jacksmith@jacksmith-desktop:~/playground/auto-workspace$ cd Carla-Autoware-Bridge
jacksmith@jacksmith-desktop:~/playground/auto-workspace/Carla-Autoware-Bridge$ 
  1. 쉘 파일 실행하기
jacksmith@jacksmith-desktop:~/playground/auto-workspace/Carla-Autoware-Bridge$ ./docker/build_docker.sh

위에서 실행한 파일 속 내용은 아래와 같다. 자세한 내용은 링크 참고!

brave_5sLpSeHS11

  1. 링크타고 들어가서 Town10.zip파일 다운받고 압축풀기

해당 링크에 들어가서면 아래와 같이 사이트 화면이 뜨는데 Town10.zip파일을 다운받는다.

POWERPNT_QbWjMWfOhK

그러면 Downloads폴더에 zip파일이 있을텐데, 이를 압푹을 해제한다.

  1. Docker 이미지 땡겨오기
docker pull carlasim/carla:0.9.15
  1. 코드수정(1)

auto-workspace딴에서 vsocode를 켜고 아래 경로로 들어간다.

autoware/src/launcher/autoware_launch/launch/autoware_launch.xml

71번째 라인의 코드를 주석처리하고 아래 코드를 넣어준다. (출처)

<arg name="config_dir" value="$(find-pkg-share carla_t2_sensor_kit_description)/config/"/>

before>

POWERPNT_FMa5EerTz3

after>

brave_o3M3p3rsuE

  1. 코드수정(2)

마찬가지로 auto-workspace딴에서 vsocode를 켜고 아래 경로로 들어간다.

autoware/src/launcher/autoware_launch/autoware_launch/launch/components/tier4_localization_component.launch.xml

before>

POWERPNT_3hOVxf0ObC

after>

brave_D6R45Z5kdm

  1. docker로 접속되어 있는 커맨드창으로 돌아와서, colcon 빌드하기
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# colcon build --packages-select autoware_launch
  1. window + alt + t를 눌러 새로 터미널 창 띄우고, 다시 세개로 분할하기

이렇게 첫번째, 두번째 세번째 창을 만들어준다.

brave_svt2wSFdNg

  1. carla 실행하기!

세번째 창에 아래 코드를 넣어 도커 컨테이너를 실행한다.

docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:0.9.15 /bin/bash ./CarlaUE4.sh -carla-rpc-port=1403 

잘 실행되었으면 GTA같은 화면이 뜰것이다.

결과화면:

brave_70kGvDEbWd

  1. 브릿지 실행하기!

두번째 창에 아래 코드를 넣어 브릿지를 실행한다.

jacksmith@jacksmith-desktop:~/playground/auto-workspace/autoware$ docker run -it -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp --network host tumgeka/carla-autoware-bridge:latest


root@jacksmith-desktop:/tum# ros2 launch carla_autoware_bridge carla_aw_bridge.launch.py port:=1403 town:=Town10HD
  1. rocker 실행하기!
# format:
rocker --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --nvidia --volume /path/to/code -- ghcr.io/autowarefoundation/autoware-universe:humble-2024.01-cuda-amd64

# me:
rocker --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --nvidia --volume /home/jacksmith/playground/auto-workspace -- ghcr.io/autowarefoundation/autoware-universe:humble-2024.01-cuda-amd64
  1. 가상환경 접속하기!
root@jacksmith:/autoware# cd /home/jacksmith/playground/auto-workspace/autoware

(나도 잘은 모르겠는데 가상환경에서 소스코드가 있는 다음 환경으로 이동한 것 같다)

  1. 패키지 셋업하기
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# source install/setup.bash
  1. Town10.폴더 옮겨주기

압축해제한 Town10폴더를 auto-workspace로 옮겨준다.

  1. ros2 실행하기
# format:
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=carla_t2_vehicle sensor_model:=carla_t2_sensor_kit map_path:=<path to /wsp/map>

# me:
root@jacksmith:/home/jacksmith/playground/auto-workspace/autoware# ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=carla_t2_vehicle sensor_model:=carla_t2_sensor_kit map_path:=/home/jacksmith/playground/auto-workspace/Town10

댓글남기기