国产91九色_日本68xxxx_欧美高清另类自拍视频在线看_欧美人禽_99久久婷婷国产综合精品青牛牛_亚洲射情

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
開放式激光振鏡運(yùn)動控制器在Ubuntu+Qt下的激光振鏡校正
深圳市正運(yùn)動技術(shù)有限公司
收藏本文     查看收藏

Ubuntu是一款免費(fèi)且開源的操作系統(tǒng),基于強(qiáng)大的Linux內(nèi)核,它支持多用戶、多任務(wù)、多線程操作,擁有多CPU架構(gòu),可以簡化開發(fā)過程,具備出色的移植性。

今天,正運(yùn)動小助手給大家分享一下Ubuntu下基于QT的激光振鏡的校正。在正式學(xué)習(xí)之前,我們先了解一下正運(yùn)動ZMC408SCAN-V22運(yùn)動控制器,ZMC408SCAN-V22支持在Linux環(huán)境進(jìn)行開發(fā)使用。

01  ZMC408SCAN-V22硬件介紹

ZMC408SCAN-V22是正運(yùn)動技術(shù)推出的高性能雙振鏡運(yùn)動控制器,集成了2個百兆以太網(wǎng)口,支持EtherCAT、 EtherNET、CAN、RS232、RS485、24路通用數(shù)字輸入、20路通用數(shù)字輸出、2路通用模擬量輸出、2路通用模擬量輸入、4個本地差分脈沖軸接口、1個MPG手輪編碼器接口、2個帶反饋振鏡接口、1個LASER激光專用接口、1個FIBER激光器接口。開放式系統(tǒng)框圖如下所示:

ZMC408SCAN-V22開放式架構(gòu)圖.png

ZMC408SCAN-V22總線控制器支持 EtherCAT總線連接,支持最快500μs的刷新周期,支持最多達(dá)16軸運(yùn)動控制,支持 直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實(shí)現(xiàn)實(shí)時的運(yùn)動控制。

ZMC408SCAN-V22總線控制器.png

ZMC408SCAN-V22通過CAN、EtherCAT總線可以連接各個擴(kuò)展模塊,從而擴(kuò)展數(shù)字量、模擬量或運(yùn)動軸?梢栽 Windows,Linux,Mac,Android,Wince各種操作系統(tǒng)下開發(fā),提供vc,c#,vb.net,labview等各種環(huán)境的dll庫。 上位機(jī)軟件編程參考《ZMotion PC函數(shù)庫編程手冊》。

多種上位機(jī)開發(fā)方式.png

02  Linux下使用Ubuntu+Qt進(jìn)行振鏡校正軟件的開發(fā)

(一) 振鏡校正的目的

振鏡本身在制造過程中或者在長時間使用后可能會存在一些畸變,振鏡校正的一個主要目的就是檢測和修正這些畸變,以確保激光的精度。

通過定期的校正和調(diào)整,可以有效地管理和糾正振鏡的畸變,從而提高激光系統(tǒng)的整體性能和穩(wěn)定性。

未進(jìn)行振鏡校正時標(biāo)刻的矩形.png

未進(jìn)行振鏡校正時標(biāo)刻的矩形

振鏡校正后標(biāo)刻的矩形.png

振鏡校正后標(biāo)刻的矩形

(二)新建 Qt 項(xiàng)目并添加函數(shù)庫

1. 在Qt Creator菜單選擇“File”→“New File or Project...”,打開創(chuàng)建項(xiàng)目向?qū)А?選擇Application項(xiàng)目集,創(chuàng)建Qt Widgets Application項(xiàng)目,設(shè)置項(xiàng)目名稱和保存位置。

1.png

2.導(dǎo)入廠家提供的相關(guān)函數(shù)庫及頭文件。

(1)將zmotion.h和ZScancorrect.h頭文件、zmcaux.cpp和zmcaux.h以及l(fā)ibzmotion.so和libZScanCorrect.so庫復(fù)制到新建的項(xiàng)目文件夾中。

2.png

(2)在Qt Creator選擇新建的Qt項(xiàng)目右擊選擇“Add Library...” → “External library”點(diǎn)擊next,將剛才復(fù)制到項(xiàng)目文件夾上的libzmotion.so和libZScanCorrect.so庫文件導(dǎo)入到項(xiàng)目中。

3.png

(3)在Qt Creator下右擊新建的Qt項(xiàng)目,選擇“Add Existing Files...”,將之前復(fù)制到項(xiàng)目文件下的頭文件zmotion.h和ZScancorrect.h以及zmcaux.cpp和zmcaux.h添加到項(xiàng)目中。

4.png

(4)函數(shù)庫添加成功后,打開pro文件可以看到相關(guān)的函數(shù)庫和頭文件信息。

