F^3RC回顧録 または私は如何にしてライントレースするのを止めてロータリエンコーダを愛するようになったか

先日9/18日にF^3RCというロボコンに参加した。結果は一勝一敗で予選落ちである。初めてのロボコン故色々失敗したので忘れないうちに書き連ねておこうかと思う。プログラミングを少し齧った程度の集団がロボコンに挑んだ際の失敗談として活用いただければ幸いである。

チーム結成

f:id:messiahneoneet:20161006114231j:plain

慶應義塾大学ロボット技術研究会公式マスコット「ロ技犬」

私の所属する慶應義塾大学ロボット技術研究会では毎年新入部員がチームを組んでこのロボコンで出場している。かくいう私もその新入部員の一人というわけである。今年は16人ほどいたので1チーム8人の2チーム体制となった。さてどのようにチームを組んだかというと新入部員の中に二人ほど経験者の強者がいたので彼らをリーダーとしてそれ以外は結成日に集合場所の教室の座っていた位置で適当に決めたようだ。ちなみに私は遅刻したため着いたらもう決まっていた。この寝坊癖が後に尾を引くことになる。また、今回のルールは大雑把に言うと自動機でブロックを集めてきて手動機でそのブロックを所定の位置に配置し陣を取り合う(自動機と手動機の二台体制である)というもので、私はちょっとプログラミングの経験があるということで自動機の製作を担当することになった。各機に4人ずつの配置となったが他の3人にはプログラミングや電子部品弄りの経験は無い。arduinoも少し弄ったことがあったので回路とプログラムは私が製作することに。こうして前途多難なロボット開発が幕を開けた。ちなみにもう一つのチームも8人だったが2年の先輩が1人参加、1年が2人失踪し最終的に7人となった。が経験者がとてつもなくハイスペックな上に先輩やプログラムのかなりできる奴がいたこともあって完成度はあちらの方が高かった。

機構設計で早速やらかす

さてまずは機構を設計しCADに落とし込むことになる。最も今回外部への加工の依頼はしていないし(大学に加工設備がありCADデータと材料を持ち込み依頼すると加工してくれる、通称工場)NCなども使っていないので設計図以上の役割は果たしていないのだが。まずここで早速やらかしてしまった。

ここで今回作ったロボットの使用をざっと解説しておこう(分かりにくいかもしれないので後日略図を載せます)。今回我々の作った自動機は上から見るとU字型になっており、ブロックを取り込みながら走る。ドア(上部のサーボで開閉)がついておりブロックが溢れるのを防ぐ。普段は後ろについているフォトリフレクタでライントレースを行い走るが十字路などの特定のラインではドアを閉じることによって先端についたフォトリフレクタを利用し前方でのトレースが可能(のはずだった)。後輪駆動で前輪はボールキャスタになっている。

さて、この機体の側面と後面に注目して欲しい。いずれも板張りになっている。これが第一の失敗である。まず第一にボール盤を用いた穴あけ加工などがしづらい。第二に重い。第三にL字アングルなどの材料に比べ価格が高い。正解はとりあえずアングルなどを使用し骨組みを作り、必要なら後で壁を貼る。この方が効率よく軽く安く作れる。実際こちらの手動機ももう一つのチームもフレームはほぼL字アングルのみで組まれている。

テストなどの関係で7月の後半殆ど動けなかったこともあり、CADによる設計が終わったのが8月の頭である。

加工手順の誤算

設計が終わると次はアルミ版などの材料を購入、加工していくことになる。アルミの材料は我々は秋葉原のエスエス無線で購入した。後述からもわかると思うがアルミ素材から電子部品までほぼ全て秋葉原で揃う。流石電気街である。そして買った材料を切断したり穴を開けたりと加工していくわけだがその手順がまずかった。一枚曲げなければならない板があったのだが穴開けなどの他の加工を終える前に曲げてしまったのだ。工作機械に上手くはまらず穴を開ける時(ボール盤という機械を用いる)苦労することになった。

もう一つ言いたいのが工作精度の問題である。我々は先述の工場への依頼をせず部品は全て自らの手で加工した。そのため結構精度がガバガバだったり傷がついたりしている。お陰で何度か穴の開け直しなどもする羽目になった。熟練者なら高精度の加工もできるのかもしれないが綺麗に加工してくれるなら迷わず頼ったほうが良いだろう。

