こんにちは、VIVITAのソフトウェアエンジニアのかっしー(@kassy_vvt)です。
本稿では以前記事にしました、弊社が運営するVIVISTOP柏の葉にて開催したロボットコンテスト「VIVITAロボコン」を支える裏側の技術と思いについて語らせていただきます。
VIVITAが提供する技術
VIVIPARTS と VIVIPROGRAMMER
弊社で開発している電子回路モジュールキットとそれを駆動するプログラムを手軽に組めるビジュアルプログラミングアプリです。以前の記事で板本さんが解説してくださっているものです。
VIVIPARTSは無線モジュールとバッテリーを備えた「Core」と様々な機能を備えた「Branch」から成ります。「Core」と「Branch」は有線接続で、「Core」とタブレットは無線(Bluetooth Low Energy)で接続します。タブレットは複数の「Core」と接続可能なのでタブレットをハブとして複数の機能モジュールを無線接続することができます。これにより、「無線コントローラーで遠くのロボットを動かす」のようなシステムを簡単に組むことができます。
本製品はVIVISTOPオープン前から開発しており、この製品を活かす場としてロボコンを企画したという面もあります。VIVITAロボコンの根幹となる技術と製品です。詳細は追々別途記事にしていけたらと思います。
VIVIDESIGNER
子どもに気軽にレーザーカッターを使ってもらうために開発したCADツールです。ロボット製作に備え、VIVISTOPオープン直前に開発しました。
大雑把な図形ならば指で画面を適当になぞるだけで作図できますし、 ロボットの部品のような精密な図面も数値入力で正確にかつ極力シンプルな操作で製図できるように開発しました。アプリ内のエクスポートボタンを押せば即座にレーザーカッター横の操作端末に図面情報が無線で転送されます。
もちろんレーザーカッターを使うためなら世には他の製図ツールがあるのでこのツールを使う必然性はありません。しかし
- イラストレーターなどの高機能ツールは高価
- PCは十分な台数が無い(タブレットは十分な台数がある)
- 他のツールの存在を認知した上で、もっととっつき易いツールを開発する余地があると思った
などの理由から開発を決行しました。
あいや、すいません... いろいろ理由はつけましたけど、本音を言うと「僕が作りたかったのでムシャクシャして作った」です。これについては次の記事で詳細を述べさせていただきたいと思います。
環境
テンプレロボ
VIVIPARTS(モータードライバーBranch)を搭載した、かっしー謹製オープンソースハードウェア(設計書公開)のロボットです。両輪のDCモーターによる駆動と2関節のアームを備えています。 ロボット製作未経験の子どもでも(さらに言えば工作未経験の子どもでも)製作にとっかかれるようにとの思いで開発し、構造を極力簡単に、誰でも完成できることを目指しました(実際に誰でも完成させられたとは言ってない)。ロボットを作ってみたいけど最初の一歩は何していいかわからない子どもはまずこれを図面どおりに作ってみなよ、という風に使いました。 もちろん図面通りに作ってそれで満足してもらっては何も面白くない上に子どもの創造性が発揮できないため、ロボコン本番のステージでは「テンプレロボのまま挑んでも高得点は取れない」ステージにすることを心がけました(後述します)。
マニュアル
さすがに図面みただけでいきなり作れる子も少ないと思い、可能な限り丁寧に製作方法を解説したマニュアルを用意しました。同人誌執筆経験を活かし、Re:VIEW+GitHub+Docker+CircleCIの環境を使って執筆しました。製図方法も習得してほしかったので、マニュアルは紙の冊子で提供し、子どもは冊子を見ながら自分でVIVIDESIGNERで図面を作成していく、というスタイルをとりました。
ステージとルール
ルールは「フィールド上のボールを収集し、所定の場所へ運搬」としました。ロボット同士のぶつかり合いや競走は避けて何かしら単独競技で課題解決を目標にしたかったので、初回はこの形式にしました。 前述の通り、テンプレロボでは高得点がとれないステージにしています。(逆に言うと3〜5点程度はテンプレロボで取れる)ステージ右奥のスロープはテンプレロボでギリギリ登れない登坂角になっており、ステージ右手前の高台にはテンプレロボのアームは届きません。難所にあるボールほど高得点です。高得点ボール獲得のためには子どもは自分でアイデアを出してロボットの改造・新造をせねばなりません。
サポート
VIVISTOPでは子どもの製作・活動にはクルーが全力でサポートするのが基本です。ロボット製作時にもクルーによるサポートがあります。ただしアイデア出しに関しては一切口出しをせず、実装方法やツールの扱いについてのサポートがメインです。
課題・反省点
いくつか反省点もありますので、自戒のためにここに記させてください。
VIVIPARTSとタブレットの供給不足
VIVIPARTSはまだ十分な数が生産できておらず、子どもたちにシェアして使ってもらう状態でした。そのためロボコン直前などの混雑時には供給不足状態になってしまいました。また、必要な部品が数種類(CoreとBranchとケーブルとタブレット等)に及んだため、子ども同士でお互いに「あれはあるけどこれがない」状態になるケース(デッドロック状態)も頻発しました。数が足りないのは量産品ではないため仕方ないですが、貸し出し管理をもう少し体系化してデッドロック状態は防ぐべきでした。
自律制御への導線が不足
今回のロボコンは競技者が自分でロボットを「操縦」する前提のルールと環境でした。そのため、各位のアイデアの良さや実装力と同等に「操縦テクニック」が重要になってしまっています。これは主催者の僕としてはやや不本意な点であり、やがては子どもがロボットの自律制御プログラムを組めるようにして、操縦テクの比重を下げたいと思ってはいます。思ってはいますが、現時点ではその導線は足りていないです。
0点続出問題
上述の通り、操縦テクの重要性が高いせいもあり、完成度の高いロボットを製作したのに本番で操縦がうまくできず0点という子が複数人出てしまいました。テンプレロボでも3点程度は取れると踏んでいたため、テンプレロボを完成させたのに0点になってしまうのは完全に僕の落ち度です。自身がかつて経験したロボコンで一歩も動けずリタイアしたことがトラウマになっているだけに、子どもたちに同じ苦い経験はさせたくなかったのですが...