コートにおける位置把握方法?こんにちは、GRA父です。寒くなってきましたね~。暑がりの私ですが、うれしくない季節になりつつあります(笑)前回”アウトオブバウンズ対策?の雑談”という記事を書いたと思いますが、2番目の超音波とかで位置を~というの書いたときに、まだ使えるんじゃねぇ?と思いましたものですから、今回、記事にしてみました。前まで、超音波センサとは?というものも記事にしていましたので、せっかくですから、初心者チームの方を対象にして、超音波センサを使ったコート上の位置把握の制御の仕方について書きたいと思います。過去の技術公開でも、近いことは書いてあったと思います。ここまで特化してなかったと思うので、今更ながらになりますが書きたいと思います。»»続きを読むこれは記事のカテゴリの通り、当方チームのGRA・CHAN!が実際に行っていた把握方法です。Aコートでの位置把握を書きます(ウチはオープンB未経験チームなので)が、恐らくコートがBになっても、まだまだ使える制御方法だと思うので、皆さんのご参考になれば幸いです。超音波センサを使った位置把握のやり方ですが、まずPING)))の左右の超音波センサを1個ずつ動かして、壁からの距離を各々の距離を計測します。仮に計測結果がでた右の超音波センサの壁からの距離を”A”、左の超音波センサの壁から距離を”B”とします。その次に自分のロボットのサイズを”C”(仮に220mmとか)とします。2013年ジャパンまでのAオープンやライトウエイトリーグのコートの横幅は、1,220mmですよね。普通に考えると、コート横幅”D”(1,220mm)=A+B+Cとなります。総合計は、コートサイズの”D”にはなりません。D-(A+B+C)=0ではないのです、なぜか?超音波センサの誤差というか、デットゾ-ンがあるといか、そういう要素によりAとBには誤差が生じます。自分のロボットのサイズが正確でないことも要因の一つですよね。ここで注意することは、差は一定ではないのです。位置関係によって範囲できてしまいます。コート横幅のサイズになるべきなのにが、場所によりA+B+C=93cmとか、98cm、110cmとか、いろんな合計値が出てきます。この点は、いろいろな位置で実測データを取って、この範囲をだすしかないですね。頑張って、いろいろと調べて見て、その実測データの中から一番最小のA+B+Cを求めます。次に壁とロボットを斜めに置き、その状態でも超音波センサのAとBの計測距離が、ほぼ正確な計測ができている角度を調べて、その角度までロボットを傾けます。距離が計測できるロボットの角度から考えると、既にコート横幅よりも長くなりますよね。その角度で、いろんな位置にロボットを置いてみて実験すると、A+B+Cは130cm以上とかになると思います。先程の最小値を求めた時と同じように、またしても頑張って、実測データの中から一番最大のA+B+Cを求めます。することで、実際に動いているロボットが計測したA+B+Cの値が最小値~最大値の範囲にいるのであれば、計測結果は正常、つまりコートサイズ内にいることにします。範囲外ならば、横にボールとかロボットがいるという風に考えて割り切りましょう。範囲内にいる!ということが判ったら、次に超音波センサの右または左の計測データの誤差が少なく、信頼できる方を基準にして、コート横上で位置把握をしたいグループを決めて、分割していきます。書いたとおり、実際に使用する・しないに関わらず、9分割にしていました。ここまで細かくしても使ってなかったと思うので、4~5分割程度でいいんじゃないでしょうかね?例えばですが、左の超音波センサを基準とした場合、計測データが”5”(=5cm)だったとします。コート分割範囲が決めてあり、仮に0cm~10cmの範囲が位置”9”としている場合には、今回”5”だったので、コート横は”9”の位置にいるというようなやり方です。することでロボットの横位置が、1~9のいずれかにいることが判るので、その位置次第で、走行プログラムをどう動かすかとか考えれば良くなりますよね。Bコートならば、1とか9はラインアウトしているとか・・・。次に縦軸(=相手ゴール)方向の場合ですが、2011年では前後に超音波センサを付けて、横位置把と同じ方法をしていましたが、結局、バックアップとして、後ろの超音波センサだけで位置把握ができるようにしていました。縦軸の場合、A+B+C方式での位置把握は、相手ロボットとかがいることで、結局ほとんど使いものにならず、バックアップであった後ろの超音波センサだけで位置把握をしていたようで、すでに昨シーズンとなってしまった2013年大会では、後ろだけで位置把握をしていました。考えれば当たり前なんですが・・・。従って、縦軸は単純に後ろの超音波センサの計測距離で3~4段階ぐらいの位置把握しかしていませんでした。自陣壁からの距離が、140cmなら敵陣ペナルティエリア付近とか、40cm以下なら自陣ゴール前とかです。先程の横軸把握と複合利用して、同じ40cmでも、図でいう横位置”4~6”の範囲にいるのであればゴール前なので、実際のゴール内の壁から超音波が反射していると考え、ー10cmして、30cm付近にいるとかにしていたようですね。このようにして、位置の把握をしていたようです。ここで、メンターとしての意見ですが、この位置把握方法を活用する場合、相当量のデータ取りが必要です。横軸のデータ取りだけで、丸1日かかると思って下さい。細かく、細かくいろんな位置でデータ取りをするようにしないと、このやり方は試合には向かないです。コンパスセンサのによる方位制御、つまり必ず敵陣の方向に向くを細かく制御できないと、使い物になりません。コンパスセンサ制御?に書いてありますので、参考にして下さい。実際に当方チームの場合には、以下のようなプログラムの流れをしています。1.コンパスセンサで方位をチェックする。2.敵陣方向に向きを整えるプログラム(=当方チームでは、回転プログラムといっている)をする。3.順次、超音波センサを動かす。4.計測結果から、現在位置を求めるプログラムを動かす。5.実機の位置を把握。6.現在位置に沿った走行プログラム(=ボールを追うとか、バックするとか・・・。ご参考になりましたでしょうか?恐らく、今回で当方チームが行っている情報を公開できる、といいますか、他のチームにも有益だと思われる情報は以上だと思います。当方チームがやっていて、他のチームでも使えそうな情報がありましたら、公開をしたいとは思いますが、もうないでしょうね(笑)以上、GRA父でした~。試合後の反省こんにちは、GRA父です。今日は、当方チームの知人達が所属する静岡ブロック大会に見学してきました。往復4時間のドライブと、連日のお疲れも重なって、かなり早く寝ちゃいました(爆笑)早く寝すぎたおかげで、こんな時間に起きてしまい、眠れなくなったのでblogでも!ということで書こうかと思います(笑)当方チームが所属もしていないし、参加もしていないブロック大会を講評するのはおかしいと思うので、そういう点では書くことは出来ないですね~。今日聞いた話から思った事が、全ロボカッパーに通するだろう点を、このシリーズの番外編として書きたいと思います。タイトル通り”試合後の反省”です。»»続きを読む実はこれって、とても大切なことなんですよね。偉そうに書いちゃいますが、何かといいますと、まず、そのロボットのどこがダメだったかの検証を、まずすべきです。これ、とても大切です。試合後に色んなチームの話を聞くと、必ず言うのは”もっといいロボットに作り直す”といいます。それはハード的にでしょうか、それともソフト的にでしょうか?もしハード的にである場合には、これ、本当のところどうでしょう?場合によっては、1年かけて作り上げてきたロボットですが、試合で負けた為に作り直す。ハード的に欠点があって作り直すというのであれば判りますが、そのロボットがいいと思ったから、そのロボットで大会に参加したのではないのでしょうか?作り直すと言う前に、そのロボットが本当にハード的にダメだったかダメだしをしてからでも遅くないと思います。当方チームの場合、一つの大会でハードからやり直しているという点があるのは、2009年大会では”ハンドルの義務化”と”ゴールに進入してはならないのでボディカバーの取り付け”です。2010年大会は、元々スケジュールが押していて、モーターをガンローラーからダイセンオムニに変更したことですが、これは先にも書いた通り、元々する予定であったが、時間的に間に合わず大会単位で改良していっただけです。FW1台については、ノード大会からセンサー増設だけで、基本は一切変更してません。(いわゆるボールが見えない死角がありすぎた為の対策です。)2011年大会は、ブロックとジャパンとで、ボールがパルスか常時光かの違いで、センサーの改造はしましたが、その他については、一切してません。一貫して言えることは、まぁ、悪い言い方で言えば知識が乏しいので、全く同じ構造のロボットであったわけですが(笑)まずは大会に参加する為に作ったロボット、本当に問題があったか確認すべきです。ある一定レベルを超えたチームのロボットの場合、まず間違いなく、ソフト=プログラムがそのハードに適していないと思った方がいいです。試合でうまくボールを見つけられないとかの場合、その方向にセンサーがあるのであれば、その問題点は間違いなくソフトです。(センサーが壊れているなんて事もあるのですけど(笑))当方チームで、一例を挙げると、ボールが見つからなくなると、自陣ゴールに戻るようにしています。むつめ祭の時ですが、自陣に戻るとなぜか右コーナーがお好きらしく、必ずそこに戻っちゃいます。書くとプログラムだと判りますが、その理由が様々な要因が絡まっていたようです。バックする時のモータにかけるPWN値のパワーバランスや超音波による位置判定の甘さ、そして極めつけがBackプログラムのリセットの仕方・・・っといったような感じです。唯一あるのは、オムニが空転しかけていた=取れかかっていたというのも絡んじゃっていないわけではないですけど(笑)ソフトをまずもう一度見直して改良していきましょう。いつかはそのハードによって壁にぶち当たると思います。その時に初めてハードを直しましょう。ハード的な問題を把握しているのであれば、それは修正していく必要があります。大幅に変えるのではなく、その問題点だけを、まずは直すべきかと思います。その後に、その問題点修正を含めて、新しいロボットを作るべきだと思います。自分で考え、納得してロボットのハードを作ったわけですから、問題点はそんなに多くないはずです。例えるなら、スタートスイッチが押しにくい。スタートスイッチの位置を押しやすい所に変える。試合中、電源が勝手に切れてしまう。電源に使っている配線が細いとか抜けやすいとか、それとも電源容量が足りないとか。電源容量が足りなくなるのは、人のこと言えませんが、パワー=電圧を上げる方向だけ着目しているからで、電池の直列接続以外にも並列接続も検討すべきです。モーターが回ることで、基板に供給していた電圧がドロップしてしまうならば、基板電源の手前にコンデンサーとかを配置して、ドロップ対策をするとか。モーターのパワー不足の場合、もしかしたら、モーターに繋げている配線が細いからしっかり電気が伝わらないのかもしれません。これは配線を太くすることだけでも、少しですがパワーは上がります。人それぞれの考え方があるので、私がこんな事書いても、所詮は私個人の考え方ですけど(笑)GRA・CHAN!というチームのメンターをしていると思うことですが、全く同じに作ったはずのロボット、当方で言うとFWとGKですが、市販品とかと違い手作りなので、びみょ~なバランスで成り立っているのがよく判ります。同じプログラムでは、うまく動かないのです(爆笑)試せるチームは、お試しあれ~。力が付きますし、経験値upですよ!!!以上、やっと眠くなってきたGRA父でした~。ダイセン6chモーターボード爆発(?)こんにちは、GRA父です。GRA・CHAN!達は今週、期末テスト期間でした。月末は、なぜか2人とも受かってしまった市主催の1週間ホームステイ・・・。倍率から見ると、2人ともはありえんだろ~と、軽い気持ちで応募させてしまったGRA母共々ちょっと反省です(笑)明日は、ちょっと用事で実家に日帰りして、日曜日は事前研修です。来週は部活の試合、そしてまた事前研修。その翌週は最終準備、そして最後の事前研修・・・。いうことで、今月はそんなに(まったくしないと思いますけど(笑))ロボ活動できないので、”GRA父のひとりごと”のオンパレードとなりそうな。ネタがないぞ!と悩んでいます(笑)余談はさておき、今日の番外編は、ダイセンの6chモータボード基板が壊れちゃうことについてです。»»続きを読むダイセンのHPにも、この件で告示されていますね。2011年シーズン、この現象が当方チームで発見できるまでに4枚ほどボードを焼きました(涙)ICを取り替えて直した基板や予備を含めると、家には6枚+部品取り1枚も、6chモータボード基板があります。放置プレーをして、しっかり6chモータボード基板の回路をチェックしなかった私にも原因があるのかもしれませんが、かなり痛手でした(涙)ダイセンさんのHPにも書いてありますが、モータを正転・逆転を待ち時間無しで行うと、基板が熱くなったり、モーターのスピードが遅くなったりと、動作が不安定になってしまうという事象が発生します。いうか、当方の場合では、FETが破裂してしまうとが最悪の場合、メインのPICまでダメにしてしまうことがありました。6chモータボード基板がお亡くなりになるのでしょうか?最初にまず、6chモータボード基板の回路図を見ると、モータのON/OFF制御は”Hブリッジ回路”です。普通、モータ制御といえば”Hブリッジ回路”を組みますが、この”Hブリッジ回路”にも実は原因の一端があります。Hブリッジ回路は、その名の通り、アルファベッドのHの形をしている回路です。これからモータのON/OFF制御について簡単に説明していきます。1スイッチS1~S4が全部オフになると、モータMは停止します。2スイッチS1とS4をオンにすると、モータMは正回転します。3スイッチS3とS2をオンにすると、モータMは逆回転します。ここで、正回転から逆回転に切り替わるタイミングで、なにも細工をせずに正回転→逆転に切り替えると、一瞬、スイッチS1~S4がすべてオンになってしまいます。正回転と逆回転のスイッチS1~S4を同時にオンになるとどうなるのか?電池の+と-をつないだようになります。なると、電池が熱くなるか、スイッチS1~S4のどれかが故障します。どのスイッチが故障するかは、その時々なのでわかりません。実際の6chモータボード基板は、スイッチの代わりに”FET”というものを使っています。”FET”は、スイッチに比べて、すごく壊れやすいので、一瞬でもスイッチS1~S4がすべて、オン状態になると壊れる原因になります。プログラムでモータを停止させても、”FET”は、急には止まりません。当方で1枚無駄にしましたが、切り替えテストをわざとさせて見た時に、FETが破裂する前にFETを止めているハンダが熱で泡吹いて、もの凄い細い白の煙が一瞬でました。従って、基板が熱くなったり(=FETが熱くなるので基板が熱くなる)、モーターのスピードが遅くなったり(FETが壊れかけているのでまともに動かなくなりつつある)とします。いうことで!このFETが切り替わるまでの時間を確保するため、正転から逆転する前に待ち時間が必要なんですよ。ダイセンさんの6chモータボード基板のソフトの中身は判らないので、実際はどうか判りませんが"wait:0.1秒"が必要になるということです。(切り替え時にOFFタイムのプログラムが組まれていないのでしょうね!)当方チームの場合、C-Styleではなかったので?ですが、正転から逆転にする前に一旦、モーターをoffさせ、offさせている時間は、最低でも2ms~5ms程度は必要だったようです。これも電流容量で変わったようですね。これらのことは、通常のモータードライバICも内部ではHブリッジ回路を組んでいるし、他のモーター制御基板でも基本、同じ事なので、不安な場合は、切り替え時には必ずモーターを一旦、数msは、offさせたほうが無難です。それ以外にもモーターが急に切り替わることで、FETに向けて電気が逆流したりしてしまい、それが原因で壊れる事もあります。逆流するかは、モーターの原理をしっかり説明しないとできないので割愛します。他にもいろいろありますが、それは上級者の皆さん(=回路図を読み書きできる人)なら判ると思うので止めときます。(そこまで酷使した使い方は、通常、しないでしょうから・・・。壊さない方がもちろんいいので、無理のない制御を(笑)以上、ネタが無いので今月どうしようか?と悩むGRA父でした~。過去を振り返って・・・こんにちは、GAR父です。今日は、GRA・CHAN!が誕生して、いろいろやってきた事を振り返ってきたいと思います。採用(=娘達が理解したモノ)・不採用といろいろありますが。なんでこんな事を書く気になったのかですが、Yが”お直し”している最中に、昔こんな事を考えたりしたよね~という何気ない会話から、整理でもするか!と思い立ったからです。いうことで、ただの”メモリー”です(笑)»»続きを読むまず最初にした事、つまり2009年シーズンでは、AVRを利用した複数センサー化ですね。これは技術情報でも書いてますが、これができていなかったから、今のGRA・CHNA!の影も形もありません。”ガンローラー”&”C-BALLセンサー”の採用でしょうかね。その他には、当時、”ソレノイドキッカー”という概念もないし、教えるレベルでもなかったので、それ以外のキッカーを検討しました。今でいう”バネキッカー”の前進とも言える”ゴムキッカー”もやりました。ゴムを付けた板(?)に紐を付け、モーターで引っ張り、モーターを逆回転させて、ゴムの反動を利用してキックする構造のモノ。場所を取りすぎた関係で、あえなく不採用となり、採用したのは、モータに板を付けたモーターキッカーでした。ゴムの力が弱いし、ドリブラーもあったせいもあり、キック力がどちらもそう代わらなかったので、当時は”ゴール寸前でボールを離す”と言う事だけのためのモノでしたので、場所を取らない”モータキッカー”を採用しました。モータキッカーやドリブラーを付けるためにモータドライバーICで、ドライバー基板も組みました。制御自身は、オリジナル基板側で、勝手にやっていたので、制御した?といかその条件になれば勝手にやっていた程度です。ほとんど100%で動かしていたようなので、PWN制御が不要だったのでモータドライバーICの必要性は薄かったようですけど(笑)2010年は、技術公開通り、モータをNXTに直付けするのではなく、NXT用の別のモータ基板でI2Cによる制御を導入しました。この年は、ソレノイドキッカーを導入した年でもあります。メンターとして二番目に苦労した年でもあります。大学生レベルにならないと恐らく教わらない昇圧チョッパー回路を教えるため、総ページ数が37ページに及ぶ教本を作りました。理解させるのに半年以上かけました・・・(涙)また2009年から見比べると、オリジナル基板の制御を若干複雑化して、センサーを増やしましたね。ドリブラーやキッカーの制御を、AVRで勝手にやるのではなく、しっかりNXTで動かしたいタイミングで制御できるようにしましたね。あとモータ基板の電源のためにR/C用の”リチュウムイオンバッテリー”も採用しました。これは単に、電池の消費が異常に多かったので、その対策程度の考えでしたね。今となっては、正解です。GRA・CHAN!としてのスキルが完成した年です。2011年シーズンは、恐らく全国的にも初であろうと思われるダイセン6chモータ基板とNXTを接続・採用した年です。これでスピードの高速化が図れるようになりましたが、今考えると、できなかった方が、私としてはものすご~くよかったように思えます。(お財布的に(笑))その他として、現在使用しているARMの基板を1枚購入し、実験を始めた年でもあります。(1ヶ月で中止しましたけど(笑))結果、NXTで行く事になったので全て不採用になったのですけど、このARM以外に、Arduinoを利用した事も実験しました。NXTへAVRの代わりに、Arduinoを接続したり、Arduinoにダイセン6chモータ基板を接続したり・・・。これらを11月頃までやっていました。結局、NXCや通常のC言語開発環境(AVRの)とArduino言語との差=違和感からArduino自身採用する事は無かったです。(どう表現したらいいか、いい言葉がまったく浮かびませんが、教えている私自身も、かなりの違和感があり、どうしても最後まで受け入れる事ができなかった・・・。)あと、モーターのカーボンブラシ化でしょうか。ほんと、この年は、いろいろやりましたが、結局、ダイセン6chモータ基板とカーボンブラシ化を2010年モデルに搭載しただけでした。あと、ジャパン予選前日に全部破壊されたので、全く日の目も見ませんでしたが、通常のTJ3光センサーを改造して、パルスボール対応にもしましたね。その後は、突然のクラッシュの繰り返しでしたので、これ以上はなにもできませんでした。結局は2011年までは、NXTに依存したロボットでしたね。やって振り返りながら書いていくと、なんか、いろいろやってきたなぁ~と思います。NXTからARMへの移行。私のお財布には過去、比べるものない程の非常にきびし~年でしたね(爆笑)(なんて言ったって、2台分ですから(涙))また娘達の中学入学による生活環境の大幅変化と、このARM移行+αだけで、ロボットが一切完成しなかったシーズン。(ハードだけは1.1kg以下のライトウエイトリーグ用はできましたけど。)つまり予定通りではありましたがロボカップジュニア2012公式戦は不参加。2012年以前では、5月ジャパン!でしたので、区切りよく、先般の”せとうちオープン”。この大会で、2012年シーズンが終わったという区切りができました。今シーズンはまだ始まったばかり、やっと例年の状況になったわけですね。2013年シーズンは、まだまだGRA・CHAN!としては、初物ばかり体験をしてもらわないとせっかく移行した意味がないです。あの子達のせとうちのプレゼンに書かれていた”---私達の進化は始まったばかり。これからも止まりません---”を信じて、今シーズン、頑張ってもらおうかと思っています。相変わらず、支離滅裂な駄文ですね~。以上、GRA父でした~。外周カバーは必要?こんにちは、GRA父です。せとうちが終わって、娘達メンバーは羽を広げまくって、ロボ活動なんてアウトオブ眼中です。・・・と言う事で今月は中間テストもあるし、三市大会も間近なので、このまま当分、ロボ活動はしない事でしょう(涙)さて、今日は先般、宣言した”いらんアドバイス”のことです。その中でも、タイトル通り”外周カバー(=ロボットカバー)”です。大多数のチームの皆さんは、カバー無しですよね。あっても、目的がはっきりしていないチームさんもいますよね。当方チームの特徴にもなってます”外周カバー”ですが、いろいろと意味があって取り付けています。»»続きを読むさて、それはなんでしょう?1つ目。チームステッカーが貼れる!ので、目立てるぞ~!!・・・意味はそれほど無いですよね。外周カバーの材質だけだと引っかかりやすい(=滑りにくい)のですが、ステッカーの表面材質は、滑りやすいので、壁際の際には重宝しているようです。内部の配線がすべてカバー内に隠れる為、見た目がすっきりするし、配線が隠れているので、配線によってロボット同士が絡まない。内部にまで突っ込んでくるの防止できる。これにより内部の基板とかが壊れない。2009年の関東ブロック大会まではカバー無しでしたが、内部に取り付けていた超音波センサPINGに相手が衝突し、変な方向に向きが変わってしまった。これにより、位置制御が全く出来なくなった・・・・。故障に繋がりやすくなりますよね。これを外周カバーで防ぐ事ができるのです。相手と衝突した際、両者ともカバーナシの為、相手ロボット又はこちらのロボットが相手ロボットに食い込んでしまいロボット同士が絡み合ってしまう。食い込んでしまうので、乗っかってしまったロボットの方は、タイヤが浮いてしまうので、走行ができなくなるし、乗っかられたロボットの方は、その重さでうまく動けなくなる・・・。ヘンな動きをします(笑)せっかく相手よりも先にボールを見つけても、相手ロボットが絡んでいる為、ボールに向けて走行できない。得点チャンスを失う事に繋がり、またディフェンス時にはファインセーブが出来ず、得点されてしまいます。この状態になると審判が両者を引き離してくれないと、その状態がず~と続いてしまいます。いらん事です(笑)が、中が見にくい為、なんの基板とか、相手に知られない!、判らない!という秘密主義を貫ける為だそうです。(ホント無意味な理由ですね・・・。)等々の理由があって、当方チームは外周カバーをつけています。デメリットもあります。その中で、わかりやすい例を挙げると・・・。ロボット分解時にカバーをはずす工程が必要になるので、この点がじゃま!=作業効率が悪くなる。