日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

海康机器人线激光立体相机获取体积测量开始时间点和结束测量时间点以及包裹四个顶角位置信息的可行办法

發(fā)布時(shí)間:2023/12/20 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 海康机器人线激光立体相机获取体积测量开始时间点和结束测量时间点以及包裹四个顶角位置信息的可行办法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

349體積相機(jī)獲取測量時(shí)間點(diǎn)和位置信息

簡介:一種使用349體積相機(jī)獲取體積測量開始時(shí)間點(diǎn)和結(jié)束測量時(shí)間點(diǎn)以及包裹四個(gè)頂角位置信息的可行辦法。

?

  • 本文檔適用的問題
  • 體積相機(jī)型號為:MV-DL2040-04B-H、MV-DL2025-04D-H、MV-DL2025-04H-H
  • ?

  • 項(xiàng)目中存在需要獲取測量物體 體積測量的開始時(shí)間和結(jié)束時(shí)間點(diǎn)的需求
  • ?

  • 項(xiàng)目中存在需要獲取測量物體的四個(gè)頂點(diǎn)的坐標(biāo)的需求;
  • ?

    • 部分定義
  • 包裹測量起始幀號:檢測到包裹頭部的圖像幀
  • ?

  • 包裹測量結(jié)束幀號:檢測到包裹尾部的圖像幀
  • ?

  • 包裹開始測量時(shí)間:對應(yīng)包裹測量起始幀生成的時(shí)間
  • ?

  • 包裹結(jié)束測量時(shí)間:對應(yīng)包裹測量結(jié)束幀生成的時(shí)間
  • ?

  • 包裹四個(gè)頂點(diǎn)坐標(biāo)基于的坐標(biāo)系:
  • 點(diǎn)云坐標(biāo)系,坐標(biāo)系遵從右手準(zhǔn)則,Y軸朝向傳送帶運(yùn)動(dòng)方向;

    坐標(biāo)原點(diǎn):

    采用標(biāo)準(zhǔn)箱標(biāo)定時(shí),坐標(biāo)原點(diǎn)和光平面標(biāo)定參數(shù)有關(guān)系,原點(diǎn)不固定。(獲取坐標(biāo)信息不推薦使用該種方式進(jìn)行系統(tǒng)標(biāo)定)

    采用標(biāo)定板標(biāo)定時(shí),坐標(biāo)原點(diǎn)為系統(tǒng)標(biāo)定時(shí)標(biāo)定板棋盤格左上角(移動(dòng)前)。

    ?

    ?

    ?

    • 本文檔參考環(huán)境說明

    操作系統(tǒng):Windows7

    網(wǎng)卡:Intel(R) Ethernet Connection (2) I219-LM

    相機(jī)型號:MV-DL2040-04B-H

    客戶端:3DMVS2.0.1 build20200911

    體積SDK:VolumeMeasureSDK_V2.2.0.1_20200908(基于3DMVS客戶端)

    ?

    注:確保網(wǎng)絡(luò)環(huán)境已配置、相機(jī)已經(jīng)標(biāo)定。

    網(wǎng)絡(luò)環(huán)境配置請參考網(wǎng)口丟包指導(dǎo)文檔;

    相機(jī)標(biāo)定請參考相關(guān)標(biāo)定指導(dǎo)資料。

    • 操作步驟
    • 相機(jī)參數(shù)檢查確認(rèn)

    使用3DMVS連接相機(jī),確保相機(jī)已經(jīng)標(biāo)定且可以正常測量體積。

      • 點(diǎn)云圖模式下,點(diǎn)云正常,未出現(xiàn)嚴(yán)重傾斜;
      • ROI和過濾區(qū)域已經(jīng)繪制;
      • 相機(jī)在點(diǎn)云模式下,“實(shí)際幀速率(fps)”可以穩(wěn)定達(dá)到“采集幀率控制”閾值,圖像輸出穩(wěn)定不丟包;

    ?

      • 測量及校準(zhǔn)模塊下,測量類型使用“相機(jī)直出體積”和“積分體積”均可以正常出體積。

    ?

      • 不滿足以上條件請根據(jù)情況進(jìn)行排除異常情況,或聯(lián)系相關(guān)技術(shù)人員提供技術(shù)保障。
    • 獲取測量物體的四個(gè)頂點(diǎn)的坐標(biāo)
      • 使用3DMVS軟件安裝路徑下的體積Demo測試,默認(rèn)路徑為C:\Program Files (x86)\3DMVS\Development\MvVolMeasureSDK\Samples

    Documentations:體積SDK開發(fā)手冊文件夾,包含部分體積相機(jī)使用指導(dǎo)手冊;

    Runtime:體積運(yùn)行時(shí)庫文件夾,3DMVS安裝時(shí)靜默安裝,已安裝3DMVS的PC不需要再次安裝,未安裝3DMVS的PC需要根據(jù)說明進(jìn)行安裝;

    Samples:Demo存放文件夾,包含C#和VC的主動(dòng)與回調(diào)獲取體積示例;

    SDK:文件夾包含DotNet庫,lib庫與頭文件;

    注:更為詳細(xì)的說明請查看開發(fā)手冊,這里不再贅述

    這里以C#回調(diào)方式獲取體積Demo為例,打開項(xiàng)目,在回調(diào)函數(shù)ProcessCallBackResult里添加如下代碼:

    listBox1.Items.Add("有體積信息時(shí)的圖像標(biāo)記位:"+stResultInfo.nImgFlag);listBox1.Items.Add("位置信息XYZ:");for (int i = 0; i < stResultInfo.stVolumeInfo.vertex_pnts.Count(); i++){listBox1.Items.Add("位置信息[" + i + "]:(" + stResultInfo.stVolumeInfo.vertex_pnts[i].fX + ","+ stResultInfo.stVolumeInfo.vertex_pnts[i].fY + ","+ stResultInfo.stVolumeInfo.vertex_pnts[i].fZ + ")");}

    注:代碼僅供測試參考,請根據(jù)實(shí)際情況進(jìn)行調(diào)整

    ?

      • 執(zhí)行程序進(jìn)行測試,由于該版本SDK采用運(yùn)行庫,所以不需要以往的拷貝dll,拷貝measure文件步驟;

    ?

      • 查找設(shè)備、連接相機(jī),工作模式選擇1、5、9均可

      • 點(diǎn)擊開始工作,過包裹測試結(jié)果如下:

    • 獲取測量物體 體積測量的開始時(shí)間和結(jié)束時(shí)間點(diǎn)
    • 由于接下來需要使用體積相機(jī)輸出的圖像信息,我們在創(chuàng)建句柄(CreateHandleBySerial)之后,繼續(xù)添加代碼:
    ??????????? //設(shè)置開啟圖像輸出使能nRet = m_csVolMeasure.SetVolAPIOutputImgEnable(true);if (ERROR_DEFINE.MV_VOLM_OK != (ERROR_DEFINE)nRet){string strErr = string.Format("SetVolAPIOutputImgEnable falied! nRet = {0} nRet = 0x{1:x}", nRet, nRet);MessageBox.Show(strErr);}
    • 繼續(xù)在回調(diào)函數(shù)ProcessCallBackResult里添加如下代碼:
    ??????????? //檢測圖像標(biāo)記位if (bProcess? && (1 == stResultInfo.nImgFlag)){//用戶自定義,處理圖像信息,圖像位于結(jié)構(gòu)體stResultInfo.stImagetextBox1.Text = ConvertLongDateTime(stResultInfo.stImage.nHostTimeStamp).ToString();textBox2.Text = stResultInfo.stImage.nFrameNum.ToString();//幀號最大值}//有體積并根據(jù)圖像信息的時(shí)間戳計(jì)算開始測量時(shí)間和結(jié)束測量時(shí)間if (bProcess&&(1 == stResultInfo.nVolumeFlag) && (1 == stResultInfo.nImgFlag)){listBox1.Items.Add("輸出體積時(shí)間:"+ConvertLongDateTime(stResultInfo.stImage.nHostTimeStamp).ToString());listBox1.Items.Add("輸出體積幀號:" + stResultInfo.stImage.nFrameNum.ToString());listBox1.Items.Add("測量開始幀號:" + stResultInfo.stVolumeInfo.start_frm_id);listBox1.Items.Add("測量結(jié)束幀號:" + stResultInfo.stVolumeInfo.end_frm_id);}
    • 需要用到以下方法,將“主機(jī)生成時(shí)間”nHostTimeStamplong類型轉(zhuǎn)換為DateTime
    ??????? public static DateTime ConvertLongDateTime(long d){//Long格式:標(biāo)準(zhǔn)時(shí)間從1970年到現(xiàn)在的毫秒數(shù)DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));long lTime = long.Parse(d + "0000");TimeSpan toNow = new TimeSpan(lTime);DateTime dtResult = dtStart.Add(toNow);return dtResult;}
    • 執(zhí)行程序進(jìn)行測試,查找相機(jī)、連接相機(jī),工作模式推薦選擇1、5;

    特別說明:這里測量模式選擇9相機(jī)直出體積時(shí),會(huì)出現(xiàn)體積數(shù)據(jù)和圖像數(shù)據(jù)不會(huì)一起輸出的情況,也就是不滿足

    “(1 == stResultInfo.nVolumeFlag) && (1 == stResultInfo.nImgFlag)

    的判斷”

    • 如何計(jì)算測量開始時(shí)間和測量結(jié)束時(shí)間:

    測量開始時(shí)間=體積信息輸出的時(shí)間-(體積信息輸出幀號-測量開始幀號)*1s300Fps(幀率閾值)

    測量結(jié)束時(shí)間=體積信息輸出的時(shí)間-(體積信息輸出幀號-測量結(jié)束幀號)*1s300Fps(幀率閾值)

    注:這里幀號差計(jì)算時(shí),需要考慮幀號最大值為65535,跳轉(zhuǎn)0

    總結(jié)

    以上是生活随笔為你收集整理的海康机器人线激光立体相机获取体积测量开始时间点和结束测量时间点以及包裹四个顶角位置信息的可行办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。