본문으로 바로가기

ROS 설치하기 (몹시 초보자용~)

category Robot/Robot Program 2016.05.09 08:00

아주 예전에 모바일 플랫폼 하나를 개발할 때 부터 관심을 가졌던 것이 ROS라는 Robot Operating System이었습니다. 그러나 다른 소프트웨어들에 비해 ROS는 문외한이 저에겐 쉽게 접근하기 어려웠습니다. 왜냐면 뭐 MATLAB과 같은 툴이 아니라 Operating System이라는 이름을 가지고 있기 때문이더군요. 아직은 뭐 저 따위가 개념을 이야기하는건 우스운 일이구요. 아무튼 어려움에도 불구하고 배우고 싶다는 거죠^^. 또 당시에 저는 Linux도 아~주 어려워했으니까요.ㅠㅠ. 그런데 지금은 회사내 개발 환경이 Ubuntu 등의 안~ Windows(^^)라서 익숙해 진 것도 있는데다... 두 분의 친절한 ROS 선배님들의 도움을 받아 살짝 접근을 용이하게 할 수 있었거든요.^^ 한 분은 안연구원님(facebook)입니다. 이 분과 두 번이나 만나 ROS에 관한 이야기를 많이 들을 수 있었습니다. 또 한 분은 제가 직접 만난적은 단 한번도 없지만, 인터넷 커뮤니티 상에서는 무쟈~~~게 유명한 표윤석님(facebook)입니다. 표윤석님은 현재 로보티즈의 연구원이기도 하지만, ROS관련된 책도 집필하시고, 또 다양한 커뮤니티를 이끌고 계시지요~. 그 분께서 공개하신 강의 자료(바로가기)가 있는데 그게 또 많은 도움이 되었답니다.^^. 아무튼 그렇게 해서 저도 ROS라는 아이를 한 번 인스톨은~ 해 보았습니다.^^

즉, 본 글은 방금 위에서 언급한 안 연구원님의 도움과 온라인상의 표윤석 님이 공개하신 자신의 강의 자료와 ROS의 튜토리얼을 보고 그대로 따라한 글일 뿐입니다. 이딴 글을 왜 적느냐? 모두가 가치있는 글을 적을 필요는 없는거죠. 단지 휴대전화기 하나를 구입했는데 그걸 박스부터 개봉해서 한 번 켜보는 글들도 많은데 이런 좋은 분들의 자료를 가지고 한 번 따라한 글도 필요하겠죠~^^. 뭐 사실은 무엇보다 제 습관이 제가 취미처럼 공부하는 내용을 블로그에 올리기 때문이겠죠^^ 아무튼 다시 한 번 이야기하지만, 본 글은 그저 따라하기~~ 수준의 글일 뿐입니다.^^

아~~ 그리고 이 글은 Ubuntu 14.04와 ROS Indigo 버젼을 사용했습니다. 사실 Ubuntu는 16버젼이 발표가 되었고, 또 조금있으면 ROS도 큰 변화를 가지는 판올림이 있다고 하지만, 그래도 저는 시작을 Indigo 버젼으로 했습니다. 일단 많은 자료가 있어 학습할 수도 있지만, 또 하나는 Github에 있는 ROS 패키지가 하나 있는데 꼭~ 그걸 한 번 사용하고 익히고 싶은데 그게 ROS Indigo 버젼으로 되어 있거든요^^. 

일단... ROS Indigo의 wiki페이지[바로가기]에 있는 installation 페이지를 보면서 따라하면 인스톨은 쉽게 됩니다^^ 

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

일단 저렇게 해서 제 우분투가 packages.ros.org에서 ROS 소프트웨어를 받을 수 있습니다. 사실 저는 아직도 이렇게 인스톨하는 방식이 신기합니다. 여전히 윈도우에 적응해서 그런가보죠^^

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 0xB01FA116

그리고 아무튼 위 과정으로 신뢰할 수 있는 패키지라는 뜻으로 key까지 등록하고 나면

sudo apt-get update

업데이트를 수행합니다.

sudo apt-get install ros-indigo-desktop-full

이제 ROS Indigo 버젼을 desktop-full버젼으로 설치합니다. 이것 저것 고민없이 연습할때는 저렇게 다~ 설치해버리죠 뭐~^^

sudo rosdep init
rosdep update

아직은 리눅스 자체의 이해도가 떨어지므로 dependency라는 단어가 잘 들어오지 않습니다. 아무튼 그 dependency를 잘 관리해준다고 하니 그냥 따라합니다^^

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

또 환경변수를 편리하게 관리하기 위해서 실행한다는 군요.... 뭐 저는 저 하나하나를 모두 따라 가며 뜻을 아는 것 보다 일단 한 번 인스톨에 성공해보겠다는 의지가 강하니까 그냥 패스(라고 말하고 좀 더 공부해야겠어요^^ 찾아보면 뜻이야 나오는데 그게 말로 풀만큼 이해한 건 아닌듯 해요^^)

sudo apt-get install python-rosinstall

이제 Python-rosinstall까지 설치하면 끝나나 봅니다. 설치라는 건^^ 그러면 이제 이게 잘 설치되었는지 한 번 실행은 해봐야겠죠. 그런데 ROS는 여하튼 OS이므로 요 아이를 그냥 윈도처럼 더블클릭한다고 되는 것도 아니고 말이죠^^. 뭐 그래서 제공되는 튜토리얼 하나 실행해 보도록 하겠습니다.

먼저 roscore를 실행하구요. 그리고 다른 터미널창에서 rosrun turtlesim turtlesim_node라고 실행합니다.

그러면 저렇게 좀 작고 귀여운 거북이가 화면에 나타납니다.^^. 그리고 다시

또 위 그림처럼 다른 터미널 창에서 rosrun turtlesim turtle_teleop_key라고 입력합니다.

그리고 또 rosrun rqt_graph rqt_graph라고 입력하면 위 그림처럼 뭐 정확하게는 모르겠지만 뭔가를 알려주는 그림이 뜹니다.^^. 아 이 예제는 키보드 움직임에 따라 꺼북이가 움직이더라구요^^.

이제 또 하나의 예제를 따라가 볼까 합니다. 일단 catkin_ws라는 폴더 만들구요^^ 

그 안에 src라는 폴더도 만들구요^^

그리고 cd ~/catkin_ws/src에서 

catkin_create_pkg my_first_ros_pkg std_msgs roscpp

라고 입력합니다. 패키지를 하나 만드는 건데요~ 요건 글 처음에 이야기했던 표 연구원님의 강의자료를 고대로 따라합니다.^^.

그리고, catkin_ws/src/my_first_ros_pkg/src안에 위 코드를 작성해서 저장합니다. 파일은

hello_world_node.cpp

여기에도 있어요~^^

이제 my_first_ros_pkg 폴더에서 CMakeLists.txt 파일을 열어서 위와 같은 내용이 들어 가도록 편집합니다.

CMakeLists.txt

위 파일도 첨부합니다.~^^

그리고 나서

cd ~/catkin_ws
rospack profile
catkin_make
source ~/catkin_ws/devel/setup.bash

위 명령을 차례로 입력합니다.

이제 rospack find my_first_ros_pkg를 입력하면 해당 경로가 표시되면서 뭔가 잘되는 듯 한 느낌이 납니다.^^

이제 거북이 예제 돌렸듯이 동일하게 roscore실행하고

rosrun my_first_ros_pkg hello_world_node를 실행하면 해당 코드가 실행된 모양입니다. 뭐 코드와 더 자세한 뭔가는 또 이야기할 기회가 있겠죠^^ (더 정확하게는 제가 더 공부해야 하구요^^)

여기서 rostopic list라고 입력하면 현재 실행되는 topic이 보여지는 모양입니다.^^

rosrun rqt_graph rqt_graph를 실행하면 실행되는 노드가 표시되는 모양입니다.

흠.. 사실 뭐 ROS에 익숙하시거나 리눅스에 익숙하신 분들은 당연한 이야기겠지만, 전 리눅스 환경에서 일하는 소프트웨어 엔지니어들이 저런 다중 터미널(terminator)을 쓰는 걸 보면서 이해를 잘 못 했는데.. ROS공부 하루 만에 저걸 설치해서 저도 사용하고 있더라구요^^

이번에는 rosrun rqt_topic rqt_topic을 입력하면 저렇게 창이 뜹니다. 저기서 say_hello_world를 체크하고

rostopic echo /say_hello_world면라고 입력하면

저렇게 상태를 알려주나 봅니다.

또 저 상태에서 rqt_graph를 하면 저렇게 표현이 되더라구요.^^

이번 글은 다시 이야기하지만, 앞서 공부하신 두 선배님의 도움을 철저히 따라했구요^^. 사실 ROS를 설치하던데서 끝난건데, 투토리얼 두 개를 실행해 보느라 아주 길어진 것 뿐입니다. 뭐 여하튼 ROS 공부는 꽤 재미있었습니다.^^ 좀 더 재미난 이야기를 많이 할 수 있으면 좋겠어요^^. 변덕스러운 제 마음이 요즘 로봇 업계에 머무를지를 고민 중이라 ROS를 계속 공부할 수 있을지는 의문이지만 말이죠^^


댓글을 달아 주세요

  1. BlogIcon 『방쌤』 2016.05.09 14:19 신고

    몹시,,, 초보자용,,,이란 말에 용기를 내서 읽어봤는데,,,ㅜㅠ OTL
    완전 능력자셨네요^^;;

    즐거운 한 주 보내시구요~

  2. BlogIcon 용작가 2016.05.09 17:08 신고

    초보자라고 말씀하셨지만..... 아무것도 모르겠사옵니다. ㅎㅎㅎ

  3. 지나다 2016.07.06 11:49 신고

    다른 초보가 따라하기에 좋은 + 용기를 얻을 수 있는 글 감사합니다 :)

  4. 꿈에 2017.01.20 15:20 신고

    라즈베리파이에 ubuntu 14.04 버전 이미지파일 씌운 sd카드로 ROS 설치중입니다 ㅜㅜ 따라하는데 자꾸 에러가 뜨네요......... 설치환경이 어떻게 되시나요??? 에러는 안나오셨었나요??

  5. 2017.04.08 22:41 신고

    무식한 질문일 수 잇는데ㅎㅎ ros인디고 설치할때 리눅스 운영체제에서 설치하여야 한다는 거죠? 그럼 리눅스가 설치된 pc가 필요한 거구요? 맞나요?

    • BlogIcon PinkWink 2017.04.09 19:13 신고

      공식홈페이에는 지원되는 OS와 그 한계에 대해 이야기를 하고 있습니다. 일반적으로 indigo는 우분투 14.04에서... kinect는 16.04에서 동작합니다.

  6. 알고싶어요 2017.05.22 11:13 신고

    혹시 거북이 말고 hellow 월드 에서 rosrun단계에서 해당 페키지를 찾을수 없다고 나오는데 해결법좀 알수있을까요.. ㅠㅠ

    • BlogIcon PinkWink 2017.05.23 07:35 신고

      흠... 잘 모르겠습니다. 전 아직 ROS 초보(라고 변명하고 싶네요)이거든요^^
      혹시 오로카와 같은 커뮤니티에 한 번 질문을 올려보시는게 어떨까요?

  7. 미미미미 2018.03.04 12:08 신고

    안녕하세요
    오랜만에 인사드립니다. 다름이 아니라 . 표윤석님께서 공부해주신 그 분께서 공개하신 강의 자료 URL 을 들어가보니 막혀서 혹시 다른 사이트가 따로 있는걸까요 ?
    ROS 도 이 사이트에서 도움을 받게 되네요 감사합니다.

    • BlogIcon PinkWink 2018.03.05 10:46 신고

      아 네.. 링크가 사라진줄 몰랐네요...^^
      https://github.com/robotpilot/ros-seminar
      여기에 보시면 또 표박사님께서 꽤 많은 자료를 올려주셨더라구요^^

  8. 공부중.. 2018.09.06 17:10 신고

    echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    2번째 source ~/.bashrc 할때 없는 디렉토리라고 뜨던데... ㅠㅠㅠ