Pixels to Motors
DAY 191
mechArm 270 Pi
Log #9
動的追従の限界を探る
視差と平行スライド ── 横カメラが必要になった瞬間
FROM / Log #8
DESCEND後のZ暴走
仮説: 領域でZ係数が違うのでは
領域依存性
refine_mode暴走
mm/deg 仮説
→
TO / Log #9
仮説は半分当たり
だが本当の問題は別レイヤー
カメラ視差
コマ撮り追従
横カメラ導入へ
💡 Key Takeaway ── 本日の達成
01 / インフラ復活
daemonが死んでいた → 全kill+クリーン起動
systemd化の必要性が兆候として明確化
02 / 計測完了
DESCEND領域のZ係数を実測
4.786 mm/deg ── DAY189比 -18%
03 / 設計思想の転換
測ったデータが対話を転がし、設計のズレが浮上
リーチ伸縮ではなく平行スライドが必要 / 横カメラへ
01
起点 / インフラ復活劇
daemonが死んでいた ── 復活までの落とし穴
トラブルシュート手順
3つのハマりポイントを順に解除
01
Connection refused → port 5555でlistenが消滅
+
DETECT
timeout=5.0s
socket closed
Errno 61
pid → DEAD
切断ログなし
02
SSH越しの nohup ... & がハング
+
FIX
< /dev/null で stdin 切断
シングルクォートで $! を Pi 側展開
stdout/stdin が閉じない罠
03
Address already in use ── 孤児プロセスがportを保持
+
CLEAN
pkill -9 -f mecharm_daemon.py
pidファイル外の孤児
sleep 2 → 再起動成功
!
中期PENDINGの兆候
daemonの systemd サービス化 (C方式) が必要
死亡時の挙動
切断ログなし
復活手順
SSH手動
孤児pid
port保持
→ 把持成立後の優先タスクとして妥当性が確定
02
戦略 / スコープ確定
計測スコープの3案から (a) 1点ピンポイント計測へ
"
本当か?
エイイチ
根拠提示の要求
計測スコープ3案
どの粒度で測るか ── 案を選択
a
ピンポイント1点
b
経路3〜5姿勢
c
j0振りも追加
↑
案を選択
(a) DESCEND姿勢ピンポイント1点
採用 ★
採用根拠 01
変化はj2のみ
APPROACH→DESCENDでj1=87.74共通、j2が-20→-5の15度差だけ
採用根拠 02
j0は独立
追従ループ内で別軸として動く (L884-889)。j0振りは不要
採用根拠 03
中間姿勢は通らない
瞬間遷移のため経路上の計測には意味がない
(b) APPROACH→DESCEND経路上の3〜5姿勢
不採用
中間姿勢は瞬間遷移で通らない
遷移マップは現状不要
(c) DESCEND姿勢でj0も振りながら
不採用
j0は追従ループ内で独立に動く
j2の差が領域差の本体
確定計測姿勢
CALIB_BASE (DESCEND領域)
◎
j0
0.0
=
j1
87.74
★
j2 (変更点)
-5.0
⟷
DELTA
±2.0°
03
実行 / 計測結果
Case A〜D 全量計測 ── 連動Dが本番値
|mm/deg_Z| 平均
単独関節と連動の感度比較 (DAY191)
CASE A
j1単独 / 2.93
±非対称性 22%
CASE B
j2単独 / 1.79
±非対称性 50%
CASE C
j4単独 / 0.42
±非対称性 150%
CASE D ★
j1+j2+j4 / 4.786
±非対称性 5% (本番値)
i
スクリプト差分 (DAY189 → DAY191)
変えたのは姿勢値とdaemon経由化のみ
姿勢
j2: -20 → -5
通信
SSH → daemon
計測パラ
全て同一
→ grep -A 8 で展開値を目視確認してから承認
04
比較 / 領域依存性
DAY189 (APPROACH領域) vs DAY191 (DESCEND領域)
DAY189 / APPROACH領域
5.866
mm/deg (j2=-20)
PREV
DAY191 / DESCEND領域
4.786
mm/deg (j2=-5)
MEASURED
差分
-18%
領域差として有意
DELTA
DAY189 / APPROACH (j2=-20)
参照
+方向
|mm/deg_Z| = 6.320
-方向
|mm/deg_Z| = 5.412
±非対称性
17% (大きい)
符号
負
DAY191 / DESCEND (j2=-5)
今回実測
+方向
|mm/deg_Z| = 4.667 (-26%)
-方向
|mm/deg_Z| = 4.905 (-9%)
±非対称性
5% (より対称に)
符号
負 (同じ)
最初の解釈 (この時点では)
「係数だけ4.786に切り替えればrefine_modeは直る」と提示
仮説: 5.866を使うと約23%過大な指令
オーバーシュート部分は係数で説明可能
「離れる方向」は別要因
推奨: 係数差し替え → refine_mode 再実行
05
転換点 / 認識のズレ
「今回のテスト関係ないみたい」── 前提が崩れた瞬間
"
Z方向へのズレはアプローチ姿勢時のアームの姿勢のまま、
PICKの姿勢になった時にアームが上下する時に起こるものだけど???
認識が違うみたいだけど。今回のテスト関係ないみたいに思ったけど。
エイイチ
前提の差し戻し
私の想定構造
APPROACH → DESCEND → refine
3段階の追従
APPROACH
XZ追従
遷移
瞬間切替
refine_mode
XZ再追従
↻
正しい構造
姿勢遷移 = Zズレ発生現場
遷移そのものが問題
APPROACH
大まか追従
遷移 (上下動)
Zズレ発生
PICK姿勢
本番追従
!
見落としていた幾何学
上カメラは完全な真上ではない ── カメラ視差
DAY190報告
TIP_X 61.4mmシフト
真の原因
視差で見えただけ
物理位置
それほどズレてない
→ 追従ロジックの問題ではなく撮影系の幾何学
SIDE VIEW / カメラ視差の発生
CAM
少し横にズレた角度
マット面 (Z=0)
BLOCK
TIP (APPROACH)
TIP (DESCEND)
視差シフト
06
設計思想 / 追従モデルの転換
コマ撮り追従 + 平行スライドという正解
"
カメラはコマ撮りしているでしょ?
アームが左右、上下したとしても常にブロックとTIPの位置を追いかけていかないと
エイイチ
追従モデル指摘
段階分け追従 (誤)
不採用
構造
追従 → 中断 → ジャンプ → 再開
遷移中
古いdiff_zで動く → 暴走
問題
視差ズレを次のフレームで補正できない
前提
refine_modeを別工程として扱う
コマ撮り追従 (正)
採用 ★
構造
毎フレーム検出 → 毎フレーム補正
遷移中
視差ズレも次のフレームで吸収
原則
画面上で重なるまで動かし続ける
前提
段階を区切らず一本の追従
Z方向のズレの埋め方 ── 3案
PICK姿勢で画面上のZ方向ズレを何で埋めるか
i
リーチ伸縮
ii
平行スライド
iii
Zズレ無視
↑
案を選択
(i) j1+j2+j4 連動 (今のロジック)
不採用
リーチが伸縮する
高さも変わってしまう
マット高さ維持不可
DAY191で測ったのはこれ
(ii) アーム全体を平行にスライド
採用 ★
要件 01
マット高さ維持
グリッパーをマットギリギリに保ったまま画面上Zだけ動かす
要件 02
グリッパー水平
どの位置でもマットと並行を維持する必要
要件 03
姿勢拘束付き運動学
3〜4関節を協調、高さと水平を保つ別の組み合わせ
j4の使い方が鍵
新規IKが必要
(iii) Zズレ無視・j0でXだけ補正
不採用
画面上の一致が取れない
把持精度が出ない
二段追従の本当の意味
大まか追従 → 平行スライド精密追従
PHASE 1 / APPROACH
大まかに合わせるだけ
どうせPICK姿勢に下ろすとTIPがズレる (視差) ので精度不要
PHASE 2 / PICK姿勢 (本番)
マット高さで画面上の一致
グリッパーがマットギリギリの状態で、TIPと赤丸をピッタリ重ねる
07
次フェーズ / 横カメラと値の扱い
横カメラ導入と「測った値は使わない」判断
"
なのでカメラをもう一台横から写すのが
そろそろ必要なんじゃない?
エイイチ
次フェーズ提案
CAMERA 01 / 既存
上カメラ ── X/Z方向の位置合わせ
赤丸とTIPの画面上一致 / ただし完全な真上ではないため視差あり / 高さ判断は不可
CAMERA 02 / 次フェーズ
横カメラ ── Y方向の確認
マット高さ維持 / グリッパー水平の検証 / 姿勢拘束付き運動学の実機検証手段
DAY191 実測値
4.786
mm/deg (リーチ伸縮)
DISCARDED
必要なのは別の感度
平行スライドの
mm/deg
REQUIRED
測定可能になる時期
横カメラ
導入後
NEXT
"
無駄になったわけではない。
測ったデータを見たことで、設計思想のズレが浮上した。
本日の結論
計測の意義
残った知見
使わなくても効く ── 将来のキャリブ設計に残るもの
KNOWLEDGE 01
姿勢領域でZ係数は変わる
-18% (5.866 → 4.786) ── 領域依存性は事実として確認
KNOWLEDGE 02
±非対称性も領域で変わる
17% → 5% ── 領域でカーブの対称性が違う
KNOWLEDGE 03
仮説のレイヤー自体が違った
運動学の問題ではなく視差・コマ撮り・平行スライドの問題だった
本日の結論 ── 測ったから分かったこと
BEFORE
段階分け追従 + リーチ伸縮 + 上カメラだけ
追従モデル
段階分け
Z方向の補正
リーチ伸縮
視差の認識
✕
横カメラ
✕
→
AFTER
コマ撮り追従 + 平行スライド + 横カメラ計画
追従モデル
毎フレーム
Z方向の補正
平行スライド
視差の認識
◎
横カメラ
次フェーズ