TKD が 2021年01月31日16時00分59秒 に編集
コメント無し
タイトルの変更
生命感のあるロボット掃除機(顔認識に応じたインタラクション)
生命感のあるロボット掃除機
本文の変更
# 概要 自動運転を始めた車のように、家電もここ数年で自動化を行っているものが多くあります。
現状の「与えられた役割をこなす」の先に更に「自発的に行動を行う」という世界観があるとしたら、 そこに人格や生命感を感じ、癒しや満足感といった新たな価値があるのではと考えました。 まずはその表現としてロボット掃除機の様なものを対象とし、直線的で味気ない動きではなく、 まるで自らの意思を持っているような動きを行うものを目指しました。
現状の「与えられた役割をこなす」の先に更に「自発的に行動を行う」という世界観があるとしたら、そこに人格や生命感を感じ、癒しや満足感といった新たな価値があるのではと考えました。 まずはその表現としてロボット掃除機の様なものを対象とし、直線的で味気ない動きではなく、まるで自らの意思を持っているような動きを行うものを目指しました。
@[youtube](https://youtu.be/62jOxgUzCpE) # ハード構成 全体像はこんな形です。 ![キャプションを入力できます](https://camo.elchika.com/dacc0d08fa224cb5ede4281c416bc7b28742a2e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f31623332623865642d303466392d343564622d383166362d306465363766393031306639/) ### センシングデバイス
人検出用に RaspPi Camera V2と、 障害物との距離検出用にソナー(HC-SR04)×2個使用します。
人検出用に RaspPi Camera V2と、障害物との距離検出用にソナー(HC-SR04)×2個を使用します。
![キャプションを入力できます](https://camo.elchika.com/ac1be19bf7397f20a87707f611171f56049a22f7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f34626266366631362d326331662d343237342d623331642d656137323138383633663135/) ### シャーシ タミヤのユニバーサルボードにより作成。
下段にLiPoバッテリ(ドローン用のものを購入しました)、上段に基板(Raspberry Pi 3B+Raspi Robot Board V3)を設置します。
下段にLiPoバッテリ(ドローン用のものを購入)、上段に基板(Raspberry Pi 3B+Raspi Robot Board V3)を設置できる形状です。
![キャプションを入力できます](https://camo.elchika.com/bb55e1aa76a38aa3d1efdc34c0f3f7bacc3e132d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f30626134613933632d636434312d346561332d396663632d663764323036643063313135/) ### アクチュエータ
身体起こし用にサーボモータ(MG90)×1、走行用にモータ×2 + タミヤ製ギアボックス という構成。 そこはかとなく漂うミニ四駆感。 ボールキャスター(こちらもタミヤ製)により全方向へ自由に移動可です。
身体起こし用にサーボモータ(MG90)×1、走行用にモータ×2 + タミヤ製ギアボックス という構成です。 タイヤも含めそこはかとなく漂うミニ四駆感。(ホイールは後ほど黒く塗りつぶしました) ボールキャスター(タミヤ製)により全方向へ自由に移動可です。
![キャプションを入力できます](https://camo.elchika.com/cae540170c491ac0a51bbf1f234a5c6bf97676d3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f63653561613833642d343730302d343434322d386561302d626666373331646364363761/) # 生命的な動き ### ブライテンベルグのビークル
障害物を自在に回避しつつも、生きているような振る舞いを行うために、 ブライテンベルグのビークル(1984年 *Vehicles: Experiments in Synthetic Psychology*)にて提唱された制御を使用しました。
障害物を回避しつつ生きているような振る舞いを行うために、ブライテンベルグのビークル(1984年 *Vehicles: Experiments in Synthetic Psychology*)の原理を採用しました。
> きわめて単純な脳であっても、外部の観察者からは非常に洗練した振る舞いとして映るような出力が可能である。
簡単に言えばL/Rソナーを常時計測し、**障害物が近づいたセンサ(L)と逆のモーター(R)にブレーキをかける**ことで、 障害物を避けるように旋回する、その連続により障害物を避けて様に動き回ることができます。 ブレーキ力の強さをパラメータ化し、変えるだけでかなり振る舞いに変化が出ます。 こちらはパラメータチューニング後。カオティックです。
とのことで、L/Rソナーを常時計測し、**障害物が近づいたセンサ(L)と逆のモーター(R)にブレーキをかける**ことで障害物を避けるように旋回し、その連続により障害物の中を自在に動き回ることができます。ブレーキ力の強さをパラメータ化することでそれを変えるだけでかなり振る舞いに変化が出ます。 こちらはパラメータチューニング後。なかなかにカオティックです。
@[youtube](https://youtu.be/413T12CvRAU)
パラメータチューニング後。距離センサー2個のみで自律走行がスムーズに行えました。
パラメータチューニング後。距離センサー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の環境上で行いました。 教師データは初期は画像検索で拾ってきた画像を使いましたが、背景や露光、顔に当たる光の角度が判定結果に影響してしまうため、 途中からはロボットから取得した顔認識画像を手動でタグ付けして行きました。
学習フェーズも顔含めて全てRaspberry Pi上で行いました。教師データは初期は画像検索で拾ってきた画像を使いましたが、背景や露光、顔に当たる光の角度が判定結果に影響してしまうため、途中からはロボットから取得した顔認識画像を手動でタグ付けして行きました。
環境構築や基本的な流れは[Karaageさんのブログ](https://karaage.hatenadiary.jp/entry/2017/08/16/073000)を参考にさせて頂きました。
ただこの作品が私の初めての個人制作と言うこともあり、色々とハマってしまい環境構築だけで4週間とかかかっています…。 今だったらGoogle Colaboratoryとか使えばいいと思います。 ロボット上からの画像取得は、ブレを抑えるため、動作の静止時にのみ行っています。
ただこの作品が私の初めての個人制作と言うこともあり、色々とハマってしまい環境構築だけで4週間とかかかっています…。今だったらGoogle Colaboratoryとか使えばいいと思います。 画像取得はブレを抑えるため、ロボットの動作静止時にのみ行っています。
課題としては顔検出の推論時間でした。 ここではRaspberry Pi 3Bを使用したのですが、顔検出に6秒間程度(カスケード分類器のパラメータ調整で最終的に2~3秒程度)掛かってしまい、インタラクションとしてはかなりリアルタイム性に欠ける結果になってしまいました。 ここら辺はラズパイ4にしたところでラズパイGPUを使っている限りは限界があり(Ideinさんの様に下層から最適化するなら別ですが)、AI処理に特化した外部アクセラレーター(Intel MovidiousやGoogle Coral Edge-TPU)を外付けするのが現状では有力そうです。
ここで課題として見えてきたのは顔検出の推論時間でした。 Raspberry Pi 3Bを使用したのですが顔検出に6秒間程度(カスケード分類器のパラメータ調整で最終的に2~3秒程度)かかってしまい、インタラクションとしてはかなりリアルタイム性に欠ける結果になってしまいました。 ここら辺を解決するにはラズパイGPUを使っている限りは限界があり(Ideinさんの様に下層から最適化するなら別ですが)、サイズとの兼ね合いになりますがJetson NanoやAI処理に特化した外部アクセラレーター(Intel MovidiousやGoogle Coral Edge-TPU)を外付けするの対応が現状では有力そうです。
### 手に乗るサイズ感
設計したガワの出力はDMM.makeへ発注しました。 自宅や共有ガレージの3Dプリンタでもよかったのですが、積層痕が激しく出る形で光造形で試したいということもあり。 素材は見積もりの中で一番安いナイロンを選定しました。(サイズもあり2万くらいかかりました…) 結果的にはラズパイ3基板、LiPoバッテリ(12cm)が際どく収まりつつもギリギリ手乗りサイズという小ささを達成することができました。
生命っぽさを表現する上で手乗りサイズ感であることはかなり重要だったので、内容物(主に大きいのはラズパイ3基板や12cmのLiPoバッテリ)を納めつつも小サイズ化を頑張りました。 3Dモデリングはこの頃まだFusion360に手を出していなかったため、Windows付属の3D Builderで行いました。操作が非常に簡単です。
![キャプションを入力できます](https://camo.elchika.com/1f7722e189a6c0b0a521d11209c5f2a23a1b5824/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f63313135663832392d303961372d346431372d623735642d653034336239663663643636/)
3Dモデリングはこの頃まだFusion360に手を出していなかったため、Windows付属の3D Builderで行いました。簡単!
また出力はDMM.makeへ発注しました。 自宅や共有ガレージの3Dプリンタでもよかったのですが、積層痕を避けたかったため(DMMは光造形による出力)。 素材は見積もりの中で一番安いナイロンを選定しました。
モコモコの素材でも試してみたものの、縫製スキルが足りず断念…。 ![キャプションを入力できます](https://camo.elchika.com/8814928767fc45a883dd7d4cecb905d4332b4e63/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34313537333766642d333335632d346564632d623236632d3133613563646336633434332f32336136643465342d393362302d343839622d613532332d343535623663643364653766/) # 作成してみて
この作品が電子工作で初めて人前に出したものということもあり、色々と右往左往しながらも好きな機能を追加していって 人の反応を見るのがとても楽しかったです。GUGENやMaker Faire Kyotoに出展したのですが、人の顔に応じた反応を返すのが 大人も含めてハマってしまう人がちらほら。 一方で初出展のトラブルとして、PWMでガスガス電圧を入れるため、DCモーターが出展初日で3個焼き切れ、ほぼHAKKOさんのはんだ付けブースに篭りきりという事件もおきました。 これについてはあわてて近くのおもちゃ屋さんでタミヤの(昔懐かし)マブチモータを買い込んだのですが、それ以降1個も壊れることはありませんでした。(タミヤ様様)
個人的には人前に初めて出した作品がこちらということもあり右往左往しながらでしたが、自分で好きな機能を企画し追加していって反応を見るのがとても楽しかったです。GUGENやMaker Faire Kyotoに出展したのですが、特に人の顔に応じた反応を返すことに大人も含めてハマってしまう人がちらほら。 一方で初出展のトラブルとして、ノンブランドのキット付属DCモーターが出展初日で3個焼き切れ(PWMでガスガス電圧を入れるため)ほぼ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)