開発ブログ

第21回 モーションを作ってみた

投稿日時:2019年7月19日 18:07

こんにちは。ピャペロンです。
今回はコミュニケーションロボットとして、よりパフォーマンスを高めるためのモーションを考えてみました。
集客効果や愛着を持たせるためにもモーションは重要な要素なのでこだわっていきましょう!

使用するハード
・PaPeRo i実機

使用するソフト
・Windows 10
・テキストエディタ(Visual Studio Code
・Python 3.4(PaPeRo i)


パペロの顔が正面の場合を基準として作成しました。
今回は喜びを表現するモーションの紹介です。シミュレーターでの動作も確認しました。
モーションパターンの詳細はリファレンス | PaPeRo i [非公式] Developer Forumを参照してください。

 

喜ぶ その1

  1. def happy(papero, brightness="2"):
  2.     """Papero makes very happy move
  3.     
  4.     Arguments:
  5.         papero {class} -- papero class
  6.     
  7.     Keyword Arguments:
  8.         brightness {str} -- LED brightness (default: {"2"})
  9.     """
  10.     vertical = "R{0}T{1}L,R-{0}T{1}L,R{0}T{1}L,R-{0}T{1}L,R{0}T{1}L,"\
  11.                "R-{0}T{1}L,R{0}T{1}L,R-{0}T{1}L,R{0}T{1}L,R-{0}T{1}L".format(20, 300).split(",")
  12.     horizontal = "R-60T750L,R120T1500L,R-60T750L".split(",")
  13.     ear = "W0N,{0},NW0,{0}".format(4).split(",")
  14.     forehead = "G0,{0},N,{0}".format(4).split(",")
  15.     cheek = "R0N,{0},NR0,{0}".format(4).split(",")
  16.     mouth = "R0G0G0R0R0G0G0R0R0,{0},G0R0R0G0G0R0R0G0G0,{0}".format(4).split(",")
  17.     chest = "R0,{0},G0,{0},B0,{0},W0,{0}".format(4).split(",")
  18.     papero.send_set_default_status_led(brightness)
  19.     papero.send_move_head(vertical=vertical, horizontal=horizontal, repeat=True)
  20.     papero.send_turn_led_on(part="ear", pattern=ear, repeat=True)
  21.     papero.send_turn_led_on(part="forehead", pattern=forehead, repeat=True)
  22.     papero.send_turn_led_on(part="cheek", pattern=cheek, repeat=True)
  23.     papero.send_turn_led_on(part="mouth", pattern=mouth, repeat=True)
  24.     papero.send_turn_led_on(part="chest", pattern=chest, repeat=True)
  25. def stop_motion(papero):
  26.     """Stop the movement of papero
  27.     
  28.     Arguments:
  29.         papero {class} -- papero class
  30.     """
  31.     papero.send_turn_led_off("ear")
  32.     papero.send_turn_led_off("forehead")
  33.     papero.send_turn_led_off("cheek")
  34.     papero.send_turn_led_off("mouth")
  35.     papero.send_turn_led_off("chest")
  36.     papero.send_stop_speech()
  37.     papero.send_stop_head()

喜ぶ その2

  1. def little_happy(papero, brightness="2"):
  2.     """Papero makes a little happy move
  3.     
  4.     Arguments:
  5.         papero {class} -- papero class
  6.     
  7.     Keyword Arguments:
  8.         brightness {str} -- LED brightness (default: {"2"})
  9.     """
  10.     vertical = "R{0}T{1}L,R0T1500L,R-{0}T{1}L".format(60, 400).split(",")
  11.     horizontal = "R0T400L,R-25T{0}L,R50T{1}L,R-50T{1}L,R25T{0}L".format(250, 500).split(",")
  12.     ear = "W0W0,{0}".format(4).split(",")
  13.     forehead = "G0,{0}".format(4).split(",")
  14.     cheek = "R0R0,{0}".format(4).split(",")
  15.     #mouth = "R0G0G0R0R0G0G0R0R0,{0},G0R0R0G0G0R0R0G0G0,{0}".format(4).split(",")
  16.     chest = "G0,{0},W0,{0}".format(4).split(",")
  17.     papero.send_set_default_status_led(brightness)
  18.     papero.send_move_head(vertical=vertical, horizontal=horizontal, repeat=True)
  19.     papero.send_turn_led_on(part="ear", pattern=ear, repeat=True)
  20.     papero.send_turn_led_on(part="forehead", pattern=forehead, repeat=True)
  21.     papero.send_turn_led_on(part="cheek", pattern=cheek, repeat=True)
  22.     #papero.send_turn_led_on(part="mouth", pattern=mouth, repeat=True)
  23.     papero.send_turn_led_on(part="chest", pattern=chest, repeat=True)
  24. def stop_motion(papero):
  25.     """Stop the movement of papero
  26.     
  27.     Arguments:
  28.         papero {class} -- papero class
  29.     """
  30.     papero.send_turn_led_off("ear")
  31.     papero.send_turn_led_off("forehead")
  32.     papero.send_turn_led_off("cheek")
  33.     papero.send_turn_led_off("mouth")
  34.     papero.send_turn_led_off("chest")
  35.     papero.send_stop_speech()
  36.     papero.send_stop_head()

モーションを停止する関数はこちらです。

  1. def stop_motion(papero):
  2.     """Stop the movement of papero
  3.     
  4.     Arguments:
  5.         papero {class} -- papero class
  6.     """
  7.     papero.send_turn_led_off("ear")
  8.     papero.send_turn_led_off("forehead")
  9.     papero.send_turn_led_off("cheek")
  10.     papero.send_turn_led_off("mouth")
  11.     papero.send_turn_led_off("chest")
  12.     papero.send_stop_speech()
  13.     papero.send_stop_head()

パペロの顔を上下に動かす速さ、回数、角度や左右に動かす速さや角度を指定出来たらもっと使いやすくなりそうです。
今後は怒るモーションや哀しむモーション、楽しむモーションを紹介する予定です。


0

最新開発ブログ一覧  (一覧で確認
2020年8月19日 14:08
開発ブログ
第30回 パペロで赤外線アレイセンサを動かしてみよう!【中編:顔の表面温度を測ってみよう】
by 管理者
2020年7月22日 16:07
開発ブログ
第29回 パペロで赤外線アレイセンサを動かしてみよう!【前編:簡易サーモグラフィを作ろう】
by 管理者
2019年11月20日 17:11
開発ブログ
第28回 パペロでJulius4.5を実行してみた
by 管理者
2019年11月13日 09:11
開発ブログ
第27回 JuliusをPaPeRoi向けにクロスコンパイルしてみた
by 管理者
2019年9月19日 17:09
開発ブログ
第26回Linaro Toolchainでクロスコンパイルしてみた
by 管理者

コメントは受け付けていません。