2011/06/21

実践でまいまい式を使うための改善策

先日の東京連合では、外乱光対策として有力候補の「まいまい式」を実際に使うための改善策について話しました。

結論から言うと、まいまい式の弱点である輝度計算の周期が遅い問題を多少改善できることは分かりましたが、速さを競う競技ではまだまだのレベルでした。ここに調査結果を記しますので、ETロボコン有志が改善策を練ってくれることを期待しています(私は参加者じゃないので^^;)。

調査して何か分かったら、 #maimai #etrobo でつぶやいていただけるとうれしいです^^

■まいまい式について

slideshareにアップしたプレゼン資料にも書いていますが、特に東京地区大会の会場のように太陽光がコースに直接入射する場合、光センサーの仕組み上、地面の反射率が高い(明るい色)なのか、太陽光が強いのか区別できなくなります。そして、レーンが識別できなくまります。


それを回避する手法として、ETロボコン界隈では「まいまい式」がよく知られています。
原理については、すねいるさんのブログを参照してください。

http://www.chihayafuru.jp/etrobo/?p=1349
http://www.chihayafuru.jp/etrobo/?p=1371
http://www.chihayafuru.jp/etrobo/?p=1326

■まいまい式の問題点 - 輝度計算周期が長い

このまいまい式は「効果が絶大」との報告がありますが、1つ難点があります。コースの輝度を早く計算できないことです。サンプルだと20ミリ秒周期になっていますが、倒立制御の周期が4ミリ秒なのに対して、これはあまりにも長過ぎる。

では、何が問題なのか?を考えました。

(1) LED光の点滅周期が遅い

まず疑ったのが、LED光を早く点滅できないんじゃないかということ。普通に考えると、こんなシンプルな回路でミリ秒もかかるわけないのですが、裏を取ってみました。

http://mindstorms.lego.com/en-us/support/files/default.aspx

上記のURLから取得できるNXTの回路図を見ると、LED光の点滅はメインプロセッサのARM側でやっています。LED光を点滅するための回路がARMに直接つながっているシンプルな構成です。回路的には問題ないと思います。

また、デバドラのソースコードはnxtOSEKの下にありますので、探してみてください。レジスタを操作してるだけなの普通のコードです。これも問題ないと思います。

(回路図とデバドラに問題ないので、問題ないと自分の中では結論付けていますが、電気的な特性で何かあると分かる人いましたら、ご連絡ください)

(2) 光センサ測定値の測定周期が遅い


もしかすると光センサの測定値を早い周期で取得できないのではないかと考え、こちらも調べてみました。ハードウェアの仕様書によると、とある事情でAVRのサブプロセッサが3ミリ周期で光センサのA/D変換結果を取得し、2ミリ秒周期でARMのメインプロセッサに送っているようです。

つまりは3ミリ以上は速くなりません。また、ARM側が値を取得するタイミングとARM-AVR間の通信周期が合わない場合もあるので、ARM側の取得が約2ミリ遅れることもありえます。

つまり、以下の3つの周期が噛み合ないと最新のデータが期待するタイミングで取得できません。

  • AVRのA/D変換が3ミリ周期
  • AVR - ARM間の通信が2ミリ周期
  • ユーザプログラム側で光センサ測定値を取得する周期・・・実装次第

ボトルネックはここにも存在することが分かりましたが、20ミリとかのオーダーの問題を調べているので、他にも問題は潜んでいそうです。

(2)' 光センサの測定速度が遅い

ちなみに、光センサのデバドラはAVRのサブプロセッサ側にありますが、こちらも回路図とデバドラともにシンプルで問題ないはずです。ドキュメントによると0.1ミリ秒くらいで処理は終わっているよう。

デバドラのソースコードはこちらで入手できますので、興味ある方は調べてみてください。

(3) 光センサがLED光の点滅の影響を受ける

これは調べきれていませんが、点滅と光センサの測定がほぼ同時期に実施されると、何らかの影響を受けてもおかしくはありません。きっちり点灯(もしくは消灯)してから光センサ測定をするように、タスク設計すると良いと思います(まだ調べてないのでなんとも言えません)。

(4) まいまい式の差分計算の計算量が多い

これは、まいまいさんが現実の光センサ値を線形補正するやり方をご紹介しています。
http://www.chihayafuru.jp/etrobo/?p=1371

計算量をおさえるように工夫されていて、問題ないようでした。
ちなみに、ここの補正係数は各自で調整が必要です。

(5) その他のオーバヘッドが大きい

オリジナルの実装ではタスクの生成/破棄を頻繁にやってるので、ここは少し冗長だなと思いました。周期タスクで処理をやりつつ、一切破棄をしない実装だとどうなるのか調べてみました。


