Blend 2023 Nagoya機 解説

しろくま胡瓜
しろくま胡瓜 |

今回は3月に開催された全国大会で優勝をつかんだ機体を分解していきたいと思います。

設計思想

この機体の設計で重視したことは

  • 故障しない∧故障してもすぐ直せる
  • 一部が壊れても全体に影響しない
  • スタイリッシュな見た目

です。

技術レベルがインフレしまくっているサッカー勢の皆さんからみたらローテクで固められた機体に見えると思います。実際、僕も去年までサッカー競技をしてましたし、新しい技術の投入はあまりありません。

ただ、レスキュー参加初年度という冠詞をつけたらかなり攻めた構成になっているのではないでしょうか。ここまで基板を設計して発注して、CNCで削り出して…というチームは少なくとも今回の大会では僕らだけでした。やっぱりレゴとか既製品つかうよリもゴリゴリにハードウェア作り込んだ方が楽しいですからね。

レスキューは競技が始まると故障しても(フリーズ等含む)一切調整できず、リタイアするしかないという鬼畜ルールのため、安定性重視の設計です。 一部が壊れても全体に影響しないというのは、例えばカメラがフリーズしたとしてもその機能を喪失するだけで済むということです。たとえ何かが壊れていたとしても、その時できるベストで試合に挑まねばならないためこのような仕様になっています。

スタイリッシュな見た目はまぁ見ればわかりますよね。僕が設計したのでかっこいいです。

既知の欠陥

初年度の機体のため、「経験則的にこうすればうまくいく」みたいなデータが全くない状態で設計した機体になっています。実際に今回大会に挑んでみて設計の欠陥点が多数発覚したので、レスキューメイズの強い機体とは到底言える状態ではありません。あくまで、設計思想の面を見ていただければと思います。

ただ発覚した欠陥も重要な情報だと考えているので、この記事では設計の欠陥があれば都度明記しました。

全体像・仕様

僕がサッカー勢の頃の名残りがところどころ見受けられると思います。円形状に配置された距離センサとか斜めに伸びたハンドルなどはサッカーの機体らしいですね。

役割 部品名 個数
メインマイコン STM32F446RE 1
サブマイコン RP2040(XIAO) 3
無線モジュール ESP32C3(XIAO) 1
距離センサ VL53L0X 12
バンパー ロードセル 500g 2
床面センサ NJL7502R 6
カメラ UnitV AI Camera 2
熱源センサ MLX90614 2
ジャイロセンサ BNO055 1
連続回転サーボ STS3032 5


上下分離

四隅のネジを外して持ち上げると上下に分離することができます。上下の接続は信号用のフラットケーブルと、電源用のXT30コネクタの2つのみなので簡単に分離できます。

このへその緒構造はサッカー時代からずっと採用しています。分解が非常に楽になるので出場競技問わずおすすめの構造です。

距離センサモジュール

上段の上部についているアクリル部分の四隅のネジを外すと分離できます。こちらも5ピンのmolex mini SPOXによるへその緒構造です。

⚠️既知の欠陥:
アクリルの部分の設計で、オフセットかけ忘れて穴が端ギリギリになっちゃったせいで、転倒してひっくり返った瞬間に割れました!!!

基板の裏にはサブマイコンのRP2040が載っています。距離センサはI2C通信タイプのため、一旦RP2040で処理してからUART(1Mbps)でメインマイコンに送信しています。I2Cのような繊細な通信規格はケーブルなどで外に持ち出すべきではないため、このような仕様にしました。通信エラーなどは一度も起こすことなく安定して動いてくれています。

🤖Tips:
I2C通信が嫌いという方、割と多いのではないでしょうか?I2C通信は通信線を共有する特性上、デバイスが一つでも死ぬと全体が麻痺する可能性を抱えているので使用の際には最新の注意を払う必要があります。私は「配線が少なくなるから」程度の軽いノリで使うようなものではないと考えています。
この記事を読んだみなさんに絶対覚えて帰ってほしいのはケーブルでI2Cを延伸するな!ということです。繋がってさえいればOKみたいに舐めていると普通に詰みますよ。

上側はVL53L0Xが12個と状態表示用のLEDが載っていいます。円形に配置すると計算を一般化できて色々楽だと思ったのでこの配置にしました。

距離センサの円形配置をしていたのは僕らのチームだけでしたが、とても扱いやすくよかったと思います。ジャイロセンサからの情報をもとに線形変換したのちにベクトルをX軸方向とY軸方向に分解するだけで、ロボットが現在向いている方位を意識しなくてもプログラムを組めて非常に楽でした。

実際に使われたコードの一部。一般化できて楽ですよっていうサンプル。

カメラ

機体側面に計2つ付いています。3Dプリンタで造形した部品でフレームと固定しています。

当初は2穴使ってガシッと固定する予定でしたが、仮組中にカメラ担当から「SDカードの抜き差しとかで動かせたほうが都合がいい」との要望があったので、この1点固定で仕様として確定させました。回してもねじは緩みにくい固定方法なので(あくまでねじは抜けどめの役割)特に問題は発生していません。

⚠️既知の欠陥:
壁に対して水平につけたら、壁が遠い時にフィールド外のものも見えてしまい誤認識が発生しました。ちょっと傾けて上から覗き込む方式にすべきだったと思います。

処理はUnitV AI Cameraで行い、何の被災者か or 被災者なしの情報をUART(115200bps)でメインマイコンへ垂れ流しにしています。安定して動作させるためにRaspberry PiやJetsonを使わずに低レイヤの処理で完結させました。

メイン基板

メインマイコン(F446RE)とジャイロセンサ、無線等の機能を全て詰め込んだ基板です。とにかく安定して動くことを最優先で作ったので、そこまで高密度実装にはなっていません。スペースに余裕を持って信号線の配線を行うことができたので、こちらも今シーズンで一度も通信エラーを起こしていません。

ジャイロセンサは定番の秋月のBNO055です。通信エラーを絶対に起こしてはならない部分のためコネクタを使わずにガッチリと半田付けし、かつメインマイコンの直近に配置されています。仮にジャイロセンサが故障したらメイン基板ごと交換という前提で製作しました。(まぁジャイロだけピンポイントで壊れることなんてないとは思いますが。)

この基板は特に欠陥は見当たらないので世界大会機でも流用しようかと思っています。

無線デバッグ用のESP32C3は大会で疑われないようにするために簡単に外せる仕様になっています。通常の開発時にはスマホとペアリングして走行中のデータを垂れ流しにできるので非常に便利です。有線で接続すると距離センサとかぶってしまうためこのような機能を実装してみました。

UI・電源基板

バッテリーに繋がる電源基板とUI基板を一体化させました。視認しやすい位置にあり、操作しやすい位置にあるというのは電源基板・UI基板ともに必要な条件だからです。

緊急時に迷わず電源を切れるように、電源スイッチの周りはシルクで縁取りして目立つようにしました。ON/OFFと書かれているのでこのロボットを初めてみた人でも最低限緊急時の電源の操作はできると思います。

下の樹脂に覆われた白いバーは被災者発見通知用のフルカラーLEDです。ディスプレイみたいな意識高いものは乗ってないです。(無線で飛ばせばいいので)

バッテリーケース

3Dプリンタで作られたごく普通のものです。何の面白みのないネジ式ですがしっかりと固定できます。

プチプチも付いていたりと安全対策はこの上ないのではないかと思います。車検の時に某技術委員長に「サッカーじゃないんだしここまでしなくても」って言われたほどです。

ハンドル

持ちにくいハンドルや弱々しいハンドルは故障の元なのでしっかりとしたものを作りました。

ハンドルに限らずこのロボットのすべてのアルミ削り出し部品は、水酸化ナトリウムで強制的に表面の酸化膜を取り除いて黒ずみを消し去り、硝酸で酸化膜を再形成する処理をしています。アルミ本来の色と雪のような肌触りが3000円で手に入るのでぜひお試しください。

フレーム

POM削り出しのフレームです。前後にはアルミによる補強部品がついています。

このロボットの上段には横長の基板が付いているため、その方向にたわむと基板にはんだ割れなどの損傷を与える可能性があります。坂からの転落などの強い衝撃がかかっても基板を保護するために、このような補強部品をつけました。デザイン的にも綺麗なので気に入っています。


これで上段の分解は完了です。上段についている部品を一覧で並べてみました。

必要最低限のものがシンプルにまとまった感じでかなりメンテナンス性が良い設計だと思います。


下段

下段には

  • 駆動輪
  • レスキューキットの投下機構
  • 障害物検知用バンパー
  • 熱源センサ

が載っています。

😄レスキューメイズのルールを知ろう:
壁に印刷されている模擬被災者を発見したらLEDを点滅させて審判に発見を宣言します。その後に1cm3の物体を被災者のそばに投下すると被災者の救助成功となります。

駆動輪

駆動輪は一つ一つに連続回転シリアルサーボがついています。片方がバンプなどに引っかかってしまっても推進力を失わないためにモーターを独立させました。

駆動ユニットの分離は下部のねじを緩めてコネクタを外すだけで分離できます。これはめっちゃメンテナンス性高いのでおすすめです。(Root41 2022機を踏襲した設計になっています。)

⚠️既知の欠陥:
直径70mm弱・幅5mmのゴムごときでレスキューメイズの障害物を越えようとか完全に舐めてました🤪滑るし階段越えられないのでゴムの形状だけはみんな絶対に真似しないでください!(世界大会に向けて改良予定です。)

車輪自体もネジを一つ外すだけで分離できる設計になっています。サッカー競技をやっていた経験により、足回りの設計は得意なのかもしれません。

