线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Python API Pose给出了奇怪的行为
# 1
我有以下测试代码块


代码:
从robodk导入Pose
def测试(abc):
A bc = ABC
p = Pose(0,0,0,a,b,c)
打印(p)


测试((89,0))
测试((90,0))
得到以下输出:


代码:
姿势(0.000,0.000,0.000,30.000,89.000,0.000):
[[0.017, -0.000, 1.000, 0],
[0.500, 0.866, -0.009, 0],
[-0.866, 0.500, 0.015, 0],
[0,0,0,1]]

姿势(0.000,0.000,0.000,0.000,90.000,30.000):
[[0.000, -0.000, 1.000, 0],
[0.500, 0.866, -0.000, 0],
[-0.866, 0.500, 0.000, 0],
[0,0,0,1]]


注意两个输出的角度。在第二个例子中,Rx和Rz似乎被交换了。

也许我不理解坐标,但第二个输出对我来说似乎是错误的。

谁能证实这是不好的行为,或者解释为什么不是吗?
# 2
这不是错误或不良行为。Pose命令使用欧拉角度表示(Rx->Ry'->Rz')。使用这种表示,当y值为90度(b值)时,Rx和Rz是多余的。

这两个转换非常相似:
代码:
从robodk导入*

pose1 = Pose(0.000, 0.000, 0.000, 30.000, 89.000, 0.000)
pose2 = Pose(0.000, 0.000, 0.000, 0.000, 90.000, 30.000)

#计算错误:
Pose1to2 = pose1.inv() * pose2
打印(pose1to2)
#输出:姿态(0.000,0.000,0.000,-0.000,1.000,-0.000)

你看到的4x4矩阵是一个姿态,它代表6D变换。你可以看到两个姿势之间非常小的变化。

更多信息请点击这里:
//m.sinclairbody.com/doc/en/PythonAPI/robo...obodk.Pose
//m.sinclairbody.com/doc/en/Basic-Guide.html#RefFrames
//m.sinclairbody.com/blog/robot-euler-angles/

艾伯特




浏览此主题的用户:
1客人(年代)