0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C#之Delta并聯(lián)機(jī)械手的視覺(jué)相機(jī)標(biāo)定與形狀匹配

正運(yùn)動(dòng)技術(shù) ? 來(lái)源:正運(yùn)動(dòng)技術(shù) ? 作者:正運(yùn)動(dòng)技術(shù) ? 2024-06-26 15:11 ? 次閱讀

本文導(dǎo)讀

上節(jié)課程我們講述了如何建立Delta并聯(lián)機(jī)械手正逆解,本節(jié)課程我們主要講解如何通過(guò)C#語(yǔ)言開(kāi)發(fā)正運(yùn)動(dòng)Delta并聯(lián)機(jī)械手視覺(jué)流水線同步分揀的視覺(jué)部分。

VPLC711硬件介紹

VPLC711是正運(yùn)動(dòng)推出的一款基于x86平臺(tái)和Windows操作系統(tǒng)的高性能機(jī)器視覺(jué)EtherCAT運(yùn)動(dòng)控制器,具備強(qiáng)大的運(yùn)算能力和靈活性。它具有出色的實(shí)時(shí)性能和多路高速硬件輸入與多路高速PSO輸出,能夠精準(zhǔn)控制多軸同步運(yùn)動(dòng),并與外部設(shè)備實(shí)現(xiàn)多協(xié)議的高速通信。

wKgZomZ7vT-AQUGfAATEZEEcnQY989.png

VPLC711支持多種硬件接口和通信協(xié)議,方便與其他設(shè)備的連接和集成。除此之外,VPLC711還具備視覺(jué)處理功能,能夠?qū)崟r(shí)處理圖像數(shù)據(jù),實(shí)現(xiàn)視覺(jué)檢測(cè)、測(cè)量和定位等應(yīng)用。

wKgaomSuBgKAfwvPAAP2e_t0m3I135.png

VPLC711內(nèi)置Windows運(yùn)動(dòng)控制實(shí)時(shí)內(nèi)核MotionRT7,形成一種開(kāi)放式IPC形態(tài)實(shí)時(shí)軟控制器/軟PLC,為用戶(hù)提供靈活集成的運(yùn)動(dòng)控制+視覺(jué)一體化解決方案。

wKgaomZ7vU2AfKbMAAGN_SO6-4Q279.png

VPLC711硬件參數(shù)

1.采用x86高性能CPU,EtherCAT可支持1ms 64軸同步運(yùn)行;

2.板載RS232,RS485EtherNet*5,EtherCAT,USB3.0*4硬件接口;

3.板載20DI,其中4個(gè)高速色標(biāo)鎖存,2組高速單端編碼器;

4.板載20DO,其中4個(gè)高速單端脈沖軸,4組高速PWM;

5.支持DVI-D,HDMI顯示,支持雙網(wǎng)口不同IP設(shè)置。

想要了解更多關(guān)于VPLC711的詳情介紹,可以點(diǎn)擊“x86平臺(tái)實(shí)時(shí)Windows機(jī)器視覺(jué)EtherCAT運(yùn)動(dòng)控制器VPLC711”查看。

一、C#語(yǔ)言進(jìn)行Delta并聯(lián)機(jī)械手的開(kāi)發(fā)之運(yùn)動(dòng)庫(kù)和視覺(jué)庫(kù)的添加

1.在VS2010菜單“文件”→“新建”→“項(xiàng)目”,啟動(dòng)創(chuàng)建項(xiàng)目向?qū)А?/p>

wKgZomZ7vX2AJ3R_AABq6AhfRSo071.png

2.選擇開(kāi)發(fā)語(yǔ)言為“Visual C#”和.NET Framework 4以及Windows窗體應(yīng)用程序。

wKgaomZ7vYGAV_xXAAFwzZf56Bw151.png

3.找到廠家提供的光盤(pán)資料里面的C#函數(shù)庫(kù),路徑如下(32位庫(kù)為例)。

1)進(jìn)入廠商提供的光盤(pán)資料找到“04PC函數(shù)”文件夾,并點(diǎn)擊進(jìn)入。

wKgaomZ7vYaAaXB0AAHXfDSiyik568.png

2)選擇“函數(shù)庫(kù)2.1”文件夾。

wKgaomZ7vYmAHa9bAAGbBrVuQZ8047.png

3)選擇“Windows平臺(tái)”文件夾。

