본문 바로가기

Robot/Robot Program - ROS

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

아주 예전에 모바일 플랫폼 하나를 개발할 때 부터 관심을 가졌던 것이 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를 계속 공부할 수 있을지는 의문이지만 말이죠^^

반응형