ロボカップジュニア・ジャパンオープン2019和歌山 に出場したオフェンスロボットを紹介します。


CIAO Tezukayama 2019 オフェンス

仕様

 サイズと重量

直径              :   210mm
高さ              :   213mm
重量              :   2000g

 プロセッサー

メイン           : STM32F446RE  x1
超音波センサー処理     : ATMEGA328P   x1
ラインセンサー処理     : ATTiny828   x4

 センサー

カメラ         : OpenMV Cam M7
ジャイロセンサー : BNO055 
超音波センサー     : HC-SR04 x2
ToF測距センサー  : VL53L0X x6
ラインセンサー       : (PS1101W+WS2812B) x44
ホールドセンサー : (NJL7302L+緑色LED) x2

 ワイヤレス

TWELITE 標準出力 BLUE

 モーター

maxon motor RE16 + GP16A   19 : 1    x4
モータードライバ :  DRV8432 x2 

 キッカー

クアッドキッカー
(改造 CB1037 + 60V 2000μF) x2

 ドリブラー

ドリブラー x2
   モーター    : SURPASS  2204  1400KV
   ESC    :  HOBBYWING  SKYWALKER  15A
ギヤ比    :  11:35

 バッテリー

LiPOバッテリー  11.1V  1300mAh  

概要

今回のマシンは、昨年のマシンの失敗や、昨年の世界大会で見たり聞いたりしたことを活かして以下のように改善、工夫しました。
  • 全方位ミラーをマシンのできるだけ高い位置に配置した
  • ボールを自由な角度へキックできるようにした
  • ドリブラーを前後に搭載した
  • 障害物センサーを新たに開発した
  • メインのマイコンにSTM32を採用した
  • 内部にほこりが入り込んでも回路が正常に機能するようにマシン内部の基板も極力隠した
マルチアングルキッカーと障害物センサーの組み合わせは、キーパーを突破するのにかなり有効でした。キーパーが追いつけない速度でボールの軌道を変更することでゴール前でフェイントをかけることができます。毎年何かしら新しいことに挑戦してきましたが、今までで一番試合中に活躍していたと思います。

そして、今回のマシンの失敗点です。
  • 5V電源を三端子レギュレータ1つだけで全体に供給しようとしたら、発熱がひどかった
  • バッテリーとカメラのせいで重心が高くなってしまった
  • キッカーの威力がイマイチだった
  • コネクターの選定を怠った
うまくいくかな〜と思いながら設計していましたが、案の定失敗しました。バッテリーの配置に関しては完全に設計ミスです。キッカーに関しては車検の時に坂を10cmも登らないほどの弱さでした。普通のキッカーに多少は劣れどもそんなに弱くならないように設計したつもりだったんですけどね。コネクターの逆差しが原因でロボットが完全に動かなくなることがあったので、ちょっとした配線のコネクターもおろそかにしてはいけないことを学びました。



各機構を紹介していきます。まずは下段ユニットです。上段ユニットとはネジ4本とフラットケーブル1本、電源ケーブル1本でつながっています。
CIAO Tezukayama 2019 オフェンス 下段
CIAO Tezukayama 2019 オフェンス 下段



キッカー

CIAO Tezukayama 2019 オフェンス キッカー
CIAO Tezukayama 2019 オフェンス キッカー

このマシンには右前に打ち出す機構と左前に打ち出す機構が前後に1セットずつ、合計4つのキッカーが搭載されています。左右のキッカーの出力を調整することで自由な方向にボールを打ち出すことができます。前後の機構を連動させることで、2つのソレノイドで4つの機構を駆動しています。





CIAO Tezukayama 2019 オフェンス キッカー
CIAO Tezukayama 2019 オフェンス キッカー

ソレノイドは、タカハ機工のCB1037100のシャフト部分を切り落としてプルソレノイドとして使っています。 2枚目の写真の、ソレノイドのすぐ右にあるつまみが出力電圧を調整する可変抵抗です。カバーを外すだけで簡単に調整できるようになっています。


CIAO Tezukayama 2019 オフェンス キッカー リンク機構
CIAO Tezukayama 2019 オフェンス キッカー リンク機構

リンク機構です。 回転部分での摩擦が極力小さくなるようにベアリングを挟んでいます。可動部分は平行ピンを上下から挟み込むようにして連結しています。


CIAO Tezukayama 2019 オフェンス キッカー 昇圧回路
CIAO Tezukayama 2019 オフェンス キッカー 昇圧回路
CIAO Tezukayama 2019 オフェンス キッカー 昇圧回路