wKgZomZ7vYyAd9-lAAEuaVsobUk562.png

4)根據(jù)需要選擇對(duì)應(yīng)的函數(shù)庫(kù),這里選擇32位庫(kù)。

wKgaomZ7vZGAU8-OAAEZuUmX8mk399.png

5)解壓C#壓縮包,里面有C#對(duì)應(yīng)的函數(shù)庫(kù)。

wKgZomZ7vZaAJOYOAAGiJAn1QZI072.png

6)函數(shù)庫(kù)具體路徑如下。

wKgZomZ7vZqAYOQOAAGoEa8S6tE832.png

4.將廠商提供的C#庫(kù)文件以及相關(guān)文件復(fù)制到新建的項(xiàng)目中(注意這里面的PC函數(shù)庫(kù)默認(rèn)提供的是運(yùn)動(dòng)庫(kù),如果使用視覺(jué)功能還需要獲取視覺(jué)庫(kù),視覺(jué)庫(kù)可以找廠商的相關(guān)銷(xiāo)售或技術(shù)人員獲?。?。

1)將Zmcaux.cs(運(yùn)動(dòng)庫(kù))和Zvision.cs(視覺(jué)庫(kù))文件復(fù)制到新建的項(xiàng)目里面中。

wKgaomZ7vZ6ANJo5AACGKDpmeyo890.png

2)將zauxdll.dll、zmotion.dll和zvision.dll文件放入bindebug文件夾中。

wKgaomZ7vaGAL_VAAABeNxxojLY082.png

5.用vs打開(kāi)新建的項(xiàng)目文件,在右邊的解決方案資源管理器中點(diǎn)擊顯示所有文件,然后鼠標(biāo)右擊Zmcaux.cs與 Zvision.cs文件,點(diǎn)擊包括在項(xiàng)目中。

wKgZomZ7vaSAYKQmAAC_x1ZsREI927.png

6.雙擊Form1.cs里面的Form1,出現(xiàn)代碼編輯界面,在文件開(kāi)頭寫(xiě)入using cszmcaux,using ZVision并聲明控制器句柄g_handle。

wKgZomZ7vaeAQDs-AADXCWgRD38104.png

二、PC函數(shù)介紹

1.PC函數(shù)手冊(cè)可在光盤(pán)資料查看,具體路徑如下。

wKgaomZ7vauALGXwAAA3tGTqa2A191.png

2.鏈接控制器,獲取鏈接句柄。

wKgaomZ7vb6AMzGcAABJI0ppMUc280.png

3.相機(jī)掃描接口說(shuō)明。

wKgaomZ7vcOAFg-mAABFkJmfakA234.png

4.相機(jī)采集圖像。

wKgaomZ7vcmADwSUAAAsnXs9UMA120.png

5.用圖像創(chuàng)建模板。

wKgaomZ7vc6Aa_ZYAAEynPmv1w0189.png

6.形狀匹配并輸出輪廓狀態(tài)。

wKgaomZ7vdWADdYEAAChIL5UbSs068.png

三、C#例程建設(shè)之視覺(jué)相機(jī)標(biāo)定與形狀匹配

1.視覺(jué)配置文件的下載

因?yàn)檎\(yùn)動(dòng)的視覺(jué)算法是在控制器里面執(zhí)行的,所以上位機(jī)開(kāi)發(fā)前需要先在控制器里面定義好視覺(jué)處理的相關(guān)變量。正運(yùn)動(dòng)控制器里面的視覺(jué)變量統(tǒng)一使用ZVOBJECT來(lái)修飾,我們可以新建一個(gè).bas的文件,然后輸入“GLOBAL ZVOBJECT ZVOBJ(1000)”進(jìn)行視覺(jué)變量數(shù)組的定義,保存后通過(guò)上位機(jī)接口在上位機(jī)系統(tǒng)初始化的時(shí)候把這個(gè).bas文件下載到控制器即可。

wKgaomZ7veaAdyUCAAClzwJ3APk042.png

//下載相關(guān)腳本到控制器,進(jìn)行視覺(jué)變量的定義
string BasPath = "";
BasPath = string.Format(@"{0}", Application.StartupPath) + @"Icon視覺(jué)變量定義.bas";
//.bas文件下載到控制器
zmcaux.ZAux_BasDown(g_Handle,BasPath,0);

