线程评级:
绕z轴旋转-末端执行器旋转
# 1
我试图创建一个相当简单的点跟随项目与库卡机器人。因此,下面的点工作得很好,但我想围绕z轴(关节角6)旋转末端执行器,以使所有数据点的值发生变化(-10°到+10°)。我怎么才能做到呢?据我所知,我只能将方向添加到运动学数据中,而不能添加任何旋转。我附上了rdk文件以获取信息。
.rdk 20201013 simulationkuka.rdk(大小:340.49 KB /下载:260)
嗨,迈克尔,

在Point Follow项目中,有一个“Program events”选项。
在右列中,有“On action”复选框和与之相关的文本框。
这将为点跟随项目的每个点添加一个操作。

然后,您可以使用子程序简单地旋转关节6 +-10度。

杰里米
# 3
(10-13-2020, 01:56 pm)杰里米写道:嗨,迈克尔,

在Point Follow项目中,有一个“Program events”选项。
在右列中,有“On action”复选框和与之相关的文本框。
这将为点跟随项目的每个点添加一个操作。

然后,您可以使用子程序简单地旋转关节6 +-10度。

杰里米

感谢您的快速回复!所以我认为这基本上是可行的,但是旋转只会发生在每一个单独的动作之后,而不是一个组合的动作。尽管我不想手动输入这些值。所以我玩了一点,并改编了“Csv文件到程序”Python脚本,试图做同样的事情,但在这里我得到的问题是,它没有做旋转,即使Python没有给出任何错误。也许你也可以查一下然后告诉我哪里做错了。我怀疑这几行不是我想要的:

