Home » 산딸기 가지고 놀기 » [유진로봇 필드테스트 작성기] 꼬부기(BY YUJUIN ROBOT) 와의 60일간에 여행 : 두번째 만남

[유진로봇 필드테스트 작성기] 꼬부기(BY YUJUIN ROBOT) 와의 60일간에 여행 : 두번째 만남

Created Date: 2013.12.16
Modified Date: 2013.12.22
revision 2

 

안녕하세요 산딸기마을 이장 나무꾼 입니다.

 

오늘은 지난 시간 첫 만남 에 이어 꼬부기와에 두번째 만남을 이거 가보려 합니다.

필자는 다양한 리눅스를 지원하는 “라즈베리파이” 라는 교육용 임베디드 오픈하드웨어를 기반으로 유진로봇에서 지원하는 ” ROS ” 라는 오픈소스 기반의 로봇플랫폼을  이용하여 꼬부기를 구동 해 보려 한다.

더불어 라즈베리파이는 임베디드 기기임에도 불구하고 OS가 탑재되어 있면서 꼬부기를 사용 시에 별도의 코딩이 필요없이 고급 기술의 구현이 가능한 ROS 선택 하였다.

 

kobuki2_1

라즈베리파이는 5V 700mA(폴리스위치 허용전류 제한)가 전류 공급이 이루어진다.

위의 내용은 기본적으로 700MHz  ~ 800MHz 와 USB 포트 두 개를 연결 해 사용 할 수 있을 정도의 전력이다.

하지만, 라즈베리파이 사용자라면 이미 알고 있을 내용이지만 실제로 라즈베리파이에는 약 1.5A 이상의 전원 어탭터가 연결이 되어진 상태에서 이상 장애 현상없이 하드웨어를 이용이 가능한 정도이다.

이러한 라즈베리파이의 제한적 상황에서 배터리를 사용 해 자유로운 제어를 하기위해선 기본적으로 라즈베리파이의 폴리 스위치의 제한을 벗어나기 위해선 GPIO 포트를 통해 역전류를 흘려보내 전원을 공급하는 방법을 사용 하였다.

kobuki2_2

 

[사진 1] 라즈베리파이와 꼬부기 연결 사진 (전원케이블은 와이어를 이용해 제작한  제가 만든 자작 전원케이블 입니다.)

kobuki2_3

 

자 그럼 이제부터 누구라도 라즈베리파이에서 ROS를 기본적인 사용이 가능하도록  ROS 버전 중 패키지 형태로 설치가 가능한 groovy 를 설치하고 ROS 를 이용해 꼬부기(Kobuki)를 컨트롤 해보도록 하자.

 

2.1. 라즈비안에 소스리스트 추가하기

 

라즈베리파이에 라즈비안을 설치 후, ROS를 패키지를 설치하기 위해선 ROS 소스리스트를 추가 해 주어야만 패키지 다운로드 및 설치가 가능하다.

pi@ rasplay ~ $ sudo sh -c 'echo "deb http://64.91.227.57/repos/rospbian wheezy main" > /etc/apt/sources.list.d/rospbian.list'
pi@ rasplay ~ $ wget http://64.91.227.57/repos/rospbian.key -O - | sudo apt-key add -
pi@ rasplay ~ $ sudo apt-get update

 

2.2. 라즈비안에 ROS 설치하기

 

이미 라즈베리파이 사용자라면 누구나 알고 있듯이, 라즈베리파이의 시스템 사양은 과거 펜티엄 2 ~ 3 정도 급의 낮은 사양이기에 리소스 관리에 많은 자원을 할 당이 어렵다.

이러한 점을 고려하여, Desk 버전이 아닌 ROS 버전 중 가장 낮는 Base core 버전을 설치하고 기본적인 구동환경을 갖추어 보도록 하자.

pi@ rasplay ~ $ sudo apt-get install ros-groovy-ros-comm

 

2.3. 라즈비안에 ROS 환경설정하기

 

라즈베리파이에 ROS를 설치하더라도 바로 사용 할 수 있는 것은 아니기 때문에 몇 가지 환경설정과 ” .bashrc ” 파일에 source 위치를 등록 해 주어야만 사용이 가능하다.

pi@ rasplay ~ $ sudo nano ~/.bashrc

# set ROS Hydro
source /opt/ros/hydro/setup.bash

# set ROS Network
export ROS_MASTER_URI=http://xxx.xxx.xxx.xxx:11311 #라즈베리파이 아이피 , 다른 PC에서 꼬부기를 제어시에는 해당 항목에 아이피를 변경 할 것.
export ROS_HOSTNAME=xxx.xxx.xxx.xxx #라즈베리파이 아이피

pi@ rasplay ~ $ source ~/.bashrc

 

2.4. ROSCORE 테스트

 

자 그럼 이제 라즈베리파이에서 로스코어가 정상적으로 구동이 되어지는 것을 확인 해 보도록 하자.

아래와 같이 ” roscore ” 명령어를 입력시에 ROS 노드가 활성화 되어 진다면 이상이 없는 것이다.

pi@ rasplay ~ $ roscore

… logging to /home/rt/.ros/log/21d50290-1842-11e3-9f14-d43d7e970cb0/roslaunch-rt-5461.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://rt:57096/
ros_comm version 1.9.48

SUMMARY
========

PARAMETERS
* /rosdistro
* /rosversion

NODES

auto-starting new master
process[master]: started with pid [5475]
ROS_MASTER_URI=http://rt:11311/

