2016年01月

技術公開 part 4.1

学校が忙しくて、なかなかこっちの時間を取れませんでした.... 

そして2015年の中国大会のプログラムやWROで使用したライントレースの記事ではありません... (この辺は基礎の基礎になるのでちゃんと書きたいです)

その他、質問の中に多かったのが「何を使えばいいのか?」にまつわることでした。

なので、この記事ではRCJ、WROで使う色々なものの比較をしていきます。

具体的には、プログラム言語、NXTとEV3、そしてライトセンサーについてです。

(書く前に言いますが、僕はプログラムや回路に関してはあくまでも素人です... 理由付けのようなものがあっても僕の感想程度と思ってください....笑) 

3シリーズにするつもりで全て近日公開します(って言いながらできなかった時はすみません)

プログラム言語:

まず、僕が使ったことあるプログラムで多くのNXT/EV3使用者が使っているのが、Robolab、EV3-G、NXC、RobotC です。

特にNXTとRobolabに関しては長いこと使っていたので詳しく理解しています(←理解っていうかチュートリアルに書いている程度の使い方は分かる)

まずはブロックダイアグラムでプログラムしていく Robolab とEV3-Gについて解説します。

Robolabブロックダイアグラムでプログラムを組んでいくものとしては古いわりに非常にいいと思います。っていうか一番いいと思う。

なにがいいかというと、Cに一番近く、楽に細かい設定ができることです。

Robolab後のプログラムNXT-GやEV3-Gプログラムが簡潔化されていて細かい設定ができません。

一つの例はモーターのコマンドです。

たとえばBモーター、Cモーターを1秒間正回転 したかった時、Robolabではそのまま3つのコマンドを貼り付けます。(B回転、C回転、ウェイト1秒)

しかし、EV3-Gではそれが一つのブロックになっています。

う~ん、書きながら考えると初心者には優しい気がすることもするのですが、僕としては(特にCをやったことある人からすれば)、Robolabのほうがいいです。

他にもいかにLEGO社がEV3-Gを初心者向けに作ったのかがわかる機能が多くあります。逆をいうと、いろいろな場面で使いやすい感じもしますが。

代表的なものとしてモーターのコマンドが純粋なモーター回転ではないことです。

例えば1秒まっすぐでプログラムを試すと、とまる直前少し原則します。これは回転やステアリングでも同じです。

まっすぐ進むとかいうことに関してはモーター同期がかかってやりやすい面もあるのですが、スピーディーなWROとかではそういう設定も自分で入れるか入れないか決めたいところです。(実際、2013のWROを練習しているとき、相方がNXT-Gを使ってプログラムをしましたが、同じハードを使っているのにもかかわらず、そういう同期や謎の組み込みPID制御が原因で調整に苦しめられました)

あとはブロックの形です。

大きい!!

大きすぎます。大きいわりに自由度がないので(すべてくっついてる)元々あるプログラムに新しいものを組み込むっていう意味では非常にやりにくい。時間がないサプライズ対応とかは特に。(あとは一つ一つのブロックのグラフィックが無意味に良いためすぐにプログラムが重くなります。)

なにかEV3-Gの文句を言ってる感じになりましたが、言いたいことは「EV3-Gはガチでロボット競技やってる人にとっては向いてない」ということです。もちろんRobolabも同じですが、EV3-Gよりは自由度があります。

個人的に、もしEV3がRobolabで動かせたなら絶対そうしてました。EV3-Gを使ったのはWRO2015の競技ではモーターが絶対4個必要で、EV3をつかわざるをえなかったから。(ちなみにLabViewは全く別物です。Robolabの進化版みたいに書かれてますが、コンセプトがだいぶ違います。断然RobolabとEV3-Gのほうが似てます。)

WROはC禁止なのでしょうがないですが、ある程度プログラムに慣れてきたらEV3-G、RobolabからCに移行することを強くお勧めします。やっぱりブロックダイアグラムでは限りがあります。


と、いうことで次はC言語のプログラミングソフトウェアを紹介します。

Cは難しいイメージがありますが(難しいですが笑)、NXCやRobotCは簡単です(普通にロボカップで使う分には)

僕が実際にCを使って大会に出場したのは2013年のロボカップが最初でした。(NXC)

さっきも言いましたが、RobolabはNXT-GとかよりもCに似ているのでNXCで初めてプログラムを書いてみてると「あ、これはRobolabのこのコマンドと同じことか!」と思うことが多かったです。

この記事はCのチュートリアルではないので自らの体験はこのへんで笑

あまりこの記事を書いている意味がなくなるかもしれませんが、NXCとRobotC、あまり違いはないです

ではなぜNXCを使っていたの?と聞かれると、「タダだったことと、最初に使ったものだから」と答えるほかありません。

でも、どっちも経験してみてわかったことはRobotCのほうがクオリティーが高いことです。

