Cognex康耐视相机操作使用说明指导书_第1页
Cognex康耐视相机操作使用说明指导书_第2页
Cognex康耐视相机操作使用说明指导书_第3页
Cognex康耐视相机操作使用说明指导书_第4页
Cognex康耐视相机操作使用说明指导书_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

康耐视相机操作使用说明书文件状态:■初稿□修改□定稿文档密级□不保密■内部□机密项目名称版本号1.0描述康耐视相机操作使用说明书编写人余国鹰编写日期/9/10审核人审核日期

目录一、 康耐视相机具体设置 31.1 软件安装 错误!未定义书签。1.2 步骤编辑 31.3 Codesys通信注意事项 6二、 相机标定 72.1 相机校准 72.2 绝对坐标实现 92.3 相对坐标实现 10三、 示教器示例程序 113.1 绝对坐标实现范例 113.2 相对坐标实现范例 11四、 Codesys逻辑开发 134.1 Socket通信开发 134.2 外部点数据处理 14五、 细节说明 17

康耐视相机具体设置软件安装双击康耐视相机软件Cognex_In-Sight_Software_4.8.1,根据步骤一步步安装即可。步骤编辑1.设置电脑当地连接IPV4地址为192.168.39.12(设置为39段即可)。2.双击康耐视In-Sight浏览器软件进入相机设置界面,软件会自动搜索连接相机设备,以下图1.1所表示。图1.13.双击相机设备(红色椭圆内设备图标),进入相机编辑界面,以下图1.2所表示。图1.24.在应用程序步骤中,开始、设置工具、配置结果、完成这4个步骤形成一个完整相机操作步骤;开始单击“开始”中“已连接”,以下图1.3所表示,能够进行连接设备、断开设备、刷新、添加等操作。图1.3单击“开始”中“设置图像”,以下图1.4所表示。在“采集/加载图像”对话框中,“触发器”按钮是进行拍照,“实况视频”按钮是实时显示相机中图像,“从PC加载图像”按钮是加载一张存在图像。图1.4在“编辑采集设置”对话框中,设置一系列相机参数,依据具体需要进行调整设置工具单击“设置工具”中“定位部件”按钮,对检测模型进行定位,作为识别模型进行对比;单击“设置工具”中“检测部件”按钮,对模型进行编辑操作。在“定位部件”设置对话框中,以下图1.5所表示,合格阀值:每次拍照以后得分假如大于阀值,则拍照成功,不然失败;旋转公差:检测部件能够旋转角度范围,假如在范围之类则会拍照成功,不然会失败图1.5配置结果单击“配置结果”中“通信”按钮,进行通讯设置操作,以下图1.6所表示。新时达机器人视觉通信采取TCP/IP通讯方法,单击“TCP/IP”,以下图1.7所表示,在“TCP/IP设置”对话框中,“服务器主机名”设为192.168.39.220(机器人控制器IP地址),“端口”设置和CodeSys中相同,本例中设为9876,“超时时间”设为15000,“结束符”设为字符串(CR13)。单击“格式化输出字符串”,进行输出操作,以下图1.8所表示。勾选“使用分隔符”,表示在输出之间用逗号分隔符进行隔开,方便进行数据处理操作;单击“添加”按钮,能够输出很多数据,这里只需要输出4个数据,“失败”、“定位器.X”、“定位器.Y”、“定位器.角度”;输出数听说明:均为7个字节宽度,除图案.失败是整形外,其它数据均为浮点型,小数点位数为2位。第一位图案.失败:判定符,为0表示采集到特征,拍照成功;为1则拍照失败。第二位图案.定位器.X:输出用户坐标系下X方向绝对值。第三位图案.定位器.Y:输出用户坐标系下Y方向绝对值。4)第四位图案.定位器.角度:输出用户坐标系下相对角度。图1.6图1.7图1.8完成在“完成”中单击“保留作业”,则保留目前作业任务中全部设置;在“完成”中单击“运行作业”,则运行目前作业任务。注意,以上参数设定必需在脱机模式下才能够设置,在联机状态下参数不能设置,和外界设备实时通讯必需在联机模式下;物体旋转一定角度拍照失败,看检测部件是否超出相机视野范围和旋转角度值设置是否合理。Codesys通信注意事项说明:设定PC端IP地址,IP地址必需192.168.39.XXX,这里设定为192.168.39.12,用网线和相机控制器相连;通信步骤包含:建立TCPIP服务器端并连接,给相机发送指令,从相机接收数据;图1.7中假如把“字段分隔符”改为“停止”,则两个数据之间就是无分隔符直接连接;假如选择其它,则有对应分隔符号;例:采取“消零”为“有”,“字段分隔符”为“停止”方法时,相机发送数据“-001.00”和“1010.02”时,实际上发送了“454848494648484948494846485013”(13是回车符ASIIC码);在下载工程成功时,查看通讯是否连接正常。当client_congnex任务中step_cognex:=2和server_cognex中step_server:=2时,此时通讯成功,不然通讯不正常,需要查看设备是否连接好和In-Sight软件是否处于联机状态。具体指令及其它形式通信可参考文档《通信设定sdnb-cn5-714d_fh_fz5》。相机标定要实现将相机采集数据转换为机器人坐标系下位姿数据,必需建立相机坐标系和机器人坐标系对应转换关系,该过程经过相机标定来实现。相机也分平面相机和三维相机,前者只支持平面数据采集,后者则能够获取xyz空间值。以三维相机为例,要具体建立相机三维空间位置和机器人坐标系对应关系,必需经过严格手眼标定来实现。不一样相机有手眼标定算法,经过示教多个点来建立手眼转换关系。这里不详述。假如只做平面工件抓取,那只需要工件改变坐标值x、y和绕z轴转动角度c,问题就简单多,只需要进行平面简单标定即可实现。以康耐视相机为例,格力等用户只需要实现流水线来料抓取操作,标定平面坐标系即可,康耐视相机能够提供移动后工件相对于移动前偏移位置量,或提供工件绝对移动位置。这里,我们提供这两种工作方法实现过程。相机校准相机默认输出坐标值是相机采集到像素值,并非实际工件位置尺寸,所以需要将物理坐标和像素值进行映射标定。设定校准后,可使测量结果像素值转换为实际尺寸并输出,康耐视提供了校准参数制作过程。1.单击“设置图像“,界面右下角出现下图2.1所表示界面。校准类型中有很多个,依据实际需要选择,这里选择“网格”,然后单击“校准”按钮,出现下图2.2所表示界面。图2.12.打印校准网格纸张。在图2.2中,单击“打印网格”按钮,然后将打印网格纸张放在相机视野正中间。3.在“设置”界面中,“网格类型”为方格图案(带基准),其它值均为默认。4.单击“姿势”,进入姿势设置界面,图2.3所表示,原点位置为默认,单击“触发器”按钮,相机会自动拍照,最终单击“校准”,校准工作就结束。5.单击“结果”,能够查看校准情况,图2.4所表示。图2.2图2.3图2.46.建立检测模型。单击“定位部件”,出现图2.5所表示界面,单击“位置工具”中“图案”,然后单击“添加”,单击“OK”,接着单击界面右下角“模型”,拖动绿色模型矩形框,使被检测模型处于绿色矩形框中,最终单击界面右下角“训练”,此时检测模型已经建立。图2.57.查看模型建立是否成功。在界面右侧选择板中,能够查看建立图案情况,绿色圆点表示模型建立成功,同时会输出检测模型位置、角度、得分,图2.6所表示。图2.6 经过以上7步即可完成相机校准过程。绝对坐标实现 绝对坐标实现必需借助机器人用户坐标系,即机器人在用户坐标系下走绝对位置运动。具体实现由以下多个步骤组成。首先,用step机器人三点法示教出一个固定用户坐标系。用户坐标系原点依据实际情况而定,通常选择流水线上一个固定位置参考点,该参考点要方便相机进行坐标转化标定。相关用户坐标系标定,可参见新时达机器人操作使用说明书;其次,进行相机坐标和实际位置坐标标定转换。在完成第一步中固定用户坐标系标定后,在该坐标系下选择工件上三点,计算出这三点在用户坐标系X、Y值(该步骤可经过机器人帮助示教取得在用户坐标系下位姿值)。在图像输入“校准”模块中,根据2.1中步骤完成相机坐标和实际位置坐标校准参数制作转换;最终,机器人实现绝对位置运动。在完成第二步后,工件每偏移一点,相机均可计算出其在用户坐标系下新位置值X、Y和绕Z轴theta角度值。这么,只需要在示教器程序中设置抓取运动点参考坐标系为用户坐标系即可,即RefSys语句下走绝对cpe点。该cpe点是codesys里直接读取相机返回值。相对坐标实现 相对坐标实现就比较简单,只需要将相机坐标转换为实际位置坐标即可。在工件上选择三个特征点,用带尖机器人示教出这三点在机器人基坐标系下坐标值(关键是X和Y)。根据2.1中校准步骤制作出校准参数。这么,工件偏移后,相机能够直接计算出其新坐标X、Y和theta。 需要注意是,使用相对坐标运动时,相机输出数据必需是相对量,即测量坐标和基准坐标之差,而不是绝对测量坐标。具体信息见后续章节。

示教器示例程序绝对坐标实现范例Tool(tool0);//若带工具,则先加载好PTP(ap0);//走到一个安全位置点Lin(cp3);//走到标准抓取位置(工件处于标准位置时机器人抓取位姿,提前示教好)RefSys(ref1);//切到用户坐标系下WaitTime(uint3);BOOLEXTSet(boolbasepos,TRUE);//端口号为2,发送信号到codesys,读取目前位置作为标准抓取位置WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE);//关闭该端口/////以上为取得标准抓取位置需要步骤RefSys(WORLD);PTP(ap0);LP:int0;BOOLEXTSet(boolphoto,TRUE);//发送相机拍照命令,端口号0WaitTime(uint0);//等候PLC处理时间,提议在300ms以上bool0:=BOOLEXTRead(boolenableget);//读取抓取标志位,为TRUE则能抓取BOOLEXTSet(boolphoto,FALSE);//关闭该端口,确保下次为高电平触发IF(bool0=0)THEN//为true则可抓取,不然重新发送拍照命令WaitTime(uint1);GOTO(int0);END_IFRefSys(ref1);//切到用户坐标系下Lin(rcpe0);//走到codesys里输出绝对位置(外部点形式,端口号0)BOOLEXTSet(boolfinishget,TRUE);//发送抓取完成标志WaitTime(uint2);BOOLEXTSet(boolfinishget,FALSE);//关闭抓取完成标志PTP(ap1);GOTO(int1);//回到循环开始,等候下一个工件相对坐标实现范例Tool(tool0);//若带工具,则先加载好PTP(ap0);//走到一个安全位置点Lin(cp3);//走到标准抓取位置(工件处于标准位置时机器人抓取位姿,提前示教好)WaitTime(uint3);BOOLEXTSet(boolbasepos,TRUE);//端口号为2,读取目前位置作为标准抓取位置WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE);//关闭该端口/////以上为取得标准抓取位置需要步骤PTP(ap0);//回到安全点LP:int0;BOOLEXTSet(boolphoto,TRUE);//发送相机拍照命令,端口号0WaitTime(uint0);//等候PLC处理时间,提议在300ms以上bool0:=BOOLEXTRead(boolenableget);//读取抓取标志位,为TRUE则能抓取BOOLEXTSet(boolphoto,FALSE);//关闭该端口,确保下次为高电平触发IF(bool0=0)THEN//为true则可抓取,不然重新发送拍照命令WaitTime(uint1);GOTO(int0);END_IFLin(rcpe1);//走到codesys里输出绝对位置(外部点形式,该位置是机器人目前位置加上相对偏移,端口号1)BOOLEXTSet(boolfinishget,TRUE);//发送抓取完成标志WaitTime(uint2);BOOLEXTSet(boolfinishget,FALSE);//关闭抓取完成标志PTP(ap1);GOTO(int1);//回到循环开始,等候下一个工件