5.png

03  振鏡校正例程流程和相關(guān)函數(shù)介紹

1.振鏡校正流程圖

6.png

2.主要函數(shù)的介紹

(1)取消校正
7.png

(2)下載三次文件
8.png

(3)多點(diǎn)迭代校正
9.png

(4)保存校正數(shù)據(jù)到文件
10.png

(5)讀取校正文件
11.png

(6)使用校正文件進(jìn)行校正
12.png

(7)誤差補(bǔ)償后校正
13.png

(8)相關(guān)錯誤碼
14.png

04  振鏡校正例程的實(shí)現(xiàn)及原理

1.預(yù)校正并標(biāo)刻

原理: 預(yù)校正通過標(biāo)刻圖形得到實(shí)際的標(biāo)刻大小,通過實(shí)際的大小計(jì)算出與目標(biāo)標(biāo)刻尺寸的縮放比例,當(dāng)預(yù)校正的實(shí)際大小和目標(biāo)標(biāo)刻的大小一致時,可以進(jìn)行采點(diǎn)操作。

void MainWindow::on_beforeCheck_mark_clicked()
{    
    if( 0 == g_handle)    
    {
        QMessageBox::warning(this,"提示","控制器未連接!");        
        return;    
    }    
    dataRenew();    //更新獲取頁面數(shù)據(jù)    
    ZScan_CancelCorrect(g_handle, ui->scan_list->currentIndex(), ui->Units->text().toDouble(), 1.0, tableStartNum);    // 先取消校正    
    int RowNum = sqrt(countRow());//獲取當(dāng)前選擇的校正點(diǎn)數(shù)    
    QString strFile3 = CreateMakingString(RealCorrectSizeX, RealCorrectSizeY, RowNum, XLineLenght, YLineLenght);    // 生成三次文件字符串    
    Down3File(strFile3);     // 下載三次文件到控制器中    
    // 刷新列表,將列表數(shù)據(jù)插入為標(biāo)準(zhǔn)點(diǎn)坐標(biāo)    
    model->removeRows(0, model->rowCount());    
    ZPoint *tmp = pointData(RowNum,dScanSize);    
    for (int i = 0; i < RowNum * RowNum; i++)    
    {        
        QList rowItems;        
        rowItems << new QStandardItem(QString::number(tmp[i].x,'f',3))<< new QStandardItem(QString::number(tmp[i].x,'f',3))<< new QStandardItem(0,'f',3))<< new QStandardItem(0,'f',3);        
        model->insertRow(i, rowItems);    
    }    
    delete [] tmp;    
    PreCorrectFlag = 0;//標(biāo)記為預(yù)校正
}

2.多點(diǎn)迭代校正的方式進(jìn)行振鏡校正

原理: 多點(diǎn)迭代校正,通過實(shí)際測量得到標(biāo)刻點(diǎn)數(shù)據(jù),和標(biāo)準(zhǔn)點(diǎn)數(shù)據(jù)比較可以直觀的看到誤差,振鏡校正函數(shù)通過實(shí)際點(diǎn)數(shù)據(jù)對振鏡進(jìn)行校正,在經(jīng)過多次迭代校正后可以明顯看出實(shí)際點(diǎn)位數(shù)據(jù)和標(biāo)準(zhǔn)點(diǎn)數(shù)據(jù)的誤差減小。

