Re: The history of "M&Y"

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

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

2020-11-06 | RoboCup2020

いつのまにか・・・第4回の理事会の議事録がアップされていました。

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

早速、読んでみます。

 

最初は来年のジャパンオープン(2021名古屋大会)についてですが・・・特に目新しい情報はありません。

年齢や参加条件の話で、すでに広報されている内容です。

会場のレイアウトプランが検討されたようですが・・・どんなレイアウトなのかわからないので、何とも言いようがありません。議事録に書かれている文章を読むと・・・観客席が無いので、(競技を見る人達で)通路がふさがりそうです。(あと、無観客大会にするという案もあるようですね)

それから、参加チームのプレゼンポスターは、会場には掲示されずにWEBで公開され、プレゼンの評価もオンラインで実施するようになりそうです。

 

ノード大会、ブロック大会が開催されずに、日本大会が開催された場合の(ブロックからのチームの)推薦方法について議論されたようですが・・・結局、ブロックに一任することになりました。

ブロックに一任するがRCJJからは方向性を示す

 

まあ、これは良いのですが・・・次に、世界大会を開催するが、日本大会(ジャパンオープン)が開催できなかった場合に、世界大会へ推薦するチームの選抜をどうするかについても議論されたようです。どうも、各リーグ毎に技術委員会で選抜することになりそうです。(私は、そういうやり方では禍根を残すことになると思うし・・・日本大会をやらないのなら世界大会に推薦しないのが良いと思うのですがねぇ)

まあ、私は、今の状況からして・・・来年の夏にフランスで世界大会ができるとは思っていないので・・・(笑)

 

それから・・・日本ロボット学会と人工知能学会の後援を 依頼し、学会賞を設置するという話題が満場一致で承認されたとあります。学会賞の設置は良いのですが・・・その審査プロセスや評価について、誰もが納得するような仕組みにして欲しいです。かつて(今でもあるのかなぁ)ジュニアレスキューにはIRS賞、機械学会賞があり、M&YもIRS賞に選ばれたことがあるのですが・・・審査プロセスが不透明であり、せっかく頂いた賞ですが、すっきりしませんでした。(どうして選ばれたのかが、よくわからない・・・) まあ、せっかくの賞なので・・・これも、後々、遺恨を残さないように運用して欲しいものです。

 

最後に、RCAP2021(RoboCup Asia-Pacific)について、ちょこっと書かれていました。

ジャオープンのWL上位チームをRCAP2021へ推薦し下限が13歳になったことからNLの上位チームもフリーエントリーへの参加をバックアップするこNLの普及に のではとの意見がなされた

意味が良く分からないのですが・・・「ジャパンオープンのWLで上位チームをRCAP2021へ推薦する」ということは、これまでのように勝手に参加申請ができないの? でも、「NLの上位チームもフリーエントリーへの参加をバックアップする」と書かれている、フリーエントリーというのは、勝手に参加申請することなんじゃないの? う~ん!?

まあ、この項目は議論というよりも、意見交換みたいな感じなので、結論は書かれていません。

 

最後に、理事の改選のことが書かれています。

メール審議を行い次回理事会で候補者の選定を行うこととなった

この理事の選定のプロセスが良く分かりません。

前回、この理事選定のプロセスを確かめるために、わざわざ正会員になったのですが・・・前回は新理事は旧理事が決めて、正会員はそれで良いかどうか「是非」を出すだけでした。

ということで、正会員の費用が無駄だと思って正会員をやめました・・・これ、組織としてどうなんですかねぇ。

 

今回は、以上です。

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

RoboCup JapanOpen2020 やってるよ!

2020-10-31 | RoboCup2020

RoboCup JapanOpen2020 

オンラインでやってます。

サッカーシミュレーションリーグ・2D

昔のゲームセンターのゲームみたいな感じ!

ドリブルは少なく、パス回しがすごい・・・

けっこう、すぐに点が入って・・・見てて面白いです!

 

レスキューシミュレーションリーグ

すみません・・・面白いから・・・見ているうちに競技が終わってしまって、ハードコピーを取り損ねた!

街の火災を消化しつつ、街の人たちを救助する競技・・・ですよね。

競技後にスコア(救助した人数、焼けちゃった家屋の数)が表示されます。

 

@ホームシミュレーション

 

それと・・・

@ホーム実機リーグは12月にオンライン開催

と書かれていました。

 

 

 

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

RoboCupJunior Rescue New Simulation Demonstration Competition 結果・・・

2020-10-11 | RoboCup2020

前の記事はこちら RoboCupJunior Rescue New Simulation Demonstration Competition は本日の21:00から

 

RoboCupJunior Rescue New Simulation Demonstration Competition は、2020年10月4日に開催されました。

ネット配信されていたので、私も最初の方だけ見ました。

で・・・RoboCupJunior Rescue のページに全競技の動画が掲載されています。

https://rescue.rcj.cloud/events/2020/simulation/game/index.html

 

ここに、参加した全チームの競技(動画)が掲載されています。

競技は、基本的に Rescue Maze を模したシミュレーション競技なので、Rescue Mazeのチームには大変参考になると思います。

 

じゃあ、まず、一位になった 「TFA 309」の競技を見てみます。