主な違いは

ダウンロードスピード、サポート、バグ出し、二次元配列が使える

です。特にダウンロードスピードは速いほうが断然いいので笑 サポートに関してもNXCよりいろいろなセンサーに対応しているし、NXCよりも的確なバグ検知ができます。レスキューメイズの選手からしたら二次元配列はうれしいことでしょう(NXCが二次元配列つかえなかったかどうかは正確には忘れました。でも使えなかったような気がします)。

他、プログラムの文法的な部分に関してはあまり変わりません。多少文が変わりますが、そんなのは覚えたらすぐです。

デメリットはRobotCはお金がかかるところでしょうか?($5000/年とかだったような?)

僕も明らかにメリットがあるから使ってみました。具体的には2015年のロボカップ全国後から世界大会の40日くらい前まで。

ただ、なぜか僕が愛用している8角形のジャイロが思うように使えませんでした。なぜかうまくいきません。Mセンサーも試したのですが、MセンサーはI2Cでありながら、ほかのI2Cと共存できないっぽいのでそれも没。

結局世界大会はNXCで挑むことになりました。


と、いうことで僕のプログラム言語の関するコメントでした。

次回はNXTとEV3の比較を行います。(非常に一方的な比較になると思いますが苦笑)
 

RCJ 2016

RCJ2016のルールも発表されましたね!(まだファイナルバージョンではないらしいですが..)

とにかくリンク貼っときます

http://rcj.robocup.org/rescue.html


追記:

ルールをざっと読んでみました

まあ去年がすごいルール変更だったのでまあレスキューラインが去年よりも詳しくなったって感じです。

重要な変更点:

1坂の下をくぐる場合は高さが25cmなければいけない。

2障害物の高さは最低15cm

3交差点の説明が詳しくなった

4ドロップパック→チェックポイントマーカー

5ドロップタイル→チェックポイント

6チェックポイントの得点方法が大きく変わった

まあ競技者の視点からすると一番懸念すべきは交差点ですかね。去年はルールに書かれていた例しか大会には出なかったのですが今年からは例が増えたので

こんな感じです
image


以前関西オープンに出場したときにこういうやつが出題されて「こういうのはあり得ない」と言ってしまいました... すみません
これからは十分可能性としてあるので少ないタイル数で長いコースができそうですね!

もう一つの点はチェックポイントとチェックポイントマーカー(以下はマーカーで統一)の変更点です

まず、マーカーのサイズは固定出なく最大直径7cmになりました(これはあんま関係ないか笑)

重要なのは得点の計算方法です。
チェックポイント到達が
一回目なら通ったタイル×3点
二回目なら通ったタイル×2点
三回目なら通ったタイル×1点
それ以降なら0点

審判の側からするの一気に難易度が上がりました笑 タイルを数えないといけないので笑

競技者側からするとこれは「一気にスタート後にマーカーを置いて得点を稼ぐ作戦」が使えなくなりました笑

これをやられるとどのチームが本当に上手いのかわからない場合も出てきます。これを防ぐために多くのノードやブロック大会では様々なローカルルールは設定されていると思います。

最も合理的な得点方法はまんべんなくマーカーをフィールド上に置くことになりますね(^^)

以上2016年ルールの変更点の解説でした!



WRO2016

WRO2016のルールが発表されました!

とりあえず一通り目を通しました。まあまあ難しい部類に入るでしょう。

高校生に関してはとても面白いと思います。気が向いたらタスクをクリアできるような機構でも作ろうかと笑(高校生の難易度は難しいですが2014年のアレよりははるかに現実性があります)

そして山みたいな作成に時間がかかるようなものはないのでラッキー!

ちなみに初読したあとに毎年そのルールで世界一になるチームの速さはどのくらいか個人的に予想しているのですが、40秒くらいでしょうか?? ものによっては試してみると思っているよりはるかに難しかったり簡単だったりするのであまりあてにはなりませんが笑

全国の小中高生、 今年も日本一、世界一を目指して頑張ってください!

小学生:http://www.wro2016india.org/wp-content/uploads/2016/01/Elementary_Rules_Clean_Way_to_School_WRO2016_150116.pdf

中学生:http://www.wro2016india.org/wp-content/uploads/2016/01/Junior-High-Category-Waste-Sorting_Rules_150116.pdf

高校生:http://www.wro2016india.org/wp-content/uploads/2016/01/Senior-High-School_Recyling-Plant_game_150116.pdf

 

技術公開 part 3

現在2015年度のロボットのアルゴリズムなどについての記事を書いているのですが、なかなか終わりません... 笑 (学校も始まったので更新頻度は落ちるかと...)

それまでに、より具体的な質問に返答しようと思います。

〜坂を登る〜 

I. 重心

レスキューで多くのチームを悩ます重心の問題です。

