BeagleBone Black活用事例

はじめに

BeagleBone BlackはTexas Instrument社が開発した小型組込みLinuxボードです。オンボードにeMMCと呼ばれる2GBのフラッシュメモリを搭載し、購入したらすぐに開発できます。
購入時にインストールされているLinuxはAngstromLinuxと呼ばれる少しマイナーなLinuxです。また、ブートはオンボードのeMMCかmicroSDからの二通りの行えます。
動作するLinuxOSは豊富で、Angstromはもちろん、UbuntuやAndroidなどが選べます。 豊富なIOが提供されているため、ちょっとした電子工作からロボット応用まで幅広く使えます。
今回はBeagleBone Blackをより手軽に開発できるようにするため、なるべく購入時のままでRTミドルウェアの動作検証を行います。

注意:この記事を書いている間に、より手軽にBeagleBone Blackの開発環境を構築できるOSのバージョンが出てきましたので、近日新しいOSを使った構築方法を公開します。

2013/11/16 追記:
Angstrom Linuxのバージョンに関係なく自動起動の仕組みを提供できるように改善したため、自分に合ったものをお使いください。
念のため、OSの入れ替えの方法を説明しているサイトを紹介します。
http://beagleboard.org/Getting%20Started

公式のWikiがありますので、参考程度に紹介します。
http://elinux.org/Beagleboard:Updating_The_Software
http://elinux.org/Beagleboard:BeagleBoneBlack

仕様

beagleboneblack.jpg


仕様
価格 $45
CPU 1GHz 2000MIPS Sitara AM3359AZCZ100
GPU SGX530 3d, 20M Polygons/S
メモリ 512MB DDR3L 400MHz
オンボードフラッシュ 2GB 8-bit MMC
電源供給方法 miniUSB、DCジャック、外部からピンヘッダに5VDC供給
サイズ 86×53mm
USB2.0ホスト 1
USB2.0クライアント miniUSB ×1
シリアルコンソール 3.3V TTL ヘッダつき
イーサネット 10/100 Mbps
外部ストレージ microSD スロット
映像出力 microHDMI
音声出力 microHDMI
低レベル周辺機器 A/D×7 タイマ×4 シリアル×4 CAN SPI I2C
OS Angstrom(デフォルト)/ Ubuntu / Android / ArchLinux / Gentoo / Minix / RISC OS 他
その他 NEON floating-point accelerator
ホームページ http://beagleboard.org/Products/BeagleBone%20Black

BeagleBone Blackにログインする

BeagleBone Blackに初期状態でSSHでログインできるものと出来ないものがあったため、確実にログインできる方法を示します。
まず以下の写真のようにBeagleBone Blackと開発を行なう母艦PCをUSBで接続します。
後ほどLAN経由でOpenRTM-aistのパッケージをインストールするので、LANケーブルを接続していると良いでしょう。

usbconnection.jpg

こうすると、パソコンにはCOM*として接続されます。BeagleBone BlackはターミナルにCOM接続でアクセスできるので、 ターミナルソフト(Teraterm)を立ち上げてCOM接続を行なってください。

Teratermを使って接続する場合は、COM番号が自動的に選択されます

comlogin.jpg

一度エンターキーを押すとこのような画面が出てくるので、ログインを行ないます

comlogin2.jpg

 ユーザー: root
 パスワード: 無し

ここまできたら[OpenRTM-aistをBeagleBone Blackにインストールする]に進んでください。

BeagleBone Black にSSHでログインする

BeagleBone BlackにはデフォルトでAvahiが立ち上がっていますので、windows OSでSSHログインする場合、
Bonjourが入っていればbeaglebone.localでログインできます。
注意:SSHでログインできないことがあるので、もし入れない場合はCOM*でログインしてください。

 ホストID : beaglebone.local
 ユーザー: root
 パスワード: 無し


AngstromLinuxの起動方式と自動起動について

BeagleBone Blackで採用されているAngstrom Linuxは、従来のSys V系のシーケンシャルな起動方式と、
最近のSystemd方式の起動方法を併用しています。

RTミドルウェアを小型Linuxボードで実行する際、自動的に起動するような仕組みがあれば、たとえばデータロガーとして
使う際、電源を入れてわざわざSSHでログインをせずにデータを取得できるなどのメリットがある。
Angstrom Linuxには一般的に自動起動を行なうrc.localが無かったために、独自にrc.localを作り、
initdからコールするスクリプトを作りました。
[OpenRTM-aistをBeagleBone Blackにインストールする]の項で実行するスクリプトにrc.localを作るよう記述されています。
使い方としては、rc.localをテキストエディタで開き、自動起動させたいファイルを記述するだけです。

OpenRTM-aistをBeagleBone Blackにインストールする

OpenRTM-aistを自動的にインストールし、AngstromLinuxにおいて自動起動の仕組みを追加したスクリプトが以下の場所にあります。
このスクリプトは、ネームサーバーまでを自動起動しますので、自分の目的に合ったコンポーネントを起動させてください。

また、このスクリプトを実行すると、BeagleBone Blackでデフォルトで起動する192.168.7.2が起動しなくなります。
これは、RTコンポーネントの自動起動を行う際、コンポーネントのエンドポイントが192.168.7.2になってしまうのを防ぐためです。
このスクリプトを実行する際には、eMMC内部に書き込まれているOSイメージのバックアップをすることを強くお勧めします。
バックアップのとり方はこちらを参照してください。
注意:このスクリプトを実行すると、USBを通してCOM接続も出来なくなります。

