flowchart LR
A["A. 3D Print<br/>Sensor Base"] --> B["B. Insert Sensor<br/>(slide fit)"]
B --> C["C. Attach Spherical<br/>Probe to Printhead"]
C --> D["D. Automated<br/>G-code Probing"]
D --> E["Coordinate-labeled<br/>RGB Images"]
E --> F["E. Train / Fine-tune<br/>TouchNet"]
F --> G["Predict<br/>Gradient Map (Gx, Gy)"]
G --> H["Fast Poisson<br/>Solver"]
H --> I["F. Depth Map"]
๐3D Cal
- ๐ค ๋ณธ ์ฐ๊ตฌ๋ ์ ๋ ดํ FDM 3D ํ๋ฆฐํฐ๋ฅผ ์๋ํ๋ ํ๋ก๋น ์ฅ์น๋ก ์ ํํ์ฌ ํ ํฑ ์ผ์ ๊ต์ ์ ์ํ ๋ ์ด๋ธ๋ง๋ ๋๊ท๋ชจ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ์คํ์์ค Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ 3D Cal์ ์๊ฐํฉ๋๋ค.
- ๐ก 3D Cal์ DIGIT ๋ฐ GelSight Mini์ ๊ฐ์ ์๊ฐ ๊ธฐ๋ฐ ํ ํฑ ์ผ์์์ RGB ์ด๋ฏธ์ง๋ฅผ ๊น์ด ๋งต์ผ๋ก ๋ณํํ๋ ๊ฒฝ๋ Convolutional Neural Network์ธ TouchNet ๋ชจ๋ธ ํ์ต์ ์ง์ํ๋ฉฐ, 5% ์ด์์ ๋ฐ์ดํฐ๋ก๋ ์ ํํ ๊ต์ ์ด ๊ฐ๋ฅํ์ง๋ง, 20%์ ๊ณต๊ฐ ์ขํ๋ฅผ ์ฌ์ฉํ์ ๋ ์ฌ๊ตฌ์ฑ ๊ฐ๋ณ์ฑ์ ์ค์ฌ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
- ๐ฌ TouchNet ๋ชจ๋ธ์ ์ด์ ์ ๋ณด์ง ๋ชปํ 3D ํ๋ฆฐํ ๋ ๋ฌผ์ฒด์ ๋ํด ํ๊ท 16~52 ฮผm์ ์ ์ฒด ์ค๋ฅ๋ก ๊ณ ํ์ง์ ๊น์ด ๋งต์ ์ฌ๊ตฌ์ฑํ ์ ์์์ผ๋ฉฐ, ์ด๋ ์ค์ ๋ก๋ด ์กฐ์ ์์ ์ ์ ํฉํ ์์ค์ ๋๋ค.
๐ Ping Review
๐ Ping โ A light tap on the surface. Get the gist in seconds.
3D Cal์ ์ด๊ฐ ์ผ์(tactile sensor) ๋ณด์ ์ ์ํ ์คํ ์์ค Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ ๋น์ฉ FDM (Fused Deposition Modelling) 3D ํ๋ฆฐํฐ๋ฅผ ์๋ํ๋ ํ๋ก๋น ์ฅ์น๋ก ์ ํํ์ฌ ์ด๊ฐ ์ผ์ ๋ณด์ ์ ํ์ํ ๋๋์ ๋ ์ด๋ธ๋ง๋ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ฒ ์์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๊ฐ ์ผ์ ์ฐ๊ตฌ์ ๊ฐ์ํ, ์ผ์ ๋ฐฐํฌ ๊ฐ์ํ, ๊ทธ๋ฆฌ๊ณ ๋ก๋ด ํ๋ซํผ์ ์ด๊ฐ ์ผ์ ํตํฉ์ ์ด์งํ๊ณ ์ ํฉ๋๋ค.
๊ธฐ์กด ์ด๊ฐ ์ผ์ ๋ณด์ ์ ์์์ ๋ฐ ๋ ธ๋ ์ง์ฝ์ ์ด๊ฑฐ๋, ๊ณ ๊ฐ์ ํ๋์จ์ด์ ์ ๋ฌธ ์ง์์ ์๊ตฌํ๋ ์๋ํ๋ ์ ์ฐจ์ ์์กดํ๋ ๋ฑ ์ ๊ทผ์ฑ์ด ๋ฎ๋ค๋ ๋ฌธ์ ์ ์ด ์์์ต๋๋ค. ํนํ vision-based tactile sensor์ ๊ฒฝ์ฐ ๊ณ ์ฐจ์ ์ถ๋ ฅ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฏธ ์๋ ๊ฐ(์: ๊น์ด ๋งต)์ผ๋ก ๋งคํํ๋ ๊ฒ์ด ๋์ฑ ์ด๋ ค์ ์ต๋๋ค. 3D Cal์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 3D ํ๋ฆฐํฐ์ ๊ธฐ๋ฅ์ ์ฌํ์ฉํฉ๋๋ค.
ํต์ฌ ๋ฐฉ๋ฒ๋ก (Core Methodology)
- ๋ฐ์ดํฐ ์์ง (Data Collection):
- ์ผ์ ๋ฒ ์ด์ค 3D ํ๋ฆฐํ : ์ฌ์ฉ์๋ ๋จผ์ ์์ ์ ์ด๊ฐ ์ผ์์ ๋ง๋ ๋ฒ ์ด์ค๋ฅผ 3D ํ๋ฆฐํฐ๋ก ์ ์ํฉ๋๋ค. ์ด ๋ฒ ์ด์ค๋ ์ผ์๊ฐ 3D ํ๋ฆฐํฐ์ ์์ ๊ณต๊ฐ ๋ด์ ๊ณ ์ ๋ ์์น๋ฅผ ๊ฐ์ง๋๋ก ํฉ๋๋ค.
- ์ผ์ ์ฝ์ ๋ฐ ํ๋ก๋ธ ์ฅ์ฐฉ: ์ผ์๋ฅผ ํ๋ฆฐํ ๋ ๋ฒ ์ด์ค์ slide fit ๋ฐฉ์์ผ๋ก ์ฝ์ ํ ํ, 3D ํ๋ฆฐํฐ ๋ ธ์ฆ์ 3D ํ๋ฆฐํ ๋ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฑ ๊ตฌํ ํ๋ก๋ธ ํ(2mm ๋ฐ๊ฒฝ)์ ์ฅ์ฐฉํฉ๋๋ค.
- ์๋ ํ๋ก๋น: ์ฌ์ฉ์๋ CSV ํ์ผ์ ์ํ๋ ํ๋ก๋น ์ขํ(x, y)์ ๊น์ด(z)๋ฅผ ์ง์ ํฉ๋๋ค. 3D Cal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด ํ์ผ์ ํ์ฑํ์ฌ G-Code ๋ช ๋ น์ ํตํด 3D ํ๋ฆฐํฐ๋ฅผ ์ ์ดํ๊ณ , ์ผ์๋ฅผ ์๋์ผ๋ก ํ๋ก๋นํ๋ฉฐ ํด๋น ์ขํ์ ๋ ์ด๋ธ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ์บก์ฒํฉ๋๋ค. ๋ณธ ์ฐ๊ตฌ์์๋ 0.5mm x 0.5mm ๊ทธ๋ฆฌ๋์์ ์ด 1,200๊ฐ ์ด์์ ๊ฐ๋ณ ํ๋ก๋ธ ์์น๋ฅผ ํ์ํ์ผ๋ฉฐ, ๊ฐ ์ํ(indentation)๋ง๋ค 30๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์บก์ฒํ์ฌ ์ด 7๋ง ๊ฐ ์ด์์ ์ด๋ฏธ์ง๋ฅผ ํ๋ณดํ์ต๋๋ค.
- ์ถ์ํ (Abstraction): 3D Cal์ G-Code ํธํ FDM 3D ํ๋ฆฐํฐ(์: Ender 3)์ ์๋ํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์ผ์ ์ธก๋ฉด์์๋ DIGIT, GelSight Mini ๋ฐ OpenCV ํธํ vision-based tactile sensor์ ๋ํ ๋ด์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๋ ๋ง์ถคํ vision-based sensor๋ฅผ ์ํด ํต์ ๋ฐ ์ด๋ฏธ์ง ํ๋ ํจ์๋ง ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
- ๋ชจ๋ธ ํ์ต (Model Training):
- TouchNet ์ํคํ
์ฒ: TouchNet์ vision-based tactile sensor์ RGB ์ผ์ ์ด๋ฏธ์ง์์ ์ ์๋ฏธํ ๊น์ด ์ ๋ณด๋ฅผ ์ถ์ถํ๊ธฐ ์ํด ์ ์๋ fully convolutional neural network์
๋๋ค.
- ์ ๋ ฅ: TouchNet์ ์ ๋ ฅ์ 5์ฑ๋ ์ด๋ฏธ์ง์ ๋๋ค. ์ด๋ ํ์ค 3์ฑ๋ RGB ์ด๋ฏธ์ง์ 2์ฑ๋ ์์น ์๋ฒ ๋ฉ(x, y ์ขํ ์๋ฒ ๋ฉ)์ concatenateํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๊ตฌ์กฐ: TouchNet์ 9๊ฐ์ ์์ฐจ์ ์ธ ๋ชจ๋๋ก ๊ตฌ์ฑ๋ feedforward convolutional neural network์ ๋๋ค. ๊ฐ ๋ชจ๋์ convolutional layer, Batch Normalization, ReLU ํ์ฑํ ํจ์, ๊ทธ๋ฆฌ๊ณ ๊ณต๊ฐ์ Dropout(spatial dropout)์ ํฌํจํฉ๋๋ค.
- ์ฒ๋ฆฌ ๊ณผ์ : ๋คํธ์ํฌ๋ ๋จผ์ ์ ๋ ฅ ํน์ง์ ์ฐจ์์ 5์ฑ๋์์ 256์ฑ๋๋ก ํ์ฅํ ๋ค์, ์ด๋ฅผ x ๋ฐ y ๋ฐฉํฅ์ ์์ธก๋ ํ๋ฉด ๊ธฐ์ธ๊ธฐ(G_x, G_y)๋ฅผ ๋ํ๋ด๋ 2๊ฐ์ ์ถ๋ ฅ ์ฑ๋๋ก ์ถ์ํฉ๋๋ค.
- ํน์ง: Encoder-decoder ๋ชจ๋ธ(์: U-Net)๊ณผ ๋ฌ๋ฆฌ TouchNet์ (R, G, B, x, y) ๊ฐ ์งํฉ์ ํ๋ฉด ๊ธฐ์ธ๊ธฐ(G_x, G_y)์ ์ง์ ๋งคํํ๋ฏ๋ก, ๊ตฌํ ํ๋ก๋ธ๋ก๋ง ํ์ตํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ณด์ง ๋ชปํ ํํ์ ๋ ์ ์ผ๋ฐํ๋ฉ๋๋ค.
- ๊น์ด ๋งต ์์ฑ: TouchNet์ด ์ถ๋ ฅํ ๊ธฐ์ธ๊ธฐ ๋งต(G_x, G_y)์ Fast Poisson Solver๋ฅผ ํตํด ํตํฉ๋์ด ์ต์ข ๊น์ด ๋งต(depth map)์ ์์ฑํฉ๋๋ค.
- ํ์ต ๋ฐ ์ถ๋ก : TouchNet ๋ชจ๋ธ์ Mean Squared Error (MSE) ์์ค ํจ์, AdamW optimizer(ํ์ต๋ฅ 1e-4, weight decay 1e-4), ๋ฐฐ์น ํฌ๊ธฐ 64๋ก ํ์ต๋์์ต๋๋ค. ์ถ๋ก ์๊ฐ์ ๋ ธํธ๋ถ ์์ค์ ํ๋์จ์ด์์ 30ms ๋ฏธ๋ง์ผ๋ก, 30fps์ ์ค์๊ฐ ๊น์ด ๋งต ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
- TouchNet ์ํคํ
์ฒ: TouchNet์ vision-based tactile sensor์ RGB ์ผ์ ์ด๋ฏธ์ง์์ ์ ์๋ฏธํ ๊น์ด ์ ๋ณด๋ฅผ ์ถ์ถํ๊ธฐ ์ํด ์ ์๋ fully convolutional neural network์
๋๋ค.
์คํ ๊ฒฐ๊ณผ (Experimental Results)
- ๋ฐ์ดํฐ ์์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ถ์ (Spatial Sampling Analysis):
- DIGIT ๋ฐ GelSight Mini ์ผ์์ ๋ํด ์ด ๊ณต๊ฐ ์ขํ์ 1%, 5%, 10%, 20%, 40%, 80%๋ฅผ ์ฌ์ฉํ์ฌ TouchNet ๋ชจ๋ธ์ ํ์ต์์ผฐ์ต๋๋ค.
- ๋ชจ๋ธ ์ฑ๋ฅ์ 1% ๋ฐ์ดํฐ์์๋ ์ ์กฐํ์ง๋ง, 5% ์ด์์ ๋ฐ์ดํฐ(๊ฐ ์ผ์๋ณ ์ฝ 60๊ฐ ์ด์์ ๊ณต๊ฐ ์ขํ)์์๋ ์ผ๊ด๋ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
- ์ฌ๊ตฌ์ฑ๋ ๊น์ด ๋งต ๋ํ 5%์ 80% ๋ฐ์ดํฐ ํ์ต ๋ชจ๋ธ ๊ฐ์ ์๊ฐ์ ์ผ๋ก ์ ์ฌํ์ผ๋, 1% ๋ชจ๋ธ์์๋ ํ์ง์ด ์ ํ๋์์ต๋๋ค.
- ๊ฒ์ฆ ์ธํธ์์ ๊ฐ ํ๋ก๋ธ ์ขํ์ MSE๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ, ํ๋ จ ๋ฐ์ดํฐ๊ฐ ์ ์ ์์ญ์์ MSE ์์ค์ด ํ์ ํ ์ฆ๊ฐํ๋ฉฐ ์ผ์ฑ ํ๋ฉด์ ๋น๊ท ์ผํ ์๋ต์ ๋ฐ์ํ์ต๋๋ค.
- MSE ๋ถํฌ์ ํ๊ท ๋ฐ ํ์ค ํธ์ฐจ๋ ํ๋ จ ์ขํ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ฐ์ํ์ฌ, ๋ฐ๋ ๋์ ์ํ๋ง์ด ์ฌ๊ตฌ์ฑ ๊ฐ๋ณ์ฑ์ ์ค์์ ์์ฌํฉ๋๋ค.
- ํต๊ณ์ ๋ถ์ ๊ฒฐ๊ณผ, 20%์ ์ขํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ๋ จํ์ ๋ ์ฌ๊ตฌ์ฑ ์ฑ๋ฅ์ด ์์ ํ๋์์ผ๋ฉฐ, ์ถ๊ฐ์ ์ธ ํ๋ จ ๋ฐ์ดํฐ๋ ์ฑ๋ฅ ํฅ์์ ๋ฏธ๋ฏธํ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ๋ฐ๋ผ์ ์ต์ ์ ์ฑ๋ฅ์ ์ํด ์ด ์ขํ์ ์ต์ 20%(์ฝ 240๊ฐ์ ๋ฌด์์ ์ ํ ์ขํ)๋ฅผ 0.5mm x 0.5mm ๊ทธ๋ฆฌ๋์์ ํ๋ก๋นํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- ๋ฏธ๋ฑ๋ก ๊ฐ์ฒด์ ๋ํ ์ฑ๋ฅ (Performance on Unseen Objects):
- ๊ตฌ, ์์ฝ, ํฐ(pawn) ๋ชจ์์ ์ธ ๊ฐ์ง 3D ํ๋ฆฐํ ๋ ํ ์คํธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ์ผ๋ฐํ ์ฑ๋ฅ์ ํ๊ฐํ์ต๋๋ค.
- TouchNet์ด ์์ธกํ ๊น์ด ๋งต์ ํ ์คํธ ๊ฐ์ฒด์ ์ค์ ํ๋กํ๊ณผ ์๊ฐ์ ์ผ๋ก ๋งค์ฐ ์ ์ฌํ์ต๋๋ค.
- ๋จ์ํ ํ์(๊ตฌ, ์์ฝ)์ ๊ฒฝ์ฐ DIGIT์ด ๋ ์ ํํ ๊น์ด ๋งต์ ์์ฑํ์ผ๋ฉฐ, ํฐ์ ๊ฒฝ์ฐ GelSight Mini๊ฐ DIGIT๋ณด๋ค ์ฐ์ํ์ต๋๋ค.
- ์ ์ฒด ์ผ์ฑ ํ๋ฉด์์ ํ๊ท ์ฌ๊ตฌ์ฑ ์ค์ฐจ(Overall Error)๋ DIGIT์์ 16.274 ฮผm ~ 52.211 ฮผm, GelSight Mini์์ 22.172 ฮผm ~ 48.821 ฮผm ๋ฒ์์์ต๋๋ค.
- ์ ์ด์ด ์๋ ์์ญ(Type 1 Error, ์ค์ ๊น์ด 0์ธ ํฝ์ )์ ํ๊ท ์ค์ฐจ๋ ๋ ์ผ์ ๋ชจ๋ 20 ฮผm ๋ฏธ๋ง์ผ๋ก, ๋ชจ๋ธ์ด ๋น์ ์ด ์์ญ์ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์๋ณํ์์ ๋ณด์ฌ์ค๋๋ค.
- ์ ์ด์ด ์๋ ์์ญ(Type 2 Error, ์ค์ ๊น์ด 0์ด ์๋ ํฝ์ )์ ํ๊ท ์ค์ฐจ๋ ๋ ์ปธ์ง๋ง(65.274 ฮผm ~ 296.381 ฮผm), ์ผ๋ฐ์ ์ผ๋ก ์ค์ ์ต๋ ์ํ ๊น์ด์ ์ฝ 5~15% ์์ค์ผ๋ก, ๋๋ถ๋ถ์ ๋ก๋ด ์กฐ์ ์์ ์ ์ ํฉํ ๊ฒ์ผ๋ก ํ๋จ๋ฉ๋๋ค.
3D Cal์ ์ด๊ฐ ์ผ์์ ๋ฐฐํฌ๋ฅผ ๊ฐ์ํํ๊ณ ํ์คํํ์ฌ ๋ก๋ด ์กฐ์, ํ ํฑ์ค, ์ธ๊ฐ-์ปดํจํฐ ์ํธ์์ฉ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ด๊ฐ ์ผ์์ ํ์ฉ์ ์ด์งํฉ๋๋ค. ์ด ์ฐ๊ตฌ๋ DIGIT ๋ฐ GelSight Mini๋ฅผ ์ํ ๊ณ ํ์ง ๊น์ด ์ฌ๊ตฌ์ฑ์ ์์ฑํ๋ TouchNet ๋ชจ๋ธ์ ์ ๊ณตํ๋ฉฐ, ํ์ํ ํ๋ จ ๋ฐ์ดํฐ ์์ ๋ํ ์ค์ง์ ์ธ ๊ฐ์ด๋๋ผ์ธ์ ์ ์ํฉ๋๋ค. ํฅํ 3D Cal์ ํ ์ผ์์์ ์ฐ๋์ ํตํ ํ/ํ ํฌ ๋ณด์ ์ง์, capacitance-based ๋ฐ resistance-based ์ผ์์ ๊ฐ์ ๋ค๋ฅธ ์ด๊ฐ ์ผ์ฑ ๊ธฐ์ ์ ๋ํ ์ง์ ํ์ฅ์ ๋ชฉํ๋ก ํฉ๋๋ค.
๐ Ring Review
๐ Ring โ An idea that echoes. Grasp the core and its value.
๋น์ผ 6์ถ ๋ก๋ดํ์ด๋ CNC, ๋ชจ์ ์บก์ฒ ์์ด 2๋ง ์์ง๋ฆฌ 3D ํ๋ฆฐํฐ ํ๋๋ก ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์(DIGIT, GelSight Mini)๋ฅผ ์๋ ๋ณด์ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๋ ผ๋ฌธ์ด๋ค. ํต์ฌ์ ๋ ๊ฐ์ง๋ค.
์ฒซ์งธ, ํ๋ฆฐํฐ ๋ฐ๋ฅ(print bed)์ ์ผ์ ๋ฐ์นจ๋๋ฅผ ์ง์ ์ถ๋ ฅํ๋ฉด ์ผ์๊ฐ ํ๋ฆฐํฐ ์ขํ๊ณ ์์ ๋ฐํ๋ค. ๊ทธ๋์ ๋ฐ๋ก ์-๋ ๋ณด์ (hand-eye calibration)์ ํ ํ์๊ฐ ์๋ค. ์ด๊ฒ ์ด ๋ ผ๋ฌธ ์ ์ฒด๋ฅผ ๋ ๋ฐ์น๋ ํธ๋ฆญ์ด๋ค.
๋์งธ, ํ๋ฆฐํฐ ํค๋์ ๊ตฌํ ํ์นจ์ ๋ผ์ ์ ค ํ๋ฉด์ ์์ฒ ๋ฒ ์ฐ๋ฌ (x, y, ๊น์ด)๊ฐ ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์๋ ์์งํ๊ณ , ๊ฐ๋ฒผ์ด 9์ธต ์์ ํฉ์ฑ๊ณฑ๋ง TouchNet์ผ๋ก RGB ์ด๋ฏธ์ง๋ฅผ ํ๋ฉด ๊ธฐ์ธ๊ธฐ(gradient)๋ก ๋ฐ๊พผ ๋ค ํธ์์ก ์ ๋ถ์ผ๋ก ๊น์ด๋งต(depth map)์ ๋ณต์ํ๋ค.
์ค์ธก ๊ฒฐ๊ณผ ๋ฏธ์ง(unseen) ๊ฐ์ฒด์์ ์ ์ฒด ํ๊ท ์ค์ฐจ 16~52 ฮผm(DIGIT), 22~49 ฮผm(GelSight Mini) ์์ค์ด์๊ณ , ์ถ๋ก ์ ๋ ธํธ๋ถ๊ธ ํ๋์จ์ด์์ 30 ms ๋ฏธ๋ง์ผ๋ก 30 fps ์ค์๊ฐ์ด ๊ฐ๋ฅํ๋ค. ์ฝ๋, ์ฌ์ ํ์ต ๊ฐ์ค์น, ๊ทธ๋ฆฌ๊ณ 70,000์ฅ์ด ๋๋ ์ด๊ฐ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ ์ ๋ถ ๊ณต๊ฐํ๋ค.
๋ก๋ด ์์ ์ด๊ฐ ์ผ์๋ฅผ ๋ถ์ด๋ ค๋ ์ ์ฅ์์ ๋ณด๋ฉด, โ์ผ์๋ฅผ ์ฌ๊ธด ์๋๋ฐ raw ์ด๋ฏธ์ง๋ฅผ ๋ฌผ๋ฆฌ๋์ผ๋ก ์ด๋ป๊ฒ ๋ฐ๊พธ์ง?โ๋ผ๋ ๊ฐ์ฅ ๊ท์ฐฎ์ ๋จ๊ณ์ ์ง์ ์ฅ๋ฒฝ์ ํ ๋ฎ์ถ ๋๊ตฌ๋ค.
์๋ก : ์ ๋ณด์ ์ด ๋ฌธ์ ์ธ๊ฐ
์ด๊ฐ ์ผ์๋ ์ ์ด ํ๊ณผ ํ๋ฉด ๋ณํ์ ์ก์๋ธ๋ค. ์ด ์ ๋ณด๊ฐ ํ์ง(grasp) ์ฑ๊ณต ์์ธก, ๋ฏธ๋๋ฌ์ง ๊ฐ์ง, ์ ๋ฐ ์กฐ์, ์๊ฒฉ์กฐ์์ ํ ํฑ ํฌ๋ช ๋, ์ฌ์ง์ด ์ข ์ ์ง๋จ์ด๋ ๊ณผ์ผ ์์ฑ๋ ํ์ ๊น์ง ์ฐ์ธ๋ค. ๊ทธ๋ฐ๋ฐ ์๊ฐ์ด๋ ์ฒญ๊ฐ๊ณผ ๋ฌ๋ฆฌ ์ด๊ฐ์ ์์ง ํ์ค์ด ์๋ ์ ์ ๋ถ์ผ๋ค. ์ ์ ์ฉ๋, ์ ํญ, ์๊ธฐ, ์ํฅ, ๋น์ ๊ธฐ๋ฐ๊น์ง ๋ณํ ๋ฐฉ์(transduction)์ด ์ ๊ฐ๊ฐ์ด๋ค.
๋ฌธ์ ๋ ๊ฑฐ์ ๋ชจ๋ ์ผ์๊ฐ ๋ณด์ (calibration) ์ ๊ฑฐ์ณ์ผ ํ๋ค๋ ์ ์ด๋ค. ์ผ์๊ฐ ๋ด๋ฑ๋ raw ์ ํธ(์ ์์ด๋ RGB ํฝ์ ์ด๋ )๋ฅผ ํ์ด๋ ํ๋ฉด ๊ธฐํ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฏธ ์๋ ์์ผ๋ก ๋ฐ๊ฟ์ผ ๋น๋ก์ ์ธ๋ชจ๊ฐ ์๊ธด๋ค.
์ฌ๊ธฐ์ ๋ ๊ฐ๋๋ก ๋์ด๋๊ฐ ๊ฐ๋ฆฐ๋ค.
์ ํญ์์ด๋ ์ ์ ์ฉ๋์ ์ผ์๋ ๋น๊ต์ ์ฝ๋ค. ์ ์ฐจ์ ์ ํธ(์ ์ ํ๋)์์ ํ ํ๋๋ก ๊ฐ๋ ๋งคํ์ด๋ผ ์ ํ์ด๋ 2์ฐจ์์ผ๋ก ๊ทผ์ฌ๋๋ค. ๋ฐ๋ฉด ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์๋ ์นด๋ฉ๋ผ๊ฐ ์ฐ์ ๊ณ ์ฐจ์ ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. ์ด ๊ณ ์ฐจ์ ์ ๋ ฅ์ ํ ๊ฐ์ ์ ์ฐจ์ ์์ด๋ ๊น์ด๋งต ๊ฐ์ ๋ ๋ค๋ฅธ ๊ณ ์ฐจ์ ์์ผ๋ก ๋งคํํ๋ ๊ฑด ๋ง๋ง์น ์๋ค.
๊ณผ๊ฑฐ์๋ โ์ผ์ ์๋ต์ด ํ๋ฉด ์ ์ฒด์์ ๊ท ์ผํ๋คโ๊ฑฐ๋ โ์์ญ ๊ฐ ๋ํ(cross-talk)๊ฐ ์๋คโ ๊ฐ์ ๋จ์ํ ๊ฐ์ ์ ๊น์๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฐ์ ์ ์ ์ ๊ณต์ ์ ์๊ฒฉํ ์ ์ฝ์ ๊ฑธ๊ฑฐ๋(๊ฐ์ ์ ๋ง์ถ๋ ค๊ณ ์ผ์๋ฅผ ์ ๋ฐํ๊ฒ ๋ง๋ค์ด์ผ ํจ), ์ ํจ ๋ฒ์๋ฅผ ์ข์ ๋์ ์์ญ์ผ๋ก ์ ํํ๋ค(์์ ๋ณ์ ๊ตฌ๊ฐ์์๋ง ๋ง์). ๊ฐ์ ์ด ๊นจ์ง๋ฉด ๊ฒฐ๊ตญ ์ ๊ฒฝ๋ง์ผ๋ก ๋ณต์กํ ๋งคํ์ ์ง์ ํ์ตํ๊ฒ ๋๋๋ฐ, ์ด๊ฑด ๋๋์ ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌํ๋ค.
๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๋ ๊ฒ ๊ณ ์ญ์ด๋ค. ์ฌ๋์ด ์ผ์ผ์ด ์ฐ๊ธฐ์ ๋ ธ๋์ง์ฝ์ ์ด๋ผ, DIGIT์ฒ๋ผ โ์ด๊ฐ์ ๋์คํํ๊ฒ ๋คโ๋ฉฐ ๋์จ ์ ๊ฐ ์ผ์์ ์ทจ์ง๊ฐ ๋ฌด์ํด์ง๋ค. ๊ทธ๋์ ์๋ ๋ณด์ ์ฅ์น๊ฐ ๋ฑ์ฅํ๋๋ฐ, ๋๋ถ๋ถ ์ฐ์ ์ฉ 6์ถ ๋ก๋ดํ, CNC ๋จธ์ , ๋ชจ์ ์บก์ฒ ์์คํ ์ ์์กดํ๋ค. ์ด๋ฐ ์ฅ๋น๋ ๋น์ธ๊ณ ์ ์ ์ด ๊ธธ ๋ฟ ์๋๋ผ, ํ์นจ ์ฅ์น์ ์ขํ๊ณ์ ์ผ์์ ์ขํ๊ณ๋ฅผ ๋ง์ถ๋ ๊ณต๊ฐ ๋ณด์ (spatial calibration) ๊น์ง ๋ฐ๋ก ํด์ค์ผ ํ๋ค. ์ธก์ ์ ์ฐจ๊ฐ ๋ ๋ณต์กํด์ง๋ค.
3D Cal์ ์ด ์ง์ ์ ์ ํํ ๋ ธ๋ฆฐ๋ค. ๊ฑฐ์ ๋ชจ๋ ์ฐ๊ตฌ์ค์ ๊ตด๋ฌ๋ค๋๋ ์ ๊ฐ FDM(Fused Deposition Modelling) 3D ํ๋ฆฐํฐ๋ฅผ ์๋ ํ์นจ๊ธฐ๋ก ๋๊ฐ์์ผ, ๋น์ผ ์ฅ๋น๋ ๋ณ๋์ ๊ณต๊ฐ ๋ณด์ ๋ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ธ์ด ๋ด๊ฒ ๋ค๋ ๋ฐ์์ด๋ค.
๋ ผ๋ฌธ์ด ๋ด์ธ์ฐ๋ ๊ธฐ์ฌ๋ ์ธ ๊ฐ์ง๋ก ์ ๋ฆฌ๋๋ค.
- 3D Cal: ์ํ 3D ํ๋ฆฐํฐ๋ฅผ ์์ ์๋ ๋ณด์ ์ฅ์น๋ก ๋ฐ๊พธ๋ ์คํ์์ค ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- TouchNet: ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์์์ ๊น์ด๋งต์ ๋ฝ๋ ๊ฐ๋ฒผ์ด ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง๊ณผ ํ์ต ํ์ดํ๋ผ์ธ
- ์ค์ฉ์ ๋ฐ์ดํฐ ๊ฐ์ด๋๋ผ์ธ: DIGIT๊ณผ GelSight Mini์์ ์ข์ ๊น์ด๋งต์ ์ป์ผ๋ ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ํ์ํ์ง์ ๋ํ ๊ฒฝํ์ ๊ธฐ์ค
๋ฐฉ๋ฒ: ํ๋ฆฐํฐ๋ฅผ ์ธก์ ๊ธฐ๋ก ๋๊ฐ์ํค๋ ๋ฒ
์ ์ฒด ํ์ดํ๋ผ์ธ
๋จผ์ ํฐ ๊ทธ๋ฆผ๋ถํฐ ๋ณด์. ์ฌ์ฉ์๋ (A) ์ผ์ ๋ฐ์นจ๋๋ฅผ ์ถ๋ ฅํ๊ณ , (B) ์ผ์๋ฅผ ์ฌ๋ผ์ด๋ ํ์ผ๋ก ๋ผ์ฐ๊ณ , (C) ํค๋์ ํ์นจ์ ๋ฌ๊ณ , (D) ์๋ ํ๋ก๊ทธ๋จ์ผ๋ก ์ผ์๋ฅผ ์์ฒ ๋ฒ ์ฐ๋ฅธ๋ค. ๊ทธ๋ ๊ฒ ๋ชจ์ ๋ผ๋ฒจ๋ง ๋ฐ์ดํฐ๋ก (E) ๋ชจ๋ธ์ ํ์ตํ๊ฑฐ๋ ๋ฏธ์ธ์กฐ์ ํ๊ณ , (F) ํ์ต๋ ๋ชจ๋ธ๋ก ๊น์ด๋งต์ ์์ธกํ๋ค. (๋ ผ๋ฌธ Figure 1์ด ์ด ํ๋ฆ์ ํ ์ฅ์ ๋ด๊ณ ์๋ค.)
ํต์ฌ ํธ๋ฆญ: ๋ฐ์นจ๋๋ฅผ ๋ฐ๋ฅ์ ์ถ๋ ฅํด์ ๊ณต๊ฐ ๋ณด์ ์ ์์ค๋ค
์ด ๋ ผ๋ฌธ์์ ๊ฐ์ฅ ์๋ฆฌํ ๋ถ๋ถ์ ์ฌ์ค ์ ๊ฒฝ๋ง์ด ์๋๋ผ ์ด ํ ์ค์ด๋ค.
๋ฐ์นจ๋๋ฅผ ํ๋ฆฐํฐ ๋ฐ๋ฅ์ ์ง์ ์ถ๋ ฅํ๋ฉด, ์ผ์์ ์์น๊ฐ ํ๋ฆฐํฐ ์ขํ๊ณ ์์ ์๋์ผ๋ก ์ ์๋๋ค.
๋น์ ํ์๋ฉด ์ด๋ ๋ค. ๋ณดํต ์๋ ๋ณด์ ์ฅ์น๋ โ๋ก๋ดํ์ด ๋ค๊ณ ์๋ ํ์นจ์ ์ขํโ์ โ์ผ์๊ฐ ๋์ธ ์ขํโ๋ฅผ ๋ฐ๋ก ๋ง์ถฐ์ผ ํ๋ค. ๋ ์ฌ๋์ด ์๋ก ๋ค๋ฅธ ์ง๋๋ฅผ ๋ค๊ณ ๋ง๋ ์ฝ์์ ์ก์ผ๋ ค๋ฉด ๋จผ์ ์ขํ๊ณ๋ฅผ ์ผ์น์์ผ์ผ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ทธ๋ฐ๋ฐ 3D ํ๋ฆฐํฐ๋ ๋ฐ์นจ๋๋ฅผ ์๊ธฐ ๋ฐ๋ฅ์ ์๊ธฐ ์์ผ๋ก ์ฐ์ด๋ธ๋ค. ๊ทธ๋ฌ๋ ๋ฐ์นจ๋(=์ผ์)์ ์์น๋ฅผ ํ๋ฆฐํฐ๊ฐ ์ด๋ฏธ ์๊ณ ์๋ค. ๊ฐ์ ์ฌ๋์ด ๋ง๋ ์ง๋ ํ ์ฅ์ผ๋ก ์ฝ์ ์ฅ์์ ๋ง๋ ์ฌ๋์ ๋์์ ํ์ํ๋ ์ ์ด๋ค. ๋ณ๋์ hand-eye calibration์ด ํต์งธ๋ก ์ฌ๋ผ์ง๋ค.
3D ํ๋ฆฐํฐ๊ฐ ์ธก์ ๊ธฐ๋ก ์ธ ๋งํ ์ด์ ๋ ์ง๊ด์ ์ด๋ค. ํ๋ฆฐํฐ๋ ๋ณธ๋ ์ ๋ฐํ 3์ถ(XYZ) ์์น ๊ฒฐ์ ์ฅ์น๋ค. ์ถ๋ ฅ ํค๋๋ฅผ 0.x mm ๋จ์๋ก ์ํ๋ ์ขํ์ ๋ณด๋ผ ์ ์๋ค. ๋ ธ์ฆ ๋์ ํ์นจ์ ๋ผ์ฐ๋ฉด, ์์ถ๊ธฐ๋ ๊ทธ๋ฅ 2์ถ ๊ฐ ํธ๋ฆฌ(gantry)๊ฐ ๋๊ณ G-code๋ก ์ ์ด๋๋ ์๋ ์ธก์ ๊ธฐ๊ฐ ๋๋ค.
๋ฐ์ดํฐ ์์ง
์ฌ์ฉ์๋ ์ผ์๊ฐ ์ฌ๋ผ์ด๋ ํ์ผ๋ก ๋ค์ด๊ฐ๋๋ก ๋ฐ์นจ๋๋ฅผ ์ค๊ณํด ์ถ๋ ฅํ๋ค(Figure 1A). ์ผ์๋ฅผ ๋ผ์ฐ๊ณ (Figure 1B), 3D ํ๋ฆฐํ ํ ์ด๋ํฐ๋ก ํค๋์ ํ์นจ์ ๋จ๋ค(Figure 1C). ๋ ผ๋ฌธ์ ๋ฐ์ง๋ฆ 2 mm์ ๊ฐ์ฒด ๊ตฌํ ํ์นจ(McMaster-Carr 85175A586)์ ์ผ์ง๋ง, ํฌ๊ธฐ/๋ชจ์/์ฌ์ง์ด ๋ค๋ฅธ ํ์นจ๋ ์์ ๋กญ๊ฒ ์ธ ์ ์๋ค.
๊ทธ๋ค์ ์ฌ์ฉ์๋ ์ฐ๋ฅผ ์ขํ (x, y)์ ๊น์ด (z)๋ฅผ CSV๋ก ์ ์ด์ค๋ค. 3D Cal์ด ์ด ํ์ผ์ ์ฝ์ด ์ผ์๋ฅผ ์ฐ๋ฌ๊ฐ๋ฉฐ ์ขํ ๋ผ๋ฒจ์ด ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์๋ ์์ฑํ๋ค.
๊ฐ๋ ์ ์ธ ๋ฐ์ดํฐ ์์ง ๋ฃจํ๋ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
# 3D Cal data collection (conceptual)
probe_coords = read_csv("probe_grid.csv") # (x, y, z) on a 0.5mm x 0.5mm grid
sensor = connect_sensor("DIGIT") # or GelSight Mini, or any OpenCV device
for (x, y, z) in probe_coords:
move_printhead(x, y, z_safe) # G1 X.. Y.. Z.. (above the gel)
for depth in indentation_schedule(z): # press the rigid sphere into the gel
move_printhead(x, y, depth)
for k in range(30): # capture 30 frames per indentation
img = sensor.capture()
# label is derived analytically from the KNOWN sphere geometry,
# its (x, y) location, and the commanded indentation depth
save(img, label=make_gt_gradient(x, y, depth, probe_radius=2.0))
move_printhead(x, y, z_safe) # retract์ฌ๊ธฐ์ ๋ผ๋ฒจ์ด ์ด๋ป๊ฒ ์๊ธฐ๋์ง๊ฐ ์ค์ํ๋ค. ํ์นจ์ด ๊ธฐํ๊ฐ ์๋ ค์ง ๊ฐ์ฒด ๊ตฌ์ด๊ณ , ์์น์ ๋๋ฅด๋ ๊น์ด๋ ํ๋ฆฐํฐ๊ฐ ์๊ณ ์๋ค. ๊ทธ๋์ ๊ทธ ๊ตฌ๊ฐ ์ ค์ ์ฐ์ ํ๋ฉด ๊ธฐํ(๊ทธ๋ฆฌ๊ณ ๊ทธ๋ก๋ถํฐ ๋์ค๋ ํ๋ฉด ๊ธฐ์ธ๊ธฐ)๋ฅผ ํด์์ ์ผ๋ก ๊ณ์ฐํ ์ ์๋ค. ์ฌ๋์ด ์๋ฅผ ๋๊ณ ์ด ํ์๊ฐ ์๋ค. ์ด๊ฒ โ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ง๋ก ๋๋ ์์ฐโํ๋ ๋น๊ฒฐ์ด๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ ์ถ์์ ์ถ์ํ(abstraction)๋ฅผ ์ ๊ณตํ๋ค.
- 3D ํ๋ฆฐํฐ ์ถ์ํ: G-code ํธํ FDM ํ๋ฆฐํฐ๋ฉด ๋ฌด์์ด๋ ๋์ํ๋ค. ํ์ฌ Ender 3๋ฅผ ์ง์ํ์ง๋ง, ์ฌ์ฉํ๋ G-code ๋ช ๋ น์ด ํ๋ฆฐํฐ ๋น์ข ์์ ์ด๋ผ ๋ค๋ฅธ ๊ธฐ์ข ์ ์ฝ๋ ๋ช ์ค๋ง ์ถ๊ฐํ๋ฉด ๋๋ค.
- ์ผ์ ์ถ์ํ: ํ๋ฉด์ด๊ฑฐ๋ ๊ณก๋ฅ ๋ฐ๊ฒฝ์ด ์์ ์ผ์๋ผ๋ฉด ๋ฌด์์ด๋ ์ธ ์ ์๋ค. DIGIT, GelSight Mini, ๊ทธ๋ฆฌ๊ณ OpenCV ํธํ ์นด๋ฉ๋ผ ์ผ์๋ฅผ ๊ธฐ๋ณธ ์ง์ํ๋ค. ์ปค์คํ ์ผ์๋ ํต์ ์ฐ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ํ๋ ํจ์ ๋ ๊ฐ๋ง ๊ตฌํํ๋ฉด ๋ณด์ ์ ์ฐจ๊ฐ ์๋์ผ๋ก ๊ทธ ํจ์๋ฅผ ๋ถ๋ฌ ๋์ํ๋ค.
TouchNet: ๊ธฐ์ธ๊ธฐ๋ฅผ ๋งํ๊ณ , ์ ๋ถํด์ ๋์ด๋ฅผ ์ป๋๋ค
์ด์ ๋ชจ๋ธ์ด๋ค. ๋ชจ๋ธ ํ์ต๊ณผ ์ถ๋ก ์ ํ์ฌ ๋น์ ๊ธฐ๋ฐ ์ผ์(RGB ์ด๋ฏธ์ง ์ ๋ ฅ)์ ๊น์ด๋งต ์์ฑ์ ํ์ ๋์ด ์๋ค. ์ ์๋ค์ด ์ด ์ค์ ์ ๋จผ์ ๊ณ ๋ฅธ ์ด์ ๋ ๋ช ํํ๋ค. ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์ฑ์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ํฌ๋ ๋ถ์ผ๊ณ , DIGIT๊ณผ GelSight Mini๋ ์ฌ์ฉ์์ธต์ด ๋ํ ๊ณ ์ผ๋ฐ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅํ๋ฉฐ ๋ง์ปค๋ฆฌ์ค(markerless) ๋ณํ์ด ์กด์ฌํด ํ๋ฉด ๊ธฐํ ํฌ์ฐฉ์ ์ต์ ํ๋์ด ์๋ค. ๊ทธ๋์ ๊น์ด ์์ธก์ด ์ค์ฉ์ ์ธ ๋ณด์ ๋ชฉํ๊ฐ ๋๋ค.
TouchNet์ ๋ฐ์์์ ๊ฐ์ฅ ์๋ฏธํ ๋ถ๋ถ์ ๊น์ด๋ฅผ ์ง์ ๋งํ์ง ์๋๋ค๋ ์ ์ด๋ค. ๋์ ๊ฐ ํฝ์
์์ ํ๋ฉด์ด ์ผ๋ง๋ ๊ธฐ์ธ์ด์ก๋์ง(ํ๋ฉด ๊ธฐ์ธ๊ธฐ Gx, Gy)๋ฅผ ๋งํ๊ณ , ๊ทธ๊ฑธ ์ ๋ถํด์ ๋์ด๋ฅผ ๋ณต์ํ๋ค.
์ ์ด๋ ๊ฒ ๋์๊ฐ๊น. ๋ฑ์ฐ์ ๋ ์ฌ๋ ค ๋ณด์. ์ฐ ์ ์ฒด์ ๊ณ ๋ ์ง๋๋ฅผ ํ๋์ ์ธ์ฐ๋ ๊ฑด ์ด๋ ต๋ค. ํ์ง๋ง โ์ง๊ธ ๋ฐ๋ฐ์ด ์ผ๋ง๋ ๊ฐํ๋ฅธ๊ฐโ๋ผ๋ ๊ตญ์์ ์ธ ๊ฒฝ์ฌ๋๋ ์ด๋์๋ ๊ฐ์ ๊ท์น์ผ๋ก ์ด ์ ์๋ค. ๊ฒฝ์ฌ๋๋ง ์ถฉ๋ถํ ๋ชจ์ผ๋ฉด ์ ๋ถํด์ ๊ณ ๋ ์ง๋๋ฅผ ๊ทธ๋ฆด ์ ์๋ค. TouchNet์ ์ฐ์ ๋ชจ์์ ํต์งธ๋ก ์ธ์ฐ๋ ๋์ , โ์ด ์๊น + ์ด ์์น โ ์ด๋งํผ ๊ธฐ์ธ์ด์งโ์ด๋ผ๋ ๊ตญ์ ๋ฌผ๋ฆฌ ๊ท์น์ ๋ฐฐ์ด๋ค. ์ด ๊ท์น์ ํ์ต ๋ ๋ณธ ์ ์๋ ์๋ก์ด ๋ฌผ์ฒด ๋ชจ์์๋ ๊ทธ๋๋ก ์ ์ด๋๋ค. ์ค์ ๋ก ์ ์๋ค์ ์์ ์ปค๋์ ํฉ์ฑ๊ณฑ ๊ตฌ์กฐ๊ฐ, ๊ตฌํ ํ์นจ๋ง์ผ๋ก ํ์ตํ๋๋ฐ๋ ๋ฏธ์ง์ ํ์์ ๋ ์ ์ผ๋ฐํ๋๋ค๊ณ ๋ณด๊ณ ํ๋ค. ์ด๋ฏธ์ง๋ฅผ ์ ์ฐจ์ ์ ์ฌ ๋ฒกํฐ๋ก ์์ถํ๋ U-Net ๋ฅ์ ์ธ์ฝ๋-๋์ฝ๋๋ ํ์์ ํต์งธ๋ก ๊ธฐ์ตํ๋ ค๋ ๊ฒฝํฅ์ด ์์ด ์ด ์ ์์ ๋ถ๋ฆฌํ๋ค.
์ ๋ ฅ์ 5์ฑ๋์ด๋ค. ํ์ค RGB 3์ฑ๋์, x์ y ์ขํ๋ฅผ ๋ด์ 2์ฑ๋ ์์น ์๋ฒ ๋ฉ(CoordConv๋ฅ)์ ๋ถ์ธ๋ค. ์ ์์น๋ฅผ ์๋ ค์ค๊น. ์ ค ํ๋ฉด์ ์กฐ๋ช ์ ๊ท ์ผํ์ง ์๋ค. ๊ฐ์ ๋นจ๊ฐ์์ด๋ผ๋ ์ผ์ ๊ฐ์ฅ์๋ฆฌ์์ ๋ณธ ๋นจ๊ฐ๊ณผ ์ค์์์ ๋ณธ ๋นจ๊ฐ์ ์๋ฏธ๊ฐ ๋ค๋ฅด๋ค. ๊ทธ๋์ ๋คํธ์ํฌ์๊ฒ โ์ง๊ธ ๋ณด๋ ํฝ์ ์ด ์ผ์์ ์ด๋์ธ๊ฐโ๋ฅผ ์ง์ ์๋ ค์ค๋ค. ์ด๊ฒ ๋น๊ท ์ผ ์กฐ๋ช ๋ฌธ์ ๋ฅผ ์ ๊ณต๋ฒ์ผ๋ก ๋ค๋ฃจ๋ ๋ฐฉ์์ด๋ค.
๊ตฌ์กฐ๋ 9์ธต ์์ ํฉ์ฑ๊ณฑ๋ง์ด๋ค. ๊ฐ ๋ชจ๋์ ํฉ์ฑ๊ณฑ + ๋ฐฐ์น ์ ๊ทํ + ReLU + ๊ณต๊ฐ ๋๋กญ์์์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ฑ๋์ 5์์ 256๊น์ง ํค์ ๋ค๊ฐ ๋ค์ 2(=Gx, Gy)๋ก ์ค์ธ๋ค.
flowchart TB
IN["Input: 5-channel (R, G, B, x, y)"] --> C1["Conv2D 5 to 32 | BN+ReLU | Dropout 0.2"]
C1 --> C2["Conv2D 32 to 64 | BN+ReLU | Dropout 0.2"]
C2 --> C3["Conv2D 64 to 128 | BN+ReLU | Dropout 0.2"]
C3 --> C4["Conv2D 128 to 256 | BN+ReLU | Dropout 0.3"]
C4 --> C5["Conv2D 256 to 256 | BN+ReLU | Dropout 0.3"]
C5 --> C6["Conv2D 256 to 128 | BN+ReLU | Dropout 0.2"]
C6 --> C7["Conv2D 128 to 64 | BN+ReLU | Dropout 0.2"]
C7 --> C8["Conv2D 64 to 32 | BN+ReLU | Dropout 0.2"]
C8 --> C9["Conv2D 32 to 2"]
C9 --> OUT["Output: 2-channel Gradient (Gx, Gy)"]
OUT --> P["Fast Poisson Solver"]
P --> D["Depth Map Z"]
๊ธฐ์ธ๊ธฐ์์ ๊น์ด๋ก. ๋คํธ์ํฌ๊ฐ ๋ฑ์ ๊ธฐ์ธ๊ธฐ ๋งต์ ๋น ๋ฅธ ํธ์์ก(Poisson) ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ถ๋์ด ๊น์ด๋งต์ด ๋๋ค. ๊ธฐ์ธ๊ธฐ์ ๊น์ด์ ๊ด๊ณ๋ ๋จ์ํ๋ค.
G_x \approx \frac{\partial Z}{\partial x}, \qquad G_y \approx \frac{\partial Z}{\partial y}
๊ธฐ์ธ๊ธฐ ์ฅ(field)์ ๊ฐ์ฅ ์ ๋ค์ด๋ง๋ ๋์ด ์ฅ Z๋ฅผ ์ฐพ๋ ๋ฌธ์ ๋, ๋ค์ ํธ์์ก ๋ฐฉ์ ์์ ํธ๋ ๊ฒ์ผ๋ก ๊ท๊ฒฐ๋๋ค.
\nabla^2 Z = \frac{\partial G_x}{\partial x} + \frac{\partial G_y}{\partial y}
์ด๊ฑด GelSight ๊ณ์ด์์ ์ค๋ ์จ์จ ํ์ค ์ ์ฐจ๋ค. FFT/DCT ๊ธฐ๋ฐ ๋น ๋ฅธ ํธ์์ก ํ์ด๋ก ํ ๋ฐฉ์ ํผ๋ค. โ๊ฒฝ์ฌ๋ ์ง๋์์ ๊ณ ๋ ์ง๋๋ฅผ ๋ณต์โํ๋ ๋ฐ๋ก ๊ทธ ์ฐ์ฐ์ด๋ค.
์์ค ํจ์๋ ๊ธฐ์ธ๊ธฐ์ ๋ํ ํ๊ท ์ ๊ณฑ์ค์ฐจ(MSE)๋ค.
\mathcal{L} = \frac{1}{N}\sum_{i} \left[ (G_x^{\text{pred}} - G_x^{\text{gt}})^2 + (G_y^{\text{pred}} - G_y^{\text{gt}})^2 \right]
ํ์ต์ AdamW(ํ์ต๋ฅ 1e-4, weight decay 1e-4), ๋ฐฐ์น 64๋ก ์งํํ๊ณ , PyTorch์์ RTX 6000 GPU์ ํผํฉ์ ๋ฐ(autocast + GradScaler)์ ์ผ๋ค. ์ถ๋ก ์ ๋ ธํธ๋ถ๊ธ ํ๋์จ์ด์์ 30 ms ๋ฏธ๋ง์ผ๋ก ๋๋ 30 fps ์ค์๊ฐ์ด ๋๋ค. ๋ง์ ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์์ ๋์ ํ๋ ์๋ ์ดํธ์ ๋ง์๋จ์ด์ง๋ค.
์ฒ์๋ถํฐ ํ์ต(train from scratch)ํ ์๋, ๊ณต๊ฐ๋ DIGIT/GelSight Mini ๊ฐ์ค์น๋ก ๋ฏธ์ธ์กฐ์ (fine-tune)ํ ์๋ ์๋ค. ์ํํธ์จ์ด ๊ตฌ์กฐ์ ์๋ก์ด ๋ชจ๋ธ ์ํคํ ์ฒ๋ฅผ ๋น ๋ฅด๊ฒ ์ค๊ณํด ๋ถ์ด๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
์คํ: ์ผ๋ง๋ ์ ํํ๊ณ , ๋ฐ์ดํฐ๋ ์ผ๋ง๋ ํ์ํ๊ฐ
์คํ ์ค์
DIGIT๊ณผ GelSight Mini ๊ฐ๊ฐ์ ๋ฐ์นจ๋๋ฅผ ์ถ๋ ฅํด ๋ผ์ฐ๊ณ , ํค๋์ ๊ตฌํ ํ์นจ์ ๋ฌ์ 0.5 mm ร 0.5 mm ๊ฒฉ์๋ก ์ฐ๋ ๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ๊ฐ 1,221๊ฐ, 1,209๊ฐ์ ์๋ก ๋ค๋ฅธ ํ์นจ ์์น๊ฐ ๋์๋ค. ๊ฐ ์์น์์ ๋๋ฅผ ๋๋ง๋ค 30์ฅ์ฉ ์บก์ฒํ๋ค. ๋ฐ์ดํฐ ์์ง์ ์ผ์๋น ์ฝ 2์๊ฐ์ด ๊ฑธ๋ ธ๋ค. ์ ์ฒด์ ์ผ๋ก 70,000์ฅ์ด ๋๋ ํ์นจ ์ด๋ฏธ์ง๋ฅผ ๋ชจ์๊ณ , ์ด ๋ฐ์ดํฐ์ ๋ ๊ณต๊ฐํ๋ค.
๋ฐ์ดํฐ ์ ์ ์ฐ๊ตฌ(ablation): ์ผ๋ง๋ ๋นฝ๋นฝ์ด ์ฐ๋ฌ์ผ ํ๋
๊ฐ์ฅ ์ค๋ฌด์ ์ผ๋ก ์ ์ฉํ ๋ถ์์ด๋ค. ์ ์๋ค์ ์ ์ฒด ์ขํ ์ค P = 80%, 40%, 20%, 10%, 5%, 1%๋ง ๋ฌด์์๋ก ๊ณจ๋ผ ํ์ตํด ๋ดค๋ค. P = 80%๋ก ํ์ตํ ๋ ๋๋จธ์ง 20%๋ฅผ ๊ฒ์ฆ์ฉ์ผ๋ก ๋ผ์ด๋๊ณ , ๋ชจ๋ ๋ชจ๋ธ์ ๊ฐ์ ๊ฒ์ฆ ์งํฉ์ผ๋ก ํ๊ฐํ๋ค. ์ (epoch) ์๊ฐ ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๊ฑธ ๋ณด์ ํ๋ ค๊ณ ๋ค์์ฒ๋ผ ์ ์๋ฅผ ๋ง์ท๋ค(๋ฐ์ดํฐ๊ฐ ์ ์ผ๋ฉด ๋ ๋ง์ด ๋๋ฆผ).
N = 60 \times \left( \frac{80\%}{P} \right)
๊ฒฐ๊ณผ(Figure 2)๋ ์ด๋ ๋ค. ๋ ์ผ์ ๋ชจ๋ 1%(์ขํ 12๊ฐ ์์ค)๋ก ํ์ตํ๋ฉด ์ฑ๋ฅ์ด ๋ฌด๋์ก์ง๋ง, 5% ์ด์(์ขํ ์ฝ 60~61๊ฐ)๋ถํฐ๋ ๋น๊ต์ ์ผ๊ด๋๋ค. ์์ฝ(pill) ๋ชจ์ ํ ์คํธ ๊ฐ์ฒด์ ๋ณต์ ๊น์ด๋งต๋ 5%์ 80%์์ ์๊ฐ์ ์ผ๋ก ๋น์ทํ๊ณ 1%์์๋ง ๋ง๊ฐ์ก๋ค.
๋ค๋ง ๋จ์ผ ๊ฐ์ฒด ํ ๋ฒ ๋ณด๊ณ ๋๋ผ ์ผ์ด ์๋๋ค. ์ ์๋ค์ ๊ฒ์ฆ ์ขํ๋ง๋ค ๊ธฐ์ธ๊ธฐ ์์ธก์ MSE๋ฅผ ๋ฐ๋ก ๊ณ์ฐํด ์ผ์ ํ๋ฉด ์ ๊ณต๊ฐ ๋ถํฌ๋ฅผ ๋ค์ฌ๋ค๋ดค๋ค(Figure 3). ํ์ต ์ขํ๊ฐ ๋ฌ์ฑ๋ฌ์ฑํ ์์ญ์์ MSE๊ฐ ๋๋ ท์ด ์น์์๋๋ฐ(ํนํ P=1%), ์ด๊ฑด ์ผ์ ํ๋ฉด ์๋ต์ด ๋น๊ท ์ผํ๋ค๋ ์ฆ๊ฑฐ๋ค. ๊ฐ์ฐ์์ ์ปค๋๋ฐ๋์ถ์ (KDE)์ผ๋ก MSE ๋ถํฌ๋ฅผ ๊ทผ์ฌํด ๋ณด๋, ํ์ต ์ขํ๊ฐ ๋์๋ก ํ๊ท ๊ณผ ํ์คํธ์ฐจ๊ฐ ๋ชจ๋ ์ค์๋ค. ์ฆ ๋นฝ๋นฝ์ด ์ฐ๋ฅผ์๋ก ๋ณต์ ์ฑ๋ฅ ์์ฒด๋ณด๋ค ๋ณต์์ ํ๋ฉด ๊ฐ ํธ์ฐจ(variability)๊ฐ ์ค์ด๋ ๋ค.
ํต๊ณ ๊ฒ์ ๋ ํ๋ค. Bonferroni ๋ณด์ ์ ์ ์ฉํ 5-ํ๋ณธ t-๊ฒ์ (ฮฑ=0.01)์ผ๋ก ๊ฐ P์ MSE ๋ถํฌ๋ฅผ P=80% ๋ชจ๋ธ๊ณผ ๋น๊ตํ๋ค.
| ์ผ์ | ๋น๊ต | t ๊ฐ | p ๊ฐ | 80%์ ์ ์์ฐจ |
|---|---|---|---|---|
| DIGIT | 80% vs 1% | -27.36 | < 0.001 | ์์ |
| DIGIT | 80% vs 5% | -7.06 | < 0.001 | ์์ |
| DIGIT | 80% vs 10% | -3.20 | 0.008 | ์์ |
| DIGIT | 80% vs 20%, 40% | - | - | ์์ |
| GelSight Mini | 80% vs 1% | -29.30 | < 0.001 | ์์ |
| GelSight Mini | 80% vs 5% | -11.76 | < 0.001 | ์์ |
| GelSight Mini | 80% vs 10% | -4.82 | < 0.001 | ์์ |
| GelSight Mini | 80% vs 20%, 40% | - | - | ์์ |
๋ถํฌ ๋ชจ์์ด ๋น๋ชจ์์ ์ด๋ผ Mann-Whitney U ๊ฒ์ ๋ ํ๊ณ ๊ฒฐ๊ณผ๋ ๊ฐ์๋ค. 20% ์ง์ ์์ ์ฑ๋ฅ์ด ์์ ํ๋๊ณ , ๊ทธ ์ด์์ ์๋ฏธ ์๋ ๊ฐ์ ์ด ๊ฑฐ์ ์์๋ค.
์ฌ๊ธฐ์ ๋์จ ์ค์ฉ ๊ฐ์ด๋๋ผ์ธ์ด ์ด ๋ ผ๋ฌธ์ ์์ง๋ค.
๋ ์ผ์ ๋ชจ๋์์ ์ต์ ์ฑ๋ฅ์ ๋ด๋ ค๋ฉด, 0.5 mm ร 0.5 mm ๊ฒฉ์์์ ์ ์ฒด ์ขํ์ 20% ์ด์(์ฝ 240~250๊ฐ ์ขํ)์ ๋ฌด์์๋ก ์ฐ๋ฅด๋ผ. ์์ง ์๊ฐ์ ์ฝ 2์๊ฐ์ด๋ฉด ์ถฉ๋ถํ๋ค.
๋ฏธ์ง ๊ฐ์ฒด ์ฑ๋ฅ
ํ์ต์ ๊ตฌํ ํ์นจ์ผ๋ก๋ง ํ์ง๋ง, ํ๊ฐ๋ ์ฒ์ ๋ณด๋ ๋น๊ตฌํ ๊ฐ์ฒด๋ก ํ๋ค. CAD๋ก ๋ฐ๊ตฌ(hemispheres), ์์ฝ(pill), ํฐ(pawn, ์ฒด์ค ๋ง) ์ธ ์ข ๋ฅ๋ฅผ ์ค๊ณํด 10 mm ร 10 mm๋ก ์ถ๋ ฅํ ๋ค ์ผ์์ ์์ผ๋ก ๋๋ ๋ค(Figure 4A). STL์ ๊น์ด๋งต์ผ๋ก ๋ณํํด ground-truth๋ก ์ผ๊ณ , P=80% ๋ชจ๋ธ ์์ธก๊ณผ ๋น๊ตํ๋ค.
์์ผ๋ก ๋๋ ๊ธฐ ๋๋ฌธ์ xy ํ๋ฉด ์ ๋ ฌ์ 2D ๊ต์ฐจ์๊ด(cross-correlation)์ผ๋ก ๋ง์ท๊ณ , ๋๋ฅธ ๊น์ด์ ๋ฏธ์ธํ ์ฐจ์ด๋ ground-truth CAD์ ๊น์ด๋ฅผ ์กฐ์ ํด ์์ธก๊ณผ์ MSE๋ฅผ ์ต์ํํ๋ ์์ผ๋ก ๋ณด์ ํ๋ค. (์ด ๋ณด์ ์ ์ฐจ๋ ๋ค์ ๋นํ์์ ๋ค์ ์ง๋๋ค.)
๋ณต์ ๊น์ด๋งต์ ํ ์คํธ ๊ฐ์ฒด ์ค๊ณฝ๊ณผ ์๊ฐ์ ์ผ๋ก ์ ๋ฎ์๋ค(Figure 4B, C). ์ ๋ ๊ฒฐ๊ณผ(Table I)๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋จ์๋ ฮผm.
| ์ค์ฐจ ์ข ๋ฅ | ํ ์คํธ ๊ฐ์ฒด | DIGIT (ฮผm) | GelSight Mini (ฮผm) |
|---|---|---|---|
| Overall Error | Hemispheres | 16.984 | 22.413 |
| Overall Error | Pill | 16.274 | 23.641 |
| Overall Error | Pawn | 52.211 | 48.821 |
| Type 1 Error | Hemispheres | 5.641 | 5.143 |
| Type 1 Error | Pill | 8.807 | 7.557 |
| Type 1 Error | Pawn | 18.788 | 17.360 |
| Type 2 Error | Hemispheres | 107.127 | 171.605 |
| Type 2 Error | Pill | 65.274 | 152.846 |
| Type 2 Error | Pawn | 296.381 | 290.014 |
์ค์ฐจ๋ฅผ ๋ ์ข ๋ฅ๋ก ์ชผ๊ฐ ๊ฒ ๋ถ์์ ํต์ฌ์ด๋ค(Figure 5).
- Type 1 ์ค์ฐจ: ground-truth ๊น์ด๊ฐ 0์ธ ์์ญ(=์ค์ ๋ก ์ ๋ฟ์ ๊ณณ)์ ํฝ์ ์ค์ฐจ. ๋ชจ๋ ๊ฐ์ฒด์์ ๋ ์ผ์ ๋ชจ๋ 20 ฮผm ๋ฏธ๋ง์ด์๋ค. ์ฆ โ๋ฟ์ง ์์ ๊ณณโ์ ์ก์๋ด๋ ๋ฐ๋ ๊ฑฐ์ ์๋ฒฝํ๋ค. ๊ฑฐ์ง ์ ์ด์ด ์ ๋ค๋ ๋ป์ด๋ผ, ์ ์ด ์์ญ ๋ถํ ๊ฐ์ ์ฉ๋์ ๋ ๋ ํ๋ค.
- Type 2 ์ค์ฐจ: ground-truth ๊น์ด๊ฐ 0์ด ์๋ ์์ญ(=์ค์ ๋ก ๋ฟ์ ๊ณณ)์ ๊น์ด ์ค์ฐจ. 65~296 ฮผm๋ก ๋ ์ปธ๋ค. ๋ค๋ง ๋ฐ๊ตฌ์ ์์ฝ์ ๋์ฒด๋ก 200 ฮผm ์๋์ ๋ชฐ๋ ค ์์๋ค. ์ ์๋ค์ ์ด ์ ๋(์ต๋ ๋๋ฆผ ๊น์ด์ ์ฝ 5~15%)๋ฉด ์๋น์ ์ค์ธ๊ณ ์กฐ์ ์์ ์ ์ถฉ๋ถํ๋ค๊ณ ๋ณธ๋ค.
ํฅ๋ฏธ๋ก์ด ๋น๋์นญ๋ ๋ณด์ธ๋ค. ๋จ์ํ ๊ธฐํ(๋ฐ๊ตฌ, ์์ฝ)์์๋ DIGIT์ด ๋ ์ ํํ์ง๋ง, ํฐ์์๋ GelSight Mini๊ฐ ์์ฐ๋ค. ๋ ์ผ์ ๋ชจ๋ ํฐ์ ๋ชฉ ๋ถ๋ถ์ ๋ณต์ํ๋ ๋ฐ ์ ๋ฅผ ๋จน์๋๋ฐ, ํฐ ๊ธฐํ์ ์ผ์ ์กฐ๋ช ๋ฐฐ์น ํ์ ๊ทธ ๋ถ๋ถ์ด ๊ทธ๋ฆผ์์ ๋ฌปํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์๋ค์ ๋ ๋ค์ํ ํ์นจ ๊ธฐํ๋ก ํ์ตํ๋ฉด ๊ทธ๋ฆผ์์ ๋ํ ๊ฐ๊ฑด์ฑ์ด ์ฌ๋ผ๊ฐ ๊ฒ์ผ๋ก ๋ณธ๋ค.
๋นํ์ ๊ณ ์ฐฐ: ๋ฌด์์ด ์ข๊ณ , ๋ฌด์์ด ๋ฏธ์ฌ์ฉ์๊ฐ
๊ฐ์
์ง์ ์ฅ๋ฒฝ์ ์ง์ง๋ก ๋ฎ์ถ๋ค. 6์ถ ๋ก๋ดํ์ด๋ CNC, ๋ชจ์ ์บก์ฒ๋ ์๋ฐฑ~์์ฒ๋ง ์์ ์ ์ ๋ ๊ธธ๋ค. Ender 3๋ ์ญ์๋ง ์์ด๋ค. ๋ฐ์นจ๋๋ฅผ ๋ฐ๋ฅ์ ์ถ๋ ฅํด ๊ณต๊ฐ ๋ณด์ ์ ํต์งธ๋ก ์์ค ํธ๋ฆญ์ ๋จ์ํ์ง๋ง ํจ๊ณผ๊ฐ ํฌ๋ค. ์ ์ ๋์ด๋์ ๋น์ฉ์ ๋์์ ๊น์๋ค.
๊ฐ๋ณ๊ณ ์ค์๊ฐ์ด๋ค. 9์ธต ์์ ํฉ์ฑ๊ณฑ๋ง์ด๋ผ ๋ ธํธ๋ถ์์ 30 fps๊ฐ ๋์จ๋ค. ๋ฌด๊ฑฐ์ด ํธ๋์คํฌ๋จธ๋ ๋ํจ์ ๊ธฐ๋ฐ ๋ณต์๊ณผ ๋๋น๋๋ค. ๋ก๋ด ์์ ์ฌ๋ ค ์ ์ด ๋ฃจํ์ ๋ฐ๋ก ๋ฃ์ ์ ์๋ค๋ ์ ์ด ์ค๋ฌด์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๋ค.
์ผ๋ฐํ๊ฐ ๋๋ค. ๊ตฌํ ํ์นจ ํ๋๋ก๋ง ํ์ตํ๊ณ ๋ ๋ฐ๊ตฌ/์์ฝ/ํฐ ๊ฐ์ ๋ฏธ์ง ํ์์ ๋ณต์ํ๋ค. ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตญ์์ ์ผ๋ก ๋งํ๊ณ ์ ๋ถํ๋ ์ค๊ณ ๋๋ถ์ด๋ค. โํ์์ ์ธ์ฐ์ง ๋ง๊ณ ๊ตญ์ ๊ท์น์ ๋ฐฐ์๋ผโ๋ ๋ฐฉํฅ์ด ๋ฐ์ดํฐ ํจ์จ๊ณผ ์ผ๋ฐํ ์์ชฝ์์ ํตํ๋ค.
์ฌํ์ฑ๊ณผ ๊ณต๊ฐ์ฑ. ์ฝ๋, DIGIT/GelSight Mini ์ฌ์ ํ์ต ๊ฐ์ค์น, 70,000์ฅ ๋ฐ์ดํฐ์ ์ ์ ๋ถ ๊ณต๊ฐํ๋ค. ๋ฐ์ดํฐ ๊ฐ์ด๋๋ผ์ธ(20%, ์ฝ 250์ขํ, 2์๊ฐ)๋ ๊ตฌ์ฒด์ ์ด๋ผ ๋ฐ๋ผ ํ๊ธฐ ์ฝ๋ค.
์ฝ์ ๊ณผ ํ๊ณ
1. ์ ๊ฐ ํ๋ฆฐํฐ์ z์ถ ์ ๋ฐ๋๋ผ๋ ๊ทผ๋ณธ ์๋ฌธ. ์ด ๋ฐฉ๋ฒ์ ๊น์ด ๋ผ๋ฒจ์ ํ๋ฆฐํฐ์ z ์์น์์ ์ป๋๋ค. ๊ทธ๋ฐ๋ฐ ์ธก์ ํ๋ ค๋ ์ด๊ฐ ๊น์ด๋ ์์ญ~์๋ฐฑ ฮผm ๋จ์๋ค. FDM ํ๋ฆฐํฐ(ํนํ Ender 3)์ z์ถ ๋ฐ๋ณต์ ๋ฐ๋์ ๋ฐฑ๋์(backlash)๋ ๋ณดํต ๊ทธ๋ณด๋ค ๊ฑฐ์น ๋ค. ๋ ผ๋ฌธ์ ๋ผ๋ฒจ์ ์ ๋ ์ ๋ฐ๋ ์์ฒด๋ฅผ ์ ๋ ๊ฒ์ฆํ์ง ์๋๋ค. ๋ณด์ ์ฅ์น๋ฅผ ์ธ๊ฒ ๋ง๋ ๋๊ฐ๊ฐ ground-truth ํ์ง์ ์ด๋๊น์ง ์ํฅ์ ์ฃผ๋์ง๋ ๋ ๋ฐ์ ธ๋ณผ ๋ฌธ์ ๋ค.
2. ground-truth๋ฅผ ์์ธก์ ๋ง์ถฐ ๋ณด์ ํ๋ค. ๋ฏธ์ง ๊ฐ์ฒด ํ๊ฐ์์ ์์ผ๋ก ๋๋ ๊ธฐ ๋๋ฌธ์, xy ์ ๋ ฌ์ ๊ต์ฐจ์๊ด์ผ๋ก ๋ง์ถ๊ณ ๊น์ด๋ โ์์ธก๊ณผ์ MSE๊ฐ ์ต์๊ฐ ๋๋๋กโ CAD ๊น์ด๋ฅผ ์กฐ์ ํ๋ค. ์ ๋ ฌ์ ํฉ๋ฆฌ์ ์ด์ง๋ง, ground-truth์ ์์ ํ๋ผ๋ฏธํฐ(๊น์ด)๋ฅผ ์์ธก์ ๋ง์ถฐ ์ต์ ํํ๋ฉด ๋ณด๊ณ ๋ ์ค์ฐจ๊ฐ ๋ค์ ํํ๊ฒ ๋์ฌ ์ ์๋ค. ์๋ํ๋ z ์ ์ด ์ธ๋ดํ ์ด์ ์ผ๋ก ํ๊ฐํ๋ค๋ฉด ๋ ๊น๋ํ์ ๊ฒ์ด๋ค.
3. ๋จ์ผ ํ์นจ ๊ธฐํ์ ๊ทธ๋. ๊ตฌํ ํ์นจ๋ง ์จ์, ์ค๋ชฉํ๊ฑฐ๋ ๊ทธ๋ฆผ์๊ฐ ์ง๋ ๊ธฐํ(ํฐ์ ๋ชฉ)์์ ๋ฌด๋์ก๋ค. ์ ์๋ค๋ ์ธ์ ํ๋ ๋ถ๋ถ์ด๋ค. ํ์นจ ๋ค์์ฑ์ ๋๋ฆฌ๋ฉด ๋์์ง๊ฒ ์ง๋ง, ๊ทธ๋งํผ ์์ง ์ ์ฐจ๊ฐ ๋ณต์กํด์ง๋ค.
4. ๋น๊ต ๋ฒ ์ด์ค๋ผ์ธ์ด ์๋ค. ์คํ์ ์๊ธฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ ๋น์จ๋ณ๋ก ๋น๊ตํ ๋ฟ, ๋ค๋ฅธ ๊น์ด ๋ณต์ ๋ฐฉ๋ฒ(๊ณ ์ ์ photometric stereo ๋ฃฉ์ ํ ์ด๋ธ ๋ฐฉ์, MLP ๊ธฐ๋ฐ, ๊ธฐ์กด GelSight ๋ณด์ ๋ฑ)๊ณผ์ ์ ๋ฉด ๋น๊ต๊ฐ ์๋ค. โ๊ธฐ์กด ๋ฐฉ์๋ณด๋ค ์ ํํ๋คโ๊ฐ ์๋๋ผ โ์ธ๊ฒ, ์ถฉ๋ถํ ์ ํํ๋คโ๋ ์ฃผ์ฅ์ด๋ผ ๋ฐฉํฅ์ ๋ง์ง๋ง, ์ ํ๋ ์ฐ์๋ ์ ์ฆ๋์ง ์์๋ค.
5. ์ ์ฉ ๋ฒ์๊ฐ ์ข๋ค(์์ง). ํ์ฌ๋ ๋น์ ๊ธฐ๋ฐ ์ผ์, ๊น์ด๋งต ์ถ๋ ฅ์ ํ์ ๋๋ค. ํ/์ ๋จ๋ ฅ์ ๋ฏธ์ง์์ด๊ณ , ํ๋ฉด์ด๊ฑฐ๋ ๊ณก๋ฅ ๋ฐ๊ฒฝ์ด ์์ ์ผ์์๋ง ์ธ ์ ์๋ค. ๊ณก๋ฉด ์๋ ์ผ์(์: ๋ฐ๊ตฌํ ์ง๋ฌธ ์ผ์)์๋ ๋ฐ๋ก ์ ์ฉํ๊ธฐ ์ด๋ ต๋ค.
6. ๊ฒ์ฆ ํญ์ด ์๋ค. ์ผ์ 2์ข , ๋ฏธ์ง ๊ฐ์ฒด 3์ข ์ด๋ค. ๋ถ์ผ ํ์ค ์์ค์ ๊ฒ์ฆ์ผ๋ก๋ ์ ์ ํธ์ด๋ค. ๋ค์ํ ์ ค ๊ฒฝ๋, ๋ ธํํ๋ ์ ค, ๋ง์ปค ์๋ ๋ณํ๊น์ง ๊ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ฌ์ง๊ฐ ์๋ค.
๊ด๋ จ ์ฐ๊ตฌ์์ ์์น
์ผ์ ํ๋์จ์ด ๊ณ๋ณด: GelSight(Yuan 2017), DIGIT(Lambeta 2020), GelSight Wedge, GelSlim 4.0, 9DTact, TacTip ๋ฑ. 3D Cal์ ์ ์ผ์๋ฅผ ๋ง๋๋ ๋์ , ์ด๋ฏธ ์๋ ์ผ์๋ฅผ ์ฐ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ค.
์ํํธ์จ์ด ์ํ๊ณ: PyTouch(Lambeta 2021)๋ ํตํฉ ์ธํฐํ์ด์ค๋ฅผ, TACTO(Wang 2022)๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค. 3D Cal์ ์ด ์ํ๊ณ์์ ๋น์ด ์๋ ๋ณด์ ์นธ์ ์ฑ์ด๋ค. ์ธํฐํ์ด์ค๋, ์๋ฎฌ๋ ์ดํฐ๋ ์์ง๋ง โraw๋ฅผ ๋ฌผ๋ฆฌ๋์ผ๋ก ๋ฐ๊พธ๋ ์๋ ๋ณด์ โ์ ๋น ์ ธ ์์๋ค.
์๋ ๋ณด์ ์ ํ ์ฐ๊ตฌ์์ ๋๋น: DenseTact(Do & Kennedy 2022)๋ CNC, FeelAnyForce(Shahidzadeh 2025)๋ 6์ถ ํ, TensorTouch(Do 2025)๋ ๋ชจ์ ์บก์ฒ๋ฅผ ์ด๋ค. ๋ชจ๋ ๋น์ธ๊ณ ๊ณต๊ฐ ๋ณด์ ์ด ํ์ํ๋ค. 3D Cal์ ๊ฐ์ ์๋ํ๋ฅผ ์ ๊ฐ ํ๋ฆฐํฐ + ์๋ฌต์ ์ขํ ์ ๋ ฌ๋ก ๋ฌ์ฑํด ์ ๊ทผ์ฑ์ ๋์ด๋ด๋ ธ๋ค.
๋ณต์ ๋ฐฉ๋ฒ๋ก ๋๋น: ๊ณ ์ GelSight ๋ณด์ (Johnson & Adelson 2009/2011)์ ๋ณด์ ๊ตฌ + ๋ฃฉ์ ํ ์ด๋ธ๋ก ์โ๊ธฐ์ธ๊ธฐ๋ฅผ ๋งคํํ๋ค. TouchNet์ ๋ฃฉ์ ํ ์ด๋ธ ๋์ CNN์ ์ฐ๊ณ , CoordConv๋ฅ ์ขํ ์๋ฒ ๋ฉ(Liu 2018)์ผ๋ก ๋น๊ท ์ผ ์กฐ๋ช ์ ๋ช ์์ ์ผ๋ก ๋ค๋ฃฌ๋ค. ๊ธฐ์ธ๊ธฐโ๊น์ด ํธ์์ก ์ ๋ถ์ ์ด ๊ณ์ด์ ํ์ค์ ๊ทธ๋๋ก ๊ณ์นํ๋ค.
๋ฏธ๋ ๋ฐฉํฅ: ์ ์๋ค์ ์ผ์๋ณ ๊ฐ๋ณ ๋ณด์ ์์ ๋ฒ์ด๋ ์ ์ดํ์ต(Touch2Touch, Sparsh)๊ณผ ์ผ์ ๋น์ข ์ ๋ชจ๋ธ๋ก ๊ฐ๋ ํ๋ฆ์ ๋ด๋ค๋ณธ๋ค. ์ด๋ฅผ ์ํด 70,000์ฅ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ฐํ๋ค. ๋๊ท๋ชจ ์ด๊ฐ ๋ฐ์ดํฐ ์์ง์ ์ธ๊ฒ ์๋ํํ๋ ๋๊ตฌ๋ผ๋ ์ ์์, ์ด ํฐ ๊ทธ๋ฆผ์ ๋ถํ์ผ๋ก ๊ธฐ์ฌํ๋ค.
์์ฝ ๋ฐ ๊ฒฐ๋ก
3D Cal์ โ์ด๊ฐ ์ผ์ ๋ณด์ ์ด ์ ์ด๋ ๊ฒ ๊ท์ฐฎ์๊ฐโ๋ผ๋ ํ์ฅ์ ํต์ฆ์ ์ ํํ ๊ฒจ๋ฅํ ๋๊ตฌ๋ค. ๋น์ผ ์ฅ๋น ๋์ ํํ 3D ํ๋ฆฐํฐ๋ฅผ ์๋ ํ์นจ๊ธฐ๋ก ์ฐ๊ณ , ๋ฐ์นจ๋๋ฅผ ๋ฐ๋ฅ์ ์ถ๋ ฅํด ๊ณต๊ฐ ๋ณด์ ์ ์์ค ๋ฐ์์ด ๋จ์ํ๋ฉด์๋ ์ค์ฉ์ ์ด๋ค. ๊ฐ๋ฒผ์ด TouchNet์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตญ์์ ์ผ๋ก ๋งํ๊ณ ํธ์์ก์ผ๋ก ์ ๋ถํ๋ ์ ๊ณต๋ฒ์ผ๋ก, ๊ตฌํ ํ์นจ๋ง ๋ณด๊ณ ๋ ๋ฏธ์ง ํ์์ 30 fps ์ค์๊ฐ์ผ๋ก ๋ณต์ํ๋ค. ๋ฏธ์ง ๊ฐ์ฒด ์ ์ฒด ํ๊ท ์ค์ฐจ๋ ๋ ์ผ์ ๋ชจ๋ ์์ญ ฮผm ์์ค์ด๊ณ , ๋น์ ์ด ์์ญ ํ๋ณ์ ๊ฑฐ์ ์๋ฒฝํ๋ค.
ํ๊ณ๋ ๋ถ๋ช ํ๋ค. ์ ๊ฐ ํ๋ฆฐํฐ z์ถ ์ ๋ฐ๋๊ฐ ๋ผ๋ฒจ ํ์ง์ ์ฃผ๋ ์ํฅ์ด ์ ๋ ๊ฒ์ฆ๋์ง ์์๊ณ , ๋ฏธ์ง ๊ฐ์ฒด ํ๊ฐ์์ ground-truth ๊น์ด๋ฅผ ์์ธก์ ๋ง์ถฐ ๋ณด์ ํ ์ ์ ์ค์ฐจ๋ฅผ ํํ๊ฒ ๋ง๋ค ์ ์๋ค. ๋จ์ผ ๊ตฌํ ํ์นจ ํ์ ๊ทธ๋ฆผ์ ์ง ์ค๋ชฉ ๊ธฐํ์์ ์ฝํ๊ณ , ๋ค๋ฅธ ๋ณด์ ๋ฐฉ๋ฒ๊ณผ์ ์ ๋ฉด ๋น๊ต๋ ์๋ค. ์ ์ฉ ๋ฒ์๋ ์์ง ๋น์ ๊ธฐ๋ฐ ์ผ์์ ๊น์ด๋งต์ ๋ฌถ์ฌ ์๋ค.
๊ทธ๋ผ์๋ ๋ก๋ด ์์ ์ด๊ฐ์ ๋ถ์ด๋ ค๋ ์ค๋ฌด์ ์ ์ฅ์์ ์ด ๋๊ตฌ์ ๊ฐ์น๋ ๋๋ ทํ๋ค. ์ผ์๋ฅผ ์ฌ๊ณ โ ๋ฐ์นจ๋๋ฅผ ์ถ๋ ฅํ๊ณ โ 2์๊ฐ ์ฐ๋ฅด๊ณ โ ์ฌ์ ํ์ต ๊ฐ์ค์น๋ก ๋ฏธ์ธ์กฐ์ ํ๋ฉด ๋์ด๋ผ๋ ์ํฌํ๋ก๋, ๋น์ผ ์ฅ๋น ์ ์ ๊ณผ ์์์ ๋ฐ์ดํฐ ์์ง์ด๋ผ๋ ๋ ๋ณ๋ชฉ์ ๋์์ ์น์ด๋ค. DIGIT์ด๋ GelSight Mini๋ฅผ ๋ง์ง๋ ์ฐ๊ตฌ๋ผ๋ฉด ์ฌ์ ํ์ต ๊ฐ์ค์น๋ฅผ ๊ทธ๋๋ก ๋ฐ์ ๋ฏธ์ธ์กฐ์ ๋ถํฐ ์์ํด ๋ณด๋ ๊ฒ ํฉ๋ฆฌ์ ์ด๋ค. ์ ์ผ์๋ฅผ ๊ฐ๋ฐ ์ค์ด๋ผ๋ฉด, ํต์ /์ด๋ฏธ์ง ํ๋ ํจ์ ๋ ๊ฐ๋ง ๊ตฌํํด ์๋ ๋ฐ์ดํฐ ์์ง ํ์ดํ๋ผ์ธ์ ์น๋ ๋ฐฉํฅ์ ๊ฒํ ํ ๋งํ๋ค.
ํฅํ ํ/์ ๋จ๋ ฅ ๋ณด์ ๊ณผ ์ ์ ยท์ ํญ์ ์ผ์ ์ง์์ด ๋ํด์ง๊ณ , ๊ณต๊ฐ๋ 70,000์ฅ ๋ฐ์ดํฐ๊ฐ ์ผ์ ๋น์ข ์ ๋ชจ๋ธ๋ก ์ด์ด์ง๋ค๋ฉด, 3D Cal์ ์ด๊ฐ ์ผ์ฑ์ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถ๋ ํ์ค ๋๊ตฌ๋ก ์๋ฆฌ ์ก์ ์ฌ์ง๊ฐ ์๋ค.
์ฐธ๊ณ ๋ฉ๋ชจ
- ํ๋ก์ ํธ/์ฝ๋/๋ฐ์ดํฐ/๊ฐ์ค์น: https://rohankotanu.github.io/3DCal
- ์ฌ์ฉ ํ๋์จ์ด ์์: Creality Ender 3, ๊ฐ์ฒด ๊ตฌํ ํ์นจ ๋ฐ๊ฒฝ 2 mm (McMaster-Carr 85175A586)
- ๋ฐ์ดํฐ ๊ฐ์ด๋๋ผ์ธ: 0.5 mm x 0.5 mm ๊ฒฉ์์์ ์ ์ฒด ์ขํ์ 20% ์ด์(์ฝ 240~250๊ฐ), ์์ง ์๊ฐ ์ฝ 2์๊ฐ
- ์ถ๋ก ์ฑ๋ฅ: ๋ ธํธ๋ถ๊ธ ํ๋์จ์ด์์ 30 ms ๋ฏธ๋ง, 30 fps ์ค์๊ฐ