何が問題かというと、坂をどうクリアするかです。特にレスキューラインになると坂がただの邪魔者になったうえ、坂が幾つもあるコースが考えられるのでちゃんとクリアできないと得点が大幅に下がってしまいますね...泣

じゃあ、どうすればいいの?

ベストなロボットは平べったくて重さが均等に広がっているロボットです。

逆に背の高くて高ところに重いものが乗っかっているロボットは坂を乗り越えにくいロボットです。

あきらかに右のロボットの方が安定感がありますね笑(直感的に)

重力の方向とか物理で解決する方法もありますが、(っていうかそれが正統的な方法だと思う)多くのチームは試し試しやっていくのが(僕も含めて)普通だと思います

そういうこともあって、この問題はそれぞれのロボットで違うような問題になってくるのであまり「答え」というのがありません... (なのであまりこの記事を書いている意味がない...)

ただ、共通のことがあるとすれば、

1. 重いものはロボットの一番下に置く
2. ロボットの片側に重いものを置かない

ですね。それぞれの場合で「平べったくて重さが均等に広がっているロボット」 を目指すことが重要です。特にレゴのロボットで見かけるのがEV3/NXTがロボットの高いところの位置されているロボット。

レゴの本体は大きいしモーターもいびつな形をしているし配置は難しいですが、そこはできるだけ考えましょう笑 あきらかにロボットの底部に何も入っていないのに本体がロボットの高いところに位置しているロボットをよく見かけます。

特にNXTやEV3は電池と一体化していこともあってその置き場所でロボットの重心が大きく変わります。

この辺の配置はよくよく考えてロボットを作りましょう。


II. 摩擦

(ここからは、レゴのみの話になります)
摩擦もまた、重心とかと同じく物理的に求められると思うのですが... 結局は試し試しやりますよね笑

僕の経験上、レゴのキャタピラを使うよりバルーンタイヤで四駆にする方がはるかに摩擦が大きく、坂は登りやすいです。なので、その面でいうとバルーンタイヤの四駆をお勧めします。

ただ、バルーンタイヤの四駆は構造的に「しっかり」していないとうまくいかないこともあって、難易度が上がります。その面キャタピラは結構簡単に作れるのでハード面では易しいです。
 
なのでこれもチームによります... 各チームで考えて何がベストか選んでください 


(なにかパッとした記事になりませんでした.... もう少し説明してほしいことがあれば指摘お願いします) 

技術公開 part 2

~ 2014年のライントレースシステム ~

 この記事では2014年まで使っていたライントレースシステムを紹介します。

これが当時に配置です。
13 PM

真ん中2つあるのがNXTのライトセンサーです(NXT1、NXT2と呼びます)。それを挟む形であるのがRCXのライトセンサーです(RCX1、RCX2と呼びます) 。NXTの下にあるのがライトセンサーアレーです(LSAと呼びます)。

では、一つ一つ役割を説明していきます。

NXTのライトセンサーはメインのライントレース用です。この二つの比例制御でメインのライントレースを行っています。比例制御をするためにはラインを1点で見るのではなく面で見る必要があるので、地上から1.2~1.5cm くらいの高さ(正確な値は忘れた)から読んでいます。
→比例制御に関しては過去に書いた記事を参照してください

NXTライトセンサーを使う理由ですが、やはり信用性と安定性です。

今説明しているのはブラジル世界大会の時のライントレースシステムですが、同大会の全国ではメインのライントレースにLSAを使っていて散々なことになりました。

RCXライトセンサーは小さいですが、 色々と遅かったり、もう販売してないこともあってメインに使うのは僕はあまり好まないので。NXTのやつは少し光の環境が違っても、バンプとかにのって高度が変わっても、安定的に使えるのがいいところですね〜


RCX1とRCX2 は直角/交差点のために使っています。NXTライトより手前にあるのは、ライントレースしているときにNXTライトよりも先に直角に反応するためにそうしてます。
どちらでも反応したらすぐにプログラムでそのモードに切り替えます。

(交差点は右優先と考えて...)
手順としては
どちらかが反応すれば前後に少し動いてスキャニング。
RCX1もRCX2も黒を読めばまっすぐいって、メインループに戻る
RCX2(右)が反応すれば、光センサーが反応するまで右に回転。ただし、この場合右優先なので、前方の黒線を読まないように、少し秒数で回転してから光センサーが反応するまでにしてます。
RCX1(左)が反応すれば、光センサーが反応するまで回転。

ただこれだけです。

こうすることで直角と交差点を同じプログラムで攻略できます!

あと残るはLSAです。これでギャップ検索をします。
LSAは8つのライトセンサーで構成されているので真ん中の2つを使ってギャップを検索します。
(ギャップ検索に関してはまた詳しく書きます)¥
 
プロフィール

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コード
    • ライブドアブログ