Romo×iPhoneで楽しむロボット体験

第3回 RomoのキャラクターUIを動かしてみよう!

この記事を読むのに必要な時間:およそ 3 分

表情の変化

emotionプロパティで表情を指定することができます。指定すると感情にあわせて表情がアニメーションします。

ViewController.m

self.romo.emotion = RMCharacterEmotionExcited;

最高潮に興奮した表情です

最高潮に興奮した表情です

感情は以下のように用意されています。

RMCharacterEmotionBewildered当惑
RMCharacterEmotionCurious物珍しい
RMCharacterEmotionDelighted喜び
RMCharacterEmotionExcited興奮
RMCharacterEmotionHappy幸せ
RMCharacterEmotionIndifferent無関心
RMCharacterEmotionSad悲しい
RMCharacterEmotionScaredびっくり / 怖い
RMCharacterEmotionSleepy眠い
RMCharacterEmotionSleeping睡眠中

感情表現

expressionで,一連の感情表現のアニメーションを行うことができます。expressionを指定するとその感情に合わせたアニメーションが実行され,そのあとemotionで指定された表情に戻ります。

ViewController.m

self.romo.expression = RMCharacterExpressionAngry;

とても怒らせてみました

とても怒らせてみました

こちらは33通りもの感情表現が用意されています。感情の種類は RMCharacterExpression に規定されています。数が多いので,それぞれの表現についてはドキュメントを参照してみてください。

また,次のように感情表現をした後に指定した表情にアニメーションさせることもできます。

ViewController.m

 [self.romo setExpression:RMCharacterExpressionHappy withEmotion:RMCharacterEmotionHappy];

目のアニメーション

lookAtPointメソッドを使うことで視点を移動させることができます。以下のように書くことで,眠そうな表情で,タップした方向を見るようにできます。

ViewController.m

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.romo.emotion = RMCharacterEmotionSleepy;
    
    CGPoint touchPos = [[touches anyObject] locationInView:self.view];
    CGFloat centerX = self.view.frame.size.width / 2;
    CGFloat centerY = self.view.frame.size.height / 2;
    CGFloat x = (touchPos.x - centerX) / centerX;
    CGFloat y = (touchPos.y - centerY) / centerY;
    CGFloat z = 0.0;
    
    RMPoint3D lookPoint = RMPoint3DMake(x, y, z);
    [self.romo lookAtPoint:lookPoint animated:YES];
}

RMPoint3Dで視点の位置を指定します。x,yはそれぞれの軸を-1から1までの範囲。zは0から1の範囲で,見ている物体の遠さを寄り目 / 離れ目で表現します。

タップ以外に,顔認識した際に目で追うなどの処理に利用できそうです。

次のように書くと,基本の位置に視点を戻します。

[self.romo lookAtDefault];

また,次のメソッドで左右のまぶたを開閉させることができます。

[self.romo setLeftEyeOpen:YES rightEyeOpen:NO];

まとめ

全3回の連載,いかがでしたでしょうか?

今回は⁠ロボットの顔の表現⁠にまつわる機能の紹介でしたが,エデュケーショナルロボットとして遊ぶ人の気持ちに訴えかけるために,Romoは非常に多彩な感情表現ができます。

オリジナルのキャラクターを作成してみようと思った際にも,色々と作り方を参考にできそうです。今回はデバイスがなくても実装を試すことができるので,Romoを持っていない方もぜひ試してみてください。

また,開発者向けにFacebook グループRomo Developer Communityができました!定期的にRomoに関する技術的なトピックや最新のニュースをお届けするので,ぜひご参加ください。

最近はロボット関係のニュースも良く耳にするようになりました。この連載をきっかけに,より多くの方にロボット作りに興味を持っていただければ幸いです。

著者プロフィール

瀬尾浩二郎(せおこうじろう)

セオ商事 エンジニア / クリエイティブディレクター

2001年慶應大学環境情報学部卒業。大手SIerを経て,2005 年に面白法人カヤック入社。Webやモバイルアプリの制作を主に,エンジニア,クリエイティブディレクターとして勤務。2014年4月よりセオ商事として独立。

グッドデザイン賞を始め,国内外の広告祭など受賞経験多数。技術書の執筆や,各種媒体への記事の寄稿なども行っています。

サイト:http://theodoor.jp
ブログ:http://theodoor.hateblo.jp/
Twitter ID:theodoorjp

バックナンバー

Romo×iPhoneで楽しむロボット体験