RoBoHoN に赤ちゃんの「背中スイッチ」を実装した

モバイル型ロボット電話 RoBoHoN に、赤ちゃんの「背中スイッチ」を実装しました。


![image2.PNG](https://qiita-image-store.s3.amazonaws.com/0/121307/3762b600-5704-e503-6cdf-db24ed1f26de.png)



# 赤ちゃんの「背中スイッチ」とは
>これまで抱っこして眠っていた赤ちゃんを布団やベッドに置くと泣く、つまり <B>背中を布団につけた途端、赤ちゃんが敏感に反応して泣く状態</B> をいいます
[マーミー]
https://moomii.jp/baby/back-switch.html

育児経験者の方々におかれては、万感の思いを込めて「それ、知ってる」と、深く頷いてしまう現象ではないでしょうか…？



# inb4 TL;DR
RoBoHoN に 赤ちゃんの「背中スイッチ」を実装したのは、以下などの検討のためです。

- 育児シミュレーション教材の可能性
- 「設定よりも若い役割を担わせる」お仕事アプリ
- ユーザーの体験として「触覚」をメインに据えたアプリ

# 育児シミュレーション教材の可能性
赤ちゃんの「背中スイッチ」の体験を通じて、実際の育児の一面をシミュレーションし、知ってもらうような教材を想定しました。

たとえば教材の対象は、育児未経験者の、主に「思春期を迎える学生」または「妊婦やそのパートナー」などです。

前者へは、命を育むことの多面性を伝えるような効能が（道徳の授業など？）、
後者へは「本番直前！」といった向きの両親学級で行う「沐浴実習」などと同じ効能が期待できるかと思います。

# 「設定よりも若い役割を担わせる」お仕事アプリ
RoBoHoN の 導入事例（お仕事アプリ）は、RoBoHoN の<B>発声および身振り手振りの特性</B>を活かした「ある程度の複雑さを持ったご案内・説明」を担うものが多く[^1]、公式の「5歳児設定」からはやや背伸びした年齢の格好です。

ここでひとつ、「年齢を5歳よりもやや逆行させて行うお仕事」が有り得るか？ を検討してみるとき、多くのユーザーに愛されているRoBoHoN の<B>「居てくれるだけでうれしい、愛おしい」と感じさせる特性</B>を活かして、赤ちゃんの役割を担ってもらい、育むことの多面性を伝えるお仕事はどうかな、と考えました。

# 環境
Windows 7 SP1
Android Studio 2.3.1
RoBoHoN_SDK 1.3.0
RoBoHon端末ビルド番号　02.02.00

# 赤ちゃんの「背中スイッチ」と「環境検知イベント（put_down_back）」
育児の多面性は赤ちゃんにより千差万別ですが（そもそも「背中スイッチ」現象が起きずに成長する赤ちゃんも）、今回は RoBoHoN SDK に備わっているAPI で表現することができる 「背中スイッチ」を選びました。

- RoBoHonシナリオ関連定義類

```java:ScenarioDefinitions.java
// シーン設定
public static final String SCN_BACK = PACKAGE + ".scn.back";
```
- HVML(環境検知イベントで、「水平状況」をトリガーに発声）

```hvml:back.hvml
<?xml version="1.0" ?>
<hvml version="2.0">
    <head>
        <producer>com.dev.zdev.aswitch</producer>
        <description>背中スイッチ起動</description>
        <scene value="com.dev.zdev.aswitch.scn.back" />
        <version value="1.0" />
        <situation topic_id="0001" trigger="env-event" value="put_down_back" priority="75">true</situation>
    </head>
    <body>
        <topic id="0001" listen="false">
            <action index="1">
                <speech>うえーん、横たえないで！　目が<emotion type="anger" level="2">覚めちゃったよー！</emotion>　もう一回、<emotion type="anger" level="3">だっこーー！</emotion></speech>
            </action>
        </topic>
    </body>
</hvml>

```
HVML内で、ロボホンの状態変化を通知する "env-event" の値 [^2] が "put_down_back" (=水平に置かれた) となることをトリガーに発声シナリオを実行し、「背中スイッチ」をシミュレートしています。

実際の赤ちゃんは話せないので、厳密な意味ではシミュレーションとは異なりますが、RoBoHoNが「バブー！」などの喃語だけを発しては、RoBoHoN世界観[^3]とは離れてしまいます。

加えて、音声UIの全般の課題とも共通しますが、赤ちゃんを模す「オギャー！」だけでは「アプリ」としての状態は提示できても、ユーザに次の動作を促すことができません。特に今回のような赤ちゃんという設定だと難しい。

そのため、あくまで役割としての赤ちゃんを担うRoBoHoNアプリです。

# まとめ
実行の様子は下記です。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">RoBoHoN（ロボホン）に「背中スイッチ」をつけてみました。<br><br>赤ちゃんって、背中にスイッチがあるみたいに、横にすると泣いたりしますよね👶<a href="https://t.co/uRvDHUoGnf">https://t.co/uRvDHUoGnf</a><br><br>ロボホンも寝かしつけをすると…❓→動画（字幕付） <a href="https://t.co/l88Q0B3AFf">pic.twitter.com/l88Q0B3AFf</a></p>&mdash; n_u (@ln_ulln_ul) <a href="https://twitter.com/ln_ulln_ul/status/951244300741894144?ref_src=twsrc%5Etfw">2018年1月11日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


実行してみて、

 - 水平検知から RoBoHoN の発声までに一拍置くようなタイムラグがあり、今回のシミュレーションという目的に合う
    - 横たえてから 「今回は、寝かしつけに成功したかな…？」と思わせるドキドキ感が大変リアル
 - また「（人型をしたものを）大事にする」という無意識から、「寝かせる」動作をさせるときに、ユーザーはロボホンを「うつぶせにはしない」こと
 
などが確認できました。

この実装を中心にして前後に、ユーザーへの趣旨
説明導入や、ループのランダムな中断（＝寝かしつけ成功！）などの肉付けをするなどで、より教材らしくなるのではと感じました。

# ユーザーの体験として「触覚」をメインに据えたアプリ
先日から、『RoBoHoNの出力を受け止める人間側の五感』を軸に下の検討や実装をしています。

| 五感       |ロボホン実装 |活用機能 |
|:-----------------:|:--------------------|:-----------------|
|**視覚**|[万年アドベントカレンダーを実装した](https://qiita.com/n_u/items/4129564b137c37c40b0b)　 | OpenCV+Deep Neural Network 連携 |
|**視覚**|[RoBoHoNで キモノへのプロジェクションを実装した](https://qiita.com/n_u/items/00a1bbbb471680be9d04)　 | プロジェクター |
|**視覚**|[RoBoHoNで 『手旗信号版 嵐が丘』 もどきの実装](http://qiita.com/n_ueh/items/332b24dc4e5c1d65044c)　 | モーション |
|**視覚**|[RoBoHoN と GoogleHome のお遊戯会を実装した](https://qiita.com/n_u/items/b20edb97bbe62215859e)　 | モーション |
|**聴覚**|[「私、いくつに見える？」への返答機能をRoBoHoNに実装する](https://qiita.com/n_u/items/a765827b432a5399d5c6)　 | AWS Rekognition連携 |
|**聴覚**|[一緒に おままごと RoBoHoN](https://qiita.com/n_u/items/879563bf58fc6e3a6c9a)　 | Docomo雑談対話API連携 |
|**聴覚**|[RoBoHoNに 英語のスピーキングの宿題を手伝ってもらう](https://qiita.com/n_u/items/4a1b82765962b62583f3)　 | 英語対応SDK |
|**触覚**| [RoBoHoNと一緒におおきなかぶを抜く] (http://qiita.com/n_ueh/items/949c7275510653d0562b)　 | 姿勢判別API |

今回の実装は、RoBoHoNと「**触覚**」というカテゴリに入れたいと思います。

---

[^1]:  [sharp] 導入事例 https://robohon.com/co/introduction.php

[^2]: 「逆さにされた」「シェイクされた（振られた）」「置かれた（垂直）」などの状態変化も検出できます（RoBoHoN SDK 0601_SR01MW_HVML2.0_Specification_V01_01_00）
[^3]: RoBoHoN SDK 0201_SR01MW_Personality_and_Speech_Regulations_V01_00_01.pdf