綺麗に迷路を進んでいきます。90度の回転も一発でスムースです。

で・・・最初の文字の被災者の発見ですが・・・えっ!? と思いました。

ルールでは、「ロボットが3秒間停止して、その間にLEDを点滅する」とあるのですが、停止していないのに被災者発見にカウントされてる!

the robot must stop by the victim and blink an indicator light/LED for 3 seconds.

これは、ルールが良くないのか、プラットフォームがルールに沿っていないのか? 他のチームの競技も見ましたが、ロボットが停止していないで得点を得ているのは、このチームだけのようです。

どうも、プラットフォームは、「ロボットが停止した=ロボットの中心の座標が変わらない」で判断しているようで、超信地旋回をしているロボットは「中心座標が動いていない」と判断されているようです。これは、プラットフォームのバグだと思うのですが・・・このチームは、このバグを見つけて時間短縮に利用したのだと思います。

さて、競技の方ですが・・・ロボットは単純に左手法で進んでいるようです。(あくまでも動きを見ての想像) もう、本当に教科書のように綺麗な動きで、どんどん進み、被災者を発見していきます。

スタートした部屋から4×4の部屋が4つあるとして、4つ目の部屋で不可解な動きがありました。

(動画では2:53付近)

それまで、ずっと左手法で進んでいたロボットが、沼地タイルを超えたら、真っすぐ進まずに何故か右回転しました。(ここで急に、右手法に変わった!?) 一旦 floating walls の袋小路に入り戻ってきた後も右手法のままで、チェックポイントに入ってからは、復路はまた左手法に戻りました・・・何で!?

競技コースは事前にチームに公開された訳ではないので、チートではないと思いますが・・・ここのロボットの動きだけが(私としては)謎です。

競技としては、パーフェクト(満点)でした。マッピングもきちんと出来ているようでした。

 

次は、2位の「Raptor-B」の競技を見てみます。

このチームのロボットは、右手法のようです。しかも、1ブロック毎に止まるので、すごく分かりやすいです。単純に右の壁に沿って進んで、4部屋目の  floating walls に囲まれた被災者は無視して戻ってしまったので、もしかしたらマッピングはしていないのかもしれません。

このチームのロボットも、1回だけ謎の動きがありました。

(動画では4:27あたり)

それまで、ずっと右手法で進んでいたのですが、この十字路の交差点だけ(右折せずに)直進します。(何で?)

さらに、チェックポイントで方向転換をしたあと、再度十字路を(右折せずに)左折しました。(確かに、その先に、まだ見つけていない被災者が居たのだけど・・・)もう一度十字路にかかると、今度は直進しました・・・やっぱりマッピングしているのかなぁ・・・謎!

その後は、ずっと右手法で進んでスタート地点に戻って脱出ボーナスを得て競技終了になりました。

このチームのロボットは被災者の発見の時に3秒間停止するのは良いのですが・・・LEDを点滅していのかが確認できませんでした。これ、(LEGOの点滅も)ちゃんとプラットフォームは確認しているのでしょうか?

 

では、3位の「Nisshin Yasui」を見てみます。(日本のチームらしいです・・・)

このチームのロボットも右手法で進みます。前の2つのチームに比べると、スムースでない動きが、逆に人間的でカワイイです。最初に温度の被災者を発見します・・・3秒間停止しますが、やっぱりLEDを点滅しているようには見えません。(でも、得点は入ります)

動画の 1:56 あたりで、文字の被災者を発見するのですが、ロボットの正面のカメラで認識するらしく、ロボットを被災者方向に向けて停止するので、人間(観客)としては、大変分かり易くてよろしい!

このロボットは通路を阻む障害物の感知が苦手なようで、障害物でUターンすべき場所で、ひっかかってしまって、なかなか戻れません・・・そういうところも可愛くて良いです。(笑)

おそらく、マッピングはしていないと思われます。(一旦認識した障害物の位置も覚えていないようだし、黒のタイルも何度も入ろうとするので・・・)

動画の 8:07 あたりで・・・競技時間の残りが 1:02 になったところで、スタート地点に戻ってきましたが・・・そこで停止せずに、また探索に戻ってしまいました。(おそらく、マッピングをしていないし、スタート地点に戻ったことの判定をしていないものと思われます。)

とっても、素直で好感の持てる動きでした・・・

 

あとは、ぱらぱらと見ましたが・・・

チーム「Prime」の競技ビデオでは、ロボットに3軸の矢印が表示されたまま録画されています。これは、ちょっとスタッフの作業ミスなんじゃないでしょうか?

 

チーム「ORKA Robotics」の競技ですが・・・残念ながら0点なのですが・・・ロボットが被災者を発見すると、ちゃんと「誰でもがわかるようにはっきりと」LEDを点滅されているのが分かります。(すべて誤発見ですが・・・全チーム、これくらいのアピールしてくれると分かりやすくて良いのですが!?)

 

あと・・・チーム「Apples」の動画がエラーで見られません。(なんでだろ)

 

それから・・・途中でエラーになって、競技が強制終了してしまうチームもあります。(例えば、チーム「Maze Runner」。 これは、どうもC言語を使ったチームらしいのです。チーム側のプログラムが悪いのか、プラットフォームとの相性があるのか・・・)

 

