Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

New Rescue Simulation を動かしてみる・・・その4

2020-09-04 | RoboCup2020

前の記事はこちら New Rescue Simulation を動かしてみる・・・その3

 

どうにか、 Tutorial 1 のサンプルプログラムは動かせたのですが・・・その後が全く分からなくて、お手上げ状態です。

で・・・知恵袋のU君に質問して、もう、懇切丁寧にいろいろと教えてもらいました。

教えて貰ったけど・・・やっぱり、正直よくわからないところがあります・・・まず、やっぱりドキュメント(Wikiの Tutorial の記述)などが練られていないように思います。

じゃあ、どうするかというと、Discordという掲示板とかコミュニケーションツールのようなもの!? を使って、開発者に質問したりできるようです。過去の質問などのやりとりも、そこで読めるらしいので、最新の情報を得ることもできるそうです。(そうです、というのは、私はDiscordに入ったことが無いので・・・)

Discord. Ask questions, get rapid response and discuss with other participants Join: https://discord.com/invite/6FJxZxk

 

とりあえず、備忘録を兼ねて教えて貰った内容を列挙しておきます。

 

・ロボットに搭載しているセンサーは、何がいくつあるのか?
 →Tutorialに記載してある以外にもいくつかのセンサーを搭載している。Webotsのページで自分で確認するしかない。

・そのセンサーの使い方はどこかに書かれているの?
 →Tutorialに書かれている以外のものは、Webotsのページで自分で確認するかDiscordで質問すれば教えてもらえる。

・サンプルプログラムのcode2.pyが動作しないのですが?
 →Tutorial 2にcode2_webinar_updated.pyがあり、これは最新の Release 6 でも動作する。(私が、Wikiをちゃんと読んでいなかったのが良くなかった・・・反省)

・code2_webinar_updated.py は、確かにロボットは動いたけど、被災者の発見とかしません。
 →Python の外部ライブラリをインストールしていなかった。(これも、私が、Wikiの項目を読み飛ばしていた・・・反省)

※インストールの後に次の2つの外部ライブラリをインストールする必要があった。
コマンドプロンプトから以下を実行(インターネットを接続の状態で)
pip install numpy
pip install opencv

 →これで、code2_webinar_updated.pyが動作するようになる。

・ロボットのセンサーのキャリブレーションはどのように実施するのでしょうか?

 →DEF ROBOT0 E-puck-custam を右クリックしてShow Robot Window を選択すると、すべてのセンサーの一覧が表示される。センサーを指定すると、そのセンサーの値がグラフに表示される。(これをやる前に、プログラムを指定して、一旦動作させておく必要がある)

 

こんな感じでした。

 

私としては、欲しい説明は

・ロボットに装備されているセンサーの説明(何のセンサーがいくつついているのか?)

・それらセンサーの使い方(や取得される値や、センサーのサンプルプログラムなど)

・キャリブレーションのやりかた

 →ロボットを必要な場所に移動する(→これは、やり方が書いてありますね) そこでのセンサーの値

少なくとも、これらの情報が無いと、プログラムを組めないと思うのですが・・・

 

まだなんとなく・・・素人が手を出すのは難しい感じです。(あくまで、私の印象)

もう、すでに、おなか一杯で、これ以上続ける気力が・・・

 

続きの記事はこちら New Rescue Simulation を動かしてみる・・・その5

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

New Rescue Simulation を動かしてみる・・・その3

2020-08-31 | RoboCup2020

前の記事はこちら 再度・・・New Rescue Simulation を動かしてみる・・・続き

 

タイトルを考えるのが面倒なので・・・連番にしました。(笑)

とりあえず前回は Tutorial 1: Introduction to the platform and first steps のところで、サンプルプログラムを動かすところまで行きました。

 

あと書かれているのは・・・

Manually move the robot where you want it to go
When you click on a robot in the simulation window, red, blue, and green arrows will appear. You can move the robot to any position by grabbing this arrow with the mouse. You can also hold shift and move the robot around freely. Note that the robot will not be displayed until the program is started.

ロボットを手動で動かす方法・・・CoSpace みたいにラジコンっぽく動かすのではなく、X軸,Y軸,Z軸に沿って移動することができます。

やり方は・・・

①とりあえず、プログラムを指定して一旦実行します。(そうしないと、ロボットが表示されない)

②ロボットを停止する。(停止しなくてもよいけど・・・動いたままだとロボットをつかみにくい)

③ロボットをクリックする。(そうすると、赤、青、緑の軸と矢印が表示される)

④表示された3つの矢印を(マウスでつかんで)動かすと、ロボットをその方向に動かせる

⑤矢印の根本付近に回転軸(丸まった矢印)が表示されているので、これを動かすと軸に沿ってロボットを回転することができる。

 

 

で・・・基本的にZ軸の矢印(緑の矢印)、X軸,Y軸の回転軸(赤の丸まった矢印、青の丸まった矢印)は使うことは無いと思いますが・・・Webotsの仕様で消せないのだそうです。

さらに・・・③のロボットをクリックした状態でShiftキーを押しながらロボットをドラッグすると、マウス操作でロボットを移動することができます。(こちらの操作のほうが直感的でわかりやすい)

ただ、うまくロボットをドラッグできていないと、フィールド自体が動いてしまうので注意です。(笑)

 

さて、下のほうにロボットの機能が列挙されています。

Introducing Your Robot
In this challenge, the robot is fixed and as Epuc (this is actually a real world robot!) Your robot has a number of components:
Left and Right wheels : Can be controlled independently to set the speed
Distance Sensors : A number of distance sensors around the robot to detect walls/objects
Three Cameras : Three RGB camera on the front of the robot (left, right, centre cameras) to provide visual information
Temperature sensors : To detect the heated victims on the left and right
Bottom Camera : An RGB camera on the bottom of the robot to sense the ground colour