2013/11/16 追記:
インストールスクリプトで192.168.7.2を無効にする機能を廃止(便利なこともあるので。)
代わりに、AngstromLinuxの起動時に192.168.7.2以外の自分のIPアドレスを探し、Corbaのエンドポイントをそこに指定するようにした。
192.168.7.2を無効にしないため、USBを使ったSSHのログインや、COM接続のログインが使える。

 # wget http://openrtm.org/pub/Linux/Angstrom/armv7l/setuprtm.sh
 # sh setuprtm.sh

個別にインストールしたい方は以下を実行してください。

 # opkg install http://openrtm.org/pub/Linux/Angstrom/armv7l/omniorb.opk
 # opkg install http://openrtm.org/pub/Linux/Angstrom/armv7l/openrtm-aist.opk

BeagleBone Blackで簡単にRTコンポーネントを立ち上げて検証を行う

先程インストールしたOpenRTM-aistのパッケージにはコンパイル済みのサンプルがあるので、
ConsoleInCompを立ち上げてみましょう。

 # /user/share/openrtm-1.1/example/ConsoleInComp

これでBeagleBone Black上でConsoleInCompが立ち上がります。
WindowsでConsoleOutCompを立ち上げて検証を行なった画面が以下になります。

console.jpg
consolein.jpg
consoleout.jpg

これでBeagleBone BlackでのRTミドルウェア動作確認は終了です。

実験としてkobukiRTCを起動し、TKJoystickと接続する

KOBUKIBBB.jpg
kobuki.jpg
kobukiled.jpg

トラブルシューティング

BeagleBone BlackにSSHでログインできない場合

詳しく書いてある記事を見つけましたので、仕組みはこちらを参照してください。

eMMC内部にあるシステムをOSを丸ごとバックアップする方法

詳しく書いてある記事を見つけましたので、仕組みはこちらを参照してください。

GUIはもう使わないと決めたときの対処

GUIは処理は重いので、しばらく開発する際にSSHでログインする場合はGUIを切っておいたほうが良いでしょう。 そのやり方を以下に記述します。

 # systemctl disable gdm.service

これで次回のブートからXServerが立ち上がらなくなります。 その上で今すぐXserverを停止させたい場合は、

 # systemctl stop gdm.service

で停止します。

Xserverをまた立ち上げたい場合は、

 # systemctl enable gdm.service

で立ち上がります。

BeagleBone Black をUbuntuで開発する


BeagleBone BlackをUbuntuで開発すると、一気に開発の敷居が下がるため、非常にお勧めです。

また、最近のUbuntuイメージでは、USBを使ったSSHログインが出来るため、手軽に開発が出来ます。

公式サイトにUbuntuに関して紹介があります
http://elinux.org/BeagleBoardUbuntu
すごく詳しく書いてありますので、参考になると思いますが、情報量が多すぎる気もするので、
以下に簡単にまとめます。

BeagleBone BlackをAngstrom Linuxで開発する

BeagleBone Blackの設定(OS非依存)

BeagleBone Blackを開発するにあたって、OS非依存の設定などがあるので、以下にまとめます。

・OSのインストール
・USBのWifiドングルを使ったネットワークの接続
・IOなどのIFを使う方法

============
・USBのWifiドングルを使ったネットワークの接続

まず手持ちのWifiドングルをUSBポートに接続します。

LinuxOSで、Wifiドングルを使用する際、4つのレベルがあります。

①USBに挿しただけで認識される
②色々設定を修正すれば認識される
③windows用のドライバをlinuxで使えるようにする
④デバイスドライバを自分で書く

①以外は面倒なので、挿しただけで認識されるものを使うのがベストだと思います。
以下のUSB-Wifiドングルは挿しただけで認識されました。参考になれば幸いです。

http://buffalo.jp/product/wireless-lan/client/wli-uc-gnm2/
http://www.planex.co.jp/product/wireless/gw-usvalue-ez/
では、認識されたかの確認方法ですが、

 $ lsusb

でUSBポートに挿されているデバイスの一覧が表示されます。

また、無線LANの設定を確認する際には

 $ iwconfig

で表示されます。

wifiドライバ認識1.jpg

これはDebianで実行しました。
まだ何も設定していないので、SSIDもアクセスポイントも何も無いと思います。

それでは、実際に無線LANの設定を行っていきます。

 $ sudo vi /etc/network/interfaces

を実行すると、LANの設定が出てきます。
エディタは好きなものを使ってください。
以下の設定を直します。

 auto wlan0
 iface wlan0 inet dhcp
    wpa-ssid "接続先のSSIDの名前"
    wpa-psk "パスワード"

最後にwlanを有効にします。

 $ sudo ifup wlan0

ただし、WPA2で接続の確認は取れましたが、WEP方式だとうまくいきませんでした。 wpasupplicantを導入するのも手でしょう。

BeagleBone BlackをDebianで開発する

Linux開発をする際に、なるべくシンプルなOSで行いたいニーズは高いのではないか? と考え、なるべく情報公開していく予定です。

最近のDebianイメージでも、USB接続でSSHログイン出来るようになっているので、開発が格段に楽になりました。

公式サイトに詳しく記述があります。 http://elinux.org/BeagleBoardDebian