안녕하십니까 터틀봇과 arm 보드 셋팅 문의 드립니다.

1,095 views
Skip to first unread message

hee sung kim

unread,
Aug 5, 2013, 3:22:27 AM8/5/13
to korea-r...@googlegroups.com
안녕하십니까 수고가 많으십니다. 

이전에 가지고 있던 pandaboard 도 ros 를 올리려다 포기 하였습니다만 

이전에 make fair 에서 특가로 터틀봇을 구매 할 수 있는 기회가 되어 구매하고 

일때문에 정신없어 잠시 넣어 두었다가 

이전 make fair 에서 본대로 하드커널社의 Odroid-X2 보드를 구입하여 

Odroid 홈페이지에서 제공하는 ubuntu버전인 linaro 를 받아 설치 하였습니다. 

그리고 나서 ros를 올리는데 arm 용이 있고 기존 desktop 버전이 있고 등등 많은 방법이
존재하는데 

유진로봇사에서는 어떤 방식으로 사용하셨는지 궁금하여 질문 올립니다. 

이전에 panda board 에 ros를 설치하려 할 때도 문제가 있어

유진로봇에서 메이크페어에 나온 스펙을 그대로 따라 했는데도 자꾸 막히니 답답해서

이렇게 질문 드리게 되었습니다. 

혹시 이전에 설치시 어떻게 하셨는지 궁금합니다. 

답변 부탁드립니다. 

수고하세요~

이지훈

unread,
Aug 5, 2013, 7:14:44 AM8/5/13
to korea-r...@googlegroups.com

거북이에다가 Odroid나 판다보드를 사용하시려나보네요 ㅎ

제가 알기로 전에 설치할때 다음 링크에 있는 문서를 따라서 설치했다고 합니다. ROS Wiki내에 문서는 있는데
외부 링크가 없어서 검색에서만 찾아진다고 하네요. Linaro에 ROS 설치법입니다.

http://www.ros.org/wiki/groovy/Installation/Linaro/Source#Installing_ROS_on_Linaro_Image_from_source

혹시 임베디드에 ROS를 올리는 법이나 그에 관련된 의견들을 보시고 싶으시면 ROS 내에 있는 임베디드 SIG가시면
좀더 자세한 내용을 아실 수 있을거 같습니다. 참고하세요!

https://groups.google.com/forum/#!forum/ros-sig-embedded
Message has been deleted

김성우

unread,
Aug 7, 2013, 2:45:11 AM8/7/13
to korea-r...@googlegroups.com
제가 사용한 방법을 알려드리겠습니다.
여러가지 패키지들을 뒤섞어서 올바른 방법은 아니지만 제대로 동작은 하는 것 같습니다.
혹시 빠지거나 잘못된 부분이 있으면 알려주세요.

설치환경

하드웨어: Odroid-x2
소프트웨어: robroyhall 님의 Ubuntu 12.11 Fullyloaded Image

Kobuki Turtlebot 을 위한 ROS 설치는 우분투 ROS Arm 버전 패키지들을 활용하며 패키지화되지 않은 OpenNI, PCL, rviz 등의 소프트웨어들은 직접 소스코드를 다운로드하여 빌드합니다. 소스코드 빌드는 catkin 을 이용한 빌드와 rosbuild 를 이용한 빌드로 나누어집니다. 빌드 과정은 총 6단계로 나누어 보았습니다. 우분투 개발환경/ROS 초기화 -> OpenNI 설치 -> 의존패키지설치 -> catkin 빌드 -> rosbuild 빌드 -> 보드설정 및 구동 입니다.

단계 1. Ubuntu 개발환경 및 ROS 초기화

SD 카드를 16GB 이상으로 준비하신 후에 ODROID-X2 보드용 우분투 이미지를 SD/eMMC 카드에 설치한 후 GParted 파티션 매니저를 사용해서 루트파일시스템의 용량을 최대한 늘려줍니다.
PCL 을 컴파일하기 위해서는 스왑공간을 1GB 이상 설정해야 합니다. 스왑 공간은 SD 카드에 스왑파티션을 만들거나 스왑파일을 등록하면 됩니다. 스왑파티션은 디스크도구를 사용하면 되고, 스왑파일은 다음과 같은 명령을 실행하면 됩니다.
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024    # 1GB
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
부팅시에 스왑공간이 등록되도록 하려면 /etc/fstab 파일에 다음 항목을 추가합니다.
/swapfile    swap    swap    defaults    0 0
스왑공간의 설치여부는 “cat /proc/swaps” 이나 “free” 명령을 실행하여 확인할 수 있습니다.

다음은 ROS 의 우분투 ARM 버전 소프트웨어를 설치합니다. 먼저 ROS 초기화 과정을 수행합니다.
(참고: http://www.ros.org/wiki/groovy/Installation/UbuntuARM)

$ sudo sh -c 'echo "deb http://packages.ros.org/ahendrix-mirror/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update

패키지가 설치되지 않는 경우 가끔 apt-get update 를 실행하면 되는 경우가 있습니다. 사용가능한 패키지를 찾으려면 다음 명령어를 실행하세요.
$ apt-cache search ros-groovy

다음과 같은 ROS 기본 패키지를 설치합니다.
$ sudo apt-get install ros-groovy-ros ros-groovy-ros-comm ros-groovy-roscpp ros-groovy-rospy
다음으로 아래의 패키지들을 설치합니다. 하지만, 설치 도중 ros-groovy-rviz, ros-groovy-pcl, ros-groovy-pcl-ros 는 ubuntu arm 용 패키지가 없는 관계로 설치되지 않습니다. 이 패키지들을 제외하고 나머지를 설치합니다.
$ sudo apt-get install ros-groovy-geometry-msgs ros-groovy-sensor-msgs ros-groovy-nav-msgs ros-groovy-tf ros-groovy-rviz ros-groovy-nodelet ros-groovy-robot-state-publisher ros-groovy-diagnostic-msgs ros-groovy-dynamic-reconfigure ros-groovy-pcl ros-groovy-pcl-ros ros-groovy-pcl-msgs ros-groovy-diagnostics ros-groovy-image-proc ros-groovy-nodelet-core

그 외의 패키지들을 설치합니다.
# kobuki-msgs
$ sudo apt-get install ros-groovy-kobuki-msgs
# for yujin ocs (Yujin Robot's open-source control software)
$ sudo apt-get install ros-groovy-yujin-ocs
# for kobuki-ftdi-driver
$ sudo apt-get install libftdi-dev
# for kobuki-auto-docking
$ sudo apt-get install ros-groovy-actionlib
# ecl (Embedded Control Library)
$ 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 ros-groovy-ecl
# for pcl
$ sudo apt-get install libeigen3-dev ros-groovy-nodelet ros-groovy-nodelet-topic-tools ros-groovy-pluginlib ros-groovy-orocos-kdl ros-groovy-kdl-conversions ros-groovy-actionlib


단계 2. OpenNI & SensorKinect 드라이버 설치
다음으로 OpenNI 패키지와 SensorKinect 드라이버를 설치합니다. MS Kinect 장치를 위한 OpenNI 는 2가지 버전이 있습니다. OpenNI 1.x 버전과 SensorKinect 드라이버를 설치하는 것과 OpenNI2 버전과 freenect 드라이버를 설치하는 방법입니다. 하지만, 다음에 설치할 PCL 1.7 버전이 OpenNI 1.x 버전을 필요로 하므로 OpenNI 1.x 버전은 반드시 설치하여야 합니다.
먼저 다음과 같은 의존 패키지들을 설치합니다.
$ sudo apt-get install openjdk-6-jdk
$ sudo apt-get install freeglut3-dev libusb-1.0-0-dev doxygen graphviz

OpenNI 소스코드를 다운로드하고 빌드하여 설치합니다.
$ mkdir openni; cd openni
$ git clone https://github.com/OpenNI/OpenNI.git -b unstable
(또는 git clone https://github.com/jspricke/debian-openni )
 $ cd OpenNI/Platform/Linux/CreateRedist
../Build/Common/Platform.Arm 파일을 편집하여 다음 내용을 수정합니다.
- CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
+ CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard

$ ./RedistMaker.Arm
$ cd ../Redist/OpenNI-Bin-Dev-Linux-Arm-v1.5.4.0
$ sudo ./install.sh

나중에 PCL 등 OpenNI 에 의존하는 패키지에서 참조할 수 있도록 다음과 같은 내용의 패키지 설정파일 libopenni.pc를 /usr/lib/pkgconfig/libopenni.pc 로 만들어 줍니다.
(또는 debian-openni 소스코드를 사용한 경우에는 $ cp debian/libopenni.pc usr/lib/pkgconfig 를 실행시켜 줍니다)
=========
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/ni

Name: OpenNI
Description: A general purpose driver for all OpenNI cameras.
Version: 1.5.4.0
Cflags: -I${includedir}
Libs: -L${libdir} -lOpenNI
===============

다음에는 SensorKinect 드라이버의 소스코드를 다운로드하고 빌드합니다.
$ cd ~/openni
$ git clone git://github.com/avin2/SensorKinect.git
$ cd SensorKinect/Platform/Linux/CreateRedist

../Build/Common/Platform.Arm 파일을 편집하여 다음 내용을 수정합니다.
- CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
+ CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard
$ ./RedistMaker Arm

드라이버가 빌드되면 Redist 폴더가 만들어져 있을 겁니다. 다음과 같이 입력합니다:
$ cd ../Redist/Sensor-Bin-Linux-Arm-v5.1.2.1
$ vi Config/GlobalDefaultsKinect.ini
;UsbInterface=2
UsbInterface=1
$ sudo ./install.sh

MS Kinect 장치를 연결하고 lsusb 명령으로 장치를 확인합니다.
$ lsusb

Bus 001 Device 008: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 001 Device 009: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Bus 001 Device 010: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

NiViewer 와 같은 샘플 프로그램을 실행시켜 테스트합니다.
$ cd ~/openni/OpenNI/Platform/Linux/Build/Samples/NiViewer
$ make
$ cd ../../../Bin/Arm-Release
$ ./NiViewer


단계 3. 의존 패키지 설치

본격적으로 catkin 및 rosbuild 워크스페이스를 빌드하기 전에 또 의존하는 바이너리 패키지들을 설치합니다.

단계 3-1 openni_camera 및 PCL 의존 패키지 설치

openni_camera, openni_launch 패키지 설치에 필요한 의존 패키지들을 설치합니다.
# for openni-camera & openni2-camera
$ sudo apt-get install ros-groovy-cv-bridge ros-groovy-camera-info-manager
$ sudo apt-get install ros-groovy-compressed-depth-image-transport

다음 opencv 관련 패키지들도 컴퓨터비젼처리를 위해 필요한 경우 설치합니다.
sudo apt-get install libcv-dev libcv2.3 libopencv-highgui-dev libopencv-highgui2.3 libopencv-contrib-dev

다음 명령을 실행하여 PCL 설치에 필요한 cmake, eigen, boost, vtk 을 설치합니다.
$ sudo apt-get install cmake
$ sudo apt-get install libflann-dev
$ sudo apt-get install libeigen3-dev
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libvtk5-dev

libvtk5-dev 설치 시에 필요한 패키지인 libqt4-opengl-dev 설치시에 필요한 libegl1-mesa-dev 와 libgles2-mesa-dev 가 기존에 설치된 mali400-dev 패키지와 충돌하여 제대로 설치되지 않습니다.(PCL 컴파일 시에 /usr/include/KHR/khrplatform.h 와 /usr/include/GLES2/gl2.h, libEGL.so 등이 중복됨)
따라서 mali400-dev 를 먼저 제거한 후 libqt4-opengl-dev 를 설치하고 난 후에 다시  mali400-dev 를 재설치하여야 합니다. 그런데 mali400-dev 는 우분투싸이트는 2.1-12 버전만 다운로드할 수 있으므로 2.1-13 버전은 다음과 같이 설치합니다. 만약 계속 libegl1-mesa-dev와 libgles2-mesa-dev 설정과 관련된 오류 메시지가 나타나면 구글에서 문제가 되는 패키지(버전명까지 같아야 함)를 검색한 다음 deb 파일을 다운로드하여 dpkg 로 강제설치합니다.
$ mkdir ~/mali400; cd ~/mali400
$ wget http://dn.odroid.com/MALI400_R3P2/20130208/mali400_packages.tar.gz
$ tar -xvfz mali400_packages.tar.gz
$ sudo dpkg -r --purge mali400-dev
$ sudo apt-get install libqt4-opengl-dev
$ sudo dpkg -i --force-overwrite mali400-dev_2.1-13_armhf.deb
$ sudo rm -rf /usr/lib/arm-linux-gnueabihf/mesa-egl
$ sync

단계 3-2 rviz 의존 패키지 설치

다음 패키지들을 설치합니다.
$ sudo apt-get install ros-groovy-visualization-msgs ros-groovy-laser-geometry ros-groovy-python-qt-binding ros-groovy-resource-retriever libogre-dev ros-groovy-image-geometry
그리고, libassimp 3.0 버전을 설치합니다. sudo apt-get install libassimp-dev 명령을 통해 2.0 버전 패키지를 설치하면 나중에 rviz 빌드 시에 오류가 발생합니다.그러므로, 소스싸이트
http://sourceforge.net/projects/assimp/files/assimp-3.0 로부터 소스코드를 다운로드하여 직접 빌드합니다.
$ mkdir ~/assimp; cd ~/assimp
$ unzip assimp--3.0.1270-source-only.zip
$ cd assimp--3.0.1270-source-only ; mkdir build; cd build
$ cmake ..; make -j1
$ sudo make install

단계 3-3 rqt_robot_plugins 의존 패키지 설치
$ sudo apt-get install ros-groovy-tf2-ros ros-groovy-rqt-common-plugins


단계 4. catkin 워크스페이스 빌드
(참고: http://www.ros.org/wiki/kobuki/Tutorials/Installation )

catkin 워크스페이스를 생성하고 관련 패키지들을 빌드합니다. 빌드하는 패키지들은 roscpp, tf, kobuki, openni_camera/openni_launch (터틀봇 구동을 위해서는 필요없음), image_pipeline, pcl, pcl-ros, rviz 등입니다.

특히, 여기서는 roscpp 와 tf 패키지를 이미 설치하였음에도 다시 빌드해야 합니다. 그 이유는 ARM CPU의 alignment 문제(올바른 패치가 7월 중순에 적용되었음) 때문에 ROS 통신 Serialization 기능을 사용하는 libroscpp.so libtf.so 등을 갱신하여 터틀봇을 위해 실행되는 robot_state_publisher 와 robot_pose_ekf 등과 같은 프로그램이 제대로 통신을 하도록 하기 위해서입니다.

$ sudo apt-get install python-wstool
 # Create a workspace directory tree somewhere in you file system
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
 # Clone catkin repository
$ git clone https://github.com/ros/catkin.git
$ cp catkin/cmake/toplevel.cmake CMakeLists.txt

$ wstool init
$ wstool set ros_comm --git -v groovy-devel https://github.com/ros/ros_comm.git
$ wstool set geometry --git -v groovy-devel https://github.com/ros/geometry.git
$ wstool set kobuki --git -v groovy-devel https://github.com/yujinrobot/kobuki.git
$ wstool set openni_camera --git https://github.com/ros-drivers/openni_camera.git
$ wstool set openni_launch --git https://github.com/ros-drivers/openni_launch.git
$ wstool set image_pipeline --git -v groovy-devel https://github.com/ros-perception/image_pipeline.git
$ wstool set rqt_robot_plugins --git -v groovy-devel https://github.com/ros-visualization/rqt_robot_plugins.git
$ wstool set ineractive_markers --git -v groovy-devel https://github.com/ros-visualization/interactive_markers.git
$ wstool set rviz --git -v groovy-devel https://github.com/ros-visualization/rviz.git
$ wstool set perception_pcl --git -v groovy-unstable-devel https://github.com/ros-perception/perception_pcl.git

또, 나중에 rosbuild 빌드 시에 필요로 하는 flann 라이브러리 패키지 때문에 .rosinstall 파일에 다음 내용을 추가합니다.
=========================
- tar: {local-name: flann, uri: 'https://github.com/ros-gbp/flann-release/archive/release/flann/1.7.1.tar.gz',
   version: flann-release-release-flann-1.7.1}
=========================
$ wstool update
$ cd ..
$ source /opt/ros/groovy/setup.bash

이제 다음과 같은 명령을 실행하여 catkin 워크스페이스 내의 모든 패키지들을 빌드합니다. PCL 이 포함되어 있어 빌드 시간이 한나절은 족히 걸립니다. (시스템의 ROS 개발환경과 통합하고 싶으면, 다음 명령에 --install-space /opt/ros/groovy 옵션을 추가해 줍니다.)
$ catkin_make_isolated --install

PCL 1.7 버전의 패키지 리소스 디렉토리와 관련 파일을 만들어 줍니다.
# for PCL 1.7
$ cd install_isolated/share
$ cp -r pcl-1.7 pcl
$ cd pcl; mkdir cmake; mv * cmake
$ cp ../../../src/pcl/package.xml .
#~/catkin_ws/install_isolated/lib/pkgconfig/pcl.pc 파일을 만듭니다.
===============
prefix=/home/linaro/catkin_ws/install_isolated
libdir=${prefix}/lib
includedir=${prefix}/include/pcl-1.7
Name: pcl
Description: Description of pcl
Version: 1.7.0
Cflags: -I${includedir}
Libs: -L${libdir}
Requires:
=========================


단계 5. Rosbuild Stacks 빌드

먼저 다음 명령을 실행합니다.
$ source ~/catkin_ws/install_isolated/setup.bash
$ rosrun kobuki_ftdi create_udev_rules

다음 의존 패키지들을 설치합니다.
# for turtlebot
$ sudo apt-get install ros-groovy-zeroconf-avahi ros-groovy-multimaster-experimental ros-groovy-depthimage-to-laserscan
# for kobuki_desktop/kobuki_qtestsuite
$ sudo apt-get install pyqt4-dev-tools
# for turtlebot_apps/turtlebot_calibration
$ sudo apt-get install ros-groovy-python-orocos-kdl
# for turtlebot_apps/turtlebot_teleop
$ sudo apt-get install ros-groovy-joy
# for navigation/map-server
$ sudo apt-get install libsdl-image1.2-dev
# for turtlebot_apps/turtlebot_core_apps
$ sudo apt-get install ros-groovy-map-store ros-groovy-compressed-image-transport
# for navigation/robot_pose_ekf
$ sudo apt-get install ros-groovy-bfl

다음 명령을 실행하여 rosbuild 워크스페이스를 만듭니다.
$ mkdir ~/rosbuild_ws
$ rosws init ~/rosbuild_ws ~/catkin_ws/install_isolated
$ cd ~/rosbuild_ws
$ rosws merge http://packages.ros.org/web/rosinstall/generate/dry/raw/groovy/desktop
$ rosws merge https://raw.github.com/turtlebot/turtlebot/master/turtlebot.rosinstall

.rosinstall 파일을 수정하여 kobuki_desktop, turtlebot, turtlebot_apps, turtlebot_viz 항목들의 master 버전을 groovy 로 바꿉니다. 그런 다음 다음 명령을 실행하여 소스코드를 다운로드합니다.
$ rosws update

turtlebot_apps/software/pano/pano_core/CMakeFiles.txt 파일에서 18번째 줄을 다음과 같이 수정합니다.
- set(ROS_COMPILE_FLAGS ${ROS_COMPILE_FLAGS} "-msse4.2 -Wall")
+ #set(ROS_COMPILE_FLAGS ${ROS_COMPILE_FLAGS} "-msse4.2 -Wall")

gazebo 와 관련된 패키지들을 설치하지 않기 위해 다음 명령을 실행합니다.
$ mkdir uninstalled
$ mv kobuki_desktop/kobuki_gazebo uninstalled
$ mv kobuki_desktop/kobuki_gazebo_plugins uninstalled

다음과 같은 명령을 실행하여 관련된 패키지들을 빌드합니다.
$ source setup.bash
$ sudo rosdep init
$ rosdep update
$ rosmake robot_model_visualization navigation kobuki_desktop turtlebot turtlebot_apps turtlebot_viz

기본적인 설치가 모두 끝났습니다.
기존의 turtlebot 설치방법대로 시간동기화를 합니다.

[time synchronization]
$ sudo apt-get install chrony
$ sudo ntpdate ntp.ubuntu.com

.bashrc 파일에 다음 문장을 추가한 다음 리부팅합니다.
source /opt/ros/groovy/setup.bash
source /home/linaro/catkin_ws/install_isolated/setup.bash
source /home/linaro/rosbuild_ws/setup.bash
export ROS_MASTER_URI=http://<IP of turtlebot>:11311
export ROS_HOSTNAME=<IP of turtlebot>
export ROS_IP=<IP of turtlebot>

네트워크 설정을 한 후 관련된 프로그램들을 실행시켜 봅니다.
$ rosrun kobuki_ftdi create_udev_rules

ODROID-X2 임베디드보드는 배터리가 없으므로 minimal_launch 실행 시에 laptop_battery.py 실행하는 부분을 제거합니다. 다음과 같이 ~/rosbuild_ws/turtlebot/turtlebot_bringup/launch/minimal.launch 파일을 수정합니다.

+  <!--
  <include file="$(find turtlebot_bringup)/launch/includes/_netbook.launch">
    <arg name="battery" value="$(arg battery)" />
  </include>
+  -->
...

[How to launch turtlebot]
roslaunch turtlebot_bringup minimal.launch

[How to launch dashboard]
rqt -s kubuki_dashboard
roslaunch turtlebot_dashboard turtlebot_dashboard.launch

[How to launch 3d sensor]
roslaunch turtlebot_bringup 3dsensor.launch

[How to launch rviz]
roslaunch turtlebot_rviz_launchers view_robot.launch

[How to launch keyboard teleoperation]
roslaunch turtlebot_teleop keyboard_teleop.launch

참고문헌
ROS 소스 설치, http://www.ros.org/wiki/groovy/Installation/Source
http://www.ros.org/wiki/groovy/Installation/UbuntuARM
http://www.ros.org/wiki/kobuki/Tutorials/Installation
http://yujinrobot.github.io/kobuki/doxygen/enInstallationLinuxGuide.html
http://answers.ros.org/question/62979/how-do-i-use-pcl-17-with-groovy/
http://www.ros.org/wiki/groovy/Installation/Raspbian/Source
http://www.ros.org/wiki/groovy/Installation/PandaBoard/Source


2013년 8월 5일 월요일 오후 4시 22분 27초 UTC+9, hee sung kim 님의 말:

김성우

unread,
Aug 9, 2013, 1:13:02 AM8/9/13
to korea-r...@googlegroups.com
앞서 올린 글에 빠진 부분이 있네요.
catkin 워크스페이스에서 robot_state_publisher 패키지를 포함시켜야 합니다.
$ wstool set robot_state_publisher --git -v groovy-devel https://github.com/ros/robot_state_publisher.git

이미 언급하였지만, libroscpp.so 와 libtf.so 등을 재빌드하지 않으면 turtlebot bringup 시에 robot_state_publisher 와 robot_pose_ekf 모듈들이 죽습니다. $ dmesg 명령으로 확인가능하구요. 아니면, $ sudo echo 5 > /proc/cpu/alignment 와 같은 명령으로 alignment trap 을 관찰할 수 있습니다.
어쨌든 catkin 워크스페이스를 시스템의 ROS 환경(/opt/ros/groovy) 과 통합하는 경우에는 상관없겠지만, 따로 만든 경우 libroscpp.so 라이브러리가 양쪽에 다 있으므로 제대로 동작하지 않을 수 있습니다. 경우에 따라서 다음 파일을 수정하고 재부팅한 다음 재빌드하여 제대로 동작하도록 해주어야 할 수도 있습니다.
$ vi ~/catkin_ws/install_isolated/_setup_util.py
- CMAKE_PREFIX_PATH = '/opt/ros/groovy;/home/linaro/catkin_ws/install_isolated'.split(';')
+ CMAKE_PREFIX_PATH = '/home/linaro/catkin_ws/install_isolated;/opt/ros/groovy'.split(';')

그럼 좋은 결과 있으시길...


2013년 8월 5일 월요일 오후 4시 22분 27초 UTC+9, hee sung kim 님의 말:
안녕하십니까 수고가 많으십니다. 

이지훈

unread,
Sep 16, 2013, 12:57:30 AM9/16/13
to korea-r...@googlegroups.com

임베디드 보드에 ROS 설치법에 대해서 자세하게 올려주셔서 감사합니다!

장기 휴가다녀와서 이 글을 보니까 Odroid에서 PCL을 사용하면 성능이 충분히 괜찮을까라는 궁금도 생기고 막막 해보고 싶어지네요 ㅎㅎ

지금 한국 ROS 커뮤니티 리뉴얼을 하면서 메일링리스트에 올리신 글을 위키로 옮겨적고 있습니다(http://www.ros.or.kr/index.php/Install_ros_on_embedded)

혹시 잘못적었거나 보강하시고 싶으신 부분이 있으면 알려주시면 감사하겠습니다.!

그리고 질문이 있는데 Hydro버젼에서는 테스트해보신적 있으신가요? Groovy 버젼에 비해서 Catkin화가 대부분 진행되어서 좀더 쉽지 않을까 하긴 하는데 혹시 설치시에 다른 점이 있을까해서 궁금합니다. ㅎㅎ

지훈 드림

김성우

unread,
Sep 16, 2013, 4:00:19 AM9/16/13
to korea-r...@googlegroups.com
안그래도 몇가지 사항을 추가해서 http://cafe.daum.net/open-robotics/OXAl/22 에 올려두었습니다.

Odroid-X2 보드가 1.7GHz 쿼드코어 CPU 를 사용하는데도 키넥트 센서를 처리하는 데 버벅댑니다.

이미지 정보를 보낼 때도 처음에는 잘 보내다가 나중에는 못보내는 문제가 있습니다.

어쨌든 여러 개발자분들의 도움이 필요합니다. 혼자하려니 너무 힘드네요.

Hydro 버전은 아직 테스트해보지 않았습니다. 나중에 기회가 되면 시도해 보겠습니다.

매발톱 드림

2013년 9월 16일 월요일 오후 1시 57분 30초 UTC+9, 이지훈 님의 말:

이지훈

unread,
Sep 16, 2013, 5:26:25 AM9/16/13
to korea-r...@googlegroups.com

앗 감사합니다! 글을 보고 다시 정리해서 올리고 레퍼런스 링크 추가하겠습니다. :)

저도 시간날때 한번 시도해보겠습니다. ㅎㅎ 

그리고 제가 듣기로 오드로이드에 기본으로 깔려서 나오는 linaro 이미지에는
스왑파티션이 disable되있다던데 다른 이미지로 새로 설치하신건 가요?

김성우

unread,
Sep 16, 2013, 6:00:34 AM9/16/13
to korea-r...@googlegroups.com
제가 쓴 글에 나와있는 것처럼 이미지를 그대로 사용하면서도 스왑공간을 설정하는 2가지 방법이 있습니다.

첫번째는 이미지를 SD 카드에 일단 쓴 후에 우분투 리눅스(PC 데스크탑)의 디스크 도구 프로그램을 사용해서 SD 카드의 빈 공간에 스왑파티션을 따로 잡은 다음 ODROID-X2 보드를 부팅합니다. 그런 다음 /etc/fstab 파일을 고쳐 이미 생성한 스왑파티션을 설정하는 방법입니다.

두번째는 이미지를 SD 카드에 쓴 다음에 ODROID-X2 에 삽입하여 일단 부팅합니다. 그런 다음 루트파일시스템 안에 1GB 크기의 스왑파일을 생성합니다. /etc/fstab 파일을 고쳐 이 파일을 스왑파티션으로 잡으면 됩니다.

매발톱 드림

2013년 9월 16일 월요일 오후 6시 26분 25초 UTC+9, 이지훈 님의 말:

김성우

unread,
Sep 16, 2013, 6:03:36 AM9/16/13
to korea-r...@googlegroups.com
아... 그리고 robroyhall 님이 올린 linaro 이미지에 포함된 커널에는 SWAP 기능이 활성화되어 있습니다.

/boot/config... 커널 설정 파일을 참고하세요.

매발톱 드림

2013년 9월 16일 월요일 오후 6시 26분 25초 UTC+9, 이지훈 님의 말:

김성우

unread,
Sep 16, 2013, 6:11:50 AM9/16/13
to korea-r...@googlegroups.com
아니면, 커널 3.0.75 버전 소스코드를 다운로드하여 SWAP 기능을 활성화하여 커널만 새로 올려도 됩니다.

커널 설치는 다음 링크를 참고하세요.

여기서 주의할 점은 git 로 커널 소스를 받아올 때 반드시 3.0.75 버전을 받아서 설치해야 한다는 점입니다.

그렇게 하려면 https://github.com/hardkernel/linux 에서 commit 를 뒤져야 합니다.

3.0.75 이후 버전을 설치하면 시스템이 실행하다가 터미널이 맛이 갑니다.

매발톱 드림

2013년 9월 16일 월요일 오후 6시 26분 25초 UTC+9, 이지훈 님의 말:

이지훈

unread,
Sep 16, 2013, 7:28:21 PM9/16/13
to korea-r...@googlegroups.com

자세한 설명 감사드립니다 :)
나중에 시간날때 한번 시도해봐야겠네요 ㅎㅎ 혹시 하다가 막히면 다시 질문 드리겠습니다!

지훈 드림

김성우

unread,
Sep 26, 2013, 5:34:12 AM9/26/13
to korea-r...@googlegroups.com
그저께부터 잠시 시간을 내어 Hydro 버전을 Odroid-X2 보드에 테스트해 보았습니다. 설치방법은 Groovy 버전에 비해 많이 간결해지고 빨라졌습니다. 아직 테스트를 많이 해보지는 않았지만 기본적인 패키지들은 터틀봇에서 잘 실행되는 것 같습니다.
다만 rviz 의 경우 실행하자마자 Segmentation Fault 오류로 종료되어 버리는데, groovy 버전을 올려도 마찬가지인 걸로 봐서 rviz 소스코드 문제가 아니라 함께 링크하는 다른 시스템 라이브러리들 때문인 거 같습니다. 이 문제를 해결하는 데는 좀 더 시간이 걸릴 거 같습니다.
하지만 원격으로 rviz 로 로봇을 보여주는 데는 아무런 문제가 없습니다. (오히려 groovy 버전보다 더 안정적인 듯...)

아래에 groovy 버전과 함께 hydro 버전에 대한 설치법을 설명해 두었으니 참고하시고 혹시 잘못된 부분이나 추가하실 사항이 있으면 알려주세요.
그리고, 지훈님 ros 홈페이지에도 업데이트해 주시기 바랍니다.
아울러 이 글은 http://cafe.daum.net/open-robotics 까페에도 올려두겠습니다.

Odroid-X2 보드는 국내 임베디드개발업체인 하드커널 사에서 만든 임베디드 ARM 보드입니다.
(참고: http://www.hardkernel.com/renewal_2011/products/prdt_info.php?g_code=G135235611947)
사 양은 1.7GHz 쿼드코어 삼성 Exynos 4412 CPU, Mali400 GPU, 2GB RAM 을 장착하고 있으며, 6개 의 USB 2.0 포트, 이더넷 포트, HDMI 포트, 그리고 LCD/I2C/UART/ADC/GPIO 용으로 사용할 수 있는 50 핀의 확장포트를 포함하고 있습니다. 소프트웨어로는 안드로이드, Linaro 우분투 리눅스를 공식적으로 지원하고 있으며, 성능이 우수하여, 기존의 터틀봇에서 사용하는 넷북 대신 구동용으로 사용하였습니다.
터틀봇 구동을 위해 Odroid-X2 보드에 설치한 리눅스는 우분투 12.11 버전(for ROS Groovy 버전) 또는 우분투 13.04 버전(for ROS Hydro 버전)을 사용하였고, ROS 소프트웨어는 현재 Groovy/Hydro 버전이 터틀봇과 관련된 대부분의 패키지들을 제공하여 선택하였습니다. 

구체적인 설치환경은 다음과 같습니다.

- 하드웨어: Odroid-x2, Kobuki turtlebot 구동로봇, 프레임, MS kinect, 5V/2A 차량용 시거잭, 기타 케이블들
- 소프트웨어: robroyhall 님의 Ubuntu 12.11 Fullyloaded Image for ROS Groovy version ( http://forum.odroid.com/viewtopic.php?f=15&t=966 ) 또는 Ubuntu 13.04 Dream Machine Image for ROS Hydro version (http://forum.odroid.com/viewtopic.php?f=15&t=1406, OpenNI 1.5.2.1, SensorKinect 1.5.4.0, assimp 3.0, mali400-dev, 다양한 ROS 패키지들

1) 하드웨어 제작

Odroid- x2 보드에는 5V, 최대 2A DC 전원을 공급하도록 되어 있습니다. 사용해보니 USB 쿨링팬, 무선랜카드, 무선키보드/마우 스, kobuki 구동부와의 USB 시리얼 케이블, 키넥트를 연결하니 최대 1.4~1.5A 정도까지 전력을 소모하더군요. 로봇 을 구성하는 모든 장치에 공급되는 전원을 kobuki 구동로봇이 담당하도록 하려면 로봇과 보드의 전원을 연결되는 부분을 제작하여 야 합니다.

kobuki 구동로봇이 제공하는 4개의 전원포트들은 다음과 같습니다.
- 5V/1A : Molex Connector 43540-0218 for custom boards
- 12V/1.5A : Molex 43045-0224 specially supporting the kinect
- 12V/5A : Molex 5566-02B2 for high powered accessories
- 19V/2A : Molex 3928-9068 for recharging netbooks

여 기서, 12V/1.5A 포트는 키넥트에 전원을 공급합니다. 19V/2A 포트는 넷북 충전용으로 Kobuki 에 어댑터 전원이 연결 되지 않으면 전원이 공급되지 않아 odroid  보드 전원 공급용으로는 불가능합니다. 또한,  무선랜/키넥트 /kobuki USB 직렬연결된 상태에서 odroid 보드가 열심히 구동할 때 1.5A 정도까지 전류를 소모하므로 5V/1A 포트 도 사용이 불가능합니다. 결국 12V/5A 포트를 활용하였습니다.
kobuki 와 odroid 보드쪽 연결 커넥터는 다음 링크에서 판매하는 것을 확인할 수 있습니다.
molex 5557-02R for kobuki 12V/5A port:  http://www.eleparts.co.kr/EPX37RHL
39-00-0038 crimp for 5557 connector:  http://www.eleparts.co.kr/EPX3BHX7
PP-012 power plug for odroid-x2 board:  http://www.eleparts.co.kr/EPX6BMK8

5V/2A 정 도의 전원을 안정적으로 공급할 수 있는 레귤레이터의 경우에는, 78S05 (5V/2A) 와 같은 리니어 레귤레이터를 사용하면 전 압 강하시 발열량이 상당하고 효율이 떨어지므로, 효율이 높은 LM2576 과 같은 스위칭 레귤레이터를 사용하는 것이 바람직합니다.
만드는 방법은 여러가지가 있는데, 직접 부품을 연결하는 것보다 이미 만들어져 있는 제품을 사용하면 편리합니다. 예를 들면, 다음과 같은 링크들에서 이미 판매하고 있는 관련제품들을 확인할 수 있습니다.
http://www.eleparts.co.kr/EPX384CH
http://www.eleparts.co.kr/EPX33L49

그 런데 이런 제품들을 사용하는 대신 같은 부품을 사용하여 5V/2A 까지 제공하는 차량용시거잭을 사용해도 되겠더군요. 그래서 관련제 품을 찾아보고 아래 제품들과 커넥터용 부품을 구입하여 kobuki 쪽 커넥터만 연결하여 제작하였습니다.
http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=160552809
http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=254402667

최종적으로 제작된 모습은 다음과 같습니다.


2) 소프트웨어 설치

ARM 보 드에 ROS 를 설치하려면 여러가지 문제를 해결해야 합니다. 우분투의 ROS ARM 버전 패키지들을 활용하려고 해도 x86 패키지 들처럼 완전하게 존재하지도 않는데다가 그나마 터틀봇이 구동되는 Groovy 버전의 경우에도 alignment 버그 패치가 아직 적 용되지 않는 등 문제점이 많습니다.

어쨌든 몇가지 문제점이 있지만 현재까지 해결된 설치방법을 설명하겠습니 다. Kobuki 터틀봇을 위한 Odroid-X2 보드용 ROS 는 기본적으로 우분투 ROS ARM 의 Groovy/Hydro 버전 패키지들 을 활용하되 나머지 수정할 필요가 있는 패키지들과 아직 패키지가 존재하지 않는 OpenNI, rviz 등의 패키지들은 직 접 소스코드를 다운로드하여 빌드하였습니다. Groovy 버전의 경우에는 소스코드 빌드 과정이 catkin 을 이용한 빌드 와 rosbuild 를 이용한 빌드로 나누어지고 새로 나온 Hydro 버전은 catkin 만으로 빌드됩니다.

빌드 과정은 총 4단계로 나누어 보았습니다. 우분투 개발환경 및 OpenNI/SensorKinect 설 치 -> ROS 초기화 및 의존패키지설치 -> catkin/rosbuild 워크스페이스 빌드 -> 보드설정 및 터틀봇 구동 순입니다. 이 중에서 단계 1과 4는 Groovy 과 Hydro 버전이 거의 비슷하지만 단계 2와 3 인 ROS 설치 부분은 완전히 다르므로 아래에서 적절하게 구분해서 설치하시기 바랍니다.

단계 1. Ubuntu 개발환경 및 OpenNI/SensorKinect 드라이버 설치


SD 카드를 16GB 이상으로 준비하신 후에 ODROID-X2 보드용 우분투 이미지를 SD/eMMC 카드에 설치한 후 GParted 파티션 매니저를 사용해서 루트파일시스템의 용량을 최대한 늘려줍니다.
Groovy 버전의 경우 PCL 을 컴파일하기 위해서는 스왑공간을 1GB 이상 설정해야 합니다. Hydro 버전의 경우 PCL 은 우분투 패키지 설치가 가능하므로 소스코드를 빌드하기 위해 스왑 공간을 잡을 필요가 없습니다.
스왑 공간은 SD 카드에 스왑파티션을 만들거나 스왑파일을 등록하면 됩니다. 스왑파티션은 디스크도구를 사용하면 되고, 스왑파일은 다음과 같은 명령을 실행하면 됩니다.
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024    # 1GB
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
부팅시에 스왑공간이 등록되도록 하려면 /etc/fstab 파일에 다음 항목을 추가합니다.
/swapfile    swap    swap    defaults    0 0 
스왑공간의 설치여부는 “cat /proc/swaps” 이나 “free” 명령을 실행하여 확인할 수 있습니다.
linaro@linaro-ubuntu-desktop:~$ free
             total       used       free     shared    buffers     cached
Mem:       1990112    1069872     920240          0      47460     483344
-/+ buffers/cache:     539068    1451044
Swap:      1048572          0    1048572


다음으로 OpenNI 패키지와 SensorKinect 드라이버를 설치합니다.
MS Kinect 장치를 위한 OpenNI 는 2가 지 버전이 있습니다. OpenNI 1.x 버전과 SensorKinect 드라이버를 설치하는 것과 OpenNI2 버전 과 freenect 드라이버를 설치하는 방법입니다. 하지만, 다음에 설치할 PCL 1.7 버전이 OpenNI 1.x 버전을 필요 로 하므로 OpenNI 1.x 버전은 반드시 설치하여야 합니다.


먼저 다음과 같은 의존 패키지들을 설치합니다.
$ sudo apt-get install openjdk-6-jdk
$ sudo apt-get install freeglut3-dev libusb-1.0-0-dev doxygen graphviz

이제 OpenNI 소스코드를 다운로드하고 빌드하여 설치합니다.

$ mkdir openni; cd openni
$ git clone https://github.com/OpenNI/OpenNI.git -b unstable
(또는 git clone https://github.com/jspricke/debian-openni )
$ cd OpenNI

Platform/Linux/Build/Common/Platform.Arm 파일을 편집하여 다음 내용을 수정합니다.

- CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
+ CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard

Platform/Linux/CreateRedist/Redist_OpenNi.py 파일을 편집하여 352 번째 줄을 수정합니다.
-    samples_list.remove('NiViewer')
+#   samples_list.remove('NiViewer')

다음 명령을 실행하여 전체 소스코드를 빌드합니다.
 $ cd Platform/Linux/CreateRedist
$ ./RedistMaker.Arm

빌드가 완료되면 Redist 폴더가 만들어져 있을 겁니다. 이 디렉토리에 들어가서 OpenNI 패키지를 시스템에 설치합니다.
$ cd ../Redist/OpenNI-Bin-Dev-Linux-Arm-v1.5.4.0/

$ sudo ./install.sh

나중에 PCL 등 OpenNI 에 의존하는 패키지에서 참조할 수 있도록 다음과 같은 내용의 패키지 설정파일 libopenni.pc를 /usr/lib/pkgconfig/libopenni.pc 로 만들어 줍니다.
(또는 debian-openni 소스코드를 사용한 경우에는 $ cp debian/libopenni.pc /usr/lib/pkgconfig 를 실행시켜 줍니다)

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/ni

Name: OpenNI
Description: A general purpose driver for all OpenNI cameras.
Version: 1.5.4.0
Cflags: -I${includedir}
Libs: -L${libdir} -lOpenNI

다음으로 SensorKinect 드라이버의 소스코드를 다운로드하고 빌드합니다.
$ cd ~/openni
$ git clone https://github.com/avin2/SensorKinect.git
$ cd SensorKinect

Platform/Linux/Build/Common/Platform.Arm 파일을 편집하여 다음 내용을 수정합니다.

- CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
+ CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard

Source/XnDeviceSensorV2/XnExportedSensorDevice.cpp 파일의 36번째 줄과 XnSensor.cpp 파일의 47번째 줄을 수정합니다.
- #if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
+ #if (XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)

다음 명령을 실행하여 전체 소스코드를 빌드합니다.
$ cd Platform/Linux/CreateRedist
$ ./RedistMaker Arm

드라이버가 빌드되면 Redist 폴더가 만들어져 있을 겁니다. 이 디렉토리에 들어가서 드라이버를 시스템에 설치합니다.
$ cd ../Redist/Sensor-Bin-Linux-Arm-v5.1.2.1/

$ sudo ./install.sh

MS Kinect 장치를 연결하고 lsusb 명령으로 장치를 확인합니다.
$ lsusb

Bus 001 Device 008: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 001 Device 009: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Bus 001 Device 010: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

NiViewer 와 같은 샘플 프로그램을 실행시켜 테스트합니다.
$ NiViewer
또는

$ cd ~/openni/OpenNI/Platform/Linux/Build/Samples/NiViewer
$ make
$ cd ../../../Bin/Arm-Release
$ ./NiViewer

다음은 ROS 를 설치합니다. Hydro 버전을 설치하는 경우 아래 단계 2(Groovy 버전) 대신 한참 아래의 단계 2 (Hydro 버전) 으로 건너뛰어서 설치하시기 바랍니다.

단계 2 (Groovy 버전). ROS 초기화 및 의존 패키지 설치

다음은 ROS Groovy 버전의 우분투 ARM 버전 소프트웨어를 설치합니다. 먼저 ROS 초기화 과정을 수행합니다.

(참고: http://www.ros.org/wiki/groovy/Installation/UbuntuARM)

$ sudo sh -c 'echo "deb http://packages.ros.org/ahendrix-mirror/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update

패키지가 설치되지 않는 경우 가끔 apt-get update 를 실행하면 되는 경우가 있습니다. 사용가능한 패키지를 찾으려면 다음 명령어를 실행하세요.
$ apt-cache search ros-groovy

다음과 같은 ROS 기본 패키지를 설치합니다.
$ sudo apt-get install ros-groovy-ros ros-groovy-ros-comm ros-groovy-roscpp ros-groovy-rospy
다 음으로 아래의 패키지들을 설치합니다. 하지만, 설치 도중 ros-groovy-rviz, ros-groovy-pcl, ros- groovy-pcl-ros 는 ubuntu arm 용 패키지가 없는 관계(2013년 5월 29일 현재)로 설치되지 않습니 다. 이 패키지들을 제외하고 나머지를 설치합니다.

$ sudo apt-get install ros-groovy-geometry-msgs ros-groovy-sensor-msgs ros-groovy-nav-msgs ros-groovy-tf ros-groovy-rviz ros-groovy-nodelet ros-groovy-robot-state-publisher ros-groovy-diagnostic-msgs ros-groovy-dynamic-reconfigure ros-groovy-pcl ros-groovy-pcl-ros ros-groovy-pcl-msgs ros-groovy-diagnostics ros-groovy-image-proc ros-groovy-nodelet-core

다음과 같은 그 외의 패키지들을 설치합니다.

# kobuki-msgs
$ sudo apt-get install ros-groovy-kobuki-msgs
# for yujin ocs (Yujin Robot's open-source control software)
$ sudo apt-get install ros-groovy-yujin-ocs
# for kobuki-ftdi-driver
$ sudo apt-get install libftdi-dev
# for kobuki-auto-docking
$ sudo apt-get install ros-groovy-actionlib
# ecl (Embedded Control Library)
$ 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 ros-groovy-ecl
# 다음은 pcl 설치를 위해서도 필요함

$ sudo apt-get install libeigen3-dev ros-groovy-nodelet ros-groovy-nodelet-topic-tools ros-groovy-pluginlib ros-groovy-orocos-kdl ros-groovy-kdl-conversions ros-groovy-actionlib

다음은 본격적으로 catkin 및 rosbuild 워크스페이스를 빌드하기 전에 의존하는 바이너리 패키지들을 설치합니다.

단계 2-1 openni_camera 및 PCL 의존 패키지 설치


openni_camera, openni_launch 패키지 설치에 필요한 의존 패키지들을 설치합니다.
# for openni-camera & openni2-camera
$ sudo apt-get install ros-groovy-cv-bridge ros-groovy-camera-info-manager
$ sudo apt-get install ros-groovy-compressed-depth-image-transport

다음 명령을 실행하여 PCL 패키지 설치를 위해 필요한 cmake, eigen, boost, vtk 을 설치합니다.
$ sudo apt-get install cmake libflann-dev libeigen3-dev libboost-all-dev libvtk5-dev

libvtk5- dev 설치를 위해 필요한 패키지인 libqt4-opengl-dev 설치를 위해 필요한 libegl1-mesa- dev 와 libgles2-mesa-dev 가 기존에 설치된 mali400-dev 패키지와 충돌하여 제대로 설치되지 않습니다. (PCL 컴파일 시에 /usr/include/KHR/khrplatform.h 와 /usr/include/GLES2 /gl2.h, libEGL.so 등이 중복됨)
따라서 mali400-dev 를 먼저 제거한 후 libqt4-opengl- dev 를 설치하고 난 후에 다시  mali400-dev 를 재설치하여야 합니다. 그런데 mali400-dev 는 우분투서버로부 터 2.1-12 버전만 다운로드할 수 있으므로 2.1-13 버전은 다음과 같이 설치합니다. 만약 계속 libegl1-mesa- dev와 libgles2-mesa-dev 설정과 관련된 오류 메시지가 나타나면 구글에서 문제가 되는 패키지(버전명까지 같아야 함) 를 검색한 다음 deb 파일을 다운로드하여 dpkg 로 강제설치합니다.

$ mkdir ~/mali400; cd ~/mali400
$ wget http://dn.odroid.com/MALI400_R3P2/20130208/mali400_packages.tar.gz
$ tar xvfz mali400_packages.tar.gz
$ sudo dpkg -r mali400-dev
$ sudo apt-get remove libqt4-opengl-dev

$ sudo apt-get install libqt4-opengl-dev
$ sudo dpkg -i --force-overwrite mali400-dev_2.1-13_armhf.deb 
$ sudo rm -rf /usr/lib/arm-linux-gnueabihf/mesa-egl 
$ sync

단계 2-2 rqt_robot_plugins 의존 패키지 설치 

$ sudo apt-get install ros-groovy-tf2-ros ros-groovy-rqt-common-plugins

단계 2-3 image_pipeline 의존 패키지 설치
$ sudo apt-get install ros-groovy-stereo-msgs

단계 2-4 rviz 의존 패키지 설치


다음 패키지들을 설치합니다.
$ sudo apt-get install ros-groovy-visualization-msgs ros-groovy-laser-geometry ros-groovy-python-qt-binding ros-groovy-resource-retriever libogre-dev ros-groovy-image-geometry
그리고, libassimp 3.0 버전을 설치합니다. sudo apt-get install libassimp-dev 명령을 통해 2.0 버전 패키지를 설치하면 나중에 rviz 빌드 시에 오류가 발생합니다.그러므로, 소스싸이트
http://sourceforge.net/projects/assimp/files/assimp-3.0 로부터 소스코드를 다운로드하여 직접 빌드합니다.
$ mkdir ~/assimp; cd ~/assimp
$ unzip assimp--3.0.1270-source-only.zip
$ cd assimp--3.0.1270-source-only ; mkdir build; cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
$ make -j1
$ sudo make install

단계 3. catkin/rosbuild 워크스페이스 빌드
(참고: http://www.ros.org/wiki/kobuki/Tutorials/Installation)

단계 3-1. catkin 워크스페이스 빌드
catkin 워크스페이스를 생성하고 관련 소스 패키지들을 빌드합니다. 소스코드를 빌드하는 패키지들은  roscpp, kobuki, openni_camera, openni_launch, image_pipeline, pcl, pcl- ros, rviz  등입니다.

특히, 여기서는 roscpp 패키지를 이미 설치하였음에도 다시 빌드해야 합니다. 그 이 유는 ARM CPU의 alignment 문제 때문에 터틀봇을 위해 실행되 는 robot_state_publisher 와 robot_pose_ekf 등과 같은 프로그램이 제대로 통신을 하지 못합니다. 그래 서 이 문제를 해결하는 패치를 적용한 다음 ROS 통신 Serialization 기능을 사용하는 libroscpp.so 등을 갱신 하여야 합니다. (패치 참고: https://github.com/ros/roscpp_core/pull/8 )

그 리고, 여기서 설치방법에는 2가지 선택사항이 있습니다. 하나는 catkin 워크스페이스를 시스템의 ROS 개발환경(/opt/ros /groovy) 와 통합하는 방법이고, 별도로 (~/catkin_ws/install/isolated 디렉토리에) 설치하는 방법입니 다. 둘 다 가능한데, 별도로 설치하는 경우 같은 파일이 두군데에 존재하므로 추가적으로 고려해야 할 사항들이 있습니다. 이런 부분 들은 앞으로 “참고” 로 표기하였습니다)

/opt/ros/groovy/include/ros/serialization.h 파일을 편집하여 다음 부분 (211, 243, 253 번째줄) 을 모두 수정합니다.
- #ifdef __arm
+ #if defined(__arm__) || defined(__arm)

다음 명령을 실행하여 소스 패키지들을 빌드할 준비를 합니다.

$ sudo apt-get install python-wstool
 # Create a workspace directory tree somewhere in you file system
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
 # Clone catkin repository
$ git clone https://github.com/ros/catkin.git
$ cp catkin/cmake/toplevel.cmake CMakeLists.txt

$ wstool init
$ wstool set ros_comm --git -v groovy-devel https://github.com/ros/ros_comm.git
$ wstool set kobuki --git -v groovy-devel https://github.com/yujinrobot/kobuki.git

$ wstool set openni_camera --git https://github.com/ros-drivers/openni_camera.git
$ wstool set openni_launch --git -v groovy-devel https://github.com/ros-drivers/openni_launch.git

$ wstool set image_pipeline --git -v groovy-devel https://github.com/ros-perception/image_pipeline.git
$ wstool set rqt_robot_plugins --git -v groovy-devel https://github.com/ros-visualization/rqt_robot_plugins.git
$ wstool set ineractive_markers --git -v groovy-devel https://github.com/ros-visualization/interactive_markers.git
$ wstool set rviz --git -v groovy-devel https://github.com/ros-visualization/rviz.git
$ wstool set perception_pcl --git -v groovy-unstable-devel https://github.com/ros-perception/perception_pcl.git

참고: catkin 워크스페이스를 시스템 ROS 개발환경과 통합하지 않는 경우 다음 패키지들도 다시 빌드하여야 합니다.

$ wstool set geometry --git -v groovy-devel https://github.com/ros/geometry.git
$ wstool set robot_state_publisher --git -v groovy-devel https://github.com/ros/robot_state_publisher.git
$ wstool set yujin_ocs --git -v groovy-devel https://github.com/yujinrobot/yujin_ocs.git


또, 나중에 rosbuild 빌드 시에 필요로 하는 flann 라이브러리 패키지 때문에 .rosinstall 파일에 다음 내용을 추가합니다.
- tar: {local-name: flann, uri: 'https://github.com/ros-gbp/flann-release/archive/release/flann/1.7.1.tar.gz',
   version: flann-release-release-flann-1.7.1}

다음 명령을 실행하여 소스 패키지들을 다운로드받습니다.
$ wstool update

ros_comm/test 디렉토리를 src 디렉토리로부터 제거합니다.
$ mv ros_comm/test ..

rviz 소스코드에서 src/rviz/ogre_helpers/point_cloud.cpp 파일 내용의 버그를 수정합니다. 
531c531
-       int num_verts = std::min<int>( VERTEX_BUFFER_CAPACITY, num_points - current_point );
+       int num_verts = std::min<int>( VERTEX_BUFFER_CAPACITY, (num_points - current_point) * vpp );
567,569c567,571
+   if (!isnan(p.position.x) && !isnan(p.position.y) && !isnan(p.position.z)) {
        aabb.merge(p.position);
        bounding_box_.merge( p.position);
        bounding_radius_ = std::max( bounding_radius_, p.position.squaredLength() );
+   }

이제 다음과 같은 명령을 실행하여 catkin 워크스페이스 내의 모든 패키지들을 빌드하고 설치합니다. PCL 이 포함되어 있어 빌드 시간이 한나절은 족히 걸립니다.
$ cd ..
$ source /opt/ros/groovy/setup.bash
$ sudo ./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/groovy 

참고:
시스템의 ROS 개발환경과 통합하고 싶지 않으면, $ catkin_make_isolated --install 명령을 실행하여 install_isolated 디렉토리에 설치하면 됩니다. 하지만 이럴 경우 /opt/ros/groovy 에 설치된 기존의 우분투 패키지들과 충돌하게 되는 문제가 있습니다.


PCL 1.7 버전의 패키지 리소스 디렉토리와 관련 파일을 만들어 줍니다.
(참고: 시스템 ROS 개발환경과 통합하지 않은 경우 ~/catkin_ws/install_isolated/share 디렉토리에 만듭니다)
# for PCL 1.7
$ cd /opt/ros/groovy/share
$ sudo cp -r pcl-1.7 pcl
$ cd pcl; sudo mkdir cmake; sudo mv * cmake
$ sudo cp ~/catkin_ws/src/perception_pcl/pcl/package.xml .


다음 내용을 가진 /opt/ros/groovy/lib/pkgconfig/pcl.pc 파일을 만듭니다. (참고: 시스템 ROS 개발환경과 통합하지 않은 경우 ~/catkin_ws/install_isolated/lib/pkgconfig/pcl.pc 파일(prefix=/home/linaro/catkin_ws/install_isolated)을 만듭니다)
prefix=/opt/ros/groovy

libdir=${prefix}/lib
includedir=${prefix}/include/pcl-1.7
Name: pcl
Description: Description of pcl
Version: 1.7.0
Cflags: -I${includedir}
Libs: -L${libdir}
Requires:


참고: 
catkin 워크스페이스를 시스템의 ROS 환경과 통합하지 않으면 libroscpp.so 라이브러리가 양쪽에 다 있으므로 제대로 동작하지 않을 수 있습니다. 그런 경우 다음 파일을 수정하고 재부팅한 다음 재빌드하여 제대로 동작하도록 해 주어야 합니다.

$ vi ~/catkin_ws/install_isolated/_setup_util.py
- CMAKE_PREFIX_PATH = '/opt/ros/groovy;/home/linaro/catkin_ws/install_isolated'.split(';')
+ CMAKE_PREFIX_PATH = '/home/linaro/catkin_ws/install_isolated;/opt/ros/groovy'.split(';')

단계 3-2. Rosbuild Stacks 빌드
(참고: http://www.ros.org/wiki/turtlebot/Tutorials/groovy/Installation)

먼저 다음 명령을 실행합니다.
$ rosrun kobuki_ftdi create_udev_rules

참고: 시스템 ROS 개발환경과 통합하지 않은 경우 다음 명령을 실행합니다.
$ source ~/catkin_ws/install_isolated/setup.bash

다음 의존 패키지들을 설치합니다.
# for turtlebot
$ sudo apt-get install ros-groovy-zeroconf-avahi ros-groovy-multimaster-experimental ros-groovy-depthimage-to-laserscan
#$ sudo apt-get install ros-groovy-xacro

# for kobuki_desktop/kobuki_qtestsuite
$ sudo apt-get install pyqt4-dev-tools
# for turtlebot_apps/turtlebot_calibration
$ sudo apt-get install ros-groovy-python-orocos-kdl
# for turtlebot_apps/turtlebot_teleop
$ sudo apt-get install ros-groovy-joy
# for navigation/map-server
$ sudo apt-get install libsdl-image1.2-dev
# for turtlebot_apps/turtlebot_core_apps
$ sudo apt-get install ros-groovy-map-store ros-groovy-compressed-image-transport 
# for navigation/robot_pose_ekf
$ sudo apt-get install ros-groovy-bfl

다음 명령을 실행하여 rosbuild 워크스페이스를 만듭니다.
$ mkdir ~/rosbuild_ws
$ rosws init ~/rosbuild_ws /opt/ros/groovy
(참고: 시스템의 ROS 개발환경과 통합하지 않은 경우 위 명령 대신 $ rosws init ~/rosbuild_ws ~/catkin_ws/install_isolated 실행합니다)
.rosinstall 파 일을 수정하여 kobuki_desktop, turtlebot, turtlebot_apps, turtlebot_viz 항목들 의 “master” 버전을 “groovy” 로 바꿉니다. 그런 다음 다음 명령을 실행하여 소스코드를 다운로드합니다.
$ rosws update

turtlebot_apps/software/pano/pano_core/CMakeLists.txt 파일에서 18번째 줄을 다음과 같이 수정합니다.

- set(ROS_COMPILE_FLAGS ${ROS_COMPILE_FLAGS} "-msse4.2 -Wall")
+ #set(ROS_COMPILE_FLAGS ${ROS_COMPILE_FLAGS} "-msse4.2 -Wall")

gazebo 와 관련된 패키지들을 설치하지 않기 위해 다음 명령을 실행합니다.
$ mkdir uninstalled
$ mv kobuki_desktop/kobuki_gazebo uninstalled
$ mv kobuki_desktop/kobuki_gazebo_plugins uninstalled

다음과 같은 명령을 실행하여 관련된 패키지들을 빌드합니다.
$ source setup.bash
$ sudo rosdep init
$ rosdep update
$ rosmake robot_model_visualization navigation kobuki_desktop turtlebot turtlebot_apps turtlebot_viz

기본적인 설치가 모두 끝났습니다. 단계 4로 가서 설치를 계속하시기 바랍니다.

단계 2 (Hydro 버전). ROS 초기화 및 의존패키지 설치

다음 명령을 실행하여 시스템 로컬을 설정합니다.
sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGE=POSIX

다음은 ROS Hydro 버전의 우분투 ARM 버전 소프트웨어를 설치합니다. 먼저 ROS 초기화 과정을 수행합니다.
$ sudo sh -c 'echo "deb http://packages.ros.org/ahendrix-mirror/ubuntu raring main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update

패키지가 설치되지 않는 경우 가끔 apt-get update 를 실행하면 되는 경우가 있습니다. 사용가능한 패키지를 찾으려면 다음 명령어를 실행하세요.
$ apt-cache search ros-hydro

다음과 같은 ROS 기본 패키지를 설치합니다.
$ sudo apt-get install ros-hydro-ros ros-hydro-roscpp ros-hydro-rospy

다음으로 아래의 패키지들을 설치합니다. 하지만, 설치 도중 ros-hydro-rviz 는 ubuntu arm 용 패키지가 없는 관계(2013년 9월 27일 현재)로 설치되지 않습니다. 이 패키지들을 제외하고 나머지를 설치합니다.
$ sudo apt-get install ros-hydro-geometry-msgs ros-hydro-sensor-msgs ros-hydro-nav-msgs ros-hydro-tf ros-hydro-rviz ros-hydro-nodelet ros-hydro-robot-state-publisher ros-hydro-diagnostic-msgs ros-hydro-dynamic-reconfigure ros-hydro-pcl ros-hydro-pcl-ros ros-hydro-pcl-msgs ros-hydro-diagnostics ros-hydro-nodelet-core
ros-hydro-image-pipeline ros-hydro-interactive-markers ros-hydro-navigation ros-hydro-tf2-ros ros-hydro-rqt ros-hydro-rqt-common-plugins

다음은 본격적으로 catkin 워크스페이스를 빌드하기 전에 의존하는 바이너리 패키지들을 설치합니다.

단계 2-1 openni_camera 의존 패키지 설치
openni_camera, openni_launch 패키지 설치에 필요한 의존 패키지들을 설치합니다.
# for openni-camera & openni2-camera
$ sudo apt-get install ros-hydro-camera-info-manager
$ sudo apt-get install ros-hydro-compressed-depth-image-transport

단계 2-2 rviz 의존 패키지 설치

다음 패키지들을 설치합니다.
$ sudo apt-get install ros-hydro-visualization-msgs ros-hydro-laser-geometry ros-hydro-python-qt-binding ros-hydro-resource-retriever libogre-dev ros-hydro-image-geometry 
$ sudo apt-get install libqt4-dev libqt4-opengl-dev

그리고, libassimp 3.0 버전을 설치합니다. sudo apt-get install libassimp-dev 명령을 통해 3.0 버전 패키지를 설치하면 나중에 rviz 빌드 시에 오류가 발생합니다.그러므로, 소스싸이트
http://sourceforge.net/projects/assimp/files/assimp-3.0 로부터 소스코드를 다운로드하여 직접 빌드합니다.
$ mkdir ~/assimp; cd ~/assimp
$ unzip assimp--3.0.1270-source-only.zip
$ cd assimp--3.0.1270-source-only ; mkdir build; cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
$ make -j1
$ sudo make install

/usr/share/cmake-2.8/Modules/FindQt4.cmake 파일의 500 번째 줄을 수정합니다.
- find_program(QT_QMAKE_EXECUTABLE NAMES qmake qmake4 qmake-qt4 qmake-mac
+ find_program(QT_QMAKE_EXECUTABLE NAMES qmake4 qmake-qt4 qmake-mac

단계 2-3 turtlebot & kobuki 의존 패키지 설치

기타 turtlebot 과 kobuki 관련 의존 패키지들을 설치합니다.
# for turtlebot
$ sudo apt-get install ros-hydro-zeroconf-avahi ros-hydro-depthimage-to-laserscan ros-hydro-xacro
# for kobuki-ftdi-driver
$ sudo apt-get install libftdi-dev
# for kobuki_desktop/kobuki_qtestsuite
$ sudo apt-get install pyqt4-dev-tools
# for kobuki_desktop/kobuki_dashboard
$ sudo apt-get install ros-hydro-rqt-robot-dashboard
# for turtlebot_apps/turtlebot_calibration
$ sudo apt-get install ros-hydro-python-orocos-kdl
# for turtlebot_apps/turtlebot_navigation
$ sudo apt-get install ros-hydro-slam-gmapping
# for turtlebot_apps/turtlebot_teleop
$ sudo apt-get install ros-hydro-joy
# for turtlebot_apps/turtlebot_core_apps
$ sudo apt-get install ros-hydro-map-store ros-hydro-compressed-image-transport 
# for turtlebot_viz
$ sudo apt-get install ros-hydro-joint-state-publisher

단계 3 (Hydro 버전). catkin 워크스페이스 빌드

Hydro 버전은 catkin 워크스페이스만 생성하고 관련 소스 패키지들을 빌드하면 됩니다. 소스코드를 빌드하는 패키지들은 아직 우분투 ARM 버전 패키지들로 등록되지 않은 openni_camera/openni_launch, ecl, kobuki, turtlebot, rviz  등입니다.

다음 명령을 실행하여 소스 패키지들을 빌드할 준비를 합니다.
$ sudo apt-get install python-wstool
 # Create a workspace directory tree somewhere in you file system
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ wstool init
$ wstool set kobuki --git -v hydro-devel https://github.com/yujinrobot/kobuki.git
$ wstool set kobuki_msgs --git -v hydro-devel https://github.com/yujinrobot/kobuki_msgs.git
$ wstool set kobuki_core --git -v hydro-devel https://github.com/yujinrobot/kobuki_core.git
$ wstool set kobuki_desktop --git -v hydro-devel https://github.com/yujinrobot/kobuki_desktop.git
$ wstool set openni_camera --git https://github.com/ros-drivers/openni_camera.git
$ wstool set openni_launch --git -v hydro-devel https://github.com/ros-drivers/openni_launch.git
$ wstool set rgbd_launch --git -v hydro-devel https://github.com/ros-drivers/rgbd_launch.git
$ wstool set rviz --git -v hydro-devel https://github.com/ros-visualization/rviz.git
$ wstool set ecl_tools --git -v hydro-devel https://github.com/stonier/ecl_tools.git
$ wstool set ecl_lite --git -v hydro-devel https://github.com/stonier/ecl_lite.git
$ wstool set ecl_core --git -v hydro-devel https://github.com/stonier/ecl_core.git
$ wstool set ecl_navigation --git -v hydro-devel https://github.com/stonier/ecl_navigation.git
$ wstool set turtlebot --git -v hydro-devel https://github.com/turtlebot/turtlebot.git
$ wstool set turtlebot_create --git -v hydro-devel https://github.com/turtlebot/turtlebot_create.git
$ wstool set turtlebot_apps --git -v hydro-devel https://github.com/turtlebot/turtlebot_apps.git
$ wstool set turtlebot_viz --git -v hydro-devel https://github.com/turtlebot/turtlebot_viz.git
$ wstool set yujin_ocs --git -v hydro-devel https://github.com/yujinrobot/yujin_ocs.git

다음 명령을 실행하여 소스 패키지들을 다운로드받습니다.
$ wstool update

rviz 소스코드에서 src/rviz/ogre_helpers/point_cloud.cpp 파일 내용의 버그를 수정합니다. 
567,569a567,571
+   if (!isnan(p.position.x) && !isnan(p.position.y) && !isnan(p.position.z)) {
   aabb.merge(p.position);
   bounding_box_.merge( p.position );
   bounding_radius_ = std::max( bounding_radius_, p.position.squaredLength() );
+   }

gazebo 와 관련된 패키지들을 설치하지 않기 위해 다음 명령을 실행합니다.
$ mkdir ../uninstalled
$ mv kobuki_desktop/kobuki_gazebo ../uninstalled
$ mv kobuki_desktop/kobuki_gazebo_plugins ../uninstalled

이제 다음과 같은 명령을 실행하여 catkin 워크스페이스 내의 모든 패키지들을 빌드하고 install_isolated 디렉토리에 설치합니다.
$ cd ..
$ source /opt/ros/hydro/setup.bash
$ catkin_make_isolated --install

기본적인 설치가 끝났습니다.

단계 4. 보드설정 및 터틀봇 구동
(참고: http://wiki.ros.org/turtlebot/Tutorials)

다음은 kobuki 구동로봇, MS Kinect, Odroid-X2 보드를 서로 연결하고 
기존의 turtlebot 설치방법에 나와 있는 대로 시간동기화를 합니다.

$ sudo apt-get install chrony
$ sudo ntpdate ntp.ubuntu.com

.bashrc 파일에 다음 문장을 추가한 다음 리부팅합니다.
Groovy 버전:
source /opt/ros/groovy/setup.bash
(참고: catkin 워크스페이스를 시스템 ROS환경과 통합하지 않는 경우 source /home/linaro/catkin_ws/install_isolated/setup.bash 를 추가합니다)
source /home/linaro/rosbuild_ws/setup.bash
export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=<IP of turtlebot>

Hydro 버전:
source /opt/ros/hydro/setup.bash
source /home/odroid/catkin_ws/install_isolated/setup.bash
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=<IP of turtlebot>

다음으로  네트워크 연결이 잘 되어 있는지를 확인한 다음, 터틀봇/거북이 튜토리얼에 나오는 여러가지 프로그램들을 실행시켜 봅니다.
먼 저 ODROID-X2 임베디드보드는 배터리가 없으므로 minimal_launch 실행 시에 laptop_battery.py 실행하 는 부분을 제거합니다. 다음과 같이 ~/rosbuild_ws/turtlebot/turtlebot_bringup/launch /minimal.launch 파일 (Groovy 버전) 또는 
~/catkin_ws/install_isolated/turtlebot/turtlebot_bringup/launch/minimal.launch 파일 (Hydro 버전) 을 수정합니다.


+  <!--
  <include file="$(find turtlebot_bringup)/launch/includes/_netbook.launch">
    <arg name="battery" value="$(arg battery)" />
  </include>
+  -->
...

$ rosrun kobuki_ftdi create_udev_rules
[How to launch turtlebot]
$ roslaunch turtlebot_bringup minimal.launch

[How to launch dashboard]
$ rqt -s kobuki_dashboard  또는
$ roslaunch turtlebot_dashboard turtlebot_dashboard.launch


[How to launch 3d sensor]
$ roslaunch turtlebot_bringup 3dsensor.launch

[How to launch rviz]
$ roslaunch turtlebot_rviz_launchers view_robot.launch


[How to launch keyboard teleoperation]
$ roslaunch turtlebot_teleop keyboard_teleop.launch

추 가로 안드로이드폰에서 OSRF 가 제공하 는 ros app chooser (groovy), ros teleop (groovy), nake a map (groovy), ros map navigation 등 과 유진로봇에서 제공하는 Turtlebot panorama, Turtlebot follower 등을 실행시켜 kobuki 와 연결 시켜 구동시켜 봅니다.

현재 원격조종은 문제없이 동작합니다. Groovy 버전의 경우 rviz 로 로봇 주변 환경을 보여줄 때, RGB 카메라 이미지를 처음에는 잘 보여주다가 나중에는 검게 나오는 문제가 있습니다. Hydro 버전의 경우 rviz 를 실행하면 Segmentation Fault 오류가 발생하여 실행되지 않습니다. groovy-devel 버전의 rviz 를 실행해도 마찬가지로 오류가 발생하는 걸로 봐서는 rviz 소스가 아닌 링크하는 다른 라이브러리의 문제인 것 같습니다. 하지만, 어쨌든 원격으로 rviz 를 사용해서 로봇을 보는 데는 아무런 문제가 없습니다.

마지막으로 여러 부분의 오류 수정과 새로운 hydro 버전 포팅 등에 대해 여러분들의 많은 관심과 도움이 필요합니다.

2013년 9월 17일 화요일 오전 8시 28분 21초 UTC+9, 이지훈 님의 말:

이지훈

unread,
Sep 26, 2013, 6:15:57 AM9/26/13
to korea-r...@googlegroups.com

앗 벌써 테스트 해보셨다니 빠르시네요 ㅎㅎ 주말에 위키업데이트를 다시 하겠습니다. 감사합니다. :)

이지훈

unread,
Sep 29, 2013, 10:28:01 PM9/29/13
to korea-r...@googlegroups.com

위키에 업데이트를 하였습니다.   http://www.ros.or.kr/index.php/Howtoros  가셔서 확인하실 수 있습니다. 
혹시 수정하시고 싶으신 부분이 있으시면 저에게 알려주시거나 구글ID나 OpenID 로그인이 가능하니 직접 하실 수 잇습니다. ㅎㅎ

그리고 혹시 터틀봇으로 어떤 프로젝트하시는지 공유해주실 수 있나요? 임베디드 올리셔서 사용하신다니까 궁금하네요. :)

김성우

unread,
Sep 30, 2013, 9:07:55 AM9/30/13
to korea-r...@googlegroups.com
네. 감사합니다.^^;

우선 수정사항과 관련해서 알려드리면 Hydro 버전에서 rviz 프로그램이 죽는 문제는 해결했습니다.
로케일 문제인 거 같습니다. LC_ALL=C 일 때는 죽더군요. 이걸 바꾸니까 Groovy 버전처럼 잘 동작하네요.
하지만, rviz 처리 속도가 여전히 느리고 rgb 이미지를 받다가 못받다가 하는 문제는 여전히 존재합니다.
그리고 Hydro 버전에서는 안드로이드 앱들이 동작하지 않던데 이것도 해결해야 할 문제입니다.

그리고, 개인적인 이야기를 좀 하자면 제 관심분야 중 하나가 로봇이긴 한데 주전공이 아닌지라 이쪽 분야에서는 별로 진척사항이 없습니다.
여전히 ROS 를 배우는 단계라고나 할까요? 오히려 유진로봇에서 어떤 분야를 연구하는지 또는 요즘 로봇 연구동향이 더 궁금합니다.
아. 그리고 유진에서 만든 concert 던가요? 여러로봇들이 협업하는 데 쓰이는 모듈들도 관심이 있네요.

매발톱 드림 

2013년 9월 30일 월요일 오전 11시 28분 1초 UTC+9, 이지훈 님의 말:

이지훈

unread,
Sep 30, 2013, 7:27:24 PM9/30/13
to korea-r...@googlegroups.com

아 그럼 LC_ALL=C 를 어떤 내용으로 변경해야되나요?

그리고 터틀봇의 경우 Hydro로 넘어오면서 App Chooser가 변경되었습니다. 이제 App Chooser대신에 Robot Remocon을 받으셔서 사용하시면 됩니다. Hydro로 넘어오면서 새로운 앱 시스템이 탑재되어서 기존에 있던 App Chooser에서 사용하던 앱들과는 호환성때문에 그랬을겁니다. :)


유진에서하는 Robotics in Concert(약칭 로콘) 프로젝트는 간단하게 설명드리면 로봇들이 가지고 있던 한계성들을 타파해보고자 시작한 프로젝트입니다. 로봇이 단일 개체로써 할 수 있는 일들은 제한적이지만 만약에 로봇과 주변에 있는 시스템들(예를들어 Tablet, Overhead camera, 다른 로봇등)이 연동을 해서 같이 일을 한다면 훨씬 더 많은 일들을 할 수 있다고 보였기에 그럼 로봇과 주변환경을 연동시킬 수 있는 시스템을 만들어보고자 해서 시작한 프로젝트입니다. 자세한 내용은 아래 링크를 통해서 확인하실 수 있습니다. 그리고 밑에 영상은 유진에서 올해 5월에 데모 시연했었던 영상입니다. :)

로콘 프로젝트 사이트 : http://www.robotconcert.org

지훈 드림

김성우

unread,
Sep 30, 2013, 11:47:32 PM9/30/13
to korea-r...@googlegroups.com
저는 한글모드를 사용하고 있어서 ko_KR.UTF-8 로 바꾸었습니다.

그리고, 앱이 가능하도록 하려면 Rocon 패키지들을 설치해야겠네요.

2013년 10월 1일 화요일 오전 8시 27분 24초 UTC+9, 이지훈 님의 말:

Jihoon Lee

unread,
Oct 1, 2013, 12:16:40 AM10/1/13
to 김성우, korea-r...@googlegroups.com
아 모드에 따랏 다르게 설정하면 되는군요 알겠습니다.

그리고 Hydro에서 Source 인스톨을 하시려면 ROS Wiki의 Source Installation을 따르시거나
다음 파일을 사용하시면 됩니다.


그러면 rocon 관련 패키지들도 다 같이 설치 될 것입니다.

-------------------------------------------
Jihoon Lee
Research Engineer
YujinRobot RnD
Tel      : +82-70-4657-7077


2013/10/1 김성우 <swk...@gmail.com>

--
Google 그룹스 '한국 ROS 사용자' 그룹의 주제에 가입했으므로 이 메시지를 받으셨습니다.
이 주제에서 탈퇴하려면 https://groups.google.com/d/topic/korea-ros-users/Lu40igXnIlA/unsubscribe을(를) 방문하세요.
이 그룹 및 그룹의 모든 주제에서 탈퇴하려면 korea-ros-use...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 korea-r...@googlegroups.com(으)로 이메일을 보내세요.
http://groups.google.com/group/korea-ros-users에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.

김성우

unread,
Oct 2, 2013, 2:26:17 AM10/2/13
to korea-r...@googlegroups.com, 김성우, jih...@yujinrobot.com
링크에 나오는 방법대로 하면 의존패키지들(ecl-threads 등) 이 아직 우분투 ARM 버전이 없어서 그런지 오류가 나네요.
어쨌든 rocon_msgs, rocon_multimaster, rocon_app_platform 패키지들을 설치해서 해결하고 ROS 홈페이지 문서를 업데이트했습니다.
그런데, 이상하게도 안드로이드에서는 Robot Remocon 으로는 접속이 안되고 개별 앱(teleop 등) 으로는 되네요.
좀 더 살펴봐야겠습니다.

2013년 10월 1일 화요일 오후 1시 16분 40초 UTC+9, 이지훈 님의 말:
Reply all
Reply to author
Forward
0 new messages