ロボットの紹介
この課題では、ロボットは固定されており、Epuc(これは実際には現実のロボットです!)として、ロボットにはいくつかのコンポーネントがあります。
左と右のホイール:速度を設定するために個別に制御できます
距離センサー:壁や物体を検出するためのロボット周辺のいくつかの距離センサー
3つのカメラ:視覚情報を提供するためにロボットの前面にある3つのRGBカメラ(左、右、中央のカメラ)
温度センサー:左右の熱くなった被災者を検出する
下部カメラ:地面の色を感知するロボットの下部にあるRGBカメラ

Google先生の助けを借りると、こんな感じです。

・左右独立したのホイール(当たり前ですね)
・ロボットの周りのいくつかの距離センサー(上の図のように8個だった)
・Visual Victim を識別するためのカメラだと思うのですが・・・3つも搭載してます。(なんという贅沢!)
・Heated victim を識別するための温度センサー(左右に1個ずつ)
・床の色を検知するカメラ(ここもカメラってことは、ロボットに全部で4台もカメラを搭載しているの!? なんという贅沢!)

で・・・もと Rescue Maze チームのメンターとしては・・・方位またはジャイロセンサーが欲しいです。ロボットがどの方向を向いているのかわからないとマッピングができません。同様に、ロボットが進んだ距離を知りたいです。左右のホイールの回転角(せめて回転数)が欲しいのですが・・・現状ではそれは無いようです。

これでは、いったいどうやれば、スタート地点に戻ることができるのでしょうか!?

 

このロボットは以下のページのロボットを利用(流用)していると思うのですが・・・

https://cyberbotics.com/doc/guide/epuck

元のロボットには、ジャイロセンサーと Position Sensor として、ホイールの回転数のセンサーが付いているのですが・・・わざわざ削除をしてしまったのでしょうか?

 

もとに戻って・・・その後に、簡単なタスク(壁をよけて進む)が示されて、ごく簡単なサンプルプログラムが掲載されています。

Exemplar Code
Below we step through the example code developed step by step, explaining what is going on. Try and build this up by yourself first, referring back to this if you need. The full uninterrupted program can be found here. This code was used for the seminar video, and also runs on the latest release.

で、このサンプルプログラムですが・・・動きません。(いや、動くのですが、きちんと動きません)

どうも release 3 の時代と、現在(release 6)では、何かが違うらしい・・・(センサーからの値の取り方なのかなぁ)

スタートすると、真っすぐ進んで、壁にぶつかって止まります。それからピクリとも動きません・・・

 

で・・・

https://github.com/Shadow149/RescueMaze/blob/master/docs/tutorials/code1.py

ここにあるPythonのプログラムと、前回のサンプルプログラムを見比べてみて・・・違うところを直してみました。

 

①    if leftSensors[i].getValue() > 80:
 → if leftSensors[i].getValue() < 0.05:

②    elif rightSensors[i].getValue() > 80:
 → elif rightSensors[i].getValue() < 0.05:

③    if frontSensors[0].getValue() > 80 and frontSensors[1].getValue() > 80:
 → if frontSensors[0].getValue() < 0.05 and frontSensors[1].getValue() < 0.05:

なぜ、不等号が逆なのかは謎ですが・・・この修正で、ロボットは(まがりなりにも)動くようになりました。

その下のほうに、プログラムの説明が(ある程度)書かれています。

それを読んでいって・・・なんとなく、>80 と <0.05 の謎が分かりました。

このシミュレーションのロボットは実在する「e-puck education robot」を模しているようです。

http://www.e-puck.org/

 

で、このロボットに搭載されている距離センサーは、(超音波センサーではなく)infra-red sensors(つまり赤外線距離センサー、いわゆるシャープセンサー)なので、計測した距離とセンサーの値が反比例のような関係になっています。

それがこのグラフ

 

おそらく、これが分かりにくいということで、 release 3 から release 6 の変革の中で、単純にセンサーの値は距離を返すように改良された、のだと思います。

すると・・・0.05 というのは 0.05m = 5cm ということなのではないかと・・・

 

なるほど・・・勝手に自分として納得!(笑)

 

で・・・自分として、もっと単純にしたのが以下のプログラムです。

from controller import Robot

timeStep = 32
max_velocity = 6.28

robot = Robot()

wheel_left = robot.getMotor("left wheel motor")
wheel_right = robot.getMotor("right wheel motor")

leftSensors = []
rightSensors = []
frontSensors = []

frontSensors.append(robot.getDistanceSensor("ps7"))
frontSensors[0].enable(timeStep)
frontSensors.append(robot.getDistanceSensor("ps0"))
frontSensors[1].enable(timeStep)

rightSensors.append(robot.getDistanceSensor("ps1"))
rightSensors[0].enable(timeStep)

leftSensors.append(robot.getDistanceSensor("ps6"))
leftSensors[0].enable(timeStep)

#        [left wheel speed, right wheel speed]
speeds = [max_velocity,max_velocity]

wheel_left.setPosition(float("inf"))
wheel_right.setPosition(float("inf"))

