ROSを始めよう その1

はじめに

ROS(Robot Operating System)といえば、世界中で使われているオープンソースのロボット用ソフトウェアプラットフォームです。
ロボットをやるなら是非マスターしておきたいところなのですが、学科の授業で扱ったことはあるものの結局使いこなせずじまい。。。
理解できていないところも多い。。。
ということで、この際ゼロから勉強を始めてみようと思います!
追記:このROS講座が神なので、今から記事を読んで勉強したい人はこっちを読むといいんじゃないですかね

この記事で利用する環境

・Raspberry Pi3 model B
・Ubuntu MATE 16.04.2(Xenial)
・ROS Kinetic
・(microSDカードへのOS書き込みまで)MacのノートPC
なぜRaspberry Piを使うのか、と思われた方もいらっしゃるかもしれません。
本当は僕もノートPCにUbuntu18.04+ROS Melodicを入れて、最新版でやりたかったんですが、手元に丁度いいPCがなかったんですよね。でもラズパイとmicro SDカードはあったのでそれを使うことにしました。理由はそれだけです。今回は勉強が目的で、何かプロジェクトを予定しているわけではないですしね。

まずは環境を整える

今回はこちらのサイトを参考にさせていただきました。問題なく環境を整えることができ、大変助かりました。

STEP1: Ubuntu MATEの準備

Raspberry Piで利用するためにmicroSDカードにUbuntu MATEというOSを書き込む必要があります。今回は16GBのSDカードを使用しましたが、8GBでも良いと思います。
1. 公式サイトに行き、Raspberry Pi→16.04.2の順に選択する
2. ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xzをクリックするとダウンロードされる
3. 新品でない場合はmicroSDを一度フォーマットしておく(参考)
4. 先ほどダウンロードしたxzファイルを解凍する
$ brew install xz
$ xz -d ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz
5. microSDに書き込むため、SDをアンマウントする
$ diskutil listでSDカードがどこにマウントされているか探す
/dev/disk3だった場合、$ sudo diskutil umount /dev/disk3とする
間違ったものをアンマウントしているとマズイので$ diskutil listで再度確認
6. OSをmicroSDカードに書き込む
dd if=ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=/dev/disk3 bs=1m 1時間程度かかる

STEP2: Raspberry Pi3でのUbuntu MATEのセットアップ

STEP1で準備したmicroSDカードをRaspberry Pi3に差し込み、起動するとセットアップが始まります。
指示に従って、WiFi設定やユーザー名や地域や言語を設定すれば良いです。
日本語を選ぶと、"ダウンロード"というように一部ディレクトリ名が日本語になってしまうのが厄介ですが、そこが気になる以外の問題はないと思います。

STEP3: ROSのセットアップ

Raspberry PiにROS Kineticをインストールする方法が公式サイトにまとめられています。
そのページの冒頭の文章を読むと、
today it is faster and easier to use Ubuntu Mate 16.04 (Xenial, download here) together with the standard ARM installation instructions here.
とありますので、hereをクリックすると、今回参考にするページが出てきます。
これをそのまま実行していきましょう。
1. $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'これで1行なので注意!
2. $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3. $ sudo apt-get update
4. $ sudo apt-get upgradeかなり時間がかかる
5. $ sudo apt-get install ros-kinetic-desktop-full今回はフルバージョンを入れます
6. $ sudo rosdep initrosdepのインストール (自分でROSのパッケージをビルドするときに依存するライブラリを自動でインストールしてくれる)
7. $ rosdep update
8. $ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc環境変数の設定
9. $ source ~/.bashrc
10. $ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential各種便利コマンドのインストール
11. $ roscoreを実行し、最後の方にstarted core service [/rosout]と出て来れば問題無し、Ctrl+Cで終了(ROSでは基本的にコマンドはCtrl+Cで終了させます。)

STEP4: その他の設定(必要であれば)

sshでラズパイに接続したい場合
$ sudo apt install openssl-serverを実行してください。
接続の際に,port 22:Connection refusedとエラーが出るときは以下を実行するようです。

# 22番ポートの開放
$ sudo ufw allow 22
# sshの再起動
$ sudo /etc/init.d/ssh restart
# 起動時にsshの起動
$ sudo systemctl enable ssh
日本語入力がしたい場合
このサイトを参考にしてください。

まとめ

ということで、今回は環境の準備までを行いました。
これからROSの勉強を始めていきます。
その2