「nao」タグアーカイブ

概要

NAO専用椅子の紹介(スマロボから販売予定です。興味がありましたら、お問い合わせ下さい)
なお、開発にあたっては、Fubright株式会社様と共同で開発させて頂いております

はじめに

07/27-30に開催されるロボカップにスマロボも展示するよ!の宣伝のために、急遽ブログを書いているハードエンジニアのGoe3です。

NAO向けの椅子を作った経緯

NAOを使って頂いている方々から、NAOの展示や受付等を行う際に「転ぶのが心配だなーでも座らせると体育座りだから机の上ではちょっと…」というお話を頂きます
スマロボでも、NAO用の椅子って作れないかな?という相談を受けました。

既製品は存在する?

NAOの椅子は、既製品として既に樹脂製やDIYの物があったりしますが、他社製のものは20~30万くらいしちゃうんで、気軽には買えない気がします。
他社充電機能付 $2,490
DIY 個人製作?
という訳で木材(MDF)を使って、設計・デザインしてみました。

CADイメージ

NAOが座る部分は、若干摩耗していくので、矢印の2パーツは取り換え可能になっていたり、背面の穴を使って、充電ケーブルを固定可能です。

 

実物

座らせるとこんなイメージになります。
写真はMDFのままですが、製品の方は塗装仕上げを行いますので、より木材に近い質感と耐久性が向上したものになります!

まとめ

ロボカップでも、これらガジェットや、自社開発ロボット、その他ロボット関連の製品を展示しておりますので、ぜひ遊びに来て下さい

おまけ

ちなみに、PCアームでがっつりNAOを支えたいなーという方はこちら


Pepper のアプリコンテスト Pepper App Challenge 2017 Tokyo. 決勝まで進めたものの残念ながら無冠。 しかし多くの方と出会い、大変貴重な経験ができました。 この経験を糧にスマートロボティクスはますます進化していきます!

先日3月1日に行われた 「[3/1]Pepper App challenge 2017 決勝進出作品発表展示会」 の際披露した資料をここに公開します。

当日はアトリエにある NAO も使って NAO でも同じアプリを動かしたりしてみました。 NAO、Pepper いずれも非常にオープンで可能性のあるプラットフォームです。 どのような活用方法があるか、引き続き探っていきます!


2月27日、大田区立東蒲小学校にて6年生34名の皆さんに NAO を活用してプログラミング教室を開催させていただきました。

授業の様子は小学校のホームページで公開されています

http://cbl16530.la.coocan.jp/
(「子供たちのようす(平成28年度)」 をクリックして 2月27日の記事に紹介いただいています)

これからもより多くの皆さんにロボットを活用してより楽しくプログラミングの基礎を勉強してもらいたいと思っています


2月21日 会津大学にて NAO/Pepper の開発環境に関する勉強会を開催、NAO 4台を持ち込ませていただき、さらに会津大学にある Pepper と合わせてロボット5台で勉強会開催。8名の方に参加いただきました。

3時間の内容、最初の1時間ほどで Choregraphe を使ってアプリ開発を体験いただき、残りの時間で Pepper/NAO のロボット OS である NAOqi の概要について説明させていただき、Python NAOqi SDK など Choregraphe 以外の開発環境にも触れていただきました

NAO の導入を検討しているが開発環境などもう少し詳しく知りたいなどなどございましたら是非スマートロボティクスに相談ください!

会津大学外は雪!
IMG_20170221_150645

開始を待つ NAO たち
IMG_20170221_161641

IMG_20170221_161653

学生、先生、協力会社の方、計8名の方に参加いただきました。
IMG_20170221_182802

前半は前回勉強会を行った内容で

後半で NAOqi と Choregraphe 以外の開発環境について説明


ロボデックスでの技術セミナー「ロボコミュニケーション元年? ロボットは AI の夢を見るか?」での内容を一部再編成してここに残しておきます

ヒューマノイドロボット NAO

このビデオに出てくるロボット、 NAO、歴史は古く、2008年に国際的に行なわれているロボットのサッカーコンテスト、ロボカップの標準プラットフォームとして登場したのが第一号、その後改良を重ね、現在販売されているものは第5世代になります。
NAO の顔、どこか Pepper に似ていませんか? NAO はフランスはアルデバランという会社で開発されたロボットです。
Pepper はソフトバンクロボティクスとアルデバランによって開発されたロボットということで NAO は Pepper の兄貴分にあたります。
その後アルデバランはソフトバンクロボティクスに吸収され、現在 NAO も含めアルデバランが開発したロボットはソフトバンクロボティクスのロボットとして販売されています。

