WESEEK Tech Blog

WESEEK のエンジニアブログです

Raspberry Piで、コミュニケーションシンクロ率を上げる

この記事は、 2021/4/8 に行われた WESEEK Tech Conference の内容です。

Raspberry PiArduino を使ってデバイスを作成し、社内環境の改善をするお話をしました。今回のお話は、ハードウェアについてが多めです。時間の都合でソフトウェアの話まで広げられなかったので、それはまた後日記載したいと思います。

目次

WESEEK の 日常と課題

f:id:Aqutam:20210414125849j:plain

弊社では、リモートで稼働するときに Google Meet を利用しています。リモートで稼働する場合は、Google Meet に常時接続をして、オフィスで一緒に仕事をしている感を共有しています。社内にある大型モニタには、 Google Meet 参加者全員を映しています。弊社は、高田馬場オフィスと別府オフィスの2つの拠点がありますが、各拠点にはカメラを各1台ずつ設置しています。

さて、その各拠点に設置したカメラからの眺めですが、こんな感じです。

f:id:Aqutam:20210414130521j:plain

けっこう暗くて地味です。あまり、わくわくしません。

また、社内イベントをする際は、スマホカメラを三脚に固定してリモート参加者に中継しています。カメラは三脚に固定されているので、カメラの裏で起きたリアクションなどフレーム外でのできごとが咄嗟に共有できない課題があります。

f:id:Aqutam:20210414142108j:plain

そこで、楽しさを共有できて全員にスポットを当てられる、そんなカメラが社内に必要だと思いました。

理想のデバイス探し

どんな機能を持ったカメラがあると、社内の課題を解決できるか考えました。

  • カメラの向きを自由に動かせる
  • 高画質
  • 光学ズームできる
  • 話している人に自動でフォーカス・追従する
  • APIで他のシステムと連携できる
  • カメラ自体が自分で移動できる

探してみると、いくつか見つかりました。

f:id:Aqutam:20210414143324j:plain

安価なものでも 3~4万円、高機能なものでは 10万円以上するものもあり、なかなか高額でした。

API を提供しているものは少なく、自走するものは1つもありませんでした(笑)

既製品では、 WESEEK の課題を解決できるぐっとくるカメラが見つかりませんでした。

なければ、作るしかない。作ろうと決意しました。

バイス製作の工房探し

さて、カメラデバイスを作ろうと決意したものの、作業できる場所がありません……。
自宅は壁が薄いので、工作機械を使うとすぐに苦情が入ってしまいます。

そんな作業場所を探している頃、社内では mokumoku 会というものが盛り上がってきていました。

mokumoku 会とは

f:id:Aqutam:20210414165340j:plain

mokumoku 会は、毎週末に会社で開催し、自己学習をもくもくとやる場です。数人のインターン生が集まり、自主的に勉強していたところから始まり、会社を開放して大きくなっていった活動です。

mokumoku 会では、Reactや、Node.jsや、Kubernetesや、デザインなど、業務に関連することを各々勉強していました。

そして、ふと気が付きました。

「mokumoku 会の中で、カメラデバイスを作ればいいじゃん」と。

WESEEK の工房化

f:id:Aqutam:20210414174718j:plain

mokumoku 会でカメラデバイスを作ろうと決意してから、加工に必要な工具、電子部品等を自宅からどんどん会社に持ち込みました。

グラインダー、ヒートガン、ボール盤、これらはIT系の会社ではまず見ないものですね(笑)

こうして、WESEEK はあっという間に工房化し、 mokumoku 会から「ものづくり部」が誕生しました。

賢いカメラ neighbo <ネイボ> 誕生

今回製作したカメラデバイスには、 neighbo <ネイボ> という名前を付けました。製作の過程は後述しますが、先に neighbo の機能紹介をしたいと思います。

f:id:Aqutam:20210414175851j:plain

neighbo には、こんな機能や特徴があります。

  • MQTT経由で操作できる
  • Xboxコントローラーで操作
  • 声のする方向に振り向く
  • 360度何回転でもできる
  • 愛着の持てるフォルム
  • 安定性
  • 高品質な映像
  • 上下左右自由に動かせる
  • 高い拡張性

既製品にも同じような機能はありますが、自作デバイスのため、拡張性についてはかなりあると思います。

f:id:Aqutam:20210414180822j:plain

neighbo を構成する部品はこのようになっています。

neighbo の部品の固定には、いたるところで両面テープが使われています。これは、以前 iPhone の分解記事を見ていたときに、主要な固定を両面テープで行っていたのを真似しました。

カメラは、一般的な Web カメラです。

ReSpeaker Mic Array v2.0 は、360度マイクで、声のする方向に自動的に振り向くようになっています。

neighbo が実際に動く動画がこちらです。

今回製作した neighbo の完成までには、いくつもの試行錯誤がありました。

バイス製作の試行錯誤

試行錯誤1: 試作・設計

