傳感器如何讓機(jī)器人“看見(jiàn)”接觸力?從原理到應(yīng)用全解析)
簡(jiǎn)介這是一份關(guān)于機(jī)器人與“數(shù)字化”視觸覺(jué)傳感器應(yīng)用研究進(jìn)展的PDF文獻(xiàn)面向機(jī)器人、自動(dòng)化與人工智能方向的學(xué)生、研究人員及從業(yè)者可作為課題調(diào)研或技術(shù)學(xué)習(xí)的參考文獻(xiàn)。文獻(xiàn)系統(tǒng)梳理了視覺(jué)傳感器與觸覺(jué)傳感器兩大類(lèi)別包括基本原理、典型結(jié)構(gòu)如微動(dòng)開(kāi)關(guān)、氣動(dòng)復(fù)位裝置、導(dǎo)電橡膠等以及圖像處理方法同時(shí)結(jié)合實(shí)際應(yīng)用場(chǎng)景分析了視觸覺(jué)傳感器在提升機(jī)器人感知能力方面的作用與當(dāng)前面臨的精度、成本等挑戰(zhàn)并展望了微型化、多功能等未來(lái)發(fā)展方向。內(nèi)容預(yù)覽中涉及的深淺圖像處理、雙值化再處理等具體方法為視覺(jué)感知實(shí)現(xiàn)提供了直觀案例觸覺(jué)傳感器部分對(duì)不同結(jié)構(gòu)的原理與優(yōu)缺點(diǎn)做了對(duì)比便于理解不同方案的選擇依據(jù)。該資源為單個(gè)PDF文件大小1.65MB內(nèi)容集中目前已有176人學(xué)習(xí)。適合需要快速了解視觸覺(jué)傳感器整體技術(shù)脈絡(luò)、積累專(zhuān)業(yè)術(shù)語(yǔ)或撰寫(xiě)相關(guān)綜述的讀者可幫助節(jié)省檢索與篩選文獻(xiàn)的時(shí)間。1. 視觸覺(jué)傳感器為什么機(jī)器人需要一雙看得見(jiàn)觸感的手指當(dāng)機(jī)械臂夾住一枚生雞蛋或一顆螺絲釘時(shí)判斷夾持力是否合適的真正常規(guī)手段并不是傳統(tǒng)意義上的力傳感器而是觀察彈性體表面被物體壓出的形變。視觸覺(jué)傳感器的核心思路非常直白用相機(jī)去拍一個(gè)柔軟的、帶標(biāo)記點(diǎn)的彈性體接觸物體時(shí)彈性體發(fā)生變形相機(jī)記錄變形圖像再通過(guò)算法把圖像變成力分布、滑移、紋理和接觸幾何。這個(gè)思路之所以在近幾年成為機(jī)器人操作研究的熱門(mén)方向是因?yàn)樗@開(kāi)了壓阻、電容陣列在布線和分辨率上的限制——圖像本身就是數(shù)字信號(hào)天然契合深度學(xué)習(xí)管線也讓觸覺(jué)感知第一次可以像視覺(jué)一樣被離線標(biāo)注、離線訓(xùn)練、在線推理。如果你是做機(jī)械臂抓取、靈巧手控制或力控相關(guān)方向本文會(huì)從成像原理、硬件選型、數(shù)據(jù)采集到落地應(yīng)用把這條鏈路上的關(guān)鍵參數(shù)和常見(jiàn)坑一次講完。2. 視觸覺(jué)傳感器的成像原理、數(shù)字化鏈路與三類(lèi)主流方案選型2.1 為什么相機(jī)可以直接當(dāng)觸覺(jué)傳感器光度立體與標(biāo)記點(diǎn)追蹤要理解視觸覺(jué)傳感器先要丟掉“觸覺(jué)等于陣列式壓力分布”的固有印象。陣列式方案把力變成電阻或電容變化電極密度越高數(shù)據(jù)量越大柔性布線難度也隨之指數(shù)上升。視觸覺(jué)走的是另一條路力先變成彈性體的幾何形變幾何形變?cè)僮兂上袼亓炼茸兓?。接觸表面的法向力把彈性體壓凹切向力把表面標(biāo)記拖開(kāi)相機(jī)穩(wěn)定地記錄這個(gè)過(guò)程。因此傳感器的分辨率取決于相機(jī)的像素?cái)?shù)和彈性體表面的特征密度而不是電極印刷精度。從形變還原力學(xué)量常規(guī)做法有兩種。第一種是標(biāo)記點(diǎn)追蹤彈性體表面印規(guī)則網(wǎng)格或隨機(jī)散斑通過(guò)光流或者特征匹配算出每個(gè)標(biāo)記點(diǎn)的位移場(chǎng)再對(duì)位移場(chǎng)做空間求導(dǎo)得到應(yīng)變進(jìn)而映射到接觸力。第二種是光度立體把彈性體做成帶反射涂層的半透明結(jié)構(gòu)用多角度光源照明利用不同光照方向下的亮度梯度反算表面法向。標(biāo)記點(diǎn)擅長(zhǎng)測(cè)量切向變形光度立體對(duì)法向壓力和接觸紋理更敏感不少研究方案會(huì)把兩者結(jié)合起來(lái)。2.2 三種主流成像方案的光路差異與選型參數(shù)公開(kāi)研究中比較有代表性的視觸覺(jué)成像方案有三類(lèi)以涂色彈性體加單目相機(jī)為代表的早期方案以透明彈性體加鏡面反射為代表的緊湊方案以及以微型相機(jī)加環(huán)形光源為代表的指尖尺寸方案。它們的本質(zhì)區(qū)別在于光路折疊方式和彈性體標(biāo)定難度。下表是選型時(shí)我會(huì)重點(diǎn)關(guān)注的差異方案彈性體特征光源布局擅長(zhǎng)測(cè)量的量主要約束涂色彈性體單目相機(jī)表面隨機(jī)散斑或網(wǎng)格同軸均勻光切向位移、滑移預(yù)判法向力精度依賴(lài)標(biāo)定質(zhì)量透明彈性體鏡面反射內(nèi)側(cè)鍍反射膜多色LED環(huán)繞法向力分布、接觸幾何體積偏大散熱和光源均勻性需控制微型相機(jī)環(huán)形光源半透明彈性體加微紋理環(huán)形LED陣列紋理、滑移、微形變視場(chǎng)有限工作量程小選型時(shí)不要只看分辨率數(shù)字。真正影響使用體驗(yàn)的是量程和重復(fù)性。彈性體厚度決定法向量程太薄壓幾下就到了飽和太厚小力信號(hào)又被淹沒(méi)在彈性體自身的壓縮噪聲里。我一般會(huì)把彈性體厚度基準(zhǔn)定為相機(jī)視場(chǎng)對(duì)角線長(zhǎng)度的五分之一左右然后根據(jù)目標(biāo)物體的硬度去微調(diào)。光源的球面均勻性比亮度更重要不均勻光照在光度立體里會(huì)表現(xiàn)為無(wú)法消除的低頻誤差。2.3 從像素到力學(xué)量一張觸覺(jué)圖像的數(shù)字化解算管線數(shù)字化的含義不只是把模擬圖像轉(zhuǎn)成數(shù)字矩陣更關(guān)鍵的是把圖像矩陣變成后續(xù)控制回路能直接使用的物理量。一個(gè)常見(jiàn)的做法是先用一個(gè)小型卷積網(wǎng)絡(luò)把觸覺(jué)圖像映射成六維力/力矩估計(jì)。訓(xùn)練這類(lèi)網(wǎng)絡(luò)不需要特殊的框架PyTorch 配合一個(gè)輕量回歸頭即可表達(dá)式如下import torch import torch.nn as nn import torch.nn.functional as F class TactileForceNet(nn.Module): def __init__(self, in_channels: int 3, out_dim: int 6): super().__init__() self.features nn.Sequential( nn.Conv2d(in_channels, 24, kernel_size5, stride2), nn.ReLU(), nn.Conv2d(24, 48, kernel_size3, stride2), nn.ReLU(), nn.Conv2d(48, 64, kernel_size3, stride2), nn.ReLU(), nn.AdaptiveAvgPool2d((1, 1)), ) self.regressor nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, out_dim), ) def forward(self, x: torch.Tensor) - torch.Tensor: x self.features(x) x torch.flatten(x, 1) return self.regressor(x)這段代碼定義了一個(gè)簡(jiǎn)單的觸覺(jué)力回歸網(wǎng)絡(luò)輸入是傳感器拍出的 3 通道圖像輸出 6 維力/力矩向量。關(guān)鍵在于用了三層步長(zhǎng)為 2 的卷積快速縮小空間維度最后用全局平均池化把所有區(qū)域的特征壓成一個(gè)向量來(lái)適應(yīng)彈性體表面不同接觸位置帶來(lái)的位移。訓(xùn)練時(shí)要對(duì)力標(biāo)簽做歸一化因?yàn)榉ㄏ蛄O易出現(xiàn) 2N 到 20N 的跨量級(jí)分布直接用原始數(shù)值會(huì)導(dǎo)致 loss 被大力樣本統(tǒng)治。訓(xùn)練集構(gòu)造上離線階段用機(jī)械臂末端力傳感器采集真值比手動(dòng)按壓錄數(shù)據(jù)可靠得多這也是后面第三章要展開(kāi)的內(nèi)容。3. 視觸覺(jué)數(shù)據(jù)怎么來(lái)彈性體標(biāo)定、深度重建與數(shù)據(jù)集采集的復(fù)現(xiàn)流程3.1 首個(gè)可復(fù)現(xiàn)步驟彈性體配方、光源布局與相機(jī)內(nèi)參標(biāo)定拿到一塊彈性體和相機(jī)之后最容易出問(wèn)題的是彈性體表面特征一致性。如果用手工點(diǎn)涂散斑每片傳感器的外觀都不一樣模型換一個(gè)傳感器基本要重新微調(diào)。常見(jiàn)做法是制作帶微紋理的硅膠模具用翻模的方式保證每片彈性體的散斑分布和厚度一致。硅膠硬度建議從 Shore A 20 左右起步硬度越低對(duì)微小力越敏感但回彈時(shí)間變長(zhǎng)不適合快速動(dòng)態(tài)接觸。光源布局的目標(biāo)是讓彈性體表面照度均勻且無(wú)鏡面高光。白色 LED 陣列加一層漫射板是低成本下效果最穩(wěn)定的配法。相機(jī)內(nèi)參標(biāo)定和普通視覺(jué)相機(jī)沒(méi)有區(qū)別用棋盤(pán)格標(biāo)定即可。需要額外小心的是彈性體是透明或半透明材質(zhì)光會(huì)從側(cè)面穿透進(jìn)來(lái)導(dǎo)致圖像周?chē)霈F(xiàn)一圈亮邊。解決辦法是在彈性體外圍加遮光罩或者從軟件上裁掉邊緣區(qū)域再送入視覺(jué)模型。3.2 從標(biāo)記位移到深度圖光度立體的關(guān)鍵參數(shù)如果走光度立體路線三路以上不同角度光源是底線。記表面法向量為 N入射光方向?yàn)?L_i在 Lambertian 近似下第 i 幅圖像的亮度 I_i 滿(mǎn)足 I_i rho * max(N · L_i, 0)其中 rho 是表面反射率。至少用三幅不同方向光源照射的圖像聯(lián)立就能解出 N 和 rho 的乘積。實(shí)際操作中要把 LED 的入射方向標(biāo)定準(zhǔn)確角度誤差超過(guò) 2 度重建出來(lái)的法向場(chǎng)就會(huì)帶上系統(tǒng)性的傾斜。參數(shù)推薦區(qū)間影響備注LED 入射角與表面法線的夾角20°45°過(guò)小缺少明暗差異過(guò)大產(chǎn)生陰影四路光源對(duì)稱(chēng)布置最省標(biāo)定成本曝光時(shí)間2ms10ms決定運(yùn)動(dòng)模糊程度接觸滑移速度高時(shí)優(yōu)先取小彈性體厚度視場(chǎng)對(duì)角線 1/5 左右決定法向量程薄則靈敏但易飽和幀率60fps 起步抓取場(chǎng)景建議 120fps決定能否捕捉滑移瞬間幀率不夠會(huì)漏掉接觸建立階段重建后用相鄰兩幀的深度圖做差就能得到接觸引起的表面形變速度場(chǎng)。這個(gè)速度場(chǎng)對(duì)檢測(cè)物體松脫特別有用因?yàn)榛瞥跗诘男盘?hào)不是力數(shù)值突變而是形變梯度在接觸邊緣的快速移動(dòng)。3.3 用自動(dòng)化腳本批量采集觸覺(jué)數(shù)據(jù)集手動(dòng)按壓采集數(shù)據(jù)的問(wèn)題在于樣本分布不可控按壓力度集中在中間區(qū)間極端大力和小力樣本稀缺。我習(xí)慣把傳感器固定在桌面夾具上用機(jī)械臂帶著末端工具去執(zhí)行按壓、滑動(dòng)、旋轉(zhuǎn)三類(lèi)動(dòng)作按固定的軌跡和速度跑完一遍同時(shí)記錄傳感器圖像和力傳感器真值。下面是一個(gè)采集循環(huán)的簡(jiǎn)化版本import time import csv import cv2 import numpy as np from robot_interface import RobotArm def collect_tactile_dataset( robot: RobotArm, camera, force_sensor, save_prefix: str, press_depth: list[float], slide_speed: float ): rows [] for depth in press_depth: robot.move_to_press(depth) time.sleep(0.3) # 等待彈性體形變穩(wěn)定 img camera.read() fx, fy, fz, mx, my, mz force_sensor.read() timestamp time.time() cv2.imwrite(f{save_prefix}_{timestamp}.png, img) rows.append([timestamp, depth, fx, fy, fz, mx, my, mz]) robot.move_to_home() with open(f{save_prefix}_labels.csv, w, newline) as f: writer csv.writer(f) writer.writerow([timestamp, press_depth, fx, fy, fz, mx, my, mz]) writer.writerows(rows)這段腳本把一次按壓動(dòng)作同步成三條數(shù)據(jù)完成按壓后的觸覺(jué)圖像、力傳感器讀數(shù)、動(dòng)作參數(shù)。按壓深度列表 press_depth 是一個(gè)數(shù)組用來(lái)覆蓋不同量程的力區(qū)間。值得注意的地方是 time.sleep(0.3) 這一步硅膠彈性體在快速按壓后會(huì)有蠕變回彈如果不等形變穩(wěn)定就拍照采集到的圖像會(huì)包含明顯的時(shí)變分量模型學(xué)到的力映射也會(huì)因此變得不穩(wěn)定。滑動(dòng)和旋轉(zhuǎn)動(dòng)作也按同樣的邏輯做只是在動(dòng)作過(guò)程中連續(xù)拍照而不是等穩(wěn)定。4. 在機(jī)器人上落地抓取、力控、位姿修正的典型接法與時(shí)序陷阱4.1 為什么視觸覺(jué)適合裝在末端執(zhí)行器上與力控/音圈電機(jī)的聯(lián)動(dòng)視觸覺(jué)傳感器最自然的安裝位置是機(jī)械臂末端執(zhí)行器或者靈巧手指尖因?yàn)檫@里的接觸信息最直接。對(duì)于力控來(lái)說(shuō)視觸覺(jué)的獨(dú)特優(yōu)勢(shì)是能提供接觸建立瞬間的趨勢(shì)信號(hào)而不是像傳統(tǒng) F/T 傳感器那樣只在受力后才反饋數(shù)值。尤其在精密裝配、插拔連接器等低剛度接觸場(chǎng)景力矩傳感器很容易被 Z 軸串?dāng)_干擾視觸覺(jué)卻能靠圖像上接觸斑的出現(xiàn)位置直接判斷接觸點(diǎn)在指尖的哪個(gè)方位。一個(gè)常見(jiàn)的工程做法是把觸覺(jué)圖像和末端力傳感器做融合視觸覺(jué)負(fù)責(zé)檢測(cè)接觸的建立和滑移趨勢(shì)力傳感器負(fù)責(zé)穩(wěn)態(tài)力控制。部分精密末端執(zhí)行器甚至?xí)捎靡羧﹄姍C(jī)作為驅(qū)動(dòng)以實(shí)現(xiàn)低摩擦、高帶寬的力輸出再疊加視觸覺(jué)反饋?zhàn)鳛殚]環(huán)的前饋補(bǔ)償。這個(gè)組合下視觸覺(jué)的幀率要求會(huì)比較高建議不低于 120fps否則快速趨近過(guò)程中的第一個(gè)接觸幀很容易被漏掉。4.2 抓取場(chǎng)景的滑移檢測(cè)不要等到物體掉才發(fā)現(xiàn)抓取中最怕的不是力不夠而是力剛好在臨界點(diǎn)附近物體以極慢速度滑移。慢滑移產(chǎn)生的力變化很小傳統(tǒng)力矩傳感器不一定能察覺(jué)到但觸覺(jué)圖像上接觸區(qū)域的邊緣會(huì)持續(xù)移動(dòng)。用幀間位移場(chǎng)的統(tǒng)計(jì)量來(lái)檢測(cè)這種趨勢(shì)比單純用模型判斷是否滑移更穩(wěn)。import cv2 import numpy as np def detect_slip(prev_frame: np.ndarray, curr_frame: np.ndarray, threshold_px: float 0.8): prev_gray cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) curr_gray cv2.cvtColor(curr_frame, cv2.COLOR_BGR2GRAY) flow cv2.calcOpticalFlowFarneback( prev_gray, curr_gray, None, pyr_scale0.5, levels3, winsize21, iterations3, poly_n5, poly_sigma1.2, flags0, ) mag, _ cv2.cartToPolar(flow[..., 0], flow[..., 1]) # 只統(tǒng)計(jì)形變明顯的接觸區(qū)域避免把背景噪聲算進(jìn)去 mask mag 0.15 mean_motion float(np.mean(mag[mask])) if mask.any() else 0.0 return mean_motion threshold_px, mean_motion這段代碼用 Farneback 光流計(jì)算兩幀觸覺(jué)圖像間的像素位移。重點(diǎn)不是求整圖的運(yùn)動(dòng)而是設(shè)置了一個(gè) mask把位移小于 0.15 像素的背景噪聲摳掉只統(tǒng)計(jì)接觸區(qū)域附近的有效運(yùn)動(dòng)。mean_motion 就是接觸區(qū)的平均位移量超過(guò) threshold_px 就判定為滑移正在發(fā)生。實(shí)際調(diào)試時(shí)閾值的大小和彈性體表面紋理密度有關(guān)散斑越密光流越準(zhǔn)閾值可以設(shè)得更小建議先用離線錄制的滑移片段跑一遍看均值分布再定閾值。4.3 位姿修正與裝配接觸幾何比力數(shù)值更有用在插孔、擰螺絲這類(lèi)任務(wù)里機(jī)器人需要知道的不是受了多少力而是零件相對(duì)于夾具的微小偏移方向。視觸覺(jué)的高分辨率在這里派上用場(chǎng)把接觸斑點(diǎn)的幾何中心與彈性體中心做差得到的是零件在指尖上偏移的方向向量配合機(jī)器人運(yùn)動(dòng)學(xué)可以做一個(gè)簡(jiǎn)單的平面內(nèi)修正。應(yīng)用任務(wù)需要的核心信息適合從視觸覺(jué)提取的信號(hào)配套算法穩(wěn)定抓取滑移趨勢(shì)、力臨界點(diǎn)接觸區(qū)邊緣位移場(chǎng)光流/位移統(tǒng)計(jì)插拔裝配接觸點(diǎn)的相對(duì)位置偏移接觸斑幾何中心視覺(jué)伺服修正表面紋理判別微觀紋理形貌差異光度立體法向場(chǎng)特征匹配/分類(lèi)靈巧手操作多指接觸力分配各指接觸區(qū)面積占比力位混合控制接觸斑的面積變化也很值得關(guān)注。同一法向力下接觸面積越大說(shuō)明物體表面越軟或者曲率越平這在抓取形狀不確定物體時(shí)可以作為判斷材質(zhì)軟硬的附加線索。比純圖像分類(lèi)更穩(wěn)的做法是同時(shí)提取面積、中心偏移、主軸方向三個(gè)幾何量組成低維特征向量再去做判斷這樣既能減少對(duì)訓(xùn)練數(shù)據(jù)的依賴(lài)也能提高推理速度。5. 把進(jìn)展變收益重復(fù)性驗(yàn)證與可控形變標(biāo)定的進(jìn)階技巧5.1 重復(fù)性驗(yàn)證一臺(tái)傳感器能不能當(dāng)成測(cè)量?jī)x器先看它穩(wěn)不穩(wěn)很多視觸覺(jué)方案在演示里看著很驚艷一到實(shí)際項(xiàng)目就翻車(chē)主要原因不是算法不行而是傳感器本身的重復(fù)性沒(méi)有驗(yàn)證過(guò)。驗(yàn)證方法很簡(jiǎn)單讓機(jī)械臂帶著一個(gè)剛性平面壓頭反復(fù)按壓傳感器同一個(gè)位置壓到同樣的深度采集 50 組以上圖像計(jì)算力估計(jì)輸出的方差和接觸斑中心位置的漂移。如果發(fā)現(xiàn)重復(fù)性不好優(yōu)先排查的不是模型而是機(jī)械結(jié)構(gòu)。彈性體沒(méi)有完全貼合底座就會(huì)產(chǎn)生旋轉(zhuǎn)方向的位置漂移光源亮度隨溫度漂移則會(huì)讓光度立體的輸出出現(xiàn)低頻變化。解決彈性體貼合問(wèn)題的方法是翻模時(shí)做定位銷(xiāo)孔每次更換彈性體都靠機(jī)械定位保證一致。5.2 力-形變映射的可控標(biāo)定用砝碼不如用位移臺(tái)按壓標(biāo)定有一個(gè)常用但不嚴(yán)謹(jǐn)?shù)淖龇ㄔ趥鞲衅魃戏彭来a用砝碼重力做力的真值。問(wèn)題是砝碼會(huì)引入明顯的切向分量而且放置角度很難保證完全水平。我建議用一維位移臺(tái)加力傳感器作為標(biāo)定基準(zhǔn)位移臺(tái)控制下壓深度串聯(lián)一個(gè) 50N 量程的力傳感器讀取真實(shí)力值。標(biāo)定時(shí)覆蓋法向 0.5N 到 30N、切向 0.2N 到 10N 的范圍按對(duì)數(shù)間距取點(diǎn)這樣小力區(qū)間有足夠多的樣本供模型學(xué)習(xí)。關(guān)鍵的進(jìn)階技巧是保存每一擋下壓深度對(duì)應(yīng)的彈性體形變快照把下壓深度作為外部變量記錄下來(lái)。這樣一來(lái)即使后續(xù)換了一個(gè)機(jī)械臂或換了相機(jī)曝光參數(shù)也能根據(jù)形變快照重新映射力和圖像之間的關(guān)系而不需要從頭采集。這個(gè)習(xí)慣會(huì)大幅提升傳感器在項(xiàng)目中的復(fù)用效率。本文還有配套的精品資源點(diǎn)擊獲取