while robot.step(timeStep) != -1:

    #for both front sensors
    if frontSensors[0].getValue() < 0.07 and frontSensors[1].getValue() < 0.07:
        #spin
        speeds[0] = 0.6 * max_velocity
        speeds[1] = -0.6 * max_velocity

    #for sensors on the left
    elif leftSensors[0].getValue() < 0.05:
        #turn right
        speeds[0] = 0.6 * max_velocity
        speeds[1] = -0.2 * max_velocity

    #for sensors on the right
    elif rightSensors[0].getValue() < 0.05:
        #turn left
        speeds[0] = -0.2 * max_velocity
        speeds[1] = 0.6 * max_velocity

    else:
        #go stright
        speeds[0] = max_velocity
        speeds[1] = max_velocity

    wheel_left.setVelocity(speeds[0])
    wheel_right.setVelocity(speeds[1])

 

まだ、迷路探索ではなく、単純なランダム走行ですけど・・・(もちろん、被災者を発見できないし、黒タイルの穴に落ちます!)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

再度・・・New Rescue Simulation を動かしてみる・・・続き

2020-08-30 | RoboCup2020

前の記事はこちら 再度・・・New Rescue Simulation を動かしてみる・・・

 

前回のタイトル「・・・動かしてみる」なのに、動かしてないじゃないか・・・と自分で突っ込みを入れています。

今回は、ちゃんと動かしてみます。(といっても、サンプルプログラムです)

 

まず、基本はここ

Erebus Rescue Maze Simulator

このページの中ほどの

Tutorial 1: Introduction, installation and getting started with basic movement

をクリックしてリンク先に飛びます。

 

Tutorial 1: Introduction to the platform and first steps

この中に、また「Download and installation」が掲載されているのですが、すでに別項目でインストール済なので、ここにはいらないですよね。

さて、サンプルのコードは・・・

Example code demo の中の 

The complete sample code can be found either here

のリンク先にあります。

リンク先に飛ぶと・・・Pythonのソ-スが表示されるので、このソースが格納されたファイルをダウンロードすれば良いと思うのですが・・・やりかたが分かりません。(たんに GitHubの使い方を知らない)

最初に、よくわからずに、コピペでテキストファイルに貼り付けたけど、それでは動作しませんでした。

GitHubを多少知っているMに助けてもらって、ファイルを落としました。

 

Mが実施した操作は以下のとおり

RescueMaze のディレクトリに戻る

② code ボタンの Download ZIP で、すべてのファイルを含んだZIPファイルをダウンロ-ド

③ ダウンロードしたZIPファイルを展開して、player_controllers の中にある ExamplePlayerController_updated.py を取り出す

これが正解かわかりませんが・・・今回は、こんな面倒臭いことをして入手しました。

 

では、このサンプルプログラムを動かしてみます。

SampleWorld.wbt

をダブルクリックしてフィールドを表示します。

画面左の LOAD CONTROLLER をクリックして、(先ほど取り出した)ExamplePlayerController_updated.py を指定します。

そうしたら、画面左の 「▷」ボタンをクリックします。

フィールドの手前のほうに、ロボット(と緑色のスタートタイル)が表示されて、ロボットが動き出します。

ロボットが動き出すと、緑色のスタートタイルの表示は消えます。(これは、緑色のタイルを残すと、簡単にスタートタイルに戻ったことの判断ができてしまうからだそうです。)

で、真っすぐ進んで、正面にある暖かい被災者を発見して得点を得ます。そうすると、被災者が消えます。救助したのだから被災者が消えるのはある意味正しいのですが・・・実機のMazeに慣れた身には、なんか違和感が・・・(笑)

 

なんとなく、ロボットの動きを見てると・・・

①壁にぶつかるまで直進
②前に壁があるときは右回転

というアルゴリズムのように思います。

(これ、Rescue-B のどこぞのチームがやっていたアルゴリズムに似てます・・・笑)

 

私のPCの環境だと、同じところをグルグル回るだけになってしまいます。

灰色のタイルはチェックポイントなので、到達すれば得点になるのですが、そこまで行きません。

黒色のタイル(落とし穴)に落ちると、LOPになるのですが・・・やっぱり、そこまで行きません。(笑)

 

とりあえず、サンプルプログラムが動いたということで、今回は終わりなのですが・・・

画面に「RELOCATE」ボタンがあります。これは、Lack of Progress(競技信仰停止)になったときに押すボタンだと思うのですが、何で名称が「LOP」ではないのでしょうか?

おそらく、このプラットフォームが CoSpace Rescue の流れでできているので、CsBot にあった ReLocate をそのまま使ったのかな!? と考えています。ルールにも「RELOCATE」 という単語は出てこないので、違和感です。

 

続きの記事はこちら New Rescue Simulation を動かしてみる・・・その3

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

再度・・・New Rescue Simulation を動かしてみる・・・

2020-08-29 | RoboCup2020

私のPCを初期化(Windowsのクリーンインストール)してしまったので、いろいろと消えてしまいました。

改めて、New Rescue Simulation を動かしてみたいと思います。

(なんか、日々、開発が進んでいるらしいので・・・)

 

まず、ベースになるページはこちら

Erebus Rescue Maze Simulator

 

まずは、このページの中ほどにある「Tutorials and Getting Started」の「Download and installing:」に飛びます。

 

Download and installing:

 

早速ですが・・・Software Requirementsに必要なソフトが書かれています。

1. Webots Robot Simulator - the simulation environment
2. *Python Version 3.7 - to write controllers for the robots
3. Competition Controller - Custom controller to implement the rules and scoring.

まず、最初の疑問・・・なぜ Webots Robot Simulator と Competition Controller だけ斜め(斜体)なのでしょうか?

 

 

次に・・・横に並んだイラスト(ハードコピー)が左から Webots、Competition Controller、Python の順です。その下の説明は Webots、Python、Competition Controllerです。さらにその下の Full installation では、Python、Wobots の順で書かれていて・・・みごとにバラバラです。

