SKY Crew Lab

RoboCup Junior(ロボカップジュニア)参加チーム、SKY Crew(スカイクルー)の技術ブログ。
技術の共有・伝達を目的に、ロボットに関するいろいろな情報やガイドを載せていきます。

2017年大会でRescue Line(レスキューライン) 世界3位、2018年大会でSoccer Lightweight(サッカーライトウェイト) 世界総合5位を獲りました!

カテゴリ: ハードウェア

IMG_3406 (1)

kossanです。

Twitter上でのご要望にお応えしまして、RoboCupJunior 2017の日本大会に出場したレスキューロボットを紹介します。

戦績

実際の最終成績は第1,第2ラウンドの良い方と第3ラウンドの合計値で決定されますが、以下の情報は全3ラウンドの合計値になります。大会結果の詳細についてはこちらをご覧ください。

最終成績:優勝

救助数:12

競技進行停止数:4回(出場チームの中で最も少なかったです。)

機体解説

使用部品

メインフレーム:LEGO Technic

・タイヤ:前輪-LEGOバルーンタイヤ, 後輪-LEGO(レゴ)用58mm プラスチックオムニホイール (14135) 

・制御:インテリジェントブロックEV3

・ラインセンサー:HiTechnic NXT Color Sensor V2 2個

・斜面センサー:自作

センサーb2

ラインセンサーは坂に沿って上下に移動するようになっているので、下図のようにセンサーを保持する部品に真鍮板をつけ、タッチセンサーを作りました。坂の登り始めと下り終わりには①が、登り終わりと下り始めには②が反応します。

センサー概略図

最大の闇、センサーポート節約術

このロボットには、ラインセンサー以外に以下の6つのタッチセンサーが使われています。

・障害物検知センサー

・斜面センサー(登り始め・下り終わり)

・斜面センサー(登り終わり・下り始め)

・救助エリアの壁検知センサー

・アーム開閉検知センサー

・ジャッキ開閉検知センサー(ジャッキについては後ほど。)

この6種類に対してEV3のポートは残り2つ。そこで私たちは、6つのセンサーを頑張って2つのポートに割り振りました。

スクリーンショット 2019-11-04 10.02.58

縦に並んでいるセンサーは並列に接続されているので、どれがONになってもEV3は同じように認識します。ただし、*印のあるセンサーは、押された時にOFF・離された時にONになるようにしています。

ちなみにマイクロスイッチや自作センサーをEV3に接続するために、当時の私たちはタッチセンサーを破壊して中の基板にスイッチを接続するという方法をとりました。

この方法はタッチセンサーがかわいそうなので、もし同じようなことをされる方はこちらからEV3 ハードウェアデベロッパーキットをダウンロードしていただき、3. Appendix LEGO MINDSTORMS EV3 touch sensor hardware schematics.pdfを参考に回路を作成することをお勧めします。

第二の闇、超大型アーム

このロボット、普段のライントレース中はこのようになっています。

IMG_3396

これが避難ゾーンに入ると、アームをガバッと

IMG_3402

展開して

IMG_3413

被災者を壁まで運んで

IMG_3418

回収します。もうお気付きの方もいらっしゃるかと思いますが、障害物があると詰みます。障害物が無かったのが奇跡でした。

出番がなかった秘策、ジャッキ

裏b1

写真の赤いパーツがジャッキです。これは上り坂に設置されたバンプを越えるために作成しました。ジャッキが作動する仕組みは以下の通りです。

スクリーンショット 2019-11-04 16.17.09

①普通に坂バンプを越えようとしても、後輪は滑ってしまいます。そこでジャッキを下ろします。

②ジャッキが車体を持ち上げると、ジャッキごと車体が前に少し滑ります。

③そこでジャッキを戻すと①の時より後輪がバンプの上寄りに乗っているので、バンプを乗り越えることができるようになります。

こんな大掛かりな機構を導入しましたが、結局使いませんでした...。さらに関東大会・日本大会と登り坂バンプ対策をして空振りだったので、油断して機構を外したら世界大会でしっかり出てきました(泣)

ただこれは2017年の話でありRescue Lineは年々難化しているので、日本大会で登り坂バンプが出てくる日もそう遠くはないかもしれません。

まとめ

・闇ばっかりなので参考にするかどうかはあなた次第です

うえるだん3

kossanです。

2018年世界大会の報告記事に書くと約束しておいて忘れていたのですが(←おい!!)、世界大会の時に僕たちを襲ったモーター事件について書いておこうと思います。

盛大な書く書く詐欺をしてしまい、すみませんでしたm(_ _)m

注意

ここではPololuの20Dモーター(25:1)を使っていて起こった事件について書いていますが、これは僕たちの使い方が悪かったために起こった「事件」であり、犯人は正直言って僕であり、モーターが悪かった訳ではありません。

このモーターも正しい使い方をすればとても便利だと思います。

モーターの良い悪いではなく、モーターの使い方の良い悪いを考えながら以下を読んでいただけると幸いです。

世界大会のロボットについて補足

世界大会機の足回りは4輪オムニで、角度はロボットの真横方向から35度の角度で取り付けました。

モータードライバはPololuG2ハイパワーモータードライバ 18v17を使い、オムニはGTFRobotsの50mmオムニホイールを使いました。

何が起こったか

世界大会の競技初日、第2戦でイランのチームと試合をしました。相手はジョンミン4輪(見た感じ。この記事では、以降"ジョンミン"と記します。)で、とにかく速くてパワフルでした。

試合後半、双方のロボットが押し合いになりました。その時、日本の審判であれば "Lack of progress" や "スタック" をとって双方のロボットを引き離すことがほとんどだと思います。

しかし当時は審判がなかなか手を入れず、膠着状態が続きました。

IMG_2468

それを2度ほど繰り返した時、僕たちのFWロボットの動きが極端に悪くなりました。

とりあえずFWを故障で出し、イモネジや配線のチェックなどを行いましたが、どうにも右後ろのモーターが動きません。

ギヤボックスが壊れたかと思いましたが、車輪を手で回すとしっかりとした手応えを感じます。結局その試合では回復させることができず、負けてしまいました。

原因

まず、モーターは明らかにトルク不足でストールしていました。モーターの選定ミスです。押し合いになった時に車輪が滑るくらいのトルクは必要なんですかね...。

ただし、相手のジョンミンはストールしていたのにその後も動き続けていました。

モーター選定は、トルクや回転数だけでなく耐久性も含めて行ったほうがいいのかもしれません。

さらに、捕捉エリアの構造にも原因がありました。捕捉エリアにはキッカーを搭載しておらず、ボールが当たる部分に板を設置していました。

ball_capture

これが、ボールの半径である27mmより高い位置にあったため、ロボットがボールを押した時に車体前部が押し上げられました。

これにより後輪に負荷が集中し、後輪モーターがストールした、というわけです。

また、モーターを保護する手段もつけていませんでした。

RoboCupJunior出場者の中でもモーター保護機能をつけている人は少ないと思いますが、これがあれば防げたことです。

応急処置

その試合の間に原因を特定することはできませんでした。

試合後、まずFWを動かす必要があるため、ポジションをチェンジさせました。GKはそこまで激しい押し合いをしていないため、モーターは健全でした。

ロボットの構造を2機で統一しておくと、こういった場面で便利です。

右後ろのモーターが壊れたロボットも、なんとかしてGKをさせました。

どうしたかというと、壊れたモーターと対角線状に配置してあるモーターのギヤを取り去り、空転するようにしました。(参考動画)

そして、そのロボットを対向2輪のようにして動かしました。左右の動きを優先するため、ロボットは35度横を向かせ、なんとかボールを追わせました。

プログラマの2人、本当にありがとう!!

しかし前に出ることが難しいので、"カニ歩き"として故障を取られたりしました。

その後の対処

とりあえず直してみよう

宿泊先で壊れたモーターを分解し、中を見てみました。

IMG_3093

典型的な130モーターに似た3極モーターで、整流子に取り付けられていたであろうリングバリスタが外れていました。

リングバリスタはなくても動くはずなので、一旦取り除いてみましたが、回ってくれませんでした。

次に整流子とブラシ周りを疑いました。

何故かというと、以前この類のモーターを作ったときにもっともトラブルが多かったからです。

クリップモーターを作ったもののエナメル線のやすり具合でうまく回らなかった、といった経験を持つ方も多いことでしょう。それと同じです。

ブラシはカーボンだったので、まず整流子を磨きました。

それでも回らないのでブラシも磨いてみましたが、ぴくりと動いただけで回ってくれませんでした。

現在のところ、モーターが回らくなった原因は発熱によりコイルの被覆が溶け、コイル内でショートが起きコイルの磁力が弱まっていたことだと考えています。

代替品を買いに行こう

もとのモーターを復活させることが困難だとわかったため、代替のモーターを買いに行きました。

なぜ予備を持って行かなかったんだか。予備も重要です。(←今さら何を言ってるんだか)

地下鉄とバスを乗り継ぎ、ABRAという店に向かいました。

IMG-2503

幹線道路のわきにポツンと建っていて、入ってみるとまるで秋葉原にある店のようでした。

秋月というより千石のイメージで、(ただしかなり広い)ジャンク品も色々置いてあったと思います。

事前にABRAのホームページを調べて、6V定格で130モーターに似たものを売っていることを見つけました。

店内でそのモーターを見つけ、店員の人に在庫を出してもらいました。

手にとって見てみたところ、筐体に窓が開いていてシャフトが長いものと、窓が開いておらずシャフトが短いものがありました。

窓から中を覗くと、カーボンブラシが見えたので一安心。

ただしギヤボックスの設計上、長いシャフトは入らないので短い方を買ってきました。

いざ、換装っ!!

2日目の試合には間に合わなかったので、その日の夜にモーターを新品に交換しました。

IMG_2569

旧モーターより長く、エンジェルリングの半固定抵抗とぶつかりそう...でしたが、ギリギリ収まりました。

早速動かしてみたところ、とてつもない速さで動きました。絶対怪しい。