robotJoints [5] [0= rotationTool#操纵关节角度6到所需的旋转
robot.setJoints (robotJoints)#设置机器人关节角度6为旋转值


或者可以将关节角度6的旋转添加到这一行的一般运动中:

program.MoveL(π)

我该怎么做呢?非常感谢您的帮助!


附加文件
.rdk 20201014 simulationkuka.rdk(大小:339.33 KB /下载:229)
. py pointfollow.py(大小:3.57 KB /下载:312)
. txt walking.txt(大小:4.31 KB /下载:271)
# 4
(10-14-2020, 12:02 pm)michael.langWrote:
(10-13-2020, 01:56 pm)杰里米写道:嗨,迈克尔,

在Point Follow项目中,有一个“Program events”选项。
在右列中,有“On action”复选框和与之相关的文本框。
这将为点跟随项目的每个点添加一个操作。

然后,您可以使用子程序简单地旋转关节6 +-10度。

杰里米

感谢您的快速回复!所以我认为这基本上是可行的,但是旋转只会发生在每一个单独的动作之后,而不是一个组合的动作。尽管我不想手动输入这些值。所以我玩了一点,并改编了“Csv文件到程序”Python脚本,试图做同样的事情,但在这里我得到的问题是,它没有做旋转,即使Python没有给出任何错误。也许你也可以查一下然后告诉我哪里做错了。我怀疑这几行不是我想要的:

robotJoints [5] [0= rotationTool#操纵关节角度6到所需的旋转
robot.setJoints (robotJoints)#设置机器人关节角度6为旋转值


或者可以将关节角度6的旋转添加到这一行的一般运动中:

program.MoveL(π)

我该怎么做呢?非常感谢您的帮助!

我遇到的另一个问题是:
-如果我使用python,当用csv-post-processor生成机器人程序时,6个机器人关节角度在csv-file中的所有120点保持不变。如果我手动添加点和点跟踪项目,我在csv中得到了正确的关节角度……
# 5
(10-15-2020, 09:39 am)michael.langWrote:
(10-14-2020, 12:02 pm)michael.langWrote:
(10-13-2020, 01:56 pm)杰里米写道:嗨,迈克尔,

在Point Follow项目中,有一个“Program events”选项。
在右列中,有“On action”复选框和与之相关的文本框。
这将为点跟随项目的每个点添加一个操作。

然后,您可以使用子程序简单地旋转关节6 +-10度。

杰里米

感谢您的快速回复!所以我认为这基本上是可行的,但是旋转只会发生在每一个单独的动作之后,而不是一个组合的动作。尽管我不想手动输入这些值。所以我玩了一点,并改编了“Csv文件到程序”Python脚本,试图做同样的事情,但在这里我得到的问题是,它没有做旋转,即使Python没有给出任何错误。也许你也可以查一下然后告诉我哪里做错了。我怀疑这几行不是我想要的:

robotJoints [5] [0= rotationTool#操纵关节角度6到所需的旋转
robot.setJoints (robotJoints)#设置机器人关节角度6为旋转值


或者可以将关节角度6的旋转添加到这一行的一般运动中:

program.MoveL(π)

我该怎么做呢?非常感谢您的帮助!

我遇到的另一个问题是:
-如果我使用python,当用csv-post-processor生成机器人程序时,6个机器人关节角度在csv-file中的所有120点保持不变。如果我手动添加点和点跟踪项目,我在csv中得到了正确的关节角度……

我想,在使用Python脚本时获得所有点的相同角度的问题是,在检查关节移动时,机器人关节保持相同(data_downsamples -3是用Python脚本添加的,手动目标122,请参阅机器人关节)。为什么会发生这种情况,我该如何解决?谢谢!


附加文件 缩略图(s)

# 6
嗨,迈克尔,

下面是一些改进代码和工作流程的建议:

1.一个重要的细节是,您正在更新笛卡尔目标的关节值。笛卡尔目标优先考虑笛卡尔数据。更新联合值不会改变目标,但可能会改变配置标志。因此,如果你想为一个目标定义一个旋转,你可以这样做:

代码:
目标。setPose(p_i * rotz(rotate_deg*pi/180))

2.我建议你把每个目标和你的机器人联系起来。这样,当你更新目标的姿态时,关节值也会相应更新(使用活动工具和活动引用,你可以分别在机器人上使用setPoseFrame和setPoseTool更新活动工具和引用)。
代码:
target = RDK。AddTarget('T%i' %i,帧,机器人)
# target. setascartesitarget (
target. setpose (pose_i) #如果它是笛卡尔目标,将重新计算机器人关节
关节= target.关节().list() #获取提供的最后一个姿态的机器人关节

3.可以通过调用list()将关节函数返回的Mat关节对象转换为列表。例子:

代码:
robotjoint = robot. joint ().list() #获取当前机器人关节角度的浮动列表
robot关节[5]= rotationTool #设置关节
robot. set关节(robotjoint) #设置机器人关节角度6为旋转值

4.你可以自动重新计算所有的联合目标调用:

代码:
program.setParam(“RecalculateTargets”)

如果您更改了一个程序的坐标系统或工具,并且希望稍后访问更新的关节值,那么这是非常有用的。

你也可以使用instructionlist关节函数来获得关节空间中机器人路径的完整详细列表。

5.RoboDK使用变量pi来设置pi的值(math.pi),这可能会导致混淆,我将其更新为p_i。

我对你提供的样本文件做了一些小的编辑,以反映其中的一些建议,我还没有测试它。

如果有什么困惑请告诉我。

艾伯特


附加文件
. py pointfollow_V2.py(大小:4.24 KB /下载:232)
# 7
谢谢你Albert的详细回答,这对我帮助很大,实际上现在一切似乎都很好:)

只有一件小事让我很困惑
每当我使用MoveL(inear)时,csv-postprocessor会给我笛卡尔和关节数据。当我使用MoveJ(oint)时,它只给出关节角度数据。对于我当前的应用程序,我需要关节角来喂机器人。什么对我的应用程序“更好”,如果我从一个换成另一个有什么问题吗?关节角度完全相同。

代码:
指令,X(毫米),Y (mm)、Z(毫米),Rx(度)变化(度),Rz(度),j - 1(度),J2(度)、J3(度),阁下(度),J5(度),卫星(度)
,925.600线性移动,530.810,-224.520,-90.000,87.374,109.472,25.146100,-17.191100,-70.330800,-27.794600,87.807500,-18.316700
移动关节,25.146100,-17.191100,-70.330800,-27.794600,87.807500,-18.316700


谢谢你!
# 8
嗨,迈克尔,

这是RoboDK的默认行为。
MoveJ的关节
关节+笛卡尔MoveL。

您可以在“工具”->“选项”->“程序”中更改该行为
“关节运动输出”
“线性运动输出”

没有“更好的解决方案”。两者的结果应该是一样的。但是,如果没有特殊的原因,我们通常建议您保持默认值。

杰里米
# 9
(10-22-2020, 05:29 pm)杰里米写道:嗨,迈克尔,

这是RoboDK的默认行为。
MoveJ的关节
关节+笛卡尔MoveL。

您可以在“工具”->“选项”->“程序”中更改该行为
“关节运动输出”
“线性运动输出”

没有“更好的解决方案”。两者的结果应该是一样的。但是,如果没有特殊的原因,我们通常建议您保持默认值。

杰里米

嗨,杰里米,

好的,很高兴知道,谢谢你的澄清!

干杯,迈克尔




浏览此线程的用户:
1客人(年代)