陪伴做操(肩颈操)

kHome小程序提供的“姿势识别”任务、参数type是“shoulder_neck”时,实现了陪伴做一种肩颈操。

相机放在人的正前方。高度上,桌面高度加上面放台笔记本电脑,相机就夹在屏幕上边沿,大概1米。总的来说,上面,得拍到双手直举时手腕;下面,差多快要拍到腰部。人的部分在图像不要太小,建议最低就到腰部。

1、提示各动作的开始、结束。

2、判断用户姿势,开始20秒倒计时。

3、倒计时过程中,一旦发现动作不规范,会提示不规范原因。等规范了,重新20秒倒计时。

 

一、状态和语音

此部分面向读者是开发者。

1.1 状态

enum {snsect_0prelude, snsect_0desc, snsect_0_20, snsect_1prelude, snsect_1desc, snsect_1_20,
	snsect_2prelude, snsect_2desc, snsect_2_20, snsect_3prelude, snsect_3desc, snsect_3_20,
	snsect_4prelude, snsect_4desc, snsect_4_20, snsect_finished};

在视频中,肩颈操是4节,但在实现时,把第三节拆成右和左,认为是5节。“sn”是“Shoulder Neck”缩写。

状态只会向前,不会向后。

在每一节,分3个状态。

  1. snsect_[x]prelude。序。等着播放完上节的pytype_finished。对第一节,是播放此肩颈操总序,以及等它播放完。
  2. snsect_[x]desc。播放此节要领。
  3. snsect_[x]_20。20秒倒计时。一旦播放完此节要领,就进入此状态,而不管用户有没有开始此节动作。

5节动作完成后,进入snsect_finished。如果用户不退出肩颈操场景,每隔10秒会播报“肩颈操,已结束”。

 

1.2 语音

 pytype_descpytype_unsatisfiedpytype_remindpytype_finished
播放时机开始该动作动作持续3/8秒不符合规范,提示错在哪里动作持续17秒不符合规范,提示正确操作是什么样子该动作已结束
在哪状态播放snsect_0descsnsect_0_20snsect_0_20snsect_1prelude
示例一第一个动作:十指相扣,手臂向上延展。抬头,眼睛看手臂,保持20秒第一个动作不再规范请检查下动作。十指相扣,手臂向上延展。抬头,眼睛看手臂。结束动作,还原
示例二第二个动作:双手在体前,交叉相抱,含胸,下颚向下贴胸骨。保持20秒。第二个动作不再规范请检查下动作。双手在体前,交叉相抱,含胸,下颚向下贴胸骨。结束动作,还原
示例三第四个动作:十指交叉,放在颈部后侧,同时两手肘向两侧展开,看向天花板。保持20秒。第四个动作不再规范请检查下动作。十指交叉,放在颈部后侧,同时两手肘向两侧展开,看向天花板。肩颈操,已结束。

pytype_unsatisfied内容用于提示动作不规范。可能是两种情况,一是动作不对,二是用户一直没开始这节动作。

  1. pytype_unsatisfied对应文字只是说动作不规范了,没指出不规范原因。如果可以给出原因,把它存放在unsatisfied_msg_变量。所以,动作出现不规范时,如果设置了unsatisfied_msg_,播放的是unsatisfied_msg_,否则播放pytype_unsatisfied。
  2. 如果是第一次报pytype_unsatisfied,持续时间阈值是3秒,第二次或后面的阈值是在8秒。加5秒原因,一来播放pytype_unsatisfied文字需要点时间,二来已经播了第一次,用户晚听到没问题了。
  3. 什么时候会认为是第一次?一是没有检测到过规范操作,二是检测到最后规范操作的那一刻。

语音提示除上面4类外,还是有总序(sn^prelude)。一开始作动就会播放它。示例:肩颈操分四个动作。

 

全部评论: 0

    写评论: