安曇野の森から > ロボットを作る > 開発環境の構築

開発環境

開発に必要なハードウェア、ソフトウェアを以下で説明します。


ハードウェア

開発に以下のようなハードウェアが必要です。


KHR-3HV

KHR-3HV写真

KHR-3HVは近藤科学製の二足歩行ロボットです。
仕様等詳細は以下リンクをご覧ください。

KHR^3HVメーカーページ


Raspberry Pi

RaspberryPi写真

Raspberry Piはイギリスのラズベリーパイ財団によって開発された教育用の低価格、超小型Linuxボードで以下のような長所と短所があります。

仕様等詳細については以下Wikipediaのリンクをご覧ください。

Rspberry Pi

  1. 長所
    • コストパフォーマンスが高い。(低価格、CPU高性能化)
    • インターネット上のサポート情報が多い。
    • LinuxカーネルのRealtimeパッチがある。
    • ロボット用OSのROS、画像処理ライブラリのOpenCVが利用可能
    • Linuxの豊富なツール、ユーテリティが利用可能
    • PCとの親和性(接続性、相互運用性)が高い。
    • 無線LAN, Bluetooth接続が容易
    • I2Cを使ったセンサ接続が容易
    • ハードウェアオプション(アクセサリ類)が多い。
    • 専用カメラモジュールがある。
    • Raspberry Pi上でソース編集、ビルドが可能
    • Raspberry Pi上のsambaサーバーによるファイル共有が可能

  2. 短所
    • RTOSと比較してリアルタイム性が低い。
    • 起動時間が長い。
    • バッテリーで動作させるには消費電力が比較的大きい。
    • 格納スペース・重量が増加する。


ODROID写真

ODROIDOはDORID社によって開発されたRaspberry Pi互換ボードです。
サイズはRaspberry Piの約1/3程度です。
今回はサイズの関係からロボットへの組み込みは、こちらのボードを使います。


PC

PC写真

シミュレーションを使わなければネットブック程度の処理速度で十分です。
今回はシミュレーションを使いますのでi5プロセッサが搭載されたPanasonic Let's Note J9を使っています。


USB電源

USB電源写真

Raspberry Piを動かすにはUSB電源をRaspberry PiのminiUSBにつないで使いますが、Raspberry Pi本体だけでなくRaspberry PiのUSBホストコネクタから供給される電力も必要になりますので容量が大きめの電源を使うことをおすすめします。
今回はAnker社のポート出力が2Aの製品を使っています。


USB無線LANアダプタ

USB無線LANアダプタ写真

今回はプラネックス製GW-USValue-EZ無線LANアダプタを使っています。
チップにはRealtek製RTL8192CUを使っているようです。


UART-USBアダプタ

UART-USBアダプタ写真

Raspberry Piの標準出力となる通信ポートは3.3V入出力です。
最近のPCにはほとんど通信ポートは付いていないのでUSB-シリアル変換アダプタが必要になります。
ここでは秋月電子製AE-UM232RのUSB-シリアル変換アダプタを使っています。


キーボード、マウス

キーボード、マウス写真

USBポート数の関係から、あまり多くのデバイスはつなげません。
写真のELECOM製TK-FDP021はトラックボール付キーボードでこれだと1ポートのみで使えるので便利です。


セルフパワーUSB Hub

USB Hub写真

今回使用したRaspberry PiはUSBポートが1つしか付いていないので、無線LANやキーボードなど複数のUSBデバイスを使う際にはUSB Hubが必要になります。Raspberry PiのUSB電源供給能力は低いのでできるだけセルフパワーのUSB hubを使った方が確実に動作します。
今回は2ポートしか使わなかったのでELECOM製U2H-J4BIBKバスパワーUSB hubを使用しています。


HDMIディスプレイ

HDMIディスプレイ写真

標準出力が正常に使えていればHDMIディスプレイは必要ありません。
HDMIディスプレイは、あれば便利と言う程度です。
写真のものはVILTROX製DC-50です。


Raspberry Piソフトウェアのインストール

Raspberry PiにLinuxリアルタイムカーネルとROSをインストールする手順を以下で説明します。
ROSインストールにはインターネットへ無線LAN接続されたRaspberry Piを利用します。


Raspbian

  1. Raspberry Pi用Linuxのインストール

  2. 以下の手順でRaspberry PiのLinux(Raspberry Pi用DebianであるRASPBIAN)起動用SDカードを作成します。

    1. ROSもインストールしますので8GB以上のSDカードを用意します。
    2. Raspberry PiのホームページからRASPBIANのSDカードイメージをダウンロードします。

    3. http://www.raspberrypi.org/downloads/


    4. SDカードイメージをSDカードに書き込みます。


  3. Raspberry Piの自動ログイン設定

  4. Linuxを自動でログインするように設定します。

    1. 以下のコマンドで/etc/inittabファイルを開きます。


    2. 1:2345:respawn:/sbin/getty 38400 tty1の行を#でコメントアウトし、以下を追加します。



  5. コマンドプロンプトを変更

  6. コマンドプロンプトが長いとコンソール画面では邪魔なので短くなるよう設定します。

    1. 以下のコマンドで~/.bashrcを開きます。


    2. 環境変数PS1を設定している箇所をコメントアウトして以下の行を追加しファイルを保存します。

    3. PS1='\$'


      これによりコマンドプロンプトはスーパーユーザなら#、それ以外なら$を表示します。

      上記以外にもコマンドプロンプトには以下のような設定が出来ます。


無線LAN設定

