Cognex康耐視相機操作使用說明書_第1頁
Cognex康耐視相機操作使用說明書_第2頁
Cognex康耐視相機操作使用說明書_第3頁
Cognex康耐視相機操作使用說明書_第4頁
Cognex康耐視相機操作使用說明書_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、上海新時達機器人有限公司康耐視相機操作使用說明書文件狀態(tài):草稿修改定稿文檔密級不保密內部機密項目名稱版本號1.0描述康耐視相機操作使用說明書編寫人余國鷹編寫日期2015/9/10審核人審核日期 康耐視相機操作使用說明書目錄一、康耐視相機具體設置31.1軟件安裝錯誤!未定義書簽。1.2流程編輯31.3Codesys通信注意事項6二、相機標定72.1相機校準72.2絕對坐標實現92.3相對坐標實現10三、示教器示例程序113.1絕對坐標實現范例113.2相對坐標實現范例11四、CODESYS邏輯開發(fā)134.1Socket通信開發(fā)134.2外部點數據處理14五、細節(jié)說明17一、 康耐視相機具體設置1

2、.1 軟件安裝雙擊康耐視相機軟件Cognex_In-Sight_Software_4.8.1,按照步驟一步步安裝即可。1.2 流程編輯1. 設置電腦本地連接IPV4地址為192.168.39.12(設置為39段即可)。2. 雙擊康耐視In-Sight瀏覽器軟件進入相機設置界面,軟件會自動搜索連接的相機設備,如下圖1.1所示。圖1.13. 雙擊相機設備(紅色橢圓內設備圖標),進入相機編輯界面,如下圖1.2所示。圖1.2 4. 在應用程序步驟中,開始、設置工具、配置結果、完成這4個步驟形成一個完整的相機操作流程;Ø 開始 單擊“開始”中“已連接”,如下圖1.3所示,可以進行連接設備、斷開

3、設備、刷新、添加等操作。圖1.3單擊“開始”中的“設置圖像”,如下圖1.4所示。在“采集/加載圖像”對話框中,“觸發(fā)器”按鈕是進行拍照,“實況視頻”按鈕是實時顯示相機中的圖像,“從PC加載圖像”按鈕是加載一張存在的圖像。圖1.4在“編輯采集設置”對話框中,設置一系列相機參數,根據具體需要進行調節(jié)Ø 設置工具 單擊“設置工具”中“定位部件”按鈕,對檢測模型進行定位,作為識別的模型進行對比;單擊“設置工具”中“檢測部件”按鈕,對模型進行編輯操作。在“定位部件”的設置對話框中,如下圖1.5所示,合格閥值:每次拍照之后的得分如果大于閥值,則拍照成功,否則失敗;旋轉公差:檢測部件能夠旋轉的角度

4、范圍,如果在范圍之類則會拍照成功,否則會失敗圖1.5Ø 配置結果 單擊“配置結果”中“通信”按鈕,進行通訊設置操作,如下圖1.6所示。新時達機器人視覺通信采用的TCP/IP通訊方式,單擊“TCP/IP”,如下圖1.7所示,在“TCP/IP設置”對話框中,“服務器主機名”設為192.168.39.220(機器人控制器IP地址),“端口”設置與CodeSys中相同,本例中設為9876,“超時時間”設為15000,“結束符”設為字符串(CR13)。單擊“格式化輸出字符串”,進行輸出操作,如下圖1.8所示。勾選“使用分隔符”,表示在輸出之間用逗號分隔符進行隔開,方便進行數據處理操作;單擊“添

5、加”按鈕,可以輸出很多數據,這里只需要輸出4個數據,“失敗”、“定位器.X”、“定位器.Y”、“定位器.角度”;輸出數據說明:均為7個字節(jié)寬度,除圖案.失敗是整形外,其它數據均為浮點型,小數點位數為2位。1) 第一位圖案.失敗:判定符,為0表示采集到特征,拍照成功;為1則拍照失敗。2) 第二位圖案.定位器.X:輸出用戶坐標系下的X方向絕對值。3) 第三位圖案.定位器.Y:輸出用戶坐標系下的Y方向絕對值。4) 第四位圖案.定位器.角度:輸出用戶坐標系下的相對角度。圖1.6圖1.7圖1.8Ø 完成 在“完成”中單擊“保存作業(yè)”,則保存當前作業(yè)任務中的所有設置;在“完成”中單擊“運行作業(yè)”