2.相機(jī)標(biāo)定

wKgaomZ7veuAWd4SAADCEbhze9w398.png

1)相機(jī)標(biāo)定操作步驟

wKgZomZ7ve-AWYApAAFJ37rEF1k733.png

2)相關(guān)功能代碼

/************************************************************************************
'任務(wù)編號(hào):無(wú)
'函數(shù)功能:視覺(jué)提取標(biāo)定板上實(shí)心圓的像素坐標(biāo),獲取標(biāo)定板圓心的像素坐標(biāo)的矩陣
'Input:無(wú)
'Output:無(wú) 
'返回值:無(wú)             
**************************************************************************************/
private void GetPictureMark()
{
   float[] temp_thresh = new float[2];
   int Err = 0;
   //提取圓心圖像坐標(biāo),得到像素坐標(biāo)矩陣Inppts
   Err = Zvision.ZV_CALGETSCAPTS(form.g_Handle, grabimg, inppts, Convert.ToUInt32(C_CalibThresh.Text), Convert.ToUInt32(C_CalibPolar.Text), Convert.ToUInt32(C_CalibMinArea.Text), Convert.ToUInt32(C_CalibMaxArea.Text));
   int[] inppts_info = { 0, 0, 0 };
   //獲取矩陣行數(shù)和列數(shù),行數(shù)表示識(shí)別到實(shí)心圓的個(gè)數(shù)
   Err = Zvision.ZV_MATINFO(form.g_Handle, inppts, inppts_info);
   int row, col;
   row = (int)inppts_info[0];
   col = (int)inppts_info[1];
   //視覺(jué)識(shí)別到9個(gè)實(shí)心圓和標(biāo)定板的實(shí)心圓數(shù)目一致
   if (row == 9)
   {
       Err = Zvision.ZV_GRAYTORGB(form.g_Handle, grabimg, calibshowimg);
       //inppts排好序輸出排好序的像素坐標(biāo)矩陣ppts
       Err = Zvision.ZV_CALGETPTSMAP(form.g_Handle, inppts, ppts, wpts, Convert.ToSingle(C_CalibDis.Text));
       Err = Zvision.ZV_MATINFO(form.g_Handle, ppts, inppts_info);
       row = (int)inppts_info[0];
       col = (int)inppts_info[1];
       if (row >= 9)
       {
           uint i;
           DataGridView1.Rows.Clear();
           for (i = 0; i < row; i++)
           {
               //像素坐標(biāo)在WinFrom的UI界面是顯示出來(lái)
               string[] tempstr = new string[4];
               float[] outvalue = { 0, 0 };
               Zvision.ZV_MATGETROW(form.g_Handle, wpts, i, 2, outvalue);
               tempstr[2] = "0";
               tempstr[3] = "0";
               Zvision.ZV_MATGETROW(form.g_Handle, ppts, i, 2, outvalue);
               tempstr[0] = outvalue[0].ToString();
               tempstr[1] = outvalue[1].ToString();
               DataGridView1.Rows.Add(tempstr);
               //在原圖是畫(huà)出識(shí)別到的實(shí)心圓,并標(biāo)記,然后在Ui界面上顯示出圖像
               Zvision.ZV_MARKER(form.g_Handle, calibshowimg, outvalue[0], outvalue[1], 0, 40, 0, 255, 0);
               Zvision.ZV_TEXT(form.g_Handle, calibshowimg, i.ToString(), outvalue[0] - 20, outvalue[1] - 20, 40, 0, 255, 0);
               Zvision.ZV_LATCHCLEAR(form.g_Handle, 0);
               Zvision.ZV_LATCHSETSIZE(form.g_Handle, 0, Convert.ToUInt32(pictureBox5.Width), Convert.ToUInt32(pictureBox5.Height));                    pictureBox5.Image = Zvision.ZV_LATCH(form.g_Handle, calibshowimg, 0);
           }
       }
       else
       {
           MessageBox.Show("提取mark點(diǎn)失敗!", "提示");
       }
   }
   else
   {
       MessageBox.Show("提取mark點(diǎn)失敗!", "提示");
   }
}
/************************************************************************************
'任務(wù)編號(hào):無(wú)
'函數(shù)功能:相機(jī)標(biāo)定
'Input:無(wú)
'Output:無(wú) 
'返回值:無(wú)
'備注:計(jì)算像素坐標(biāo)和世界坐標(biāo)的轉(zhuǎn)換關(guān)系
'備注:標(biāo)定板圓心的世界坐標(biāo)可以通過(guò)示教的方式獲取            
**************************************************************************************/
private void CamCalib()
{
   //矩陣行和式
   uint row, col;
   row = 9;
   col = 2;
   //從Ui界面上獲取世界坐標(biāo)的矩陣數(shù)據(jù)
   float[] wPontsValue = new float[row * col];
   for (int i = 0; i < row; i++)
   {
       for (int j = 0; j < col; j++)
       {
           wPontsValue[col * i + j] = float.Parse(DataGridView1.Rows[i].Cells[j + 2].Value.ToString());
       }
   }
   //重新生成世界坐標(biāo)矩陣
   Zvision.ZV_MATGENDATA(form.g_Handle, wpts, row, col, wPontsValue);
   //圖像坐標(biāo)矩陣數(shù)據(jù)
   float[] pPontsValue = new float[row * col];
   for (int i = 0; i < row; i++)
   {
       for (int j = 0; j < col; j++)
       {
           pPontsValue[col * i + j] = float.Parse(DataGridView1.Rows[i].Cells[j].Value.ToString());
       }
   }
   //重新生成圖像坐標(biāo)矩陣
   Zvision.ZV_MATGENDATA(form.g_Handle, ppts, row, col, pPontsValue);
   float[] outimginfo = { 0, 0, 0, 0, 0 };
   //獲取圖像信息
   Zvision.ZV_IMGINFO(form.g_Handle, grabimg, outimginfo);
   //進(jìn)行相機(jī)標(biāo)定
   Zvision.ZV_CALCAM(form.g_Handle, ppts, wpts, ZmotionCalPara, (ushort)outimginfo[0], (ushort)outimginfo[1], (uint)Convert.ToInt32(C_CalibType.Text));
   float[] outcaliberror = { 0, 0, 0 };
   //獲取標(biāo)定誤差
   Zvision.ZV_CALERROR(form.g_Handle, ZmotionCalPara, ppts, wpts, outcaliberror);
   //平均誤差小于0.5內(nèi)算是優(yōu),0.5--1為良,1--1.5為一般,1.5以上建議重新標(biāo)定
   if (outcaliberror[0] >= 1.5)
   {
       MessageBox.Show("標(biāo)定平均誤差過(guò)大請(qǐng)重新標(biāo)定");
   }
   else
   {
       //保存標(biāo)定參數(shù)
       Zvision.ZV_CALWRITE(form.g_Handle, ZmotionCalPara, form.CalFileDir);
   }
}