日本人的には、こういうところの順番をそろえてもらうと、スッキリするのですが・・・

 

一通り文句を言ったところで、実際にインストールしてみます。

Full installation の順番に従って作業をしていきます。

 

 

1. Install python 3.7 (please make sure it is version 3.7 for windows, and 3.8 if installing on macOS or linux) 64 bit from the official website. Check out this great installation guide if you need some help! During the install option, please make your python installation is referenced in your PATH (see picture below!)

最初は Python のインストールですが、(最新版の3.8ではなく)3.7をインストールします。(Macは3.8だけど、Windowsは何故か3.7)

で、またまた突っ込みたくなったのが、上のインストール画面のハードコピーです。64ビット版をインストールしなさい、と説明しているのに、ハードコピーには「32bit」を表示されています。これ、どちらかが間違いですよね。

で・・・Pythonのofficial websiteに飛んで、Winodws 用の 64bit 版 Python 3.7 を落とします。

最初、これの中のどれを落とせばいいの? と分からなかったのですが・・・いちおう「Windows x86-64 executable installer」にしてみました。

 

落ちてきた「python-3.7.9-amd64.exe」を実行します。

一番下の「Add Python 3.7 to PATH」にチェックを入れてインストールします。

 

2. Install the Webots version (r2020a rev1) from their official website. Currently r2020a rev1 is stable with our releases. Once we have tested our platform on newer versions on Webots, this page will be updated. More information on the official Webots Installation guide.

さて、次は Webots です。これも、最新版ではなく r2020a rev1 版をインストールします。こちらはちゃんと、official website のリンクをクリックすると、r2020a rev1 版のページに飛ぶので迷いません。(感謝!)

(このWebotsのインストーラは1.6GBもある大きなファイルなので、時間帯によってはダウンロードに1時間以上掛かることがあるそうです。)

落ちてきた、「webots-R2020a-rev1_setup.exe」を実行してインストールします。

 

3. Download and extract the latest Erebus Release Build.

さて、いよいよ最後は、New Rescue Simulation のプラットフォームのダウンロードです。

Release Build のリンクに飛んで、最新版のファイルを落とします。

私が落としたのは RescueMaze_Release_6.zip です。

ダウンロードした zip ファイルを解凍します。

 

4. Run the world.wbt file from \game\worlds\sampleworld.wbt, opening it in Webots.

さて、いよいよプラットフォームを動かしてみます。

項番3.で解凍したディレクトリの中・・・

RescueMaze_Release_6\game\worlds\SampleWorld.wbt

をダブルクリックします。

 

Webots が起動して・・・

こんな画面になります。

(その前に、Webotsから、もっと性能の良いGPUを搭載してないとダメ! と怒られますが・・・笑)

 

とりあえず、ここまでで、長かったので、今回は終わりにします。

 

最後に、もう一つ文句・・・

System Requirements
OS-Windows: Win 10, 8.1, 7 64 bit

と書かれているのですが・・・もう、サポートの終わった Windows 7 を掲載するのはセキュリティの観点でどうか・・・と思います。(笑)

 

続きの記事はこちら 再度・・・New Rescue Simulation を動かしてみる・・・続き

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

2020年度 (一社)ロボカップジュニア・ジャパン ブロック長意見交換会

2020-08-26 | RoboCup2020

おとといの記事(8月24日)で理事会の議事録を紹介しましたが・・・今回はそのあとに開催された「ブロック長意見交換会」の議事録についてです。

 

https://www.robocupjunior.jp/office.html

2020年度 (一社)ロボカップジュニア・ジャパン ブロック長意見交換会

 

会議といっても、やはり ZoomによるWEB会議だったようです。(まあ、そうですよね)

基本的には、理事会と同じような議題が並んでます。

 

まず、各競技の参加人数の推移が報告されたようですが・・・これについては意見などはなにも書かれていません。

次に、各ノードやブロックへのチームの参加エントリーを(ジャパンオープンで使用している)エントリーフォームを使って共通的に実施することについては、いろいろな意見が出てます。

なるほど・・・と思ったのは「統一的に使うのであれば、エントリーの開始日と終了日を全国統一にすべき」という意見です。確かにそうですね。ブロックごとに、エントリー期間がばらばらだと、入力するほうも混乱すると思います。(あるブロックは締め切りが過ぎているのに、入力ができてしまう・・・とか)

それから、「(エントリーした)情報はどこで管理し、ノードやブロックは、どうやって活用するのか?」に対して・・・「具体的な手順は決まっていない(考えていない)」というのが、笑えました・・・

 

さらに笑ったが、以下の記述・・・

統一フォームにすることに対し、前回反対意見がブロック長会議で挙がったと思うが、その後どういう検討をしたのかとの質問がなされた。その件について、・・専務理事より、特にその後検討したわけではないと回答があり・・

前回の意見が、何も検討されていない・・・

 

そのあと、出場資格証明や、電池のルール、ビデオ審査などが報告されたが、特に意見はなかったようです。

2020年のロボカップの世界大会やRCAPの延期の報告のあと、

資料4に基づき、RoboCup2020関連のオンラインイベントについて説明がなされた。

とあっさり書かれているのですが、ジュニアジャパンとしては、これらには全く興味が無いのでしょうか?

普通なら、チームに参加を促してください、とか、紹介してください、とか、あると思うのですが・・・

 

実際、ジュニア・ジャパンとしては、日本のチームを参加させたいのでしょうか? それとも参加させたく無いのでしょうか?

 

その後は、各ブロックの活動の状況(ノード大会やブロック大会の見通しなど)の報告などが続いています。

 

あとは・・・