昇圧回路です。使用した素子はXL6019で、11.1Vを58Vに昇圧しています。高電圧ラインを美しく絶縁する方法を試行錯誤した結果、2枚の基板をPOM製のフレームで挟む構造にしました。全部品を組み立てるとこの写真では配線が露出している部分も完全に隠されます。設計当初は昇圧回路の基板に直接コンデンサーが載っていたのですが、後ろにもキッカーを載せるように設計変更した影響で、結果的に何の部品も載っていない基板で蓋をするという頭の悪い構造になってしまいました。


ラインセンサー

CIAO Tezukayama 2019 オフェンス ラインセンサー
CIAO Tezukayama 2019 オフェンス ラインセンサー

ロボットの背面とほとんどの部品を取り外した1段目です。今回はマウスセンサーを中央に搭載しつつ、ロボットがライン上にいるときは必ずどこかのセンサーが反応するように配置しました。また、ロボットが半分以上ラインの外にはみ出してしまっている状態でもフィールドの角を認識できるように、センサーの端をT字にしました。


CIAO Tezukayama 2019 オフェンス ラインセンサー
CIAO Tezukayama 2019 オフェンス ラインセンサー

センサーユニットの単体です。LEDにWS2812B、受光素子にPS1101Wを採用しました。どちらも表面実装なので、センサーユニットをかなり薄くすることができました。厚さが3mmなので、完全にシャーシに埋め込まれます。シャーシに取り付ける部品と干渉することがないので、ラインセンサーを気にせずにキッカーを設計することができました。
LEDはマイコンから1ピンだけで全てのLEDの色、明るさを制御できるものを採用しました。京滋奈ブロックのローカルルールで持ち上げられた時に床面のLEDが消えるようにしなければならないというルールが追加されましたが、ハードウェアを改造することなく対応することができました。ハンドルを持って持ち上げられた時に車体が傾くことを利用して、ジャイロセンサーで傾きを検出するとLEDを消すようにしていました。
マイコンはATTiny828です。ATTiny828は処理速度は若干遅めですが、アナログ入力ピンを多く持っているので採用しました。プログラムはArduinoIDEで書いていて、メインのマイコンからArduino as ISPでプログラムを書き込んでいます。と言っても、メインがmbedなのでArduino用のプログラムをmbedに移植しました。Arduino as ISPは、専用のプログラムを書き込むことでArduinoを書き込み装置として使えるようにする機能です。SPI通信の回路を利用できるので余計な配線が増えずに済みました。


CIAO Tezukayama 2019 オフェンス ラインセンサー
CIAO Tezukayama 2019 オフェンス ラインセンサー

センサーユニットの接続です。 ネジ固定するだけで配線が完了するようになっています。普通のピンヘッダでは基板に収まりきらなかったのでこのコネクタを採用しました。なんという名前なのかわからないですけど、MacBookを分解したら出てきそうなやつです。問題点としては、外すときに角度に気をつけないと基板のパターンごと剥がれてしまいます。正確な位置に半田付けしないと接触不良が起きる可能性があるので高度な技術が必要かもしれません。


オムニホイール と モーター

CIAO Tezukayama 2019 オフェンス オムニホイール
CIAO Tezukayama 2019 オフェンス オムニホイール
CIAO Tezukayama 2019 オフェンス オムニホイール

オムニホイールとモーターです。オムニホイールのサイドホイールにはウレタンを採用しました。CNCで硬度A70のウレタンシートを切削して作りました。従来はシリコン製サイドホイールを使っていましたが、使っているうちに削れてしうので定期的な交換が必要でしたが、ウレタン製にすることで耐久性が増しほとんど削れなくなりました。モーターマウントには出力軸がブレるのを抑えるためにベアリングを挟んでいます。


メイン基板

CIAO Tezukayama 2019 オフェンス メイン基板
CIAO Tezukayama 2019 オフェンス メイン基板

実際に使っていた基板と組み立て直後の写真です。
ここも2枚の基板でPOM製のフレームを挟む構造になっています。八角形の基板の各辺にモーターとキッカーを接続するコネクタを配置することで、配線を短くすることができました。メインのマイコンにはSTM32F446を採用しました。開発環境は、Xcodeのmbed開発環境を自分で開発しました。
一枚目の基板の中央にあるのが姿勢制御のためのジャイロセンサーBNO055です。チップは単体で購入し、自作の基板に半田付けしたので市販品よりかなり安く、小さく作ることができました。


CIAO Tezukayama 2019 オフェンス メイン基板
CIAO Tezukayama 2019 オフェンス メイン基板