3)形狀匹配后根據(jù)標(biāo)定系數(shù)可獲得匹配到目標(biāo)點(diǎn)的實(shí)際世界坐標(biāo)。

wKgZomZ7vfeAJfevAADJrwaGPlk540.png

3.形狀匹配

wKgaomZ7vfqAaC9UAAHnK6ecJTQ220.png

1)形狀匹配操作步驟

wKgZomZ7vf6Ae3cOAACo3E5ypPw019.png

2)相關(guān)功能代碼

/************************************************************************************
'任務(wù)編號(hào):無(wú)
'函數(shù)功能:通過(guò)相機(jī)采集圖像
'Input:無(wú)
'Output:無(wú) 
'返回值:無(wú)             
**************************************************************************************/
public Image CameAcquisition()
{
   float Temp = 0;
   Image ImageBuff = null;
   Zvision.CAM_COUNT(form.g_Handle, ref Cam_Num);
   //選擇相機(jī)
   Zvision.CAM_SEL(form.g_Handle, 0);
   //采集一張圖像
   Zvision.CAM_TRIGGER(form.g_Handle);
   //更新皮帶位置
   zauxBrr = zmcaux.ZAux_Direct_GetMpos(form.g_Handle, form.ConveyorAxisId, ref Temp);
   form.BeltMpos = Temp;
   //從相機(jī)緩存取里面獲取剛剛采集的圖像
   Zvision.CAM_GET(form.g_Handle, grabimg, 0);
   //RGB轉(zhuǎn)灰度
   Zvision.ZV_RGBTOGRAY(form.g_Handle, grabimg, grabimg);
   //鎖存數(shù)據(jù)清空
   Zvision.ZV_LATCHCLEAR(form.g_Handle, 0);
   //設(shè)置鎖存的大小為圖片顯示控件的大小
   Zvision.ZV_LATCHSETSIZE(form.g_Handle, 0, Convert.ToUInt32(ImgShow1.Width), Convert.ToUInt32(ImgShow1.Height));  
   //獲取鎖存中的圖像
   ImgShow1.Image = Zvision.ZV_LATCH(form.g_Handle, grabimg, 0);
   //導(dǎo)出獲取到的圖像信息
   return ImgShow1.Image;
}
/************************************************************************************
'任務(wù)編號(hào):無(wú)
'函數(shù)功能:創(chuàng)建形狀模版
'Input:無(wú)
'Output:無(wú) 
'返回值:無(wú)             
**************************************************************************************/
private void CreateTemplate()
{
   //通過(guò)圖像創(chuàng)建模板
   Zvision.ZV_SHAPECREATERE(form.g_Handle, SubImg, mod_re, shape_mod, Convert.ToInt32(modStartAngle.Text), Convert.ToInt32(modEndAngle.Text), Convert.ToInt32(modMinScale.Text), Convert.ToInt32(modMaxScale.Text), Convert.ToUInt32(modThresh.Text), Convert.ToUInt32(modNum_Level.Text), Convert.ToUInt32(modPt_Reduce.Text), Convert.ToInt32(modAngle_Step.Text), Convert.ToInt32(modScale_Step.Text), 20);
   //獲取模板輪廓
   Zvision.ZV_SHAPECONTOURS(form.g_Handle, shape_mod, modconlist, 0);
   //灰度轉(zhuǎn)rgb
   Zvision.ZV_GRAYTORGB(form.g_Handle, cutimg, modimg);
   float[] getimginfo = { 0, 0, 0, 0, 0 };
   //圖像信息
   Zvision.ZV_IMGINFO(form.g_Handle, modimg, getimginfo);
   //剛性變換
   Zvision.ZV_GETRIGIDVECTOR(form.g_Handle, mod_matrigid, 0, 0, 0, getimginfo[0] / 2, getimginfo[1] / 2, 0);
   //仿射變換
   Zvision.ZV_CONTAFFINE(form.g_Handle, modconlist, mod_matrigid, tsmodconlist);
   //繪制輪廓到圖像上
   Zvision.ZV_CONTLIST(form.g_Handle, modimg, tsmodconlist, 0, 255, 0, 1);
   //清空控制器的鎖存緩沖區(qū)
   Zvision.ZV_LATCHCLEAR(form.g_Handle, 1);
   //設(shè)置鎖存緩沖區(qū)大小,設(shè)置鎖存通道大小和顯示控件picgbox控件一樣大
   Zvision.ZV_LATCHSETSIZE(form.g_Handle, 1, Convert.ToUInt32(pictureBox2.Width), Convert.ToUInt32(pictureBox2.Height));                                                                                                            //顯示圖像
   pictureBox2.Image = Zvision.ZV_LATCH(form.g_Handle, modimg,1); //截取圖像顯示到ui上
   pictureBox3.Image = pictureBox2.Image;
   //清空控制器的鎖存緩沖區(qū)
   Zvision.ZV_LATCHCLEAR(form.g_Handle, 1);
   //設(shè)置鎖存緩沖區(qū)大小
   Zvision.ZV_LATCHSETSIZE(form.g_Handle, 1, Convert.ToUInt32(pictureBox4.Width), Convert.ToUInt32(pictureBox4.Height));    //設(shè)置鎖存通道大小和picgbox控件一樣大
                                                                                                                     //顯示圖像
   pictureBox4.Image = Zvision.ZV_LATCH(form.g_Handle, modimg, 1);//截取圖像顯示到Ui上
}
/************************************************************************************
'任務(wù)編號(hào):無(wú)
'函數(shù)功能:形狀匹配,在圖像是查找模板
'Input:無(wú)
'Output:無(wú) 
'返回值:無(wú)             
**************************************************************************************/
public Image ShapeFind()
{
   //結(jié)果數(shù)組清空
   for (int m = 0; m < 10; m++)
   {
       for (int n = 0; n < 5; n++)
       {
           form.VisionRst[m, n] = 0;
       }
   }
   //形狀模板匹配
   Zvision.ZV_SHAPEFIND(form.g_Handle, shape_mod, grabimg, find_outlist, Convert.ToInt32(findminscore.Text), Convert.ToUInt32(findnum.Text), Convert.ToInt32(findmindis.Text), Convert.ToInt32(findthresh.Text), Convert.ToUInt32(findaccuracy.Text), Convert.ToInt32(findspeed.Text), Convert.ToUInt32(findpolar.Text));
   int[] mat_info = { 0, 0, 0 };
   //輸出信息
   Zvision.ZV_MATINFO(form.g_Handle, find_outlist, mat_info);
   //生成繪制彩圖
   Zvision.ZV_GRAYTORGB(form.g_Handle, grabimg, show_img);
   //匹配到目標(biāo)了
   if ((int)mat_info[0] > 0)
   {
       for (uint i = 0; i < (int)mat_info[0]; i++)
       {
           float[] rst_value = { 0, 0, 0, 0, 0 };
           Zvision.ZV_MATGETROW(form.g_Handle, find_outlist, i, 5, rst_value);
           rstScore.Text = rst_value[0].ToString();
           rstPixX.Text = rst_value[1].ToString();
           rstPixY.Text = rst_value[2].ToString();
           rstAngle.Text = rst_value[3].ToString();
           rstScale.Text = rst_value[4].ToString();
           //分?jǐn)?shù)篩選
           if (rst_value[0] >= form.VisionScore)
           {
               //輸出結(jié)果
               for (int k = 0; k < 5; k++)
               {
                   form.VisionRst[i, k] = rst_value[k];
               }
               float[] outworldpos = { 0, 0 };
               //像素轉(zhuǎn)世界坐標(biāo)
               Zvision.ZV_CALTRANSW(form.g_Handle, ZmotionCalPara, rst_value[1], rst_value[2], outworldpos);
               rstWorldX.Text = outworldpos[0].ToString();
               rstWorldY.Text = outworldpos[1].ToString();
               //輸出世界坐標(biāo)
               for (int k = 1; k < 3; k++)
               {
                   form.VisionRst[i, k] = outworldpos[k - 1];
               }
               //顯示匹配結(jié)果
               string RstWorldStr;
               RstWorldStr = "OK_坐標(biāo)(" + rstWorldX.Text + "," + rstWorldY.Text + ")";
               Zvision.ZV_TEXT(form.g_Handle, show_img, RstWorldStr, rst_value[1], rst_value[2], 50, 0, 255, 0);
               //計(jì)算剛性變換矩陣
               Zvision.ZV_GETRIGIDVECTOR(form.g_Handle, find_matrigid, 0, 0, 0, rst_value[1], rst_value[2], rst_value[3]);
               //輪廓序列仿射變換
               Zvision.ZV_CONTAFFINE(form.g_Handle, modconlist, find_matrigid, tsmodconlist2);
               //繪制輪廓數(shù)列
               Zvision.ZV_CONTLIST(form.g_Handle, show_img, tsmodconlist2, 0, 255, 0, 1);
               Zvision.ZV_TEXT(form.g_Handle, show_img, i.ToString(), rst_value[1], rst_value[2], 40, 255, 0, 0);
           }
       }
   }
   else
   {
       //顯示匹配結(jié)果
       string RstWorldStr;
       RstWorldStr = "NG";
       Zvision.ZV_TEXT(form.g_Handle, show_img, RstWorldStr, 20, 120, 100, 0, 255, 0);
   }
   //清空緩沖區(qū)顯示圖片
   Zvision.ZV_LATCHCLEAR(form.g_Handle, 0);
   Zvision.ZV_LATCHSETSIZE(form.g_Handle, 0, Convert.ToUInt32(ImgShow1.Width), Convert.ToUInt32(ImgShow1.Height));    //設(shè)置鎖存通道大小和picgbox控件一樣大
   ImgShow1.Image = Zvision.ZV_LATCH(form.g_Handle, show_img, 0);//截取圖像顯示到圖像上
   return ImgShow1.Image;
}