ジャパンオープンは中止されたが、世界大会が実施される場合の選抜方法を決める必要があり、選抜メンバー内でビデオ審査を実施する等、RCJJとして出来る範囲での選抜方法を理事会で検討するとの説明がなされた。

これの意味が分からないのですが・・・今年(2020年)の話ではなくて、将来の想定の話なのでしょうね。

ジャパンオープンが開催されなかったが、世界大会が開催される場合に、世界大会への参加チームをどうやって選定するか? ということなのでしょうか?

普通に考えたら、世界大会には参加しない(推薦しない)だと思うのですが・・・

日本の代表チームを決定するのに、大会(競技会)を開催せずに、みんなが納得する方法って、あるのでしょうか?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

2020年度 (一社)ロボカップジュニア・ジャパン 第3回理事会議事録

2020-08-24 | RoboCup2020

ロボカップ ジュニア・ジャパンのHPにタイトルにあるように、理事会の議事録が掲載されていました。

https://www.robocupjunior.jp/office.html

一般社団法人ロボカップジュニア・ジャパン 2020年度第3回理事会議事録 

 

早速、内容を確認してみます。

今回は Zoom によるWeb会議ですね。

コロナ禍の中では仕方がないし・・・交通費や時間を考えたら、今後もこれで良いのではないでしょうか!?

ちなみに、この理事会が午前にあって、午後にはブロック長会議があったようです。

 

内容ですが・・・相変わらず、議事録だけで、提示資料が無いので討議内容はよくわかりません。

最初に、ロボカップジュニアの競技会への参加人数(チーム数?)の報告があったようです。

WLではサッカーープシミ ュレーションOnStageに減少傾向が見られる

シミュレーションというのは、おそらく Rescue Simulation のことだと思います・・・が・・・そもそも、情報(参加チーム数)を提出していないブロックがあり、正しく分析するためのデータが揃っていなかったようです。

文章の後のほうに、

上位リ ーグであるMAZEの減少は顕著で

と書かれていて、減少ではなく、そもそも Rescue Maze への参加チームは少ない、ということでしょう。

元、Rescue Maze チームのメンターとして、なんか残念です。

でも、Rescue Line と Maze は上位下位ではなくて、それぞれやることが違うので別の競技と考えたほうが良いと思うのですが・・・

 

で、次に大きな話として、これまでは、ノード大会、ブロック大会のエントリーをそれぞれのノードやブロックでやっていたのを、ジュニア・ジャパンが一括してエントリーをまとめる。(≒全国のノ-ド大会/ブロック大会のエントリーをジュニア・ジャパンのシステムで一括して行う)という構想があるようです。

できるのかなぁ・・・!? (できるのであれば、やったほうが良いと思いますが・・・)

これは、ブロック長会議でブロック長の意見を聞いてみることになりました。

 

2020年は世界大会が無くなりましたが、2021年のボルドー世界大会でも渡航制限などがあった場合に、推薦をどうするのか・・・については・・・(いつもの通り)外務省の渡航情報に従うようです。

(これまでは、確か「レベル1」以上だと推薦しない・・・だったような)

 

あとは・・・2021年のジャパンオープンは予定どおり 2021年3月26日~28日で開催予定のようです。

ただ、ノード大会やブロック大会ができなかった場合に、ブロック長に推薦してもらう・・・らしい。

ノード大会もブロック大会もできないなら、ジャパンオープンに参加しない・・・というのが普通だと

思うのですが。

 

じゃあ、次・・・

国内では実機とシミュレーションが別になっているので今後一体化する方向で検 討していきたい

これだけ読むと何のことだかわかりませんが・・・ジュニアのRescueリ-グの中で、技術委員会が2つに分かれているので、今後は Maze/Line/Simulation を合わせてレスキューの技術委員会を一つにまとめませんか・・・ということでしょう。

 

それから・・・

2021年の世界大会では、(2020年の世界大会の中止の余波で)2020年に世界大会に参加することが決まっていた選手に限って、ジュニアの年齢制限を超えていても、2021年の世界大会に参加することが認められています。(つまり、2021年の世界大会には19歳を超えて20歳の選手がジュニアの競技に参加する可能性がある)

ただ、日本では、ジャパンオープンが開催されず、2020年の世界大会への参加チームを決定しなかったため、この緩和措置は関係ありません。

しかし、2021年のジャパンオープンには、(2020年のジャパンオープンを開催しなかった関係で)20歳の選手も参加可能になっています。(広報済)

これにより、2021年に20歳の選手は、ノード大会、ブロック大会、ジャパンオープンには参加できるが、世界大会には参加できない・・・ということになりました。

 

最後に

ジャパンオープンが開催されなかった場合の世界大会への選抜方法について質問がなされた。
ブロックから各1チーム推薦してもらい、その中から世界大会への選抜をしてはどうか 

ジャパンオープンが開催されなかったら・・・世界大会への推薦無し・・・でしょう・・・

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rescue Simulation AIプログラミング

2020-08-17 | RoboCup2020

前の記事はこちら いまさら Rescue Simulation を動かしてみる 続き

 

まあ、もう、あまり役に立たないでしょうけど・・・Rescue Simulation の AIプログラミングを自分の備忘録として記載しておきます。

大昔の(2010年の頃)AIは、全くのランダム走行や、壁に沿って一周するプログラムが普通でした。

しかし、時代が進み、現在の Rescue Simulation では、作戦を立てて、きちんとその位置に向かうようなプログラムを作り必要があります。

①オブジェクトを収集したら、オブジェクトコレクションボックスに入れる。

②スーパーオブジェクトやスーパープラスオブジェクトが発生したら、収集する。

