開発言語はモデリングをやりやすく、C++を使おう。てことになりました。
但し、過去にC言語でやっていたため、考えていたより時間がかかっちゃうってなことが発生しそうです。(あまりに無理そうだったらCに戻そうという話ですが、その判断までに時間がかかるとまずそう。。。)
レギュレーション発表も未だで、作るべき目標が見えないってことで、
あとは特に話し合いもなく、各自、自由研究です。
Kさん、H君は未経験者のため、サンプルプログラムでお勉強。
まずはNXTのAPIを色々試してもらって、どうやって動かすのか、倒立振子ってどうなってんの?ということを学んでいました。
とりあえずON/OFF制御でライントレースするとこまでやってました。
ここまでくれば、走行制御の難しさが理解でき、ある程度、走行理論を考えるイメージが沸いてくるのでは?
また、これを楽しそうにやっていたので後々楽しみです。どんどん知識つけたってください。
S君は最適なモーターの組み合わせを研究するということで、そのデバッグ手法を考えるそうです。(なんかNXTのモーターって個々で少し性能差があるみたいなんです。。。)
その成果で、今日は早速ツールを作ってました。
過去にも作っていたツールですが、NXT走行体の走行軌跡のログをとったり、NXTをその通りに走行させるためのソースを抽出したりする優れものです。
それを誰でも簡単に使えるよう、今回の活動で改良していくそうです。がんばってください。
===
後は私事。
ライントレースについて研究。
ライントレースは過去に適当に学んだけれど、全く説明できる程の知識はないです。
今回の大会ではかなり重要になりそうなので、更にレベルを上げるためにしばらく研究してみます。
まずは基本から学ぼうかと。下記がとても参考になります。
http://monoist.atmarkit.co.jp/fembedded/articles/etrobo/01/etrobo_01b.html
ライントレースには光センサーとサーボモータが必要。
サーボモータは、その名のとおりただのモーターで、APIにスピードを入力して回転させます。
サーボモータはNXT走行体の左右についており、左右のスピードを調整して曲がったり、直進したり、バックしたりできます。
光センサーは光量を感知するセンサー。(光量とは光センサーのAPIを使用して取得する値です。)
光センサーAPIを使用して黒を検知すれば、高い値(700くらい)を取得、白を検知すれば、低い値(600くらい)を取得します。
つまり、この光量が常に高い値になるよう、モータを調整して走らせてやれば、ライントレースができるということです。
ちなみに簡単なライントレースは以下のような感じ。
このライントレースを行うためのシステム制御理論に、古典制御、現代制御、ポスト現代制御というものがあり、たぶん一番有名と思われるPID制御が古典制御らしいです。
PID制御を引き続きチューンナップすることを考えていましたが、なんか色々制御理論が見つかったのでどれがよさそうか詳しく調べてみたいと思います。
またこれが非常にたくさんあるので、しばらくかかってしまいそうですが、ライントレースは重要!ということでがんばりたいと思います。
とりあえず、今日はここまで。
0 件のコメント:
コメントを投稿