見ていくと、競技進行停止までは調子良いのですが・・・「一旦競技進行停止になって、チェックポイントに飛んだ後から、全くダメ」というパターンが多いような気がします。(例えば、チ-ム「TheFlame」のロボットは、4つ目の部屋までは順調に迷路を探索していましたが、4つ目の部屋で競技進行停止をした後は、まともに経路を進めなくなっています。)

おそらく、「競技進行停止でチェックポイントに戻って再スタートした」ということが、プログラム側に通知されないので、再スタート後も、これまでの動作を継続してしまうし、勝手に飛ばされたロボットは自分の座標がわからなくなってしまうからだと思います。(あくまでも想像)

 

さて、この競技についてですが・・・

私としては・・・GPSのように、絶対座標がわかってしまうような仕組みは使えなくした方が良いと思います。(これがあるとマッピングをしていなくても簡単に脱出ボーナスを得られてしまいます。そうすると脱出ボーナスの意味が無いですよね。)

あと、使えるセンサーが、明記されていないのも良くないかと・・・Tutorial 1 の Introducing Your Robot に、センサーが列挙してあるけど、これ以外にも使えるセンサーがある(らしい)。

 

まあ、しょせん、デモ競技だから・・・

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

RoboCupJunior Rescue New Simulation Demonstration Competition は本日の21:00から

2020-10-04 | RoboCup2020

タイトルのとおり・・・

RoboCupJunior Rescue New Simulation Demonstration Competition は本日の21:00からです。

 

https://rescue.rcj.cloud/events/2020/simulation/live.html

ここにある、LIVE STREAMING から youtube に飛べるみたいです。

 

スケジュールっぽいものが掲載されているので、画面のハードコピーを掲載しておきます。

しつこいですが・・・時刻はUTCなので、(UTC12:00は)日本時間では本日の21:00です。

ということは・・・表彰式は(UTC15:10は)日本時間で夜中の 00:10 になります。(もう明日ですね)

まあ、全部見てたら、明日の仕事に影響が出そうです・・・

できれば、土曜日開催にしてくれると、サラリーマンとしてはありがたいのですがねぇ。

 

このスケジュールの前に本日の説明が掲載されています。

Teams are allocated into blocks of 4 or 5. There will be 4 blocks with a total of 18 teams. The pre-recorded runs for each block will be run sequentially with commentary. Before each run, the submitted team introduction video will be played. Sections of some runs will be fast forwarded if the game process is slow. After each block, we invite a member of the team for a quick live Q&A session with the MC about their robot and/or team. After all blocks have finished running, a short award ceremony is planned. Please refer to the schedule below for details.

最初の文で、4又は5つのブロックに分かれ・・・とあるのに、次の文で「4つのブロック」と明記されています。だったら最初の文はいらないんじゃないの!?(笑)(掲載されているスケジュールでも4つのブロック)

で、どうも、競技の結果は、本日実行されるわけではなく、事前に実行したものを録画(記録)していて、それを(本日は)流すようです。

(事前に競技を実施した、スタッフの皆さん、お疲れ様です。)

さらに、面白いのは・・・ゲームプロセスが遅い場合は、早送りをするよ・・・ということです。

確か競技時間は8分間なのですが・・・例えば、全然動かなかったり、同じ動きを繰り返すようなロボットは、8分全部の動画でなく、端折った動画になっているよ・・・ということだと思います。

これは、観客を飽きさせない良い方法かと・・・

さらに、単に事前録画した競技を流すだけでなく、競技前にチーム紹介の動画があり、ブロックごとに競技後にライブで参加チームにチーム質問タイムがあるようです。

 

日本にチームも参加しているらしいのですが・・・健闘をお祈りいたします。

 

続きの記事はこちら RoboCupJunior Rescue New Simulation Demonstration Competition 結果・・・

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

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

2020-09-28 | RoboCup2020

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

 

Rescue New Simulation のプラットフォームがバージョンアップしたというお知らせがきました。

新しいのは Rescue Maze Release 7 ということで、Release 7 になりました。

 

https://github.com/Shadow149/RescueMaze/releases

 

変更点がいろいろと書かれています。

気になった部分だけコピペします。

New release for the upcoming competition.
Please note this only works with Webots version 2020a and 2020b rev-1.

10月になったら、競技会がありますが、それのためにリニューアルしたようですね。

競技会直前で、プラットフォームの変更は、チームにとっては厳しいのではないでしょうか!?(笑)

(単なるバグフィックスだけなら良いのですが・・・)

で・・・Webotsのバージョンとして、2020aだけでなく、2020rev-1 もサポートしたようなのですが・・・そうすると、Pythonも最新版の3.8を使えるのかなぁ!? でも、Downloading & Installing には、相変わらず Python は 3.7、Webots は 2020a と書いてある・・・やっぱり、「コードは変更してもドキュメントが変更されていないダメプロジェクトの典型」 なのでしょうか!?

Added
・Added downward-facing light to the robot to prevent the colour sensor value from being affected by the shadows of objects and the red light of the heated victim
・Added a new button to allow the option to use the inbuilt webots victim detection API.