ライントレースしての実験ではないので不完全ですが、8ミリ周期でLED光を点滅しながら、光センサも測定し、輝度計算もできていました。

■まとめ

ちょっと工夫したら、少し遅めに走る分には問題ないレベルに改善することが分かりました。ただ、AVRのデバドラを規約上書き換えることができないので、根本的に直すのは無理のようです。

会場からは「マップ走行(光センサを使わず、モータエンコーダ値で位置を計算する方法)をメインに使って、補助としてまいまい式の輝度計算結果を使ってみてはどうか?そうするとまいまい式の計算速度は気にならない」という意見もありました。これはなかなか現実的な提案なので、どなたか試してみてください!

2011/06/19

ETロボコン東京連合の第1回を開催しました

6/18(土)に株式会社オージス総研東京オフィスにて、ETロボコン東京連合の第1回集会を開催しました。そのうちオブジェクトの広場でも、報告記事が載ると思いますが、ここでも報告します。

■東京連合とは?

ETロボコン東京地区参加者の有志による独自勉強会です。2010年から始めて、今年で2年目です。だいたいモデルのレビュー、合同試走会を行っています。

昨年の様子はこちらを参照してください。
http://www.ogis-ri.co.jp/otc/hiroba/technical/ETRoboconTokyoRengo/index.html

■第1回の参加チーム


  • 勝(かち)ロボさん
  • 笑's3人娘さん
  • 飛べ!僕らの夢ヒコーキさん
  • すねいるさん
  • 田町レーシング
  • 芝浦雑技団

■スケジュール

今回は初回なので全員で顔合わせ。そして、常連の人が講演するという内容でした。次回以降はもっと参加者全員で対話的に議論する形になると思います。


  • 13:45 全員で自己紹介
  • 14:05 東京連合とは?(手嶋さん@東京連合)
  • 14:15 大胆予想〜今年のモデル/競技はこう変わる〜(手嶋さん@東京連合)※全員でのブレストあり
  • 15:15 休憩
  • 15:30 要求分析入門(片山さん@田町レーシング)
  • 16:00 縦横無尽走行解説(瀬尾さん@勝ロボ)
  • 16:30 休憩
  • 16:45 まいまい式解説(大西@東京連合)
  • 17:45 第2回集会のお知らせ(手嶋さん@東京連合)
  • 18:00 終了
  • 18:30 懇親会(南関東地区の方も4名参加されました)

■講演の感想

○ 大胆予想〜今年のモデル/競技はこう変わる〜(手嶋さん@東京連合)

2011年で規約が変わった箇所について、モデル審査や競技面の両方について議論しました。詳細は、後日公開予定のオブジェクトの広場の記事を参照してください。

気になったのはBluetoothでPCとロボットが通信できるようになったこと。ある人は無限の可能性が広がったと期待感を示していました。一方で、通信の信頼性の問題があるので、頼りすぎるのは良くないとの意見も。可能生はありますが、どこまで使えるかは各自検討が必要です。

○15:30 要求分析入門(片山さん@田町レーシング)

要求分析の入門として、要求分析の目的やユースケース図および要求図の書き方について紹介していただきました。

会場からは要求を整理することは大事だとは重々承知だけど、最初に要求図をちゃんと書けるの?との意見も。田町レーシングのメンバが昨年使った感想として、「最初から一発でできない。反復型の開発を取り入れて、開発を通じて分かったことを要求図に盛り込むやり方が良い」とのコメントしました。

○16:00 縦横無尽走行解説(瀬尾さん@勝ロボ)

これは、いわゆるマップ走行という光センサを使わない走り方の紹介です。光センサは一切使わず、エンコーダ値からロボットの位置を計算し、あらかじめ決めたルート通りに走ります。

ここでは書ききれませんが、高校数学レベルの知識があれば、すべて計算できます(三角関数、ベクトル演算など)。おそらくは、数学の知識に関しては2Dのゲームなどを作った経験ある人はみんな知ってる内容です。

ロボコンでやる場合は、エンコーダ値のズレなどを補正する必要があります。やり方としては、光センサで直線部分などコースの特徴的な場所を検知して各種パラメタをリセットすると良いようです。

○16:45 まいまい式解説(大西@東京連合)

これは後日ブログに掲載します。

■懇親会の感想

南関東の方も来られて、地区を超えた熱い議論をしました。ロボコンも地区内外の交流が増えてきましたね。

■第1回を終えてみて

2011年の参加者がひとまず一カ所に集って、勉強会できたことは大きな成果です。
皆さん、今後も参加を希望しているとのことで、東京地区全体のレベルアップ、そしてチャンピオンシップ大会で東京地区参加者の上位総なめを目標に支援していきたいと思います。

あと、もしかすると南関東の人達とコラボするかもしれません。