Raspberry PiのUSBに無線LANドングルを取り付けることで、Raspberry Piを無線化出来ます。
移動ロボットなどに搭載する際には便利です。

  1. /etc/network/interfaces の編集

  2. まず、以下のコマンドで/etc/network/interfaces を開きます


    書き換え箇所はアドレス自動化と固定化の場合で次のとおりです。

    1. アドレス自動割付にする場合、以下の2か所を書き換えます。


    2. アドレス固定にする場合、以下の2か所を書き換えます。以下のIPアドレス、マスク、ゲートウェイアドレスは自分の環境に合わせて設定してください。


    3. 上記(1)(2)どちらかの設定に書き換えた後、ファイルを保存してviを終了させます。

  3. /etc/wpa_supplicant/wpa_supplicant.conf の編集

  4. 次に、無線LANの ESSID とキーを登録します。


    SSID には無線LANのESSID、passには無線LANのキーを入力します。
    リダイレクトの際、> ではなく >> (追記)を使用するよう注意してください。
    結果は以下のようになっていると思います。


    無線LANアクセスポイントの設定によっては、追加の設定が必要になるかもしれません。
    以下に、一例を示します。


  5. 無線LANインターフェース初期化

  6. 最後に無線LANインターフェースを初期化します。


    ここで、無線LANに接続できない場合、以下2つのの設定を見直してください。

    /etc/network/interfaces
    /etc/wpa_supplicant/wpa_supplicant.conf


    以上で無線LAN wlan0 にIPアドレスが割り振られました。

  7. ホスト名でリモート接続する

  8. Raspberry Piにsshでリモートログインで操作する場合、固定IPアドレスを割り振っていなければ、通常 Raspberry Pi のIPアドレスをコンソールで調べて接続する必要があります。
    そこでBonjour互換のavahiというサービスをインストールします。
    BonjourはAppleが提唱するネットワーク上のサービスを自動的に検索して利用できるようにするためのサービスです。
    avahiを使うと、DHCPでIPアドレスを割り振っているRaspberry Piに対してもホスト名でアクセスすることができるようになります。

  9. ホスト名の設定

  10. 他のホスト名と衝突しないホスト名を選び設定します。
    以下のコマンドで/etc/hostname を開き、1行目のホスト名を変更します。初期値は raspberrypi となっています。変更後、ファイルを保存してnanoを終了させます。


    さらに、以下のコマンドで/etc/hosts を開き、127.0.1.1 raspberrypi となっている部分を上で決めた自分のホスト名に書き換えます。書き換え後、ファイルを保存してviを終了させます。


Samba

Raspberry PiがファイルサーバーとしてPCから見えるとRaspberry Pi上にあるソースファイルをPC上の高性能エディタやIDEで編集出来るので非常に便利です。
以下でSambaインストール・設定手順を説明します。
以下の操作はインターネット接続されたRaspberry Piで行います。

  1. インストール

  2. 以下のコマンドを実行しSambaをインストールします。


  3. 設定

  4. 共有設定として以下の設定を追加します。

    • 共有名:pi
    • 共有フォルダ:/home/pi
    • 書き込み可
    • クライアントからゲスト接続
    • サーバー側ファイル操作をユーザー"pi"で実行

    設定追加の手順は以下のとおりです。

    1. nanoでSambaの設定ファイル/etc/samba/smb.confをroot権限で開きます。


    2. 設定ファイルの最後に以下を追加しファイルを保存します。


  5. リスタート

  6. 以下のコマンドでsambaをリスタートします。


  7. sambaを自動で起動するように設定

  8. 以下のコマンドで電源投入時にsambaが自動でスタートするようになります。


I2C設定

  1. 有効化

  2. I2Cデバイス用モジュールはディフォルトでは読み込まれないのでI2Cが有効になるよう/etc/modulesファイルに以下一行を追加します。

    i2c-dev

    /etc/modprobe.d/raspi-blacklist.confの以下行をコメントアウトします。

    blacklist i2c-bcm2708

    以下コマンドでLinuxを再起動します。


    Linux起動後に以下コマンドで起動ログから必要な行を探します。


    上記コマンド実行結果に以下のような表示が含まれていればI2Cは正常動作しています。

    bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0×20205000 (irq 79)
    bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0×20804000 (irq 79)

  3. ツール

  4. 以下のコマンドでI2C用ツールをインストールします。


その他

  1. コンソール通信ポートの無効化

  2. ディフォルトではシリアルポート(GPIO12, GPIO15)にコンソール出力が出てきますのでシリアルポートをKHR-3HVのコントローラに接続する際、これを無効にしておななければいけません。

    以下にその手順を示します。

    1. 以下のコマンドでエディタnanoを起動し/etc/inittabを開きます。


    2. inittabの中から以下の行を探し、先頭に#を付けコメントアウトします。

    3. T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

    4. ファイルを保存してviを終了させます。

    5. 以下のコマンドで/boot/cmdline.txtを開きます。


    6. cmdline.txtから以下の行を探します。

    7. rootfstype=ext4 elevator=deadline rootwait

    8. 上記の行で以下のようにコンソールパラメーターを削除します。

    9. dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4
      elevator=deadline rootwait

    10. ファイルを保存してviを終了させます。

    11. 以下のコマンドでリスタートさせます。


  3. 「FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck」不具合と対策

    • 不具合内容

    • 上記raspbianのバージョンではブート時に「FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.」のようなログが出力されます。

    • 対策

    • 対策としてfsckを走らせないといけませんがaptで入手出来るパッケージはバージョンが古いせいか、うまく対策出来ないので以下の手順で最新のdosfstoolをビルドしてfsckを走らせます。



inserted by FC2 system