目次
- やった事
- 目的
- ラズパイとは
- ROSとは
- 環境構築1 Ubuntu
- 環境構築2 ROS
やった事
Raspberry Pi 3 B+ に Ubuntu MATE と ROSをインストールし、ROSで動作確認を行いました。PCはWindows10です。
目的
これは Web X IoT メイカーズチャレンジ のハッカソンの一環としての活動で、機能の1つである通知機能をやったので、もっといろいろやってみる準備をします。 =>webIoTメイカーズチャレンジに参加前編
一方でゼミでROSをやっていて、全然解らなくてヤバいので家で勉強しようかとも思っています。というわけで、
- ROSが使える
- Webとの通信ができる
上記2点を満たした環境を用意しようと思います。調べてみるとRaspbian(ラズパイで一番スタンダードであろうOS)でROS環境を作るのは大変そうなので、Ubuntuでいきたいと思います。ラズパイに向いているのは軽量なMATEらしいですので採用。
Raspberry Piとは
ラズパイとは、内蔵ハードディスクなどを搭載しない代わりに、SDカード又はmicroSDを起動および長期保存用のストレージに利用する、「ワンボードマイコン」と呼ばれるハードウェアです。ラズベリーパイ財団より安価な教育用のシングルボードコンピューターとして開発されました。
つまり、PCほどの計算の能力はないけど、PCみたいに使えるIoTに向いた機械です。標準でネットにつなげたりするので初心者に優しいらしい。今回私はRaspberryPi 3 model B+ を使います。一番新しい奴です。
ラズパイ本体の他にいくつか用意するものがあります。
- SDカード(ubuntuMATE、ROSを入れるなら32GB以上)
- ディスプレイ(HDMLが接続できるTVでOK。PS4をやってるやつとか)
- 有線ネットワーク(raspberryPiは3はwifiでもいける)
- キーボード
- マウス
RSコンポーネントRaspberry Pi 3 B +マザーボード
Team microSDHCカード 32GB 高速転送UHS-1 日本国内10年保証 SD変換アダプター付属 正規品
この章の参考
ROS とは
ソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しているオープンソースのソフトウェアです。特徴として以下をあげます。
- ソフトウェアプラットホームである
- ミドルウェアである
- フレームワークである
ソフトウェアプラットホーム
情報プラットホームのエコシステムの4要素としてハードウェア、OS、アプリケーション、ユーザがあります。 「情報プラットホームのエコシステム」というのはわかりにくい言い回しですが、これは俗な言い方をすれば「技術が流行る」ということです。
現在私たちはスマホを持ち、アプリをインストールして使って居ますが、このようにスマホが流行るとよりよいアプリが開発されてさらに利用される、というような循環が生まれます。
ロボットが身近な存在になり、 ユーザーや開発者が増え、市場が活発になれば様々な技術が生まれて行く。このようなサイクルを作るために必要なものがロボットソフトウェアプラットホーム です。
ROSの機能
技術を流行らせるためにはソフトウェアを使い回せるようにしたり、開発者がロボットのすべてを知らなくても一部だけのソフトウェアを作ればいいようにしたりする必要があります。
ROSでは機能(モジュール)を小さな単位(ノード)に分割し、ノード間で厳格なプロトコルのもとで異なる言語でも通信する仕組みになっています。それによって、C++で書かれたモジュールとPythonで書かれたモジュール間で通信するような事を可能にしています。
また、パッケージ管理、デバッグ用ツール、開発ツールなどが整っているので開発がしやすくなっており、誰でも公開できるようになっています。
という訳でROSはミドルウェアとフレームワークの側面をとったロボットソフトウェアプラットホームです。(という風にまとめましたがどうでしょう)
この章の参考
- ROS ロボットプログラミングバイブル 表 允〓 倉爪 亮 鄭 黎〓 共著 オーム社
- ScamperによるROS&Raspberry Pi 制作入門 株式会社リバスト監修 鹿貫悠多 オーム社
- Raspberry Pi で学ROSロボット入門 上田隆一 日経BP社
- ROS.org
Ubuntuとは
ラップトップ、デスクトップ、そしてサーバーに利用することができるOSで、無料で提供されています。一般のコミュニティによって開発されており、Linuxの派生のDebianから派生して作られました。カノニカル社が支援しており、Linuxとしては資金的にも人員的にも非常に手厚い支援によって開発されています。 半年ごとにリリースされていて開発が早い一方で、長期補償板(LTS)も存在します。最新のアプリケーションを利用する事も、安定した環境で作業する事も出来ます。また、Ubuntu Japanese Teamによって日本語環境が整えられています。インストール後すぐに使える、GUIでデスクトップでマウスで操作できる、など初心者にも使いやすいOSです。
今回入れるのはUbuntuの派生の一つである Ubuntu MATE です。メモリ消費が軽いのでラズパイ向きです。
この章の参考
環境構築1 Ubuntu MATE
起動まで
ラズビアンでROS環境を作るのは大変そうなので、ubuntu の中でラズパイに向いている ubuntu MATE 環境を作ります。このとき、
ラズパイ公式 Downloads
でダウンロードしたのを使うと、ラズパイ3 model B+ではOSが動きません。虹&雷マークで固まってしまいます。

