Kawasaki (川崎)抓取样例程序
本章将介绍用于完成简单识别并移动的机器人样例程序。
样例程序介绍
机器人简单抓取和放置的样例程序位于Mech-Vision和Mech-Viz软件安装目录下 Communication Component/Robot_Interface/KAWASAKI/sample
文件夹内。
按照使用方式分为三类。
使用 Mech-Vision 进行视觉识别并获取结果
.PROGRAM vision_sample_1()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Vision
;* 2022-5-1
;**********************************************************
accuracy 1 always
speed 30 always
TOOL gripper ;set TCP
Home ;move robot home position
JMOVE camera_capture ;move to camera capture position
break
pos_num = 0
;Set ip address of IPC
call mm_init_skt(127,0,0,1,50000)
twait 0.1
;Set vision recipe
;call mm_switch_model(1,1)
;Run vision project
call mm_start_vis(1,1,2,#start_vis) ;(x,x,3,#start_vis) used for ETH pathplan initial position
twait 1
call mm_get_visdata(1,pos_num,ret2)
if ret2 <> 1100
halt
end
call mm_get_pose(1,&pick[1],label[1],speed[1])
LAPPRO pick[1],100
LMOVE pick[1]
break
;Add object grasping logic here.
ldepart 100
lmove waypoint[1]
lappro drop[1],100
lmove drop[1]
;Add object releasing logic here.
ldepart 100
HOME
.END
程序逻辑解读
-
第 8 行:定义工具中心点 TCP。工具中心点由位姿变量 gripper 定义。关于如何使用示教器定义工具中心点,请参见 设置机器人工具中心点 。
-
第 9 行:机器人移动至 Home 点,关于如何示教定义 Home 点,请参见 设置 Home 点 。
-
第 10 行:机器人直线运动到相机拍照点。拍照点位姿由位姿变量 camera_capture 定义。关于如何使用示教器定义位姿变量,请参见 设置示教位姿数据 。
-
第 14 行:调用 mm_init_skt 对通信进行初始化设置,具体参见 初始化通信指令 。
-
第 16~17 行:如需设置 Mech-Vision 工程配方,可以在此处调用 mm_switch_model 设置工程配方,具体参见 切换 Mech-Vision 配方 。
-
第 19 行:调用 mm_start_vis 触发 Mech-Vision 工程运行,具体参见 启动 Mech-Vision 工程 。
-
第 20 行:设置相机拍照后的等待时间,此处设置为 1 秒。Eye To Hand 模式下,若在 mm_start_vis 和 mm_get_visdata 之间有移动步骤(MoveL 或 MoveJ),则不需要在此设置等待;Eye In Hand 模式下则必须设置等待时间,因为相机在拍照完成之前需保持静止。
-
第 21 行:调用 mm_get_visdata 获取 Mech-Vision 识别结果,pos_num 用于保存接收到的位姿数量,ret2 用于保存该指令执行的状态码。具体参见 获取视觉目标点 。
-
第 22~24 行:判断获取识别结果的状态码是否正常(1100 为正常状态码),若状态码为异常,机器人程序将暂停。
-
第 26 行:机器人直线移动到抓取点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
-
第 27 行:机器人直线移动到抓取点。
-
第 29 行:用户需在此处添加夹具控制逻辑以抓取物体。
-
第 30 行:从抓取点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 32 行:机器人移动到放置点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
-
第 33 行:机器人直线移动到固定的放置点。
-
第 34 行:用户需在此处添加夹具控制逻辑以放置物体。
-
第 35 行:从放置点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 36 行:机器人移动至 Home 点。
使用 Mech-Viz 规划路径
.PROGRAM vision_sample_2()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Viz
;* 2022-5-1
;**********************************************************
accuracy 1 always
speed 30 always
TOOL gripper ;set TCP
Home ;move robot home position
JMOVE camera_capture ;move to camera_capture position
break
pos_num = 0
;Set ip address of IPC
call mm_init_skt(127,0,0,1,50000)
twait 0.1
;Set vision recipe
;call mm_switch_model(1,1)
;Run Viz project
call mm_start_viz(1,#start_viz) ;(2,#start_viz) used for ETH viz initial position
twait 0.1
;set branch exitport
;call mm_set_branch(1,1)
;get planned path
call mm_get_vizdata(2,pos_num,vispos_num,ret1)
if ret1 <> 2100
halt
end
for count=1 to pos_num
call mm_get_pose(count,&movepoint[count],label[count],speed[count])
end
;follow the planned path to pick
for count =1 to pos_num
speed speed[count]
LMOVE movepoint[count]
if count == vispos_num then
;add object grasping logic here
end
end
;go to drop location
ldepart 100
lmove waypoint[1]
lappro drop[1],100
lmove drop[1] ;drop point
;add object releasing logic here
ldepart 100
HOME
.END
程序逻辑解读
-
第 8 行:定义工具中心点 TCP。工具中心点由位姿变量 gripper 定义。关于如何使用示教器定义工具中心点,请参见 设置机器人工具中心点 。
-
第 9 行:机器人移动至 Home 点,关于如何示教定义 Home 点,请参见 设置 Home 点 。
-
第 10 行:机器人直线运动到相机拍照点。拍照点位姿由位姿变量 camera_capture 定义。关于如何使用示教器定义位姿变量,请参见 设置示教位姿数据 。
-
第 14 行:调用 mm_init_skt 对通信进行初始化设置,具体参见 初始化通信指令 。
-
第 16~17 行:如需设置 Mech-Vision 工程配方,可以在此处调用 mm_switch_model 设置工程配方,具体参见 切换 Mech-Vision 配方 。
-
第 19 行:调用 mm_start_viz 触发 Mech-Viz 工程运行,具体参见 启动 Mech-Viz 工程 。
-
第 21~22 行:如需设置 Mech-Viz 工程中的分支,可在此处调用 mm_set_branch 设置分支步骤的出口,具体参见 选择 Mech-Viz 分支 。
-
第 24 行:调用 mm_get_vizdata 获取 Mech-Viz 工程规划的抓取路径,pos_num 用于保存接收到的位姿数量,vispos_num 用于保存第一个视觉移动在路径中的位置编号,ret1 用于保存该指令执行的状态码。具体参见 获取 Mech-Viz 数据 。
-
第 25~27 行:判断获取路径的状态码是否正常(2100 为正常状态码),若状态码为异常,机器人程序将暂停。
-
第 28~30 行:使用循环将获取的位姿保存到变量。调用 mm_get_pose 获取视觉结果和移动路径上点的位姿数据,具体参见 获取视觉结果 。
-
第 32~38 行:使用循环使机器人沿 Mech-Viz 规划的路径移动到抓取点,用户需在 36 行添加夹具控制逻辑以抓取物体。
-
第 40 行:从抓取点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 42 行:机器人移动到放置点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
-
第 43 行:机器人直线移动到固定的放置点。
-
第 44 行:用户需在此处添加夹具控制逻辑以放置物体。
-
第 45 行:从放置点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 46 行:机器人移动至 Home 点。
使用 Mech-Vision “路径规划”步骤获取规划路径
.PROGRAM vision_sample_3()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Vision path planning
;* 2023-2-1
;**********************************************************
accuracy 1 always
speed 30 always
TOOL gripper ;set TCP
Home ;move robot home position
JMOVE camera_capture ;move to camera_capture position
break
pos_num = 0
;Set ip address of IPC
call mm_init_skt(127,0,0,1,50000)
twait 0.1
;Set vision recipe
;call mm_switch_model(1,1)
;Run Viz project
call mm_start_vis(1,0,1,#start_vis)
twait 0.1
;get planned path
call mm_get_vispath(1,2,pos_num,vispos_num,ret1)
if ret1 <> 1103
halt
end
for count=1 to pos_num
call mm_get_pose(count,&movepoint[count],label[count],speed[count])
end
;follow the planned path to pick
for count =1 to pos_num
speed speed[count]
LMOVE movepoint[count]
if count == vispos_num then
;add object grasping logic here
end
end
;go to drop location
ldepart 100
lmove waypoint[1]
lappro drop[1],100
lmove drop[1] ;drop point
;add object releasing logic here
ldepart 100
HOME
.END
程序逻辑解读
-
第 8 行:定义工具中心点 TCP。工具中心点由位姿变量 gripper 定义。关于如何使用示教器定义工具中心点,请参见 设置机器人工具中心点 。
-
第 9 行:机器人移动至 Home 点,关于如何示教定义 Home 点,请参见 设置 Home 点 。
-
第 10 行:机器人以关节运动到相机拍照点。拍照点位姿由位姿变量 camera_capture 定义。关于如何使用示教器定义位姿变量,请参见 设置示教位姿数据 。
-
第 14 行:调用 mm_init_skt 对通信进行初始化设置,具体参见 初始化通信指令 。
-
第 16~17 行:如需设置 Mech-Vision 工程配方,可以在此处调用 mm_switch_model 设置工程配方,具体参见 切换 Mech-Vision 配方 。
-
第 19 行:调用 mm_start_vis 触发 Mech-Vision 工程运行,具体参见 启动 Mech-Vision 工程 。
-
第 20 行:设置相机拍照后的等待时间,此处设置为 1 秒。Eye To Hand 模式下,若在 mm_start_vis 和 mm_get_vispath 之间有移动步骤(MoveL 或 MoveJ),则不需要在此设置等待;Eye In Hand 模式下则必须设置等待时间,因为相机在拍照完成之前需保持静止。
-
第 22 行:调用 mm_get_vispath 获取 Mech-Vision “路径规划”步骤的结果。具体参见 获取 Mech-Vision “路径规划”步骤的结果 。
-
第 23~25 行:判断获取规划路径结果的状态码是否正常(1103 为正常状态码),若状态码为异常,机器人程序将暂停。
-
第 26~28 行:使用循环将获取的路径点数据保存到指定变量中,具体参见 获取视觉结果 。
-
第 30~36 行:使用循环使机器人沿规划路径移动到抓取点。用户需在添加夹具控制逻辑以抓取物体。
-
第 38 行:从抓取点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 40 行:机器人移动到放置点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
-
第 41 行:机器人直线移动到固定的放置点。
-
第 42 行:用户需在此处添加夹具控制逻辑以放置物体。
-
第 43 行:从放置点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
-
第 44 行:机器人移动至 Home 点。
运行样例程序
运行样例程序之前,需满足以下前提:
-
已参照 Kawasaki标准接口通信配置 完成通信配置。
-
已参照 Kawasaki自动标定 完成外参标定。
-
已搭建 Mech-Vision 方案 及 工程 ,并 自动加载当前方案 或 自动加载当前工程 。
-
已搭建 Mech-Viz 工程,在 Mech-Viz 工程资源面板中,右键单击工程名称,勾选 设为自动加载 。
-
Home 点、相机拍照点、机器人工具中心点、中间路径点已示教位姿数据。
满足上述前提后,请参见 此处 运行程序。