6、,則運行當前作業(yè)任務。注意,以上參數設定必須在脫機模式下才能夠設置,在聯機狀態(tài)下參數不能設置,與外界設備實時通訊必須在聯機模式下;物體旋轉一定角度拍照失敗,看檢測部件是否超過相機視野范圍和旋轉角度值設置是否合理。1.3 Codesys通信注意事項a) 說明:設定PC端的IP地址,IP地址必須192.168.39.XXX,這里設定為192.168.39.12,用網線與相機控制器相連;b) 通信流程包括:建立TCPIP的服務器端并連接,給相機發(fā)送指令,從相機接收數據;c) 圖1.7中如果把“字段分隔符”改為“停止”,則兩個數據之間就是無分隔符的直接連接;如果選擇其他,則有相應的分隔符號;d) 例:

7、采用“消零”為“有”,“字段分隔符”為“停止”的方式時,相機發(fā)送數據“-001.00”和“1010.02”時,實際上發(fā)送了“45 48 48 49 46 48 48 49 48 49 48 46 48 50 13”(13是回車符的ASIIC碼);e) 在下載工程成功時,查看通訊是否連接正常。當client_congnex任務中的step_cognex:=2和server_cognex中的step_server:=2時,此時通訊成功,否則通訊不正常,需要查看設備是否連接好和In-Sight軟件是否處于聯機狀態(tài)。f) 詳細指令及其他形式的通信可參考文檔通信設定sdnb-cn5-714d_fh_fz

8、5。二、 相機標定要實現將相機采集的數據轉換為機器人坐標系下的位姿數據,必須建立相機坐標系與機器人坐標系的對應轉換關系,該過程通過相機標定來實現。相機也分平面相機和三維相機,前者只支持平面數據采集,后者則可以獲取xyz空間值。以三維相機為例,要詳細建立相機三維空間的位置與機器人坐標系的對應關系,必須通過嚴格的手眼標定來實現。不同相機有手眼標定算法,通過示教多個點來建立手眼轉換關系。這里不詳述。如果只做平面工件抓取,那只需要工件變化的坐標值x、y以及繞z軸的轉動角度c,問題就簡單的多,只需要進行平面的簡單標定即可實現。以康耐視相機為例,格力等客戶只需要實現流水線來料的抓取操作,標定平面坐標系即可

9、,康耐視相機可以提供移動后的工件相對于移動前的偏移位置量,或者提供工件的絕對移動位置。這里,我們提供這兩種工作方式的實現過程。22.1 相機校準相機默認輸出的坐標值是相機采集到的像素值,并非實際工件位置尺寸,因此需要將物理坐標與像素值進行映射標定。設定校準后,可使測量結果像素值轉換為實際尺寸并輸出,康耐視提供了校準參數的制作過程。1.單擊“設置圖像“,界面右下角出現下圖2.1所示界面。校準類型中有很多種,根據實際需要選擇,這里選擇“網格”,然后單擊“校準”按鈕,出現下圖2.2所示界面。圖2.12.打印校準網格紙張。在圖2.2中,單擊“打印網格”按鈕,然后將打印的網格紙張放在相機視野正中間。3.

10、在“設置”界面中,“網格類型”為方格圖案(帶基準),其它值均為默認。4.單擊“姿勢”,進入姿勢設置界面,如圖2.3所示,原點位置為默認,單擊“觸發(fā)器”按鈕, 相機會自動拍照,最后單擊“校準”,校準工作就結束。5.單擊“結果”,可以查看校準情況,如圖2.4所示。圖2.2圖2.3圖2.46.建立檢測模型。單擊“定位部件”,出現如圖2.5所示界面,單擊“位置工具”中“圖案”,然后單擊“添加”,單擊“OK”,接著單擊界面右下角“模型”,拖動綠色模型矩形框,使被檢測模型處于綠色矩形框中,最后單擊界面右下角“訓練”,此時檢測模型已經建立。圖2.57.查看模型建立是否成功。在界面右側選擇板中,可以查看建立圖

11、案的情況,綠色圓點表示模型建立成功,同時會輸出檢測模型的位置、角度、得分,如圖2.6所示。圖2.6通過以上7步即可完成相機的校準過程。2.2 絕對坐標實現 絕對坐標的實現必須借助機器人的用戶坐標系,即機器人在用戶坐標系下走絕對位置運動。具體實現由以下幾個步驟組成。首先,用step機器人三點法示教出一個固定用戶坐標系。用戶坐標系的原點根據實際情況而定,一般選擇流水線上一個固定位置參考點,該參考點要方便相機進行坐標轉化標定。關于用戶坐標系的標定,可參見新時達機器人操作使用說明書;其次,進行相機坐標與實際位置坐標的標定轉換。在完成第一步中的固定用戶坐標系標定后,在該坐標系下選取工件上的三點,計算出這