setting /run_id to 21d50290-1842-11e3-9f14-d43d7e970cb0
process[rosout-1]: started with pid [5488]
started core service [/rosout]

 

kobuki2_4

 

우리는 앞서 항목 2 를 통해 라즈베리파이에 ROS 라는 오픈소스기반의 로봇플랫폼을 설치를 마쳤다면, 유진로봇에서 생산 및 유통을 하는 꼬부기(Kobuki: turtlebot 2 base) 를 로스와 연동하기 위한 추가 패키지를 설치 해 주어야만 ROS 와 Kobuki 간에 통신이 가능한 Node 가 열리게 된다.

 

3.1. ROS Base 설치하기

pi@ rasplay ~ $ sudo apt-get install ros-groovy-ros ros-groovy-ros-comm ros-groovy-roscpp ros-groovy-rospy

 

3.2. ROS 에 꼬부기(Kobuki) 패키지 설치하기

 

아마도 많은 분들이 아래 패키지를 설치하면서 어려움을 겪게 될 것 입니다.

문제는 꼬부기(Kobuki) 와  ROS 간 센서 통신에  필요한 라이브러리 파일 때문입니다. (많은 분들이 이 문제에 부딪 히실 것이라 생각이 드네요.)

이러한 문제를 해결하기 위해선 아래 두 가지 라이브러리 패키지를 추가로 설치한 후에야 꼬부기 패키지가 ROS에 설치가 가능하다.

 

* tbb Lib package 설치(필수)

pi@ rasplay ~ $ wget http://ftp.kr.debian.org/debian/pool/main/t/tbb/libtbb-dev_4.2~20130725-1.1_armhf.deb
pi@ rasplay ~ $ wget http://ftp.kr.debian.org/debian/pool/main/t/tbb/libtbb2_4.2~20130725-1.1_armhf.deb
pi@ rasplay ~ $ sudo dpkg -i *.deb

 

* 설치 패키지 초기화 및 패키지 소스리스트 업데이트(필수)

pi@ rasplay ~ $ sudo rosdep init
pi@ rasplay ~ $ rosdep update
pi@ rasplay ~ $ sudo apt-get update

 

자 그럼 다시 꼬부기 패키지를 설치해 보도록 하겠습니다.

pi@ rasplay ~ $ sudo apt-get install ros-groovy-kobuki ros-groovy-kobuki-msgs

 

위 명령어를 실행 후 에도 ROS 와 꼬부기 통신을 위해 필요한 아래 두 가지 패키지를 추가로 설치 해 주도록 하자.

pi@ rasplay ~ $ sudo apt-get install ros-groovy-ecl-threads ros-groovy-ecl-devices ros-groovy-ecl-streams ros-groovy-ecl-mobile-robot ros-groovy-ecl-sigslots
pi@ rasplay ~ $ sudo apt-get install ros-groovy-yujin-ocs

 

이제는 점점 라즈베리파이로 꼬부기를 컨트롤 할 수 있는 마지막 단계로 접어 들고  있습니다.

 

위 [사진 1]에서 보신바와 같이 라즈베리파이 와 꼬부기는 ftdi drive 를 통해 USB Cable 로 통신이 되어지고 있는 환경입니다.

 

앞서 꼬부기 관련 패키지를 설치 중에 ftdi drive 가 설치가 되므로 별도의 ftdi drive 설치는 필요가 없고, 환경설정만을 해 주면 됩니다. 

이역시 위키를 참고해 간단히 FTDI  드라이브 환경설정을  꼬부기에서 사용 할 수 있는 환경설정 설치해 보도록 하자.

pi@ rasplay ~ $ roscd kobuki_ftdi
pi@ rasplay ~ $ rosrun kobuki_ftdi create_udev_rules

위 두줄의 명령어가 FTDI drive 환경설정을 라즈베리파이에 설치하는 방법 입니다.

 

# 꼬부기 노드 실행 시, 아래와 같은 오류 메세지 발생 시에는 ”  diagnostic-aggregator ” 패키지를 추가 해 주도록 하자.

pi@ rasplay ~ $ sudo apt-get install ros-groovy-diagnostic-aggregator

 

 

3.3. 키보드로 꼬부기 제어하기

그럼 마지막으로 라즈베리파이에서 ROS node 를 이용 해 키보드 컨트롤 환경을 테스트 해보도록 하자.

 

3.3.1.  로스(ROS) 와 꼬부기(kobuki) 노드 연결하기 

 

아래 명령어를 입력 하시면  roscore 가 자동으로 실행이 되면서 꼬부기와 ROS 간에 데이터 통신이 가능해 지는 환경이 자동으로 구성됩니다.

pi@ rasplay ~ $ roslaunch kobuki_node minimal.launch

 

3.3.2.  꼬부기(kobuki) 키보드 제어 실행

아래 명령어를 입력 하시면 꼬부기와 ROS 간에 키보드 제어가 가능해 지는 환경이 자동으로 구성됩니다.

pi@ rasplay ~ $ roslaunch kobuki_keyop keyop.launch

 

3.3.3.  키보드 제어 영상

* 위 영상은 팬더골드가 구현한 꼬부기 영상입니다.

 

[참고사이트]

http://wiki.ros.org/hydro/Installation/Ubuntu

http://wiki.ros.org/hydro/Installation/UbuntuARM

http://wiki.ros.org/groovy/Installation/Raspbian

http://wiki.ros.org/ROSberryPi/Setting%20up%20ROS%20on%20RaspberryPi

http://wiki.ros.org/kobuki/Tutorials/hydro

 

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700