本次,正運(yùn)動(dòng)技術(shù)C#之Delta并聯(lián)機(jī)械手的視覺(jué)相機(jī)標(biāo)定與形狀匹配,就分享到這里。

更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開(kāi)發(fā)環(huán)境與例程代碼,請(qǐng)咨詢(xún)正運(yùn)動(dòng)技術(shù)銷(xiāo)售工程師

本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于機(jī)器視覺(jué)機(jī)械手裝配系統(tǒng)方案設(shè)計(jì)

    本文設(shè)計(jì)并實(shí)現(xiàn)了基于機(jī)器視覺(jué)機(jī)械手裝配系統(tǒng),可在線完成對(duì)不同型號(hào)和任意擺放工件的裝配任務(wù)。系統(tǒng)主要由機(jī)器視覺(jué)系統(tǒng)和機(jī)械手裝配系統(tǒng)組成。
    發(fā)表于 06-23 10:21 ?3642次閱讀
    基于機(jī)器<b class='flag-5'>視覺(jué)</b>的<b class='flag-5'>機(jī)械手</b>裝配系統(tǒng)方案設(shè)計(jì)

    EtherCAT運(yùn)動(dòng)控制器Delta機(jī)械手應(yīng)用

    以正運(yùn)動(dòng)ZMC406R運(yùn)動(dòng)控制器為例,講解Delta機(jī)械手運(yùn)動(dòng)控制應(yīng)用開(kāi)發(fā)。
    的頭像 發(fā)表于 05-09 10:47 ?1370次閱讀
    EtherCAT運(yùn)動(dòng)控制器<b class='flag-5'>Delta</b><b class='flag-5'>機(jī)械手</b>應(yīng)用

    C#Delta并聯(lián)機(jī)械手視覺(jué)同步分揀

    Delta并聯(lián)機(jī)械手視覺(jué)識(shí)別后如何在流水線進(jìn)行物料的同步分揀。
    的頭像 發(fā)表于 07-03 09:52 ?906次閱讀
    <b class='flag-5'>C#</b><b class='flag-5'>之</b><b class='flag-5'>Delta</b><b class='flag-5'>并聯(lián)機(jī)械手</b>的<b class='flag-5'>視覺(jué)</b>同步分揀

    機(jī)械手 OEM 的應(yīng)用

    等。 并聯(lián)機(jī)械手并聯(lián)機(jī)械手由多個(gè)并聯(lián)的連桿機(jī)構(gòu)組成,具有高速、高精度、高剛度等優(yōu)點(diǎn)。它適用于一些對(duì)速度和精度要求較高的應(yīng)用場(chǎng)景,如食品、藥品的包裝等。 按驅(qū)動(dòng)方式劃分 : 電動(dòng)機(jī)械手
    發(fā)表于 09-18 10:31

    PCB視覺(jué)對(duì)位沖床機(jī)械手系統(tǒng),自動(dòng)化穩(wěn)定可靠

    對(duì)位和運(yùn)動(dòng)控制與一體,通訊穩(wěn)定可靠。PCB視覺(jué)對(duì)位沖床機(jī)械手系統(tǒng)特點(diǎn):1、高精度、高效率、高穩(wěn)定性的視覺(jué)對(duì)位算法2、使用網(wǎng)口相機(jī)和集成工控機(jī),性能穩(wěn)定可靠3、可檢測(cè)各種
    發(fā)表于 07-01 10:22

    PCB視覺(jué)對(duì)位沖床機(jī)械手系統(tǒng),節(jié)省成本效率高

    ,沖床沖板,自動(dòng)堆疊下料而開(kāi)發(fā)的一體化方案,集視覺(jué)對(duì)位和運(yùn)動(dòng)控制于一體,通訊穩(wěn)定可靠。PCB視覺(jué)對(duì)位沖床機(jī)械手系統(tǒng)優(yōu)勢(shì):1、高精度、高效率、高穩(wěn)定性的視覺(jué)對(duì)位算法2、使用網(wǎng)口
    發(fā)表于 04-27 09:49

    深圳機(jī)械手視覺(jué)分揀系統(tǒng)在手機(jī)蓋板的應(yīng)用

    、占地空間小機(jī)械手視覺(jué)分揀系統(tǒng)參數(shù):硬件平臺(tái):工業(yè)級(jí)+四元數(shù)數(shù)控控制器+千兆網(wǎng)口相機(jī)視野大?。?00x300mm產(chǎn)品最終放置精度::±0.5mm靶標(biāo)形狀:圓、角、邊、方形、文字或不規(guī)則
    發(fā)表于 05-18 09:40

    湖北視覺(jué)分揀機(jī)械手系統(tǒng)在手機(jī)蓋板的應(yīng)用

    、高效率、高穩(wěn)定性的視覺(jué)對(duì)位算法2、使用網(wǎng)口相機(jī)和集成工控機(jī),性能穩(wěn)定可靠3、軟件可操作性好,可支持與觸摸屏聯(lián)機(jī)操作4、通過(guò)識(shí)別產(chǎn)品特征,計(jì)算產(chǎn)品偏移值,控制機(jī)械手進(jìn)行定位抓取5、可根
    發(fā)表于 08-11 09:43

    深圳機(jī)械手視覺(jué)分揀系統(tǒng)有哪些特點(diǎn)及參數(shù)?

    :1、硬件平臺(tái):工業(yè)級(jí)+四元數(shù)數(shù)控控制器+千兆網(wǎng)口相機(jī);2、視野大小:400x300mm;3、產(chǎn)品最終放置精度::±0.5mm;4、靶標(biāo)形狀:圓、角、邊、方形、文字或不規(guī)則圖形等特征。以上就是深圳四元數(shù)小編給你們介紹的深圳機(jī)械手
    發(fā)表于 09-22 15:33

    深圳PCB視覺(jué)對(duì)位沖床機(jī)械手系統(tǒng)有哪些特點(diǎn)及參數(shù)?

    、高穩(wěn)定性的視覺(jué)對(duì)位算法;2、使用網(wǎng)口相機(jī)和集成工控機(jī),性能穩(wěn)定可靠;3、可檢測(cè)各種形狀的目標(biāo);4、視覺(jué)軟件操作簡(jiǎn)單、人機(jī)界面友好;5、視覺(jué)
    發(fā)表于 09-25 14:47

    【直播預(yù)告】LabVIEW機(jī)械手視覺(jué)糾偏關(guān)鍵技術(shù)探討

    報(bào)名地址點(diǎn)擊報(bào)名 直播簡(jiǎn)介 1.了解機(jī)械手視覺(jué)引導(dǎo)的應(yīng)用場(chǎng)景 2.了解scara機(jī)器人運(yùn)動(dòng)學(xué)正逆解 3.了解相機(jī)畸變矯正方法 4.了解手眼標(biāo)定-9點(diǎn)
    發(fā)表于 10-17 15:37

    視覺(jué)機(jī)械手標(biāo)定系統(tǒng)技術(shù)解決方案

    首先講一下在工業(yè)應(yīng)用中,和眼(攝像機(jī))的兩種位置關(guān)系,第一種是將攝像機(jī)(眼)固定在機(jī)械手)上面,眼隨手移動(dòng);第二種是攝像機(jī)(眼)和機(jī)械手
    的頭像 發(fā)表于 05-07 16:18 ?6720次閱讀

    機(jī)械手視覺(jué)引導(dǎo)相機(jī)和伺服電機(jī)算法

    機(jī)械手分為:4軸,6軸或者XY模組或UVW模組。相關(guān)的視覺(jué)引導(dǎo)項(xiàng)目主要包括:抓取,放置,位置補(bǔ)正,貼合。
    發(fā)表于 10-11 15:44 ?2077次閱讀

    Delta并聯(lián)機(jī)械臂實(shí)現(xiàn)電磁鐵搬運(yùn)功能

    1. 功能說(shuō)明 ? ?R037樣機(jī)是一款Delta并聯(lián)機(jī)械臂。本文示例將利用Delta并聯(lián)機(jī)械臂實(shí)現(xiàn)不同點(diǎn)定點(diǎn)搬運(yùn)磁鐵物料的效果。 2. 結(jié)構(gòu)說(shuō)明 ? ?
    的頭像 發(fā)表于 03-09 08:43 ?949次閱讀
    <b class='flag-5'>Delta</b><b class='flag-5'>并聯(lián)機(jī)械</b>臂實(shí)現(xiàn)電磁鐵搬運(yùn)功能

    機(jī)器視覺(jué)控制機(jī)械手的具體過(guò)程

    機(jī)器視覺(jué)控制機(jī)械手是一種將機(jī)器視覺(jué)技術(shù)與機(jī)械手控制技術(shù)相結(jié)合的自動(dòng)化技術(shù)。它通過(guò)機(jī)器視覺(jué)系統(tǒng)獲取目標(biāo)物體的圖像信息,然后利用圖像處理技術(shù)對(duì)圖
    的頭像 發(fā)表于 07-04 10:40 ?549次閱讀