关于 fixed-end 机械臂的仿真
On simulation of fixed-end robotic arms
这是我正在使用的 3D 模型草稿,我想使用 python 语言模拟其行为。我一直在研究这个模拟的最佳实现,但我没有发现任何适合真实运动的东西。我尝试过解析求解,但由于某些参数的不确定性(臂长的某些误差)在测量时失败了。
我想模拟旋转关节产生的运动并将其转移到与方案中描述的系统相似的系统。
在某个时候,系统可能会使用revolute joint,然后变成下面的状态。
下一个方案描述了系统的两种状态。
使用 DH 参数的简单简化是:
重要的是如何计算两个non-controlled关节的位置和角度,从而计算出受体关节角度(固定点)。
这不仅仅是一个逆运动学问题。也有必要考虑运动限制。运动必须由旋转关节角度、连杆长度和固定点位置和长度决定。
下图中的红色圆圈表示第二个 non-controlled 点的可能位置。
你会如何模拟这个动作?
有一个位置有问题,
两个圆的交点(如下所述)
有一点。
在这种情况下(我们假设它是平面情况(重力垂直
对于所有手臂)和静态情况)没有任何力,它随第二个非受控关节移动。
在动态中,我们为下一步选择另一个解决方案。
当交集不存在时,
这种情况不存在
旋转关节不能移动
到这个位置。
我们在计算时获得(平凡的)运动限制
所有位置和确定不存在交叉点的位置。
是否直接获取非定点结束位置?
较早的回答者:
模拟运动:
- 计算所有时间非控制点的位置
开始位置和结束位置步长 delta_t.
- 逐步绘制每个计算出的位置(例如通过 Pygame)。
计算:
第一个非控制点的第一个计算位置(较高)
x_2 = x_1 + l_12 cos(Theta_1),
y_2 = y_1 + l_12 sin(Theta_2),
其中X_1(x_1, y_1)是旋转点的位置,
X_2(x_2, y_2) 是第一个非控制点的位置
l_12 是 X_1 和 X_2
之间的长度
- 计算两个圆 k_1 和 k_2 的交点,
其中k_1(第一个非控制点,l_23)和k_2(受体关节,l_34),
其中 k(圆心,圆半径)。
步骤 2 有两个解决方案。
我们选择其中之一。
要模拟运动,我们必须选择
"same solution".
从两点计算角度:
alpha = math.atan2((y_2-y_1)/(x_2-x_1))
这是我正在使用的 3D 模型草稿,我想使用 python 语言模拟其行为。我一直在研究这个模拟的最佳实现,但我没有发现任何适合真实运动的东西。我尝试过解析求解,但由于某些参数的不确定性(臂长的某些误差)在测量时失败了。
我想模拟旋转关节产生的运动并将其转移到与方案中描述的系统相似的系统。
在某个时候,系统可能会使用revolute joint,然后变成下面的状态。
下一个方案描述了系统的两种状态。
使用 DH 参数的简单简化是:
重要的是如何计算两个non-controlled关节的位置和角度,从而计算出受体关节角度(固定点)。
这不仅仅是一个逆运动学问题。也有必要考虑运动限制。运动必须由旋转关节角度、连杆长度和固定点位置和长度决定。
下图中的红色圆圈表示第二个 non-controlled 点的可能位置。
你会如何模拟这个动作?
有一个位置有问题, 两个圆的交点(如下所述) 有一点。 在这种情况下(我们假设它是平面情况(重力垂直 对于所有手臂)和静态情况)没有任何力,它随第二个非受控关节移动。 在动态中,我们为下一步选择另一个解决方案。
当交集不存在时, 这种情况不存在 旋转关节不能移动 到这个位置。
我们在计算时获得(平凡的)运动限制 所有位置和确定不存在交叉点的位置。
是否直接获取非定点结束位置?
较早的回答者:
模拟运动:
- 计算所有时间非控制点的位置 开始位置和结束位置步长 delta_t.
- 逐步绘制每个计算出的位置(例如通过 Pygame)。
计算:
第一个非控制点的第一个计算位置(较高)
x_2 = x_1 + l_12 cos(Theta_1),
y_2 = y_1 + l_12 sin(Theta_2),
其中X_1(x_1, y_1)是旋转点的位置, X_2(x_2, y_2) 是第一个非控制点的位置 l_12 是 X_1 和 X_2
之间的长度- 计算两个圆 k_1 和 k_2 的交点, 其中k_1(第一个非控制点,l_23)和k_2(受体关节,l_34), 其中 k(圆心,圆半径)。
步骤 2 有两个解决方案。 我们选择其中之一。 要模拟运动,我们必须选择 "same solution".
从两点计算角度:
alpha = math.atan2((y_2-y_1)/(x_2-x_1))