如何使用加速度计识别反手和正手击球?
How to identify backhand and forehand shot using accelerometer?
加速度计具有三个值:x、y、z。
让我们想象一下球拍有一个加速度计。如果我把球拍正面朝上,我知道 x、y 和 z 的方向在哪里。但是,如果我翻转球拍并将其倒置。 x、y、z的值方向相反。
换句话说,如果我用反手将球击向x方向,我可能得到正值或负值x。 (这要看我翻不翻球拍了[球拍有两个面])
我的问题是传感器如何告诉我我正在用反手而不是正手击球,因为我可以为正手和反手获得相同的加速度计值。
谢谢,
吉米
这里有两个坐标系在起作用:加速度计的和世界的。加速度计在其世界视图中将具有固定的 x/y/z 方向,但它们会根据方向相对于世界坐标发生变化。
如果您按原样使用加速度计的值,那么您可能会在击中时获得正脉冲或负脉冲。但是当你将它们转换为世界坐标系时——也就是说,向下总是朝向地球的中心——你总是会得到相同的反手值和相反的正手值。
假设加速度计的 x 方向与网的法线平行,z 平行于手柄,当球拍处于正常的横向位置时,y 为 "up"。
因为在网球中,球拍基本上是在一个平面上(例如,你不会用网面朝下击球),除非你在过头(在这种情况下,我认为反手是不对的)问题),当球拍静止时,y 总是指向 1 或 -1。最简单(但不是最准确!)的方法是检查 y 的符号并相应地更改 x。这样你不会得到准确的向量,但你会得到它是反手还是正手的信息。
问题还在于你还必须在击球前跟踪球拍,因为如果击球不是完全水平的(很少如此),当球拍向上或向下移动时 y 加速度也会改变击球时不会显示击球瞬间的球拍方向。
要获得更准确的读数,您必须确定坐标系之间的差异并相应地旋转。
编辑: 根据@Sami 的评论改变了我的想法:)
假设X轴和Y轴在拍弦平面内(假设X沿拍柄线,Y为up/down),Z为击球方向。然后挥杆和击球时的大部分加速度将在 Z 轴上(+ 或 - 取决于球拍的哪个面击球);如果你在弧形中摆动,会有一点 X 轴加速度,但无论哪个面被击中,它总是在同一方向。向上有一个恒定的 Y 轴加速度。
所以您可以查看加速度计的 Z 值以确定击中了哪个面,并且您可以查看 Y 值来判断球拍的握持方向。从那里你可以判断是'front'还是'back'(相对于球拍的方向)被击中,从而判断是正手击球还是反手击球。
当然,你还得知道玩家是右撇子还是左撇子:)
对于给定的惯用手,您可以按如下方式计算挥杆类型:
对于另一种惯用手,结果会相反。 “+”和“-”值与加速度计的安装方式有关,因此您需要进行校准。
对于正手击球,
- Y 为负重力加速度值,z 为任意值(无论正负)
对于反手击球,
- 若y为正重力加速度值且z为任意值(无论正负)
加速度计具有三个值:x、y、z。
让我们想象一下球拍有一个加速度计。如果我把球拍正面朝上,我知道 x、y 和 z 的方向在哪里。但是,如果我翻转球拍并将其倒置。 x、y、z的值方向相反。
换句话说,如果我用反手将球击向x方向,我可能得到正值或负值x。 (这要看我翻不翻球拍了[球拍有两个面])
我的问题是传感器如何告诉我我正在用反手而不是正手击球,因为我可以为正手和反手获得相同的加速度计值。
谢谢, 吉米
这里有两个坐标系在起作用:加速度计的和世界的。加速度计在其世界视图中将具有固定的 x/y/z 方向,但它们会根据方向相对于世界坐标发生变化。
如果您按原样使用加速度计的值,那么您可能会在击中时获得正脉冲或负脉冲。但是当你将它们转换为世界坐标系时——也就是说,向下总是朝向地球的中心——你总是会得到相同的反手值和相反的正手值。
假设加速度计的 x 方向与网的法线平行,z 平行于手柄,当球拍处于正常的横向位置时,y 为 "up"。
因为在网球中,球拍基本上是在一个平面上(例如,你不会用网面朝下击球),除非你在过头(在这种情况下,我认为反手是不对的)问题),当球拍静止时,y 总是指向 1 或 -1。最简单(但不是最准确!)的方法是检查 y 的符号并相应地更改 x。这样你不会得到准确的向量,但你会得到它是反手还是正手的信息。
问题还在于你还必须在击球前跟踪球拍,因为如果击球不是完全水平的(很少如此),当球拍向上或向下移动时 y 加速度也会改变击球时不会显示击球瞬间的球拍方向。
要获得更准确的读数,您必须确定坐标系之间的差异并相应地旋转。
编辑: 根据@Sami 的评论改变了我的想法:)
假设X轴和Y轴在拍弦平面内(假设X沿拍柄线,Y为up/down),Z为击球方向。然后挥杆和击球时的大部分加速度将在 Z 轴上(+ 或 - 取决于球拍的哪个面击球);如果你在弧形中摆动,会有一点 X 轴加速度,但无论哪个面被击中,它总是在同一方向。向上有一个恒定的 Y 轴加速度。
所以您可以查看加速度计的 Z 值以确定击中了哪个面,并且您可以查看 Y 值来判断球拍的握持方向。从那里你可以判断是'front'还是'back'(相对于球拍的方向)被击中,从而判断是正手击球还是反手击球。
当然,你还得知道玩家是右撇子还是左撇子:)
对于给定的惯用手,您可以按如下方式计算挥杆类型:
对于另一种惯用手,结果会相反。 “+”和“-”值与加速度计的安装方式有关,因此您需要进行校准。
对于正手击球, - Y 为负重力加速度值,z 为任意值(无论正负)
对于反手击球, - 若y为正重力加速度值且z为任意值(无论正负)