ROS indigo for Ubuntu 14.04へのOpenCV nonfree moduleの導入
Ubuntu 14.04 用のROS indigoをインストールすると,どうやらOpenCVのnonfree moduleが含まれていないよう.
このことはLSD-SLAMのREADMEにも記述されている.
Note for Ubuntu 14.04: The packaged OpenCV for Ubuntu 14.04 does not include the nonfree module, which is required for openFabMap (which requires SURF features). You need to get a full version of OpenCV with nonfree module, which is easiest by compiling your own version. We suggest to use the 2.4.8 version, to assure compatibility with the current indigo open-cv package.
このままではSURF等の機能が利用できないので,上記のアドバイスに従い手動でOpenCV2.4.8をmakeしてインストールしましょう.
参考サイト:Pepperめも~SLAMに挑戦~ (前編) - Qiita,
Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS – Sebastian Montabone,
OpenCV Lover: Install OpenCV 2.4.8 on Ubuntu 13.10
$sudo apt-get install build-essential cmake $sudo apt-get install libjpeg-dev libtiff4-dev libjasper-dev $sudo apt-get install libgtk2.0-dev $sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $cd ~ $wget https://github.com/Itseez/opencv/archive/2.4.8.zip $unzip 2.4.8.zip $cd opencv-2.4.8 $mkdir build $cd build ####要変更:後述#### $cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON .. $cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D MAKE_INSTALL_PREFIX=/usr/local .. ############### $make $sudo make install $echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/opencv.conf $sudo ldconfig $export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH $export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH $export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
しかし,OpenCVのインストール後,ROSのimage_viewパッケージが下記のエラーで動かなくなりました.
init done
opengl support available(image_view:31631): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'GtkWidget'
(image_view:31631): GLib-GObject-WARNING **: instance of invalid non-instantiatable type '(null)'
(image_view:31631): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
いくつかのサイト*1によると,QtをONにした状態でOpenCVをビルドしたため,OpenCV(のHighgui)のbackendであるQtとimage_viewのbackendであるGTKを取り違えてる?的なエラーが起きているようです.(よくわからん)
エラーを回避するためにsudo make uninstallで一度OpenCVを取り除き,再度Qtのオプションをはずした状態でmakeしました.
$cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON .. $cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D MAKE_INSTALL_PREFIX=/usr/local .. $make $sudo make install ...
上記のコマンドで今のところ良好に動いています.Ubuntu14.04 + ROS IndigoでnonfreeのOpenCVを利用したい方は,OpenCVのインストール後にROSのimage_viewパッケージを立ち上げて競合が起こっていないか確認しておいた方がよいと思います.