モーターをもう一度よく見てみたところ、マブチの刻印がありました。

モーター刻印

その刻印をもとに調べたところ、定格が6Vではなく2.数Vの貴金属ブラシモーター, FF-180(リンクは参考までに。)でした。

半ば騙され、半ば早とちりで変わったモーターを手に入れてしまいました。

まあ1個約300円と安かったので、そこまでダメージは大きくありませんでしたが。

結局、PWM制御で出力を下げることで対応し、また貴金属ブラシに負荷をかけないよう、ここ一番の試合以外は出力を抑えめにしました。なにせ2日間の不調で20位くらいまで転落していたので、そこまで強いチームとは対戦しなかったので。

また、これ以上モーターが壊れないよう、ボールが一定時間以上捕捉エリアに入り続けた場合に前進を止めるようにしました。

その後はモーターを壊すことなく、着実に勝利を重ねました。が、競技成績では7位までしか届きませんでした。∫ (╥_╥) ∫

大会後の実験

今年の1月にふと、「カナダで買ったモーターに元々のモーターのカーボンブラシをつければ良いのでは?」と思い立ち、実際にやってみました。

新モーター_mark

赤丸のところを削り、ブラシが付いている部分をこじ開けて外し、付け替えました。電源につなぐと元気に回ってくれました。

カーボンブラシになった分遅くなった気もしますが、逆に元のモーターと同じくらいになってよかったかもしれません。

そういえばこのモーター、外形を見てみるとDIGILENTのギヤードモーター, (および秋月の多分同じモーター)とよく似ています。

RoboCupJuniorのサッカーライトウェイトだと、これくらいのモーターがちょうどいいのかもしれません。

結論

・ジョンミンは色々な意味でつおい

・モーター選定はトルクに注意

・モーターの予備は買っておこう

以上っ! ではまた。

kossanです。

コメント欄に、次のような質問をいただきました。

PCBでラインセンサーの回路を作っているように見えるのですがどのようにして同心円状に照度センサーなどを配置できたのか教えてください

質問していただきありがとうございました。これについては記事にしてまとめたほうがわかりやすいと思ったので、ここで回答させていただきます。

ただし、僕が使っているのはKiCADなので、EAGLEなど他の基板CADのことは回答できません。ご了承ください。

また、今回の記事作成にあたって使用したのはMac版KiCAD 4.0.7なので、他のバージョンでは記事の内容通りに操作できない可能性があります。

ただ、僕の旧PC(Windows8.1)上のKiCAD 4.~~(←詳しいバージョンは忘れました。)では同じ操作ができていたと思います。

フットプリントの展開〜極座標表示

スクリーンショット 2019-02-18 19.54.03

まずネットリストを読み込み、グローバル移動・配置で部品を展開します。基板外形を他のCADでデザインしている場合はそのdxfファイルを読み込みます。

これ以降同心円上に部品を配置していくので、目印となる円とその中心、半径をEco1.Userなどの補助レイヤーで描いておくとわかりやすいです。

スクリーンショット 2019-02-18 19.55.12

配置したいパーツを移動ツールで動かし、円の中心に持って行きます。

カーソルは移動するフットプリントの原点に置かれるので、もし自作フットプリントを使う場合には原点の置き方にも注意してください。これ以降の作業はフットプリントの原点を利用して進めるので、割と重要です。

スクリーンショット 2019-02-18 19.55.43

フットプリント上にカーソルを動かして⌘+M(Win: Ctrl+M), またはフットプリントを右クリックし、写真のように選択してください。

スクリーンショット 2019-02-18 19.55.52

このようなポップアップが出てくるので、左上の極座標を使用するをクリックしてください。

スクリーンショット 2019-02-18 19.56.08

ここに任意の数値を入れることで、フットプリントを同心円上に移動します。

配置してみる

これ以降、KiCADのくせ者感が出て来ます。

スクリーンショット 2019-02-18 19.56.30

距離50mm、角度0度、アイテムの回転0度の場合です。

フットプリントの原点が、画面右方向に50mm動きました。「0度」がこの位置であるのは、三角関数を習った人にとっては普通ですね。「普通じゃない」と思う人は...こんなもんだ、と捉えておいてください。

問題はここからです。今度は距離50mm、角度90度、アイテムの回転0度にしてみましょう。すると...

スクリーンショット 2019-02-18 19.56.55

角度0度のとき円の右側にいたフットプリントが円の下に移動しました。普通の三角関数とは逆で、角度が増えるに従って時計回りに移動します。少々気持ち悪いです。

今度は距離0mm、角度0度、アイテムの回転45度にすると...

スクリーンショット 2019-02-18 19.57.29

部品が左に45度傾きました。移動とは逆ですね。

つまり、移動の時には時計回り、回転の時には反時計回りにフットプリントが動くということです。なんで統一しなかったんでしょうかねぇ。

このような作業を繰り返すことで、エンジェルラインセンサのプリント基板を設計することができます。

スクリーンショット 2019-02-18 23.08.14

これからもコメント・質問があればどしどしお願いします! では〜

↑このページのトップヘ