ロボットが床の色を検知するための下向きのカメラがあったのですが、それにライトが装備されたようです。これで、床の色を判断しやすくなった・・・ようです。でも、この変更で、これまでのプログラムを再調整しなければなりません。

それから、被災者判別用のAPIのON/OFFのスイッチが追加されました。正直、何のことなのか私にはわかりませんが・・・おそらく、文字の被災者の文字を判定するためのAPIが使えるようになったのだと・・・思います。(あくまでも、想像)

Changed the silver tile to CorrodedMetal

シルバータイル(チェックポイント)の色が CorrodedMetal になったって!

この CorrodedMetal の色って何だろう!?

普通に翻訳すると、腐食金属となるのですが・・・おそらく、サビ色(茶色っぽい)のことだと思います。

 

あとは、様々なバグフィックスのようです。

(すみません・・・「ようです」の表現ばかりで・・・)

 

さて、新しいプラットフォーム(Release 7)で、これまで作ったプログラムを動かしてみると・・・やっぱり、黒のタイル(落とし穴)の判断ができずに、落とし穴にコロンと落ちてしまいます。

ちゃんと黒の色を測りなおして、プログラムを修正する必要があります。

(床の色の検知をするカメラにライトが付いたので、値が違うのですね。)

とりあえず、私のプログラムはそれだけで動きました。(文字の被災者用のカメラとかは、元々のサンプルをそのまま使っているので・・・)

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

NESTロボコン2020のレスキュー競技

2020-09-27 | RoboCup2020

9月のシルバーウィークに開催されたNESTロボコンのレスキュー競技にスタッフとしてお手伝いにいったので・・・その様子の記録(記憶)です。

 

いつもだと、夏休みの最後の日曜日(8月の最後の日曜日)開催されることが多かったのですが、今年はコロナ禍の影響でシルバーウィークに開催されました。

開催された競技は全部で5つ

①Kokohore! Wan Wan! (NESTロボコンオリジナル競技)
②NESTロボコン サッカー日本リーグ競技
③NESTロボコン サッカーワールドリーグ競技
④NESTロボコン レスキュー日本リーグ競技
⑤NESTロボコン レスキューワールドリーグ競技

で・・・分散のため

①は9月20日
②と③は9月21日
④と⑤は9月22日

と、バラバラに開催されました。

私はレスキュー競技のお手伝いとして、9月22日に行ったので、④と⑤を見ました。(ということで、以下の内容は④と⑤についてです。)

 

午前中に⑤、午後に④という、なかなか厳しいスケジュールでした。(笑)

午前中の⑤(レスキューワールドリーグ競技)は、各チームが集まって、ロボットもそれぞれ持ってきて競技をしました。ですので、まあ、いつもと同じやり方ですね。ちょっと違うのは、フィールドでの密を避けるために、フィールドでの練習時間を各チームに割り当てて、チーム毎にフィールドを専有して練習しました。

ただ、その時間が(各チーム)10分間だけ!

なかなかに厳しい!(笑)

それから、他のチームの競技もフィールドの近くで見ることができず、フィールドの近くに設置された固定カメラで撮影した映像(動画)をパドックのスクリーンに投影するのを見ていました。

でも、まあ、コロナ禍の中で、よくできた競技会だったと思います。

 

さて、午後の④(レスキュー日本リーグ競技)の方が、さらに素晴らしい(そして面白い)競技会でした。

チームは会場に来ないで、Zoomでオンライン参加します。

ロボットはあらかじめ共通のものが公開され、チームはそれに合わせたプログラムを作成し、オンラインで登録します。

スタッフは、登録されたプログラムをロボットに流し込みます。

そして、主審と副審(これは普通ですね)と、チームキャプテン役のスタッフがロボットを操作して、競技を実施する・・・という、面白いやり方でした。

無観客競技会 だけでなく 無選手競技会

 

競技の前にチームミーティングがあり、普通だったらキャプテンをフィールドに集めて、スケジュールやルールの確認などを実施しますが、今回はZoomでチーフが一人で説明します。(何か、見てると、異様・・・笑)

センサーの値は、ロボット毎に微妙に違うので、4台のロボットそれぞれの値(黒の値、白の値、銀の値など・・・)を計測して、あらかじめチームに配信しました。

 

フィールドは2つあり、どちらも同じコースでした。

スタッフは主審が2人、副審が2人、チームキャプテン役が4人、ロボットにプログラムを流し込む役が2人と10人で頑張りました。(勿論、そのほかにも沢山のスタッフがご尽力されていました・・・)

 

まず、ロボットにプログラムを流し込む役の人が、一番大変だったと思います。チームから送られてきたプログラムのどれが一番新しいものか、他のチームのプログラムと間違ってもダメだし・・・使用するロボットは4台で、順繰りに使用するのですが、そのロボットも間違わないようにしないと・・・と、大変なプレッシャーだったと思います。(本当にお疲れ様でした)

さて、競技の方は、結構平和でした。

最近のレスキューNL(Nippon league)のルールは先祖返りしたようで、救助ゾーンで救助を待つ被災者が銀と緑のシールになりました。(とっても懐かしい!)

