こんばんわ。SpiralRayです。
まずはこれをみてください
今日プログラムを変更したカメラによるライントレースロボットです。
一昨日より2~3倍ほど速くなっているのではないでしょうか?
とはいってもコースが簡単であるだけであって、本当は問題は山積みです。
まず、PD制御を取り入れたつもりが、センサー値が負のときに変な動作をする。
原因はおそらく、符号が必要な変数がunsigned型になってしまっているのだとおもいます。
これのせいで、PD制御が、ラインがカメラの左半分にあるときしか働いていません。
次に、直角や急なカーブの部分の処理がかなり雑であると言うこと。
カメラでのライントレースはラインセンサーを使用するよりかなり前方のラインしか読むことができないので、速度を落とさずに旋回するときに(工夫しないと)ラインが見えなくなります。
今回のこのプログラムは、ラインが見えなくなったときには前回のモーターの速度をそのまま維持するだけというかなり雑な作りとなっています。
主な問題としてはこの二点です。
金曜日にPD制御の部分は直したいと思います。
土曜日からは試験準備期間、および試験期間があるので、2週間部活動はできなくなります。
それではまた金曜日に(?)
ちなみに、金曜日にはこれよりさらに速くライントレースができるようになっているはずです。はず…
12/3日追記
現段階のソースコードの一部を公開しておきます。
とはいっても本当にたいした処理をしていないのでがっかりするだけですけどね。
camera_linetrace
PID制御うまくいきました。やはり原因はunsignedでした。
計算式中にunsignedの変数が入っていて、そこでマイナスじゃなくなっていました。
RSS feed for comments on this post. TrackBack URL
コースが簡単とはいえ画像解析でここまで滑らかで早いライントレースができるのはすごですねー!
ぜひアルゴリズムの紹介とかしてくれるとうれしいですw
公開するのがあれなら今度個人的に聞きにいきますww
コメント by shiba — 2010年12月2日 @ 23:49
おはなし聞かせて!
おお…なめらか…
うちも今回は授業で微分ならってやっとこさ理解できたのでPD実装する予定です
設計はだいたい出来てるんですが、レールガン作っててロボットは全然手を付けてません。
コメント by kuro — 2010年12月3日 @ 22:45
現時点では、まともなアルゴリズムは全く実装していませんが、一応プログラムの一部を掲載しておきました。何かの参考にどうぞ。
コメント by spiralray — 2010年12月4日 @ 01:18
ライントレースの動画見ました。SH-2Aを入手後、簡単な画像処理をしたいと思っておりました。映像からラインを見つけるというのま正に自分が考えていたアプリの雛形にぴったりです。画像処理を行う以前にVDC3部をどう設定しているのか教えていただけないでしょうか。また、どのタイミングで公開している、画像処理部を起動しているのかも興味があります。ブログでの公開が困難であれば、個人的にお願いします。
コメント by M10 — 2011年1月5日 @ 06:18
VDCの設定などはコチラの方のプログラムを使用させていただいているので詳しく公開することはできませんが、
ビデオをページ3に
画像表示をページ4,5に使用しています。
ページのサイズを考えたら妥当だと思います。
プログラムはメインループで周期的に呼び出しているだけです。(動画データが自動的にメモリに書き込まれていくようになっているので)
コメント by spiralray — 2011年1月6日 @ 23:31
私も以前SE組込人さんにはお世話になりました。今回のコメントと公開しているソースからじぶんなりに考えてみます。ありがとうございました。SH-2Aの仕様で少々不満(仕様をよく知らないせいもあるかも)ですが、画像取り込みモードでは、規定の画像を取り込むと割り込みを発生させられますが、表示モードでは、そのようになっていないと思います。そのため、映像は定期的にメモリに書き込まれますが、処理のタイミングは成り行きとなってしまい、下手をすると更新途中の画像に対し処理を行うことになると思います。特に直進からカーブ、カーブから直進に移るときなどに問題が発生しそうな気がします。
コメント by M10 — 2011年1月8日 @ 13:44