Useful tricks/advice

Useful Knowledge Part 7  LSA (Light Sensor Array)

さて、初めてやってみた7日間シリーズの最後です

正直言って(ブログをあんまり更新しない僕としては)難しかったです。

前置きはこれくらいにして、今日はちょっとLSA、ライトセンサーアレーについて書きます

ライトセンサーアレーとは、これです。
LightSensorArrayw275








I2Cシグナルを使用するセンサーで、なんと8つのライトセンサーを1ポートで制御できます!?!?

しかも、うすい!

PID制御付きのLineLeaderのPID機能を取り払った版です。

一見レスキューをやる人たちにとって最強の武器っぽいです。 

でも言っときます、使わない方が良いです。

書いてある性能だけ見ると良いのですが、実際のライトセンサーの感度が悪い。

白と黒の値を設定するだけでも面倒。比例制御なんて絶対無理です。

しかも、感度が悪いせいで、バンプとかの上では変な値を返します。 

こないだでた赤いLSAはどうか分かりませんが、とにかく調整がめんどくさいし、正確なライントレースは無理です。

あと、キャリブレーションをしないと全くラインを見なくなります。

なので、レスキューでメインには使わないのが一番だと思います。

僕は去年これを京滋奈大会、全国大会、と使い、「無理」だと決断し、メインをNXTのライトセンサーに変え、LSAはギャップ検索用にしました。 

Useful Knowledge Part 6  串よけ

今回はハード編です

レスキューで誰もが悩んだ事があると言ってもいい障害物。

そう、串です。

串にはほんとに悩まされました。(得点もないし。串がある部屋はプラス20点とかしてほしいw)

黒線を隠したり、タイヤを滑らしたり、キャタピラだったら中に入って動きを止めたり....

とにかく、確実な対応法はないです。

でも何もなかったら最悪なので、串よけが必要です。

正直言って、串よけはロボットそれぞれなので、「これが良い!」っていう方法はありません。

でも、僕がいままで見てきた中でいいと思えるのは

1. 可動式

串よけが上下にちょっと動きます。

やっぱりフィールドにはバンプとちょっと段差とかがあるので、そのような場面で串をロボットの中に取り込まないように可動式にするべきです。

2.  バンプに影響を受けないけど串はよける素材。

串よけの難しいのはバンプに影響を受けないけど串をよける素材/構造です。

この素材/構造もたくさん種類があります。紙、レゴ、ブラシ、etc...

ちょっと、完結としては適当ですが、この2点がちゃんとチェックできていたら、だいぶ串の影響を受けない串よけができると思います。

Useful Knowledge Part 5  I2C センサー(ちょっと昔話)

比例制御から変わって今日はちょっと常識的すぎることです。

そう、I2CセンサーはNXTの同じセンサーポートの中に何個も使える!!!

あったりまえだーーー!って感じでしょう

でも、僕はこれを2013年のオランダ世界大会の時全然知らなかった。(だから、2013年度のロボカップはまさかのライトセンサーとタッチセンサーだけのロボットで出場!?笑)


話を戻しましょう。

これは robolab ではできませんが NXC で、できます。

言ったとおり、これは僕がオランダで開催された世界大会中に知ったことです。

2012年のチーム Amalgam を始め、以前からいろんなチームがやってきてましたが、一つのポートにDIST(赤外線距離センサー)とコンパスセンサーを同居させてます。

今まで僕は「1ポート=1センサー」って教わってきたのでこれがよくわかりませんでした。

で、そのとき、同じ日本チームだった チーム neos のS君に「どうやってやってるの?」と聞きました。

そこで、S君は「I2C通信をしているセンサーは同じポートにくっつけられる」って言いました。

え?、なにそれ?、あいつーしー?

その年のWROが終わってから色々調べると、I2Cとは低速シリアル通信なんちゃらかんちゃら書いていました、wikipediaに