雷マークは電圧不足のマークですが、電源を変えてもダメでした。調べてみるとシステムファイルの不具合でも発生するとのこと。ラズパイはB B+でハードもファームウェアも違うらしい。なのでいろいろ設定が必要みたいです。 下のサイトが最高に神なので乗せていきます。ありがとうございます。このサイトの添付に3B+でも動くように修正されたimgファイルがありますので、これを使います。
RaspberryPi 3B+にROSを導入する - Isao HARA
このページのubuntu MATE からダウンロードした「ubuntu-mate-16.04~.img.xz」を解凍します。このとき解凍は7-zipをインストールして使いました。
「ubuntu-mate-16.04~.img」をSDカードに書き込みます。このSDカードがラズパイのメモリになります。書き込みにはWin32 Disk Imagerをインストールしました。microSDをセットして起動すると、
出ました。ついに!(ここまで調べるのになんやかんや2日)

ここからはubuntu上での作業です。言語等の説明は省略します。ただ、wifi設定は後でやるのが無難だと思います。wifi設定に失敗するとユーザーが登録されなくなるのではじめからやり直す事になります。左上の アプリケーション/システムツール/MATE端末 で指示を出していきます。この端末はよく使うので右クリックしてデスクトップに追加しておくと良いと思います。
更新
まずはいろいろ更新 //コメント
sudo apt apdate //最新のパッケージを取得
sudo apt dist-upgrade// 最新のパッケージの更新と不要なパッケージの削除
sudo apt autoremove//依存関係で必要なくなったパッケージの削除
初回の更新なのでこれだけで1時間くらい掛かりました。
日本語入力
日本語設定をします。システム/設定/ユーザー向け/言語サポートででたウインドウの「言語のインストールと削除...」を押してインストール、「システム全体に適用」そのあと再起動します。もう一度言語サポートを開いて「キーボード入力に使うIMシステム:」のドロップダウンリストから「fcitx」を選択して再起動します。
インターネットブラウザ
インターネットブラウザのChromiumをインストールします。 私はいつもネットにつなっているか試すとき猫で検索をかけるんですが、あらかじめ入っているfirefoxというブラウザがcrashしたという通知が出ました。新しくChromiumを入れます。Chromium は Google Chrome のベースらしいです。コマンドのsudoというのは管理者権限のようなものです。
sudo apt install chromium-browser
以上です。
本来ならリモートデスクトップしたいんですが、うまくいきませんでした。出来たら追記します。RDPできるとコピペができます。
この章の参考
- Raspberry Pi + Ubuntu Mate + ROS のセットアップ -粗大メモ置き場
- 【ROS】ラズパイで始めるROS Bot入門③ ~Ubuntu MATEへROSインストール~ OGIMOノート
- Raspberry Pi が起動時に虹色の画面で止まってしまう話について(再投稿)otacon's blog
- 第49回「ラズパイ3×Ubuntu MATEで遊ぼう!(1)日本語入力の設定方法」 IT女子のラズベリーパイ入門奮闘記
以前使って居たラズパイでは画面サイズがおかしくなりました。画面の大きさはディスプレイによっては合っていないことがあります。以下を見ました。メモとして張っておきます。
環境構築2 ROS
参考に挙げた本によれば、2019年現在(次のROS LTSまでは)Ubuntu 16.04 Xenial Xerus(LTS)(またはLinux Mint 1.8x) + ROS Kinetic Kameがいいらしいです。
以下を順番に実行しました //コメント
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' //関連サーバのURL追加
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116//ROS関連サーバの公開キー。サーバ更新のたびに変化するのでwikiで確認してください
sudo apt-get update //ubuntuのアップデート さっきやったからやらなくていいかも
sudo apt-get upgrade
sudo apt-get install ros-kinetic-desktop-full //rosのインストール 関連ライブラが含まれる
sudo apt-get install ros-kinetic-rqt*//グラフィカルユーティリティーツールrqtに関連するすべてのパッケージのインストール 上で基本的なqrtの機能はインストールされるためやらなくてもいい
sudo rosdep init //ROSのメインコンポーネントを利用したりコンパイルする際に、ROSのOSに依存したライブラリやツールをインストールするツールであるrosdepを初期化
rosdep update
sudo apt-get install python-rosinstall //ROSパッケージをインストールするときに役立つrosinsrallのインストール
source /opt/ros/kinetic/setup.bash //環境変数の読み込み
mkdir -p ~/catkin_ws/src //ROS専用のビルドシステムcatkinのワークスペースcatkin_wsを作成、初期化
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make //ビルドコマンドcatkin_make。ビルド関連ファイルはbuild、実行関連ファイルはdevelに作成される
source ~/catkin_ws/devel/setup.bash //catkinビルドシステムの環境設定ファイルの読み込み
このあとROSの動作確認のために
roscore
してエラーをはきました。
reboot //再起動
再起動してからroscoreしたら動きました。成功の場合、最後に
started core service [/rosout]
と書かれた文が表示されます。ROSを使うときはorscoreは動かしっぱなしにするので端末を複数開いて使います。 Ctrl+Cで終了することができます。
source のコードを毎回書くのは面倒なので、いくつか設定します。エディタにはemacsを使いました。
emacs ~/.bashrc
で開いて、以下を付け加えました。今回はショートカットコマンドと環境設定の自動読み込みだけ追加します。
# 環境変数
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
# コマンド
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catin_ws && catkin_make'
変更を反映するために一度端末を閉じてからもう一度開いて
source ~/.bashrc
これで自動で読み込まれるようになりました。ラズパイを起動してすぐにroscoreでもオッケーです。
最低限のエディタ
その前に、エディタが入っていないので、ひとまず最低限のエディタの用意をします。ひとまず知ってるエディタemacsをインストール。好きなのを使ってください。
sudo apt-get install emacs24
ROSのテスト
roscoreが起動できればどのサイトでもオッケーみたいでしたが、つまらないのでROSに入っているシミュレーションツールを動かしてみます。
roscore //すでに起動している場合は不要
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
この状態で←↑→↓など矢印を押してみると、カメが動きます。楽しい!!

これでデータの流れを可視化します。
rosrun rqt_graph rqt_graph

このカメ、矢印上で前進、右で120度右、左で120度左を向きました。動かしにくいので設定をいじりたかったんですが、やめました。
この章の参考
- ROS ロボットプログラミングバイブル 表 允〓 倉爪 亮 鄭 黎〓 共著 オーム社
- Raspberry Pi + Ubuntu Mate + ROS のセットアップ -粗大メモ置き場
- ROS Kinetic の Ubuntu へのインストール -ROS.org
雑談
私はすべてのSNSで亀のアイコンにしているんですが、ROSのシミュレーションも各バージョンで毎回カメでなので運命を感じざるを得ませんね。
追記(2019/3/20)Amazonリンクを増やしました。