2015年10月6日火曜日

RaspberryPiをロボットに使うこと

コンテスト用のロボットにLinuxボードを使うことについて


RaspberryPiが登場したとき、当時マイコンに挫折してた僕の目は輝きました。そしてRaspberryPiを使ったロボットで2つのコンテストに参加しました。周囲にLinuxボードを使う人が増えてきたのは感じますが、ロボットのコンテスト界隈に変化は起きていないように感じます。対してArduinoは確実に浸透して、変化をもたらしたように思えます。そこで、なんでRaspberryPiでロボコンが難しいのかを考えてみました。

難しさ1:初期設定の手間


マイコンは基本的に初期設定とかないし、あるとしても決まった手順を行えばいいです。RaspberryPiなどの初期設定は自分の持っている環境にもよるし、そもそもOSが違えば全く別物なわけです。さぁ買って使おうというときにこうやってつまづくのはテンション下がる。調べた通りにやってるけど自分の環境のせいでうまくいかないなんてことがザラです。

難しさ2:起動時間


これがマイコンからRaspberryPiにすんなり移行できない最大の要因です。マイコンは電源を投入したらすぐ動いてくれます。(モノによってはスタートボタンがあったり)RaspberryPiの場合は電源を入れてプログラムが勝手に動くようにもできますが、OSの起動時間がしばらくあるのでコンテストの競技開始時にスイッチを入れる訳にはいかないのです。電源はあらかじめ入れておいて、スイッチか通信でプログラムを実行する他ありません。

難しさ3:できることの多さ


これはRaspberryPiを使う目的でもあるので、はまりがちなところ。ネットで調べれば分かるように何でもできるのですが、すべてを同時にできるとは限らなかったり、重要でない処理のために全体の処理能力に負担をかけたりします。

難しさ4:複数のプログラムの実行


LinuxというかOSというものは、複数のプログラムを実行するために存在しています。その技術の恩恵をうけて複雑なプログラムを機能ごとに分割したりできます。それに対してマイコンでは基本的に大きな1つの(全部入り)プログラムを書き込むという発想しかなかったので、こういった知識が足りず難儀します。(しました)
例えば...
・実行するプログラムが増えると処理が落ちる
・どれか1つのプログラムが異常終了してたりする
・機能を細分化しすぎて無駄ができる

難しさ5:ノウハウ


研究でLinuxベースのロボットを作ってたりとなると、ここに書いたようなノウハウがあるのだろうけどみんながそうではないですよね。そういうのってノウハウが一般的(あたりまえ)なことすぎて教科書レベルのことから勉強しなくちゃいけなかったり、それこそ経験しないと身に付かないものだったり。RaspberryPi用のロボットOSを勉強するのもアリかもしれません。

結論


コンテスト用のロボット制作というのは、プログラムを書いてテストして修正するのを何回できるかが大きく結果に関わります。そのルーチンをどれだけ速く回せるかにかかってるのに、OSの起動時間なんて待ってられません。今のところの経験をまとめると3点。

  • RaspebrryPiは起動した状態で扱うこと
なるべく早い段階からモバイルバッテリーなど駆動用とは別の長時間つかえる電源で開発を進めましょう。
  • 確実な通信を確保すること
有線LANで直接パソコンにつなぐ通信がベスト。代替えとしてシリアル通信もあり。とにかく通信できないのが一番焦る。
  • 操作基板をつくること
スイッチやインジケーターを載せた基板を使って開発する。単独でも機能するのが1番強い。

従来のマイコンの代わりように使うことが必ずしも良いとは限りません。また、RaspberryPiを使いこなせばマイコンなんて要らないということもないでしょう。うまく使っていきたいものです。

0 件のコメント:

コメントを投稿