準備を開始したのは5月25日。はじめた時期だけは、わりと優等生だったのではないか。新橋のタミヤでミニ四駆PROを買っただけだが。
(その後に、リアルタイムで書いていった作業状況というか雑記は、twitterからたどれます。)へボコン用にとりあえずミニ四駆を買った。レッツ&ゴーなのは世代的な理由です。これを元にミニ四駆ファンに怒られそうな改造をする予定です。 pic.twitter.com/pFEioAFfx6
— だまん (@FLASH1N) 2018年5月25日
ちなみに結果は、初戦敗退。あっさり負けましたが…。
作ったマシン
基本コンセプトはコントロールできるミニ四駆だった。行け、マグナム!
GPIO→モーター
本当はタミヤの有線コントローラーをつけてもよかったのだが、QiitaとかのIT系の皆さんがある時期よくやっていたラズパイ*1による制御(Lチカでググると出てくる)をやってみたくなり、つい秋月電子でTB6612というモーター用のドライバーICのキットと、ラズパイ用ブレッドボード接続キットと、ブレッドボードなどを購入した。
ドライバーICというのは大ざっぱに言うと電子式のスイッチである。ラズパイの端子(GPIO)とつなぐと、端子電圧が上がっているときにスイッチが入る。
GPIOは40本くらい端子があって、剣山のように並んでいるのだが、次のようなプログラムで番号を指定して電圧を変えることができる。
const output = new gpio.DigitalOutput('GPIO19'); output.write(gpio.HIGH);
(環境はNode.jsで、GitHub - nebrius/raspi: Base functionality for working with a Raspberry Pi from Node.jsというライブラリを使用した。)
ところが配線ミス(接続キットの基板の裏表を間違えた)で自分がどの端子の電圧を上げているのかわからなくなった。端子番号一覧が書いてある紙をぐるっと回転し、裏返した感じになってしまったのだ。
仕方ないので、また秋葉原に行って、こんどは同じ並びの千石電商で青色LEDを購入し、端子1本ずつに挿してみて、確認した。秋月ではなく千石に行ったのは気分である。
ちなみになぜ青色かというと、青色が一番電圧を必要とするので、過電流が流れにくいかな?ということを考えたわけだ。電子工作慣れしている人なら絶句するようなヘボさである(ちなみにテスターはない)。
リモコン
まあ、でも、ここまではわりと上手くいって、実際にモーターの回転は確認した。
意外と大変だったのはリモコン。本番3日前くらいになって作り始めたのだが、全然進まなかった。
問題は経験のない技術(☆印)を3種類ほど組み合わせたことだ。実際のプログラムは下記のような構成になっているが、HTTPサーバー以外は初めてやった。
- ラズパイをWi-Fiアクセスポイントにするやつを入れる☆
- 簡易なHTTPサーバーを作る
- iPhoneのブラウザーからリクエストを受けたらモーターを動かすやつを作る☆
- iPhoneのブラウザーに表示するウェブページ(リモコンの見た目)を作る☆
これは性分だけど、何かしら新しい技術を使うチャンスがあると、つい使ってしまって、苦労するということがよくある。
なので、「自分がやりたいことを順番にやったら絶対ヘボさがにじみでる」と、無条件に確信していて、公言していたのだが、まさにその通りになったわけだ。(へボコン前夜は徹夜したけど、当日朝9時に完成したのでよかった。)
あと、実は僕、例の高専ロボコンで有名な高専の出身なんだけど(電子工学と情報工学をやる学科を卒業している)、卒業研究はニューラルネットワークだったので、「ディープラーニング」の札の件が、指導教官にバレたらお説教ものだろう。
ヘボコン参加者としては、工学が専門というのは、資格にちょっと問題があるとも言えるのだが、しかし、だからこそ身の丈にあったヘボさというのは誰にでも表現できると主張したい。
ヘボさというのは、やりたいこととできることのギャップによって生まれる。あるいは、プロには考えられないような技術の使い方によって生まれる。
今回僕は一切スキルをセーブしていないが、ご覧の通りだ。誰だって、身の丈に合わない技術や理念を貪欲に取り込めば、いくらでもヘボくなるのだ。
それに、スキルを封印したら、楽しさが減る。見る楽しさが減りそうだから、他の参加者にもできれば封印しないでほしいと思う。
結果
当日は、俺がディープラーニングだ! と、胸にディープラーニングと書いた紙を貼って登壇した。貼りつけること自体は少し前から考えていたことだったが、「ミニ四駆を音声でコントロールするため」というのは、会場で思いついた。意外と説得力のあるアイディアだったと思っている。
はじめに書いたとおり1回戦で負けたのだが、3回戦まで登壇した。1回戦の対戦相手の方たちに声をかけていただき、チームに加えていただいたのだ。その節はおじゃましました。ありがとうございます。
考察
敗因を考えたんだけど、パワーの差だったと思う。
もっとも、それは製作開始前に、公開されている大会のビデオを見てわかっていたのだ。基本的にキャタピラーが強いのである。
ちなみにこれは次のようなモデルで説明できる。
ゆっくりした押し合いでは、2台のロボットは1つの物体とみなせる。どちらにとっても押す質量は2台の合計だから、自分が相手より重かろうが軽かろうが同じである。 塊が左右どっちに動くかは、力の大小できまる。だから最終的には、押す力の強い方が強い可能性が高い。
押す力はモーターの数が多くて、さらにタイヤと地面が接する面積が大きい方が伝達効率はいいはず。 (なので、モーターが2つあり、設置面積が大きいタミヤのキャタピラーは強い。ついでにギヤ比も低い。)
まあ、力の見積もりは、それだけではない(モーターの回転域とか色々ある)けど、そこまでやってられるか。
ちなみに、以上のことを考えて、「俺、天才」とか思ってたのに、なんでミニ四駆を買ったかというと、やっぱり何か愛着があるからだ。ミニ四駆をコントロールできるようになるって、夢だよね。
そういう意味では、夢は多少かなったとも言えるし、それを見せびらかすことができ、とても楽しかった。みなさんどうもありがとうございました。
それではまた、ヘボコンで。
*1:Raspberry Pi 3 Model Bというカードサイズのパソコン