ROS
yocto
Edison

Intel Edison に ROSをインストール

More than 1 year has passed since last update.

Intel EdisonにROSをインストールする方法を紹介します。

EdisonにROSをインストールする方法の主流は、Edisonにubilinuxをいれてdebian化をし、その後はRaspberryPiにROSをインストールするのと同様にインストールすることのようです。
しかしながら、ubilinuxは現在スポンサーがいないために手軽に入手はできることができないそう。公式サイト
もうひとつの方法は、Intelから提供されているLinuxを自分でカスタマイズすることです。
しかし、それのやり方はドキュメント化が海外でもされていない!ので、今回はやり方をまとめてみました。

必要環境

Ubuntu 14.04 LTS
40GB以上の空き容量

必要パッケージのインストール

sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib dfu-util

Intel公式サイトからソフトウェア群のダウンロード

cd ~/
wget https://downloadmirror.intel.com/25028/eng/edison-src-ww25.5-15.tgz
tar xvf edison-src-ww25.5-15.tgz

ビルド環境の用意

cd ~/edison-src
mkdir bitbake_download_dir && mkdir bitbake_sstate_dir
./meta-intel-edison/setup.sh --dl_dir=bitbake_download_dir --sstate_dir=bitbake_sstate_dir

前の手順でダウンロードされたレシピの中にひとつだけ壊れたリンクがあるので修正

~/edison-src/out/linux64/poky/meta-intel-iot-middleware/recipes-connectivity/paho-mqtt/paho-mqtt_3.1.bb
SRC_URI = "git://github.com/eclipse/paho.mqtt.c.git;protocol=http \
           file://makefile.patch \
"

追加で必要なレポジトリをダウンロード

cd ~/edison-src/meta-intel-edison/
git clone git://git.openembedded.org/openembedded-core
git clone git://git.openembedded.org/meta-openembedded
git clone https://github.com/bmwcarit/meta-ros
cd ~/edison-src/meta-intel-edison/openembedded-core && git checkout dizzy
cd ~/edison-src/meta-intel-edison/meta-openembedded && git checkout dizzy

Edisonのレシピの最後にROSのレシピを追加

~/edison-src/meta-intel-edison/meta-intel-edison-distro/recipes-core/images/edison-image.bb
IMAGE_INSTALL += "roslaunch"
IMAGE_INSTALL += "roscpp-tutorials"

ここには色々なものを追加できる。ROSのビルドファームにあるパッケージのレシピはたくさん用意されているので、必要に応じて追加する。

追加したレシピのパスを追加

BBLAYERSを下の内容に置き換える(usernameはユーザー名に置換した上で)

~/edison-src/out/linux64/build/conf/bblayers.conf
BBLAYERS ?= " \
  /home/username/edison-src/out/linux64/poky/meta \
  /home/username/edison-src/out/linux64/poky/meta-yocto \
  /home/username/edison-src/out/linux64/poky/meta-yocto-bsp \
  /home/username/edison-src/meta-intel-edison/meta-intel-edison-bsp \
  /home/username/edison-src/meta-intel-edison/meta-intel-edison-distro \
  /home/username/edison-src/out/linux64/poky/meta-intel-iot-middleware \
  /home/username/edison-src/meta-intel-edison/meta-intel-arduino \
  /home/username/edison-src/meta-arduino \
  /home/username/edison-src/meta-intel-edison/openembedded-core/meta \
  /home/username/edison-src/meta-intel-edison/meta-openembedded/meta-oe \
  /home/username/edison-src/meta-intel-edison/meta-openembedded/meta-python \
  /home/username/edison-src/meta-intel-edison/meta-openembedded/meta-multimedia \
  /home/username/edison-src/meta-intel-edison/meta-ros \
  \
  "

マシンスペックを有効活用できるようにする

~/edison-src/out/linux64/build/conf/local.conf
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j 4"

BB_NUMBER_THREADSはSSDを持っている場合は12がいいらしい。
PARALLEL_MAKEはスレッド数。

ビルドする

cd ~/edison-src/out/linux64
source poky/oe-init-build-env
bitbake edison-image

数時間くらいかかります。

Edisonにフラッシュするためのスクリプトを修正

修正前

~/edison-src/meta-intel-edison/utils/flash/postBuild.sh(L9)
build_dir=$top_repo_dir/build

修正後

~/edison-src/meta-intel-edison/utils/flash/postBuild.sh(L9)
build_dir=$top_repo_dir/out/linux64/build

フラッシュの準備

cd ~/edison-src/meta-intel-edison/utils/flash
./postBuild.sh

Edisonの準備

Intel Edison Breakout boardならば、下のUSBポートにmicro USB type Bを接続する。
シリアル通信に使う方のポートでない。
この段階ではPCには接続しない。

フラッシュ

cd ~/edison-src/out/linux64/build/toFlash
./flashall.sh

ここでEdisonの接続が求められるので、接続する。そうするとフラッシュが始まるので5分くらい待つ。

それが終わったら完了!

参考文献

Official Documentation

About missing repository

About flashing