電電のブログ

電電生だったひとのぼやき

エンジニアリングで京大学祭の効率をあげた.

どうも電電です.

先日AR名刺を誰でも作れるようなサービスをリリースしました(露骨な宣伝)

https://arprofile.netlify.com/input.html

このリリースの顛末とかはまた別で書きたいと思います.

今回は以前作成した,
denden-seven.hatenablog.com

こいつを京都大学の文化祭で実践投入したのでその経緯とかを書いていきます.

実践投入に向けて

前回のプロトタイプを作成してから,いくつかの変更を行いました.
(この章は以前のブログのまとめなので,読んだ方はさらっと読み飛ばしてください)

現状

  1. サークルの出し物で,エアガンの射撃体験をやっている
  2. 京都大学の学祭での出し物において4日間で,1000人ちょいの人がくる.
  3. 日曜の午後とか人が並びすぎて教室の外にまで列ができるのをなんとかしたい(収益減,30分待ちなどがざら)
  4. 接客の仕事の種類が多くてずっとやってるのしんどく,ターゲットの上げ下げが特にめんどくさい

これを解決するために,自動ターゲットを作ったというお話です.

実践投入準備

箱の強化

以前はプロトタイプだったので,段ボールで作ったのですが,実践投入するに当たっては,

  • 4日間エアガンで打たれ続ける(訳5m,かなり近い)
  • 単純計算で20000発くらいの弾に晒される
  • ターゲットが上がってくる途中でもおそらく打たれる
  • ターゲットの数の増加(プロトタイプは一個だったが増やさないと使い物にならない)

という問題を解決しなければなりませんでした.
そのためにしっかりした箱を作らないと行けませんでした.
ここら辺の箱に関しては,僕が作ってもDIYの粋を超えそうになかったのと,レーザー加工機を使える後輩がいたので,彼にお願いしました.

やっぱり,持つべきものは「レーザー加工器を使える後輩」ですね.(強強)

で出来上がったのが,これです.

f:id:denden_seven:20200213215134j:plain:w300
f:id:denden_seven:20200213215119j:plain:w300

自動ターゲットの部分はarduinoのステップモーターにうまくハマるような部品と,枝別れの部分を3Dプリンターで作ったらしいです.

f:id:denden_seven:20200213215123j:plain:w300

また,前面装甲に関しては,単なるアクリル装甲だったのですが,アクリルだけだと打たれるとかけたり,したので,前面だけ別の素材を組み合わせて3重装甲にしています.

プログラムの強化

どんな使い方をするのが最適なのかまだわからなかったので,いくつかのモードを作成しました.

モード変更は赤外線モジュールをつけて,テレビのスイッチで変更できるようにしました.
作成したモードは

  • 信号がきたらターゲット復帰
  • 一定時間ごとに自動でターゲット復帰
  • ターゲットが倒れたことをスイッチで認識し,全てが倒れたらターゲット復帰(ハード側未実装)
バグの除去.

リモコンの信号って16進数になっていて,以下のコードみたいに0x??????みたいになっているんですが,通信がうまく行ってない時や赤外線の有効射程外から信号を受け取った時に0xFFFFFFとなるのを見落としていて,バグになっていました.
f:id:denden_seven:20200213215126j:plain:w300

基板の強化

モーターが動き続けるのと,近距離で打たれ続けるので基板に伝わる振動がやばいことになることが予想されていました.
なので,はんだをして,基板を一から作るつもりだったんですが,どこが壊れるかわからないのと,壊れた際にはんだをしてしまうと修理が絶望的にめんどくさいという理由から諦めました.代わりに,配線を変更し,壊れにくいようにしました.

f:id:denden_seven:20200213215146j:plain:w300
改修前コードが汚い..
f:id:denden_seven:20200213215129j:plain:w300
改修後 きれいになりました

また,基板とaruduinoがそれぞれ独立しているため,基板が壊れてもすぐに交換できます.
ほかにも,振動を吸収できるようにスポンジをくり抜いて,そこに基板を固定することで振動ができるだけ伝わらないようにするなど対策を重ねました.

f:id:denden_seven:20200213215116j:plain:w300

実践投入

実践投入に当たって,前日準備で設置を行いました.
設置に当たっては箱の下部にネジを使って無理やり取り付けました.ここでポータブルバッテリーを使えるarduinoの強みが出ました.
配線ないの神.つまりarduinoは神

f:id:denden_seven:20200213215138j:plain:w300
設置状況

実践投入したことによる効率化

実際に今まで行っていた業務との比較をおこないました.

これまでのターゲット


作成した自動ターゲット

結構差がでかいですね.何もしなくてもいいというのが大きい気がします.
実は最初,赤外線での操作を行っていたんですが,赤外線が通過しつつ,強度が保てるような前面装甲を作ることができなかったので,ターゲットの上下によらず一定時間ごとに復帰するモードを採用しました.
あといちいち操作するのがまどろっこしくなったというのも大きいです.本質的に必要なのは,何もしないで勝手に動いてくれることでした.

故障とその原因

4日間のうち,2日目が終わった時点で,アームのモーター部分が壊れました.
モーターが壊れたというよりも,アームの位置が規程の位置まで上がらなくなったという故障です.
あと的が撃ち抜かれて割れてました.

f:id:denden_seven:20200213215142j:plain:w300
ぼろぼろ

おそらく,アームが上がっている状態で撃たれたことによりギアがずれてしまったのが原因です.
一度分解して,モーターの交換を行って修理しました.
一応,もう一度同じ症状が出た時のために,アームの角度をソフト側で調整できるようにプログラムを書き換えて,スイッチで既定の位置を変更できるようにしました.
残り2日間はうまく動いてくれたので,この機能は結果的にはいらなかったですが...

結果

細かい影響や,導入結果は測定できていません.
実際業務でするならKPI(評価指標)を「お客さんの捌けた人数/時間」とする,「レーンで働いている人の復元作業にかかる時間を計測する」などとし,計測,評価までするべきだと思います.
が,全体の人数は計測していても,どのレーンで何人捌いたかなどの細かい人数情報は計測していないのでわかりません.
業務として,ちゃんとするなら計測する仕組みとか,A/Bテストを用意すべきだとは思いますが,まあサークルなんでね,そこは妥協しました.

まとめ

思ったより,故障もなくうまく動きました.これまでの経験と,エンジニアとしての知識を生かしてうまく問題に対処できた気がします.
これが僕とか後輩みたいなエンジニアがいなくてもゴミにならずに稼働し続ける仕組みを作るのが本当の成功ですかね.

とりあえずお世話になってきたサークルに多少の貢献ができたんで満足しました.
これからは就活と研究頑張ります.

ほなまた
電電