■単発動作
これまでに作成したアクションはすべて連続動作で、動作リストの最下行に達するとまた一番上の行に戻って同じアクションを繰り返すようになっていました。
ここでは、一通りの動作を終えたら繰り返さずにSTOPモードに戻るような単発アクションの例を示します。終了行の経過時間の列に「127」が来たら、そこでSTOPに移行するようにしています。
リスト18-1 remote_walk2.py(部分)
def set_action(code):
# 省略
elif data_code == 129: #9ボタン
action_mode = 'KICK'
action.clear()
action = motion.kick.copy()
rows = len(motion.kick)
div_counter = 0
key_frame = 0
next_key_frame = 1
while True:
# *** Remote ***
# *** Servo ***
if servo_flag == True:
servo_flag = False
if action_mode != 'STOP':
# キーフレームを更新
div_counter += 1
if div_counter >= action[key_frame][12]:
div_counter = 0
key_frame = next_key_frame
next_key_frame += 1
if next_key_frame > rows-1:
next_key_frame = 0
if action[next_key_frame][12] == 127:
action_mode = 'STOP'
if action[next_key_frame][13] == 0: #無音
リスト18-2 motion.py(部分)
kick = [
[90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 12, 0],
[90, 90, 90, 90, 90, 70, 75, 90, 90, 90, 90, 90, 12, 0],
[90, 70, 90,120,110, 90, 75, 90, 90,100, 70, 90, 8, 0],
[90, 70, 90,120,110, 90, 75, 90, 90,100, 70, 90, 8, 0],
[90,110, 90, 30, 40, 90, 75, 90, 90,100, 110, 90, 12, 0],
[90,110, 90, 30, 40, 90, 75, 90, 90,100, 110, 90, 12, 0],
[90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 8, 0],
[90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,127, 0]
]
コメント