Skip to content

端子高度測量 ​

工程背景 ​

測量背景 ​

為了確保產品端子的質量和安全性,並最佳化其效能,製造商需要嚴格控制生產過程中的每一個環節,包括端子的尺寸精度。端子的高度3D檢測旨在通過3D高度檢測工具,實現對產品端子高度物理尺寸的精確測量。

測量項 ​

端子高度

解決方案 ​

Vision-Studio採用裁切工具,將端子部分裁切出來,在端子位置建立ROI陣列,使用高度工具一鍵測量。

設計思路 ​

本地圖片

執行效果展示 ​

本地圖片

專案流程 ​

一、初始化 ​

本地圖片

  1. 使用Lua脚本工具,初始化需要儲存的csv檔案的表頭。
lua
csvHead = ""

for i=1,18,1 do     
    --将"Name"修改为"您需要的列名"   
    csvHead = csvHead .. "Pin" .. i .. ","
end
csvHead = csvHead .. "\n"
--创建文件,脚本第一次运行时,没有就创建
--将"./Save.csv"修改为"您想要保存的文件名.csv"
if FileExists("./Save.csv") == false then
    PrintToFile("./Save.csv", csvHead)
end
  1. 選擇加载点云,獲取點雲

  2. 選擇3D裁切工具,裁切掉多餘噪點。

二、預處理 ​

位置調整 ​

本地圖片

  1. 使用3D方形探针工具,分別找到點雲左邊直線和點雲上邊直線。

本地圖片

  1. 使用3D几何交点工具,根據上一步檢測到的直線,計算兩直線交點。

    本地圖片

  2. 使用3D位置调整工具,調整定位到到兩直線交點位置

本地圖片

平面擬合 ​

本地圖片

  1. 使用创建roi工具,選擇基準區域

    本地圖片

  2. 使用3D平面拟合工具,根據上個工具選擇的區域,擬合平面並將其設定為零平面。

    本地圖片

裁切出端子區域 ​

使用3D点云裁切工具,設定z範圍裁切出端子區域

本地圖片

端子高度測量 ​

本地圖片

通過迴圈陣列roi的方式來實現迴圈測量所有端子高度。每次迴圈測量兩列相鄰的端子高度,端子高度的測量方式:用端子測量高度-基準區域測量高度。

  1. 使用Lua脚本工具,初始化迴圈開始值及初始box; 給出迴圈開始值1及相鄰兩個端子列的第一行box位置資訊。
lua
SetIntVariable("loop", 1)
SetFloatArrayVariable("h_dif", {})

SetFloatVariable("box_sx", 0.635)
SetFloatVariable("box_sy", -4.844)
SetFloatVariable("box_sz", -0.362)
SetFloatVariable("box_ex", 0.881)
SetFloatVariable("box_ey", -4.690)
SetFloatVariable("box_ez", 0.354)

SetFloatVariable("box_d_sx", 1.200)
SetFloatVariable("box_d_sy", -5.173)
SetFloatVariable("box_d_sz", -0.204)
SetFloatVariable("box_d_ex", 1.284)
SetFloatVariable("box_d_ey", -5.029)
SetFloatVariable("box_d_ez", 0.400)
  1. 使用标记工具,標記迴圈開始。

  2. 使用Lua脚本工具,根據上一個lua指令碼輸出的box位置資訊輸出相鄰兩個端子列的第一行box及兩個端子參考計算高度的基準位置box。

lua
SetBox("box", box_sx, box_sy, box_sz, box_ex, box_ey, box_ez)

SetBox("box2", box_sx + 0.4, box_sy, box_sz, box_ex + 0.4, box_ey, box_ez)

SetBox("box_d", box_d_sx, box_d_sy, box_d_sz, box_d_ex, box_d_ey, box_d_ez)
  1. 使用创建ROI阵列工具,根據上一步輸出的box作為手動模式輸入區域,根據計算行數列數及行間隔列間隔陣列一列box。

    本地圖片

  2. 使用3D高度工具,計算上一步使用创建ROI阵列工具陣列的一列box種所有box內區域的高度。

    本地圖片

  3. 使用lua脚本工具,繫結相鄰兩列端子的高度資料及參考計算高度的基準位置高度資料,計算端子高度並存入csv檔案。

lua
save_h = ""

for i=1, #input1, 1 do
    
    save_h = save_h .. (input0[i] - input1[i]) .. ","
end
save_h = save_h .. "\n"

for i=1, #input1, 1 do
    
    save_h = save_h .. (input2[i] - input1[i]) .. ","
end
save_h = save_h .. "\n"

if FileExists("./Save.csv") == true then
    PrintToFile("./Save.csv", save_h)
end
  1. 使用变量设置工具,將迴圈變數加1

    本地圖片

  2. 使用条件分支工具,實現當迴圈大於等於15時不執行條件分支,工程執行結束,迴圈小於15時跳轉到loop標記繼續執行下一次迴圈計算下兩列端子的高度。

    本地圖片

  3. 使用lua脚本工具,設定下一次迴圈兩列端子的第一行box位置值 前7組端子和後7組端子

lua
if loop ~= 8 then
    SetFloatVariable("box_sx", box_sx + 1)
    SetFloatVariable("box_ex", box_ex + 1)
    SetFloatVariable("box_d_sx", box_d_sx + 1)
    SetFloatVariable("box_d_ex", box_d_ex + 1)
else
    SetFloatVariable("box_sx", box_sx + 3)
    SetFloatVariable("box_ex", box_ex + 3)
    SetFloatVariable("box_d_sx", box_d_sx + 3)
    SetFloatVariable("box_d_ex", box_d_ex + 3)
end
  1. 使用跳转工具,跳轉到迴圈開始標記

    本地圖片

Vision Studio