バイスを作ると言っても何から始めようと悩みました。これまで、 Raspberry Pi は、Lチカくらいしかやったことがなく、本格的にデバイスを作成するのは初めてでした。

とりあえず、モーターを回してみることにしました。

f:id:Aqutam:20210414183257j:plain

秋月電子ステッピングモーターとモータードライバーを購入し、配線してすぐにモーターを回すことができました。

設計を進める上で、初号機には必ず搭載したい機能がありました。

それは、「360度回転」です。

これを実現するためには、スリップリングという部品を使います。

f:id:Aqutam:20210414184136j:plain

スリップリングとは、回転体に電力・信号を伝達することができる回転コネクタのことです。この部品により何回転してもコードが絡まらなくなります。

ステッピングモーターを回すことができましたし、このスリップリングと組み合わせて、試作機を作ることにしました。

とは言ったものの、今度は設計をどう進めるか、悩みました。

f:id:Aqutam:20210414184621j:plain

少し話は逸れて、neighbo を作る前に ito-ocashi スタンドというものを作っていました。

これは、MDFという板を、レーザーカッターで切り抜き、木工ボンドで接着して組み立てた物です。

ito-ocashi スタンドの設計をする際は、上の画像の左上のように手書きで立体の設計を行っていました。それを左下のように図面を作成しレーザーカッターで切り抜きました。頭の中で立体を考えるのはとても大変で、実際に作ってみたら後から考慮不足も多々見つかりました。

f:id:Aqutam:20210414185556j:plain

neighbo は、ito-ocashi スタンドよりも複雑なものになるため、手書きでの設計はやめ、 CAD を使うことにしました。

Fusion 360 というソフトで設計しました。YouTube に公式チュートリアルがあるので、2時間程ですぐ始められます。ですが、ねじ1つから、部品を1つ1つ作図していく必要があるため、試作機の設計にはまる2日かかりました。

f:id:Aqutam:20210414190037j:plain

完成した試作機のイメージはこちらです。

f:id:Aqutam:20210414190145j:plain

設計が終わったら、次は加工です。 MDF をレーザーカッターで切り抜きました。

f:id:Aqutam:20210414190246j:plain

レーザーカッターは、 FabLab Setagaya を利用しました。ここでは、 45分 2,040 円でレーザーカッターを利用できます。

ネジや金具などの部品は、 モノタロウミスミ で調達し、試作機の組み立てをしました。

組み立てた試作機がこちらです。

f:id:Aqutam:20210414190840j:plain

試行錯誤1: 試作・設計 の気づき

試作機を作ってみて下記のことを気づくことができました。

  • CADを使うと設計ミスが劇的に減った
  • 工業用部品の調達は「モノタロウ」「ミスミ」が便利
  • スリップリングは高い、無限回転が本当に必要なのか設計時にしっかり考える

試行錯誤2: チルトユニットの製作

次の試行錯誤は、チルトユニットの製作です。初期型 の neighboにはチルト(上下)機能がありませんでした。

f:id:Aqutam:20210414191343j:plain

社内のイベントでカメラを下に向かせたい場面が多々ありました。ということで、チルト機能を突貫で作りました。

作ったチルトユニットがこちらです。

f:id:Aqutam:20210414191534j:plain

ステンレス板にボール盤で穴あけをしたのですが、ステンレスが非常に硬く、買ったばかりのドリルの歯を数本溶かしてしまいました。

このチルトユニットは、電源が切れると下の動画のように困ったことが起こります。

姿勢を電力で保持しているので、電源断で勢いよく落下してしまいました。
カメラへ相当なダメージがかかってしまいます。
(実は、設計段階で薄々気がついてはいました……)

このままでは良くないので、改良版の設計開始です。

f:id:Aqutam:20210414192439j:plain

改良版の設計もまた Fusion 360 で行いました。

初期のチルトユニットと異なり、カメラのレンズの中心でチルトできる機構に、映り方を改善しました。また、電源が切れても振り子のように安定して、カメラにダメージがかからないようにしました。ポテンショメータを追加し、チルトの位置の上限・下限も管理できるようにしました。

MDFをレーザーで切り抜き、組み立て、完成した改良型チルトユニットがこちらです。

f:id:Aqutam:20210414195620j:plain

実際に動かしてみて、痛恨の設計ミスに気が付きました。
ステッピングモーターを外側に配置してしまったため、回転時に振られて本体の脚が浮くようになってしまったのです。
(実は、こうなることは設計段階で薄々気がついていました……)

試行錯誤2: チルトユニットの製作 の気づき

チルトユニットを作っての気づきは下記です。

  • 回転体の重心は常に意識して設計する
  • ステンレス板は難加工材、アルミ板を選ぶ
  • 金属ギアは重い、できればプラスチックを選ぶ
  • タイミングプーリーとベルトの角度は十分に取る
  • もしくは、アイドラー・テンショナーを入れる

その他の試行錯誤

