2장 ROS 설치하기
2장 ROS 설치하기
ROS 가 운영하는 운영체제는 다양하지만, 우분투를 제외하고는 공식적으로는 지원하지 않고 설치 방법만 제공한다. 아래 링크를 참고해서 리눅스를 듀얼부팅 하도록 하면, ROS의 모든 기능을 무리없이 사용해 볼 수 있다.
자신이 사용하려는 ROS버전에 따라서 우부투 역시 다른 버전을 준비하여야 한다. 현재 가장 많은 패키지를 가지고 있는 것은 16.04버전을 설치하여 사용할 수 있는 키네틱 버전이고, 비교적 최신 버전의 ROS를 사용하고 싶다면 18.04버전을 선택 가능하고, ROS1의 최종 버전을 사용하고 싶다면, 우분투 20.04버전을 설치하여야 한다. 하지만 현 시점에서 아직 20.04는 추천하지 않는다. 많은 ROS 패키지들이 아직 제공되지 않고 있어서 많은 어려움이 있을 수 있다.
1. 우분투에 설치하기
우분투 16.04 LTS 가 설치된 상태에서 아래의 명령어를 터미널창에서 실행합니다.(우분투를 버츄얼 머신으로 설치하는 것은 비추입니다.단독 혹은 멀티부팅으로 설치하세요. 그리고 우분투는 영문으로 설치하세요.) Gazebo에서 시뮬레이션을 동작시키고, 포인트클라우드와 비전처리를 위해서 8G정도의 RAM을 추천합니다.
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
Ubuntu 18.04(Bionic), Melodic ROS
wget https://raw.githubusercontent.com/orocapangyo/meetup/master/190830/install_ros_melodic.sh && chmod 755 ./install_ros_melodic.sh && bash ./install_ros_melodic.sh
만약에 일반 데스크탑이나 노트북이 아닌 라즈베리파이 3를 이용하는 경우는 하기의 1줄 설치를 이용해주세요.
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic_rp3.sh && chmod 755 ./install_ros_kinetic_rp3.sh && bash ./install_ros_kinetic_rp3.sh
2. 일반 설치
NTP(Network Time Protocol) 설정
NTP 설정을 함으로써 서로 다른 PC간에 시간의 오차를 최소한으로 줄일수 있다.
sudo apt-get install -y chrony ntpdate
sudo ntpdate -q ntp.ubuntu.com
소스 리스트 추가
Ros-latest.list 에 ROS 저장소를 추가한다.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
키 설정
ROS 저장소로부터 패키지를 내려받기 위해 공개키를 추가한다.
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
패키지 인덱스 업데이트
sudo apt-get update && sudo apt-get upgrade -y
ROS Kinetic Kame 설치
다음 명령으로 ROS, rqt, Rviz, 로봇관련 라이브러리, 시뮬레이션 내비게이션 등이 포함된다.
sudo apt-get install ros-kinetic-desktop-full
위의 설치만으로도 기본적인 rqt는 포함되지만 다양한 rqt 플러그인의 사용을 위해 추가로 설치한다.
sudo apt-get install ros-kinetic-rqt*
rosdep 초기화
ROS 를 사용하기 전에 반드시 rosdep 을 초기화해야 한다. Rosdep 은 ros 의 핵심 컴포넌트들을 사용하거나 컴파일 할 때 의존성패키지를 쉽게 설치하여 사용자 편의성을 높여주는 기능이다.
sudo rosdep init
rosdep update
rosinstall 설치
ROS 의 다양한 패키지를 인스톨하는 프로그램이다.
sudo apt-get install python-rosinstall
환경설정 파일 불러오기
환경설정파일은 ROS_ROOT, ROS_PAKAGE_PATH 등의 환경변수들이 정의 되어 있다.
source /opt/ros/kinetic/setup.bash
작업 폴더 생성 및 초기화
ROS 에서 catkin 이라는 ROS 전용 빌드 시스템을 사용하고 있다. 이를 사용하려면 다음처럼 catkin 작업 폴더를 생성하고 초기화해야 한다. 이 설정은 작업 폴더를 새롭게 생성하지 않는 한 처음 한 번만 설정해 주면 된다.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
현재 catkin 작업 폴더에는 src 폴더와 그 안에 CMakeList.txt 파일만 있지만 시험삼아 catkin_make 명령어를 이용해 빌드해 보자.
cd ~/catkin_ws/
catkin_make
ls
Build
Devel
Src
마지막을 catkin 빌드 시스템과 관련된 환경 파일을 불러오자.
source ~/catkin_ws/devel/setup.bash
테스트
ROS의 모든 설치가 완료 되었으니 테스트 해보자. 새로운 터미널 창을 열어 실행한다.
roscore
3. ROS 환경 설정
ROS 환경설정 파일을 불러오기 위해서는 새로운 터미널 창을 열 때마다 매번 아래의 명령을 매번 실행해야 한다.
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
이러한 번거로움을 없애고 네트워크 등 기타 설정을 불러들이기 위해 gedit로 bashrc 파일을 편집한다.
gedit ~/.bashrc
아래의 내용을 삽입한다.
alias eb =‘nano ~/.bashrc'
alias sb ='source ~/.bashrc'
alias cw ='cd ~/catkin_ws'
alias cs ='cd ~/catkin_ws/src'
alias cm ='cd ~/catkin_ws && catkin_make'
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost
#export ROS_MASTER_URI=http://192.168.1.100:11311
#export ROS_HOSTNAME=192.168.1.100
ROS 네트워크 설정 ROS_MASTER_URI와 ROS_HOSTNAME의 설정이다. ROS는 네트워크를 이용해 노드 간에 메시지 통신을 하기 때문에 이 설정은 매우 중요하다.우선은 둘 다 자신의 네트워크 IP를 입력해주면 된다. 차후에 마스터 PC가 따로 있고, 로봇은 호스트 PC를 사용하는 경우, 이를 구분하여 입력하면 다른 컴퓨터 간의 통신이 가능하게 된다.
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost
단축 명령어
alias eb =‘nano ~/.bashrc' #eb 명령만으로 bashrc 파일 수정
alias sb ='source ~/.bashrc' #sb 명령으로 환경설정 불러오기
alias cw ='cd ~/catkin_ws' #cw 명령으로 워크스페이스 폴더로 이동
alias cs ='cd ~/catkin_ws/src' #cs 명령으로 src 폴더로 이동
alias cm ='cd ~/catkin_ws && catkin_make' #cm 명령으로 빌드를 할 수 있다.
4. ROS 동작 테스트
turtlesim 패키지
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
rqt_graph
Last updated
Was this helpful?