③その他、オブジェクトが撒かれている特定の領域に向かう・・・

こんな感じです。

で、特定の場所に向かうのは 自分(ロボット)の座標が分かる WORLD_2 でのプログラミングになります。

自分(ロボット)の座標は PositionX、PositionY の変数で取得することができます。

また、自分が向いている方向も Compass という変数で取得できます。

 

では、向かうべき座標を(Xt,Yt)として、そこに向かうプログラムのサンプルです。

 

dX=Xt-PositionX;
dY=Yt-PositionY;

if((dX>0)&&(dY>0))
  if(dX>dY)
    T=300;
  else 
    T=330;
else if((dX<0)&&(dY>0))
  if(-dX>dY)
    T=60;
  else 
    T=30;
else if((dX<0)&&(dY<0))
  if(-dX>-dY)
    T=120;
  else 
    T=150;
else
  if(dX>-dY)
    T=240;
  else 
    T=210;

T=(T-Compass+540)%360;
if(PositionX==0)
  {WheelLeft=3;WheelRight=3;}
else if(T<30)
  {WheelLeft=-3;WheelRight=3;}
else if(T<=90)
  {WheelLeft=3;WheelRight=-1;}
else if(T<=160)
  {WheelLeft=3;WheelRight=1;}
else if(T<200)
  {WheelLeft=3;WheelRight=3;}
else if(T<270)
  {WheelLeft=1;WheelRight=3;}
else if(T<300)
  {WheelLeft=-1;WheelRight=3;}
else 
  {WheelLeft=-3;WheelRight=3;}

 

面倒なのは、ロボットが信号ブロック領域に入ると、自分の座標(PositionX、PositionY)が(0,0)になってしまうことです。

(この信号ブロック領域がどこに発生するか分からないところが、難しい・・・!)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Simulation Demonstration Competition Deadline Updates

2020-08-16 | RoboCup2020

なんか・・・新Rescue Simulation の競技会の日程が変わったとか・・・で、フォーラムを見てみました。

おそらく、関係する記事はこれかと

Simulation Demonstration Competition Deadline Updates

 

ということで、何が変わったかというと・・・

Following requests from a number teams, we have decide to move the competition date and other deadlines by a week.

多くのチームからの要請に応じて、競技会の日程とその他の期限を1週間遅らせることにしました。

 

・Deadline for submission of the participation sign up form: September 18th 2020, 23:59:59 UTC
・Deadline for submission of the code, short team intro video, software version document: September 25th 2020, 23:59:59 UTC
・Competition live stream: October 4th 12:00:00 UT

・参加申し込みフォームの提出期限:2020年9月18日23:59:59 UTC
・コードの提出期限、短いチーム紹介ビデオ、ソフトウェアバージョンのドキュメント:2020年9月25日23:59:59 UTC
・競技会のライブストリーム:10月4日12:00:00 UTC

UTCは協定世界時で、JST(日本の時刻)はUTCより9時間早いです。

だから

2020年9月18日23:59:59 UTC

2020年09月19日 08:59:59 JST

となります。(日付が違うので、注意!)

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Virtual RoboCup Asia-Pacific 2020のご案内

2020-08-13 | RoboCup2020

RCJJ(RoboCupJunior JAPAN)の関東ブロックのHPに

【ブロック長】Virtual RoboCup Asia-Pacific 2020のご案内

という記事が掲載されていました。

 

まあ、普通に読むと・・・ジュニア・ジャパンから 今年のRCAP(RoboCup Asia-Pacific)についての案内が来たので、掲載しました・・・

(でも、ジュニア・ジャパンのHPにも、RCJJの各委員会のブログにも掲載されていません。)

まじめに、広報しているのは、関東ブロックだけですね。(笑)

 

で・・リンク先は

https://2020.robocupap.org/

 

さすがに、今年は RCAP も、バーチャル競技だけの開催のようです。

Junior の競技も、たくさん列挙されていますが・・・そのほとんどに

In Virtual RCAP 2020, there will not be actual onsite competition.

と書かれていて、実際には開催されないようです。

 

じゃあ、(Junior の競技の中で)開催されるのは何かというと・・・

①RCJ RESCUE SIMULATION
②RCAP COSPACE GRAND PRIX
③RCAP COSPACE RESCUE

です。

①と③の違いが良くわかりませんが・・・①は年齢制限が RCJ の General rules に則っているもので、③はもっと広い範囲の年齢宣言になっているもの・・・と想像します。

①だけが RoboCup Junior の正式競技で、②と③は RCAP 特有の競技になりますね。

①~③にも、

In Virtual RCAP 2020, only virtual robot will be used.

という説明が書かれていて、あくまでもバーチャルロボットの競技だけであり、実機ロボットの競技はやらないよ、とのことです。

 

で・・・ジュニア・ジャパンから案内があった、という話に戻りますが・・・とくに参加条件などはなく、参加したいチームは(ジュニア・ジャパンを通さずに)勝手に申請して、勝手に参加してください・・・ということのようです。(そこがはっきりしない・・・)

まあ、RCAP は、国際的なオープン大会ですから。

 

ところで、この RCAP 2020 のことは記事になっていませんが・・・ New Rescue Simulation の記事 RCJJ 国際委員会のブログに掲載されていました。

(最初は、「おぅ、たまには、ちゃんと広報しているじゃん・・・」と思ったのですが・・・)

 

RoboCupJunior 2020 Rescue Virtual Simulation Competitionの案内

 

いまさらながら・・・読んでみると、いろいろな疑問がわいてきます・・・

RoboCupJunior Rescueリーグでは,新しいシミュレータの開発にともない,オンラインでのシミュレーション競技やワークショップが開催されています。以下から詳細を確認できます。

