03-05-2019, 07:22 PM
(本文最后修改:03-05-2019,07:23 byjccourtney)。
我在同时模拟两个机器人时遇到了麻烦。我有两个机器人,“机器人A”和“机器人B”,每个机器人执行一个很大的功能。这些函数在两个单独的文件中引用用户定义的函数,但它们都可以工作。
我的问题是,我可以让任何一个机器人完成它的功能,但不能让两个机器人都完成。我在这里做错了什么,我需要如何修改robolink命令来使这个设置工作?有人能帮忙吗?
我的python代码粘贴在下面。我不确定我在做什么不同于下面的例子:
//www.w5838.com/doc/en/PythonAPI/exam...e-3-robots
谢谢!
我的问题是,我可以让任何一个机器人完成它的功能,但不能让两个机器人都完成。我在这里做错了什么,我需要如何修改robolink命令来使这个设置工作?有人能帮忙吗?
我的python代码粘贴在下面。我不确定我在做什么不同于下面的例子:
//www.w5838.com/doc/en/PythonAPI/exam...e-3-robots
谢谢!
代码:
输入help("robolink")或help("robodk")以获取更多信息
#按F5运行脚本
#文档://www.w5838.com/doc/en/RoboDK-API.html
#参考://www.w5838.com/doc/en/PythonAPI/index.html
#注意:不需要保留该文件的副本,你的python脚本与工作站一起保存
从robolink导入# RoboDK API
从robodk导入* #机器人工具箱
从M75_Pick_Place导入*
从M75_Place_Clean导入
进口线程
导入的时间
def run_robot_a ():
#从机器人A的工作站树中收集所需物品
rdk_a = Robolink()
robot_a = rdk_a.Item('UR5e')
rdk_a。ShowMessage(“机器人”)
#robot_a = rdk_a.Item('UR5e')
a_home = rdk_a.Item(' a_home ') #联合目标
a_pick_to_clean_0 = rdk_a.Item('A_PICK_TO_CLEAN0') #联合目标
a_pick_to_clean_1 = rdk_a.Item('A_PICK_TO_CLEAN1') #联合目标
a_pick_to_clean_2 = rdk_a.Item('A_PICK_TO_CLEAN2') #联合目标
a_pick_to_clean_3 = rdk_a.Item('A_PICK_TO_CLEAN3') #联合目标
Bin_input_active = rdk_a。项目('Active Input Bin') # 'Active Bin'参考框架
M75_tray = rdk_a。项目('M75输入托盘')# 'M75托盘'参考框
项目('Disk3A') #Disk3A参考框架
disk_1a = rdk_a.Item('Disk1A') #
robot_a.setPoseFrame (bin_input_active)
Blade_count = 0
#设置机器人A的线性速度、加速度和舍入
robot_a.setSpeed (500)
robot_a.setAcceleration (1200)
robot_a.setRounding (20)
从安全的位置开始
robot_a.MoveJ (a_home)
robot_a.MoveJ (a_pick_to_clean_0)
#循环每个位置
当blade_count < 84时:
#更新活动bin的位置
M75_set_active_bin_pos (rdk_a, bot_a, blade_count)
#选择
robot_a.setSpeed (500)
m75_pick_fwd (rdk_a robot_a)
#抓地力部分
m75_pick_rev (rdk_a robot_a)
robot_a.setSpeed (500)
#暂停
robot_a.Pause (0.5)
安全离开采摘区域
robot_a.setRounding (20)
robot_a.MoveJ (a_pick_to_clean_0)
robot_a.MoveJ (a_pick_to_clean_1)
robot_a.MoveJ (a_pick_to_clean_2)
robot_a.MoveJ (a_pick_to_clean_3)
#清洁磁盘3A
robot_a.setPoseFrame (disk_3a)
m75_clean_3a (rdk_a robot_a)
#重置清洗位置
robot_a.MoveJ (a_pick_to_clean_3)
#清理磁盘1A
robot_a.setPoseFrame (disk_1a)
m75_clean_1a (rdk_a robot_a)
安全地从清洁区域移动到采摘区域
robot_a.setRounding (20)
robot_a.MoveJ (a_pick_to_clean_3)
robot_a.MoveJ (a_pick_to_clean_2)
robot_a.MoveJ (a_pick_to_clean_1)
robot_a.MoveJ (a_pick_to_clean_0)
robot_a.setPoseFrame (bin_input_active)
#位置
robot_a.setSpeed (500)
m75_place_fwd (rdk_a robot_a)
#发布部分在这里
m75_place_rev (rdk_a robot_a)
robot_a.setSpeed (500)
#暂停
robot_a.Pause (0.5)
#增加下一个拾取的刀片数量
Blade_count = Blade_count + 1
安全移动回到原位
robot_a.MoveJ (a_pick_to_clean_0)
robot_a.MoveJ (a_home)
def run_robot_b ():
#从工作站树中收集机器人B所需的物品
rdk_b = Robolink()
robot_b = rdk_b.Item('UR5e2')
rdk_b。ShowMessage (B“机器人”)
#robot_b = rdk_a.Item('UR5e2')
Bin_output_active = rdk_b。项目('Active Output Bin') # 'Active Bin'参考框架
Table_center = rdk_b。项目(“表中心”)
b_home = rdk_b.Item(' b_home ')
项目(' b_home_to_clean ')
b_place_to_clean_0 = rdk_b.Item('B_PLACE_TO_CLEAN0')
b_place_to_clean_1 = rdk_b.Item('B_PLACE_TO_CLEAN1')
b_place_to_clean_2 = rdk_b.Item('B_PLACE_TO_CLEAN2')
b_place_to_clean_3 = rdk_b.Item('B_PLACE_TO_CLEAN3')
Blade_count = 0
#设置机器人A的线性速度、加速度和舍入
robot_b.setSpeed (500)
robot_b.setAcceleration (1200)
robot_b.setRounding (20)
从安全的位置开始
robot_b.MoveJ (b_home)
从居家姿势移动到清洁姿势
robot_b.MoveJ (b_home)
robot_b.MoveJ (b_home_to_clean)
robot_b.MoveJ (b_place_to_clean_3)
#循环每个位置
当blade_count < 84时:
#交换
# robot_b.setPoseFrame (table_center)
# b_m75_swap (rdk_b robot_b)
# robot_b.MoveJ (b_place_to_clean_1)
# robot_b.MoveJ (b_place_to_clean_2)
#清理3B磁盘
robot_b.Pause (0.50)
#从清洁区域移动到采摘区域
robot_b.MoveJ (b_place_to_clean_3)
robot_b.MoveJ (b_place_to_clean_2)
robot_b.MoveJ (b_place_to_clean_1)
robot_b.MoveJ (b_place_to_clean_0)
#位置
robot_b.setPoseFrame (bin_output_active)
#更新活动bin的位置
B_m75_set_active_bin_pos (rdk_b, robot_b, blade_count)
robot_b.setSpeed (500)
b_m75_place_fwd (rdk_b robot_b)
#发布部分在这里
#暂停
robot_b.Pause (0.25)
b_m75_place_rev (rdk_b robot_b)
robot_b.setSpeed (500)
安全搬离清洁区域
robot_b.setRounding (20)
robot_b.MoveJ (b_place_to_clean_0)
robot_b.MoveJ (b_place_to_clean_1)
robot_b.MoveJ (b_place_to_clean_2)
robot_b.MoveJ (b_place_to_clean_3)
#增加下一个位置的刀片数量
Blade_count = Blade_count + 1
安全移动回到原位
robot_b.MoveJ (b_home)
##-------------------------- 最大宽度 -----------------------------------------#
##程序从这里开始:
demask_station = Robolink()
#robot_a = demask_station.Item('UR5e')
#robot_b = demask_station.Item('UR5e2')
# demask_station。ShowMessage(“线程”)
Thread_a = threading。线程(target = run_robot_a, args = ())
Thread_b = threading。线程(target = run_robot_b, args = ())
thread_a.start ()
thread_b.start ()
thread_a.join ()
thread_b.join ()
# demask_station。ShowMessage(“线程”)