メイン基板の裏側と上下分離したところです。
上下の接続はピンヘッダだけなので、ネジで固定するだけで配線完了です。
一枚目の写真のUSBコネクターの近くに配置されているのはST-LINKです。NUCLEOのST-LINKから剥がしてきたチップを半田付けしました。メインのSTM32F446もNUCLEOから剥がしたものを使っています。
裏側にモータードライバーDRV8432が載っていて、11.1Vラインは下側の基板で完結しています。三端子レギュレーターで生成した5Vをマシン全体に供給していますが、採用した素子が良くなかったのか、いまいち安定しないのと発熱がひどいのであまりよくなかったです。


保護回路

CIAO Tezukayama 2019 オフェンス 保護回路
CIAO Tezukayama 2019 オフェンス 保護回路

保護回路です。保護回路でショートされるとどうしようもないので厳重に絶縁しています。発熱する部品は端子部分以外が外に出るようにしました。


CIAO Tezukayama 2019 オフェンス 保護回路
CIAO Tezukayama 2019 オフェンス 保護回路

保護回路のカバーを外したところです。
市販の保護回路で、大電流が流せて安価で小型で余裕を持って遮断してくれるものがなかなか見つからなかったので、自作しました。短絡、過電流、過放電からバッテリーを保護する機能を搭載しました。およそ20A以上、10.5V以下で遮断するように設計しました。ほとんどの保護回路がバッテリーのバランス端子を利用して電圧を監視していますが、バランス端子を接続するとバッテリーの交換に時間がかかってしまうので、各セルの電圧を監視しない代わりに早い段階で遮断するように設計しています。
ただし、保護回路は正しく作れなければかえって危険です。市販の保護回路を用いてバッテリーを保護しつつ、常に電圧を確認しながら運用したほうがいいでしょう。


ドリブラーの回転うけ と ホールドセンサー

CIAO Tezukayama 2019 オフェンス ホールドセンサー

キッカーを支える樹脂パーツにある、白い丸い部分がホールドセンサーです。他のマシンのカメラからは見えないように、上向きに光が漏れない位置に配置しています。ドリブラーの回転うけは、シリコンチューブを通した外形3mmのステンレスシャフトの両端に、内径2.96mmのPOM製部品を圧入してベアリングから抜けないようにしています。


カバー

CIAO Tezukayama 2019 オフェンス カバー
CIAO Tezukayama 2019 オフェンス カバー

ゴミの侵入防止と、他のマシンとの干渉を防ぐために、カバーをつけています。
シャーシを軽量化のために肉抜きしていますが、肉抜きの穴にアクリル製のカバーをはめ込んでいます。アクリルのカバーにはハニカム構造の肉抜きを施すことで軽さと強度を両立しました。
側面カバーはPOM製のフレームとスペーサーによる構造にPPクラフトシートをネジで固定しています。オムニホイール横のスペーサーにはめ込むことにより固定し、また、シャーシにネジ固定することで取り外しやすく、勝手に外れにくくしています。
オムニホイールのカバーは、POM製の部品とカーボン製の部品を組み合わせたフレームをオムニホイール横のスペーサーにカチッとはめ込むことで固定します。カーボンの高い剛性とPOMの柔軟性を組み合わせることで実現しました。


次は上段ユニットです。

CIAO Tezukayama 2019 オフェンス 上段
CIAO Tezukayama 2019 オフェンス 上段
CIAO Tezukayama 2019 オフェンス 上段



全方位カメラ

CIAO Tezukayama 2019 オフェンス 全方位カメラ
CIAO Tezukayama 2019 オフェンス 全方位カメラ

昨年のマシンでは全方位カメラを天板の下に配置したのが大失敗だったので、今回はマシンの最上部に配置しました。カメラの視野の邪魔をしないように天板を低く、直径を小さくしました。ハンドルもアルミ丸棒を曲げて作りました。ミラーを支えるアクリルパイプの固定は土台に差し込み摩擦固定をしています。ミラーの固定も同様です。試合中にカメラが揺れているのでスペーサーをもう一本増やすなどして揺れないように固定するべきだと思うのですが、昔からどうしてもこの形が作りたくてデザインを優先してしまいました。見たところそれほど問題にはなってなさそうだったので良しとしました。
LEDの光を直接見せるのではなく半透明のPOMに光を当ててPOMを光らせることで、近未来感を演出しています。一番目立つ部分なので、デザインを徹底しました。


CIAO Tezukayama 2019 オフェンス 全方位カメラ
CIAO Tezukayama 2019 オフェンス 全方位カメラ

ネジ4本で簡単に取り外せます。コネクタも抜き差ししやすいように配置しました。配線が見えるのが許せないので、少し工夫しました。 OpenMVが外から見えるとカッコ悪いので完全に隠しましたが、そうするとUSBケーブルが差せなくなってしまいます。USBの配線を延長してメインマイコンのプログラムの書き込み用ポートの隣にOpenMV用書き込みポートを配置しています。ただし、このようにUSBを延長するのはあまり良くないようです。


