波浪分析——WiiMote 加速

发布于 2024-12-08 23:24:16 字数 323 浏览 0 评论 0原文

我正在使用(很棒的)WiiYourself 通过 Wiimote 进行手势识别!图书馆。 一切都是用 C++ (Visual Studio 2010) 开发的。

我正在尝试处理 Wiimote 运动的加速度矢量(大小和角度)。当个人挥动它时,我想知道它移动的方向以及用力有多大。

问题有两个:

  1. 我需要能够处理 WiiMote 的初始加速度值,而不是停止遥控器时的减速度值。

  2. 如何管理来自远程的持续不断的加速度数据流,以提供有用的信息?

我意识到这更像是一个逻辑问题,但我很难将事情整合在一起。

I'm working on gesture recognition with a Wiimote using the (wonderful) WiiYourself! library.
Everything is being developed in C++ (Visual Studio 2010).

I'm trying to process the acceleration vector (both magnitude and angle) for movement of the wiimote. When the individual swings it, I want to find what direction it is moving in, and with how much force.

The problem is two-fold:

  1. I need to be able to process the value for the initial acceleration of the WiiMote and not the deceleration from stopping the remote.

  2. How can I manage the constant stream of acceleration data coming from the remote to give me useful information?

I realize this is more a logical problem, but I'm having trouble getting things to come together.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

未蓝澄海的烟 2024-12-15 23:24:16

首先,您可能会尝试从不同的轴捕获一系列样本,也许会创建一些函数,例如向量幅度和总向量,并将它们全部绘制出来。查看这些值如何作为信号表现。

也许您可以通过这种方式看到您想要观察的运动在值方面是什么样子。

For a start, you might try to capture a series of samples from different axes, maybe make some functions like vector magnitude and sum vectors and plot them all. See how the values behave as a signal.

Maybe you can see what the motions you want to observe look like in terms of values that way.

素食主义者 2024-12-15 23:24:16

我将通过记录“完美”挥杆并在内部绘制数据来实现此目的,然后将该数据保存在应用程序内的资源中,并在应用程序内部绘制随时间变化的运动图,然后使用向量比较来比较两者。对每个内部存储的运动的最后 X 秒的运动进行评分,并对无效运动使用截止值。然后得分最接近的人获得分数。

一旦检测到成功的动作,您应该将该时间跨度标记为“已使用”,因此不适用于更多的评分(这是为了阻止在控制器的一个动作中选择多个动作)。

可以通过查找关键位置点随时间的平均差异来进行比较。 IE。以 5 毫秒的间隔检查每个点,并确定 3 个加速度矢量的差异,这些差异之和的平均值即可为分数。得分最低的手势是最佳匹配。

I would do this by recording a "perfect" swing and plotting the data internally then save that data in a resource inside your application and map movement over time internally in the application then compare the two using vector comparisons. Score the movement from the last X seconds for each internally stored motion and use a cutoff value for invalid movements. Then the one with the closest score gets the mark.

Once a successful motion has been detected you should mark that time span as being "used" and therefore not applicable to any more scoring (this is to stop multiple movements from being selected in one motion of the controller).

The comparison could be done by finding the mean difference in the points at key locations over time. ie. check each point at 5 millisecond intervals and determine the difference in the 3 acceleration vectors, the average of the sum of these differences can be the score. The gesture with the lowest score is the best match.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文