从加速数据可视化运动/手势
Visualize motion/gesture from acceleration data
我实现了一个手势检测算法,其中用户可以定义自己的手势。手势由加速度计发送的加速度值定义。
现在我的问题是:是否有可能可视化所执行的手势,以便用户可以识别他所执行的手势?
我的第一个想法和尝试只是使用Verlet Velocity Integration(如这里所述:http://lolengine.net/blog/2011/12/14/understanding-motion-in-games)来计算相应的位置,并使用这些来形成OpenGL中的线带。渲染工作,但结果与所执行的手势完全不同。
这是我的代码:
float deltaTime = 0.01;
PosData null;
null.x = 0.0f;
null.y = 0.0f;
null.z = 0.0f;
this->vertices.push_back(null);
float velX = 0.0f;
float velY = 0.0f;
float velZ = 0.0f;
for (int i = 0; i < accData.size(); i++) {
float oldVelX = velX;
float oldVelY = velY;
float oldVelZ = velZ;
velX = velX + accData[i].x * deltaTime;
velY = velY + accData[i].y * deltaTime;
velZ = velZ + accData[i].z * deltaTime;
PosData newPos;
newPos.x = vertices[i].x + (oldVelX + velX) * 0.5 * deltaTime;
newPos.y = vertices[i].y + (oldVelY + velY) * 0.5 * deltaTime;
newPos.z = vertices[i].z + (oldVelZ + velZ) * 0.5 * deltaTime;
this->vertices.push_back(newPos);
}
我使用0.01的deltaTime
,因为我的加速度计每10毫秒发送一次加速度数据。现在我在想:我的计算有什么问题吗?它甚至可以这样工作吗?有图书馆可以做这个吗?还有其他建议吗?
作为理论物理学和蒙特卡罗模拟的人,我考虑过你观察到的差异。你写道,"真正的"手势曲线(3D)根本不像计算器曲线。您可能需要考虑手头问题的几个方面。首先,我们对空间中的"真实"手势曲线了解多少?我们当然有"一些"曲线在脑海中,但这并不需要看起来像"真正的"曲线由一个人的手。其次,我们对加速度计的质量、精度、延迟或其他复杂性了解多少?第三点,我们对"测量的"加速度数据了解多少,当用x- plot形状绘制时,它们是否符合"一些"漂亮而平滑的曲线?如果曲线看起来不是很平滑,那么就需要假设加速度数据来执行线性,或者更好的是样条拟合。然后你可以简单地用解析公式积分。—当UPS包裹服务要求您电子签名时,您可能会想到电子签名,您在便笺上的签名是什么样子的?如果没有"智能"曲率平滑算法,你的加速系统可能会出现这种情况。希望我的评论能在某种程度上有所帮助…问候,m .
- 粒子系统:所有粒子都朝同一方向运动
- 如何组合许多连续的图像来模拟逼真的运动模糊?
- 太空入侵者 – 2D 矢量运动算法
- 在虚幻引擎中使用运动控制器组件,C++而不是蓝图
- OpenCV的卡尔曼滤波器过渡矩阵如何处理时间(如t和t^2)进行运动预测?
- 如何使用OpenCV作为运动检测器(而不是寻找视频输出)
- 一维阵列的运动检测(神经网络或其他选项?
- 使用带有 PIR 传感器的米利斯检测连续运动
- 在 GTKMM 中捕捉鼠标运动
- C++编译错误是由于使用 std::move 时运动构造函数与其他非运动构造函数之间的冲突
- 在何处更改参考代码以从 HEVC 编码的视频中提取运动矢量
- C++ SFML 精灵运动无法按预期工作
- 编码域中的DCT系数和运动矢量提取
- 视觉C SDL2圆形运动
- setCursor()有时在鼠标快速运动中失败
- 用C++睡眠特定的鼠标运动
- SDL 乒乓球运动错误
- SFML意外的SF ::顶点运动
- 地牢爬网游戏,运动机械问题
- 从加速数据可视化运动/手势