回路設計

そして機体の加工と組み立てが終わったのが9月の頭である。(他大の方から「遅い」とツッコミが入るかもしれないがそれは後述)その3週間弱前から回路の設計を初めた。現代表や院生の先輩などにアドバイスを貰い本番の5日前位に設計を終えた。マイコンへの電源供給に大きな爆弾を2つ抱えていたのがこのときはまだ気付きもしなかった。

外れまくる配線

回路が決まったらそれを基盤に落とし込み基盤にはんだ付けし、基盤やマイコン同士の配線作業を行っていく。はんだ付けはなんとか無難に終わったが(鉛フリーはんだは使いにくいので鉛入りをお勧めする、環境破壊は気持ちいいゾイ)基盤同士の配線がいけなかった。本来基板間の配線が複数ある場合はだいたいフラットケーブルという数本の導線が平たくまとまったケーブル(こいつ↓)を使用するのだが、

f:id:messiahneoneet:20160927125357j:plain

私はまとまっていない被覆付き導線を一本ずつ配線してしまった。しかも全部赤。お陰で配線がわかりにくいわポロポロ取れるわで散々だった。最終的にグルーガンでくっつけた。しかしこれはこれで間違っていた場合外すのが面倒である。ちなみにこのフラットケーブル秋月では売ってないので隣の千石で買うとよい。

そんなこんなで前日の昼過ぎに配線作業が終わった(回路の細部を詰めるのに時間がかかっており大部分はその5日前程度にはできていたので決まった部分は予めはんだ付けをしていた)。が動作検証のため外したりつけたりする羽目に。

増えるバッテリ

ここからテスト用のプログラムを入れて各部品が動くかテストしていく。まずサーボをテストしたのだが動くが挙動がおかしい。どうやらマイコン(Nucleo F411RE)が再起動を繰り返しているようだ。サーボが動く度に逆起電力が起きているのが原因らしい。つまり私はファラデーの法則を頭に入れずに回路設計をしていたことになる。言い訳するとDCモータならまだしもサーボでも起こるとは気づかなかった。そこになんと院の先輩が現れ2セルのLi-Poバッテリをくれた。凄まじい偶然である。サーボの電源を別系統にすることで事なきを得た。

タイマ制御への転進

そんなわけでついに前日の夜まで来た。ここまでに書かれていないがプログラムは本番2日前に書き終えた。実は今年は本戦までに校内で練習試合をしようという目標があったのだがプログラムを入れてもうまく動かないまま閉校時刻を迎えてしまったため結局実現しなかった。徹夜コース直行である。(元々徹夜はする前提だったが)色々検証した結果センサが上手く動いていないことが判明。急遽タイマ制御(要するに何秒進め、何秒旋回しろという時間的な命令だけで制御する)に切り替えることを決心したのが朝の5時頃である。あまりに眠くて死にそうだったので試合直前までダラダラとスクリプトを改稿していた。

余談だが深夜の作業は大学の近くに住んでいるメンバーの家で行った。大学付近で一人暮らししている者をメンバーに加えておくのも結構重要である。いやもっと早く作れよ

本番

ついに大会当日である。まず各参加チームはレギュレーションに適合しているかチェックを受けた後2回ほど試走をすることができる。急遽タイマ制御に切り替えた身の上なのでここで実際のタイムを計測しプログラムに反映した。ストップウォッチなどを使ったわけではないので誤差があるのだが(使え)。また、開閉しないならドアは要らないのではという発想に至り一戦目の直前にオミットした。タイマ制御にした時点で要らないの確定だよね

さてこのロボコン、予選リーグは3あるいは4チームの総当たり戦で得点の合計を競うものとなっている。我々は3チームのブロックである。最初の相手は東工大のチームである。東工大人民解放軍ばりにやたらとチームが多い。しかも強い。2位3位4位全て東工大である。ちなみに1位は案の定東大。汚いなさすがRobotechきたない

さて我が初ロボコン初試合である。さらに言うと東工大は私がかつて憧れ続け一般入試で2度AOで2度(なお足切り)因縁の深い大学である。負けるわけにはいかないが正直勝てるとも思えない。まあ私の学歴コンプの話は置いておいて試合開始。

「メインシステム 戦闘モード起動します」※喋りません