Codesys逻辑开发Socket通信开发首先,要在codesys上完成socket通讯开发。通讯开发关键点包含协议类型、协议数据、数据收发、逻辑判定等。通常相机全部是支持TCP/IP协议,我们也多是采取该协议完成step控制器和各类相机通讯连接及数据交互。通常来说,机器人控制器作为主机server(服务器),相机处理器作为从机client(用户端)。控制器作为主机好处于于,控制器“知道”自己什么时候需要拍照、需要数据,此时给相机发送命令即可。相机作为用户端一直处于监听状态。主机控制器IP地址为192.168.39.220,端口号任意,如取为9876,用网线和相机控制器相连,在完成相机和控制器通信数据格式设定后,接下来就是codesys端编程实现。通信示例说明:CASEstepOF0: SAddr.sAddr:='192.168.39.120';//服务器地址 server(xEnable:=TRUE,ipAddr:=SAddr,uiPort:=9876);//建立服务器 IF(server.xBusy=TRUE)THEN connect(xEnable:=server.xBusy,hServer:=server.hServer);//连接 IF(connect.xActive=TRUE)THEN//连接成功 step:=1;//实施接收数据 END_IF IF(connect.xError=TRUE)THEN//连接报错 step:=3;//复位 END_IF END_IF IF(server.xError=TRUE)THEN step:=3; END_IF///////////////////////从相机传过来数据以ASCII码形式存放到recvokcr数组,数组第一位存放是串行数据输出中设定首位///////////////////////比如设定整数位为1,小数位为1,当相机发送一个1.0时,用BYTE型recvokcr数组“1.0回车(CR)”对应ASCII码“49“,”62“,”48“,”13“ 1: size1:=SIZEOF(recvokcr);//数组长度 precv:=ADR(recvokcr);//数组地址recv(xEnable:=TRUE,hConnection:=connect.hConnection,szSize:=size1,pData:=precv);//接收数据 IF(recv.szCount>7)THEN//判定是否收到数据输出,这里数字应小于数据总长度 step:=5;//数据处理 END_IF IFrecv.xErrorTHEN//接收数据报错 step:=3; END_IF///////////////////////以ASCII码形式从senddata数组传给相机,给相机发送“M回车(CR)”命令能够采集一张图片 2: size2:=SIZEOF(senddata);//数组长度 senddata[0]:=16#4D;//MASCII码,16进制表示,是单次测量指令。 senddata[1]:=16#0D;//回车(CR)ASCII码,16进制表示(欧姆龙相机用MCR来发送数据) psend:=ADR(senddata);//指令地址send(xExecute:=TRUE,hConnection:=connect.hConnection,szSize:=size2,pData:=psend,udiTimeOut:=1000000); IF(send.xDone=TRUE)THEN//发送成功 send(xExecute:=FALSE);//函数复位 step:=1; END_IF IF(send.xError=TRUE)THEN//发送报错 send(xExecute:=FALSE); step:=3; END_IF 5://数据处理程序………..3://复位后返回 connect(xEnable:=FALSE); server(xEnable:=FALSE); recv(xEnable:=FALSE,hConnection:=connect.hConnection,szSize:=size,pData:=precv); step:=99;99: step:=0;END_CASE 注意,多数socket函数全部是上升沿实施,所以在调用后,应在适宜地方将其关闭(给下降沿),这么下一周期实施时才会继续生效。不然可能造成函数实施无效,程序死循环卡死在某一步、或报错处理。外部点数据处理在步骤1.1经过socket实现控制器和相机通信连接及数据收发处理后,本步骤关键完成和HMI命令收发处理和外部cpe点位置计算和返回。完整步骤逻辑以下://获取示教器输入GetHMIBOOL(Enable:=TRUE,PortNumber:=0,Data=>ReqGet); //获取拍照命令GetHMIBOOL(Enable:=TRUE,PortNumber:=1,Data=>FinishGet); //获取完成抓取命令GetHMIBOOL(Enable:=TRUE,PortNumber:=2,Data=>BasePosGet);//获取标准抓取位置命令//(**获取标准抓取位置(目前经过IO语句发送命令实现,端口号为2)***)IF(BasePosGet=TRUEAND(BasePosCount=0))THEN BasePosCount:=1; ReadRefSys(Enable:=TRUE,RefSys=>RefSys_qz); //注意,ReadRefSys读出来目前坐标系ABC为弧度,需要转换为角度 RefSys_qz.a:=RefSys_qz.a*R2D; RefSys_qz.b:=RefSys_qz.b*R2D; RefSys_qz.c:=RefSys_qz.c*R2D; ReadTCPData(Enable:=TRUE,RefSys:=RefSys_qz,CartPos=>BasePos);//注意,目前读取用户坐标系下位置值END_IFIFBasePosGet=FALSETHEN BasePosCount:=0;END_IF//(**请求相机数据并计算抓取外部点{和通讯部分分开使用,经过标志符确定是否获取数据成功}***)rtrig(CLK:=TakePhoPLC);IFrtrig.Q=TRUETHEN TakePhoPLC:=FALSE; //baseTCP为标准抓取位置 baseTCP.x:=BasePos.x; baseTCP.y:=BasePos.y; baseTCP.z:=BasePos.z; baseTCP.a:=BasePos.a*D2R; baseTCP.b:=BasePos.b*D2R; baseTCP.c:=BasePos.c*D2R; //Tpos为相机输出数据 Tpos.x:=server.Pos_x; Tpos.y:=server.Pos_y; Tpos.z:=0; Tpos.a:=0; Tpos.b:=0; Tpos.c:=server.Pos_c*D2R; //以下过程为坐标变换,将相机坐标系下角度theta转换到用户坐标系下 FB_Cartpos2Homomatrix_0(SR_RefSys_0:=baseTCP); baseTCP_homomatrix:=FB_Cartpos2Homomatrix_0.Ref_Homomatrix; FB_Cartpos2Homomatrix_1(SR_RefSys_0:=Tpos); basecamera_homomatrix:=FB_Cartpos2Homomatrix_1.Ref_Homomatrix; FB_MulHomomatrix_0(homomatrix_1:=basecamera_homomatrix,homomatrix_2:=baseTCP_homomatrix); T0TCP:=FB_MulHomomatrix_0.homomatrix_out; (*changetoxyzabc*) FB_Homomatrix2Cartpos_0(Ref_Homomatrix:=T0TCP,SR_RefSys_0=>SR_test); FB_Homomatrix2Cartpos_0(Ref_Homomatrix:=T0TCP,SR_RefSys_0=>SR_RefSys_0); SR_RefSys_0.a:=SR_RefSys_0.a*R2D; SR_RefSys_0.b:=SR_RefSys_0.b*R2D; SR_RefSys_0.c:=SR_RefSys_0.c*R2D; //绝对坐标输出,端口号0 EXTPos.x:=server.Pos_x;//x和y值用相机输出数据 EXTPos.y:=server.Pos_y; EXTPos.z:=BasePos.z;//z、a、b用标准抓取位置值 EXTPos.a:=BasePos.a; EXTPos.b:=BasePos.b; EXTPos.c:=SR_RefSys_0.c; //theta用转换过角度 SetCartPos(Enable:=TRUE,PortNumber:=0,RobotCartPos:=EXTPos); //相对坐标输出,端口号1 EXTPos_1.x:=BasePos.x+server.Pos_x; EXTPos_1.y:=BasePos.y+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论