お久しぶりです。ヘラクレスで主にハードウェアを担当した@robocup_kiyoです。皆さん全国大会お疲れさまでした。
会場で交流してくださった皆さんありがとうございました。かっこいい機体がいっぱい見られて本当に楽しかったです。
遅くなりましたが試験が終わったのでソフトウェア解説に引き続き、今回はTeensyを搭載した方のロボットのハードウェア解説をしていきたいと思います。
仕様
プロセッサ
用途 | 使用ボード |
---|---|
メイン | Teensy 4.0 |
IMU処理 | Seeeduino XIAO |
超音波センサ処理 | Seeeduino XIAO |
マウスセンサ処理 | Seeeduino XIAO |
ロボット間通信 | M5Stamp Pico |
電圧監視 | ATtiny85 |
センサ
用途 | 使用センサ |
---|---|
カメラ | OpenMV H7 |
ジャイロ | MPU6050搭載GY521 |
超音波センサ | HC-SR04 * 4個 |
ラインセンサ | S4282-51 * 11個 |
ToFセンサ | OTP3101 |
マウスセンサ | ADNS9800 |
駆動系
用途 | 使用モータ等 |
---|---|
モータ | Joinmax 3561 * 4個 |
MD | DSR1202 |
キッカー | CB1037 |
バッテリー | Kypom Li-Po 3S(11.1V) 35C 2200mAh |
今回のコンセプト
今回のロボットのコンセプトは「故障なく安定してハードに戦える」です。例えば、具体的な対策として、
- 配線を最小限にして共通化する
- 極力スルーホールの部品を採用する
などが挙げられます。また採用実績のある比較的信頼性の高い部品、技術を使用しました。
九州ブロックから主に、マウスセンサの製作、電源基板の改良、メイン基板の更新を行いました。新ルールの直径18cm対応は去年から取り組んだため開発しやすかったです。
今回のロボットの失敗点として、最後の大会ということもあり最終的な仕様決定に時間が掛かり、ソフトウェアの強みを活かせなかったり使いこなせない機能があった点です。正直、今年もオンライン開催になると思っていたので、技術力のアピールポイントや複雑なタスクをこなせるように追加した機能もあるので、オンサイト開催に変更されてからスケジュールを変更して「確実に必要な動作をする」点に絞って開発を進めました。
心残りも多いですが当初の目標は達成できたのでその点は満足しています。
機構紹介
各機構を紹介します。
ボディ
ロボットは2枚のジュラルミン(A2017)とプリント基板から主に構成されていて、プロセッサ・センサ・MD・ミラーを一部分に集約することで、配線の単純化とデバッグのしやすさを高めました。板同士はスペーサーで固定されており、複数本で支えて剛性を高めています。板厚は下の段が2mm、上の段が1.5mm厚で、加工にはKitMill CL200を使用しました。
ネジには今大会から低頭六角穴付きボルトを採用しました。プラスの低頭ネジより穴がつぶれにくくしっかりとネジを締められました。
バッテリーケースは3Dプリンターで、挿入口のカバーは厚さ5mmのPOMを切削して製作しました。
モーター周り
モーターはジョンミンと呼ばれるJoinMax 3561を使用しました。直径18cmに対応するために軸の部分を削って使用しています。
コアードモーターで応答性は悪いですが3SのLi-Poを使用して十分なスピードとトルクを出せました。制御が厳しいぶんトルクでカバーする作戦だったので、試合中ロボット同士の押し合いに負けることなく動いてくれたので良かったと思います。
部室にあったものを使用したので正確な値段はわかりませんが(確か1つ8000円くらい)、「一本n万円する高級モータには手が出ない…」という人にはおすすめできる選択です。
MDはダイセン電子工業で販売されているDSR1202を使用しました。半導体不足の影響か現在は値上がりして1つあたり約20000円となっていてお薦めはできませんが、確実に動作する既製品を使用することで開発コストを抑えられました。ICはVNH2SPを搭載しているので自作することも出来ると思います。使用方法についてはソフトウェア解説編をご覧ください。
キッカー
キッカーはフレームに直接固定することで最大限威力を発揮する設計にしました。しかし、大会中に調整が間に合わず一度も使うことはありませんでした。確実に動作する保証もないので昇圧回路については掲載しないことにします。
ラインセンサ
ラインセンサはピンヘッダとピンソケットで集合部分と接続し、ネジ一本で着脱できる設計にしました。素子には秋月電子で取り扱いのある浜松ホトニクスのS4282-51を使用しています。これはICに反射光として使用するLEDを駆動させる回路等が組み込まれており、LEDの発光する周波数と同じ光のみを認識するので外乱光環境でも使用できます。
圧倒的に誤動作が減ることに加え、どんなフィールドでも使用できるのでおすすめです。(1つ250円と値段が高いのが難点ですが…)
また、半固定抵抗を用いてLEDに流れる電流を制限してラインセンサのしきい値調整をしています。一つの基板ごとに個別にマイコンで値を読み込んでいます。ICなので出力がHIGH/LOWで出力できプログラムの実装も簡単になります。
当然ICなのでパスコンを配置しないとノイズが乗ります。分光感度特性によると800nmで最も高くなるので赤を含む色のLEDを使用する必要があります。
オムニホイール
オムニホイールは4mmと1.5mmのジュラルミン(A2017)でシリコン製のサイドホイールを挟み込むような構造をしています。大会会場では滑ることもなく最後までグリップ力を維持してくれました。タップ加工により部品点数を削減しています。
モーターとの固定には軸が6角のため、3Dプリンターで作成した固定具を使用しました。しかしながら強度不足で歪んでしまうことがあり、また手加工でモーターの軸を切削したために軸が少しブレていました。今後設計し直すなら軸に対して垂直に抑え込むように固定したいと思います。
全面にはPOMで作ったオムニホイールを保護するカバーを上の板と下の板で挟んで固定しています。
統合電源基板
統合電源基板はバッテリの電圧監視、過電流保護、逆接続保護回路、サージ吸収ダイオード、EMIフィルタ、DCDCコンバータを一つにまとめ、モジュール化した基板です。汎用性が高くてジョンミンのノイズに耐えてたので気に入っています。
逆接続対策に関しては高速、高周波で使用できるショットキーダイオードを使用し、逆接続してDCDCに電流が流れる前にGNDに落とすことで遮断することができます。
DCDCコンバータは村田のOKL-T/6-W12N-Cを使用し、EMIフィルタは秋月で販売されている村田のBNX012-01を使用しました。またATtiny85を使用して電圧計とは別に取得したバッテリー電圧をメインマイコンに送信し、もし定格を下回れば自動停止するように設計しました。
しかし、数Aの電流が流れることを考えるとこの基板のパターンとコネクタでは不安が残るところです…
マウスセンサ
マウスセンサはADNS-9800を使用し、こちらのサイトを参考にしてSPIを使用してSeeeduino XIAOが値を取得して座標系に変換してからメインマイコンにUARTで送信できるようモジュール化しました。
一番下というスペースの関係上、ここだけはSMDの部品を使用しました。 受光部分と基板を固定するための固定台はPOMで作成しました。
ADNS-9800は調べたところAliexpressでのみ現在でも購入可能です。(新品と書いてあったのに明らかな中古が届きましたが…)
マウスセンサを使うと試合の戦略が一気に広がると思うのでおすすめです。
ToFセンサ
ToFセンサはスイッチサイエンスで販売されている市販品を使用しました。約60度ずつの3方向の距離を測ることができます。試合では使用しませんでした。
ToF測距センサ pic.twitter.com/xUmEa9FbTS
— R.P.@Hercules (@red_panda_RCJ) February 28, 2022
ちゃんと左, 中央, 右の距離も出てきた pic.twitter.com/7c5whDrciN
— R.P.@Hercules (@red_panda_RCJ) February 28, 2022
メイン基板
メイン基板には複数のマイコンの評価ボード、センサを搭載して配線を少なくしています。
超音波センサはPOMと3Dプリンタで制作した固定具で基板に固定しています。
裏側にMDを搭載しています。
設計はKiCadで行い、JLCPCBに発注しました。 基板上の文字はレジストを抜いて表現しています。
マイコン間通信には全てUARTを使用したのでHardwareSerialの数が多く、小型のTeensy4.0を採用しました。こちらのサイトを参考に裏面のパッドのIOを使用できるように拡張基板を作成しました。また基板上にTeensyのUSBHost機能用のUSBminiBポートを搭載しました。
開発環境とソフトウェアに関してはソフトウェア解説編をご覧ください。
ジャイロセンサと超音波センサの処理は小型で書き込み装置を搭載したSeeeduino XIAOを使用しました。
マイコンについては個人的な考えですが、書き込み装置等を内蔵した評価ボードを使用するべきだと考えています。チップ単体で考えると小型化はできますが、ハンダ不良や交換に時間がかかりデバッグしにくいです。それに対して評価ボードだとUSBケーブルのみで開発できて交換も早いので、スペースに問題がなければ競技用ロボットには評価ボードを採用するべきだと考えています。それに加え、ボード内部個別に電源を生成するので電源ラインのノイズ対策になると思います。
UI
UIは秋月電子のグラフィック液晶ディスプレイを使用しました。バックライトがない分、会場で見づらい問題が発生しましたが、厳しくなった可視光規制の影響で車検に落ちる可能性を考慮した結果この選択になりました。3つのタクトスイッチでプログラムの変更とセンサのデバッグができます。ブザーは起動音に使用しました。
通信
通信用にM5Stamp Picoを搭載しました。ルールでは「Bluetooth class2 もしくは class3、あるいはZigBeeやXBeeなどの802.15.4プロトコルを使用するデバイス」以外の使用が禁止されてる点を考えると、Bluetooth class1を使用できるESP32 PICOを搭載したM5Stamp Picoはルール違反となる可能性があると考えています(Bluetoothの規格が難しすぎて諦めたので有識者の方は誰か教えてください…)。そのため会場では搭載していませんでしたが、現在は文化祭用の操縦ロボット化に活躍しています。
全方位カメラ
全方位カメラはカメラから遠い位置に配置してコート全体のボールを認識できるように設計しました。対角線上のボールも認識できるように従来とは別の方法を使用しました。詳細は過去のポスターをご覧ください。
パイプは土台部分で摩擦固定しています(試合中に何回か外れたので推奨はできません…)。
本当はNeoPixelRingを搭載する予定でしたが、スペースの関係で省略しました(ルールも怖かったので…)。
天板は天井の照明を認識しないようにするのとカメラのホワイトバランスを固定する目的で使用しました。
ポスター公開
ロボカップジュニア日本大会2021オンライン
ロボカップジュニア・ジャパンオープン2022けいはんな
おわりに
今回紹介した基板やプログラムのデータはGitHubで公開しています。興味のある方はぜひご覧ください。ただし使用については自己責任でお願いします。
また、今回紹介した内容に関してやレポジトリについての質問はコメント欄かTwitterのDMまでお願いします。「こんな情報を教えて欲しい!」なんかも大歓迎です。ブログのコメントは日々確認はできないのでTwitterの方に来てくれれば早めに返信できると思います。
最後にロボットの3Dデータを公開します。
余談
最後にちょっとだけ自分語りを。
今年は受験があるので、もしかしたら最後の大会だったかもしれません。ロボカップに初めて参加してから5年間、やっと自分の中で納得がいく機体と結果が残せたように感じます。再度になりますが今まで関わってくださった皆さん、本当にありがとうございました!
Comments