Google Assistant搭載の自律走行ロボットを作ってみた。

みなさんこんにちは
GMOソリューションパートナーのH.Tと申します。

以前、Google Homeアプリで「本気のしりとり」を作ってご紹介したものです。

今回また、Google HomeつながりでGoogle Assistant + 電子工作した話をご紹介したいと思います。

作りたかったもののイメージはGoogle Assistantを搭載した
自律走行型ロボットだったのですが、こういうのが出来上がりました笑

機能紹介
・三輪車で自律走行。
・Google Assistantを搭載し(Rasberry Piにインストール)
Google Home同様の受け答え可能。
・マイクアレイを搭載。
呼びかけに反応し声のする方へ向かっていく。
音楽やノイズと声の聞き分けができる。

結論なんとかイメージした最低限の機能は実現できました笑
以下やったことをご紹介いたします。

■とっかかり
まず前提として私は電子工作の知識がなかったので
書店に行って電子工作系の本をいくつか探すところから始めました。
モーターを動かすサンプルがあるものとRaspberry Piを扱っている本を選んで数冊買いました。
そのあと参考書に従って必要そうなパーツなどAmazonで揃えました。

■買い物リスト(amazonでの商品名貼り付けてます。)


・電子部品ごとの制御を学べる! Raspberry Pi 電子工作 実践講座

パーツなど
・ABOX Raspberry Pi 3 Model b+
・The perseids 2WDロボットスマートカーシャーシ →土台となる車
・Raspberry Piで学ぶ電子工作 専用 実験キット 基本部品セット スターターパック →電子工作用の部品詰め合わせ
・Anker PowerCore 10000 →Raspberry Pi電源供給用バッテリー
(※こちら注意すべきところがあって、モバイルバッテリーは出力電流がある閾値を下回るとオートオフしてしまうのでラズパイの消費電流が最小になった時オートオフにならない必要があります。
Anker PowerCore 10000は大丈夫でした。)
・ReSpeakerマイクアレイ v2.0 ReSpeaker Mic Array
→音を拾うためのマイクアレイ

その他ダイソーで買ったもの
・グルーガン
・300円のスピーカー
・電池

■組み立て
下の順番で組み立てていきました。
気づいた点や詰まったところなどあげます。

  1. 車輪の組み立て
    普通に説明書通りで10分ぐらいでできます。

  2. 車輪制御のテスト
    書籍を参考に、まずモータードライバーを理解するところから勉強しました。
    それから(1.)で組み立てた車輪のモーターを制御できるように回路を組みました。
    ※車が2WDだったので電子工作用バーツ詰め合わせにモータードライバーが二つ入ってくれてて助かりました。

  3. Raspberry Piの設定
    特につまるところはなかったですが会社でデモを披露する際
    自分のiPhoneのデザリングを使ってラズパイにリモート接続できるようにしておくと便利でした。

  4. マイクアレイのテスト
    Raspberry Piに次いで今回のロボットの第二の心臓部となるマイクアレイです。
    マイクアレイは音を拾って解析する部分を一手に引き受けてくれます。
    今回購入したボートはノイズと呼びかけをちゃんと聞き分けて音の方向を解析してくれます。
    音のする方向はpythonで数値として取得することができるようになっていたので
    プログラミングしたのは音のする方向に車が正面を向くように車輪を回転させてあげるpythonを書くだけですみました。
    (この時買ったマイクアレイは必要以上に高いものを買ってしまったのでRaspberry Pi専用のもっと安いやつでも良かったです。)

  5. Google Assistantのインストール
    公式ドキュメント通りで問題なくできました
    今回Google Assistantは特にロボットの動きには直接関係ないのでインストールだけになります笑
    ただ、アプリを仕込んでアームなどつければできることも広がると思います。

  6. 全体の組み立て、調整
    あとは車の上にラズパイ、ラズパイ用のモバイルバッテリー、ブレッドボード、車用の電池ボックス、ダイソーで買ったスピーカーなどを全部のせてグルーガンで固定すれば完成です。
    ダイソーで買ったスピーカーを前につけて少し顔っぽくするところがポイントです笑
    グルーガンは失敗しても綺麗にはがずことができるしすごく便利でした。

  7. テスト
    今回、ロボットの方向転換はサーボモータを使わず向きたい方向に向くまでかかる秒数モーターを回すプログラムにしちゃたのでテストして微調整が必要でした。
    本当はサーボモータを使うべきだったと後から気づきました。

車輪制御のテスト

方向転換の微調整

■所感・まとめ
最初、ArduinoとRaspberry Piの違いをググるところから始めたのですが笑
モーターぐらいは制御できるようになり新鮮で楽しかったです。
昨今IoTも面白くなってきてることですし自分のようなソフトウェアエンジニアでもちょっとしたセンサーデバイスなど作れるようになったら自前でデータを集めたりできるようになるのは少し世界が広がる気がしました。
次はもっとがっつり自動運転ロボットなんか作ってみたいと思いました。

以上となります。
読んでいただきありがとうございました。

◇ 動画撮影者:著者