ロボカップジュニア・ジャパンオープン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つだけで全体に供給しようとしたら、発熱がひどかった
- バッテリーとカメラのせいで重心が高くなってしまった
- キッカーの威力がイマイチだった
- コネクターの選定を怠った
各機構を紹介していきます。まずは下段ユニットです。上段ユニットとはネジ4本とフラットケーブル1本、電源ケーブル1本でつながっています。
キッカー
このマシンには右前に打ち出す機構と左前に打ち出す機構が前後に1セットずつ、合計4つのキッカーが搭載されています。左右のキッカーの出力を調整することで自由な方向にボールを打ち出すことができます。前後の機構を連動させることで、2つのソレノイドで4つの機構を駆動しています。
ソレノイドは、タカハ機工のCB1037100のシャフト部分を切り落としてプルソレノイドとして使っています。 2枚目の写真の、ソレノイドのすぐ右にあるつまみが出力電圧を調整する可変抵抗です。カバーを外すだけで簡単に調整できるようになっています。
リンク機構です。 回転部分での摩擦が極力小さくなるようにベアリングを挟んでいます。可動部分は平行ピンを上下から挟み込むようにして連結しています。
昇圧回路です。使用した素子はXL6019で、11.1Vを58Vに昇圧しています。高電圧ラインを美しく絶縁する方法を試行錯誤した結果、2枚の基板をPOM製のフレームで挟む構造にしました。全部品を組み立てるとこの写真では配線が露出している部分も完全に隠されます。設計当初は昇圧回路の基板に直接コンデンサーが載っていたのですが、後ろにもキッカーを載せるように設計変更した影響で、結果的に何の部品も載っていない基板で蓋をするという頭の悪い構造になってしまいました。
ラインセンサー
ロボットの背面とほとんどの部品を取り外した1段目です。今回はマウスセンサーを中央に搭載しつつ、ロボットがライン上にいるときは必ずどこかのセンサーが反応するように配置しました。また、ロボットが半分以上ラインの外にはみ出してしまっている状態でもフィールドの角を認識できるように、センサーの端をT字にしました。
センサーユニットの単体です。LEDにWS2812B、受光素子にPS1101Wを採用しました。どちらも表面実装なので、センサーユニットをかなり薄くすることができました。厚さが3mmなので、完全にシャーシに埋め込まれます。シャーシに取り付ける部品と干渉することがないので、ラインセンサーを気にせずにキッカーを設計することができました。
LEDはマイコンから1ピンだけで全てのLEDの色、明るさを制御できるものを採用しました。京滋奈ブロックのローカルルールで持ち上げられた時に床面のLEDが消えるようにしなければならないというルールが追加されましたが、ハードウェアを改造することなく対応することができました。ハンドルを持って持ち上げられた時に車体が傾くことを利用して、ジャイロセンサーで傾きを検出するとLEDを消すようにしていました。
マイコンはATTiny828です。ATTiny828は処理速度は若干遅めですが、アナログ入力ピンを多く持っているので採用しました。プログラムはArduinoIDEで書いていて、メインのマイコンからArduino as ISPでプログラムを書き込んでいます。と言っても、メインがmbedなのでArduino用のプログラムをmbedに移植しました。Arduino as ISPは、専用のプログラムを書き込むことでArduinoを書き込み装置として使えるようにする機能です。SPI通信の回路を利用できるので余計な配線が増えずに済みました。
マイコンはATTiny828です。ATTiny828は処理速度は若干遅めですが、アナログ入力ピンを多く持っているので採用しました。プログラムはArduinoIDEで書いていて、メインのマイコンからArduino as ISPでプログラムを書き込んでいます。と言っても、メインがmbedなのでArduino用のプログラムをmbedに移植しました。Arduino as ISPは、専用のプログラムを書き込むことでArduinoを書き込み装置として使えるようにする機能です。SPI通信の回路を利用できるので余計な配線が増えずに済みました。
センサーユニットの接続です。 ネジ固定するだけで配線が完了するようになっています。普通のピンヘッダでは基板に収まりきらなかったのでこのコネクタを採用しました。なんという名前なのかわからないですけど、MacBookを分解したら出てきそうなやつです。問題点としては、外すときに角度に気をつけないと基板のパターンごと剥がれてしまいます。正確な位置に半田付けしないと接触不良が起きる可能性があるので高度な技術が必要かもしれません。
オムニホイール と モーター
オムニホイールとモーターです。オムニホイールのサイドホイールにはウレタンを採用しました。CNCで硬度A70のウレタンシートを切削して作りました。従来はシリコン製サイドホイールを使っていましたが、使っているうちに削れてしうので定期的な交換が必要でしたが、ウレタン製にすることで耐久性が増しほとんど削れなくなりました。モーターマウントには出力軸がブレるのを抑えるためにベアリングを挟んでいます。
メイン基板
実際に使っていた基板と組み立て直後の写真です。
ここも2枚の基板でPOM製のフレームを挟む構造になっています。八角形の基板の各辺にモーターとキッカーを接続するコネクタを配置することで、配線を短くすることができました。メインのマイコンにはSTM32F446を採用しました。開発環境は、Xcodeのmbed開発環境を自分で開発しました。
一枚目の基板の中央にあるのが姿勢制御のためのジャイロセンサーBNO055です。チップは単体で購入し、自作の基板に半田付けしたので市販品よりかなり安く、小さく作ることができました。
ここも2枚の基板でPOM製のフレームを挟む構造になっています。八角形の基板の各辺にモーターとキッカーを接続するコネクタを配置することで、配線を短くすることができました。メインのマイコンにはSTM32F446を採用しました。開発環境は、Xcodeのmbed開発環境を自分で開発しました。
一枚目の基板の中央にあるのが姿勢制御のためのジャイロセンサーBNO055です。チップは単体で購入し、自作の基板に半田付けしたので市販品よりかなり安く、小さく作ることができました。
メイン基板の裏側と上下分離したところです。
上下の接続はピンヘッダだけなので、ネジで固定するだけで配線完了です。
一枚目の写真のUSBコネクターの近くに配置されているのはST-LINKです。NUCLEOのST-LINKから剥がしてきたチップを半田付けしました。メインのSTM32F446もNUCLEOから剥がしたものを使っています。
裏側にモータードライバーDRV8432が載っていて、11.1Vラインは下側の基板で完結しています。三端子レギュレーターで生成した5Vをマシン全体に供給していますが、採用した素子が良くなかったのか、いまいち安定しないのと発熱がひどいのであまりよくなかったです。
上下の接続はピンヘッダだけなので、ネジで固定するだけで配線完了です。
一枚目の写真のUSBコネクターの近くに配置されているのはST-LINKです。NUCLEOのST-LINKから剥がしてきたチップを半田付けしました。メインのSTM32F446もNUCLEOから剥がしたものを使っています。
裏側にモータードライバーDRV8432が載っていて、11.1Vラインは下側の基板で完結しています。三端子レギュレーターで生成した5Vをマシン全体に供給していますが、採用した素子が良くなかったのか、いまいち安定しないのと発熱がひどいのであまりよくなかったです。
保護回路
保護回路です。保護回路でショートされるとどうしようもないので厳重に絶縁しています。発熱する部品は端子部分以外が外に出るようにしました。
保護回路のカバーを外したところです。
市販の保護回路で、大電流が流せて安価で小型で余裕を持って遮断してくれるものがなかなか見つからなかったので、自作しました。短絡、過電流、過放電からバッテリーを保護する機能を搭載しました。およそ20A以上、10.5V以下で遮断するように設計しました。ほとんどの保護回路がバッテリーのバランス端子を利用して電圧を監視していますが、バランス端子を接続するとバッテリーの交換に時間がかかってしまうので、各セルの電圧を監視しない代わりに早い段階で遮断するように設計しています。
ただし、保護回路は正しく作れなければかえって危険です。市販の保護回路を用いてバッテリーを保護しつつ、常に電圧を確認しながら運用したほうがいいでしょう。
市販の保護回路で、大電流が流せて安価で小型で余裕を持って遮断してくれるものがなかなか見つからなかったので、自作しました。短絡、過電流、過放電からバッテリーを保護する機能を搭載しました。およそ20A以上、10.5V以下で遮断するように設計しました。ほとんどの保護回路がバッテリーのバランス端子を利用して電圧を監視していますが、バランス端子を接続するとバッテリーの交換に時間がかかってしまうので、各セルの電圧を監視しない代わりに早い段階で遮断するように設計しています。
ただし、保護回路は正しく作れなければかえって危険です。市販の保護回路を用いてバッテリーを保護しつつ、常に電圧を確認しながら運用したほうがいいでしょう。
ドリブラーの回転うけ と ホールドセンサー

