Skip to content

ROS 1 설치

본 문서는 Ubuntu 18.04에 ROS 1 Melodic을 설치하는 전체 단계와 자주 발생하는 오류 처리 방법을 설명합니다.

1. 소프트웨어 소스 구성

Ubuntu 기본 소프트웨어 소스의 속도가 느리므로, 국내 미러(Aliyun을 예시로)로 교체하는 것을 권장합니다.

원본 sources.list 백업

bash
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

Aliyun 미러 소스로 교체

bash
sudo gedit /etc/apt/sources.list

파일 맨 앞에 추가합니다:

bash
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

소프트웨어 목록 새로 고침

bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential

2. ROS 소프트웨어 소스 추가

공식 소스

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

칭화(Tsinghua) 미러 (국내 사용 권장)

bash
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

3. 키 추가

bash
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4. ROS 설치

bash
sudo apt update
sudo apt install ros-melodic-desktop-full

5. rosdep 설치 및 초기화

bash
sudo apt update
sudo apt install python-rosdep
sudo rosdep init
rosdep update

순조롭게 진행되면, rosdep 초기화 및 업데이트 결과는 다음과 같습니다:

rosdep init 성공 출력, 20-default.list 기록 및 rosdep update 실행 권장

rosdep update 성공, 소스 목록 읽기, yaml 다운로드, ROS 배포 추가 표시

rosdep 초기화 실패 해결

초기화가 실패하면 (GitHub 서버 접근 제한 때문), 먼저 모바일 핫스팟에 연결하여 rosdep init을 시도해 봅니다. 그래도 안 되면 아래 단계에 따라 수정합니다.

sources_list.py 수정

bash
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

download_rosdep_data 함수에서 url = "https://raw.githubusercontent.com/..."url = "https://ghproxy.com/" + url로 변경합니다.

rosdistro/init.py 수정

bash
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

DEFAULT_INDEX_URL(72번째 줄)을 찾아 다음으로 변경합니다:

python
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

gbpdistro_support.py 수정

bash
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py

download_rosdep_data 함수 시작 부분 (36번째 줄 근처)에 다음을 추가합니다:

python
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

rep3.py 수정

bash
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py

약 39번째 줄에 프록시 접두사를 추가합니다.

manifest_provider/github.py 수정

bash
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py

약 68번째 줄과 119번째 줄에 프록시 접두사를 추가합니다.

DNS 문제 처리

여전히 오류가 해결되지 않으면 DNS 수정을 시도해 봅니다:

bash
sudo gedit /etc/resolv.conf

기존의 nameserver 줄을 주석 처리하고 다음을 추가합니다:

bash
nameserver 8.8.8.8
nameserver 8.8.4.4

저장하고 종료한 후 다음을 실행합니다:

bash
sudo apt-get update

다음을 실행합니다:

bash
sudo rosdep init

만약 default sources list file already exists 오류가 표시되면, 먼저 기존 파일을 삭제합니다:

bash
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

그런 다음 sudo rosdep init을 다시 실행합니다.

6. 환경 변수 설정

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

7. ROS 기능 패키지 설치

bash
sudo apt-get install ros-melodic-moveit
sudo apt-get install ros-melodic-joint-state-publisher
sudo apt-get install ros-melodic-robot-state-publisher
sudo apt install ros-melodic-gazebo-ros-pkgs
sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-joint-trajectory-controller
sudo apt-get install ros-melodic-industrial-core

8. 테스트

ROS에는 몇 가지 작은 프로그램이 내장되어 있으며, 이 프로그램을 실행하여 ROS 환경이 정상적으로 작동하는지 확인할 수 있습니다.

roscore 실행

bash
roscore

작은 거북이 시뮬레이터 실행

다른 터미널을 엽니다:

bash
rosrun turtlesim turtlesim_node

키보드 제어 실행

또 다른 터미널을 엽니다:

bash
rosrun turtlesim turtle_teleop_key

커서를 이 터미널에 두고, ↑, ↓, ←, → 키를 사용하여 작은 거북이를 제어합니다:

TurtleSim 시뮬레이터 창에 갈색 작은 거북이와 지나간 흰색 궤적 표시