技術公開 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

 
livedoor プロフィール
アクセスカウンター

    最新コメント
    記事検索
    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コード
    • ライブドアブログ