キッカーを支える樹脂パーツにある、白い丸い部分がホールドセンサーです。他のマシンのカメラからは見えないように、上向きに光が漏れない位置に配置しています。ドリブラーの回転うけは、シリコンチューブを通した外形3mmのステンレスシャフトの両端に、内径2.96mmのPOM製部品を圧入してベアリングから抜けないようにしています。
カバー
ゴミの侵入防止と、他のマシンとの干渉を防ぐために、カバーをつけています。
シャーシを軽量化のために肉抜きしていますが、肉抜きの穴にアクリル製のカバーをはめ込んでいます。アクリルのカバーにはハニカム構造の肉抜きを施すことで軽さと強度を両立しました。
側面カバーはPOM製のフレームとスペーサーによる構造にPPクラフトシートをネジで固定しています。オムニホイール横のスペーサーにはめ込むことにより固定し、また、シャーシにネジ固定することで取り外しやすく、勝手に外れにくくしています。
オムニホイールのカバーは、POM製の部品とカーボン製の部品を組み合わせたフレームをオムニホイール横のスペーサーにカチッとはめ込むことで固定します。カーボンの高い剛性とPOMの柔軟性を組み合わせることで実現しました。
次は上段ユニットです。
シャーシを軽量化のために肉抜きしていますが、肉抜きの穴にアクリル製のカバーをはめ込んでいます。アクリルのカバーにはハニカム構造の肉抜きを施すことで軽さと強度を両立しました。
側面カバーはPOM製のフレームとスペーサーによる構造にPPクラフトシートをネジで固定しています。オムニホイール横のスペーサーにはめ込むことにより固定し、また、シャーシにネジ固定することで取り外しやすく、勝手に外れにくくしています。
オムニホイールのカバーは、POM製の部品とカーボン製の部品を組み合わせたフレームをオムニホイール横のスペーサーにカチッとはめ込むことで固定します。カーボンの高い剛性とPOMの柔軟性を組み合わせることで実現しました。
全方位カメラ
昨年のマシンでは全方位カメラを天板の下に配置したのが大失敗だったので、今回はマシンの最上部に配置しました。カメラの視野の邪魔をしないように天板を低く、直径を小さくしました。ハンドルもアルミ丸棒を曲げて作りました。ミラーを支えるアクリルパイプの固定は土台に差し込み摩擦固定をしています。ミラーの固定も同様です。試合中にカメラが揺れているのでスペーサーをもう一本増やすなどして揺れないように固定するべきだと思うのですが、昔からどうしてもこの形が作りたくてデザインを優先してしまいました。見たところそれほど問題にはなってなさそうだったので良しとしました。
LEDの光を直接見せるのではなく半透明のPOMに光を当ててPOMを光らせることで、近未来感を演出しています。一番目立つ部分なので、デザインを徹底しました。
LEDの光を直接見せるのではなく半透明のPOMに光を当ててPOMを光らせることで、近未来感を演出しています。一番目立つ部分なので、デザインを徹底しました。
ネジ4本で簡単に取り外せます。コネクタも抜き差ししやすいように配置しました。配線が見えるのが許せないので、少し工夫しました。 OpenMVが外から見えるとカッコ悪いので完全に隠しましたが、そうするとUSBケーブルが差せなくなってしまいます。USBの配線を延長してメインマイコンのプログラムの書き込み用ポートの隣にOpenMV用書き込みポートを配置しています。ただし、このようにUSBを延長するのはあまり良くないようです。
ドリブラー
今回のマシンは重量が重くなることが予想されたので、重量が増える主な原因であるドリブラーを出来るだけ軽くなるように設計しました。見た目は重そうですが、中身は徹底的に肉抜きされていて軽いモーターを採用しているので、比較的軽く仕上がったと思います。
モーターはブラシレスモーターを採用しました。ブラシレスモーターは負荷がかかっても回転数が落ちにくいので、回転数を下げても十分ボールをホールドできます。ブラシ付きモーターでもギヤボックスで減速すれば十分ホールドできますが、その分重量が重くなってしまいます。
モーターはブラシレスモーターを採用しました。ブラシレスモーターは負荷がかかっても回転数が落ちにくいので、回転数を下げても十分ボールをホールドできます。ブラシ付きモーターでもギヤボックスで減速すれば十分ホールドできますが、その分重量が重くなってしまいます。
ドリブラーの回転機構です。アウターロータ型のモーターなので、出力軸とともに外装部分も高速で回転します。ドリブラーが持ち上がった時にモーター部分の高さが変わると、最悪の場合配線が巻き込まれて切れるなど、周りの部品が破損する可能性があります。モーターの回転軸の延長上にドリブラーの回転軸が来るようにすることでモーターの高さが変わらないようにしました。また、軸周りの突起でドリブラーの可動範囲を制限しています。
天板の裏側です。ブラシレスESCはPOMとアルミで挟むようにして固定しています。ESCが被覆で絶縁されているといえどもアルミで挟むのは如何なものかと思いましたが、スペース的な問題と強度的な問題からアルミを使うことになってしまいました。
障害物センサー
ToFレーザー測距センサー VL53L0Xを前方に5つ搭載しました。VL53L0Xは超小型なのでドリブラーと天板の間に配置するのに最適でした。VL53L0XはI2C接続で、マスターからアドレスを変更できるのですが起動時に毎回設定しなければならず、センサーにリセットをかけながら順番に設定する必要があります。そのため複数同時に接続するには工夫が必要なのですが、I2C GPIOエキスパンダーでIOポートを拡張することで配線を最小限にしつつセンサーを複数搭載しました。
従来はゴールを隠している部分を相手マシンとしていましたが、障害物センサーでは相手マシンを直接認識するのでゴールが見えなかったり隠れていなくても相手マシンを検出できます。障害物センサーとカメラのゴール認識、マルチアングルキッカーを組み合わせて、敵がいない方のゴールの端を狙ってシュートしていました。
従来はゴールを隠している部分を相手マシンとしていましたが、障害物センサーでは相手マシンを直接認識するのでゴールが見えなかったり隠れていなくても相手マシンを検出できます。障害物センサーとカメラのゴール認識、マルチアングルキッカーを組み合わせて、敵がいない方のゴールの端を狙ってシュートしていました。
タッチディスプレイ