この記事が掲載されたのは、7月23日です。 New Rescue Simulation 競技のワークショップが開催されたのは6月後半です。だから、「開催されています」・・・は間違いですよね。(ウソはいけません。笑)

というか、その6月のワークショップの前に掲載しないと意味がないのでは・・・

 

また,すでに実機に取り組んできたみなさんも,よりよいものづくりのために研究者やプロのエンジニアもシミュレータを活用することが当たり前になってきていますし,人命救助のように失敗が許されないミッションでは様々なケースでシミュレーションを重ねて順位,開発をします。このようなシミュレーション技術についても勉強,研究をしてみてはいかがでしょうか。

この文章ですが・・・読んでみると違和感が・・・

「実機に取り組んだみなさん」というのは「レスキューのロボットを作ってLineやMazeに参加したことがある人」のことですよね。で、この文の「すでに実機に取り組んできたみなさん」が主語だと思うのですが・・・述語がどこでしょうか? その文のなかには見当たりません。

おそらく、次のセンテンスの「勉強、研究してはいかがでしょうか」が述語にあたるのではないかと、想像しています。

(「順位、開発」は「順次、開発」の誤字・・・!?)

 

同じ、New Rescue Simulation 競技の案内の記事なのに、ジュニア・ジャパンと関東ブロックで掲載記事の内容があまりにも違っていたので、違和感が・・・

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RoboCupJunior Rescue からの News Letter が来ました

2020-08-09 | RoboCup2020

前の記事はこちら 早速 改善!

 

先日、RoboCupJunior Rescue の News Letter(Mailing List) の登録をしたら・・・ちゃんと、News Letter が届きました。

Yahoo メールでは、(なぜか)迷惑メールフォルダに入っていました。

(内容を確認して、Yahooには「迷惑メールではない」の報告をしておきました。)

 

今回、届いたのは

The participation sign up form is now released!!

というタイトルで、New Simulation Demonstration Competition(新Rescue Simulation のデモ競技会)の参加申請がはじまったよ・・・というものです。

 

 

今年は、いろいろな競技会が中止(延期)になってしまったので、こういうのに積極的に参加してほしいな、と思います。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「RoboCup JapanOpen2020」開催決定のお知らせ

2020-08-08 | RoboCup2020

ロボカップ日本委員会のページにタイトルにあるように

「RoboCup JapanOpen2020」開催決定のお知らせ

という記事が掲載されていました。

 

RoboCupJunior のジャパンオープン(2020年和歌山)はコロナ禍で中止になってしまいました・・・

大人のロボカップも、2020年3月の「2020あいち」は中止になりました・・・が、ジャパンオープンが復活開催するようです。(日本大会ではなく、ジャパンオープンということは、海外からのチームも参加OKなのでしょうか!?)

 

記事をコピペすると・・・

 

開催が延期されておりましたジャパンオープンですが,オンラインで実施可能な競技を中心に「RoboCup JapanOpen2020」として次のように開催することとなりました.
日時:2020年10月30日(金)〜11月1日(日)※準備日を10月29日(木)とする
場所:オンライン(決定し次第,連絡します)
開催予定リーグ:サッカーシミュレーションリーグ・2Dシミュレーション競技,レスキューシミュレーションリーグ・エージェント競技,@ホームシミュレーションリーグ,@ホームリーグ・ドメスティック標準プラットフォームシミュレーション競技(予定)

ということで、やっぱりオンラインで開催できる競技(基本的にはシミュレーション競技)のみの開催のようです。

まあ、そうでしょう・・・ね!

 

ジュニアも Rescue Simulation はオンライン開催ができると思うのですが・・・

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

NESTロボコン

2020-08-05 | RoboCup2020

毎年、夏休みの最後の日曜日は「WANWANの日」

M&Y家族の間では「WANWANの日」ですが、世間一般には「NESTロボコンの日」ですね。(笑)

今年は、コロナ禍の中でロボット関係のイベントが軒並み中止になるので、どうなるかと心配していたのですが・・・

 

やるみたいです。

https://www.npo-nest.org/workshop/robocon/robocon2.html

 

今年は、夏休みの最後の日曜日・・・ではなくて、以下の日程が掲載されていました。

2020年9月20日(日)Kokohore! WanWan競技実施
2020年9月21日(月祝)サッカー競技実施
2020年9月22日(火祝)レスキュー競技実施

で・・・面白いのは・・・オンライン形式競技ということで


ハード(ロボット)は固定で、プログラムによって競います。参加者は期限までに製作したプログラムを大会側に提出し、競技当日は、大会側が用意したロボットにプログラムをダウンロードして実施します。
参加者は当日会場に来る必要はありません。

ロボットは統一されたもので、プログラムだけの勝負! 

チームは作成したプログラムを運営者に送付するだけで、競技会場に来る必要が無い!

これ、スタンダードプラットフォームの競技ってことですよね。

素晴らしいアイディアだと思います。

ただ、さすがにこのオンライン競技は初心者向けの競技(WanWanとサッカーNL、レスキューNL)だけのようです。

 

(共通の)ロボットの組み立て方の説明も掲載されているし、大会当日はネットでのライブ中継もするようだし(参加者以外もみられるのかな)今後のロボカップ参加者にとって大変参考になるのではないかと思います。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

早速 改善!

2020-08-03 | RoboCup2020

昨日の記事 登録すれば RoboCupJunior Rescue Newsletter が届くらしい・・・ で、メーリングリストの登録場所が分からない(辿れない)と書いたからか・・・

早速、改善してくださったようです。

 