自動機が走り出し最初の旋回ポイントへたどり着いた。が案の定タイミングがズレている。思い通りの軌道にはなっていない。がしかし着実にいくつかのブロックを集めている。ひとまず自動機が一通りのプログラムを実行し終えた。ここで「リトライ」のルールが活きてくる。各チームは5回のリトライ権を持っており、自動機或いは手動機をスタート位置で再起動することができる。このスタートゾーン、そこそこ広いのである。位置をずらす、傾ける等初期状態のランダマイズを繰り返すことでそこそこブロックを集めることができる。勢い余って進入禁止エリアに侵入してしまいリトライ回数を減らされるとかもしたが。ちなみに手動機は結構綺麗な挙動で着実に陣地を確保してくれた。結果慶應250点東工大150点。なんと勝ってしまった。正直驚いたがこれには狂喜せざるを得なかった。ちなみに東工大の人が試合終了後に握手を求めに来るなど滅茶苦茶紳士的だった。もう一度戦ってみたいものである。

自動機、動かず

さて2戦目の相手は明治大学。スタート位置が1戦目と逆なのでプログラムを左右対称に書き換える。そしてプログラムを焼いた試合直前致命的な状態に陥った。自動機が動かないのである。マイコンのLEDの光り方から見てまたも再起動を繰り返しているようだ。バッテリの電圧を測ってみると6.3V(2セルのLi-FeバッテリなのでMAXは6.6V)。

確定事項ではないがこの原因は三端子レギュレータにあると思われる。今回私が設計した回路ではNucleoに5V電源を使用、この5VをNJM7805FAというレギュレータで取り出している。

f:id:messiahneoneet:20161006113118p:plain

このグラフはそれのデータシートからの抜粋である。Nucleoに5V電源を使用する場合電流は0.5Aが最大なのでI=0.5Aの線に注目していただきたい。6.6Vならしっかり5Vを供給してくれるが0.3Vでも下回ると4V台に落ち込んでしまう。この電圧不足がおそらく命取りとなった。安全率を考えなかった私のミスである。

仕方ないので乾電池5本(7.5V)で動かそうとするも試合まで殆ど時間がなく配線に失敗。自動機は動かずじまいだった。そして手動機さんチームの奮戦も空しく敗北、そのまま予選敗退となった。

交流会

NHKロボコンなんかでもやっているようだが、決勝戦終了後に技術交流会というのがある。参加者同士でロボットを見たり質問したりできる。私は東工大などの上位チームを中心に見ていったがやはり独創的な機構がポンポン出てくる。そして上位チームの自動機でライントレースを行っているところは私が見た限りゼロで、だいたいロータリエンコーダやステッピングモータをつかっていた。

幻滅しました。フォトリフレクタちゃんのファンやめます。

その後入賞チームの表彰があり大会は幕を閉じた。

スケジューリング

さてスケジューリングについてここで少し書いておくとしよう。慶應では例年のことらしいがやはり開発が遅すぎる。来年はもっと厳しく日程を組むよう後輩に指導すべきかもしれない。参考までに聞きかじった他校の情報を書いておくと東大は毎朝八時に点呼を取るほどのスパルタ体制を敷いているらしい。東工大のチームも九月の頭には完成させて試走を始めたと言っていた。

回路とスクリプトももっと早くから作り始めるべきだった。機構の製作は他のメンバーに丸投げしてもよかったかも。

あと私が寝坊しすぎた。

総括

メインフレームは板張りにせずアングルとかで作ろう

・余裕を持って完成させよう

・そのためにも早期からのデスマーチを覚悟しよう

・しっかり起きよう

・曲げ加工は穴あけなどの他の加工を全て終えてからにしよう

・分業制をしっかり敷こう

・配線にはなるべくフラットケーブルを使おう

・モータの電圧降下はしっかり考えよう

・バッテリの電圧降下をある程度想定した回路を組もう

・そもそも予備バッテリを持っていこう

 告知

最後になりますが今週末慶應義塾大学矢上キャンパス(日吉のさらに奥の山にあるサティアン)で矢上祭という学園祭があり、それに我々も出展します。今回使用した機体も展示してあるので(自動機は動かすかわからない)興味があったらぜひ来てください。どうせ工大祭に客取られるだろうけど

 

追記:ロータリエンコーダは高いらしいのでロータリエンコーダよりステッピングモータを愛するようになると思いますタイトル詐欺ですねごめんなさい