Ubuntu
OpenCV
RaspberryPi
ROS

Raspberry Pi 2へのROS Indigo/Ubuntu/OpenCV3他開発環境のインストール(ログ)


はじめに: 素直に終わらなかったので…

下記に従えば簡単にインストール…ROSだけはできず、かなり難航しました。

2016/5時点での一連の最新のパッケージの状況かもしれず、インストールで行ったことをまとめておきます。

ROS以外にも、開発環境の設定で参考になりそうなことは全て記載してみます。(半分はメモ…)

(2016/5/15 VNCのインストール手順を追記)


インストール手順として参考にした情報


インストールした環境


  • Ubuntu 14.04 LTS

  • ROS Indigo

  • OpenCV 3.0.0


Ubuntuのインストール

Ubuntu自体は問題なくインストールできた。

[RPi用Ubuntu手順] に基本的には従い、下記を実施:


1. イメージをmicroSDへ書き込み

手順にリンクしてあるイメージをそのまま利用。

- Download 2015-04-06-ubuntu-trusty.zip


(参考) sshインストール

$ sudo apt-get update

$ sudo apt-get install openssh-server


(参考) UTF-8ワーニング対策

※ この設定があるコンソールで下記がログイン時に警告されることへの対策: LC_ALL=ja_JP.UTF-8

"-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)"

$ export LANGUAGE=ja_JP.UTF-8

$ export LANG=ja_JP.UTF-8
$ export LC_ALL=ja_JP.UTF-8
$ sudo locale-gen ja_JP.UTF-8


2. ディスク容量確保

※ 意味を理解せず実施するとパーティションが壊れ、イメージの書き込みからやり直しになるので注意して下さい。

$ sudo fdisk /dev/mmcblk0

コンソールでこのとおり行った:


Delete the second partition (d, 2), then re-create it using the defaults (n, p, 2, enter, enter), then write and exit (w). Reboot the system, then:


$ sudo resize2fs /dev/mmcblk0p2


3. OSとデスクトップ、Video driver

$ sudo apt-get install linux-firmware

$ sudo apt-get install lubuntu-desktop
$ sudo apt-get install xserver-xorg-video-fbturbo

こちらも実施。