で、いつもと違うのは・・・競技進行停止をチームキャプテンが宣言するのではなく、主審が(勝手に)判断します。ライントレースのコースであれば、コースを外れたり、逆走すれば競技進行停止なので、判断が明確ですが・・・困るのが救助部屋での競技進行停止です。

もう明確に・・・「これはダメだな」となった時に競技進行停止を取りました。

チームメンバーはZoomでスタッフを連絡を取れる状態で見ているのですが・・・競技中は指示は出せないルールでした。(だから見ているしかない・・・)

まあ、こんなやり方で競技をしてました。

 

「コロナ時代の新しい競技会の形」ですかねぇ!!

 

午後の④の競技の開会式も閉会式もありました。

・・・普段なら会場の産技高専のホールに沢山のチームメンバーとメンターや保護者、スタッフが集まって実施する開会式や閉会式なのですが・・・

今回は、選手も観客も居ないので・・・レスキューの競技会場で、机のPCに向かって淡々と式の進行をする中島先生が違和感でした。(笑)

 

いろいろ初めての試みで失敗や反省点もあるでしょうけど、素晴らしい競技会でした。

 

最後に・・・④⑤の競技はYouTubeLiveで配信されていたのですが・・・それぞれの競技を元世界チャンピオンが解説してくれていて、それがとても素晴らしい解説だったそうです。

 

スタッフの皆様、本当にお疲れ様でした。

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

電池山盛り!

2020-09-25 | RoboCup2020

先日のNESTロボコンでの一風景

 

山盛りの乾電池

 

 

Fujitsuの電池だったので、ちょっとうれしい(笑)

 

前日のサッカーで使ったものの残骸だったらしい・・・

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

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

2020-09-24 | RoboCup2020

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

 

さて、とりあえず、普通に迷路探索(単純な右手法ですが・・・)ができるようになりました。

そうすると、次はやっぱり被災者の発見ですよね。

被災者を発見するためには、温度の被災者を発見するための温度センサー、文字の被災者を発見するためのカメラの制御をしなければなりません。

で、それらの使い方が  Tutorial にあるらしいのですが・・・・私には理解できませんでした。(英語だし・・・そもそも Python を知らないから・・・)

 

じゃあ、どうするか?

一番安易な方法をとりました。

それは・・・Tutorial 1 の Example code demo  にあるサンプルコード(ExamplePlayerController_updated.py)を右手法に改造する、です。

 

ExamplePlayerController_updated.py は、熱の被災者も発見できるし、文字の被災者も発見できます。ただ、迷路探索がランダム走行です。(とりあえず直進できる間は直進する。壁にぶち当たったら、右回転する・・・という感じ) さらに、なぜか沼地のタイルに入らない様になっていました。

 

だから、改造するのは・・・

・右手法にする。
 →右前の壁を調べて、壁との距離が近ければ左前に進む、壁との距離が遠ければ右前に進む。(ちょうど良い距離であれば直進する)

・沼地には入らない → 特に検知せずに、普通に沼地に入る

・被災者を発見した後に、バックする → 被災者を発見した後に、ちょっと左回転

単純にこのように変更すると・・・

右手法で進んで、被災者も発見できるサンプルプログラムになりました。

 

ただ・・・これは、元々のルールというか、ロボットの設定が悪いと思うのですけど・・・文字の被災者を発見するためのカメラがロボットの前方に設置されているので、経路の真ん前に(文字の)被災者が設置されていないと、発見できません。(熱の被災者は、発見率が高いです)

何で、カメラが3つも搭載されているのにの、前、右前、左前のように前側に寄せられているのでしょうか?

私の想像だと、

①リモート操作をするメジャーレスキューの流れで前側に設置してある
②参考にしたのが CoSpace Rescue で、そのロボットの距離センサーが前、右前、左前に設置してあったので、それを模した

のどちらかかなぁ・・・と想像しています。

Rescue Maze のロボットとしては、前はいらないから、右か左(つまり真横)にカメラがあるとありがたいのですが・・・  

 

とりあえず、動いたので・・・また、時間のある時に自分なりに効率化(無駄なコードを削除するとか)をやってみたいと思いますが・・・なにしろ Python 知らないので、まずは、その勉強からでしょうか!?

 

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

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

NESTロボコン

2020-09-22 | RoboCup2020

本日はNESTロボコンの最終日で、レスキューの競技があり、お手伝いに行ってきました。

久しぶりの産技高専(品川)です。

午前中はレスキューWL(World  league)で、こちらはチームがロボットを持ってきて参加します。

競技自体は、ロボカップジュニアの Rescue Line の救助ゾーンだけを取り出した競技でした。

8チームが参加しており、被災者を救助したチームが優勝でした。(当たり前!)

ただ、救助したのは1チームのみで、その他は何もできずに0点か、競技進行停止をしてマイナス点・・・という感じでした。

 

さて、午後は、レスキューNL(Nippon league)で、こちらの競技が面白い・・・

運営側が用意した、LEGOで作成した標準のロボットに、チームが作成したプログラムを入れて競技をします。

チームメンバーは会場には来ないで、オンラインで作成したプログラムを送付します。会場に居るスタッフが、そのプログラムを受け取って、ロボットに流し込みます。スタッフがロボットを操作して、競技をするという・・・「無選手競技会」でした。

ロボカップジュニア初のスタンダードプラットフォーム競技なんじゃないでしょうか? (実機ロボットの競技では・・・)

 

こちらが、全チーム共通のロボット

 

チームからオンラインで送られてきたプログラムをスタッフがロボットに流し込みます。

 

年寄りには、とっても懐かしい、銀の被災者と緑の被災者!

チームの代理操作役のスタッフが、ロボットの操作をします。(スタートや競技進行停止時の操作)

 

最初は、ちゃんと競技会になるのか心配でしたが、ちゃんと競技会になっていましたよ!

 

開会式も閉会式もオンラインでの実施でした・・・

普段は、競技が終わったら、ホールに沢山の人が集まって(選手やメンターや観客、スタッフが)閉会式・表彰式をやるのですが・・・オンラインでの閉会式・表彰式は、なんか違和感&新鮮でした。

スタッフの皆様、本日はお疲れ様でした!

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

ジャパンオープン2020

2020-09-20 | RoboCup2020

本日、ロボカップジャパンオープン2020のロジスティクスリーグが開催されました。

その競技の状況がネット配信されていたので・・・ちょっと見てました。

 

 

会場は、龍谷大学(だったよね)ですが、チームメンバーは会場には来ておらず、リモートで参加してました。

これは、スタンダードプラットフォームだからできるんですね。

 

さて、もう一つ・・・こちらも本日から開催のNESTロボコン

本日は、WanWanをやっていました。

 

こちらも、(今年は)スタンダードプラッフォームで、チームは会場に来なくて、リモート参加での競技会でした。

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

明日からNESTロボコン

2020-09-19 | RoboCup2020

例年だと・・・NESTロボコンは夏休み最後の日曜日(つまり、8月の最後の日曜日)だったのですが・・・

今年はコロナ禍もあり、明日からの3日間に開催されます。

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

と、各競技毎に日程が違います。(これも密をさけるため・・・!?)

さらに、WanWanとサッカーNL、レスキューNLは、無観客試合ならぬ無選手競技です。

あらかじめ、決められた共通のロボットを規定して、チームはプログラムを作成して事前に送付します。

競技当日は、チームから受け取ったプログラムをスタッフがロボットにローディングして、シタッフだけで協議会を実施します。で・・・それをネット配信して、選手も観客も見ることができます。

という、面白いやり方です。

(さすがにサッカーWL、レスキューWLは、会場にチームメンバーがロボットを持ってきて競技をします。)

 

で・・・私も、最終日には、レスキューのお手伝いに行く予定です。

 

NESTロボコンのHPにライブ配信について案内が掲載されていました。

NESTロボコン2020 ライブ配信

 

 

各競技のライブ配信のスケジュールをコピペします。

 

9月20日(日)Kokohore! WanWan競技ライブ配信
午前10:45より配信開始

9月21日(月祝)サッカー競技ライブ配信
午後12:15より配信開始

9月22日(火祝)<前半> 
レスキューワールドリーグ競技ライブ配信
午前8時35分より配信開始

9月22日(火祝)<後半> 
レスキュー日本リーグ競技ライブ配信
午後12時50分より配信開始

 

おまけのたわごと

コピペしておいてナニですが・・・午後12時50分という表現は、日本語としては正しくないように思います。

午後0時50分 または 12時50分 が正しいですね。 午後xx:xx という表現は、正午からの経過時間を表していますので、午後12時50分では、夜中になってしまいます。(笑) 

(英語表現では 12:50PM と書くようです。)

ということで、ライブ配信は(夜ではなく)昼ですのでお間違いなく・・・

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

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

2020-09-18 | RoboCup2020

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

 

さて・・・このシリーズも7回目・・・(まあ、誰も期待していないと思いますが・・・笑)

今回は、フィールドを一周する(一周できる)プログラムを目指します。

これまでで、右手法のプログラムを作りましたが・・・右の壁(通常は外周ですね)を伝って進むと、黒のタイル(落とし穴)があり、必ずそこに落ちて・・・競技進行停止(Lack of Progress )になり、スタート地点に逆戻りです。

ですので、今回は黒のタイルを判断して、落とし穴に落ちないように回避します。(さて、できますか!?)

 

New Rescue Simulation のロボットには、被災者を発見するためのカメラが3台搭載されています。さらに、床の色を判断するためのカメラが1台搭載されています。(合計4台のカメラって、贅沢ですね!)

今回は、この床の色を判断するカメラを使います。

解説は Tutorial 2: Sensing & Victim Detection にあります。

Content Summary に Using the colour camera to identify swamp and trap areas と書かれています。

Exemplar Code のところに、サンプルのプログラムが掲載されていますが・・・code2.py は古いプラットフォーム用なので、現在の最新のプラットフォーム(release 6)では動作しません。最新のプラットフォームで試すのは、code2_webinar_updated.py の方を試しましょう。

(ただ、この code2_webinar_updated.py も、Tutorial 1のサンプルプログラムをベースに作成されているのでランダム走行です。まあ、今回は、あまり関係ないですが・・・)

このサンプルプログラム(code2.py)は・・・「黒のタイルを判断して、そこに入らないようにする」→ はい、これは正しいですね。 しかし、なぜか、沼地(swamp)にも入らないようになっています。 謎です!? 沼地は入ってはいけない場所ではなく、単にスピードが遅くなるだけです。 確かに入りたくない気持ちはありますが・・・沼地の先に被災者やチェックポイントがあって、通り過ぎないと得点できないかもしれません。 先がどうなっているかわからないので、行くしかないと思うのですが・・・

 

話が、ズレました。

Tutorial 2 に Stepping through the code にサンプルプログラム(code2.py)についての解説があります。

この中から、床の色の判断に関するところを取り出します。

In this world we are now dealing with black trap holes and brown swamps. To aid detection later we are going to define the colour of these. We do this by converting the color in the binary value, using the b'color' format. Here we are assuming that the hole and swamp colour is a particular RGB value. You may want to make sure that this is the case so the robot does in fact detect them. To do so, run the calibration code in order to print out on the console what values the colour camera is sensing once the robot is above these tiles.

hole_colour = b'\x1e\x1e\x1e\xff'
swamp_colour = b'R\x89\xa7\xff'

色のバイナリ値を定義しましょう・・・黒の色はコレ、沼地の色はコレ、これらの色を検知したら、入るのをやめよう・・・はい、なんとなく正しいのですが、これに大きくはまりました。

まず、床の色のキャリブレーションをするために、calibrateColourSensor.py を実行します。それから、プラットフォームの Tools → Console を指定すると、フィールドの下にテキストが表示されるコンソールの領域が表示されます。これで、ロボットを移動すれば、そのロボットのカメラが検知した色情報がコンソールに表示されます。

これを、いろいろな場所で実施して、カメラが検知した色情報を記録します。

 

で・・・まず、何もせずに code2_webinar_updated.py を動かしてみます・・・

何もしないと、フィールド内の同じところをグルグル回ってループするので、適当に止めて、手で移動して・・・黒タイルの手前に置いてみます。

すると、ロボットが上に向かって黒タイルに入ると、ちゃんと回避できるのに、下向きに黒タイルに入ると(回避せずに)そのまま穴に落ちることがわかりました。(なんで?)

いろいろ試すと、右向きは回避OKでも、左向きではやっぱり穴に落ちます。

 

原因を追究するために、calibrateColourSensor.py で、上向き、下向き、左向き、右向き・・・いろいろな向きで黒タイルに近づけてみて、床の色情報を記録しました。

すると・・・HSVの値は同じでも、バイナリ値が微妙に違うことがわかりました。

つまり、同じ黒のタイルでも、入る向きによって、ロボットのカメラが検知する色が複数あることがわかりました。

ということで、バイナリ値で判断するのは良くないようです。

知恵袋のU君に相談したら、やっぱり「バイナリ値は光の当たり方によっても幅があるので、HSVの値の方の範囲で検知したほうが良い」との回答を得ました。

 

ということで、Tutorial 2 の床の色の検知のプログラムはあまり参考になりません。(キッパリ!)

 

じゃあ、何を、どうすれば良いのか・・・一時はあきらめかけましたが・・・HSVの判定方法の例を見つけました。

ExamplePlayerController_updated.py

の中に、avoidTilesHSV() という定義があり、(このプログラムの中では使われていませんが)沼地と黒タイルをHSVで判断していました。

avoidTiles() の代わりに、avoidTilesHSV() を使用したら、黒タイルを的確に判断するようになりました。

 

これで、私が作った右手法の単純なプログラムに黒タイルの判断を組み込んで・・・(落とし穴に落ちずに)フィールドを一周する(できる)プログラムができました。

長かった・・・(うれし涙)

 

プログラム全文を載せるのもナニなので、床の色を判断するカメラ関係の部分だけ・・・

宣言

# Declare colour sensor underneith the robot
colour_camera = robot.getCamera("colour_sensor")
colour_camera.enable(timeStep)

 

メインループ内

        # Avoid if any tiles are detected
        colour = colour_camera.getImage()
        img = np.array(np.frombuffer(colour, np.uint8).reshape((colour_camera.getHeight(),colour_camera.getWidth(), 4)))
        img[:,:,2] = np.zeros([img.shape[0], img.shape[1]])
        hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)[0][0]
        if (hsv[2] < 35):
            speeds[0] = -0.4 * max_velocity
            speeds[1] = 0.6 * max_velocity
            startTime = robot.getTime()
            duration = 0.7

 

New Rescue Simulation の GenerateMap.py が作成するフィールドは、スカスカの迷路が多いので、右手法だと「ただ外周を一周」を繰り返す感じですが・・・例えば、こんなフィールドでは、ほとんどの場所を巡ることができます。

 

さあ、次は被災者の発見か・・・!?

 

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

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

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

2020-09-15 | RoboCup2020

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

 

いろいろ、手を広げると、結局なにもできずに終わるので・・・一歩一歩確実にやっていきます。(笑)

今回は、New Rescue Simulation のマップ作成に挑戦します。

 

https://github.com/Shadow149/RescueMaze/wiki

Wikiの右側のメニューの Platform Details の Generating New Worlds をクリックします。

すると、Map Generationの説明のメージになります。

 

 

で・・・このマップを作成するプログラムが GenerateMap.py というものらしいのですが・・・一体どこにあるの? 

でも、だんだんと慣れてきました。

ここ(https://github.com/Shadow149/RescueMaze)に world_gen がありました。 ですので、Codeボタンをクリックして Download.zip で全部のファイルをダウンロードしてから、zipファイルを解凍して、中にある GenerateMap.py を取り出します。

さらに・・・

Requirements に Pillow library for python と書かれていたので・・・

コマンドプロンプトで

pip install Pillow

を実行しました。

さて、これで・・・GenerateMap.pyをダブルクリックすると、GenerateMapが起動します。

 

使い方は簡単・・・

左側の四角の中にあるスライドバーをスライドして難易度を決めたら、右下の Generate Mpa ボタンをクリックするだけです。すると、勝手にマップを作成してくれます。作成されたマップが気に入れなければ、そのまま Generate Mpa ボタンをクリックすれば、どんどん新しい(別の)マップを作成し続けます。

 

で・・・Rescue Maze スタッフ経験者としては・・・えっ、コンピュータが勝手に作ってくれるのもいいけど、人間の設計したコースは作れないの? そうですよね、疑問ですよね、 はい、ランダムに作るだけで、人間が設計したコースを迷路化するような機能はありません。(無いようです)

 

で、もうちょっと細かく指示をしてマップを作りたい場合は、左上にある Advanced をクリックすると、いろいろなパラメータをいじれます。

 

 

いろいろ言わしてもらうと・・・

・もっと壁を多くできないのかなぁ!?

・Debrisは、何も機能していない感じ・・・

・Bulkyが大きな障害物の数のようです。これを指定すると、通路の真ん中に「どん」と障害物が置かれます。(交差点に置かれたりもします。) Rescue Maze と違って、「壁からの距離が20cm以上」という条件はなさそうなので、ルール上は問題なさそうです。

・Trap というのは黒タイル(穴)だと思うのですが・・・CoSpace の流れから来てるのでしょうね。

・そしてやっぱり、人間がコースを設計したい!

 

さて、ここで作成したMapのファイル(xxx.wbt)を

\RescueMaze_Release_6\game\worlds 

に配置してクリックすると、作成したMapが使えるようになります。

 

例えば、このフィールドのコースだと、上にある黒タイルと下にある障害物が邪魔で、右半分のフィールドに行けません・・・(笑)

 

 

ちなみに、Wikiの Map Generation に掲載されている、GenerateMapの画面説明などは、ちょっと古いので、参考程度のものです。

 

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

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

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

2020-09-09 | RoboCup2020

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

 

New Rescue Simulation ですが・・・Rescue Maze を模しているのに、Tutorial 1にあった、一番単純なプログラムが「ランダム走行」だったのが気に入らなくて、せめて右手法で進むプログラムを作ってみよう・・・と頑張ってきました。

 

その成果がこちら

 

スタートしたら、外周に沿って進み・・・

 

 

沼地を超えると、そこには黒の落とし穴が・・・

 

 

でも、落とし穴を回避するプログラムは入っていないので・・・

 

コロンと落ちました。(笑)

 

とりあえず、右手法のプログラムはコレです。

 

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")

rightSensors = []

rightSensors.append(robot.getDistanceSensor("ps1"))
rightSensors[0].enable(timeStep)
rightSensors.append(robot.getDistanceSensor("ps2"))
rightSensors[1].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:

    if rightSensors[0].getValue() > 0.12:
        if rightSensors[1].getValue() < 0.07:
            #Go stright
            speeds[0] = 0.6 * max_velocity
            speeds[1] = 0.6 * max_velocity
        else: 
            #turn right
            speeds[0] = 0.6 * max_velocity
            speeds[1] = -0.2 * max_velocity

    elif rightSensors[0].getValue() > 0.07:
        #Go stright
        speeds[0] = 0.6 * max_velocity
        speeds[1] = 0.6 * max_velocity

    else:    
        #turn left
        speeds[0] = -0.2 * max_velocity
        speeds[1] = 0.6 * max_velocity

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

 

Pyhonを知らない人間がコーディングしているので、基本的な間違いがあるかもしれません・・・

 

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

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

RoboCup JapanOpen 2020

2020-09-05 | RoboCup2020

RoboCup JapanOpen 2020のHP

 

「JapanOpen2020 2nd plan」と書かれているの、もともと、春に愛知で開催するハズだったジャパンオープンが中止になって、2度目の企画だからでしょうか!?

 

実施する競技は・・・コロナ禍の中で、仕方が無いのですが、オンラインのシミュレーションが主体です。

・サッカーシミュレーションリーグ2D
・@ホームシミュレーションリーグ
・レスキューシミュレーションリーグ・Agent競技
・ロジスティクスリーグ

一番下の、ロジスティクスリーグだけ、実機なんじゃないかと・・・

 

一通り読んでみて(大したことは書かれていませんが・・・)面白いと思ったのがここ

新規参加チームの登録料が無料というところです・・・参加チームを増やそうという努力が見えてよいです・・・(笑)

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