问题标签 [kinematics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
282 浏览

controller - PhysX - 获取控制器的速度

我正在使用 PhysX 3.3.0。

我的角色是一个胶囊控制器,我需要能够检索控制器的实际速度,这似乎比应该完成的要难得多。

我已经尝试在场景的主要模拟之后检索与控制器关联的演员的速度,但是这只是返回虚假值,很可能是因为控制器只是引擎盖下的运动学演员。

现在,我能想到的唯一选择是自己跟踪速度,但这并不是那么简单。我可以轻松地跟踪自己对速度的更改,例如通过运动输入应用的速度。然而,只要控制器不与任何东西发生碰撞,这才是准确的。通过移动功能移动控制器后,控制器的速度可能已因与地板或墙壁等的碰撞而改变。移动功能返回碰撞标志,但它们只告诉我侧面某处是否发生碰撞,底部或顶部,但这不够准确,无法手动得出新的速度。

这似乎是一个相当大的疏忽,所以也许我只是在这里遗漏了一些东西。如果 PhysX 不提供这样的功能,我如何准确跟踪控制器的速度?

// 编辑

这就是我在场景模拟后获取速度的方式:

m_controller 是一个 PxCapsuleController。

0 投票
1 回答
556 浏览

matlab - 在 MATLAB 中使用 ANFIS 为 4 个电机逆运动学制作数据集

这是解释使用 ANFIS http://www.mathworks.com/help/fuzzy/examples/modeling-inverse-kinematics-in-a-robotic-arm.html解决逆运动学的链接

但该示例仅适用于 2 DOFs Robot。如果机器人使用 4 个电机,如何制作数据集?因为总是有一个错误说:“使用网格网格时出错。输入参数太多。” 运行代码时:

任何建议将不胜感激谢谢!

0 投票
1 回答
1339 浏览

objective-c - 将 Collada dae 文件加载到 SceneKit 以进行联合操作

我正在将一个装配好的 collada 文件加载到 SceneKit 中,并尝试将骨盆向前旋转 45 度和脊柱。骨盆和脊柱节点确实会加载,但是,旋转似乎不起作用。提取的 2 个 SCNNode 类是 dad 文件中的“联合”节点。

有谁知道为什么我需要添加:[myView.scene.rootNode addChildNode:pelvis]; [骨盆 addChildNode:spine];

谢谢您的帮助。

0 投票
1 回答
513 浏览

animation - Mecanim + Animation 有位移问题

我有我的游戏 3D 狼模型来自动画师的位移,即带有动画的狼变换(不是就地)。我在模型上添加了刚体。我在我的项目中执行它们时遇到以下问题

  1. 当我在刚体上打开(复选标记)IsKinematic 时,即禁用物理动画与位移完美配合。 问题:我需要在我的 wolf 上启用物理,因为禁用物理时它不会检测到碰撞。和重力等没有任何影响

  2. 当关闭 IsKinematic(取消选中)即启用物理 动画时,狼开始摇晃并喜欢在空中飞行。

任何建议和解决方案将不胜感激。自从过去两天以来,它一直在制造混乱,我一无所知。

0 投票
1 回答
2227 浏览

tracking - 使用速度和曲率进行曲线重建

这可能是一个重复的问题,但我没有得到结论性的答案。

我有车辆数据,即速度(m/s)、偏航率(以弧度为单位)、采样时间,我用这两个公式计算了道路的曲率 - 曲率 = YawRate/velocity。

mSec Speed YawRate(with offset 500) Velocity

22 113 513 31.38888889

53 113 513 31.38888889

84 113 513 31.38888889

115 113 513 31.38888889

915 110 510 30.55555556

946 110 510 30.55555556

978 110 510 30.55555556

24 109 510 30.27777778

56 109 510 30.27777778

87 109 511 30.27777778

118 109 511 30.27777778

现在我想在道路图像上绘制道路曲率。我有曲率方程,

曲率 = 偏航率/速度)

(比如显示车辆的轨迹)。**请记住 - 我必须在图像上绘制此轨迹。我该怎么做?

P:S 在高速转向角不显着。所以排除了转向角作为输入。

0 投票
2 回答
1179 浏览

c++ - 空参数检查 C++

我有一个函数可以解决 4 个运动学方程之一。参数是浮点数,有没有办法区分 NULL 参数和值为 0 的参数。我已经阅读了这个主题,似乎 NULL 和 0 是相同的。我想将 0 与“无”的形式区分开来的原因是因为 0 值分配了一个值,而“无”表明我们不知道该值是什么。

正如我已经讨论过的,“null”值不能为 NULL 或 0。如果参数都是指向浮点数的指针,如果我检查“nullptrs”,这会起作用吗?(不是我的主要问题)即使前一个问题是肯定的,我可以为非指针/引用类型使用什么值?(重新-主要问题的陈述)

0 投票
2 回答
3508 浏览

algorithm - 根据到目标的距离计算移动物体的速度

我正在编写一个模拟,其中一个对象在 2D 世界中向目标位置移动,存储为 vector target(x,y)。对象位置也存储为位置向量pos(x,y)。该对象包含另外两个向量,期望的移动速度dv(x,y),以及当前的移动速度cv(x,y)。在模拟开始时,这两个速度矢量都是初始的,即设置为(0,0)

当对象应该向目标位置移动时,我会计算所需的速度向量dv,对其进行归一化,并按移动速度值对其进行缩放:

我想让运动看起来更逼真,这就是我使用两个速度矢量的原因。dv告诉我要移动物体的全速,并cv保持物体当前移动的真实速度。

然后在每一帧(更新步骤),当前速度cv是基于所需速度dv和加速度值设置的acc。这是通过简单地计算 和 之间的差异cv并将dv该差异限制为 来完成的acc。这样,物体开始缓慢移动并逐渐加速,最终达到全速。

到目前为止,这工作正常。现在我也想利用acc减速。当 和 之间的距离pos达到target一定值时,dv应将所需速度设置为(0,0),使物体逐渐减速,直到在目标位置完全停止。

我的问题是:如何计算我需要设置dv的距离(0,0)(即告诉系统停止移动),以便物体正确减速以准确停止在目标位置?

0 投票
0 回答
167 浏览

javafx - 网格视图上的JavaFX滚动圆柱体

我应该采取什么方法在 JavaFx 中的自定义网格视图上为圆柱体滚动设置动画?是否有任何示例(开源)可用于此目的?一些支持 javafx 的运动学或物理包?

0 投票
1 回答
1496 浏览

box2d - 差速驱动机器人:将轮速转换为直线/直线速度

我正在使用 pyBox2D 对一个简单的差动驱动机器人(例如 e-Puck、Khepera 等)进行建模。这类机器人通常通过以弧度/秒为单位指示左右轮的速度来控制。
然而,Box2D 只能通过两个参数来控制(运动)体:线速度(以米/秒为单位,作为 2D 矢量)和角速度(以弧度/秒为单位)。我需要将我的轮速转换为线速度+角速度。

线速度实际上很简单。给定以米为单位的车轮半径 r,以弧度为单位的当前机器人方向 theta,前进速度只是两个车轮速度的平均值,以米/秒为单位,并根据当前方向减少为矢量:

(1) forwardSpeed = ((rightSpeed * r) + (leftSpeed * r)) / 2

(2) linearVelocity = (forwardSpeed * cos(theta), forwardSpeed * sin(theta))

不过,我无法完全弄清楚角速度的正确公式。直观地说,它应该是两个速度之间的差异,以车轮之间的距离为模:

(3) angularVelocity = (rightSpeed - leftSpeed)/wheelSeparation

在极限情况下:当 right = left 时,机器人在原地旋转,当 rightSpeed = 0 或 leftSpeed = 0 时,机器人围绕静止轮旋转(枢转),即在半径 = 的圆中轮子。

不过,我没有得到公式 (3) 的预期行为。作为测试,我将左轮速度设置为 0 并逐渐增加右轮速度的值。预期的行为是机器人应该以增加的速度围绕左轮旋转。相反,机器人以半径增加的圆圈旋转,即向外盘旋,这表明角速度不足。

请注意,我正在为机器人使用 Box2D 运动体,因此摩擦在我的结果中不起作用。

0 投票
1 回答
1213 浏览

c++ - 7 DOF Inverse Kinematic with Jacobian and Pseudo inverse

我一直试图用具有 7 个自由度的伪逆来为角色的手臂设置动画。整体FK是这样的:

(x,y,x) = TrootTshoulderRz(θ3)Ry(θ2)Rx(θ1)TelbowRy(θ5)Rx(θ4)TwristRy(θ7)Rz(θ6) 悬垂式效应器。

我不确定我做错了什么。这些是我所拥有的:
如果它是渲染调用,它会计算转换并绘制结果:

IK 解算器功能:

构建雅可比行列式并更新从模拟步骤返回的位置:

用于制作 J 的实用函数:

该过程没有返回正确的值,手臂到处都是,除了它应该去的地方。也请原谅我偶尔使用 glm。