Raspberry Pi にUbuntuを入れてROSを動かす
Raspberry Pi 2
ラズベリーパイ2が(とっくに前だが)ついに出た! 今回はかなりパワーアップして、さらにWindows10とUbuntuに公式に対応するとのことで、ぜひとも試してみたい! なにに使うのかという問題はさておいて・・・
まあ、ともあれ、Ubuntuが入るとなると、今まで慣れ親しんだことがいろいろできそう。 今回はラズパイにUbuntu14.04を入れて、何かと話題?なROS(Robot Operation System)を入れてみようと思う。 ROSについては、以下を参照。 ROSがラズパイサイズのコンピュータで動くとなれば、ロボットの可能性が大きく広がる!
- ja - ROS Wiki http://wiki.ros.org/ja
Ubuntu 14.04
ラズパイへのUbuntuのインストール方法については、英語だが公式で解説がされているので、基本的にその記述に則ってやっていけば問題ない。 Qiitaにも投稿があったので、そちらも併用して参考にすれば、すんなりインストールできるだろう。
ARM/RaspberryPi - Ubuntu Wiki
https://wiki.ubuntu.com/ARM/RaspberryPiRaspberry Pi 2でUbuntu14.04を使う - Qiita
http://qiita.com/rytmrt/items/9c4601586479fff6d77c
イメージをダウンロードしたあとは、下記サイトのようなSDカードへの書き込みソフトを利用して、データを書き込む。
- DD for Windows - Tech Info http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
そのあとは、Ubuntuの公式サイトの”Usage”の部分にしたがって進めていけば良い。
多少気をつける部分として、ユーザー名とパスワードは初期状態では下記のようになっている。
user:ubuntu password:ubuntu
また、”Usage”の一番最初のコマンドのあとには、一度再起動しておいたほうが、無難だろう。
sudo fdisk /dev/mmcblk0 #一度再起動させる sudo reboot sudo resize2fs /dev/mmcblk0p2 sudo apt-get install linux-firmware
Ubuntuのデスクトップ環境(Xubuntu、Lubuntu、Kubuntu)については、もちろん個人の好みで構わないが、私の場合はLubuntuを選択した。 それぞれの違いにつては、下記サイトを参考のこと。
- Ubuntu 派生ディストリビューション その3 - Ubuntu・Kubuntu・Xubuntu・Lubuntu・Ubuntu GNOMEの比較 (14.04版) - kledgeb
http://kledgeb.blogspot.jp/2014/04/ubuntu-3-ubuntukubuntuxubuntulubuntuubu.html
GLXエラー
Ubuntuを動かしていると途中でGLXエラーに遭遇した。 正確に言えば、この後のROSを動かしている途中で遭遇したが、対処はUbuntu導入直後にしておいたほうが良さそうなので、ここに記述。 エラーの内容については、以下のサイトと同じようなもの。
- opengl - Xlib: extension "GLX" missing on display ":0" - Stack Overflow
http://stackoverflow.com/questions/20114918/xlib-extension-glx-missing-on-display-0
OpenGLの動作を確かめるために、glxinfoコマンドを実行してもエラーでる。
$ glxinfo name of display: :0 Xlib: extension "GLX" missing on display ":0". Xlib: extension "GLX" missing on display ":0".
対策のために、xserver-orgを再インストールする。
- [ubuntu] extension "GLX" missing on 11.04
http://ubuntuforums.org/showthread.php?t=1741783
下記コマンドを実行。
sudo apt-get install xserver-xorg-video-fbturbo
ただ、このコマンド、よくよく見てみると、最初のUbuntuの公式インストールガイドにもちゃんと載っていたコマンドで、 今回のエラーについては、私が単純に手順をすっ飛ばしていたことが原因っぽい・・・。
なにはともあれ、これでUbuntuの動作環境は整った。
ROSのインストール
ROSも公式でラズパイ2の動作を確認している。インストールについては下記サイトを参照のこと。
- indigo/Installation/UbuntuARM - ROS Wiki
http://wiki.ros.org/indigo/Installation/UbuntuARM
上記のサイトはARMマイコン向けのROSインストール方法なのだが、私はこのことを知らなくて、普通にUbuntu向けのインストール手順を踏んだ。 標準Ubuntu向けのインストール手順は以下の通り。
- ja/indigo/Installation/Ubuntu - ROS Wiki
http://wiki.ros.org/ja/indigo/Installation/Ubuntu
それでも問題なく動いている。ARM向けでは、最小限の構成でインストールしてくれるみたいだが、SDカードが16GB以上あれば、フルパッケージでもへっちゃらだと思う。
とりあえず、これでラズパイでROSを動かすことができた。 ROSはノードと呼ばれる、アプリケーションの塊を、お互いにデータを通信させることで、複雑な動作を実現している。
この構成のおかげで、特定のノードを別のハードウェア上で動かしていても、通信さえできれば、全体を動作させることができる。
つまり、複数のラズパイを組み合わせることで、スパコンのような構成で、アプリケーションを動作させることも可能である。
次にやることリスト
ラズベリーパイでのUbuntu、ROSの動作が確認できたので、以下のことをやっていきたい。
- PTAMの動作テスト
- その他VisualSlamの動作テスト(ORB-SLAM)
- ROSを利用したモータ制御
- 旧ラズパイにもROSを導入(RaspbianOS上でもROSを動かす)
- ラズパイ2つでROSのノード通信機能を使って負荷分散&協調制御
といっても、実は上二つはすでに動作を確認済み。 ただし、実時間で動かくことはやはりかなり厳しそう・・・。 VisualSlamがラズパイ上で動くなら、ロボットへの応用の幅がかなり広がるかなーと思っていたが。。。 まだまだ厳しそう。