NAO の機能

NAO は25の関節を持ち、Linux OS上に独自の制御OS を搭載した自律型のロボットです。 2008年に最初のバージョンがリリース、その後バージョンアップを重ね、音声認識、会話機能は第4世代で標準機能として搭載されます。
NAO の標準の音声認識機能はキーワードベースの音声認識で、あらかじめ定義しておいた言葉のどれを聞いたかということを判別する音声認識です。
例えば、「はい」、と「いいえ」を音声認識エンジンに登録することで「はい」と聞いたか、「いいえ」と聞いたかを判別することができるようになります。
音声認識は、プログラムから発動させることにより開始されまして、音声認識中は、NAO の目が青い色がぐるぐる回るような表現をします。
NAO とコミュニケーションをとるとき、これらの信号を見て人側で NAO に話しかけるタイミングを見計らう必要があります。

クラウド音声認識の利用による新たなロボットと人との会話の可能性

このビデオでの音声認識、実は標準機能以外の方法で音声認識を実現しています。
標準の音声認識機能は NAO 本体の中で音声を聞き取る組み込み型の音声認識です。これに対してここでは、NAO のマイク音声をライブでクラウドサーバーにストリーミングし、クラウドの音声認識エンジンを使って音声認識をさせています。

音声は常時バッファリング、音声認識のタイミングを NAO 側が見計っており、音声認識をする段になると、そこから一定時間遡ったところから音声認識を行っています。これにより人側は話しかけるタイミングを見計らう必要は無くなりました。話している最中目が青くなりますが、これは NAO が音声認識のタイミングを見計ったことを示しています。

ロボットとの会話によるコミュニケーション、まだまだ先だと思っていました、数ヶ月前までは。しかしクラウドの音声認識エンジンと NAO をつなげてみて私の意識は大きく変わりました。音声認識分野において技術の進歩は加速度的です。コンピュターの性能が上がり、機械学習などの周辺の技術が進歩したことで、音声認識の精度は日々上がってきています。 従来 NAO は音声認識を苦手としていました。小さい頭の中にはマイクを搭載されていて、そのマイクの周辺には CPU があり、CPU を冷やすための冷却ファンがありという状況、このためマイクには常にノイズが混入しています。 NAO に正しく音声を認識させるのは結構なコツが必要でした。

Amazon Echo、Google Home と音声アシストデバイスが今、北米ではトレンドです。 音声によるマンマシンインターフェースは間もなくタッチインターフェースの次のメジャーインターフェースとしてその幅を利かせてくるのは間違いないという印象があります。  実用が始まることでビジネスの循環が生まれ、この循環が音声認識のさらなる性能向上をもたらす。音声認識はいよいよ本格的な成長の段階に入ってきたのではと私は思っています。

我々としてはこの音声認識の進化をいち早くロボットに取り入れそこにロボットの新たな価値と可能性を見つけていきたいと考えています。

このデモでは返答文をクラウド側で引き出してきて NAO に発話させています。 音声認識した言葉は Google Cloud Natural Language API を使い単語に分解しています。
Google Cloud Natural Language API は言葉を単語に分解するだけでなく、各単語を地域名などの幾つかの分類に自動的に振り分けてくれるます。 そこで単語と、単語ごとの分類を記録、この中に地域名が含まれているかどうか、天気というキーワードが入っているか、今日や明日といったキーワードが入っているかをチェックし、これらのキーワードが入っている時、天気予報サービスから天気予報を取得、返答文を作成。またこれら情報のいずれかが欠けている場合はその部分については前回の内容を引き継ぐこととしています。  さらにどの情報も含まれていない場合は、QA ベースの会話エンジンに流し、一問一答形式で受け答えをしています。
天気予報部分の処理は独自実装で、QA ベースの会話には現状 IBM Watson を活用しています。 この辺りは現在試行錯誤の段階であり、今後、さらにいろいろな手法を試したいと思っています。

マンマシンインターフェースとしての音声会話、すぐに起こりそうな今後の可能性

