t.marcusの実験メモ -2ページ目

t.marcusの実験メモ

基本的には,実験メモ
たまに気になる事を徒然と

今回はKinectを使ったSLAM(Simultaneously Localization and Maping)の生成ツールであるROS RGBDSLAMというもののインストールします.

SLAMについてはここを参照してください.

インストール対象のOSはUbuntu 11.10となります.

ちなみにRGBDSLAMはこんな感じのもの



1.はじめに,コンピュータにROS.orgのソフトウェアを受け入れ可能にします.

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


2.aptにkeyを追加します.

$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -


3.aptのデータベースを更新します.

$ sudo apt-get update


4.aptを使ってROS(electric)のフルバージョンをインストールします.

$ sudo apt-get install ros-electric-desktop-full


5.~/.bashrcにROS electricの環境をセットします.

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


6.ROSの作業用ディレクトリを作成します.

$ mkdir -p ~/ros


7.作業用ディレクトリにパスが通っていることを確認

$ echo $ROS_PACKAGE_PATH
  → /home/{ユーザ名}/ros が含まれることを確認

もし含まれていない場合は,以下を実行
$ vi ~/.bashrc

--- 最終行に追記する ---
export ROS_PACKAGE_PATH=~/ros:$ROS_PACKAGE_PATH
---------------------


8.念のためもう一度aptをアップデート

$ sudo apt-get update


9.ROS ElectricのPCL拡張とOpenNI拡張・meshlab・libgsl0-devをaptでインストールする

$ sudo apt-get install ros-electric-perception-pcl-addons ros-electric-openni-kinect meshlab libgsl0-dev libqt4-sql-sqlite qt4-designer qt4-doc


10.ROSの作業用ディレクトリに移動する.

$ cd ros


11.ROSの作業用ディレクトリにhogman_minimalをチェックアウトする.

$ svn co http://alufr-ros-pkg.googlecode.com/svn/trunk/freiburg_tools/hogman_minimal


12.ROSの作業用ディレクトリにrgbdslamをチェックアウトする.

$ svn co https://svn.openslam.org/data/svn/rgbdslam/trunk rgbdslam


13.rosmakeでrgbdslamをインストールする.

$ roscd rgbdslam && rosmake --rosdep-install rgbdslamam


14.ROSのOpenNI拡張を起動して,別ウィンドウでRGBDSLAM拡張を起動する.

$ roslaunch openni_camera openni_node.launch
$ roslaunch rgbdslam rgbdslam.launch


15.以下のエラーが発生するのでバグを修正する.


ERROR: cannot launch node of type [rgbdslam/rgbdslam]: Cannot locate
node of type [rgbdslam] in package [rgbdslam]
No processes to monitor
shutting down processing monitor...
... shutting down processing monitor complete



16.作業用ディレクトリのRGBDSLAMに入る.

$ cd ~/ros/rgbdslam


17.ソースの修正

$ vi src/graph_manager.cpp

1043行目をコメントアウトして、その下に以下を追記する
--- 追記内容 ---
ointcloud_type ncloud=cloud_in;
Eigen::Map<Eigen::Vector3f> p_in (&ncloud.points[i].x, 3, 1);
----------------



$ vi src/glviewer.cpp
300行目と446行目をコメントアウトして、グローバル変数(32行目あたり)に以下を追記する
--- 追記内容 ---
unsigned int kr=0, kb=0, kg=0;
const point_type origin(kr, kb, kg);
----------------


18.rgbdslamをコンパイルする

$ cmake .; make


19.起動する

$ cd ~/ros

$ roslaunch openni_camera openni_node.launch
$ roslaunch rgbdslam rgbdslam.launch

もしくは

$ roslaunch rgbdslam kinect+rgbdslam.launch
0.ffmpeg-phpとは?
ffmpeg-phpとはその名のとおり,phpからffmpegの機能の一部を使うためのラッパークラスで,現在は情報の取得が主でエンコードはできません.(v0.6.0現在)
エンコードを行なう場合は子プロセスなどでffmpegを実行する必要がある(とおもふ).


1.ffmpegの確認
ffmpegのインストールオプションで --enable-sharedでインストールしてあることを確認する.


2.ffmpeg-phpのダウンロード&インストール
ffmpeg-phpのページからアーカイブをダウンロードする.
$ tar jxvf ffmpeg-php-0.6.0.tbz2
$ cd ffmpeg-php-0.6.0
$ phpize
$ ./configure
$ make
$ make install


3.インストール時のエラー
自分の環境ではmakeするとffmpeg_frame.cがPIX_FMT_RGBA32~というエラーを起こしていたので以下の方法で回避
$ vi ffmpeg_frame.c
$ :%/PIX_FMT_RGBA32/PIX_FMT_RGB32
$ :wq


4.phpにモジュールの追加
そのままでは,phpにffmpeg-phpモジュールが追加されていないので,以下以下の方法で追加
$ vi /etc/php.d/modules/ffmpeg.ini(新規作成?)
▼以下を追記ーーーー
; Enable ffmpeg.so
extension=ffmpeg.so
▲ーーーーーーーーー
$ /etc/rc.d/init.d/httpd restart



以上
1.ライブラリのダウンロード
ライブラリをソースビルドするのは面倒なので,yumでインストール
# yum install faac-devel lame-devel *xvid*


2.ffmpegのインストール
SVNでffmpegのtrunkをチェックアウトして./configureしてmake & make installする
※configureオプションは ./configure --helpで確認

# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
# cd ffmpeg
# ./configure --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libfaac --enable-libx264 --enable-libxvid --enable-shared --enable-gpl --enable-nonfree --enable-version3 --disable-yasm
# make
# make install

3.ライブラリのパスを通す
インストール直後に# ffmpegをすると「ライブラリが無いよ」エラーを吐かれるので,ライブラリパスを通す.

# vi /etc/ld.so.conf
▼ 以下を追記 ーーー
/usr/local/libevent-1.4.14b/lib
/usr/local/lib
▲ ーーーーーーーー

# /sbin/ldconfig



以上