12、三點在用戶坐標系的X、Y值(該步驟可通過機器人協助示教獲得在用戶坐標系下的位姿值)。在圖像輸入的“校準”模塊中,按照2.1中的步驟完成相機坐標與實際位置坐標的校準參數制作轉換;最后,機器人實現絕對位置運動。在完成第二步后,工件每偏移一點,相機均可計算出其在用戶坐標系下新的位置值X、Y和繞Z軸的theta角度值。這樣,只需要在示教器程序中設置抓取運動點參考的坐標系為用戶坐標系即可,即RefSys語句下走絕對cpe點。該cpe點是codesys里直接讀取的相機返回值。2.3 相對坐標實現相對坐標的實現就比較簡單,只需要將相機坐標轉換為實際位置坐標即可。在工件上選取三個特征點,用帶尖機器人示教出這三

13、點在機器人基坐標系下的坐標值(主要是X和Y)。按照2.1中的校準流程制作出校準參數。這樣,工件偏移后,相機可以直接計算出其新的坐標X、Y和theta。需要注意的是,使用相對坐標運動時,相機輸出數據必須是相對量,即測量坐標與基準坐標之差,而不是絕對測量坐標。具體信息見后續(xù)章節(jié)。三、 示教器示例程序33.1 絕對坐標實現范例Tool(tool0);/若帶工具,則先加載好PTP(ap0); /走到一個安全位置點Lin(cp3);/走到標準抓取位置(工件處于標準位置時機器人的抓取位姿,提前示教好)RefSys(ref1);/切到用戶坐標系下WaitTime(uint3);BOOLEXTSet(bool

14、basepos,TRUE);/端口號為2,發(fā)送信號到codesys,讀取當前位置作為標準抓取位置WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE);/關閉該端口/以上為獲得標準抓取位置需要的步驟RefSys(WORLD);PTP(ap0);LP:int0;BOOLEXTSet(boolphoto,TRUE); /發(fā)送相機拍照命令,端口號0WaitTime(uint0); /等待PLC處理時間,建議在300ms以上bool0:=BOOLEXTRead(boolenableget); /讀取抓取標志位,為TRUE則能抓取BOOLEXTSet(boolphot

15、o,FALSE); /關閉該端口,保證下次為高電平觸發(fā)IF(bool0=0)THEN /為true則可抓取,否則重新發(fā)送拍照命令WaitTime(uint1);GOTO(int0);END_IFRefSys(ref1); /切到用戶坐標系下Lin(rcpe0); /走到codesys里輸出的絕對位置(外部點形式,端口號0)BOOLEXTSet(boolfinishget,TRUE); /發(fā)送抓取完成標志WaitTime(uint2);BOOLEXTSet(boolfinishget,FALSE); /關閉抓取完成標志PTP(ap1);GOTO(int1); /回到循環(huán)開始,等待下一個工件3.2

16、 相對坐標實現范例Tool(tool0);/若帶工具,則先加載好PTP(ap0); /走到一個安全位置點Lin(cp3);/走到標準抓取位置(工件處于標準位置時機器人的抓取位姿,提前示教好)WaitTime(uint3);BOOLEXTSet(boolbasepos,TRUE);/端口號為2,讀取當前位置作為標準抓取位置WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE);/關閉該端口/以上為獲得標準抓取位置需要的步驟PTP(ap0);/回到安全點LP:int0;BOOLEXTSet(boolphoto,TRUE); /發(fā)送相機拍照命令,端口號0WaitT

17、ime(uint0); /等待PLC處理時間,建議在300ms以上bool0:=BOOLEXTRead(boolenableget); /讀取抓取標志位,為TRUE則能抓取BOOLEXTSet(boolphoto,FALSE); /關閉該端口,保證下次為高電平觸發(fā)IF(bool0=0)THEN /為true則可抓取,否則重新發(fā)送拍照命令WaitTime(uint1);GOTO(int0);END_IFLin(rcpe1); /走到codesys里輸出的絕對位置(外部點形式,該位置是機器人當前位置加上相對偏移,端口號1)BOOLEXTSet(boolfinishget,TRUE); /發(fā)送抓取完

18、成標志WaitTime(uint2);BOOLEXTSet(boolfinishget,FALSE); /關閉抓取完成標志PTP(ap1);GOTO(int1); /回到循環(huán)開始,等待下一個工件四、 Codesys邏輯開發(fā)44.1 Socket通信開發(fā)首先,要在codesys上完成socket通訊開發(fā)。通訊開發(fā)的要點包括協議類型、協議數據、數據收發(fā)、邏輯判斷等。一般的相機都是支持TCP/IP協議的,我們也多是采用該協議完成step控制器與各類相機的通訊連接及數據交互的。一般來說,機器人控制器作為主機server(服務器),相機處理器作為從機client(客戶端)。控制器作為主機的好處在于,控制

