线程评级:
在UR脚本文件中没有正确填充舍入值
你好,

问题:

我正在使用UR10机器人的曲线跟踪项目,并试图通过使用舍入来摆脱路径点之间的停止和前进。当我在程序中设置舍入指令和“生成机器人程序”时,混合半径值会显示在脚本文件中,但不会在movep命令中作为参数填充。我目前使用的是“Universal Robots MoveP”后期处理器。

当我“生成机器人程序”时,我如何得到混合半径作为movep的参数?我知道混合是有效的,因为我将脚本上传到UR pendant上,并手动将混合添加到脚本中的每个movep命令中,这将从真正的机器人产生所需的行为。

我尝试过的事情:

  1. 更新robodk
  2. 使用不同的后期处理器,如“Universal Robots”,“Universal Robots URP”,和一个链接在这里.我最终使用了“Universal Robots MoveP”,因为这是我认为我需要在混合半径中适当添加的东西。
  3. 根据注释修改UR后处理器在这里维基
  4. 我相信后处理器在脚本文件中输出一个混合半径的两点之间有一个最小距离,不确定它对UR来说到底是什么。我认为我的点之间有足够的距离(至少30mm)。我已经尝试将robodk中的舍入值从1mm更改为5mm,但这仍然没有填充脚本文件中的movep命令中的混合半径参数。
robodk中的程序图片:



点击“生成机器人程序”时生成的脚本文件:

代码:
def pick2 ():
#全局参数:
全局speed_ms = 0.250
全局speed_rads = 0.750
全局加速度mss = 1.200
全局accel_radss = 1.200
Global blend_radius_m = 0.001
全局ref_frame = p[0,0,0,0,0]

#--------------------------
在这里添加任何默认子程序
#例如,驱动一个夹具作为一个程序调用:
# def Gripper_Open():
#……
#结束

开喷枪的例子:
def SprayOn(价值):
#使用该值作为输出:
Do_spray = 5
如果value == 0:
set_standard_digital_out (DO_SPRAY假)
其他:
set_standard_digital_out (DO_SPRAY,真的)
结束
结束

驱动挤出机的例子:
def挤出机(价值):
#使用该值作为输出:
如果值< 0:
#停止挤出机
其他:
#启动挤出机
结束
结束

移动外部轴的示例
def MoveAxis(价值):
#使用该值作为输出:
Do_axis_1 = 1
Di_axis_1 = 1
如果值<= 0:
set_standard_digital_out (DO_AXIS_1假)

#等待数字输入改变状态
#while (get_standard_digital_in(DI_AXIS_1) != False):
# sync ()
#结束
其他:
set_standard_digital_out (DO_AXIS_1,真的)

#等待数字输入改变状态
#while (get_standard_digital_in(DI_AXIS_1) != True):
# sync ()
#结束
结束
结束
#--------------------------


#主程序:
由RoboDK v5.4.1在2023年6月3日13:45:32为UR10e生成的程序
#使用标称运动学。
Blend_radius_m = 0.005
Speed_ms = 0.200
Ref_frame = p[-0.469960, - 0.0.758650, -0.028850, 0.000000, 0.000000, 0.000000]
Set_tcp (p[0.000000, 0.000000, 0.200000, 0.000000, 0.000000, 0.000000])
Movej ([-2.198609, -2.258386, -1.559731, -2.575268, -2.400037, 6.265732], acceler_radss,speed_rads,0,0)
Movep ([-2.198609, -2.368639, -1.578502, -2.446253, -2.400037, 6.265732],accel_mss,speed_ms,0) #结束跟踪
set_standard_digital_out(真正的)
睡眠(0.500)
Movep ([-2.132391, -2.296487, -1.730749, -2.353734, -2.276869, 5.480334],accel_mss,speed_ms,0)
Movep ([-2.051512, -2.234336, -1.863052, -2.274042, -2.138953, 4.694936],accel_mss,speed_ms,0)
Movep ([-1.954681, -2.181906, -1.975852, -2.206655, -1.985068, 3.909538], acceler_mss,speed_ms,0)
Movep ([-1.841846, -2.139582, - 2.0068023, -2.152218, -1.815160, 3.124139],accel_mss,speed_ms,0)
Movep ([-1.715154, -2.108166, -2.137260, -2.112250, - 1.631363,2.338741],accel_mss,speed_ms,0)
Movep ([-1.579675, -2.088618, -2.180841, -2.088740, - 1.438802,1.553343],accel_mss,speed_ms,0)
Movep ([-1.443153, -2.081741, -2.196392, -2.083539, -1.245231, 0.767945],accel_mss,speed_ms,0)
Movep ([-1.335217, -2.085721, -2.187596, -2.091812, -1.137642, -0.017453],accel_mss,speed_ms,0) #结束跟踪
Speed_ms = 1.000
Movep ([-1.335217, -1.914836, -2.164645, -2.285631, -1.137642, -0.017453], acceler_mss,speed_ms,0)
主程序结束
结束

pick2 ()

有问题的代码区域。正如你所看到的,正确的blend_radius_m变量在我的程序中初始化,但它没有在movep参数中填充(红色下划线)

您的移动非常小(小于5毫米),后处理器有一个自动过滤器,以防止使用比移动更大的混合半径。旧的UR控制器需要这个检查来防止奇怪的错误消息。

你可以在后处理器中设置这个变量来禁用这个检查:
代码:
BLENDING_CHECK = False
艾伯特你好,

谢谢你的回复。我添加了“Blending_Check = False”到“Universal Robots MoveP”后处理器,但不幸的是,这并没有改变任何东西。我在这里复制了后期处理器的代码。

引用: # -*-编码:UTF-8 -*-
#版权所有2015-2022 - RoboDK Inc. -
//www.x7093.com/

这个文件加载RoboDK后处理器的编译版本:
#万能机器人MoveP机器人控制器

更多关于RoboDK后处理器和离线编程爱游戏ayx高尔夫球的信息:ayx官方
//www.x7093.com/help#PostProcessor
//www.x7093.com/doc/en/PythonAPI/postprocessor.html
# ----------------------------------------------------

进口sys
进口操作系统

#需要使robodk生成的代码工作
进口数学
robodk进口

#检测Python版本和后处理器
打印"使用Python版本:"+strsysversion_info))
path_app操作系统路径目录名__file__).取代操作系统.sep,“/”
打印RoboDK后处理器:+path_app

#检查帖子是否与Python版本兼容
version_strstrsysversion_info0) +strsysversion_info1])
path_librarypath_app+' / v '+version_str
如果操作系统路径isdirpath_library):
味精"未找到无效的Python版本或后处理器。确保你使用的是受支持的Python版本:"+path_library
味精+ =\ n选择工具-选项-Python并选择支持的Python版本"
打印味精
提高异常味精

#加载后处理器
执行“从v”+version_str+".Universal_Robots_MoveP导入RobotPost为BasePost

RobotPostBasePost):
#设置为True使用MoveP,设置为False使用MoveL
USE_MOVEP真正的

#如果是True,它将尝试使用SFTP上传。它需要PYSFTP (pip install PYSFTP . exe)。重要提示:它需要Visual Studio Community c++ 10.0)
UPLOAD_SFTP

#线性移动的默认速度,单位为m/s
SPEED_MS0.25

#关节移动的默认速度(rad/s)
SPEED_RADS0.75

# m/ss中线性线移动的默认加速
ACCEL_MSS1.2

#关节移动的默认加速度在rad/ss
ACCEL_RADSS1.2

#默认混合半径(单位:米)
BLEND_RADIUS_M0.001

# 5000 #每个程序的最大行数如果超过行数,RoboDK会一步一步执行程序
MAX_LINES_X_PROG1000000000.0

#最小输出圆半径(单位:mm)。它不考虑混合半径
MOVEC_MIN_RADIUS1

#输出的最大圆半径(单位:mm)。它不考虑混合半径
MOVEC_MAX_RADIUS10000

BLENDING_CHECK

通过

如果__name__= =“__main__”
执行“从v”+version_str+".Universal_Robots_MoveP import test_post"
test_post ()



另外,我不认为任何运动都小于5mm?请看看下面的UR10机器人的图像和它应该遵循的曲线。每个点之间的距离大于5mm(机器人J6的外径为90mm作为参考)。我是不是遗漏了什么?谢谢你!

你好,

对我上面的评论有什么更新吗?谢谢!
您是否可以附加您的站点,或在%TEMP%中生成的临时python文件?



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