Then add this to /etc/X11/xorg.conf (create if it doesn't already exist):


Section "Device"

Identifier "Raspberry Pi FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection


4. Video core他

$ sudo apt-get install libraspberrypi-bin libraspberrypi-dev

$ sudo ln -s /usr /opt/vc
$ sudo apt-get install libraspberrypi-bin-nonfree

※シリアルコンソールはスキップ

(以上問題なし)


ROSのインストール (難航、この記事の本題)

[ROS手順] では、いくつか問題が出てしまったので下記のように解決。


1. リポジトリのrestricted・universe・multiverse設定

https://help.ubuntu.com/community/Repositories/Ubuntu

こちらに書いてあるとおりで、GUIを操作して設定。


2. sources.listを設定

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


3. 鍵の設定

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


4. パッケージのアップデート、インストール

ubuntu@ubuntu:~$ sudo apt-get install ros-indigo-desktop-full

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros-indigo-desktop-full

ros-indigo-desktop-fullをインストールしたかったが、上記のように見つからないため、非full版を選択した。

$ sudo apt-get update

$ sudo apt-get install ros-indigo-desktop

また、エラーとなった。

Errors were encountered while processing:

/var/cache/apt/archives/libegl1-mesa-dev_10.1.3-0ubuntu0.6_armhf.deb
/var/cache/apt/archives/libgles2-mesa-dev_10.1.3-0ubuntu0.6_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

これで解決しなかった。

$ sudo apt-get -f install


5. libegl1/libgles2のエラー対応

そこで、こちらを参考にした。

- Ubuntu 14.04 (trusty) Raspberry Pi 2 image | Raspberry Pi フォーラム

$ sudo apt-get download libegl1-mesa-dev libgles2-mesa-dev

$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/libegl1-mesa-dev_10.1.3-0ubuntu0.6_armhf.deb

予定通りErrorになる。※ ダウンロードは不要だったと思う…

$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/libgles2-mesa-dev_10.1.3-0ubuntu0.6_armhf.deb 

これも予定通りErrorになる。

$ sudo apt-get install -f

こちらが成功して、ROSインストールの準備ができた。


6. ROSインストールを再トライ

$ sudo apt-get install ros-indigo-desktop

今度は、成功した。


7. rosdepの初期化、.bashrcへのセット、python設定

$ sudo rosdep init

$ rosdep update
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc

pythonで運用するので…

    $ sudo apt-get install python-rosinstall


OpenCV3のインストール

OpenCV3手順で問題なくインストールできました。

$ sudo apt-get install build-essential cmake git pkg-config

$ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ pip install numpy
$ sudo apt-get install python-pip
$ cd shared/lab/
$ git clone https://github.com/Itseez/opencv_contrib.git
$ cd opencv_contrib
$ git checkout 3.0.0
$ cd ..
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ git checkout 3.0.0
$ mkdir build
$ cd build/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/shared/lab/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON .. &> ~/shared/lab/opencv/buildlog.txt
$ make -j4 &>> ~/shared/lab/opencv/buildlog.txt
$ sudo make install


(ご参考) その他の設定


Keyboard を日本語に

Ubuntu Weekly Recipe/第376回 Raspberry Pi 2にUbuntuをインストールし,RDPでリモートアクセスする | Gihyo.jp

/etc/default/keyboardを編集し、"us"を下記のように"jp"に書き換える。


XKBLAYOUT="jp"


下記を実施すると、インストールが始まって反映される。

$ sudo dpkg-reconfigure -f noninteractive keyboard-configuration


Raspberry Piでカメラ入力を扱うためのインストール

Accessing the Raspberry Pi Camera with OpenCV and Python | pyimagesearch

Raspberry Pi自体でカメラの入力で画像処理するには、この記事の内容が重要。

cv2.VideoCaptureなどの代わりに必要になるPiCameraを、arrayモジュールと併せてインストール。

$ sudo pip install "picamera[array]"

※ 従って、Pythonプログラムも入力などはRPi専用で開発するか、共通化のためのラッパーが必要になるようです。

(参考) Unifying picamera and cv2.VideoCapture into a single class with OpenCV | pyimagesearch


Pythonインタプリタを効率化 (MacOSで問題回避が必要)

pythonをインタラクティブモードで利用するとき、タブ補完やヒストリ保存を有効にしたい。ところが、

13. 対話入力編集とヒストリ置換 | Pythonチュートリアル

この方法のうちタブ補完は、MacOS Xでは働かない。

MacOSはGPLライセンス回避のため、本物のreadlineが実装されていないらしい。そこで、

[Python] Mac OSX10.9でPythonのタブ補完を有効にする | Yura YuWrite

この手順で~/.pystartupを作成。また、~/.bashrcへ下記を追加。


export PYTHONSTARTUP=~/.pystartup



IPアドレス固定

$ sudo emacs /etc/network/interfaces

下記のように固定する場合のご参考まで。

iface eth0 inet static

address 192.168.7.111
network 192.168.7.0
netmask 255.255.255.0
gateway 192.168.7.1
dns-nameservers 192.168.7.1


Sambaを設定

$ mkdir ~/shared

$ sudo apt-get install samba
$ sudo emacs /etc/samba/smb.conf

下記を後端に追加。

[shared]

path=/home/ubuntu/shared
read only=no
browsable=yes
guest ok = yes
force user = ubuntu


Hostnameを変更

$ sudo emacs /etc/hostname

$ sudo emacs /etc/hosts

どちらも、所望の名前へ変更。


VNCサーバーを設定

    $ sudo apt-get install vnc4server

$ vncserver

初回はパスワードを設定すれば、問題なく動作。


emacsが必要なので…

$ sudo apt-get install emacs

.emacsはμemacs風に設定…。

(global-set-key "\C-h" 'backward-delete-char)

(global-set-key "\C-z" 'scroll-down)

(以上)