とにかく、タッチセンサーやライトセンサーとは違うんだな〜って言うのはわかりました。

ぶっちゃけ、今もよくわかりません笑。

でも、I2Cセンサーっていうのはそれぞれアドレスを持っています。パスワードみたいな感じです。

それはこの形、0x00とか 0x02 とか 0x10 とか たまには0xF4とか言うのもあります。

つまり、このパスワードがかぶっていなければ、同じポートにたくさんのセンサーをくっつけられると、という事です

もちろん、かぶっている場合はパスワード変更みたいな感じで変更する事もできます。(Mindsensor社のサイトのダウンロードページからダウンロードして、NXT-G(NXTソフトウェア)から入れます。

まあ、これを知った以上戻れません。(比例制御みたいな感じに)

でも、初心者にはあまりおすすめではないかも。

そもそも、I2Cセンサーは扱いが難しいセンサーや制御するのが難しいセンサーが多いので、甘く見てると足下をすくわれます。

その点、オランダでの僕のロボットはマジでタッチセンサーとライトセンサーのみ(通電はタッチと同じ構造だから)。しかも、useful knowledge1 で書いたマイクロスイッチを使ってないから余計にシンプルなロボットでした。

今考えられないくらいシンプルだったおかげて、メンテナンスや問題解決も今より遥かに簡単でした。

動きもプログラムもシンプルで(つまり全部シンプル)難しいコースにも対応できました。

なので、僕の場合ですが、I2Cセンサーはロボットの基本的な事を習得してからが良いと思います。
(でも、めっちゃ便利wwwww) 

Useful Knowledge Part 4  比例制御とは? その3

比例制御についてもその3まで来ました。

さて、昨日の続きです。

一応これで比例制御は完成ですが、あとちょっとたす所があります。

まず、設定するスピードがー100%を下回ってしまうとやばいのでそこはストップをかけましょう。

「もし設定したスピードがー100以下なら設定スピードをー100にする。」 

あとは、まっすぐです。

ロボットはちゃんとまっすぐの上を走っていてもセンサーの誤差でほんのちょっと黒と読みます。

なので、どっちものライトセンサーが白に近い値をとっていれば、ただたんにまっすぐ。 と、いうコマンドを入れたらうまくいくはずです。

あとは、一番いいゲイン値を調べることです。

ゲインはどういう動きをしたいかどうかわかっていれば計算式で出せますが、ロボットにはモーターやセンサーの癖があったり、摩擦とかなんとかあるので、もう僕はゲインは適当(ロボットの動きを見てゲイン値を変える)にやっています。

さあ、一昨日、昨日、今日、の3日間に書いたことをやれば、綺麗な比例制御のライントレースができるはずです!

Useful Knowledge Part 3  比例制御とは? その2

昨日の比例制御の続きです。

比例制御とはなにか?っていうところはカバーしたと思います。今日はそのプログラム方法を紹介します。

別に比例制御と言うのはライントレースのためのものではないですし、色々な場面で入手した値を式に入れ、なにかの出力にするのはよくあることです。

でも僕がやっているのは2つのライトセンサーによる比例制御です。

(今から説明するのは昨日載せたステッピー&ロックオンさんのブログに解説されていた比例制御の方法をそのまんまプログラムにあてこんだものです)

まず、動きを説明すると、比例制御中はもし右のライトセンサーが黒ならばどんな値であろうとロボットは右を向かなきゃならないので、左のモーターは必ず前進しているはずです。すなわち、右のライトセンサーが黒ならば比例制御で設定するのは右モーターのスピードです。(逆に左のライトセンサーが黒ならば設定するのは左モーターのスピードです)


まず、NXTならviewで右、左のライトセンサーの黒の値と白の値をはかります。

その値を今からは左ライトセンサーがポート1、右ライトセンサーがポート2ということで、white1, white2, black1, black 2 と定義します。

さらに、センサーが読む値を value1 と value2 と定義します。

あと、左のモーターを A 右のモーターを Bとします。

最後に、モーターの最大前進速度(比例制御のなかでスピードを設定しない方の最大スピード)をmax で定義します。

右のライトセンサー が黒の時。(value2 < value1)

まず、黒を読んだセンサーがどれだけ白の値からはなれているかを調べます。これは white2 - value2 でできます。

このあたい、(white2 - value2) を max から引くと一応(マジで一応)比例制御は完成です

この時、右のライトセンサーが黒なので、左モーター(port A)は max で動きます。

つまり、今の状態だと、PortA = max , PortB = (max - (white2 - value2))となります。

設定しているportBの値は max から 今の値の差を引いています。つまり、value2 がより黒に近い値になるとより(white2 - value2)の値は大きくなります。

結果、value2 がより黒に近い値になると PortBの値は 小さくなります。

しかし、それでは PortBの値が 20くらいしか違わなくなります。

max から引く値を大きくするために (white2 - value2) にある定数をかけます。

業界用語でそのかける定数を 「ゲイン」 と言います。

数学の一次関数のよく見る y = ax + b の用に (white2 - value2) がx ならゲインはa になります。

例えばの話 maxが 100% で (white2 - value2) が 1~20 の間をとるのであれば、ゲインが10だったら

100% - (white2 - value2)×10 になります。

このとき、value2 が黒の値なら (white2 - value2) は20になります。

そうすると、100 - 20x10 は-100です。

つまり、直角とかの状態なら100%と-100%でロボットが回転してくれます。

逆に、 value2 がほぼ白の値、(white2 - value2) = 2とかだったら、

設定するモーターの値は80%になります。

ね、ちょっと黒ならちょっと回転、だいぶ黒ならだいぶ回転するでしょw

まだまだ説明がつづきそうなので、明日にまわします。

今日はこの辺で
 
プロフィール

2010年からロボット活動を始めた robotics X のキャプテン、ユング 開です!WROとロボカップジュニアレスキューラインに出場していました。メールは kaijunge21 & gmail.comへ(&を@に変更お願いします)。

ブログは終了いたしました。今までありがとうございます。

I am Kai Junge, captain of team robotics X. Pleas contact me at kaijunge21&gmail.com (please change & to @)

アクセスカウンター

    最新コメント
    記事検索
    Record of robotics X大会結果
    •WRO 2015 Finals in Qatar 2nd Place
    •WRO 2015 世界大会 in カタール 準優勝

    •WRO 2015 Japan First Place for Presentation
    •WRO 2015 全国大会 最優秀プレゼン賞

    •WRO 2015 Japan 1st Place
    •WRO 2015 全国大会 優勝

    •WRO 2015 Kyoto 1st place
    •WRO 2015 京都大会 優勝

    •RCJ Rescue Line Secondary 2015 Finals in China Best Programming
    •ロボカップジュニアレスキューラインセカンダリ 2015 世界大会 in 中国 ベストプログラミング賞

    •RCJ Rescue Line Secondary 2015 Finals in China Individual 1st place
    •ロボカップジュニアレスキューラインセカンダリ 2015 世界大会 in 中国 個人競技 優勝

    •RCJ rescue A secondary 2015 Japan Open Best Presentation Award
    •ロボカップジュニアレスキューAセカンダリ 2015 ジャパンオープン 優秀プレゼンテーション賞受賞

    •RCJ rescue A secondary 2015 Japan Open 1st place
    •ロボカップジュニアレスキューAセカンダリ 2015 ジャパンオープン 優勝

    •RCJ rescue A secondary 2015 Keijina Best Presentation Award
    •ロボカップジュニアレスキューAセカンダリ ベストプレゼンテーション賞受賞

    •RCJ rescue A secondary 2015 Keijina 1st place
    •ロボカップジュニアレスキューAセカンダリ 2015 京滋奈大会 優勝

    •RCJ rescue A secondary 2015 Kyoto 1st place
    •ロボカップジュニアレスキューAセカンダリ 2015 京都大会 優勝

    •WRO 2014 Japan 8th place
    •WRO 2014 全国大会 8位

    •WRO 2014 Kyoto 1st place
    •WRO 2014 京都大会 優勝

    •RCJ rescue A secondary 2014 Finals in Brazil Individual 2nd place
    •ロボカップジュニアレスキューAセカンダリ 2014 世界大会 in ブラジル 個人競技 準優勝

    •RCJ rescue A secondary 2014 National Competition 2nd place
    •ロボカップジュニアレスキューAセカンダリ 2014 日本大会 準優勝

    •RCJ rescue A secondary 2014 Keijina Best Presentation Award
    •ロボカップジュニアレスキューAセカンダリ ベストプレゼンテーション賞受賞

    •RCJ rescue A secondary 2014 Keijina 1st place
    •ロボカップジュニアレスキューAセカンダリ 2014 京滋奈大会 優勝

    •WRO 2013 Finals in Indonesia 2nd Place
    •WRO 2013 世界大会 in インドネシア 準優勝

    •WRO 2013 Japan Second Place for Presentation
    •WRO 2013 全国大会 プレゼンテーション賞第二位

    •WRO 2013 Japan Fourth Place
    •WRO 2013 全国大会 四位

    •WRO 2013 Kansai 1st place
    •WRO 2013 関西大会 優勝

    •RCJ rescue A primary 2013 Finals in The Netherlands Superteam 3rd place
    •ロボカップジュニアレスキューAプライマリ 2013 世界大会 in オランダ スーパーチーム競技 3位

    •RCJ rescue A primary 2013 Finals in The Netherlands Individual 2nd place
    •ロボカップジュニアレスキューAプライマリ 2013 世界大会 in オランダ 個人競技 準優勝

    •RCJ rescue A primary 2013 Japan Open Best Presentation Award
    •ロボカップジュニアレスキューAプライマリ 2013 ジャパンオープン 優秀プレゼンテーション賞受賞

    •RCJ rescue A primary 2013 Japan Open 2nd place
    •ロボカップジュニアレスキューAプライマリ 2013 ジャパンオープン 準優勝

    •RCJ rescue A primary 2013 Keijina Best Presentation Award
    •ロボカップジュニアレスキューAプライマリ ベストプレゼンテーション賞受賞

    •RCJ rescue A primary 2013 Keijina 1st place
    •ロボカップジュニアレスキューAプライマリ 2013 京滋奈大会 優勝

    •WRO 2012 Finals in Kuala Lumpur, Malaysia 10th Place
    •WRO 2012 世界大会 in マレーシア 10位

    •WRO 2012 Japan (national) competition MVP for presentation
    •WRO 2012 全国大会 最優秀プレゼン賞

    •WRO 2012 Japan (national) competition 3rd place
    •WRO 2012 全国大会 第三位

    •WRO 2012 Kansai 2nd place
    •WRO 2012 関西大会 第二位

    •RCJ rescue A primary 2012 Keijina 2nd place
    •ロボカップジュニアレスキューAプライマリ 2012 京滋奈大会 第二位

    •WRO 2011 Kansai 7th place referee's special award
    •WRO 2011 関西大会 7位 & 特別審査員賞

    •RCJ rescue A primary 2011 Japan Open 10th place
    •ロボカップジュニアレスキューAプライマリ 全国大会 10位

    •RCJ rescue A primary 2011 Keijina 2nd place
    •ロボカップジュニアレスキューAプライマリ2011 京滋奈大会 第二位

    •WRO 2010 World In The Philippines 28th place
    •WRO 2010 フィリピン世界大会 28位

    •WRO 2010 Japan 3rd place
    •WRO 2010 全国大会第三位

    •WRO 2010 Kansai 3rd place
    •WRO 2010 関西大会 第三位
    QRコード
    QRコード
    • ライブドアブログ