아래는 최신(2019/2/18현재) Raspbian stretch OS가 설치된 Raspberry pi 3(파이 3) 에 ROS Kinetic을 설치하는 과정을 정리한 것이다.


Intro


일반적인 amd64 Ubuntu 시스템에서는 apt install을 통해 ROS kinetic 을 설치할 수 있지만 파이3에 설치하기 위해서는 Source로부터 build하는 과정을 거쳐야한다.

ROS 위키에 정리된 내용은 http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi 에 있지만 일부 과정이 설명이 부족하여 시행착오를 거쳐 정리하였다.


일부 과정은 아래 링크의 내용을 참고하였다.

https://neverbenever.wordpress.com/2017/12/20/install-ros-and-opencv-in-raspberry-piraspbian-stretch/


2019/2/20일 현재 최신 버전의 Raspbian 에 ROS-Kinetic 최소 버전(ROS-Comm)이 설치된 SD카드 이미지는 다음 링크에서 다운로드할 수 있다.

https://drive.google.com/file/d/13i6vCTXc-ZihoKoj3K01gEJaMW_RZWLk/view?usp=sharing

etcher등의 이미지 다운로드 프로그램을 통해 microsd카드에 쓰고 설치하면 된다.



1. Raspbian stretch 설치


Raspbian(라즈비안)은 파이3의 운영체제이다.

자세한 설치 과정은 아래 글을 참조한다.

라즈베리파이 디지털 액자 설정하기

https://kyubot.tistory.com/122?category=681568


2. ROS Kinetic 설치하기


2.1 SWAP 사이즈 변경


설치를 진행하기 앞서 100MB로 설정된 swap 사이즈를 1024MB로 변경한다.

/etc/dphys–swapfile 파일을 편집기로 열고 CONF_SWAPSIZE 부분의 값을 수정하고 저장한다.


# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024

이제 변경된 swap size를 적용하기 위해 다음을 입력한다.

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

주의: ROS 설치가 완료되면 Swap 사이즈를 반드시 100MB로 복원해주어야 한다.


2.2 ROS 저장소 설정하기


라즈비안 Stretch 운영체제에서 빠진 패키지를 추가해준다.

$ sudo apt-get install dirmngr


ROS 저장소를 apt 목록에 추가한다.

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

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

이제 apt 목록을 새로 업데이트 하고 최신 버전으로 업그레이드한다.

$ sudo apt-get update
$ sudo apt-get upgrade


2.3 Bootstrap 의존성 설치하기

$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake


2.4 rosdep 초기화하기

$ sudo rosdep init
$ rosdep update


2.5 catkin 작업공간 만들고 빌드하기

ROS 패키지를 다운로드하고 빌드하기 위해 작업공간( ros_catkin_ws )을 생성하고 해당 폴더로 이동한다.

$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws


2.6 ROS 패키지 설치

아래의 두가지 중 하나를 선택하여 설치를 진행한다.
(1) ROS-Comm 은 ROS를 설치하기 위한 최소 버전으로 GUI가 없는 패키지를 설치한다. (ROS에서 추천하는 방법이나 중요한 기능들이 빠져있어서 필요한 패키지들을 직접 컴파일해서 추가해야하는 번거로움이 있다.)

$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall


(2) ROS-Desktop: ROS, rqt, rviz와 같은 그래픽 도구들을 포함한 패키지들을 설치한다. (대부분의 필요한 기능들이 포함되지만 많은 용량을 필요로 한다.)

$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall


만약 wstool init 과정에서 실패 혹은 멈춤이 발생하는 경우 다음 명령어를 사용하여 패키지 다운로드를 재시작 할 수 있다.

$ wstool update -j4 -t src


의존성 패키지들이 모두 설치되어있는지 확인한다.

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y


2.7 ROS 빌드 하기

$ sudo mkdir -p /opt/ros/kinetic
$ sudo chown pi:pi /opt/ros/kinetic
$ ./src/catkin/bin/catkin_make_isolated -j2 --install --install-space /opt/ros/kinetic -D

설치한 경로를 Source 한다.

$ source /opt/ros/kinetic/setup.bash

이제 roscore 를 실행하여 ros를 시작할 수 있다.


3. joy 노드 설치하기

roscore는 설치되었지만 실제로 로봇을 구동하기 위해서는 입출력을 할 수 있는 device를 설치해주어야한다.
대표적으로 joy node가 있다. 아래는 이 패키지를 설치하는 과정을 정리한 것이다.

3.1 joystick 드라이버 설치하기.

usb 조이스틱을 사용하기 위한 드라이버 패키지를 설치한다.

$ sudo apt-get install -y jstest-gtk joystick xboxdrv libusb-dev libbluetooth-dev


3.2 의존성 패키지 설치하기

ROS 패키지 빌드를 위해 필요한 라이브러리들을 설치한다.

$ sudo apt install -y python-defusedxml libpoco-dev libtinyxml2-dev libspnav-dev libx11-dev libcwiid-dev liblz4-dev


3.3 catkin 패키지 설치하기


앞서 생성한 ros_catkin_ws 작업 공간의 src 폴더에 필요한 ros 패키지들을 git 다운로드한다.

$ cd ~/ros_catkin_ws/src
$ git clone https://github.com/ros-drivers/joystick_drivers.git
$ git clone https://github.com/ros/common_msgs.git
$ git clone https://github.com/ros/diagnostics.git
$ git clone https://github.com/ros/pluginlib.git
$ git clone https://github.com/ros/class_loader.git
$ git clone https://github.com/ros/bond_core.git
$ git clone https://github.com/ros/roslint.git

다시 ros_catkin_ws로 이동하여 build 한다.

$ cd ~/ros_catkin_ws
$ catkin_make

만약 build error가 발생하면 해당 패키지가 완전히 다운로드 되었는지 확인한다.
컴파일이 완료되면 devel/setup.bash 파일을 source 하여 패키지를 등록한다.

$ source devel/setup.bash

catkin_ws에 설치된 패키지를 실행하려면 terminal 을 새로 열때마다 이 과정을 반복해줘야 하는데 
home의 .bashrc에 추가하면 자동으로 실행된다.

$ echo "source ~/ros_catkin_ws/devel/setup.bash" >> ~/.bashrc


터미널에서 아래와 같이 joy 노드를 찾을 수 있으면 성공이다.

$ rospack find joy
/home/pi/ros_catkin_ws/src/joystick_drivers/joy


4. ROS 실행 후 joy 노드 시작하기


이제 터미널을 3개 띄우고 roscore, joy_node 그리고 rostopic을 통해 메세지를 확인해보자.


$ roscore 실행



joy node 실행

$ rosrun joy joy_node



rostopic echo를 통해 joy 메세지 확인

$ rostopic echo joy



+ Recent posts