线程评级:
避碰
嗨,杰里米

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

干杯
罗宾
你好,罗宾,

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

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

代码:
status = RDK。PluginCommand("CollisionFreePlanner", "Join", "Target1|Target2|SafeMove")

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

您还需要哪些命令?
我们目前正在准备更多的材料来支持这一功能。

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

祝你有愉快的一天!
罗宾


附加文件
.rdk RDK_KUKA_KR10R900_250319.rdk(大小:502.99 KB /下载:4雷电竞app下载安卓62)
.stl Kollisionsgeometrie.stl(大小:684字节/下载:436)雷电竞app下载安卓
你好,罗宾,

谢谢您的反馈。我们刚刚根据您的建议改进了PRM算法。最新版本可用于雷电竞app下载安卓(目前只有Windows 64位)。

除此之外,插件在默认情况下应该被加载。您可以在工具-插件中选择加载/卸载它。超时问题也得到了解决。如果您有任何其他建议或发现任何问题,请告诉我。

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

我附上了一个新的RoboDK项目,包含所有可用的API特性:

代码:
# CollisionFreePlanner插件命令的示例(它们不区分大小写)

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

检索当前PRM映射信息的示例
status = RDK。PluginCommand(“CollisionFreePlanner”、“信息”)
返回一个包含样本和边的字符串,格式如下:
“样本-边缘-机器人名称”
打印(状态)

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

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

设置PRM样本的数量(联合配置的数量):
status = RDK。PluginCommand("CollisionFreePlanner", "Samples", 25)
打印(状态)

设置PRM边数(关节配置之间的连接):
status = RDK。PluginCommand("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。PluginCommand("CollisionFreePlanner", "SelectRobot", "Comau")
返回选中的机器人
打印(robot_name)

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

艾伯特


附加文件
.rdk PRM-Automated-Collision-Avoidance.rdk(大小:1.23 MB /下载:5雷电竞app下载安卓58)
嗨,艾伯特

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

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

我期待着你的回复,一旦车站布局完成,我就会给你回复我对新功能的反馈。

祝你有愉快的一天!
罗宾
你好,罗宾,

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

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

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

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

艾伯特
嗨,艾伯特

太感谢你了,太棒了!

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

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

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

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

如果你对我的描述有任何问题,我很乐意回答。

问候,罗宾


代码:
#来源://www.jasonament.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客人(年代)

Baidu
map