19、器“知道”自己什么時候需要拍照、需要數據,此時給相機發(fā)送命令即可。相機作為客戶端始終處于監(jiān)聽狀態(tài)。主機控制器的IP地址為192.168.39.220,端口號任意,如取為9876,用網線與相機控制器相連,在完成相機與控制器的通信數據格式設定后,接下來就是codesys端編程實現。通信示例說明:CASE step OF0:SAddr.sAddr := '192.168.39.120'/服務器地址server(xEnable:=TRUE,ipAddr:=SAddr,uiPort:=9876);/建立服務器IF(server.xBusy = TRUE) THENconnect(xEna

20、ble:=server.xBusy,hServer:=server.hServer);/連接IF(connect.xActive = TRUE) THEN/連接成功step := 1;/執(zhí)行接收數據END_IFIF(connect.xError = TRUE)THEN/連接報錯step := 3;/復位END_IFEND_IFIF(server.xError = TRUE)THENstep := 3;END_IF/從相機傳過來的數據以ASCII碼的形式存儲到recvokcr數組,數組的第一位存儲的是串行數據輸出中設定的首位/例如設定的整數位為1,小數位為1,當相機發(fā)送一個1.0時,用BYTE型

21、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_IFIF recv.xError THEN/接收數據報錯step:=3;E

22、ND_IF/以ASCII碼的形式從senddata數組傳給相機,給相機發(fā)送“M回車(CR)”命令可以采集一張圖片2:size2 := SIZEOF(senddata);/數組長度senddata0:=16#4D;/M的ASCII碼,16進制表示,是單次測量的指令。senddata1:=16#0D;/回車(CR)的ASCII碼,16進制表示(歐姆龍相機用MCR來發(fā)送數據)psend := ADR(senddata);/指令地址send(xExecute:=TRUE,hConnection:=connect.hConnection,szSize:=size2,pData:=psend,udiTim

23、eOut:=1000000);IF(send.xDone = TRUE) THEN/發(fā)送成功send(xExecute:=FALSE);/函數復位step := 1;END_IFIF(send.xError = TRUE) THEN/發(fā)送報錯send(xExecute:=FALSE);step := 3;END_IF5:/數據處理程序.3: /復位后返回connect(xEnable:=FALSE);server(xEnable:=FALSE);recv(xEnable:=FALSE,hConnection:=connect.hConnection,szSize:=size,pData:=pr

24、ecv);step := 99;99:step:=0;END_CASE注意,多數socket函數都是上升沿執(zhí)行,所以在調用后,應在合適的地方將其關閉(給下降沿),這樣下一周期執(zhí)行時才會繼續(xù)生效。否則可能造成函數執(zhí)行無效,程序死循環(huán)卡死在某一步、或者報錯處理。4.2 外部點數據處理在步驟1.1通過socket實現控制器與相機的通信連接及數據收發(fā)處理后,本步驟主要完成與HMI的命令收發(fā)處理以及外部cpe點位置計算與返回。完整流程邏輯如下:/獲取示教器輸入GetHMIBOOL(Enable := TRUE,PortNumber := 0,Data => ReqGet); /獲取拍照命令GetH

25、MIBOOL(Enable := TRUE,PortNumber := 1,Data => FinishGet); /獲取完成抓取命令GetHMIBOOL(Enable := TRUE,PortNumber := 2,Data => BasePosGet); /獲取標準抓取位置命令/(*獲取標準抓取位置(當前通過IO語句發(fā)送命令實現,端口號為2)*)IF (BasePosGet = TRUE AND (BasePosCount = 0) THENBasePosCount := 1;ReadRefSys(Enable := TRUE,RefSys => RefSys_qz);/

26、注意,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_IFIF BasePosGet = FALSE THENBasePosCount := 0;END_IF/(*請求相機數據并計算抓取外部點與通訊

27、部分分開使用,通過標志符確定是否獲取數據成功*)rtrig(CLK :=TakePhoPLC);IF rtrig.Q = TRUE THENTakePhoPLC := 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 :

28、= 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_Car

29、tpos2Homomatrix_1.Ref_Homomatrix;FB_MulHomomatrix_0(homomatrix_1 := basecamera_homomatrix, homomatrix_2 := baseTCP_homomatrix);T0TCP := FB_MulHomomatrix_0.homomatrix_out;(* change to xyzabc*)FB_Homomatrix2Cartpos_0(Ref_Homomatrix := T0TCP, SR_RefSys_0 => SR_test);FB_Homomatrix2Cartpos_0(Ref_Homom

30、atrix := 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;/絕對坐標輸出,端口號0EXTPos.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);/相對坐標輸出,端口號1EXTPos_1.x:=BasePos.x + server.Pos_x;EXTPos_1.y:=BasePos.y + server.Pos_y;EXTPos_1.z:=BaseP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論