ドリブラー

CIAO Tezukayama 2019 オフェンス ドリブラー
CIAO Tezukayama 2019 オフェンス ドリブラー
CIAO Tezukayama 2019 オフェンス ドリブラー

今回のマシンは重量が重くなることが予想されたので、重量が増える主な原因であるドリブラーを出来るだけ軽くなるように設計しました。見た目は重そうですが、中身は徹底的に肉抜きされていて軽いモーターを採用しているので、比較的軽く仕上がったと思います。
モーターはブラシレスモーターを採用しました。ブラシレスモーターは負荷がかかっても回転数が落ちにくいので、回転数を下げても十分ボールをホールドできます。ブラシ付きモーターでもギヤボックスで減速すれば十分ホールドできますが、その分重量が重くなってしまいます。



ドリブラーの回転機構です。アウターロータ型のモーターなので、出力軸とともに外装部分も高速で回転します。ドリブラーが持ち上がった時にモーター部分の高さが変わると、最悪の場合配線が巻き込まれて切れるなど、周りの部品が破損する可能性があります。モーターの回転軸の延長上にドリブラーの回転軸が来るようにすることでモーターの高さが変わらないようにしました。また、軸周りの突起でドリブラーの可動範囲を制限しています。


CIAO Tezukayama 2019 オフェンス 上段
CIAO Tezukayama 2019 オフェンス 上段

天板の裏側です。ブラシレスESCはPOMとアルミで挟むようにして固定しています。ESCが被覆で絶縁されているといえどもアルミで挟むのは如何なものかと思いましたが、スペース的な問題と強度的な問題からアルミを使うことになってしまいました。


障害物センサー

CIAO Tezukayama 2019 オフェンス 障害物センサー
CIAO Tezukayama 2019 オフェンス 障害物センサー
CIAO Tezukayama 2019 オフェンス 障害物センサー

ToFレーザー測距センサー VL53L0Xを前方に5つ搭載しました。VL53L0Xは超小型なのでドリブラーと天板の間に配置するのに最適でした。VL53L0XはI2C接続で、マスターからアドレスを変更できるのですが起動時に毎回設定しなければならず、センサーにリセットをかけながら順番に設定する必要があります。そのため複数同時に接続するには工夫が必要なのですが、I2C GPIOエキスパンダーでIOポートを拡張することで配線を最小限にしつつセンサーを複数搭載しました。
従来はゴールを隠している部分を相手マシンとしていましたが、障害物センサーでは相手マシンを直接認識するのでゴールが見えなかったり隠れていなくても相手マシンを検出できます。障害物センサーとカメラのゴール認識、マルチアングルキッカーを組み合わせて、敵がいない方のゴールの端を狙ってシュートしていました。


タッチディスプレイ

CIAO Tezukayama 2019 オフェンス タッチディスプレイ

昨年は搭載できなかったタッチディスプレイです。静電容量方式のAdafruit 2.8インチ TFTタッチシールドのディスプレイ部分だけを取り出して使っています。ディスプレイでは各センサーの値の表示や調整、モーターの出力の調整、サンプルキックなどが行えます。
ディスプレイを搭載していない昨年のマシンと比べると圧倒的に試合前の調整にかかる時間が短くなり、ハード面の確認に回せる時間が長くなったのでネジが外れるなどの単純な故障はかなり減らせたと思います。
ディスプレイを搭載するときの最大の問題点としてはグラフィックスに時間がかかることだと思うのですが、このマシンではあらゆる工夫を凝らして高速で繊細なグラフィックスを実現しています。背景やアイコンにビットマップ画像を使いたかったので、内蔵メモリの容量が大きくCPUの処理速度が速いマイコンを採用しました。ディスプレイとの通信を最適化していますが、画面全体を書き換えるときはどうしても上から順番に書き換えられていくのが目で見えてしまいます。一瞬だけバックライトをオフにしてその瞬間に書き換えることで、一瞬にして画面が切り替わったかのように錯覚させています。アイコンの角が丸くなっていますが、これを実現するのは結構難易度が高かったです。フォントにも美しい字体のものを採用しました。


3Dモデル



最後に、今年のマシンのCADデータを公開します。今回紹介しきれなかった部分もCADデータを見てもらえたらわかると思います。実際のマシンと多少異なる部分もあると思いますが、設計だけして実現に至らなかった部分がほとんどです。お蔵入りするのはもったいないのでぜひ見てもらえたらと思います。



ディフェンス編はこちら