DENSO标准接口指令
本文介绍DENSO机器人与梅卡曼德视觉系统之间进行TCP协议通信的标准接口指令。其中,机器人(客户端)发送指令给梅卡曼德视觉系统(服务端),梅卡曼德视觉系统将处理后的数据返回给机器人。
在开始前,请注意以下事项:
-
指令的数据单位:
-
关节角的单位是度(°)。
-
机器人法兰位姿或机器人工具位姿由位置和姿态组成,位置(XYZ坐标值)单位为毫米(mm);姿态使用欧拉角表示,单位为度(°)。
-
-
视觉点或路径点:
-
视觉点:Mech-Vision识别的目标物体,一个视觉点包括物体位姿、标签、物体尺寸、自定义数据等信息。
-
路径点:机器人沿着规划路径需逐一到达的点位,一个路径点包括机器人位姿、标签、移动类型等信息。路径点可分为以下两种类型:
-
视觉移动路径点:“视觉移动”步骤对应的路径点。
-
非视觉移动路径点:除“视觉移动”步骤外,其他移动类步骤对应的路径点。
-
-
运行Mech-Vision工程
功能介绍
该指令用于触发Mech-Vision工程运行。在Mech-Vision工程运行期间,视觉系统会执行相机拍照,并对图像数据进行一系列的视觉算法处理,最终得到一系列视觉点或路径点。
|
调用顺序
-
工程中的步骤参数需要在运行Mech-Vision工程之前被设置,因此切换Mech-Vision参数配方指令需先于运行Mech-Vision工程指令被调用。
-
只有运行Mech-Vision工程后,视觉系统才得到视觉点或路径点,因此运行Mech-Vision工程指令需先于获取视觉结果指令、获取Mech-Vision规划路径指令或获取Mech-Vision自定义数据指令被调用。
指令格式
MM_Start_Vis job,pos_num_need,send_pos_type,JrNum
输入参数
job
该参数表示Mech-Vision工程编号。Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
pos_num_need
该参数表示期望从Mech-Vision工程获取的视觉点或路径点数量。取值为0或大于0的整数,具体说明如下。
若Mech-Vision工程中存在“路径规划”步骤,该参数表示预期路径点数量,否则表示预期视觉点数量。 |
-
0:从Mech-Vision工程获取所有视觉点或路径点。
-
大于0的整数:从Mech-Vision工程获取指定数量的视觉点或路径点。
-
如果Mech-Vision工程输出的视觉点或路径点总数小于指定的参数值,则获取输出的所有视觉点或路径点。
-
如果Mech-Vision工程输出的视觉点或路径点总数大于或等于指定的参数值,则获取指定数量的视觉点或路径点。
-
|
send_pos_type
该参数指定真实机器人的位姿将以何种形式传入Mech-Vision工程。取值为0、1、2或3,具体说明如下表。
send_pos_type | 说明 | 适用场景 |
---|---|---|
0 |
该指令无需向Mech-Vision工程传入机器人位姿。 |
相机的安装方式为Eye To Hand。若Mech-Vision工程中使用“路径规划”步骤,则路径规划的起始点为路径规划工具中设置的Home点。 |
1 |
该指令需要将机器人的关节角和法兰位姿传入Mech-Vision工程。 |
相机的安装方式为Eye In Hand。除桁架机器人外,大多数机器人适用该设定。 |
2 |
该指令需要将机器人的当前法兰位姿传入Mech-Vision工程。 |
相机的安装方式为Eye In Hand,机器人无关节角数据,仅有法兰位姿数据(如桁架机器人)。 |
3 |
该指令需要将用户自定义的关节角传入Mech-Vision工程。 |
相机的安装方式为Eye To Hand,并且Mech-Vision工程中存在“路径规划”步骤,且需要从机器人端设置“路径规划”步骤的起始点。 |
JrNum
该参数指定J变量的编号。该编号对应的J变量用于保存用户自定义的关节角数据。
-
若send_pos_type参数值为3,此处J变量表示的关节角数据将发送给Mech-Vision工程的“路径规划”步骤作为第一个路径点进行规划。
-
若send_pos_type参数值为3以外的其他参数值,此处J变量表示的关节角数据无实际用处,但必须设定该J变量的编号。
获取视觉结果
功能介绍
该指令用于获取Mech-Vision输出的视觉结果(一系列视觉点)。视觉点的物体位姿(即“输出”步骤的poses端口数据)将会由视觉系统自动转换为对应机器人的工具位姿,具体转换流程如下。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
调用顺序
该指令需在运行Mech-Vision工程指令之后被调用。在使用该指令后,用户需调用转存视觉结果或规划路径(位姿为工具位姿)指令才可访问位姿数据。
指令格式
MM_Get_VisData Job,IrPosNum,IrStatus
输出参数
IrPosNum
该参数指定I变量的编号。该编号对应的I变量用于保存Mech-Vision返回的视觉点数量。
IrStatus
该参数指定I变量的编号。该编号对应的I变量用于保存该指令执行的状态码。若指令执行正常,则状态码为1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
调用该指令后,视觉系统默认在10秒内未返回处理结果,则将返回超时错误状态码。在Mech-Vision工具栏的 下,可根据需求更改此默认超时时间。 |
切换Mech-Vision参数配方
调用顺序
该指令需在运行Mech-Vision工程指令之前被调用。
指令格式
MM_Set_Model Job,ModelIndex
输入参数
Job
该参数表示Mech-Vision工程编号。Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
ModelIndex
该参数表示Mech-Vision工程中参数配方的编号。如何查看参数配方的编号,可参考《查看参数配方的编号》。
获取Mech-Vision规划路径
功能介绍
该指令用于获取Mech-Vision规划的路径(一系列路径点)。此处的路径由“路径规划工具”(从下图的打开编辑器进入)规划。“路径规划”步骤相关的内容,可参考《路径规划》。
Mech-Vision“输出”步骤的端口类型参数需要设置为“预定义(机器人路径)”。 |
调用顺序
该指令需在运行Mech-Vision工程指令之后被调用。在使用该指令后,用户需调用转存视觉结果或规划路径(位姿为工具位姿)指令或转存规划路径(位姿为关节角)指令才可访问位姿数据。
指令格式
MM_Get_VisPath Job,Jps_Pos,IrPosNum,IrVisPos_Num,IrStatus
输入参数
Job
该参数表示Mech-Vision工程编号。Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
Jps_Pos
该参数用于指定获取路径点的位姿形式。取值为1或2。
-
1:关节角。在使用该指令后,用户需调用转存规划路径(位姿为关节角)指令才可访问关节角数据。
-
2:工具位姿。在使用该指令后,用户需调用转存视觉结果或规划路径(位姿为工具位姿)指令才可访问工具位姿数据。
输出参数
IrPosNum
该参数指定I变量的编号。该编号对应的I变量用于保存视觉系统返回的路径点数量。视觉系统默认单次发送路径点的最大数量为20,因此该参数默认最大值为20。 在Mech-Vision工具栏的
下,可根据需求更改默认最大数量,但最大数量的上限为30。在调用获取Mech-Vision规划路径指令前,请务必将运行Mech-Vision工程指令的pos_num_need设置为0,以减少调用获取Mech-Vision规划路径指令的次数。若运行Mech-Vision工程指令的pos_num_need设置为1,则每次调用获取Mech-Vision规划路径指令只会获取一个路径点,只有多次调用才能获取全部路径点。 |
IrVisPos_Num
该参数指定I变量的编号。该编号对应的I变量用于保存路径规划工具中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置编号。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置编号为3。
IrStatus
该参数指定I变量的编号。该编号对应的I变量用于保存该指令执行的状态码。若指令执行正常,则状态码为1103。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
调用该指令后,视觉系统默认在10秒内未返回处理结果,则将返回超时错误状态码。在Mech-Vision工具栏的 下,可根据需求更改此默认超时时间。 |
获取Mech-Vision自定义数据
功能介绍
该指令用于从Mech-Vision“输出”步骤获取自定义端口的数据。该指令调用一次便可将“输出”步骤的所有端口数据存放到机器人内存中。
自定义端口的设置可从“输出”步骤参数的打开编辑器处进入,其中自定义通信键名就是自定义端口名称,例如下图中customeData1和customeData2端口就是自定义端口。
|
调用顺序
该指令需在运行Mech-Vision工程指令之后被调用。在使用该指令后,用户需调用转存Mech-Vision自定义数据指令才可访问自定义数据。
指令格式
MM_Get_Dydata Job,IrPosNum,IrStatus
输出参数
IrPosNum
该参数指定I变量的编号。该编号对应的I变量用于保存Mech-Vision返回的视觉点数量。
IrStatus
该参数指定I变量的编号。该编号对应的I变量用于保存该指令执行的状态码。若指令执行正常,则状态码为1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
转存Mech-Vision自定义数据
调用顺序
该指令需在获取Mech-Vision自定义数据指令之后被调用。
获取吸盘DO信号
功能介绍
该指令用于获取Mech-Viz工程规划的多分区吸盘的控制信号。机器人通过设置吸盘DO信号指令将获取到的DO信号作用于末端工具。
在使用该指令前,用户需提前在Mech-Viz软件中进行如下配置。
-
配置Mech-Viz工程
-
在Mech-Viz软件中,“视觉移动”步骤的 抓取工艺 选择 箱子拆垛。
-
在Mech-Viz软件中,双击末端工具名称,工具类型选择拆垛吸盘,单击拆垛吸盘配置,根据需求配置DO信号。
-
调用顺序
-
该指令需在获取Mech-Vision规划路径指令、获取Mech-Viz规划路径指令或获取视觉移动规划数据或自定义数据指令之后被调用,即机器人先获取移动路径,再获取视觉移动路径点对应的吸盘DO信号。
-
该指令需在设置吸盘DO信号指令之前被调用。
设置吸盘DO信号
调用顺序
该指令需在获取吸盘DO信号指令之后被调用。
运行Mech-Viz工程
功能介绍
该指令用于触发Mech-Viz工程运行。Mech-Viz是基于Mech-Vision输出的视觉结果规划机器人的移动路径。
在Mech-Viz工程资源面板中,右键单击工程名称,勾选设为自动加载。 |
指令格式
MM_Start_Viz Send_Pos_Type,JrNum
输入参数
Send_Pos_Type
该参数指定真实机器人的位姿将以何种形式传入Mech-Viz工程,取值为0、1或2,具体说明如下表。
机器人位姿类型 | 说明 | 适用场景 |
---|---|---|
0 |
该指令无需向Mech-Viz工程传入机器人位姿,Mech-Viz工程中仿真机器人将从初始位姿JPs=[0,0,0,0,0,0]开始移动到第一个路径点。 |
相机的安装方式为Eye To Hand。 |
1 |
该指令需要将机器人的当前关节角和法兰位姿传入Mech-Viz工程,Mech-Viz工程中仿真机器人将从传入的关节角开始移动到第一个路径点。 |
相机的安装方式为Eye In Hand,推荐使用该设定。 |
2 |
该指令需要将机器人的一个示教点(非当前关节角,而是自定义关节角)传入Mech-Viz工程,用于在机器人处于拍照区域外时,提前触发Mech-Viz工程规划下一轮路径(如下图),Mech-Viz工程中仿真机器人将从传入的示教点开始运动到第一个路径点。 |
相机的安装方式为Eye To Hand,推荐使用该设定。 |
相机的安装方式为Eye To Hand,为何机器人位姿类型推荐使用2?
在下图中,机器人正在放置区进行作业。
若在此种场景中,将Send_Pos_Type设置为1,表示将机器人当前位姿发送给Mech-Viz,真实机器人可能在移动至其他位置后才移动至第一个路径点。仿真机器人将直接从当前位置移动至Mech-Viz工程中的第一个路径点,在这段移动过程中可能会检测到碰撞而发出警告。
若在此种场景中,将Send_Pos_Type设置为2,表示将机器人端设置的示教拍照点发送给Mech-Viz,这样真实机器人在放置区即可提前触发Mech-Viz规划下一轮路径,从而缩短节拍。
以上就是Eye To Hand模式下,机器人位姿类型推荐使用2的原因。
JrNum
该参数指定J变量的编号。该编号对应的J变量用于保存用户自定义的关节角数据。
-
若Send_Pos_Type参数值为2,此处J变量表示的关节角数据将发送给Mech-Viz工程作为第一个路径点进行规划。
-
若Send_Pos_Type参数值为2以外的其他参数值,此处J变量表示的关节角数据无实际用处,但必须设定该J变量的编号。
设置Mech-Viz消息分支出口
调用顺序
该指令需在运行Mech-Viz工程指令之后被调用。
设置Mech-Viz当前索引
调用顺序
通常在索引类步骤前存在一个“消息分支”步骤,机器人端首先调用运行Mech-Viz工程指令,然后调用设置Mech-Viz当前索引指令,最后调用设置Mech-Viz消息分支出口指令。如此,Mech-Viz将有充足时间设置当前索引值。
获取Mech-Viz规划路径
功能介绍
该指令用于获取Mech-Viz工程规划的移动路径(一系列路径点)。
路径点:机器人沿着规划路径需逐一到达的点位,一个路径点包括机器人位姿、标签、移动类型等信息。路径点可分为以下两种类型:
|
调用顺序
该指令需在运行Mech-Viz工程之后被调用。在使用该指令后,用户需调用转存视觉结果或规划路径(位姿为工具位姿)指令或转存规划路径(位姿为关节角)指令才可访问位姿数据。
指令格式
MM_Get_VizData Jps_Pos,IrPosNum,IrVisPos_Num,IrStatus
输入参数
Jps_Pos
该参数用于指定获取路径点的位姿形式。取值为1或2。
-
1:关节角。在使用该指令后,用户需调用转存规划路径(位姿为关节角)指令才可访问关节角数据。
-
2:工具位姿。在使用该指令后,用户需调用转存视觉结果或规划路径(位姿为工具位姿)指令才可访问工具位姿数据。
输出参数
IrPosNum
该参数指定I变量的编号。该编号对应的I变量用于保存视觉系统返回的路径点数量。视觉系统默认单次发送路径点的最大数量为20,因此该参数默认最大值为20。 在Mech-Vision工具栏的
下,可根据需求更改默认最大数量,但最大数量的上限为30。IrVisPos_Num
该参数指定I变量的编号。该编号对应的I变量用于保存Mech-Viz工程中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置编号。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置编号为3。
IrStatus
该参数指定I变量的编号。该编号对应的I变量用于保存该指令执行的状态码。若指令执行正常,则状态码为2100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
调用该指令后,视觉系统默认在10秒内未返回处理结果,则将返回超时错误状态码。在Mech-Vision工具栏的 下,可根据需求更改此默认超时时间。 |
获取视觉移动规划数据或自定义数据
功能介绍
该指令用于获取Mech-Viz工程的视觉移动规划数据或自定义数据。该指令调用一次便可将所有数据存放至机器人内存中。
对于Mech-Viz 2.0版本软件,该指令暂时不支持获取自定义数据,仅支持获取视觉移动规划数据。 |
-
视觉移动规划数据:Mech-Viz中“视觉移动”步骤规划的数据,包括被抓取工件的标签、已抓取的工件总数、本次抓取的工件数量、吸盘边角号、TCP偏移量、工件组朝向、单个工件朝向、工件组尺寸。
-
自定义数据:Mech-Vision自定义端口输出的数据,再经Mech-Viz转发后得到的数据。
自定义端口的设置可从“输出”步骤参数的打开编辑器处进入,其中自定义通信键名就是自定义端口名称,例如下图中customeData1和customeData2端口就是自定义端口。
-
预设通信键(下图中的poses、labels、sizes、offsets等)所代表的端口数据不属于自定义数据。
-
Mech-Vision “输出”步骤的端口类型参数需要设置为“自定义”,且必须存在poses端口。
-
调用顺序
该指令需在运行Mech-Viz工程之后被调用。
指令格式
MM_Get_Plandata Jps_Pos,IrPosNum,IrVisPos_Num,IrStatus
输入参数
Jps_Pos
该参数表示预期的返回数据格式,取值范围为1~4,具体说明如下。
Jps_Pos参数值 | 预期的返回数据说明(每个字段的具体解释参见下文;若Mech-Vision工程无自定义端口,则无自定义数据项) |
---|---|
1 |
位姿(关节角形式),移动类型,末端工具编号,速度,自定义数据项1,…,自定义数据项N |
2 |
位姿(工具位姿形式),移动类型,末端工具编号,速度,自定义数据项1,…,自定义数据项N |
3 |
位姿(关节角形式),移动类型,末端工具编号,速度,Mech-Viz视觉移动规划数据,自定义数据项1,…,自定义数据项N |
4 |
位姿(工具位姿形式),移动类型,末端工具编号,速度,Mech-Viz视觉移动规划数据,自定义数据项1,…,自定义数据项N |
位姿
路径点的位姿可以是机器人关节角(单位为度)或工具位姿(其中三维坐标单位为毫米,欧拉角单位为度)。
移动类型
机器人移动类型,取值为1或2。
-
1:关节移动。
-
2:直线移动。
末端工具编号
路径点的末端工具编号。若值为-1,表示不使用末端工具。
速度
移动类步骤参数中设置的速度参数值乘以Mech-Viz中设置的全局速度,使用百分数表示。
视觉移动规划数据
Mech-Viz中“视觉移动”步骤规划的数据,包括被抓取工件的标签、已抓取的工件总数、本次抓取的工件数量、吸盘边角号、TCP偏移量、工件组朝向、单个工件朝向、工件组尺寸。
名称 | 说明 | 维数 |
---|---|---|
被抓取工件的标签 |
由10个整数组成,默认为10个0 |
10 |
已抓取的工件总数 |
累计已抓取的工件数量 |
1 |
本次抓取的工件数量 |
本次抓取的工件数量 |
1 |
吸盘边角号 |
本次吸盘所使用的边角号 |
1 |
TCP偏移量 |
工件组中心相对于末端工具中心的XYZ偏移量 |
3 |
工件组朝向 |
工件组与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
单个工件朝向 |
单个工件长边与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
工件组尺寸 |
本次抓取的工件组的长宽高 |
3 |
自定义数据项
单个视觉点的所有自定义端口的数据。例如,“输出”步骤各端口的数据如下表所示,则机器人获取第一个视觉点的自定义数据项为 [0,0,1]与[0,0], 机器人获取第二个视觉点的自定义数据项为[1,0,0]与[1,1]。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
第一个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
第二个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
输出参数
IrPosNum
该参数指定I变量的编号。该编号对应的I变量用于保存视觉系统返回的路径点数量。
IrVisPos_Num
该参数指定I变量的编号。该编号对应的I变量用于保存Mech-Viz工程中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置编号。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置编号为3。
IrStatus
该参数指定I变量的编号。该编号对应的I变量用于保存该指令执行的状态码。若指令成功获取Mech-Vision工程的视觉移动规划数据,则状态码为1103。若指令成功获取Mech-Viz工程的视觉移动规划数据或自定义数据,则状态码为2100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
转存视觉移动规划数据或自定义数据
调用顺序
该指令需在获取视觉移动规划数据或自定义数据指令之后被调用。
指令格式
MM_Get_PlanPoseJps Serial,PJrNum,IrLabel,FrNum
输出参数
PJrNum
该参数指定P变量或J变量的编号。该编号对应的变量用于保存指定索引号对应路径点的位姿。
-
如果MM_Get_Plandata中Jps_Pos参数值为1或3,则该参数指定J变量的编号。
-
如果MM_Get_Plandata中Jps_Pos参数值为2或4,则该参数指定P变量的编号。
IrLabel
该参数指定I变量的起始编号。从该起始编号开始,将指定索引号对应路径点的移动类型、末端工具编号和速度依次存储至对应I变量。在指定该参数时,请确保从起始编号开始的连续三个变量不受其他因素影响。
FrNum
该参数指定F变量的起始编号。从该起始号码开始,将指定索引号对应路径点的视觉移动规划数据和自定义数据依次存储至对应F变量。
当路径点不是视觉移动路径点时,无需指定该参数。另外,在指定该参数时,注意变量总数量(视觉移动规划数据固定占用21个变量,自定义数据需根据具体情况计算变量个数),请确保有足够的F变量用于保存数据。
视觉移动规划数据的具体内容如下表所示。
数据 | 说明 | 占用的变量数 |
---|---|---|
被抓取工件的标签 |
由10个整数组成,默认为10个0 |
10 |
已抓取的工件总数 |
累计已抓取的工件数量 |
1 |
本次抓取的工件数量 |
本次抓取的工件数量 |
1 |
吸盘边角号 |
本次吸盘所使用的边角号 |
1 |
TCP偏移量 |
工件组中心相对于末端工具中心的XYZ偏移量 |
3 |
工件组朝向 |
工件组与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
单个工件朝向 |
单个工件长边与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
工件组尺寸 |
本次抓取的工件组的长宽高 |
3 |
标定
功能介绍
该指令用于机器人的手眼标定(外参标定)。该指令需要与Mech-Vision工具栏中的相机标定结合使用,从而实现自动标定,具体参见DENSO自动标定。
指令格式
Calibration MoveType,PosJps,WaitTime,AxisNum,AxisVal,Pr_serial
输入参数
MoveType
该参数表示机器人移动类型,取值为1或2。
-
1:直线移动。
-
2:关节移动。
PosJps
该参数用于指定标定点的位姿形式,取值为1或2。
-
1:工具位姿。
-
2:关节角。
WaitTime
该参数表示机器人移动到标定点后的等待时间(防止机器人发生抖动),单位为秒,默认为2秒。
AxisNum
该参数表示机器人轴数。
AxisVal
该参数表示外部轴数据,单位为毫米。若现场有第7轴导轨,且机器人控制导轨运动,则该参数需设置为具体外部轴数据,否则该参数需设置为0。
Pr_serial
该参数指定P变量的编号。该号码对应的P变量用于保存标定点的位姿数据。默认为4,即默认使用P[4]保存标定点的位姿数据。