福山マイコンクラブのマイクロマウスで育ったためか、自作ロボット=ステッピングモータ等を使った移動ロボットだと考えてしまいます。しかし移動ロボットはデバッグのためにそれなりの場所が必要で、どうも自分のライフスタイルとは合わない予感がしてきました。
そこで場所を取らない卓上ロボットアームの作成を検討。前から一度使ってみたかったラジコン用サーボモータを制御用に使うところまでは良いのですが、問題はメカの作成です。アルミ板に正確に穴を開ける自信が無いので、まずは田宮模型のユニバーサルアームセットを使ってみました。おかげで LEGO やデルタックスのように簡単にロボットアームを作成することが出来ました。
画像認識というものは、まいこん野郎にとって遊んでみたいテーマの1つなんじゃないかと思います。なんとゆーか、マイコンソフトが実環境と関係しあうということが、非常に楽しいですよねえ。しかし認識モノを楽しむのにはセンサが必須となります。お手軽に楽しむというのはムツカシイ、まして画像の取得ともなると大変です。
しかしここに救世主が現れました。有志により PHS 用カメラユニット Treva が解析されたおかげで、非常に簡単にマイコンで画像の取得が出来るようになりました。環境が整えられれば、あとは楽しい認識遊びを堪能できます。今回はテニスボールの認識に挑戦し、欲張って移動台車に載せてしまいました。
カメラを積んだ移動ロボットで遊んでいるうちに、ライントレースをさせたくなりました。画像情報のみで制御するライントレースなど、考えただけでワクワクします。しかしライントレースで遊ぶには、それなりの大きさのコースを用意する必要があります。プリンタで黒線を出力しスチレンボードに貼り付けてみたのですが、ある程度の大きさを確保するのは大変だということが良く分かりました。
そこで手のひらサイズ以下の小型の移動ロボットを作れば、A4やA3用紙の上でライントレースが出来るんじゃないかと考えました。これならコースを作るのも楽になります。最初はスリーディのワクチン君の駆動系ユニットを使おうと画策していたのですが、タカラのデジQに心を奪われてしまいました。このデジQを利用して、完全ローカルビジョンな自律小型移動ロボットを目指してみます。
トレQは遊んでいて非常に楽しいロボットでしたが、不満も多々ありました。一番大きな不満はバッテリの持続時間が非常に短いこと。5分くらい動かしていると、すぐ挙動不審になってしまいます。これではデバッグも思うように進みません。あと駆動系も不満です。元々デジQはスピードが出るようにギヤ比が低いため、PWM によって低速で動かすとトルクが少なくなり路面によっては前に進んでくれません。やはりお手軽に遊ぶには、それなりの大きさが必要だと痛感しました。
自分の理想の大きさを考えた時、秋月Cタイプ基板が思い起こされました。このサイズに合わせた台車を作成することで、メカ加工が最小限で済むことが期待出来ます。更にサイズが固定なので基板の取替えが容易になり、一種のプラットフォームとして使えるようになるのではないでしょうか。以前からの妄想だった「俺 Khepera」の世界に近づくことを一つの目標にしてみたいと思います。
唐突ですが、そろそろアマチュアが USB 機器をお手軽に開発する時代が来たんじゃないかなあと思う今日この頃。それを予感させたのが旧 AnchorChip(現 Cypress) の AN21xx シリーズです。これは米国では今でもよく使われている 8051 をコアを持つ、USB コントローラ内蔵の CPU です。
コイツは USB を経由してファームウェアを内蔵 RAM に転送し、CPU にリセットをかけて実行することが出来ます。PIC / AVR のように ROM ライタで焼く必要もありません。さらに市販デバイスを流用することで、非常に安価に開発環境とボードを入手することが出来るというオマケ付き。さあ、もうやるしかないでしょう。
撮像素子というものには魔力が宿っているのでしょうか?何かを夢見て購入し、そして有効に使うことなく死蔵する。それを繰り返している自分がいます。
そんな最近入手しやすくなった撮像素子ですが、入手しただけで満足してしまっている自分へのイマシメのために、ここで手持ちのものを公開することにします。
移動ロボットとの意思の疎通には、やはり無線を使いたいもの。特にカメラを搭載してローカルな画像処理をマイコンで行なわせようとすると、デバッグの効率化の為には外部との高速無線通信システムが重要になってくると思います。
現在手軽に入手できる高速無線環境といえば IEEE802.11b 無線 LAN でしょう。無線 LAN クライアントの殆どが PC カードにて提供されていますので、これをマイコンに接続して制御する必要があります。8bit RISC マイコンの AVR と無線 LAN カードを接続して、UDP/IP や TCP/IP で PC との通信を目指します。
マイコン無線環境を語る時に避けて通れないのが Bluetooth でしょう。対応デバイスも一時期に比べて増えてきました。小型低消費電力という特徴を生かして、手頃なサイズの組込み機器に搭載されることが多いため、アマチュアとしても色々と妄想が膨らみます。
しかし Bluetooth にはプロトコルスタックという大きな壁があります。Linux 用にはフリーのプロトコルスタックソースが公開されていますが、マイコン用でソースの公開されているものは見つかりませんでした。法的な問題を含め色々キケンな面もありますが、無いなら作るの精神でプロトコルスタックを自作し、アマチュア組込みデバイスと Bluetooth 搭載 PC との通信に挑戦します。
Bluetooth との戯れに後ろめたさを感じます。日のあたる所で使いたい。しかし国内ではシリアルポート接続可能な Bluetooth モジュールを安価に入手するのが難しく、USB タイプのモジュールに頼らざるを得ません。その為にはマイコンで USB デバイスを制御する必要があります。
という訳で USB ホストにチャレンジしてみることにしました。マイコン直結野郎の妄想を満たしながら、低価格なマイコンで USB 無線通信や USB Mass Strage Class やアイソクロナス転送に挑戦します。
マイコンの性能を評価するのは難しいです。単なる MIPS 値の比較では済みません。使用するCコンパイラだって影響を与えます。やはり実際にアプリケーションを動かしてこそ評価が出来るというものです。そこで今回は Treva の画像取得アプリケーションを評価用の共通アプリとして、各マイコンの性能を調べてみることにします。
今回の実験は性能評価以外に2つの目的があります。1つは各マイコン用ファームの雛形を揃えることです。1ms タイマと UART と LED 点滅が動いていれば、後の作業は結構楽になるのではと考えています。もう1つの目的は新しいマイコンに色々手を出す際の言訳を用意することです。LED 点滅だけで放置しても、性能評価をしたんだと自分に言訳することが出来るだろうと考えています。
プロトコルアナライザがあると、今起きていることを短時間で把握できデバッグが楽しくなります。USB バスアナライザが無くロジアナだけでソフトウェア USB ホストのデバッグを行っていた時には非常に難儀しました。USB バスの波形を手作業でデータ列に変換し、流れているパケットの中味を把握するのは USB の勉強にはなりましたが苦行でもありました。
という訳で USB バスモニタを自作してみました。FPGA を使ったモニタも作ってみましたが、マイコン野郎ならマイコン1個で実現したいものです。AVR を 24MHz のオーバクロックで動かせば、単なる USB バスのモニタだけではなく、パケット種類による条件トリガやフィルタだって出来そうです。モニタ容量も少なく Windows アプリの出来もイマイチなイカサマ USB バスモニタですが、その後の USB 工作では非常に重宝しました。