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