【虚拟架子鼓——鼓点识别的想法】

单片机相关 徐 自远 1053℃

【虚拟架子鼓——鼓点识别的想法】

ST Open.Mems提供的osxMotionFX库实能够实现姿态数据输出

对应的输出结构体osxMFX_output中的rotation_9X包含yaw(偏航), pitch(俯仰) and roll(横滚)三个数据

在百度百科找到的解释是

yaw(偏航):机体坐标系xb轴在水平面上投影与地面坐标系xg轴(在水平面上,指向目标为正)之间的夹角,由xg轴逆时针转至机体xb的投影线时,偏航角为正,即机头右偏航为正,反之为负。

pitch(俯仰):机体坐标系X轴与水平面的夹角。当X轴的正半轴位于过坐标原点的水平面之上(抬头)时,俯仰角为正,否则为负。

roll(横滚):机体坐标系zb轴与通过机体xb轴的铅垂面间的夹角,机体向右滚为正,反之为负。

要利用姿态数据实现鼓棒方向检测就相当于把飞机的鸡翅膀、鸡屁股都去掉

把机体拉长,拉细,一架飞机秒变鼓棒

如果使用者是手握机尾,用机头来敲鼓的话

这时以使用者为圆心机头由左向右顺时针转动正好对应yaw(偏航)数据rotation_9X[0]的输出为0~360

如果以使用者为圆心机头由下向上抬起对应pitch(俯仰))数据rotation_9X[2]的输出为-90~+90

剩下一个roll(横滚)rotation_9X[1]对应鼓棒自向的转动

实际使用时不需要此数据

[C] 纯文本查看 复制代码

?

1[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt]typedef struct[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt]{[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float rotation_9X[NUM_AXES]; /* 9 axes yaw, pitch and roll */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float quaternion_9X[QNUM_AXES]; /* 9 axes quaternion */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float gravity_9X[NUM_AXES]; /* 9 axes device frame gravity */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float linear_acceleration_9X[NUM_AXES]; /* 9 axes device frame linear acceleration */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float heading_9X; /* 9 axes heading */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float rotation_6X[NUM_AXES]; /* 6 axes yaw, pitch and roll */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float quaternion_6X[QNUM_AXES]; /* 6 axes quaternion */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float gravity_6X[NUM_AXES]; /* 6 axes device frame gravity */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float linear_acceleration_6X[NUM_AXES]; /* 6 axes device frame linear acceleration */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt] float heading_6X; /* 6 axes heading */[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt]} osxMFX_output;[/size][/font][/color][/align][align=left][color=rgb(0, 0, 0)][font=Calibri, sans-serif][size=10.5pt]

将ABCDEFG这7个鼓镲在脑袋里分别按左中右,上中下位置放置

然后通过yaw(偏航)和pitch(俯仰)数据就能知道鼓棒指向了哪只鼓

实际使用中因为没有真实的鼓镲存在,使用者在敲打的过程中也容易把位置记错

所以鼓镲的数量需要根据使用者的熟练程度去设置,比如新手一根鼓棒对应左右上下4个鼓镲,敲错的几率就会降低很多

http://m.toutiao.org/group/6408728140298567937/?iid=9481388865&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【虚拟架子鼓——鼓点识别的想法】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号