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