まいまい(明滅)式ライン測定のサンプルコードを公開します。
サンプルコードを読んでみての感想や質問、NXTで実行してみた結果のコメントをお待ちしています。宜しくお願いします。
光センサーの測定処理だけを抜き出して、東京大会後にすぐ公開するつもりだったのですが、コードを読み直すとあれこれ気になる部分が目について修正を繰り返しているうちに、随分と時間が経ってしまいました。ゴメンナサイ。
サンプルコードを実行すると、前後方向は静止したまま左右に首を振りコースラインをトレースします。
まいまい(明滅)式ライン測定のサンプルコードを公開します。
サンプルコードを読んでみての感想や質問、NXTで実行してみた結果のコメントをお待ちしています。宜しくお願いします。
光センサーの測定処理だけを抜き出して、東京大会後にすぐ公開するつもりだったのですが、コードを読み直すとあれこれ気になる部分が目について修正を繰り返しているうちに、随分と時間が経ってしまいました。ゴメンナサイ。
サンプルコードを実行すると、前後方向は静止したまま左右に首を振りコースラインをトレースします。
公開ありがとうございます。
OSEKに移植し終わったので週末に遊んでみます。
ハラスンさん、コメントありがとうございます。
あっという間にITRONからOSEKへの移植が終わったのですね。スゴイ 😯
どういう結果になったか後日談を楽しみにしています。 😀
すばらしいです。外乱光をわざと与えてみたり、部屋を暗くしたりして試しましたが無調整でライントレースできます。
最初、タッチセンサーを押しても動き出さず、少し悩みました。
blinker.c の 103行目で指定しているタッチセンサーのポートが NXT_PORT_S2 になっていたのですが、21行目の “#define TOUCH_SENS NXT_PORT_S1” のとおり、タッチセンサーを1番に繋いでいたので、TOUCH_SENS を指定するように修正しました。
blinker.c の 253行目の非線形補正係数の計算について、何か参考になる文献はないでしょうか? よろしくお願いいたします。
ハラスンさん、追試報告ありがとうございます。
21行目と103行目のdefine定義のバグごめんなさい。自分のロボットではなんとなく上手く動作していたので気がつきませんでした。 😉 修正したものをアップしました。
非線形補正は参考とした文献はこれといってありません。EXCELの多項式近似をつかって補正のための近似式を計算してます。後日、ブログにまとめてみます。
待ってました、弊社のチームメンバも公開を心待ちしておりました。
来年はまいまい式を実装するチームが増えるでしょうね♪
ピンバック: ハラスンの関心事
今更ながらnxtOSEKに書き換えて動かしてみました。マルチタスクは使わずに簡易的に20msec毎に点滅するようにしましたが、意図したように動いているか不安です。タスクに分けたほうがいいですか?
あと、高校生以下の僕には原理が理解できませんでした。
brightnessは何を表しているのですか?
LED点滅の輝度差と、ラインの白黒の輝度差が頭の中でごっちゃになってしまいます。
luminometer で何をやっているのかもう少し詳しく教えて頂けないでしょうか。
xr250sさん、コメントありがとうございます。
まいまい式のサンプルプログラムをITRONのマルチタスクで実装した理由は、私が仕事の関係でITRONに慣れ親しんでいたため選択しただけで、それ以上の意味はありません。nxtOSEK上にシングルタスクで実装することも可能です。現在公開しているサンプルプログラムではマルチタスクで実装する旨味をほとんど活かせていないと思います。
まいまい式が意図した通りに動いているかどうかを確かめるには、懐中電灯などで外乱光を与えてもらうのが一番ではないでしょうか?
「高校生にも分かる」というキーワードは2009年の東京大会のワークショップで参加者の高校生の皆さんが、「高校生にも分かるように難しい微積分を使わずにPID制御を教えて下さい!」といったことに引っ掛けただけで、それ以上の意味はありませんので気を悪くしないで下さい。 😀
blinker.cの変数brightnessは赤LEDの反射光の量(強さ)を正規化した値です。
「(混じり気のない)赤LEDの反射光の強さだけを知りたい」というのは私が考えた一つのアイデア(仮説)です。外乱光の影響を排除するための唯一絶対の方法という訳ではないと思うのですが、実際に試して見たら上手くいったと云うレベルです。
外乱光(太陽光)の影響が無視できる屋内ではありがたみは全くありません。 😉
たぶん理解しました。
「外乱光がほとんど変化しないという前提」があったんですね。
プラス
「ライントレースしたときのコースからの反射光の変動周期は、LEDを明滅させる周期より十分長い」という前提もありますよね。