⚠️既知の欠陥:
ギヤを3Dプリンタで作ったのは強度的に失敗でした。よくないなと思いつつも、何回も走行試験して全国大会までに一回も割れなかったので大丈夫だと判断しましたが、大会期間中に2つ破損しました。なんで大会の時だけ壊れるんだよ

車輪を分解するとこんな感じです。中央のギヤは圧入&接着です。

バンパー

大会で見たかぎりバンパーを搭載していた多くのチームがマイクロスイッチなどの物理接点のスイッチを使用していましたが、物理接点は壊れやすいのと可動部の設計が大変なので、僕たちはロードセルを採用してみました。

🤖Tips: ロードセルってなに?
歪みによる抵抗値の変化を利用して荷重を測るセンサーです。主にキッチンスケールなどに使われています。抵抗値の変化による電圧差は数mVしか現れないので、オペアンプなどで差分増幅してあげる必要があります。

物理とかで習ったと思いますがモーメントをいい感じに計算してあげるだけで右左中央のどこに力が加わってるかを検知できます。指で撫でた程度でも反応するので採用してよかったです。

底面センサ

黒色のタイルにロボットの半分以上侵入すると落とし穴落下判定になるので、回避するためのセンサです。幅5mmの非常にコンパクトな基板です。

⚠️既知の欠陥:
チェックポイントを示す銀色も区別したかったですができませんでした😭

ねじを外すだけで底面からセンサを交換できる仕様にしたかったので、機体の内側に接続用の基板がもう一枚あります。かなり攻めた設計ですが、メンテナンス性が向上したのでよかったです。

銀色タイルが判別できない問題がありますが、そのほかの構造等は概ねうまくいったと思います。

ターミナル基板

下段の配線をまとめるための基板です。レスキューキット排出用のサーボモーターもここに取り付けられています。そのため機体の中のこの基板だけ分厚くなっています。

横にあるのは熱源センサです。これもまたI2C仕様のためRP2040を介して処理しています。ちょっと贅沢すぎましたね。

2023年ルール(熱源被災者が存在しない)で機体を製作していたら、大会前に2021年ルール(熱源被災者が存在する)で競技を行うとの通達があったので取り急ぎでつけました。ちょっと不恰好なのはご愛嬌。

レスキューキット排出機構

巻き込み防止用のアクリル板を外すとレスキューキット排出機構があります。回転させて、機体底面にある穴から落下させるだけのシンプルな機構です。

分解前の底面の画像です。ぐるぐると動いて投下する様子は何回見てもかっこいいです。回転する部分の設計はメンバーのsetukaがやってくれました。めっちゃセンスある。

⚠️既知の欠陥:
落としたレスキューキットは車輪の内側に配置されるため、自分で踏んづけちゃうことがありました。

フレーム

おそらくこのロボットで一番かっこいいであろう下段のフレームです。中央の肉抜きは国際宇宙ステーションの窓がかっこよかったので真似してみました。

厚み3mmのA2017を使用しているので、簡単には曲げられない程度の強度があります。


下段のターミナル基盤除くすべての部品です。(ターミナル基板は含め忘れました💦)

こちらも部品点数を抑えてシンプルに仕上がったと思います。

ソフトウェア

ソフトウェアはこちらで公開しています。頑張ってクラス化していい感じに進めてましたが、大会直前の追い込みで構造全部ぶち壊して書きなぐり状態になってしまいました。冷やかし程度にご覧ください。

Contribute to Blend-RCJJ/Software development by creating an account on GitHub.


おわりに

最後にこのロボットを構成するすべての部品を並べてみました。(蛍光灯の写り込みが激しくてごめんなさい…)

部品点数を肥大化させずにうまくまとめることができたので、初年度の機体にしては上出来ではないでしょうか。

シンプルなおかげで目標にしていた安定した動作をする機体になり、今大会LoP回数0回を達成することができました。LoPが0回というのはレスキューされないレスキューロボットであるということなので素晴らしい成果です。

😇Lack of Progress(試合進行停止):
ロボットが身動きできなくなった時に宣言されるいわゆるリスタート。実質1回10点の減点なので結構痛い。

僕たちのチームは情報公開を積極的にしてく方針のチームなので、もし参考にしていただける点がありましたら嬉しいです。レスキューメイズ初年度参加の僕が言うのも何様だって感じですが、僕たちの機体がRCJの競技レベルのインフレに繋がればと思います。

この機会にコメント欄も設置してみました。プロフィールの下までスクロールしてもらえると登録等不要でコメントできます。質問等あれば是非是非こちらのコメント欄やTwitterでお寄せください。僕が喜びます。

ではまた👋

しろくま胡瓜


  

しろくま胡瓜

日本のまんなからへんでロボット作ったり旅したりしてる白熊です。吠えたり噛みついたりしないから仲良くしてね。

Comments