北米では Amazon エコーの会話機能をつかさどる Alexa が 3rd party にその開発プラットフォームを解放したことで急速にその能力を向上させているようです。

Alexa が日本に来るのはまだ少し時間がかかるようですが、その動きには大変興味があります。 Alexa の開発プラットフォームを見るとルールベースの会話の定義であり、今回の天気予報の会話の仕組みを実現しているものと大きな違いがあるわけではないようです。

これは今の段階における現実的な手法だと思っています。今の段階において実用レベルで実現可能性な会話機能というのは言ったことを着実に行ってくれる召使との会話のようなもので、それに加えて、まずは人が機械との会話の仕方を覚える必要があるのかもしれません。調べ物をして欲しい時は 「◯×を調べて」という、質問をしたい時は「◯×はなんですか?」と聞くとか。

Amazon Echo、Google Home と音声アシスタンスデバイスの活躍の場は間違いなく今後増えていくとして、同じようなことを腕がついて動いたりするロボットでやる意味はあるのか?  確かに家庭向けを考えると、現時点ではコスト面を考えると早すぎるとは思います。

しかし家庭ではないシーンで音声会話をインターフェースとしたロボットは今後どんどん増えていくべきと思っています。それは会話によるコミュニケーションは今後間違いなくソーシャルロボットに求められる機能の一つであり、ロボットゆえの進化の領域があると考えられるからです。

将来的には何故それをロボットでやる必要があるのではなく、それロボットができるのにわざわざ他のデバイスを用意する必要あるのという時代が来ると私は信じていて、現在その途中の過程にいるのだと私たちは信じています。

スマートロボティクスについて

スマートロボティクスは去年2016年の4月に始まったばかりの非常に新しい会社です。社名に「ロボティクス」とあるように我々はロボットをやる会社として創業しました。
ロボット技術で世界を少しでも便利に、良くしていきたいという思いのもと集まったメンバーからなり、私を含め何名かは NAO のメーカ、アルデバランの出身であり、海外の製品のローカライズ、国内展開は我々が得意とすることの一つです。
アルデバラン出身者以外の者たちも様々な形で過去にもロボットに携わり、その情熱をもとにスマートロボティクスの事業立ち上げに携わってきました。

私は技術部に属していますが、技術部はなかなか面白い面々の集まりです。

ロボットに思いを馳せながら CAD 設計を仕事としてやってきていたもの、小学生の頃発明家の家に入り浸り電気工学と機械工学の基礎を学び大学ではロボカップで世界大会に出た者、趣味でロボットを作り続け、専用のモーション作成ソフトまで作ってしまう者、皆ロボットをやりたいという思いでスマートロボティクスに集まりました。

我々のビジネスの柱は大きく2つありまして、一つは既成のロボットの販売とそれらのロボットで動くソフトウェアの開発、そしてもうひとつはロボットを始めとするオリジナルハードウェアの設計と製造です。

まず一つめの既成ロボットの販売とそれに向けたソフトウェア開発ですが、我々は NAO と Pepper の販売代理店であり、これらのロボット向けのソフトウェアーを開発し、そこに付加価値を加えることで新たな利用価値をお客様に提供、代理店の一歩先を目指しています。

私個人でいうと過去10年ほど技術サポートとして多くのお客様を支えてきた経験があり、技術面でお客様をサポートさせていただくことが私の何よりも得意とするところでございました。現職においては例えばソリューション開発のような形で様々なニーズを持つお客様と一緒にロボットの活用方法を模索していくことができればと考えています。

我々がもう一つの柱として掲げているのがロボットを含む様々なオリジナルハードウェアの開発と設計です。

我々の作るロボットとは全く新しい何かを作るというより、既成の色々なものを組み合わせてそれをロボットという仕上がりにしていくようなものかもしれません。

我々は様々なメーカー様と協力の関係を持ちながら進歩をしていく必要があり、様々な形での取り組みを現在模索しています。様々なロボットを生み出し、流通し、その魅力を常に下支えする。ロボットのことならとりあえずスマロボに相談しようとなれればと思っています。

仕事は辛いけど趣味には何時間も費やすことできます。スマートロボティクスの技術部は自分にとって楽しいこと居心地のいいことをやりきってそれで世の中に貢献し、それが仕事になるように今、一所懸命頑張っています。

私たちは私たちと思いを同じくする同志を探しています。我々と一緒に仕事しませんか? 関われる形はそれぞれの会社、個人あると思います。

どのような形であれ、ロボットで世界を良くしていきたい。そういった志がある方。私たちはあなたと一緒に仕事ができることを望んでいます。


概要

NAOの転倒防止アダプターの紹介

はじめに

こんにちは。ハードエンジニアのGoe3です。

皆さんは、NAOの展示等を行う際に「転ぶのが心配だなー」と思った事は無いでしょうか?

スマロボでも、NAOアプリの開発を行っているたく爺より「NAOのモーション作成時に、転倒しないような物が欲しい」という要望を受けてました。

そこで、PCモニターアームと繋げれば良いかな?と思い、(一時期ドキュメント作成で溜まっていたフラストレーション発散に)試作してみました。

ついでに、2017/01/18-20に開催されスマートロボティクスも出店するロボデックス(ダイレクトマーケティング)に展示するNAO用マイクマウントも、昨日(1/16)要望があり突貫工事で製作しましたので、併せてご紹介致します。

CADデータ

NAO転倒防止アダプター

naomountback

マイクマウント

mimimimi3

取り付けイメージ

IMG_20170117_111627IMG_20170117_111621IMG_20170117_111645

写真撮影時は電源未投入ですが、起立可能です。
利用シーンとしては、NAOのモーション作成や、展示会などでの安定運用(転倒防止)に使用できるのでは無いかと思います。

マイクマウントは、見えている方のマイクはダミーで、耳の中に、NAOの音声を拾う為のマイクを仕込んでいます。
マイクをスピーカー等に接続する事で、展示会でのデモをより効果的に行えるかと思います。

まとめ

スマロボでは、NAOの転倒防止について、様々なアプローチを行っております。次回はソフトウェア的なアプローチについて、弊社技術メンバーより紹介出来るかと思います。ご期待下さい!!

おまけ

空も飛べるよ!!
IMG_20170117_111407

 


関西弁と変なモーション。関西弁は AITalk さんの技術を使わせていただいています。
ロボットってやっぱりキャラクターなんだなと思います。イントネーションや声が変わるだけで印象がだいぶ変わりますね!

変なモーションはここからダウンロードできます。

https://github.com/Smartrobotics/nao_fushigimotion

そしてこのモーションに潜む秘密は、、、詳しくは来年を期待ください!


会話を期待されながら残念ながらいまいち会話が噛み合わない Pepper、問題の一つは音声認識にあります。スマートフォンに話しかけたりするのとは違ってマイクと話者との距離があったり、小さい頭の中に CPU やらそれを冷却するファンやらが集積されている中に埋め込まれたマイクは、構造上ノイズを拾いやすかったりと、音声認識の精度を上げることに一定の技術的、環境的ハードルがありました。 また Pepper が標準でアプリデベロッパーに提供する音声認識はあらかじめ登録したキーワードに対して聞いた言葉をマッチングさせる、キーワードベースの音声認識であり、登録したキーワード以外のことを発話されると会話はとかく破綻してしまいがちでした。 Pepper の兄貴分にあたる NAO も状況は同じで、Pepper よりさらに小さな頭にいろんなものが集積されている分、問題はより深刻でした。

どうにか NAO にもっと会話をさせたい。試行錯誤をしてきた中でかなりいい感じになってきたものがありこの場で紹介させてください。

どうですか? 音声認識の機能自体は私たちが開発したわけではなく、クラウドの音声認識を使っているのですが、ここへの音声の送信をライブで行っているところに工夫があります。 レスポンスも申し分なく、ノイズ耐性もかなり良いです。

現在この技術をサービス化してより多くの人に使ってもらえるよう開発中です!

近年の機械学習の進化により音声認識の分野は急速に精度が上がってきているようです。ロボットとの会話を考えたとき次に待っているのは、聞いたことに対してロボットがどう答えるか。 この分野はまだまだ未成熟で、これからかなという感じです。 
まずは色々なボットにつなげてみたり、AIや会話エンジンといっているものにつなげてみたい。 私たちもこれらの技術を持っているベンダーさんを探していますが、自薦、他薦、オススメありましたら情報をいただければと思います!

かつて HTMLというコンテンツ配信技術が生まれ、Web製作という職業が生まれたように、音声認識、音声合成の技術が成熟し、会話エンジンの仕組みがある程度整理されると、ロボットに会話を覚えさせる「ロボット会話職人」のような職業が生まれてくるのかな、そんな妄想をしてしまう今日この頃です。


ここでは、ダンス中転んでも起き上がって続きからダンスを踊る NAO (頑張るダンス)アプリの作り方を説明します。

対象

この記事は、NAO 向けアプリ開発ツール「Choregraphe」を使ってダンスアプリを作ったことがある方を対象としています。 そのため NAO の開発環境、Choregraphe の基本的な操作方法などに関する説明はここでは行いません。

はじめに

2本足で立ち、全身を動かすことができる NAO はとてもダイナミックな動きをすることができるのが最大の特徴の一つですが、同時に転倒のリスクに常に気を使う必要があります。 ダイナミックなダンスを披露するときなど、バランスを崩して転ばないかといつもヒヤヒヤします。 一方見ていただいた方からは小さいのに一生懸命がんばって踊っている感じがけなげでいいといったような意見をよく聞きます。 ならば転んでも起き上がって続きから踊るぐらいまでがんばってもいいのでは。  そんな思いから作ってみたのです。

サンプル動画

実装、動かしてみた例です。どうです、頑張っている感出てませんか?

原理

原理は結構単純です。 Choregraphe のタイムラインで作ったアニメーション、アニメーションの時間経過にしたがって各関節の角度をどう変化させればいいのかを配列の形式で記述した、スクリプトコードに落とし込むことができるのですが、このスクリプトコードでアニメーションを再生することにします。 途中で転んだら安全機能が働きアニメーションの再生が自動で止まるのですが、これを検出してまず起き上がり、無事立ち上がることができたら、次にアニメーションの再生を開始してからどれぐらい時間が経過したかを調べ、各関節の角度を収めている配列を、過去の情報を切り捨てて再構築、これを再生すれば途中からダンスを再開できるというわけです。

サンプルアプリ

是非皆さんも試してみてください。サンプルアプリを次からダウンロードできます。なお、ビデオは FC東京のマスコットキャラクター ドロンパ君のダンスを踊っていますが、サンプルアプリは、NAO 標準のダンス、太極拳ダンスを踊ります。

https://github.com/Smartrobotics/nao_fallrecoverydance/

あなたのダンスアプリを「頑張る化」する方法

サンプルアプリを変更してあなたのオリジナルダンスを倒れても起き上がってダンスにしてみましょう。

必要なもの

「頑張る化」に必要なのは次の2つです
* Choregraphe のタイムラインボックスで作られたアニメーション
* タイムラインのアニメーション再生中に再生する音楽ファイル

手順

次に手順を説明します

1. タイムラインをスクリプトとしてエクスポート

「頑張る化」したいアニメーションのタイムラインを開きます。 次の図の手順でタイムラインをスクリプトに変換します

timeline1

2. サンプルアプリのダンススクリプト部を入れ替える

サンプルアプリを開きます。この中のスクリプトを先ほどエクスポートしたものに入れ替えます。 まずエクスポートしたコードですが、この中で必要な箇所は

	names = list()

で始まる行から

	try:
	   # uncomment the following line and modify the IP if you use this script outside Choregraphe.
	   # motion = ALProxy("ALMotion", IP, 9559)

の行の前の行までです。 この部分で時間経過にしたがって各関節の角度をどうコントロールすればいいのかを配列に詰めています。この配列を使って独自の手法でダンスの再生をしたいわけです。 上記コードブロックをクリップボードにコピーしておきます。次に「Ganbaru Dance」ボックス

ganbaru_dance_box1

の中の「Timeline」ボックスをダブルクリック
timelinebox

スクリプトエディタが開くのでコメント部 「# put animation code here」 から 「#animation code end」 の部分をクリップボードにコピーした内容で入れ替えます

	class MyClass(GeneratedClass):
	    def __init__(self):
	        GeneratedClass.__init__(self)

	    def onLoad(self):
	        self.bIsRunning = False
	        self.player = ALProxy('ALAudioPlayer')
	        self.playerStop = ALProxy('ALAudioPlayer', True) #Create another proxy as wait is blocking if audioout is remote
	        self.soundId = None

	    def onUnload(self):
	        if self.soundId != None:
	            self.playerStop.stop(self.soundId)
	        while( self.bIsRunning ):
	            time.sleep( 0.2 )

	    def onInput_onPrepare(self,p):
	        self.soundFile = p

	        # put animation code here

	        	:     この箇所を入れ替える    :

	        #animation code end

	        self.names = names
	        self.times = times
	        self.keys = keys

	        if p != None and len(p) > 0:
	            self.soundId = self.player.loadFile(p)

貼り付けたらインんデントの調整を忘れずに。貼り付けたコードを選択したままの状態で Tab キーを押すとまとめて字下げをすることができると思います。 直前の self.soundFile = p と同じところまで貼り付けたコードを字下げします。

3. ダンスと同時に再生する音楽ファイルをインポート

ダンスと同時に再生する音楽ファイルをプロジェクトにインポートします。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-14-1-04-09

4. 音楽ファイルを設定

再生する音楽ファイルを 「Ganbaru Dance」 ボックスのプロパティで設定します。

set_music_file1

5. 再生

変更は以上です。再生してテストしてみてください

簡単に解説

一番の肝は 「Ganbaru Dance」 ボックスの中の 「Timeline」 ボックス、onInput_onResume メソッドの中です。ここであらかじめ定義された配列をもとに再生開始から現在までの経過時間を調べ、配列を再構築、再生しています


                :                   :

	    def onInput_onStart(self):
	        self.bIsRunning = True
	        import time

	        self.startTime = time.time()
	        if self.soundId != None:
	            tid = self.player.post.play(self.soundId)

	        self.onInput_onResume()

	        if self.soundId != None:
	            self.player.wait(tid, 0)

	        self.bIsRunning = False
	        self.onStopped()

	    def onInput_onResume(self):
	        adj_rate = 0.001

	        initialDelayEstimate = len(self.times[0]) * adj_rate

	        import time
	        motion = ALProxy("ALMotion")

	        times = list()
	        keys = list()

	        curTime = time.time() - self.startTime
	        nextTime = curTime + 2.0

	        for i in range(len(self.times)):
	            times0 = list()
	            keys0 = list()
	            for j in range(len(self.times[i])):
	                if self.times[i][j] > nextTime:
	                    times.append(self.times[i][j:]) # This loop may take time. Re-calcualte the time later
	                    keys.append(self.keys[i][j:])
	                    break

	        curTime = time.time() - self.startTime # get current time and re-calculate the time with this


	        currentDelayEstimate = len(times[0]) * adj_rate
	        adjTime = curTime - (initialDelayEstimate - currentDelayEstimate)

	        l = len(times)
	        for i in range(l):
	            times[i] = [x- adjTime for x in times[i]]


	        if len(keys) > 0:
	            motion.angleInterpolationBezier(self.names, times, keys)

	        #self.onStopped()


	    def onInput_onStop(self):
	        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
	        self.onStopped() #activate the output of the box

ちなみに、変数 adj_rate ですが、これは再生時間の微調整をしています。動画を見ていただくとダンス後半でダンスを復帰した時、同時に踊っているもう一台より少しアニメーションが早いタイミングで再生されていることが分かるかと思います。 どうもアニメーションを再生するメソッド angleInterpolationBezier は配列データが多いと再生開始に時間がかかるようで、これが原因で再生が少しだけずれています。ダンス後半でリカバリーするとき、残りのモーションが少なくなってくるので配列のデータ数が少なくなります。 これを再生するとき、アニメーションが実際に開始されるまでの angleInterpolationBezier メソッド内部での処理時間が短くなるので、angleInterpolationBezier メソッド呼び出しまでのタイミングで同期を取ったとき、若干のズレが生じてしまうのです。 このズレを調整しているのが adj_rate です。動画を撮った時点では、この調整が行われていなかったので、若干のズレが入っています。 adj_rate の値は計算結果によるものというより実測によりものになります。ズレが最小限になる値はダンスごとに調整が必要かもしれません。

Ganbaru Dance ボックスの中の fall recovery ボックスが転倒した状態から起き上がる処理をしています。

fallrecoverybox

fall recovery ボックスの中はモータをオンにして、立ち上がっています。 Set Speaker Vol. ボックスは転倒時音量を少し下げています。この辺りは利用シーンなどに応じて作り変える必要があると思います。

fallrecoverybox_inside

これはあくまでサンプル、どういった作りになっているかいろいろ研究して自由に作り変えてみてください。 もっともっと頑張ってる NAO が見れること楽しみにしています!