线程评级:
  • 1票(s) - 5平均
  • 1
  • 2
  • 3.
  • 4
  • 5
避碰
嗨,杰里米

你对我的问题的迅速反应使我感动。目前我正在做一个学校项目,将持续到九月。现在,我还不太确定我是否应该查看ROS/MoveIt并尝试自己建模我们的机器人,或者上面提到的功能在不久的将来是否可行。如果是这样的话,我们甚至有可能用我们在学校建立的原型来测试这个新功能。这样我就可以对新功能提供反馈,甚至可以帮助改进这个功能(尽管我是机器人技术的初学者)。我现在看到的主要问题是对.dll库及其可用函数的有限访问。也就是说,RoboDK中的PRM算法似乎工作得很好,我担心ROS的挑战性使用。
如果有可能收到关于这个主题的时事通讯,那当然是非常棒的。我期待着四月收到你的回复,否则你已经回答了我的问题,帮了我很大的忙。

干杯
罗宾
你好,罗宾,

谢谢你的反馈。我们将打开一个命令,以便您可以通过Python触发PRM更新。大概需要两周的时间。

目前,您可以通过API连接2个目标或2个程序。例如,如果你想连接Target1和Target2,创建一个名为SafeMove的程序,你可以这样做:

代码:
status = RDK。插件命令("CollisionFreePlanner", "Join", "Target1|Target2|SafeMove")

我无法重现AddFile问题。您应该确保RoboDK没有忙于更新PRM映射或连接2个目标,否则您可能会看到超时问题。

您还需要哪些其他命令?
我们目前正在准备更多的材料来支持这个特性。

艾伯特
嗨,艾伯特
我想到了PRM算法,并提出了一些关于CollisionFreePlanner插件的想法。
命令:
-已经提到的:更新计算命令
-设置样本数(顶点),设置每个样本的边缘(邻域大小),设置机器人步长…所有这些都是为了减少Python中的计算时间
-RDK。PluginCommand:返回path - targets作为列表,直接使用它们来组装一个更大的路径一个创建的程序可能只使用一次,然后它们必须被删除(批大小1路径)
-确保RoboDK不更新PRM信号(安全导入cad文件)
-setTimeoutTime(如果在一个有用的时间框架内找不到解决方案)…(封闭算法需要空间C的大采样大小)
当实现其他命令时,可能其中一些命令不再是必需的。
我附上了一个文件。在“Tisch_Test”python脚本中,我尝试了模拟速度和碰撞信号的实验。我的经验是,当提高模拟速度时,可能无法检测到碰撞。也许我做错了什么。否则我不太确定我可以通过提高模拟速度来实现什么?此外,当我删除Kollisionsgeometrie1&2时,我无法使用RoboDK-Allow-CollisionFreePlanner.bat运行我的测试程序。这就是我对AddFile问题的意思。如果有任何方式让我贡献这个插件,那么我会很乐意帮助,因为我基本上是免费工作,因为我的项目分配。希望你能重现我的发现,如果你有任何问题,请不要犹豫与我联系。

祝你今天愉快!
罗宾


附加文件
.rdk RDK_KUKA_KR10R900_250319.rdk(大小:502.99 KB /下载:42022世界杯国家队名单98)
.stl Kollisionsgeometrie.stl(大小:684字节/下载:470)2022世界杯国家队名单
你好,罗宾,

谢谢你的反馈。我们刚刚根据您的建议改进了PRM算法。最新版本可用于2022世界杯国家队名单(目前只支持Windows 64位)。

除其他事项外,插件应该默认加载。您可以选择在Tools-Plug-Ins中加载/卸载它。超时问题也得到了解决。如果您有任何其他建议或发现任何问题,请告诉我。

如果你加快模拟速度,你就不太可能检测到碰撞。如果您想准确地检测机器人程序的碰撞,我建议您右键单击程序并选择检查路径和碰撞(Shift + F5)。这可能需要更多的时间,但它将检查碰撞给定的公差设置在工具-选项-运动。

我附加了一个新的RoboDK项目,其中包含所有可用的API功能:

代码:
“CollisionFreePlanner”插件的命令示例(不区分大小写)

连接两个机器人目标的示例(例如,从目标1移动到目标2的程序)。该程序将被称为ProgSample),并创建一个名为Prog 123的程序
status = RDK。PluginCommand("CollisionFreePlanner", "Join", "Target 1|Target 2|ProgSample")
如果可以链接两个目标,则返回"Success"。否则返回"Failed"
打印(状态)

查询当前PRM映射信息
status = RDK。PluginCommand(“CollisionFreePlanner”、“信息”)
返回一个包含样本和边的字符串,格式如下:
#“Samples-edges-Robot name”
打印(状态)

添加当前机器人关节的示例(每个关节将连接到NewNodeEdges样本)
status = RDK。PluginCommand(“CollisionFreePlanner”,“添加”)
打印(状态)
这个函数可以在一个循环中被多次调用来创建你自己的PRM映射

#清除与PRM无碰撞计划器相关的数据
status = RDK。PluginCommand(“CollisionFreePlanner”,“明确”)
打印(状态)

设置PRM采样的个数(joint configuration的个数)。
status = RDK。插件命令("CollisionFreePlanner", "Samples", 25)
打印(状态)

设置PRM边的数量(连接配置之间的连接):
status = RDK。插件命令("CollisionFreePlanner", "Edges", 10)
打印(状态)

设置新添加的接缝样本的边数
#(使用Add命令或通过连接目标/程序添加的新联合配置的连接):
status = RDK。PluginCommand("CollisionFreePlanner", "NewNodeEdges", 5)
打印(状态)

修改碰撞检查的路径步长
#(这是一个RoboDK命令,而不是一个PRM插件命令)
status = RDK。命令(“PathStepCollisionDeg”,2)
打印(状态)

设置新增节点的边数
#(使用Add命令或通过连接目标/程序添加的新联合配置的连接):
status = RDK。PluginCommand("CollisionFreePlanner", "Display", 0) #设置为1(显示)或0(隐藏)
打印(状态)

#选择机器人进行PRM计算的示例(仅当单元格中有2个以上机器人时有用)
robot_name = RDK。插件命令("CollisionFreePlanner", "SelectRobot", "Comau")
返回选定的机器人
打印(robot_name)

#计算或更新PRM映射(可能需要一段时间)
status = RDK。PluginCommand(“CollisionFreePlanner”、“钙”)
打印(状态)

艾伯特


附加文件
.rdk PRM-Automated-Collision-Avoidance.rdk(大小:1.23 MB /下载:52022世界杯国家队名单99个)
嗨,艾伯特

非常感谢你的新功能。目前我正忙着建立一个机器人站和测试你的功能。一旦我使用了你所有的新功能,我就会给出反馈,说明它们是如何有用的,以及从我的角度来看是否有任何需要改变的地方。

函数{status = RDK。目前为止,PluginCommand("CollisionFreePlanner", "Info")}只包含顶点和边缘的两种大小。如果函数也能返回顶点及其边缘的原始数据,那就太好了。在我的项目(以及我正在访问的课程)中,我必须研究机器学习。如果我能保存整个Point云和它们的配置,并用python编写一个外部函数来找到一个改进的路径,那将是非常棒的。也许有可能找到某些路径和碰撞几何之间的关系,这种关系具有比其他路径更高的成功率(没有碰撞)。我还可以实现一个路径搜索算法。是否有可能通过上述函数返回这两个数据列表?

我期待着你的消息,一旦车站布局完成,我会尽快向你反馈我对新功能的反馈。

祝你今天愉快!
罗宾
你好,罗宾,

谢谢你的反馈。有一个新的更新,包括通过API将样本和边缘矩阵保存为CSV文件的选项。例如,您可以使用以下代码:

代码:
current_rdk_file = RDK.getParam("FILE_OPENSTATION")

#将N个样本保存为CSV文件:关节值将保存为每组关节的一行
status_msg = RDK。PluginCommand("CollisionFreePlanner", " savessamples ", current_rdk_file + "-Joints.csv")
print(status_msg) #如果成功返回“完成”

#保存为CSV文件(矩阵大小为NxN)
status_msg = RDK。PluginCommand("CollisionFreePlanner", "SaveMap", current_rdk_file + "-Map.csv")
print(status_msg) #如果成功返回“完成”

艾伯特
嗨,艾伯特

我不知道怎么感谢你,太棒了!

祝你晚上愉快!
罗宾
嗨,艾伯特

我尝试了新的CollisionFreePlanner命令。有一些问题,目前只是不想为我工作:
当我使用status = RDK。PluginCommand(“CollisionFreePlanner”,“明确”),碰撞地图似乎被删除,但是,如果我点击“显示地图”按钮,旧的数据,包括样本仍然存储在某个地方,将被显示。
当使用status = RDK。PluginCommand("CollisionFreePlanner", "Join", "Target 1|Target 2|ProgSample")它通常返回“False”。尽管使用了其他参数(PathStep, Edges, Samples),但它永远不会找到连接两个点的解决方案。但是只要我点击RoboDK中的“链接选定目标/程序按钮”,它就会找到一个有效的解决方案,并在两点之间创建程序。
与RoboDK的图形界面相比,我很难理解Python指令背后发生了什么。我所能肯定地说的是,在操作.dll的两个选项之间存在一些差异。
我希望你能复制我的描述,因为我不能把我的项目上传到公众。如果有什么不清楚的,我很乐意帮助!
周末愉快!
罗宾
又为什么

自从RoboDK 3.8.4的最新更新以来,我在5月10日描述的问题似乎已经解决了。然而,我注意到PRM算法创建了一个有效的PRG,尽管其中有碰撞(在样本之间)。跑完之后”status = RDK。PluginCommand("CollisionFreePlanner", "Join", "Target 1|Target 2|ProgSample")“我可以使用下面的代码轻松检查路径是否有碰撞。然而,PRM在找到“有效”的解决方案后并没有提供任何替代路径。我的建议是将下面的代码放入PRM算法评估中,以便在检测到碰撞时继续搜索无碰撞路径。否则整个地图就会变得毫无用处,因为在我看来,找到另一条路径的唯一方法就是刷新碰撞地图。

模拟速度:我已经简化了车站的大多数碰撞几何形状。然而,地图的计算时间需要相当长的时间。有什么新的插件可以更好地利用显卡吗?我的显卡使用率总是低于5%(有或没有“GPU阵列使用率”选项)。此外,我的处理器似乎在没有涡轮增压的情况下以50%的使用率运行。任何提示都很感激。

如果你对我的描述有任何问题,我很乐意详细说明。

问候,罗宾


代码:
#来源://m.sinclairbody.com/doc/en/PythonAPI/robolink.html?highlight=prog#robolink.Robolink.AddProgram
#更新路径(可能需要一些时间,如果碰撞检查是活跃的)
program = RDK.Item('ProgSample')
update_result = program.Update(COLLISION_ON)
打印(update_result)
你好,罗宾,

你能分享一下创建碰撞的RoboDK项目吗?(RDK文件)
您使用的是什么设置?

碰撞检查按4度的步骤分割路径。您可以更改此设置以更准确,但这会花费更多时间。在这个范围内也可能有碰撞,所以我建议增加你的对象的大小,以确保没有碰撞被遗漏。

碰撞检查不使用显卡资源。




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