Kawasaki (川崎)抓取样例程序¶
本章将介绍用于完成简单识别并移动的机器人样例程序。
样例程序介绍¶
机器人简单抓取和放置的样例程序位于 Mech-Center 安装目录下 XXXX/Mech-Center-xxx/Robot_Interface/KAWASAKI/sample
文件夹内。
按照使用方式分为两类:
使用 Mech-Vision 进行视觉识别并获取结果¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | .PROGRAM vision_sample_1()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Vision
;* mechmind, 2022-5-1
;**********************************************************
accuracy 1 always
speed 30 always
TOOL gripper ;set TCP
Home ;move robot home position
lmove 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,60)
twait 0.1
;Set vision recipe
;call mm_switch_model(1,1)
;Run vision project
call mm_start_vis(1,1,2)
twait 1
call mm_get_visdata(1,pos_num,ret2)
if ret2 <> 1100
halt
end
call mm_get_pose(1,&pick[1],label[l],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 为正常状态码),若状态码为异常,机器人程序将暂停。
第 25 行:调用 mm_get_pose 获取第 1 个视觉结果,&pick[1] 用于保存第 1个位姿数据,label[l] 用于保存第 1 个位姿数据相对应的标签数据,speed[1] 用于保存第 1 个位姿数据相对应的移动速度,具体参见 获取视觉结果 。
第 26 行:机器人直线移动到抓取点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
第 27 行:机器人直线移动到抓取点。
第 29 行:用户需在此处添加夹具控制逻辑以抓取物体。
第 30 行:从抓取点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
第 31 行:用户可添加一个或几个中间路径点,使机器人从抓取点移动至放置点过程中无碰撞。中间路径点由位姿变量 waypoint[1] 定义。关于如何使用示教器定义位姿变量,请参见 设置示教位姿数据 。
第 32 行:机器人移动到放置点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
第 33 行:机器人直线移动到固定的放置点。
第 34 行:用户需在此处添加夹具控制逻辑以放置物体。
第 35 行:从放置点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
第 36 行:机器人移动至 Home 点。
使用 Mech-Viz 规划路径¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | .PROGRAM vision_sample_2()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Viz
;* mechmind, 2022-5-1
;**********************************************************
accuracy 1 always
speed 30 always
TOOL gripper ;set TCP
Home ;move robot home position
LMOVE 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,60)
twait 0.1
;Set vision recipe
;call mm_switch_model(1,1)
;Run Viz project
call mm_start_viz(1)
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 ,用户需要修改偏移量,保证离开过程无碰撞。
第 41 行:用户可添加一个或几个中间路径点,使机器人从抓取点移动至放置点过程中无碰撞。中间路径点由位姿变量 waypoint[1] 定义。关于如何使用示教器定义位姿变量,请参见 设置示教位姿数据 。
第 42 行:机器人移动到放置点上方 100mm 处,用户需要修改偏移量,保证接近过程无碰撞。
第 43 行:机器人直线移动到固定的放置点。
第 44 行:用户需在此处添加夹具控制逻辑以放置物体。
第 45 行:从放置点沿工具 Z 轴方向向上移动 100mm ,用户需要修改偏移量,保证离开过程无碰撞。
第 46 行:机器人移动至 Home 点。
运行样例程序¶
运行样例程序之前,需满足以下前提:
已参照 Kawasaki (川崎)标准接口程序烧录 完成机器人程序烧录,并与 Mech-Center 建立连接。
已参照 Kawasaki (川崎)标定操作流程 完成外参标定。
Mech-Vision 工程已经搭建,并为其勾选 自动加载当前工程 。
Mech-Viz 工程已搭建,并已勾选工具栏中的 。
在 Mech-Center 的部署设置中,同步 Mech-Vision 自动加载的工程列表,并调整工程顺序,最后单击 保存 。
在 Mech-Center 的部署设置中,取消勾选 仿真运行 ,最后单击 保存 。
Home 点、相机拍照点、机器人工具中心点、中间路径点已示教位姿数据。
满足上述前提后,请参见 此处 运行程序。