bool MainWindow::ScanCorrection(int MakingRowNum)
{    
    //通過點(diǎn)數(shù)數(shù)據(jù),進(jìn)行振鏡校正    
    memset(PointDataX, 0, MakingRowNum);    
    memset(PointDataY, 0, MakingRowNum);    
    int cur_item = model->rowCount();    // 檢查當(dāng)前數(shù)據(jù)項(xiàng)數(shù)量是否正確    
    if (cur_item != MakingRowNum)    
    {       
        QMessageBox::critical(this, "錯誤", "數(shù)據(jù)錯誤");       
        return false;    
    }    
    for (int row = 0; row < MakingRowNum; ++row)//將所有點(diǎn)數(shù)據(jù)取出,進(jìn)行多點(diǎn)校正    
    {        
        QStandardItem *item = model->item(row, 2);        
        PointDataX[row] = item ? item->text().toDouble() : 0.0;        
        item = model->item(row, 3);        
        PointDataY[row] = item ? item->text().toDouble() : 0.0;    
    }    
    // 檢測數(shù)據(jù)是否正確    
    if (!CheckCorrectData(MakingRowNum,PointDataX,PointDataY))    
    {       
        if (QMessageBox::question(this, "警告", "數(shù)據(jù)可能不正確,請檢查數(shù)據(jù)\r\nyes表示退出校正\r\nno表示繼續(xù)校正", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)       
        {           
            return false;       
        }    
    }    
    double x1 = -RealCorrectSizeX / 2;    
    double y1 = -RealCorrectSizeY / 2;    
    double x2 = RealCorrectSizeX / 2;    
    double y2 = RealCorrectSizeY / 2;    
    // 調(diào)用 ZScan_CorrectMorePtIter 函數(shù),傳遞適當(dāng)?shù)膮?shù)    
    int ret = ZScan_CorrectMorePtIter(g_handle, ui->scan_list->currentIndex(), PointDataX, PointDataY, ui->checkBox->isChecked(), sqrt(countRow()), ui->Units->text().toDouble(),x1, y1, x2, y2, ui->mark_Size->text().toDouble(), 1.0, tableStartNum, PreCorrectFlag);    
    if (CheckError(ret, "ZScan_CorrectMorePtIter"))        
        return false;    
    PreCorrectFlag = 1;    
    return true;
}

3.根據(jù)校正文件進(jìn)行振鏡校正

原理: 校正文件本質(zhì)上是通過多點(diǎn)迭代校正生成的,將校正點(diǎn)數(shù)據(jù)都存儲在文件中,通過讀取校正文件,將數(shù)據(jù)讀出,對振鏡進(jìn)行校正,若文件校正完存在輕微誤差可以通過文件補(bǔ)償?shù)U姆绞教岣咝U取?/p>

void MainWindow::on_but_Check_clicked()
{    
    if( 0 == g_handle)    
    {        
        QMessageBox::warning(this,"提示","控制器未連接!");        
        return;    
    }    
    QString fileName = QString::fromStdString(ui->file_Route->text()    
    .toLatin1().data());    
    if (fileName.isEmpty())    
    {        
        QMessageBox::critical(this, "錯誤", "請先選擇矯正文件!");        
        return;    
    }    
    if (ChangeDirMode == 1)    
    {        
        // 設(shè)置 X 和 Y 方向的步進(jìn)比例        
        int ret = 0;        
        if (ui->x_Dir->text().toInt() == -1)        
        {            
            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[0], 1, -1);        
        }        
        else        
        {            
            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[0], 1, 1);        
        }        
        if (ret != 0)        
        {            
            QMessageBox::critical(this, "錯誤", QString("文件校正失敗  X方向設(shè)置失敗   錯誤碼:%1").arg(ret));            
            return;        
        }        
        if (ui->y_Dir->text().toInt() == -1)        
        {            
            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[1], 1, -1);        
        }        
        else        
        {            
            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[1], 1, 1);        
        }        
        if (ret != 0)        
        {            
            QMessageBox::critical(this, "錯誤", QString("文件校正失敗  Y方向設(shè)置失敗   錯誤碼:%1").arg(ret));            
            return;        
        }    
    }    
    int rest = ZScan_CorrectFromFile(g_handle, fileName.toLatin1().data(), scanNum, tableStartNum);//使用校正文件進(jìn)行振鏡校正    
    if (rest != 0)    
    {        
        QMessageBox::critical(this, "錯誤", QString("文件校正錯誤   錯誤碼:%1").arg(rest));    
    }    
    else    
    {        
        QMessageBox::information(this, "信息", "文件校正完成");    
    }
}

05  通過振鏡校正例程對激光振鏡進(jìn)行校正

1.多點(diǎn)迭代校正方式進(jìn)行振鏡校正

(1)連接到控制器,并進(jìn)行工藝參數(shù)設(shè)置,根據(jù)實(shí)際激光器類型和IO參數(shù)以及標(biāo)刻參數(shù)進(jìn)行設(shè)置。

15.png

(2)輸入需要實(shí)際標(biāo)刻的尺寸,進(jìn)行預(yù)校正標(biāo)刻,使用預(yù)校正標(biāo)刻的實(shí)際XY測量值來計(jì)算縮放比例,可以進(jìn)行多次預(yù)校正標(biāo)刻和測量,計(jì)算出較為精準(zhǔn)的比例,這里的誤差越小,后續(xù)校正的次數(shù)將會減少。

16.png

(3)通過導(dǎo)入點(diǎn)數(shù)據(jù)或者手動填入點(diǎn)數(shù)據(jù),進(jìn)行標(biāo)刻并校正,可以通過與標(biāo)準(zhǔn)點(diǎn)坐標(biāo)數(shù)據(jù)對比,直觀看到誤差。

17.png

(4)繼續(xù)測量標(biāo)刻點(diǎn)的數(shù)據(jù),導(dǎo)入點(diǎn)數(shù)據(jù)或手動添加到程序中,重復(fù)步驟二三提高校正精度。 若精度還是達(dá)不到要求,可以繼續(xù)加點(diǎn)迭代校正來提高精度,若已達(dá)到精度則可以將校正數(shù)據(jù)保存到校正文件中,方便后續(xù)直接使用文件校正。