この他にももっと試行錯誤の紹介をしたかったのですが、時間が足りませんでした。

  • 金属軸の加工
  • モーターの異常発熱を抑える
  • 冷却ファンの選定
  • 増える電源の種類に悩まされる
  • ソフトウェアの構築
  • 急な電源断に備える
  • 電磁ノイズを抑える
  • 目的を達成するための部品をどうやって探すのか

これらについては、また後日 Tech ブログに記載したいと思います。

neighbo の成長

f:id:Aqutam:20210414200706j:plain

neighbo は、 2021/11 から作り始めて、3ヶ月で現在の形になりました。

導入と効果

neighbo を実際に社内で稼働させて、下記の効果があったと思います。

  • neighboを自由に操作できるので、会社に一緒にいる感が強まった
  • neighboが賢い動きをするので、社内で度々話題になる
    • 導入前よりもコミュニケーションが増えた
  • neighboを前にして、リモート越しに会話するようになった

結果として、 社内のコミュニケーションシンクロ率はアップしたと言えます。

かかった費用

この neighbo 、 既製品より安くできたのでしょうか。

こちらが部品・加工費一覧です。

f:id:Aqutam:20210414201051j:plain

「¥84,676」

既製品とまずまずの金額に落ち着きました。

しかし!

加工するために使った工作機械を含めていませんでした。

工作機械の金額がこちら。

f:id:Aqutam:20210414201307j:plain

「¥117,520」

合計すると、

f:id:Aqutam:20210414201402j:plain

「¥202,196」

既製品の倍以上の金額になってしまいました。

気づき

f:id:Aqutam:20210414201635j:plain

大量生産による低価格化がいかにすばらしいかを実感しました。

まとめ

あえてデバイスを自作する良さを上げると、下記が考えられます。

  • 既製品を買ったほうが早いし、安いが、作るのは楽しい
  • 既製品と違い、みんなが要望を出してカメラが成長していく
    • その過程で自然とコミュニケーションが活発になる
  • 気づきの連続だった

これらは、既製品を買っただけでは得られなかったことだと思います。

neighbo の展望

neighbo には、まだまだ搭載したい機能がたくさんあります。

f:id:Aqutam:20210414204712j:plain

  • 車輪を積んで自走
  • ズームできる
  • 小型化
  • ROSの導入
  • 録画できる
  • Slackから操作
  • 豆まき
  • HQ Camera
  • 静音化
  • ヘッドライトの搭載
  • 外見のデザイン
  • WebRTC
  • 映像処理の外出し
  • 電源の種類を少なくする
  • 声コマンドで操作
  • ジェスチャー操作
  • 画像認識
  • 機械学習
  • 他拠点にも置く
  • API
  • DAWとの連携

これらの機能が搭載できたら、また別の記事で紹介したいと思います。

著者プロフィール

田村 貴幸

株式会社WESEEK / システムエンジニア

Webシステム開発会社を2社経験後、2019年8月にWESEEKに入社。
現在は、大手IXの業務自動化システムの機能開発やインフラの設計・構築に携わる。
2020年に、部活動「ものづくり部」を立ち上げ、社内の困り事をIoTを駆使して解決に努めている

株式会社WESEEKについて

株式会社WESEEKは、システム開発のプロフェッショナル集団です。

【現在の主な事業】

  1. 通信大手企業の業務フロー自動化プロジェクト
  2. ソーシャルゲームの受託開発
  3. 自社発オープンソースプロダクト「GROWI」「GROWI.cloud」の開発

GROWI

GROWIは、Markdown記法でページを記述できるオープンソースWikiシステムです。

【主な特徴】

  • テキストも図表もどんどん書ける、強力な編集機能
  • チーム拡大に迅速に対応できる管理者向け機能を提供
  • 充実した機能・サポートでエンタープライズにも対応

GROWI.cloud

GROWI.cloudOSSのGROWIを専門的知識がなくても簡単に運用・管理できる、法人・個人向けの商用サービスです。

大手SierISPから中小企業・大学などの教育機関まで幅広くご利用いただき、さらに個人や大学サークルでもご利用いただいています。

【導入事例記事】
インターネットマルチフィード株式会社様 growi.cloud

株式会社HIKKY(VR法人HIKKY)様 growi.cloud

WESEEK Tech Conference

WESEEK Tech Conferenceは、株式会社WESEEKが主催するエンジニア向けの勉強会です。
月に2回ほど、WESEEKに所属するエンジニアが様々なテーマで発表を行う予定です。

次回は、4/22(木) 19:00~20:00に開催予定。 k8s本番サービスの運用ノウハウについて、バックエンドエンジニアの今間がお話します。

インフラ担当者の皆さんは必見の内容です!

現在、connpassやTECH PLAYで参加受付中です。皆様のご参加をお待ちしております! weseek.connpass.com TECH PLAYはこちらから

一緒に働く仲間を募集しています

東京の高田馬場オフィス、大分にある別府サテライトオフィスにてエンジニアを募集しております。
中途採用だけではなく、インターンシップも積極的に受け入れています!

詳しい募集要項は、弊社HPの採用ページからご確認ください。