昨年は搭載できなかったタッチディスプレイです。静電容量方式のAdafruit 2.8インチ TFTタッチシールドのディスプレイ部分だけを取り出して使っています。ディスプレイでは各センサーの値の表示や調整、モーターの出力の調整、サンプルキックなどが行えます。
ディスプレイを搭載していない昨年のマシンと比べると圧倒的に試合前の調整にかかる時間が短くなり、ハード面の確認に回せる時間が長くなったのでネジが外れるなどの単純な故障はかなり減らせたと思います。
ディスプレイを搭載するときの最大の問題点としてはグラフィックスに時間がかかることだと思うのですが、このマシンではあらゆる工夫を凝らして高速で繊細なグラフィックスを実現しています。背景やアイコンにビットマップ画像を使いたかったので、内蔵メモリの容量が大きくCPUの処理速度が速いマイコンを採用しました。ディスプレイとの通信を最適化していますが、画面全体を書き換えるときはどうしても上から順番に書き換えられていくのが目で見えてしまいます。一瞬だけバックライトをオフにしてその瞬間に書き換えることで、一瞬にして画面が切り替わったかのように錯覚させています。アイコンの角が丸くなっていますが、これを実現するのは結構難易度が高かったです。フォントにも美しい字体のものを採用しました。
ディスプレイを搭載していない昨年のマシンと比べると圧倒的に試合前の調整にかかる時間が短くなり、ハード面の確認に回せる時間が長くなったのでネジが外れるなどの単純な故障はかなり減らせたと思います。
ディスプレイを搭載するときの最大の問題点としてはグラフィックスに時間がかかることだと思うのですが、このマシンではあらゆる工夫を凝らして高速で繊細なグラフィックスを実現しています。背景やアイコンにビットマップ画像を使いたかったので、内蔵メモリの容量が大きくCPUの処理速度が速いマイコンを採用しました。ディスプレイとの通信を最適化していますが、画面全体を書き換えるときはどうしても上から順番に書き換えられていくのが目で見えてしまいます。一瞬だけバックライトをオフにしてその瞬間に書き換えることで、一瞬にして画面が切り替わったかのように錯覚させています。アイコンの角が丸くなっていますが、これを実現するのは結構難易度が高かったです。フォントにも美しい字体のものを採用しました。
3Dモデル
最後に、今年のマシンのCADデータを公開します。今回紹介しきれなかった部分もCADデータを見てもらえたらわかると思います。実際のマシンと多少異なる部分もあると思いますが、設計だけして実現に至らなかった部分がほとんどです。お蔵入りするのはもったいないのでぜひ見てもらえたらと思います。
ディフェンス編はこちら
ディフェンス編はこちら
コメント
コメント一覧 (13)
キッカー用コンデンサーは耐電圧が63V、静電容量が1000μFのものをソレノイド1つにつき2つずつ並列に接続して使用しています。チャージする電圧はおよそ58Vです。
質問なのですが、キッカー用のコンデンサーは何ボルトで容量はどのくらいですか?また並列に使ってる場合個数も教えて下さい
よろしくお願いします
このロボットに搭載している超音波センサーはフィールドの端から端までの距離を計測することができます。対してこのToFは測定可能な距離が計測する対象の色や計測精度によって左右され、ロボカップジュニアのサッカーフィールドの場合、正確な数字は覚えていませんが、僕のロボットでは短い方の辺の長さを計測することができませんでした。ですから、スペースに余裕のある左右の距離センサーには超音波センサーを、限られたスペースに多くのセンサーを載せる前方の障害物センサーや後方のセンサーにはToFを採用しました。デフェンスの後方のセンサーがスペースに余裕があるにもかかわらずToFを用いているのは、オフェンスとの互換性を保つためです。両機ともに後方の距離が必要な時は常にゴール前にいるという特性上、測定距離が短くても問題ありませんでした。
モーターに取り付けているピニオンギアが11歯で、ホイールの軸に取り付けているのが35歯です。
そうですね。いきなりハードルを上げても目標の無いプログラム勉強のようになりそうですね、、、。まず簡単な既製品の基盤、データシートからやってみようと思います。いろいろと貴重なご意見ありがとうございました。
センサーの型番はBNO055です。
“モーションセンサー” と “ジャイロセンサー”という言い方が混ざっていました、すいません。訂正しました。
電源部分は、大電流出力の三端子レギュレーターで生成した5Vを各基板もしくは各マイコンごとに配置されている低ドロップ三端子レギュレーターで3.3Vに落としています。スペースの都合で5V用に三端子レギュレーターを採用しましたが、できればDC-DCコンバーターにしたいところでした。
僕も回路が苦手でこれから勉強していきたいところなのであまり参考にならないかもしれないです、すいません。
このマシンの回路は既製品の基板か部品のデータシートにかいてあるものと全く同じ回路しか作っていません。CADと半田付けさえできれば全く同じ回路を作るのはそれほど難しくはないと思います。同じものを作る過程で回路を学べるのではないかと思っています。
僕は小学生の頃から簡単な回路は自作していたので一見複雑に見える回路を自作するのも苦ではなかったのですが、もしまだ回路を自作したことがないのであればまずはユニバーサル基板でセンサー回路等を自作するところから始めて、表面実装の部品や配線の精度が必要になったらプリント基板に挑戦してみるのもいいと思います。急に難しすぎることに挑戦すると失敗ばかりで嫌になってしまうかもしれないので、現時点での自分の技術レベルを見極めて出来る限りのことに挑戦したらいいと思います。
型番記載されてますね笑
申し訳ないです!
流石だと思います。
僕もある程度敵の機体を認識したいので、障害物センサーを搭載したいと
思っています。
障害物センサーの型番を教えていただきたいです。
よろしくお願いします。
Inventorさんと同じく私も高校生でサッカーロボットの基板設計を担当しています。
京滋奈のローカルルールのためにToF測距センサーを下向きにつけて認識させる設計をしていたのですが、それをモーションセンサーでするなんて思いつきもしませんでした。
よろしければそのセンサーの型番を教えてください。
保護回路の電圧監視は私も考えましたが、良いICが見つからなかったので断念しました。私はDCDCコンバーターと三端子レギュレーターで5vと3.3vを作っているのですが、Yutaさんはどのような電源部分の設計をされているのですか?
長文失礼いたしました。
脱帽です。
自分もサッカーロボットを設計しているのですが
回路屋ではないので好きなように設計することが難しい現状です。。。
回路も設計も両立できることが羨ましい限りです。
自分は今高校生なのですが
今からでも回路を学べばこんな回路を制作することは可能なのでしょうか?
ちなみに今回路はEAGLEを使っています。
回路を学ぶことについてアドバイスいただければ幸いです。