TKD が 2021年01月31日15時28分25秒 に編集
初版
タイトルの変更
生命感のあるロボット掃除機(顔認識に応じたインタラクション)
タグの変更
秋葉原2021
RaspberryPi
AI
tensorflow
personalrobot
メイン画像の変更
本文の変更
# 概要 自動運転を始めた車のように、家電もここ数年で自動化を行っているものが多くあります。 現状の「与えられた役割をこなす」の先に更に「自発的に行動を行う」という世界観があるとしたら、 そこに人格や生命感を感じ、癒しや満足感といった新たな価値があるのではと考えました。 まずはその表現としてロボット掃除機の様なものを対象とし、直線的で味気ない動きではなく、 まるで自らの意思を持っているような動きを行うものを目指しました。 @[youtube](https://youtu.be/62jOxgUzCpE) # ハード構成 全体像はこんな形です。 ![キャプションを入力できます](https://camo.elchika.com/dacc0d08fa224cb5ede4281c416bc7b28742a2e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f31623332623865642d303466392d343564622d383166362d306465363766393031306639/) ### センシングデバイス 人検出用に RaspPi Camera V2と、 障害物との距離検出用にソナー(HC-SR04)×2個使用します。 ![キャプションを入力できます](https://camo.elchika.com/ac1be19bf7397f20a87707f611171f56049a22f7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f34626266366631362d326331662d343237342d623331642d656137323138383633663135/) ### シャーシ タミヤのユニバーサルボードにより作成。 下段にLiPoバッテリ(ドローン用のものを購入しました)、上段に基板(Raspberry Pi 3B+Raspi Robot Board V3)を設置します。 ![キャプションを入力できます](https://camo.elchika.com/bb55e1aa76a38aa3d1efdc34c0f3f7bacc3e132d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f30626134613933632d636434312d346561332d396663632d663764323036643063313135/) ### アクチュエータ 身体起こし用にサーボモータ(MG90)×1、走行用にモータ×2 + タミヤ製ギアボックス という構成。 そこはかとなく漂うミニ四駆感。 ボールキャスター(こちらもタミヤ製)により全方向へ自由に移動可です。 ![キャプションを入力できます](https://camo.elchika.com/cae540170c491ac0a51bbf1f234a5c6bf97676d3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f63653561613833642d343730302d343434322d386561302d626666373331646364363761/) # 生命的な動き ### ブライテンベルグのビークル 障害物を自在に回避しつつも、生きているような振る舞いを行うために、 ブライテンベルグのビークル(1984年 *Vehicles: Experiments in Synthetic Psychology*)にて提唱された制御を使用しました。 > きわめて単純な脳であっても、外部の観察者からは非常に洗練した振る舞いとして映るような出力が可能である。 簡単に言えばL/Rソナーを常時計測し、**障害物が近づいたセンサ(L)と逆のモーター(R)にブレーキをかける**ことで、 障害物を避けるように旋回する、その連続により障害物を避けて様に動き回ることができます。 ブレーキ力の強さをパラメータ化し、変えるだけでかなり振る舞いに変化が出ます。 こちらはパラメータチューニング後。カオティックです。 @[youtube](https://youtu.be/413T12CvRAU) パラメータチューニング後。距離センサー2個のみで自律走行がスムーズに行えました。 @[youtube](https://youtu.be/MUQICX7FNXo) 虫の動きを模してランダムにStop&Goを入れることで、少し思案しているような、生命っぽさを加えています。 @[youtube](https://youtu.be/Vr1xhas571A) # 人とのインタラクション ### 「好き」「嫌い」の表現 目の前の人が好きか嫌いかを判定し、好きな人を見つけると身体を縦に振り駆け寄ってきます。 @[youtube](https://youtu.be/4IUXvOiNfQg) 嫌いな人には身体を横に振り逃げていきます。 @[youtube](https://youtu.be/pGyCZB04Jbo) さらに好きな場合は地面にハートマークを描く… これは妻のアイデアでしたが若干恥ずかしいw @[youtube](https://youtu.be/w8RK8oa6zkQ) ### AIによる顔検出と顔判別 畳み込みニューラルネットワークによる顔判別機能により、上記の「好き」「嫌い」の判断軸を与えます。 全体の処理の流れは下図になります。 ![キャプションを入力できます](https://camo.elchika.com/400b3e42a4de779fb8b5e2ce00d2b9fcc5141ee3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f30326362313736372d323131312d343463382d613833382d663430663534376231313064/) 学習フェーズも顔含めて全てRaspberry Piの環境上で行いました。 教師データは初期は画像検索で拾ってきた画像を使いましたが、背景や露光、顔に当たる光の角度が判定結果に影響してしまうため、 途中からはロボットから取得した顔認識画像を手動でタグ付けして行きました。 環境構築や基本的な流れは[Karaageさんのブログ](https://karaage.hatenadiary.jp/entry/2017/08/16/073000)を参考にさせて頂きました。 ただこの作品が私の初めての個人制作と言うこともあり、色々とハマってしまい環境構築だけで4週間とかかかっています…。 今だったらGoogle Colaboratoryとか使えばいいと思います。 ロボット上からの画像取得は、ブレを抑えるため、動作の静止時にのみ行っています。 課題としては顔検出の推論時間でした。 ここではRaspberry Pi 3Bを使用したのですが、顔検出に6秒間程度(カスケード分類器のパラメータ調整で最終的に2~3秒程度)掛かってしまい、インタラクションとしてはかなりリアルタイム性に欠ける結果になってしまいました。 ここら辺はラズパイ4にしたところでラズパイGPUを使っている限りは限界があり(Ideinさんの様に下層から最適化するなら別ですが)、AI処理に特化した外部アクセラレーター(Intel MovidiousやGoogle Coral Edge-TPU)を外付けするのが現状では有力そうです。 ### 手に乗るサイズ感 設計したガワの出力はDMM.makeへ発注しました。 自宅や共有ガレージの3Dプリンタでもよかったのですが、積層痕が激しく出る形で光造形で試したいということもあり。 素材は見積もりの中で一番安いナイロンを選定しました。(サイズもあり2万くらいかかりました…) 結果的にはラズパイ3基板、LiPoバッテリ(12cm)が際どく収まりつつもギリギリ手乗りサイズという小ささを達成することができました。 ![キャプションを入力できます](https://camo.elchika.com/1f7722e189a6c0b0a521d11209c5f2a23a1b5824/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f63313135663832392d303961372d346431372d623735642d653034336239663663643636/) 3Dモデリングはこの頃まだFusion360に手を出していなかったため、Windows付属の3D Builderで行いました。簡単! モコモコの素材でも試してみたものの、縫製スキルが足りず断念…。 ![キャプションを入力できます](https://camo.elchika.com/8814928767fc45a883dd7d4cecb905d4332b4e63/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f32336136643465342d393362302d343839622d613532332d343535623663643364653766/) # 作成してみて この作品が電子工作で初めて人前に出したものということもあり、色々と右往左往しながらも好きな機能を追加していって 人の反応を見るのがとても楽しかったです。GUGENやMaker Faire Kyotoに出展したのですが、人の顔に応じた反応を返すのが 大人も含めてハマってしまう人がちらほら。 一方で初出展のトラブルとして、PWMでガスガス電圧を入れるため、DCモーターが出展初日で3個焼き切れ、ほぼHAKKOさんのはんだ付けブースに篭りきりという事件もおきました。 これについてはあわてて近くのおもちゃ屋さんでタミヤの(昔懐かし)マブチモータを買い込んだのですが、それ以降1個も壊れることはありませんでした。(タミヤ様様) モーターこんなに買い漁る人いる? ![キャプションを入力できます](https://camo.elchika.com/f85e0178dac2324e14b3e01037c6bfac05708f35/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f34653833636536662d376365332d343332372d613132612d336130663430636337363136/) 家電の生命化、というテーマで他の対象(電気スタンドやベビーカーなど)も行っていきます。続く # 参考文献 [作って動かすALife ―実装を通した人工生命モデル理論入門](https://www.amazon.co.jp/%E4%BD%9C%E3%81%A3%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%99ALife-%E2%80%95%E5%AE%9F%E8%A3%85%E3%82%92%E9%80%9A%E3%81%97%E3%81%9F%E4%BA%BA%E5%B7%A5%E7%94%9F%E5%91%BD%E3%83%A2%E3%83%87%E3%83%AB%E7%90%86%E8%AB%96%E5%85%A5%E9%96%80-%E5%B2%A1-%E7%91%9E%E8%B5%B7/dp/4873118476/ref=asc_df_4873118476/?tag=jpgo-22&linkCode=df0&hvadid=295686767484&hvpos=&hvnetw=g&hvrand=6629350276888068481&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009198&hvtargid=pla-525151001479&psc=1&th=1&psc=1) [Raspberry Pi上でTensorFlowで簡単にディープラーニングを試せるツール「tensorflow-pi」でロボホンの幻の顔認識機能に挑戦してみた](https://karaage.hatenadiary.jp/entry/2017/08/16/073000)