18.png

2.文件校正方式進(jìn)行振鏡校正

(1)選擇校正文件進(jìn)行振鏡校正

19.png

(2)進(jìn)行實(shí)際測量,若測量數(shù)據(jù)無誤,則校正完成。若出現(xiàn)點(diǎn)位誤差可采取坐標(biāo)補(bǔ)償?shù)姆绞竭M(jìn)行補(bǔ)償校正,將補(bǔ)償值填入,進(jìn)行校正并標(biāo)刻,重新測量數(shù)據(jù),可多次進(jìn)行補(bǔ)償操作,若誤差過大,或者較多點(diǎn)位存在問題,需要使用多點(diǎn)疊加迭代校正的方式進(jìn)行振鏡校正。

20.png

完整代碼獲取地址

代碼下載地址.png

本次,正運(yùn)動技術(shù)開放式激光振鏡運(yùn)動控制器在Ubuntu+Qt下的激光振鏡校正,就分享到這里。

更多精彩內(nèi)容請關(guān)注“ 正運(yùn)動小助手 ”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師:400-089-8936。

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

企業(yè)微信截圖_20240321153031.png

正運(yùn)動技術(shù)專注于運(yùn)動控制技術(shù)研究和通用運(yùn)動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運(yùn)動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動控制核心技術(shù)和實(shí)時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動控制卡_運(yùn)動控制器_EtherCAT運(yùn)動控制卡_EtherCAT控制器_運(yùn)動控制系統(tǒng)_視覺控制器__運(yùn)動控制PLC_運(yùn)動控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動控制卡等等。


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 深圳市正運(yùn)動技術(shù)有限公司
聯(lián) 系 人: 戴德弟
電  話: 0755-32976042
傳  真: 0755-2606 6955
地  址: 深圳市寶安區(qū)西鄉(xiāng)洲石路陽光工業(yè)園A1棟5樓
郵  編: 518100
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(一):驅(qū)動安裝、內(nèi)核配置與使用
AI視覺外觀檢測在全自動測包機(jī)中的應(yīng)用
C#上位機(jī)與運(yùn)動控制卡網(wǎng)絡(luò)通訊的周期上報
DELTA機(jī)械手多物料視覺分揀的應(yīng)用
正運(yùn)動×Eplan再啟新篇 | 24款新品模型上線,打造電氣設(shè)計(jì)全鏈路閉環(huán)
激光振鏡運(yùn)動控制器在玻璃激光鉆孔上的應(yīng)用
EtherCAT運(yùn)動控制卡應(yīng)用開發(fā)教程之Java
賦能柔性制造:MotionRT750實(shí)時運(yùn)動控制內(nèi)核,提效不止10%!
AI視覺外觀檢測技術(shù)在NR功率電感質(zhì)量控制中的方案應(yīng)用
PCIe EtherCAT實(shí)時運(yùn)動控制卡PCIE464同步跟隨/皮帶跟隨加工應(yīng)用
機(jī)器視覺運(yùn)動控制一體機(jī)在背靠背點(diǎn)膠焊錫機(jī)上的應(yīng)用
PCIe EtherCAT實(shí)時運(yùn)動控制卡PCIE464點(diǎn)膠工藝中的同步/提前/延時開關(guān)膠
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

主站蜘蛛池模板: 91免费视频观看 | 黄色在线观看视频网站 | 亚洲精品热| 一区免费在线 | 黄色片网站| 欧美a√ | 免费一区二区视频 | 亚洲欧美日韩三级 | 日韩中文视频 | 成人精品国产免费网站 | 欧美亚洲国产日韩 | 国内精品久久久久久久影视简单 | 一区在线视频 | 国产精品久久久久久久久久久久 | 红桃视频成人免费网站 | 91网站免费观看 | 人人澡人人添人人爽一区二区 | 成人av免费| 精品久久久久国产 | 中国成人免费视频 | 大黑人交xxxxxhd性爽 | 一二区成人影院电影网 | 加勒比久在线 | 麻豆精品| 亚洲第一黄色网 | 中国一级黄色毛片 | 久久免费av| 亚洲九九 | 天堂在线观看 | 污视频网站免费 | 亚洲免费在线观看视频 | 亚洲精品免费在线 | 亚洲一区二区在线视频 | www.色婷婷| 国产精品久久久久久久久久久免费看 | 99在线观看视频 | 国产精品美女一区二区三区 | 福利网站在线观看 | 亚洲国产美女 | 一级片在线放映 | 玖玖玖国产精品 |