https://rescue.rcj.cloud/index.html

上に並んでるメニューの一番右側に「NEWSLETTER」というボタンが追加されました。

 

ここをクリックすると、ニュースレター配信のメーリングリストの登録画面になります。

ここなら分かりやすいですね。

 

続きの記事はこちら RoboCupJunior Rescue からの News Letter が来ました

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いまさら Rescue Simulation を動かしてみる 続き

2020-08-01 | RoboCup2020

前の記事はこちら いまさら Rescue Simulation を動かしてみる

 

久々の CoSpace Rescue のプログラミングです。

作戦としては・・・WORLD_1は普通にランダム走行で、オブジェクトが4個以下の時には収集箱に入っても格納(Deposit)をしない。という感じです。

 

で・・・問題なのがWORLD_2です。

中央に城壁に囲まれた部屋があり、その中にしか収集箱がありません。外周を巡ればオブジェクトは拾えますが、そのオブジェクトを収集箱に届けるためには、きちんとしたルート(城壁の出入口を通って)城壁の中に入らなければなりません。また、収集箱にオブジェクトを格納(Deposit)した後には、また城壁の外に出なければなりません。しかも、城壁の中は沼地(Swanp)だらけです。

しかも・・・一番重要な城壁の出入口付近に信号ブロック領域が設定されたり、ランダムに動く障害物が出入口をふさいだりして・・・

これ・・・フィールドのサンプルとして難易度高すぎじゃないですか!? (笑)

 

で・・・作戦として考えたのは・・・

①普段は外周を大きく右回りで回って、オブジェクトを集める。
②オブジェクトを5個以上拾ったら収集箱に向かう。
 ②-1 収取箱に向かうためには城壁の出入口を通る必要があるので、まずは城壁の出入口の座標を目指す
 ②-2 城壁に入れたら、下の収集箱の座標を目指す
 ②-3 オブジェクトを収取箱に格納したら、再び城壁の出入口の座標を目指す
 ②-4城壁の外に出たら、①に戻る
③SuperObject(Super Plus含む)が発生したら、優先的に拾いに行く

考えるのは簡単ですが・・・プログラムを作るのは・・・大変でした。(まあ、歳だし!・・・笑)

 

でも、まあ、なんとか、まあまあのプログラムができました。

が・・・やっぱり、いやらしいのは信号ブロック領域とランダムに動く障害物ですね。(これを単に「運が良い、運が悪い」と言ってよいのか!?)

 

 

一通り動かしてみると・・・大体1600点位でした。

(上のハードコピーでは、チーム名が入っていないので失格・・・とか言わないでください 笑)

 

いまさらながら、新たに分かったこと・・・

・ロボットが沼地に入ると、「ゾワゾワ」って音がする。

・ロボットが信号ブロック領域に入ると、「ミュイーン」という音がする。

・ロボットがトラップに入ると「ダン!」という音がする。

・終了間際に、カウントダウンの効果音が入ります。(結構盛り上がる!)

その他にも、いろいろと、音が鳴って・・・楽しいです。

 

それから

・昔は、カラーセンサーの値は、日陰(ひかげ)と日向(ひなた)で違っていたのですが・・・今回確認すると、そういうのは無くなったみたい。(ということで、昔よりも簡単になった!?)

 

続きの記事はこちら Rescue Simulation AIプログラミング

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いまさら Rescue Simulation を動かしてみる

2020-07-27 | RoboCup2020

前の記事はこちら いまさら Rescue Simulation を入れてみる・・・

 

さて、インストールができたので、Rescue Simulatuon を動かしてみたいと思います。

と・・・その前にサンプルのフィールドを見てみます。

 

まずは WORLD_1 です。

 

一見簡単そうに見えますが・・・2つある収集箱(オレンジの領域)が、壁際にありません。収取箱に向かわせる・・・というプログラムをどう作るかが難しそうです。 それから、上と下にある細長い障害物の位置が、いやらしい・・・外壁との隙間が微妙にロボットが通れそうです。(ロボットがはまりそう)

それ以外は、特にどうと言う事は無いレイアウトです。

 

さて、WORLD_2 は・・・

これは、なかなか難易度が高さそうです。

取集箱が四角い壁に囲まれています。まるで城壁のようです。(以下、城壁の中、城壁の外と表記)

収集箱に入るためには、囲まれた壁の切れ目を見つけて城壁の中に入らなければなりません。そして、収集箱にオブジェクトを格納した後には、再び城壁の外に出なければなりません。(これは、ランダム走行では困難でしょう。)しかも、城壁の中は沼地が多く、出るにも入るにも時間がかかりそうです。

 

さらに・・・私の知らなかった新しいルールとして

定期的に、現れたり消えたりする壁(下の2枚の写真でわかりますか?)

 

 

 

それから、ランダムに動き回る障害物

左上の丸いのがそうです・・・

 

今回は、このランダムに動く障害物が、城壁の出入口に陣取ってしまい、ロボットの行く手を邪魔する場面に何度も遭遇しました。(これはストレスが溜まります!!)

 

さらに・・・信号ブロック領域が設定されるのですが・・・「プログラムでオブジェクトを5個拾ったら、城壁の中の収集箱を目指す」というプログラムを作るために、最初に城壁の出入口の座標を目指すのですが・・・たまたま、そのあたりに信号ブロック領域が設定されてしまうと、どうにもならなくなります。

確実に部屋の中に入るには、LINK方式で壁に沿って進むしかないのでしょうか・・・

 

ということで、次は、デモ的にロボットを動かすプログラムに挑戦です。

 

続きの記事はこちら いまさら Rescue Simulation を動かしてみる 続き

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする