Re: The history of "M&Y"

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

CoSpace Rescue 2015 のプログラミングをしてみた その8

2016-01-10 | RoboCup2016

CoSpace Rescue は、オブジェクトを収集し、収集箱に入れる・・・こんな単純なゲームです。

もし、オブジェクトを収集しても、ロボットに搭載できるのは最大6個までです。

ロボットに搭載したオブジェクトをオレンジ色の収集箱に入れると、また6個のオブジェクトを収集できるようになります。

だから・・・オブジェクトの収集、収取箱に入れる を効率良く繰り返すことが高得点につながります。

 

で、普通に考えると、左右のカラーセンサーがオレンジ色になったら収集箱に入ったと判断して、「Deposit」の動作をさせます。

CoSpace Rescue のヒント集である CoSpace Rescue Flashcaed - 4 Feb 2015.pdf にも同様のやり方が書かれています。

 

 

勿論、私もそのようにしていました。

(していました・・・と、過去形で書いたのは、現在はしていないからです。)

 

このやり方でやると・・・

収取箱に入れる(Deposit)ことができないことがあります。

うまくいかない時には・・・せっかく、6個のオブジェクトを収集(搭載)して、ロボットが収集箱に入り、格納(Deposit) の動作をしても、持っているオブジェクトがクリアされません。(勿論、得点も増えません) しかも、Deposit に失敗したことが、プログラム側から判らないので、ロボットは、「搭載したオブジェクトは全て降ろして、身軽になった・・・さあ、新たなオブジェクトを探すぞ!」と意気揚々と収集を再開するのですが・・・せっかく見つけたオブジェクトを取集できなくて、全くの無駄な時間を過ごすことになります。 LoadObjects 変数は、実際に搭載しているオブジェクトの数とは関係なく 0 クリアされてしまいます。 実際に搭載しているオブジェクトの数や種類を示すシステム変数を公開してくれれば良いのに・・・

 

話が、長くなりましたが・・・

しつこく書きますが、収集箱に入ってオブジェクトを格納しようとしても格納できない(Depositに失敗する)場合があるということです。

これには、いくつかのパターンがあり

ロボットが収取箱に入って停止すると

①画面右上の動作ログに  Depsiting・・・ と2行表示されて格納される(Deposit 成功)

②画面右上の動作ログに  Depsiting・・・ と2行表示されたのに格納されない(Deposit 失敗)

③画面右上の動作ログに  Depsiting・・・ と1行だけ表示されて格納されない(Deposit 失敗)

④画面右上の動作ログに  Depsiting・・・ が表示されない(Deposit 失敗)

の4種類があります。

いずれも、収集箱を出ると、LoadObjects 変数は 0 にクリアされているので、プログラム側からは格納に成功したのか失敗したのかは判断できません。

 

で・・・この誤検知(②~④の状態)をどうやって回避するか・・・いろいろやってみたのですが、そう簡単ではありませんでした。要は、プログラム(ロボット)は、左右のカラーセンサーがオレンジだと判断したのに、CsBotは「収集箱に入っていない」と判断している訳です。もう、最初は「CsBotはバカだなぁ」とか、「シンガポールに連絡して文句を言おうか・・・」などと考えていました。

でも、文句を言わなくて良かったです。(笑)

結局、②~④はきちんと左右のカラーセンサーがオレンジ色の上で停止していない・・・ということのようです。

LoadObject の変数は、プログラムから FindObject を発行すれば値が増えて、 Deposit を発行すれば値が0になる・・・単純にそのような動きでした。だから、オブジェクトの無いところでも値が増えて、収集箱でないところでも0になります。

じゃあ、どうすればよいか・・・単純にロボットを完全にオレンジの領域に入れれば、文句なく CsBot が収集箱に格納したと判断してくれます。

 

さて、どうしますかねぇ・・・(笑)

 

要は、収集箱の(最低)30cm×30cmの領域にロボットが完全に入っていれば CsBot も文句を言わずに、格納してくれます。じゃあ、どうやって、ロボットを完全にオレンジ色の領域にいれるのか・・・

これも、発想の転換が必要かと・・・レスキューラインの考えよりもレスキューメイズの方が近いかも・・・(普通にCoSpace Rescue のプログラムの常識なのかもしれませんが)自分自身で思いついた時には「なんだ、こんな単純なことか・・・」と笑っちゃいました。

(Stage2限定ですが・・・)

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

分解・・・してみた

2016-01-10 | ブログ

先日、ヤフオクで手に入れた古い時計を分解してみました。

 

まず、全体の写真です。

 

 

文字盤のアップ

長針と短針を外すのですが・・・これまでに見たこともない形状です。ピンで留めてあるようなので、ピンを外します。

 

 

長針と短針が外れました。

 

 

今度は文字盤を取り外します。

 

 

文字盤を外すと、ムーブメントが出てきました。

 

 

振り子室の様子・・・精工舎と書かれています。

 

 

ムーブメントを取り出して、油を注します。

 

 

ムーブメントの裏側です。

 

 

さて、油を注したら元に戻します。

心なしか・・・コチコチ音が静かになりました。

まだまだ使えそうです。

文字盤だけ、いつか自分で作成して取り換えたいです。

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

CoSpace Rescue 2015 のプログラミングをしてみた その7

2016-01-09 | RoboCup2016

だんだんと判ってくると・・・

CoSpace Rescue が面白くなってきました。

うん、これ、もっと流行らせても良いのじゃない!? (笑)

 

で、これまでの(短い)経験でいくつか判明したことがあります。

フィールドには「罠」があります。これに入ると、ロボットが持っているオブジェクトを全て失ってしまいます。さらに、それらのオブジェクトを発見(収集)したときの得点も無くなってしまいます。

だから・・・極力「罠」には入らないようにしなければなりません。

当たり前ですね。

だから・・・罠の周りにある黄色の帯を感知して、カラーセンサーが黄色を感知したらバックするようにしています。

「これなら、絶対に入らないだろう・・・」

でも、実際には入っちゃいます。

(もしかしたら、PCの性能にもよるのかもしれませんが・・・)

左右の車輪のパワーが3の場合は大丈夫なようなのですが・・・パワーが4とか5だと、センサーが黄色を検知してからバックしたとしても、勢いあまって罠の部分に入り込んでしまうようです。

これで、何回泣いたことか・・・・特に、Superオブジェクトを持っている時に限って・・・(涙)

じゃあ、車輪のパワーを3までにすれば良いじゃないか・・・という短絡的な解決法もありますね。

 

解決方法はいろいろあると思いますので、あえて詳細は書きません。

私のお気に入りは・・・黄色の領域に近づいたらゆっくり動くようにしています。(Stage2専用ですが・・・)

そんなことが出来ちゃうのが CoSpace Rescue ならでは、ですね。

 

補足です。

ロボットが罠に入ったかどうかは、CsBotが勝手に判断します。罠に入ると(上に書いたように)持っているオブジェクトが消えるのと、消えたオブジェクトを収集したときの得点が差し引かれます。(つまり、得点が減ります) プログラム上からは、罠に入ってしまったかどうは判りません。(少なくとも、私の理解では判断できません) 罠に入っても、LoadObjects 変数の値は変わりませんので、ロボットはこれまで収集したオブジェクトをそのまま持っているかのように振る舞います。せっかく、3種類のオブジェクトを揃えて、意気揚々と収集箱にいれたハズなのに、10点だけだった・・・ということも何度もあります。そんなロボットのけなげな姿をみると可哀そうになります・・・(苦笑)

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

EV3ねた その2 LEGO mindstorms EV3

2016-01-09 | EV3ねた

正確には NXTねた ではないのですが・・・(笑)

 

ちょっと あぶく銭 が入ったので、普段だと買わないようなものを手に入れました。

 

 

LEGO mindstorms EV3 です。

このごろは、円安なので、AMAZONとかでも高価です。ちょっと欲しいなぁ・・・なんて考えていましたが、私のおこずかいでは厳しいし(笑) 「M&Y」も「花鳥風月」も終了だし・・・

と、考えていたのですが・・・またまたヤフオクで、ちょっと訳アリのものを安く手に入れました。

(一応、未使用の新品です・・・)

 

一応箱から出して、見てみました。 EV3の本体は、NXTに比べてカッコイイです。

でも、なんかそれだけ・・・NXTで十分なんじゃない!?

 

まあ、しょせん、コレクションとして1個持っておくのも良いか・・・程度のものです。

そのうち、黒や赤の特別な本体とかも出てくるのでしょうかねぇ。

EV3の発売開始が2013年秋(だったような)なので、もう既に2年以上前ですね。NXTの販売も終了のようですし、すぐに次世代(EV4!?)になっちゃうのか・・・

 

続きの記事はこちら LEGO MINDSTORMS EV3

 

2020/4/26 追補 カテゴリ名「EV3ねた」を追加したので、カテゴリ名を「NXTねた」⇒「EN3ねた」に変更しました。

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

ひよ子

2016-01-08 | ブログ

なんか、すごく久しぶりに食べた「ひよ子」

私が子供の頃は、お土産品として、たまに食べていました。

あまりにも可愛いので、頭から食べることができずに、いつもお尻の方から食べます。(今も・・・)

 

 

遠い記憶の中の「ひよ子」と味は変わりませんねぇ。

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

またまた買っちゃいました

2016-01-07 | ブログ

またまた、精工舎の古い柱時計をヤフオクで手に入れました。

 

 

毎時、ボ~ン、ボ~ン・・・と大きな音で時を告げてくれます。

振り子からコチコチと心地良い音がするのですが・・・

まあ、結構うるさいです。

 

今度、分解して油を注さないと・・・

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

CoSpace Rescue 2015 のプログラミングをしてみた その6

2016-01-06 | RoboCup2016

前回、中途半端で終ってしまいました。

今回は Superオブジェクトの話です。

 

Stage2では、「赤、緑、黒」の3つのオブジェクトを揃えて収集箱に入れると Superオブジェクトが発生します。さらに、「赤、緑、黒」の3つのオブジェクトを2組揃えて収集箱に入れると Super+オブジェクトが発生します。Superオブジェクトは収集すると90点、収集箱に入れると、さらに90点です。この合計180点は大きい!  

さらにさらに、Super+オブジェクトは、収集して180点、収集箱に入れるとさらに180点で、合計360点です。

先日のRCJJ関東ブロック大会2016で優勝した「Cure Blossom ~again~」は、「赤、緑、黒」を集めて、Superオブジェクトを発生させ、それを収集すること(さらに回収箱に入れること)で、大量の得点を得ていました。

 

さすがに、私の技術では、「赤、緑、黒」を揃えて収集する、ということはできそうにありません。ですので、発生したSuperオブジェクトやSuper+オブジェクトを確実に収集し収集箱に入れることを目指します。

 

Superオブジェクトが発生すると、SuperObj_X と SuperObj_Y に座標が入るのだと思っているのですが・・・いつ確認しても (0,0) のままです。 Superオブジェクトをどうやって探せばよいのか・・・散々試行錯誤して、やっと取得する方法が判りました。その座標を変数に格納して、その座標に向かえば、発生した Superオブジェクトが収集できる(ハズ)です。

 

と、考えるのは簡単なのですが・・・実際は、そう簡単ではありません。

何もない平面で、指定した座標に向かうのはできそうですが・・・

途中には、障害物や罠があり、それらを回避しなければなりません。 また、見えない「信号ブロック領域」が、難物です。 さらに、一番の強敵が「収集箱」です。

これらの障害を回避して、Superオブジェクトに向かうのは、そう簡単ではありませんでした。

 

とにかく、Superオブジェクトが発生したら、それを取りに行くことはできるようになったのですが・・・

Superオブジェクトを発生させるために「赤、緑、黒」のオブジェクトを揃えるのは、運まかせしか無いようです。

さらに・・・せっかく沢山のオブジェクトを揃えて、収集箱に入っても、CsBotが「収集箱に入れた」と判断しない場合があり、まだ原因を突き止められていません。

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

CoSpace Rescue 2015 のプログラミングをしてみた その5

2016-01-05 | RoboCup2016

今度は、Stage2 の改良です。

Strage2は、広いので・・・ランダム走行をしていても、そこそこオブジェクトを収集することはできるのですが、なかなか収集箱に入りません。

ただ、ランダム走行を指をくわえて見ているだけでは、全然得点が増えません。

 

やっぱり、何らかの作戦(施策)が必要のようです。

(a) オブジェクトを収集したら、(積極的に)収集箱に入れる

(b) Superオブジェクト、Super+オブジェクトを発生させ、それを確実に収集する

やっぱりこの2つでしょう。

 

まず、(a) ですが・・・

これは、前に出て来た LoadObject の変数を使って、一定以上のオブジェクトを収集(搭載)したら収集箱に行くようにします。収集箱の座標はあらかじめ計測しておきます。Stage2では、ロボットの座標が判るので、収集箱の座標に向かわせるのは結構簡単です。

・・・と思っていたのですが・・・結構邪魔になるのが「障害物」です。名前の通り通行の障害になります。(笑)

でも、とにかく、行きたい座標、ロボットの座標が判るので、ロボットが向かうべき方向が計算できます。早速プログラムに組み入れてみると・・・ちゃんと収集箱に入ります。

お~う やったね!

 

ところが・・・話はそう簡単ではありません。

ロボットが収集箱に向かっている途中で、クルッと踵を返して離れてしまいました。

何で!?

どうも、「信号ブロック領域」に入ったようです。

ルールを読んだだけでは、何のことか判らなかったのですが、この領域に入るとロボット自身の座標が (0,0) になってしまうようです。

これは、けっこう強敵です。

この「信号ブロック領域」は、マップによって固定なんでしょうか? それとも、毎回変わるのでしょうか? 競技中に移動するってことは無いよなぁ?

 

とりあえず、ロボットの座標が (x,y)=(0,0) になったら、「信号ブロック領域」に入ったと判断して、座標計算を無視するようにしました。だから、良く行きすぎます。でも、「信号ブロック領域」を出ると、また収集箱に向かいます。

 

これで、積極的に収集箱に入れるところは、できるようになりました。

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

CoSpace Rescue 2015 のプログラミングをしてみた その4

2016-01-04 | RoboCup2016

さて、まじめに CoSpace Rescue のプログラミングをしてみます。

目標は・・・RCJJ関東ブロック大会2016で優勝した、「Cure Blossom ~again~」に勝てるプログラムを作る、です。

 

これまで、以下の基本的なことはできるようになりました。

①境界から出ない
②罠に入らない
③オブジェクトの収集(格納)
④格納したオブジェクトを収集箱に入れる
⑤テレポーテーション

普通に、ある程度までの得点はできます。

でも・・・オブジェクトの収集にしろ、収集箱に入るにしろ・・・運まかせです。

だから、6個のオブジェクトを搭載済なのに、収集箱に行かないので無駄に発見したりして・・・時間の無駄です。

 

う~ん どうすればよいか・・・

 

何度も、エア対戦を見ていて、以下の方針にしました。(まずは、Stage1)

(a) ロボットには6個以上のオブジェクトを搭載できないので、6個のオブジェクトを搭載している場合はオブジェクトの上を通っても、発見の動作(収集の動作)をしない。

(b) ロボットに4個以上のオブジェクトを搭載している場合は、積極的に収集箱に向かう。

まずは、この2つです。

まず、(a)を実現するのに、どうするか・・・

最初は、独自の変数を定義して、オブジェクトの収集の動作をするときに、値を1つづつ加算していく方法を考えました。よし、これで行こう、と作り始めた時・・・ふと、内部の変数で無いのかな? と確認してみたら・・・「LoadedObjects」というのが、搭載しているオブジェクトの数のようでした。これが6以上ならオブジェクトの上を通っても発見の動作をしないようにしました。

で、この LoadedObjects ですが・・・良く分からないのですが、正確ではありません。実際に搭載しているオブジェクトの数とずれることが多々あります。極端な話、6個搭載していて収集箱に入れるのを失敗すると、実際に6個搭載しているにも関わらず、LoadedObjects=0 というのも何度もあります。

まあ、それでも、この LoadedObjects の値を使うのが一番簡単そうです・・・

 

さて、(b) はどうやって実現しますかねぇ。

これはコースレイアウトに合わせて、いわゆるプレマッピングをするしか無いでしょう・・・(笑)

 単純に、ロボットが4個以上のオブジェクトを搭載している場合に右の境界に触れた場合に真上に行く・・・というプログラムにしました。真上に行けば収集箱があります。

 

とりあえず、この2つを設定したら・・・無駄な動きが減りました。

 

確かに減ったのですが、やっぱり「運まかせ」というのは、あんまり変わらないなぁ。

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

CoSpace Rescue 2015 のプログラミングをしてみた その3

2016-01-03 | RoboCup2016

さて、ここまでは、なんとなくフィーリングでプログラミングをしてみたのですが・・・

今度は手順を踏んで、作業をしてみたいと思います。

手順を踏んで・・・というのは、ちゃんと説明書を見て・・・ということです。

 

で・・・その、説明書と言うのは、CoSpace HP に掲載されているドキュメントです。

参考になりそうなのは3つのドキュメントです。

CoSpace Rescue Real Robot User Guide.pdf

CoSpace Rescue Flashcaed - 4 Feb 2015.pdf

CoSpace Rescue 2014 - Getting Started.pdf

一番上のは、リアルロボット(実機ロボット)の説明書なので、世界大会に参加するチームしか関係ないかもしれません。現在、HPにアップされている資料はちょっと古くて、1世代前の実機ロボットです。(箱型の赤いロボット)2015年の世界大会では平べったい青いロボットが使われたようです。「新しい資料を欲しい」とサポートチームにメールしたら、すぐさま2015年版の説明書を送ってくれました。

 

 

こちらが2014年度版です。

 

 

こちらが2015年度版です。

いやっ、こんなに簡単に送ってくれるのなら、HPに掲載しておいてよ・・・

ちなみに、この第2世代(上の赤いの)や第3世代(下の青いの)が、第1世代と大きく違うのは、ロボットの後ろの超音波センサーが無いことです。そう、昔は、ロボットに4つの超音波センサーが搭載されていました。(でも、今は3つ・・・)

 

さて、2番目のドキュメントはプログラムの基礎、3番目のドキュメントはCsBotの使い方です。

初めて読んでみて・・・なるほど、と思いました。(それまで読んで無かったんかい・・・笑)

ズームなどという機能があったんですね。

 

 

 

この2つのドキュメントは、プログラムにとっても役に立ちそうです。

 

※ただし、どちらの資料もちょっとだけ古いです。2~3年前のルールや環境で書かれたものだと思います。でも、考え方などは、そのまま今でも通用するものだと考えます。まあ、ここらへんも、ルールや環境のリニューアルと共に、新しくして欲しいですね。

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

LEGO 42043

2016-01-03 | ブログ

老後の自分用に・・・LEGOの大人買い

 

 

お・・重い

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

柵の中の白鳥

2016-01-02 | ブログ

柵の中には、沢山の白鳥が・・・(笑)

 

 

(井の頭公園にて)

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

懐かしいポスター

2016-01-02 | うんちく・小ネタ

ウォーキングクローゼットの中のカバンを整理していたら・・・

ゼロハリのケースの中から懐かしいものが出てきました。

2011年のジャパンオープンのプレゼンポスターです。 

 

 

1枚目は表紙・・・おそらく2010年の世界大会の流用(ロボットの写真だけ新しくしたもの)

 

 

2枚目は、友達の写真・・・2007年と2008年の写真なので・・・2010年の世界大会の流用

(今考えると・・・なぜ、2010年の世界大会の写真が無いのかが疑問!?)

 

 

3枚目は、2010年の反省とその対処

この時に、NXT+Arduino というベースが完成しました。

 

 

そして、4枚目の左半分がロボットの説明

右半分は、お世話になった、メジャーのレスキューチーム「NIIT-BLUE」の紹介

これで、ベストプレゼン賞を頂きました。

2011年は、この程度で良かったというか・・・最近のプレゼンは、どのチームも気合が入っているので・・・

 

この頃から、大会の時には、同じロボットを2台持って行って、壊れたら、壊れた部分を交換する作戦でした。(まあ、ほとんど壊れませんでしたが・・・)だから、予備の部品は殆ど持って行きませんでした。 

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

CoSpace Rescue 2015 のプログラミングをしてみた その2

2016-01-01 | RoboCup2016

この年末年始に、のんびりと CoSpace Rescue の研究などしています。

 

さて・・・プログラムをしてみると(プログラムを動かしてみると)一応は動くのですが・・・

・ロボットが収集箱に入っているのに、格納(デポジット)の動作にならない。

・ロボットがオブジェクトの上を通っているのに、オブジェクト発見にならない。

などが多発することに気が付きました。

色の検知に使用するセンサーの値(そして、それを判定する閾値)がおかしいのでしょうか!?

いろいろ、やってみました・・・

一時は・・・このPCの性能が悪いから、ロボットの動くスピードに対応できないんだ・・・

とPCのせいにしたりしていました。

 

で・・・結局

 

(あえて、あまり詳しく書きませんが・・・)

同じオレンジ色の領域に入っているハズなのに、左右のカラーセンサーの値が違っていることに気が付きました。

どうも、日陰(ひかげ)と日向(ひなた)でカラーセンサーの値が違うらしいです。(このこだわりが素晴らしい!)

ということで、これを考慮してプログラミングをしたら、飛躍的に得点が伸びました。 

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

2016年

2016-01-01 | ブログ

あけましておめでとうございます。

昨日(大晦日)は、夕方から「笑ってはいけない」をずっと見ていて、笑いすぎてお腹が痛いです。

 

さて、今年は、どんなことが起こりますやら・・・

 

 

ブログ開設から474日で、アクセス数が 300,150 PV 、50,988 IP とちょうど30万件を越えました。 

 

この一年が私達に(そして皆様に)とって素晴らしい一年でありますように。 

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