Paxini Gen3 Pathに戻る

触覚データ を 理解 する

圧力マレイ構造を学び,接触検出の限界を校正し,把握検出論理を実装し, パクシニ Gen3で時間とともに接触イベントを視覚化します.

5の2つの単位 · データ理解 · ~1.5時間

このユニットでは圧力のマレイの空間構造を学び 握手用の接触検出の限界を校正し 握手検出論理を実装し 接触イベントを時間とともに可視化します

概念 圧力配列構造

空間圧力の地図

frame.pressure_map フィールドは,各要素が1つのタクセル (タクチルピクセル) を代表する2D NumPy マレイです.指先変数では,マレイは8×8で,1.75mmピッチで14×14mmセンサーエリアをカバーしています.各値は kilopascals (kPa) であります.

圧力 (kPa)

面積単位単位での力.範囲: 0600 kPa. 通常の指接触は握力によって10150 kPa.

接触エリア (mm2)

圧力が限界を超えたタックセル面積の合計. 指先と物体の典型的な接触は1560 mm2である.

総力 (N)

接触面上の圧力の整体. 握り付けの閉塞力に比例する. 典型的な握り: 120 N.

中心部 (行,コール)

標的にされた接触領域の質量の中心. 物体が滑ると変化する.

# 圧力地図構造を探求する 圧力地図構造を輸入する paxini 輸入する numpy npセンサー = paxini.Sensor() センサー.スタート.() センサー.カリブレーション() # 接触枠なしのゼロオフセット (無接触枠=センサー.最新) 印刷("配列形:",枠.圧力_マップ.形) # (8, 8) "マックス圧力:",枠.圧力_マップ.マックス(), "kPa") 印刷 "総力:",枠.総力_力_n, "N") 印刷 "連絡エリア:",枠.接触_領域_mm2, "mm2") 印刷する "中央roid:",枠.接触_セント) # (列,) 浮遊

ステップ 1 限界校正

連絡対連絡なしの限界

標準接触の限界は,タックセルあたり5 kPaと0.05 Nの総力である.これらのデフォルトはほとんどの設定で動作しますが,グリッパーのプレロードとセンサーのケーブルストレスのに基づいて調整が必要になる可能性があります.

センサーの休憩騒音レベルを測定するためにこの校准脚本を実行して適切な限界を設定します

輸入 paxini 輸入 numpy npセンサー = paxini.Sensor() センサー.スタート.) センサー.カリブレーション() #ゼロオフセット先 # サンプル100フレーム 無接触基線_フォース = [] i,フレームの列表(センサー.ストリーム()):基線_フォース.適用(フレーム.総_フォース_n) i >=99: 断裂_ノイズ = np.max.max.\_フォース) 推奨_ローシュール =ノイズ_フロース *3.0(f"ノイズ基板: {ノイズ_フロース4f} N") プリントf"推奨接触基値: {ノイズ_フロース4f} N) 適用# ローシュール.\\\comm_n:\th_th_th_low_low_low_low_low

典型的な値 騒音床は通常0.0050.02 N. 0.050.06 Nのしきい値で,ケーブル移動から偽陽性でない信頼性のある接触検出が可能になります.

ステップ 2 把握検出

把握検出論理

シンプルで強力な把握検出器は,接触フラグが正しい,接触面積が最小値以上,安定した中部 (中部が速く動かない) の3つの条件を同時に使用します.これは軽いブラシ接触から偽陽性を排除します.

輸入 paxini 輸入 numpy のように np から コレクション 輸入 デックセンサー = paxini.Sensor.Sensor.Start.(() センサー.Censor.Calibrate() centroid_history = deque(maxlen=10) # 最後の10フレーム def は_stable_grasp(frame): frame.in_contact でなければ:返回 フレーム.contact_area_mm2 < 8.0: # 少なくとも ~3タクセルが返回 偽のセントロイド_history.appendframe.contact_centroid) if lencentroid_history) < 5: 偽のセントロイド = np.ay_centroid_history) 総セントロイド_std = centro.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.std.st.std.std.st.std.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st.st

ステップ 3 連絡先イベントの可視化

視界 に 移る 連絡 事件

10秒間の記録で,把握と解放サイクルの時間構造を理解するために,全体的な力と接触状態を図示する.

輸入 paxini import numpy np輸入 matplotlib.pyplot as plt sensor = paxini.Sensor) sensor.start.() sensor.calibrate() フォース = [\]コンタクト = [\]タイムスタンプ = []print("記録10秒 抓取とセンサーを放出...") フレーム.ストリーム (n) のために: フォース.append(frame.total_force_n) 連絡先.append((at 連絡先.in_contact.sensor.append((frame.timestamp_time_ns / 1e9) if timest[-1] - タイムスタンプ >[0]=10.0:tt =t.settime_tabsamps) - タイムスタンプ (t) - セット (t) -t) -t (t) セット (t) -t) -t (t) -t (t) -t (t) -t) -t (t) -t (t) -t (t) -t) -t (t) -t (t) -t (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t) (t)

この分野で使用されているフォース・トーク用語については, [ロボット学語彙](T0を参照してください.

ユニット2 完成する...

圧縮マップの形状を印刷して,指先の変数 (8, 8) であることを確認できます.センサーケーブルを軽く振ると,校正された接触しきい値が偽陽性を生じません.感知センサー表面をしっかりと握ってから 0.5 秒以内に把握検出器は"STABLE GRASP"を印刷します.接触イベントグラフは,把握と放出時に明確な上昇/降伏の辺を示します.

[← 経路概要に戻る]