---
title: "フィジカルAI研究室を作る Log#21 | ゲームパッドで mechArm 270 を直す形が固まった"
slug: gamepad-correction-mecharm-270-settled
date: 2026-11-05
day: 446
meta_description: "小型アーム mechArm 270 をゲームパッドで手直しするには、長押しは15°先へ1回送り離したら stop、1回押しは動かす関節だけを送る形がよかった。受付なしは40回から0回になり、ほかの関節のずれも積み上がらなくなった。"
tags: [フィジカルAI研究室, mechArm 270, ゲームパッド, テレオペレーション, 人の補正, pymycobot, send_angle, jog, daemon, Claude Code]
series: "フィジカルAI研究室"
---

小型ロボットアーム mechArm 270 をゲームパッドで手直しするときは、長押しなら押した向きへ15°先の目標を1回だけ送って離したら止める、1回押しなら動かす関節だけを送る、という形がいちばん素直に動いた。実物のアームで、送り方を変えた試しを4回、ゲームパッドでの操作を7回記録して確かめた（2026-11-05）。**押しても動かない、ほかの関節がつられて動く、受付なしが続く、という3つの困りごとは、どれもサーボの性能ではなく、送り方と、アームの中の受け口のプログラム（daemon）の待ち方が原因だった。**

【動画】LOG446_01_jog_probe_hold.mp4 根元の関節を、送り方を変えながら1つずつ動かした試し（3回目）。遠い目標へ1回送り、動いている途中で止める

この回でやったことで、次のことが変わる。

- 良くなること：受付なし（押したのに無視されて何も起きない）は、1本の記録で40回あったのが、最後の記録で0回になった。1回押しで次を受け付けるまでの待ちは、中央の値で2.79秒から0.17秒になった。長押しを止めるたびに、動かしていない関節が1〜1.5°ずつずれて積み上がる現象（最初の記録で j1 が4.8°から37°まで上がった）も止まった
- もたらされること：AI（Physical Intelligence の π0.5）の実機推論で、アームが失敗しかけたところを人がゲームパッドで直し、その直しを学習のデータに回す準備がそろった。daemon の待ち方も直したので、π0.5 の推論で送る指令の返りも速くなる見込み（推論ではまだ測っていない）
- 時間・費用：実機での試しと直しは15:34〜17:13の約1時間40分。GPU は使っていないので費用は0円

前の回（LOG436）で、ゲームパッドで実物のアームを動かせるようにした。ただ、長押しの動きがカクカクしていた。そこで、どこまでなめらかに動かせるのかを先に測った。その結果、ゆっくり動かすとどの命令でも0.2秒ごとに進んでは止まる、つまりなめらかさの限界はサーボの側にあると分かった。それに合わせて操作の形を作り直し、実機で7回使いながら、出てきた困りごとを順に直した。

| 段階 | やったこと | 結果 |
|---|---|---|
| 送り方ごとの動きを測る | 根元 j0 を、1回送る・送り直し・jog など9通りで動かした（jog_probe 3回） | 速さ20以上で1回送るとなめらか。ゆっくりだと、どの命令も0.2秒ごとに止まる。jog は止まらないことがあった |
| 長押しを作り直す | 15°先へ1回送り、離したら daemon の stop で止める。daemon に stop を足した | 長押しは動いたが、止めるたびにほかの関節がずれ、1回押しが動かないことが多かった |
| ずれと動かない原因を探す | 止めたあとに指令へ戻す形を試したら、もっと動かなくなった | 重さで届かない関節の指令を送ると、次の指令が無視されやすくなっていた |
| 小さな動きを測る | 1°・2°を3通りの送り方で12回ずつ（jog_probe small） | 動かす関節だけを送る形は12回中12回動いた |
| 動かす関節だけ送る | 十字キーは send_angle（1関節だけの指令）にした | ほかの関節がつられて動かなくなった |
| 受付なしを減らす | 1回押しの待ちを短くし、daemon の読み直しを0.2秒→0.02秒に | 受付なし 40回→13回→0回 |
| 押した瞬間に送らない | 離したら1刻み、押し続けたら長押しの、どちらかだけを送る | 向きを変えたときの余分な1°の動きがなくなった |

GPU を買うか借りるかの判断は、Runpod で実際に借りて学習させた費用をもとに、別のページにまとめています。

【バナー】gpu-buy-or-rent


## 作業ログ ― jog の試しから、動かす関節だけを送るゲームパッドと daemon の読み直しまで

この回の数字は、すべて実機の記録（KIOXIA の `runs/experiments/gamepad_teleop/` の7本と、`diag/jog_probe_20261105_*/` の4本）から数えたものです。見込みの数字は、見込みと書いています。

### この回で使う言葉

| 言葉 | 意味 |
|---|---|
| daemon（デーモン） | アームの中の Raspberry Pi で動き続けている受け口のプログラム（`mecharm_daemon.py`）。Mac から送った指令を受け取り、アームへ流す。ゲームパッドも π0.5 の推論も、ここを通ってアームを動かす |
| send_angles | 6つの関節の角度をまとめて送る命令（[pymycobot](https://github.com/elephantrobotics/pymycobot) の命令。pymycobot は mechArm を作っている Elephant Robotics の Python のライブラリ） |
| send_angle | 1つの関節の角度だけを送る命令。ほかの関節には何も送らない |
| speed | 送る命令に付ける速さの設定（1〜100）。この回は20（実測で毎秒約40°） |
| jog | 関節・向き・速さを渡すと、止める命令が来るまで一定の速さで動き続ける命令 |
| stop・jog_stop | 動いている途中で止める命令。jog_stop は jog を止める。stop は動き全体を止める |
| fresh_mode | 1にすると、前の動きが終わるのを待たずに、新しい指令で上書きできるアームの設定 |
| 受付なし | ゲームパッドで押したが、前の操作がまだ終わっていないので、その押しを捨てたこと |


## 15:34 送り方を4通り変えて根元 j0 を動かした（jog_probe 1回目）

前の回の終わりに用意した試し（`tools/jog_probe.sh`）を流しました。daemon を一時止め、Pi から直接アームにつないで、根元の関節 j0 だけを、始めの角度から25°以内で動かします。0.1秒ごとの速さを並べると、なめらかかどうかが読めます（数字がそろっていればなめらか、0 や負の数が混ざっていれば、止まったり戻ったりしている）。

| 試し | 送り方 | 結果 |
|---|---|---|
| A | 10°先を1回だけ送る（speed 20） | 10°を約0.27秒で動いた。加速も減速もなめらか |
| B | 0.1秒おきに、読んだ角度の3°先を送り直す（前のゲームパッドの長押し） | 0.1秒ごとの速さが 29、−13、73、−8、34°/秒。3°ずつ進んで止まるのを繰り返した |
| C | B に fresh_mode を足す | 1回送るたびに行きすぎて約1°戻る、のこぎり型の動き |
| D | jog（speed 10・30）を1秒 | 速さは一定でいちばんなめらか（speed 30 で毎秒約65°）。ただし speed 10 では jog_stop のあとも同じ速さで動き続け、25°の守りに当たって止まった。向きは説明書きと逆（1を送ると j0 が減った） |

jog は動きがいちばんなめらかなのに、離しても止まらない回があります。ゲームパッドの長押しに使うには、止まり方を先に確かめる必要がありました。

#### jog_probe 1回目の端末の出力（15:34）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro ~ % cd ~/r2r2r-scripts
git tag gamepad-stream-v1 413f7e1
git add tools/jog_probe.sh tools/pi/jog_probe_pi.py
git commit -m "jog_probe: j0 を4通りで動かし、なめらかさと限界を測る"
tools/jog_probe.sh
[main 2c28f88] jog_probe: j0 を4通りで動かし、なめらかさと限界を測る
 2 files changed, 457 insertions(+)
 create mode 100755 tools/jog_probe.sh
 create mode 100644 tools/pi/jog_probe_pi.py
jog_probe 20261105_153401 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153401)
--- デーモンの状態 (止める前)
mode=systemd
pid=502
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=502
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.17, 92.63, 1.49, 0.61, -96.06, -29.35]
HOME から離れています。HOME [0,0,0,0,0,-30] へ送ります  (Enter で進む / q と Enter で終わる)

根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 19.3 ms / 空で返った割合 0.0

A_step_10deg を始めます  (Enter で進む / q と Enter で終わる)

  [A_step_10deg] travel_deg=9.32  mean_speed=4.96  median_speed=0.0  max_speed=30.97  speed_cv=None  stall_ratio=None  arrive_sec=0.4
        0.1 秒ごとの速さ (°/秒): 31.0 -3.4 -0.9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
  始めの角度へ戻した: 着いた j0=1.23

B_stream を始めます  (Enter で進む / q と Enter で終わる)

  [B_stream] travel_deg=12.39  mean_speed=12.38  median_speed=28.91  max_speed=73.27  speed_cv=1.09  stall_ratio=0.4  overshoot_deg=0.09  stop_latency_sec=0.1  n_sends=7
        0.1 秒ごとの速さ (°/秒): 28.9 -13.2 73.3 -8.3 33.8
  始めの角度へ戻した: 着いた j0=-0.08

C_stream_fresh を始めます  (Enter で進む / q と Enter で終わる)

  [C_stream_fresh] travel_deg=7.91  mean_speed=8.67  median_speed=-11.71  max_speed=-2.32  speed_cv=None  stall_ratio=None  overshoot_deg=2.9  stop_latency_sec=0.26  n_sends=8
        0.1 秒ごとの速さ (°/秒): -6.1 -2.3 -31.0 -11.7 -16.5
  始めの角度へ戻した: 着いた j0=-1.58

D_jog_speed10 を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから -25.8° 離れたので止めます
  [D_jog_speed10] travel_deg=-2.37  mean_speed=-8.78  overshoot_deg=-23.38  stop_latency_sec=0.28  jog_moved=True
  始めの角度へ戻した: 着いた j0=-1.4

D_jog_speed30 を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 26.7° 離れたので止めます
  守り: j0 が始めから 31.5° 離れたので止めます
  [D_jog_speed30] travel_deg=-27.06  mean_speed=-45.1  median_speed=-59.41  max_speed=-54.33  speed_cv=None  stall_ratio=None  overshoot_deg=-4.74  stop_latency_sec=0.0  jog_moved=True
        0.1 秒ごとの速さ (°/秒): -54.3 -64.5
  始めの角度へ戻した: 着いた j0=0.08
結果: /tmp/jog_probe_20261105_153401.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153401/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=19339
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=19339
checker=no
デーモンは戻った (5555 LISTEN)
```

#### diag/jog_probe_20261105_153401/result.json

```json
{"started_at": "2022-10-13 15:26:29", "pymycobot": "2.9.6", "params": {"speed": 20, "stream_interval": 0.1, "stream_ahead": 3.0, "jog_speeds": [10, 30], "guard_deg": 25.0}, "tests": {"read": {"median_ms": 16.0, "max_ms": 19.3, "empty_ratio": 0.0}, "A_step_10deg": {"n_samples": 114, "travel_deg": 9.32, "active_sec": 1.88, "mean_speed": 4.96, "bin_speeds": [31.0, -3.4, -0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "median_speed": 0.0, "max_speed": 30.97, "speed_cv": null, "stall_ratio": null, "arrive_sec": 0.4, "samples": [[0.1445, 0.17], [0.1626, 0.35], [0.1808, 0.87], [0.2006, 1.23], [0.2207, 1.93], [0.2407, 2.72], [0.2607, 3.51], [0.2808, 4.39], [0.3007, 4.92], [0.3207, 5.8], [0.3407, 6.76], [0.3607, 7.64], [0.3807, 8.52], [0.4006, 8.96], [0.4186, 9.58], [0.4346, 9.93], [0.4506, 9.93], [0.4669, 10.01], [0.4826, 10.01], [0.4986, 9.93], [0.5146, 9.75], [0.5306, 9.66], [0.547, 9.58], [0.5626, 9.49], [0.5785, 9.49], [0.5947, 9.49], [0.6106, 9.49], [0.627, 9.49], [0.6426, 9.49], [0.6586, 9.49], [0.6746, 9.49], [0.6906, 9.49], [0.7069, 9.49], [0.7225, 9.49], [0.7386, 9.49], [0.7546, 9.49], [0.7706, 9.49], [0.787, 9.49], [0.8026, 9.49], [0.8186, 9.49], [0.8346, 9.49], [0.8506, 9.49], [0.867, 9.49], [0.8825, 9.49], [0.8986, 9.49], [0.915, 9.49], [0.9312, 9.49], [0.9494, 9.49], [0.9592, 9.49], [0.9709, 9.49], [0.9866, 9.49], [1.0026, 9.49], [1.0186, 9.49], [1.0345, 9.49], [1.0506, 9.49], [1.0665, 9.49], [1.0826, 9.49], [1.0985, 9.49], [1.1145, 9.49], [1.1306, 9.49], [1.1466, 9.49], [1.1626, 9.49], [1.1786, 9.49], [1.1946, 9.49], [1.2107, 9.49], [1.2265, 9.49], [1.2426, 9.49], [1.2586, 9.49], [1.2745, 9.49], [1.2907, 9.49], [1.3066, 9.49], [1.3225, 9.49], [1.3385, 9.49], [1.3546, 9.49], [1.3707, 9.49], [1.3865, 9.49], [1.4026, 9.49], [1.4186, 9.49], [1.4346, 9.49], [1.4507, 9.49], [1.4666, 9.49], [1.4826, 9.49], [1.4986, 9.49], [1.5146, 9.49], [1.5306, 9.49], [1.5465, 9.49], [1.5626, 9.49], [1.5786, 9.49], [1.5946, 9.49], [1.6107, 9.49], [1.6266, 9.49], [1.6425, 9.49], [1.6586, 9.49], [1.6746, 9.49], [1.6907, 9.49], [1.7065, 9.49], [1.7226, 9.49], [1.7448, 9.49], [1.765, 9.49], [1.7869, 9.49], [1.8089, 9.49], [1.8309, 9.49], [1.8467, 9.49], [1.8626, 9.49], [1.8786, 9.49], [1.8945, 9.49], [1.9106, 9.49], [1.9268, 9.49], [1.9425, 9.49], [1.9586, 9.49], [1.9746, 9.49], [1.9906, 9.49], [2.0067, 9.49], [2.0225, 9.49]], "t_stop": null}, "B_stream": {"n_samples": 87, "travel_deg": 12.39, "active_sec": 1.0, "mean_speed": 12.38, "bin_speeds": [28.9, -13.2, 73.3, -8.3, 33.8], "median_speed": 28.91, "max_speed": 73.27, "speed_cv": 1.09, "stall_ratio": 0.4, "overshoot_deg": 0.09, "stop_latency_sec": 0.1, "n_sends": 7, "samples": [[0.0143, 0.0], [0.0435, 0.0], [0.1019, 0.0], [0.1619, 0.0], [0.1937, 0.35], [0.2137, 0.96], [0.2315, 1.31], [0.2475, 2.28], [0.2635, 2.81], [0.2937, 3.6], [0.3138, 3.69], [0.3337, 3.69], [0.3537, 3.6], [0.3737, 3.16], [0.4419, 3.16], [0.4596, 5.09], [0.4755, 5.62], [0.7636, 9.22], [0.8058, 8.87], [0.8305, 8.61], [0.9501, 10.19], [0.9816, 10.98], [0.9996, 11.86], [1.0155, 12.39], [1.0316, 12.56], [1.0477, 12.65], [1.0635, 12.74], [1.0795, 12.74], [1.0955, 12.65], [1.1115, 12.48], [1.1277, 12.3], [1.1435, 12.3], [1.1595, 12.21], [1.1755, 12.21], [1.1915, 12.21], [1.2078, 12.3], [1.2235, 12.39], [1.2395, 12.48], [1.2555, 12.48], [1.2715, 12.56], [1.2878, 12.56], [1.3035, 12.65], [1.3195, 12.65], [1.3355, 12.65], [1.3515, 12.65], [1.3677, 12.56], [1.3835, 12.56], [1.3995, 12.56], [1.4155, 12.56], [1.4315, 12.56], [1.4477, 12.56], [1.4635, 12.56], [1.4795, 12.56], [1.4955, 12.56], [1.5115, 12.56], [1.5277, 12.56], [1.5435, 12.56], [1.5595, 12.56], [1.5755, 12.56], [1.5915, 12.56], [1.6078, 12.56], [1.6235, 12.56], [1.6395, 12.56], [1.6555, 12.56], [1.6717, 12.56], [1.6877, 12.56], [1.7035, 12.56], [1.7195, 12.56], [1.7355, 12.56], [1.7515, 12.56], [1.7677, 12.56], [1.7835, 12.56], [1.7995, 12.56], [1.8155, 12.56], [1.8315, 12.56], [1.8477, 12.48], [1.8635, 12.48], [1.8795, 12.48], [1.8955, 12.48], [1.9115, 12.48], [1.9276, 12.48], [1.9435, 12.48], [1.9595, 12.48], [1.9755, 12.48], [1.9915, 12.48], [2.0077, 12.48], [2.0235, 12.48]], "t_stop": 1.0155}, "C_stream_fresh": {"n_samples": 87, "travel_deg": 7.91, "active_sec": 0.91, "mean_speed": 8.67, "bin_speeds": [-6.1, -2.3, -31.0, -11.7, -16.5], "median_speed": -11.71, "max_speed": -2.32, "speed_cv": null, "stall_ratio": null, "overshoot_deg": 2.9, "stop_latency_sec": 0.26, "n_sends": 8, "samples": [[0.0191, -0.08], [0.0472, -0.08], [0.0714, -0.08], [0.087, -0.08], [0.103, -0.08], [0.119, -0.08], [0.1353, -0.08], [0.283, -3.86], [0.311, -3.69], [0.3364, -3.42], [0.3555, -2.9], [0.3661, -2.81], [0.3835, -2.81], [0.4096, -3.25], [0.5796, -7.29], [0.6051, -6.5], [0.6237, -6.06], [0.6435, -5.44], [0.6603, -5.36], [0.6835, -5.36], [0.8243, -9.49], [0.8553, -9.31], [0.8811, -8.96], [0.8994, -8.26], [0.9151, -7.99], [0.931, -7.99], [1.0791, -12.12], [1.095, -11.95], [1.111, -11.6], [1.127, -11.25], [1.1434, -10.72], [1.159, -10.63], [1.1791, -10.63], [1.1949, -10.54], [1.2169, -10.89], [1.2401, -11.25], [1.2638, -11.42], [1.283, -11.42], [1.2998, -11.33], [1.319, -11.25], [1.3352, -10.98], [1.351, -10.89], [1.3679, -10.81], [1.387, -10.81], [1.4032, -10.81], [1.419, -10.81], [1.4357, -10.81], [1.4511, -10.81], [1.467, -10.81], [1.483, -10.89], [1.499, -10.89], [1.5153, -10.89], [1.531, -10.89], [1.547, -10.89], [1.563, -10.89], [1.579, -10.89], [1.5954, -10.89], [1.611, -10.89], [1.627, -10.89], [1.6429, -10.89], [1.659, -10.89], [1.6753, -10.89], [1.691, -10.89], [1.707, -10.89], [1.723, -10.89], [1.739, -10.89], [1.7553, -10.89], [1.771, -10.89], [1.787, -10.89], [1.803, -10.89], [1.819, -10.89], [1.8353, -10.89], [1.851, -10.89], [1.867, -10.89], [1.883, -10.89], [1.8991, -10.89], [1.9153, -10.89], [1.931, -10.89], [1.947, -10.89], [1.963, -10.89], [1.979, -10.89], [1.9953, -10.89], [2.011, -10.89], [2.027, -10.89], [2.0431, -10.89], [2.059, -10.89], [2.0754, -10.89]], "t_stop": 1.0605}, "D_jog_speed10": {"n_samples": 17, "travel_deg": -2.37, "active_sec": 0.27, "mean_speed": -8.78, "overshoot_deg": -23.38, "stop_latency_sec": 0.28, "jog_moved": true, "samples": [[0.0292, -0.26], [0.0476, -0.26], [0.0673, -0.26], [0.0873, -0.26], [0.1073, -0.26], [0.1273, -0.26], [0.1482, -0.26], [0.1681, -0.26], [0.1794, -0.26], [0.2993, -2.63], [1.0512, -18.89], [1.0712, -20.03], [1.1308, -21.0], [1.1908, -21.62], [1.2508, -22.06], [1.3108, -24.69], [1.3708, -26.01]], "t_stop": 1.0302}, "D_jog_speed30": {"n_samples": 12, "travel_deg": -27.06, "active_sec": 0.6, "mean_speed": -45.1, "bin_speeds": [-54.3, -64.5], "median_speed": -59.41, "max_speed": -54.33, "speed_cv": null, "stall_ratio": null, "overshoot_deg": -4.74, "stop_latency_sec": 0.0, "jog_moved": true, "samples": [[0.064, -0.52], [0.1243, -0.52], [0.1841, -0.08], [0.244, 1.4], [0.304, 3.77], [0.364, 7.03], [0.424, 10.72], [0.484, 14.67], [0.544, 18.54], [0.604, 22.5], [0.664, 26.54], [0.6922, 31.28]], "t_stop": 0.6731}}, "start": [-0.17, 1.23, 1.84, 0.52, 1.31, -29.35]}
```


## 15:39 jog と1回送る形の止め方を比べた（jog_probe 2回目）

jog_probe に、止め方を比べる組（`stop`）を足しました。jog（speed 5・10）と、20°先へ1回だけ送る形（speed 10・20）を1秒動かし、jog_stop・stop・今の角度へ送り直す（hold）の3つのどれで止まるかを見ます。守りに当たったときは、3つを全部送って止めるようにしました。

| 止め方 | 結果 |
|---|---|
| jog_stop（jog speed 5） | 0.16秒で止まった。行きすぎ1.8° |
| stop（jog speed 10） | 約0.1秒で止まった。行きすぎ3.7° |
| stop（jog speed 5） | 止まらず、25°の守りまで動き続けた |
| 今の角度へ送り直す（jog speed 5・10） | 止まらなかった。jog は send_angles では上書きできず、次の試しの始めまで jog が続いていた |

もう1つ、jog の speed 5 は0.12秒動いて0.08秒止まる階段状の動きでした。20°先へ1回送る形は、1秒のうちに目標へ着いてしまい、途中で止める試しになっていませんでした。

#### jog_probe 2回目の端末の出力（15:39）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % git add tools/jog_probe.sh tools/pi/jog_probe_pi.py
git commit -m "jog_probe: 止め方を比べる stop の組を足す (jog の向きは実機に合わせる)"
tools/jog_probe.sh stop
[main dcdf3f1] jog_probe: 止め方を比べる stop の組を足す (jog の向きは実機に合わせる)
 2 files changed, 96 insertions(+), 5 deletions(-)
jog_probe 20261105_153952 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153952_stop)
--- デーモンの状態 (止める前)
mode=systemd
pid=19339
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=19339
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.43, 2.98, 3.51, 0.26, 0.7, -29.61]
根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 18.1 ms / 空で返った割合 0.0

E_jog5_jogstop を始めます  (Enter で進む / q と Enter で終わる)

  [E_jog5_jogstop] travel_deg=11.15  mean_speed=12.68  median_speed=15.89  max_speed=24.27  speed_cv=0.57  stall_ratio=0.0  overshoot_deg=1.76  stop_latency_sec=0.16  read_fails=1  end_from_start_deg=12.91  guard=False
        0.1 秒ごとの速さ (°/秒): 7.6 24.3 4.4 24.3 6.6 24.1
  始めの角度へ戻した: 着いた j0=-0.87

E_jog5_stop を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから -25.2° 離れたので止めます
  [E_jog5_stop] travel_deg=0.61  mean_speed=4.38  overshoot_deg=24.26  stop_latency_sec=1.06  read_fails=9  end_from_start_deg=-25.23  guard=False
  始めの角度へ戻した: 着いた j0=-0.7

E_jog5_hold を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.0° 離れたので止めます
  [E_jog5_hold] travel_deg=10.71  mean_speed=13.09  median_speed=14.38  max_speed=37.86  speed_cv=1.18  stall_ratio=0.5  overshoot_deg=14.59  stop_latency_sec=0.95  read_fails=4  end_from_start_deg=25.03  guard=False
        0.1 秒ごとの速さ (°/秒): 0.0 28.8 0.0 37.9
  始めの角度へ戻した: 着いた j0=0.0

E_jog10_stop を始めます  (Enter で進む / q と Enter で終わる)

  [E_jog10_stop] travel_deg=17.13  mean_speed=17.51  median_speed=25.01  max_speed=43.28  speed_cv=0.37  stall_ratio=0.0  overshoot_deg=3.52  stop_latency_sec=0.12  read_fails=3  end_from_start_deg=-20.22  guard=False
        0.1 秒ごとの速さ (°/秒): 43.3 25.0 22.2 35.0 17.5
  始めの角度へ戻した: 着いた j0=-0.79

E_jog10_hold を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.8° 離れたので止めます
  [E_jog10_hold] travel_deg=18.98  mean_speed=20.61  median_speed=16.17  max_speed=36.81  speed_cv=0.71  stall_ratio=0.0  overshoot_deg=7.21  stop_latency_sec=0.0  read_fails=3  end_from_start_deg=25.83  guard=False
        0.1 秒ごとの速さ (°/秒): 8.8 33.6 36.8 16.2 11.7
  始めの角度へ戻した: 着かない j0=25.22

F_far10_stop を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.6° 離れたので止めます
  守り: j0 が始めから 25.6° 離れたので止めます
  [F_far10_stop] read_fails=0  end_from_start_deg=25.65  guard=True
  始めの角度へ戻した: 着かない j0=-0.61

F_far10_hold を始めます  (Enter で進む / q と Enter で終わる)

  [F_far10_hold] travel_deg=18.8  mean_speed=18.31  median_speed=23.5  max_speed=35.21  speed_cv=0.33  stall_ratio=0.0  overshoot_deg=0.53  stop_latency_sec=0.33  read_fails=0  end_from_start_deg=19.15  guard=False
        0.1 秒ごとの速さ (°/秒): 22.0 23.5 14.7 33.6 35.2
  始めの角度へ戻した: 着いた j0=-1.05

F_far20_hold を始めます  (Enter で進む / q と Enter で終わる)

  [F_far20_hold] travel_deg=19.95  mean_speed=21.18  median_speed=32.27  max_speed=57.26  speed_cv=0.83  stall_ratio=0.4  overshoot_deg=-0.0  stop_latency_sec=0.0  read_fails=1  end_from_start_deg=-20.31  guard=False
        0.1 秒ごとの速さ (°/秒): 54.2 57.3 32.3 -10.9 6.1
  始めの角度へ戻した: 着いた j0=-0.61
結果: /tmp/jog_probe_20261105_153952.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153952_stop/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=4995
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=4995
checker=no
デーモンは戻った (5555 LISTEN)
```

#### diag/jog_probe_20261105_153952_stop/result.json

```json
{"started_at": "2022-10-13 15:32:20", "pymycobot": "2.9.6", "params": {"speed": 20, "stream_interval": 0.1, "stream_ahead": 3.0, "jog_speeds": [10, 30], "guard_deg": 25.0, "set": "stop", "jog_dir": {"+1": 0, "-1": 1}}, "tests": {"read": {"median_ms": 16.0, "max_ms": 18.1, "empty_ratio": 0.0}, "E_jog5_jogstop": {"n_samples": 137, "travel_deg": 11.15, "active_sec": 0.88, "mean_speed": 12.68, "bin_speeds": [7.6, 24.3, 4.4, 24.3, 6.6, 24.1], "median_speed": 15.89, "max_speed": 24.27, "speed_cv": 0.57, "stall_ratio": 0.0, "overshoot_deg": 1.76, "stop_latency_sec": 0.16, "read_fails": 1, "end_from_start_deg": 12.91, "how": "jog_stop", "speed": 5, "guard": false, "samples": [[0.1358, -0.43], [0.1556, -0.35], [0.1666, -0.26], [0.1772, -0.08], [0.1955, 0.0], [0.2157, 0.43], [0.2355, 0.87], [0.2558, 1.14], [0.2763, 1.49], [0.296, 1.93], [0.3156, 2.19], [0.3355, 2.37], [0.3551, 2.46], [0.375, 2.54], [0.395, 2.63], [0.4149, 2.72], [0.4349, 3.07], [0.455, 3.33], [0.4749, 3.86], [0.495, 4.57], [0.5149, 5.0], [0.5349, 5.27], [0.5549, 5.36], [0.5749, 5.44], [0.5949, 5.36], [0.6149, 5.36], [0.6349, 5.71], [0.6549, 5.97], [0.6749, 6.59], [0.6949, 7.2], [0.7149, 7.64], [0.7349, 7.91], [0.7549, 7.99], [0.7749, 8.08], [0.7949, 8.08], [0.8149, 8.08], [0.8349, 8.52], [0.8549, 8.7], [0.8749, 9.31], [0.8949, 9.93], [0.9149, 10.45], [0.9349, 10.63], [0.9549, 10.72], [0.9749, 10.72], [0.9949, 10.72], [1.0149, 10.72], [1.0469, 11.33], [1.0649, 11.95], [1.0808, 12.39], [1.0975, 12.91], [1.1129, 13.0], [1.1288, 13.09], [1.1453, 13.09], [1.162, 13.0], [1.179, 12.74], [1.2009, 12.56], [1.2168, 12.48], [1.234, 12.39], [1.2528, 12.39], [1.2691, 12.39], [1.2848, 12.48], [1.302, 12.48], [1.3208, 12.48], [1.3371, 12.48], [1.3528, 12.48], [1.37, 12.48], [1.3888, 12.48], [1.4051, 12.48], [1.4208, 12.48], [1.438, 12.48], [1.4568, 12.48], [1.4731, 12.48], [1.4888, 12.48], [1.506, 12.48], [1.5248, 12.48], [1.5411, 12.48], [1.5568, 12.48], [1.574, 12.48], [1.5928, 12.48], [1.6091, 12.48], [1.6248, 12.48], [1.6417, 12.48], [1.6609, 12.48], [1.6769, 12.48], [1.6929, 12.48], [1.7094, 12.48], [1.7248, 12.48], [1.7409, 12.48], [1.7569, 12.48], [1.7728, 12.48], [1.7895, 12.48], [1.8049, 12.48], [1.8209, 12.48], [1.8369, 12.48], [1.8529, 12.48], [1.8696, 12.48], [1.8815, 12.48], [1.8969, 12.48], [1.9129, 12.48], [1.9288, 12.48], [1.9448, 12.48], [1.9615, 12.48], [1.9768, 12.48], [1.9928, 12.48], [2.0088, 12.48], [2.0249, 12.48], [2.0415, 12.48], [2.0568, 12.48], [2.0728, 12.48], [2.0889, 12.48], [2.1048, 12.48], [2.1215, 12.48], [2.1409, 12.48], [2.1569, 12.48], [2.1729, 12.48], [2.1896, 12.48], [2.2015, 12.48], [2.2168, 12.48], [2.2329, 12.48], [2.2488, 12.48], [2.2649, 12.48], [2.2815, 12.48], [2.2969, 12.48], [2.3129, 12.48], [2.3289, 12.48], [2.3451, 12.48], [2.3621, 12.48], [2.3808, 12.48], [2.3971, 12.48], [2.4128, 12.48], [2.4301, 12.48], [2.4489, 12.48], [2.465, 12.48], [2.4808, 12.48], [2.498, 12.48], [2.5168, 12.48], [2.5331, 12.48]], "t_stop": 1.0149}, "E_jog5_stop": {"n_samples": 42, "travel_deg": 0.61, "active_sec": 0.14, "mean_speed": 4.38, "overshoot_deg": 24.26, "stop_latency_sec": 1.06, "read_fails": 9, "end_from_start_deg": -25.23, "how": "stop", "speed": 5, "guard": false, "samples": [[0.1532, -0.79], [0.2925, -1.4], [1.0443, -11.6], [1.0644, -11.6], [1.1234, -11.95], [1.1834, -13.71], [1.2434, -14.32], [1.3034, -14.15], [1.4353, -16.78], [1.4565, -16.78], [1.4765, -17.22], [1.4965, -17.57], [1.5165, -18.45], [1.5365, -19.33], [1.5564, -19.68], [1.5765, -19.77], [1.5964, -19.77], [1.6165, -19.77], [1.6365, -19.51], [1.6564, -19.68], [1.6764, -20.12], [1.6964, -20.47], [1.7165, -21.35], [1.7364, -22.06], [1.7565, -22.32], [1.7765, -22.41], [1.7965, -22.41], [1.8165, -22.41], [1.8365, -22.14], [1.8565, -22.32], [1.8764, -22.76], [1.8965, -23.11], [1.9164, -23.99], [1.9364, -24.78], [1.9565, -25.13], [1.9765, -25.22], [1.9964, -25.22], [2.0164, -25.22], [2.0364, -24.96], [2.0564, -24.96], [2.0765, -25.31], [2.0965, -25.66]], "t_stop": 1.0141}, "E_jog5_hold": {"n_samples": 78, "travel_deg": 10.71, "active_sec": 0.82, "mean_speed": 13.09, "bin_speeds": [0.0, 28.8, 0.0, 37.9], "median_speed": 14.38, "max_speed": 37.86, "speed_cv": 1.18, "stall_ratio": 0.5, "overshoot_deg": 14.59, "stop_latency_sec": 0.95, "read_fails": 4, "end_from_start_deg": 25.03, "how": "hold", "speed": 5, "guard": false, "samples": [[0.1178, -0.7], [0.139, -0.7], [0.161, -0.7], [0.183, -0.52], [0.2052, -0.26], [0.2207, 0.17], [0.24, 0.52], [0.2599, 1.05], [0.28, 1.58], [0.2999, 1.75], [0.3199, 2.02], [0.3399, 2.1], [0.3609, 2.1], [0.3806, 2.02], [0.401, 2.02], [0.4204, 2.28], [0.44, 2.81], [0.4601, 3.6], [0.4803, 4.3], [0.5, 4.57], [0.52, 4.74], [0.54, 4.83], [0.56, 4.83], [0.5803, 4.65], [0.6, 4.74], [0.622, 5.09], [0.638, 5.62], [0.6569, 6.41], [0.7965, 7.47], [0.9182, 9.93], [0.9363, 10.01], [1.1042, 12.48], [1.1245, 12.56], [1.144, 12.48], [1.164, 12.39], [1.184, 12.65], [1.2041, 13.18], [1.2241, 13.53], [1.2441, 14.23], [1.2641, 14.76], [1.2841, 15.02], [1.304, 15.11], [1.3239, 15.11], [1.344, 15.11], [1.3639, 15.11], [1.3839, 15.46], [1.4039, 15.99], [1.4242, 16.34], [1.4439, 16.96], [1.4639, 17.49], [1.4839, 17.66], [1.5039, 17.75], [1.5239, 17.84], [1.5439, 17.84], [1.5639, 17.84], [1.5839, 18.19], [1.6039, 18.63], [1.6239, 18.98], [1.6439, 19.68], [1.6639, 20.21], [1.6839, 20.39], [1.7039, 20.47], [1.7239, 20.47], [1.7439, 20.47], [1.7639, 20.47], [1.7839, 20.91], [1.804, 21.35], [1.8239, 21.79], [1.8439, 22.41], [1.8639, 22.85], [1.8839, 23.02], [1.9039, 23.11], [1.9239, 23.11], [1.9439, 23.11], [1.9639, 23.29], [1.9839, 23.73], [2.0039, 24.16], [2.0239, 24.6]], "t_stop": 1.0579}, "E_jog10_stop": {"n_samples": 114, "travel_deg": 17.13, "active_sec": 0.98, "mean_speed": 17.51, "bin_speeds": [43.3, 25.0, 22.2, 35.0, 17.5], "median_speed": 25.01, "max_speed": 43.28, "speed_cv": 0.37, "stall_ratio": 0.0, "overshoot_deg": 3.52, "stop_latency_sec": 0.12, "read_fails": 3, "end_from_start_deg": -20.22, "how": "stop", "speed": 10, "guard": false, "samples": [[0.0377, 0.0], [0.0624, 0.0], [0.4055, -4.48], [0.4258, -5.36], [0.4457, -5.88], [0.4657, -6.76], [0.4859, -7.38], [0.5076, -7.82], [0.5269, -7.91], [0.547, -7.91], [0.5669, -8.08], [0.5876, -8.52], [0.6024, -9.14], [0.656, -9.58], [0.7161, -11.68], [0.7761, -12.04], [0.8361, -13.09], [0.8961, -15.64], [0.9561, -16.52], [1.0159, -17.13], [1.0437, -19.95], [1.0595, -20.3], [1.0761, -20.74], [1.0915, -20.83], [1.1075, -20.83], [1.1236, -20.83], [1.1395, -20.83], [1.1561, -20.65], [1.1716, -20.65], [1.1875, -20.65], [1.2036, -20.65], [1.2195, -20.65], [1.2361, -20.65], [1.2515, -20.65], [1.2675, -20.65], [1.2836, -20.65], [1.2995, -20.65], [1.3161, -20.65], [1.3315, -20.65], [1.3475, -20.65], [1.3637, -20.65], [1.3795, -20.65], [1.3961, -20.65], [1.4115, -20.65], [1.4276, -20.65], [1.4436, -20.65], [1.4595, -20.65], [1.4761, -20.65], [1.4915, -20.65], [1.5075, -20.65], [1.5237, -20.65], [1.5395, -20.65], [1.5561, -20.65], [1.5715, -20.65], [1.5875, -20.65], [1.6037, -20.65], [1.6195, -20.65], [1.6361, -20.65], [1.6515, -20.65], [1.6675, -20.65], [1.6836, -20.65], [1.6995, -20.65], [1.7161, -20.65], [1.7315, -20.65], [1.7475, -20.65], [1.7637, -20.65], [1.7795, -20.65], [1.7961, -20.65], [1.8115, -20.65], [1.8275, -20.65], [1.8436, -20.65], [1.8595, -20.65], [1.8761, -20.65], [1.8915, -20.65], [1.9075, -20.65], [1.9237, -20.65], [1.9395, -20.65], [1.9561, -20.65], [1.9715, -20.65], [1.9875, -20.65], [2.0036, -20.65], [2.0195, -20.65], [2.0361, -20.65], [2.0515, -20.65], [2.0675, -20.65], [2.0836, -20.65], [2.0995, -20.65], [2.1161, -20.65], [2.1315, -20.65], [2.1475, -20.65], [2.1637, -20.65], [2.1795, -20.65], [2.1962, -20.65], [2.2115, -20.65], [2.2275, -20.65], [2.2437, -20.65], [2.2595, -20.65], [2.2757, -20.65], [2.2915, -20.65], [2.3075, -20.65], [2.3235, -20.65], [2.3395, -20.65], [2.3557, -20.65], [2.3715, -20.65], [2.3875, -20.65], [2.4035, -20.65], [2.4195, -20.65], [2.4356, -20.65], [2.4515, -20.65], [2.4675, -20.65], [2.4835, -20.65], [2.4995, -20.65], [2.5156, -20.65], [2.5315, -20.65]], "t_stop": 1.0159}, "E_jog10_hold": {"n_samples": 18, "travel_deg": 18.98, "active_sec": 0.92, "mean_speed": 20.61, "bin_speeds": [8.8, 33.6, 36.8, 16.2, 11.7], "median_speed": 16.17, "max_speed": 36.81, "speed_cv": 0.71, "stall_ratio": 0.0, "overshoot_deg": 7.21, "stop_latency_sec": 0.0, "read_fails": 3, "end_from_start_deg": 25.83, "how": "hold", "speed": 10, "guard": false, "samples": [[0.1266, -0.79], [0.1485, -0.7], [0.2077, -0.52], [0.2677, 0.79], [0.3278, 1.93], [0.3877, 2.46], [0.4477, 4.13], [0.5078, 6.15], [0.5677, 6.67], [0.6278, 8.08], [0.6875, 10.28], [0.7475, 11.07], [0.8075, 12.04], [0.8676, 14.32], [0.9275, 15.38], [0.9875, 16.08], [1.0475, 18.19], [1.3583, 25.4]], "t_stop": 1.0475}, "F_far10_stop": {"n_samples": 2, "read_fails": 0, "end_from_start_deg": 25.65, "how": "stop", "speed": 10, "guard": true, "samples": [[0.029, 25.22], [0.0745, 25.22]], "t_stop": 0.0533}, "F_far10_hold": {"n_samples": 110, "travel_deg": 18.8, "active_sec": 1.03, "mean_speed": 18.31, "bin_speeds": [22.0, 23.5, 14.7, 33.6, 35.2], "median_speed": 23.5, "max_speed": 35.21, "speed_cv": 0.33, "stall_ratio": 0.0, "overshoot_deg": 0.53, "stop_latency_sec": 0.33, "read_fails": 0, "end_from_start_deg": 19.15, "how": "hold", "speed": 10, "guard": false, "samples": [[0.022, -0.61], [0.034, -0.61], [0.089, -0.61], [0.1489, -0.61], [0.2089, -0.52], [0.2689, 0.26], [0.3289, 1.75], [0.3889, 3.07], [0.4489, 4.21], [0.5089, 5.62], [0.5689, 7.38], [0.6289, 8.61], [0.6889, 9.49], [0.7489, 10.98], [0.8089, 13.0], [0.8689, 13.88], [0.9289, 14.85], [0.9889, 16.96], [1.0489, 18.19], [1.1421, 19.51], [1.16, 19.77], [1.176, 19.86], [1.1922, 19.86], [1.208, 19.86], [1.2253, 19.51], [1.244, 19.33], [1.2602, 18.89], [1.276, 18.63], [1.2932, 18.28], [1.312, 18.19], [1.3283, 18.19], [1.344, 18.19], [1.3613, 18.36], [1.38, 18.45], [1.3962, 18.72], [1.4125, 18.8], [1.4311, 18.8], [1.4419, 18.8], [1.4605, 18.8], [1.4765, 18.8], [1.4925, 18.8], [1.5094, 18.8], [1.522, 18.8], [1.5336, 18.72], [1.5526, 18.72], [1.5681, 18.72], [1.5792, 18.72], [1.5964, 18.72], [1.6132, 18.72], [1.6254, 18.72], [1.6373, 18.72], [1.6492, 18.72], [1.6685, 18.72], [1.6844, 18.72], [1.7009, 18.72], [1.7222, 18.72], [1.7405, 18.72], [1.7514, 18.72], [1.763, 18.72], [1.7805, 18.72], [1.7974, 18.72], [1.8092, 18.72], [1.8285, 18.72], [1.8439, 18.72], [1.8662, 18.72], [1.8846, 18.72], [1.8991, 18.72], [1.9166, 18.72], [1.9363, 18.72], [1.9521, 18.72], [1.968, 18.72], [1.984, 18.72], [2.0007, 18.72], [2.02, 18.72], [2.0361, 18.72], [2.052, 18.72], [2.0692, 18.72], [2.0884, 18.72], [2.1037, 18.72], [2.1201, 18.72], [2.1373, 18.72], [2.156, 18.72], [2.1723, 18.72], [2.188, 18.72], [2.2053, 18.72], [2.224, 18.72], [2.2403, 18.72], [2.256, 18.72], [2.273, 18.72], [2.292, 18.72], [2.308, 18.72], [2.324, 18.72], [2.3407, 18.72], [2.36, 18.72], [2.376, 18.72], [2.392, 18.72], [2.4087, 18.72], [2.428, 18.72], [2.444, 18.72], [2.46, 18.72], [2.4767, 18.72], [2.496, 18.72], [2.512, 18.72], [2.528, 18.72], [2.5446, 18.72], [2.56, 18.72], [2.576, 18.72], [2.592, 18.72], [2.608, 18.72], [2.6247, 18.72]], "t_stop": 1.0489}, "F_far20_hold": {"n_samples": 120, "travel_deg": 19.95, "active_sec": 0.94, "mean_speed": 21.18, "bin_speeds": [54.2, 57.3, 32.3, -10.9, 6.1], "median_speed": 32.27, "max_speed": 57.26, "speed_cv": 0.83, "stall_ratio": 0.4, "overshoot_deg": -0.0, "stop_latency_sec": 0.0, "read_fails": 1, "end_from_start_deg": -20.31, "how": "hold", "speed": 20, "guard": false, "samples": [[0.0708, -0.79], [0.1307, -0.79], [0.1907, -0.79], [0.2507, -0.79], [0.3107, -2.72], [0.3707, -5.97], [0.4307, -8.26], [0.491, -10.28], [0.5509, -13.71], [0.611, -16.78], [0.671, -18.19], [0.6875, -19.68], [0.7052, -20.03], [0.7219, -20.83], [0.7411, -21.0], [0.7581, -21.0], [0.7772, -21.0], [0.7897, -20.83], [0.809, -20.65], [0.8252, -20.21], [0.8412, -20.12], [0.8578, -20.12], [0.8773, -20.12], [0.8931, -20.12], [0.9036, -20.3], [0.9156, -20.39], [0.9277, -20.39], [0.9452, -20.56], [0.9648, -20.65], [0.9807, -20.65], [0.9968, -20.74], [1.0127, -20.74], [1.1687, -20.74], [1.1848, -20.74], [1.2007, -20.74], [1.2172, -20.74], [1.2327, -20.74], [1.2487, -20.74], [1.2648, -20.74], [1.2807, -20.74], [1.2989, -20.74], [1.3111, -20.74], [1.3215, -20.74], [1.3333, -20.74], [1.345, -20.74], [1.3608, -20.74], [1.3767, -20.74], [1.3927, -20.74], [1.4087, -20.74], [1.4248, -20.74], [1.4407, -20.74], [1.4567, -20.74], [1.4727, -20.74], [1.4887, -20.74], [1.5047, -20.74], [1.5207, -20.74], [1.5367, -20.74], [1.5527, -20.74], [1.5687, -20.74], [1.5847, -20.74], [1.6007, -20.74], [1.6167, -20.74], [1.6327, -20.74], [1.6487, -20.74], [1.6647, -20.74], [1.6807, -20.74], [1.6967, -20.74], [1.7128, -20.74], [1.7287, -20.74], [1.7447, -20.74], [1.7607, -20.74], [1.7767, -20.74], [1.7927, -20.74], [1.8087, -20.74], [1.8247, -20.74], [1.8407, -20.74], [1.8567, -20.74], [1.8768, -20.74], [1.8932, -20.74], [1.9087, -20.74], [1.9247, -20.74], [1.9408, -20.74], [1.9567, -20.74], [1.9732, -20.74], [1.9887, -20.74], [2.0047, -20.74], [2.0208, -20.74], [2.0367, -20.74], [2.0533, -20.74], [2.0687, -20.74], [2.0847, -20.74], [2.1008, -20.74], [2.1167, -20.74], [2.1332, -20.74], [2.1487, -20.74], [2.1647, -20.74], [2.1808, -20.74], [2.1967, -20.74], [2.2132, -20.74], [2.2287, -20.74], [2.2447, -20.74], [2.2608, -20.74], [2.2767, -20.74], [2.2932, -20.74], [2.3087, -20.74], [2.3247, -20.74], [2.3408, -20.74], [2.3567, -20.74], [2.3732, -20.74], [2.3887, -20.74], [2.4047, -20.74], [2.4208, -20.74], [2.4367, -20.74], [2.4533, -20.74], [2.4687, -20.74], [2.4847, -20.74], [2.5008, -20.74], [2.5167, -20.74], [2.5332, -20.74], [2.5487, -20.74]], "t_stop": 1.0127}}, "start": [-0.43, 2.98, 3.51, 0.26, 0.7, -29.61]}
```


## 15:43 遠い目標へ1回送る動きを、途中で止めた（jog_probe 3回目）

20°先へ送り、0.4〜0.5秒の動いている途中で止める組（`hold`）と、jog speed 10 を jog_stop で3回止める組を足しました。冒頭の動画がこの試しです。

| 試し | 結果 |
|---|---|
| speed 10 で送り、0.5秒で stop | 0.24秒で止まった。行きすぎ3.3° |
| speed 10 で送り、0.5秒で今の角度へ送り直す | 約4°行きすぎてから戻った |
| speed 5 で送り、0.5秒で今の角度へ送り直す | 止まらずに目標の20°まで行った |
| jog speed 10 を jog_stop で3回 | 3回とも約0.1秒で止まった。行きすぎ3〜4° |

3回の試しの生の記録（時刻と j0 の角度）を、送り方ごとに並べると次のようになります。

【画像】LOG446_04_jog_probe_traces.png mechArm 270 の根元 j0 を、1回送る・送り直し・fresh_mode・jog・階段状の jog・20°先へ送って途中で stop の6通りで動かしたときの、時刻と角度の線。1回送る形と jog speed 30 は線がまっすぐで、送り直しと fresh_mode と jog speed 5 は段になっている

ゆっくり動かすと、jog でも1回送る形でも、0.2秒ごとに進んでは止まる動きになりました。一定の速さでなめらかに動いたのは speed 20〜30 だけです。**なめらかさの限界は送り方ではなくサーボの側にあり、ゆっくり、かつなめらかに、は mechArm 270 では両立しません。** jog は止まらない回が1回目にあったので、止めそこなったときに動き続ける jog は長押しの土台にせず、止めそこなっても目標で必ず止まる、遠い目標へ1回送る形を使うことにしました。速さは speed 20（毎秒約40°）に決めました。

#### jog_probe 3回目の端末の出力（15:43）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % git add tools/jog_probe.sh tools/pi/jog_probe_pi.py
git commit -m "jog_probe: 遠い目標を途中で止める hold の組を足す"
tools/jog_probe.sh hold
[main b577a13] jog_probe: 遠い目標を途中で止める hold の組を足す
 2 files changed, 22 insertions(+), 5 deletions(-)
jog_probe 20261105_154332 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_154332_hold)
--- デーモンの状態 (止める前)
mode=systemd
pid=4995
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=4995
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.96, 5.53, 6.41, 0.0, -0.08, -29.53]
HOME から離れています。HOME [0,0,0,0,0,-30] へ送ります  (Enter で進む / q と Enter で終わる)

根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 12.6 ms / 最大 21.4 ms / 空で返った割合 0.0

G_far5_hold_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far5_hold_0.5s] travel_deg=3.94  mean_speed=10.54  overshoot_deg=15.56  stop_latency_sec=1.48  read_fails=3  end_from_start_deg=19.5  guard=False
  始めの角度へ戻した: 着いた j0=0.17

G_far10_hold_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far10_hold_0.5s] travel_deg=6.76  mean_speed=22.87  overshoot_deg=1.59  stop_latency_sec=0.21  read_fails=9  end_from_start_deg=-9.41  guard=False
  始めの角度へ戻した: 着いた j0=0.52

G_far20_hold_0.4s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far20_hold_0.4s] read_fails=4  end_from_start_deg=19.5  guard=False

  始めの角度へ戻した: 着かない j0=0.26

G_far10_stop_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far10_stop_0.5s] travel_deg=7.55  mean_speed=15.73  median_speed=23.5  max_speed=23.5  speed_cv=0.0  stall_ratio=0.0  overshoot_deg=3.25  stop_latency_sec=0.24  read_fails=0  end_from_start_deg=-10.37  guard=False
        0.1 秒ごとの速さ (°/秒): 23.5
  始めの角度へ戻した: 着かない j0=0.17

H_jog10_jogstop_1 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_1] travel_deg=17.05  mean_speed=18.72  median_speed=17.92  max_speed=36.8  speed_cv=0.53  stall_ratio=0.0  overshoot_deg=3.34  stop_latency_sec=0.08  read_fails=1  end_from_start_deg=20.73  guard=False
        0.1 秒ごとの速さ (°/秒): 19.7 11.7 16.2 36.8
  始めの角度へ戻した: 着かない j0=-0.61

H_jog10_jogstop_2 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_2] travel_deg=17.49  mean_speed=17.14  median_speed=20.57  max_speed=38.16  speed_cv=0.46  stall_ratio=0.0  overshoot_deg=3.78  stop_latency_sec=0.14  read_fails=0  end_from_start_deg=-21.71  guard=False
        0.1 秒ごとの速さ (°/秒): 38.2 17.7 10.2 20.6 26.3
  始めの角度へ戻した: 着かない j0=0.26

H_jog10_jogstop_3 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_3] travel_deg=18.19  mean_speed=17.71  median_speed=22.5  max_speed=42.54  speed_cv=0.57  stall_ratio=0.0  overshoot_deg=3.08  stop_latency_sec=0.07  read_fails=3  end_from_start_deg=21.7  guard=False
        0.1 秒ごとの速さ (°/秒): 34.0 9.9 42.5 11.0 22.5
  始めの角度へ戻した: 着かない j0=-0.43
結果: /tmp/jog_probe_20261105_154332.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_154332_hold/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=17242
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=17242
checker=no
デーモンは戻った (5555 LISTEN)
```

#### diag/jog_probe_20261105_154332_hold/result.json

```json
{"started_at": "2022-10-13 15:36:00", "pymycobot": "2.9.6", "params": {"speed": 20, "stream_interval": 0.1, "stream_ahead": 3.0, "jog_speeds": [10, 30], "guard_deg": 25.0, "set": "hold", "jog_dir": {"+1": 0, "-1": 1}}, "tests": {"read": {"median_ms": 12.6, "max_ms": 21.4, "empty_ratio": 0.0}, "G_far5_hold_0.5s": {"n_samples": 70, "travel_deg": 3.94, "active_sec": 0.37, "mean_speed": 10.54, "overshoot_deg": 15.56, "stop_latency_sec": 1.48, "read_fails": 3, "end_from_start_deg": 19.5, "how": "hold", "speed": 5, "guard": false, "samples": [[0.149, -0.17], [0.2629, 1.14], [0.2732, 1.31], [0.2862, 1.58], [0.2999, 1.84], [0.3197, 1.93], [0.3321, 2.1], [0.4439, 2.72], [0.4558, 2.98], [0.4682, 3.33], [0.523, 3.77], [0.6147, 4.13], [0.6349, 4.3], [0.6548, 4.57], [0.6747, 5.18], [0.6947, 6.06], [0.7147, 6.67], [0.735, 6.85], [0.7548, 6.94], [0.7747, 6.94], [0.7947, 6.76], [0.8147, 6.67], [0.8348, 6.85], [0.8547, 7.03], [0.8747, 7.64], [0.8947, 8.34], [0.9147, 8.87], [0.9348, 9.05], [0.9547, 9.14], [0.9747, 9.14], [0.9947, 8.96], [1.0147, 8.87], [1.0348, 9.22], [1.0547, 9.49], [1.0747, 10.01], [1.0947, 10.72], [1.1148, 11.16], [1.1349, 11.33], [1.1547, 11.33], [1.1747, 11.33], [1.1947, 11.16], [1.2147, 11.16], [1.2348, 11.51], [1.2548, 11.77], [1.2746, 12.39], [1.2946, 13.09], [1.3146, 13.44], [1.3345, 13.53], [1.3546, 13.53], [1.3746, 13.53], [1.3946, 13.35], [1.4146, 13.53], [1.4346, 13.88], [1.4552, 14.15], [1.4659, 14.85], [1.4783, 15.2], [1.4996, 15.38], [1.5226, 15.55], [1.5428, 15.64], [1.5626, 15.64], [1.5826, 15.64], [1.6429, 15.73], [1.7029, 17.05], [1.7629, 17.66], [1.8229, 17.49], [1.8829, 18.72], [1.9429, 19.86], [2.0029, 19.77], [2.0629, 19.42], [2.1229, 19.33]], "t_stop": 0.523}, "G_far10_hold_0.5s": {"n_samples": 41, "travel_deg": 6.76, "active_sec": 0.3, "mean_speed": 22.87, "overshoot_deg": 1.59, "stop_latency_sec": 0.21, "read_fails": 9, "end_from_start_deg": -9.41, "how": "hold", "speed": 10, "guard": false, "samples": [[0.2707, -1.23], [0.3262, -1.66], [0.3862, -4.21], [0.4463, -4.92], [0.5062, -5.44], [0.5662, -7.99], [0.6522, -9.84], [0.7736, -13.79], [1.5955, -9.14], [1.6115, -9.14], [1.6275, -9.14], [1.6435, -9.22], [1.6595, -9.31], [1.6758, -9.4], [1.6915, -9.4], [1.7074, -9.4], [1.7235, -9.49], [1.7395, -9.49], [1.7558, -9.49], [1.7715, -9.49], [1.7875, -9.49], [1.8089, -9.49], [1.83, -9.49], [1.852, -9.49], [1.8739, -9.49], [1.8972, -9.49], [1.9132, -9.49], [1.9322, -9.49], [1.9464, -9.49], [1.9635, -9.49], [1.9803, -9.49], [1.9995, -9.49], [2.0156, -9.49], [2.0315, -9.49], [2.0482, -9.49], [2.0601, -9.49], [2.0755, -9.49], [2.0915, -9.49], [2.1075, -9.49], [2.1235, -9.49], [2.1398, -9.58]], "t_stop": 0.5662}, "G_far20_hold_0.4s": {"n_samples": 99, "read_fails": 4, "end_from_start_deg": 19.5, "how": "hold", "speed": 20, "guard": false, "samples": [[0.6873, 20.12], [0.7054, 20.3], [0.7234, 20.3], [0.7393, 20.21], [0.7553, 20.21], [0.7714, 19.77], [0.7874, 19.51], [0.8037, 19.16], [0.8193, 19.07], [0.8353, 18.98], [0.8513, 18.89], [0.8673, 18.89], [0.8836, 18.98], [0.8994, 19.07], [0.9153, 19.16], [0.9313, 19.24], [0.9474, 19.33], [0.9637, 19.33], [0.9793, 19.33], [0.9953, 19.33], [1.0114, 19.33], [1.0274, 19.33], [1.0438, 19.33], [1.0593, 19.33], [1.0753, 19.33], [1.0914, 19.33], [1.1073, 19.33], [1.1237, 19.33], [1.1394, 19.33], [1.1553, 19.33], [1.1713, 19.33], [1.1873, 19.33], [1.2037, 19.33], [1.2193, 19.33], [1.2353, 19.33], [1.2514, 19.33], [1.2675, 19.33], [1.2838, 19.33], [1.2993, 19.33], [1.3153, 19.33], [1.3313, 19.33], [1.3474, 19.33], [1.3637, 19.33], [1.3793, 19.33], [1.3954, 19.33], [1.4114, 19.33], [1.4273, 19.33], [1.4436, 19.33], [1.4593, 19.33], [1.4754, 19.33], [1.4914, 19.33], [1.5074, 19.33], [1.5236, 19.33], [1.5394, 19.33], [1.5553, 19.33], [1.5714, 19.33], [1.5873, 19.33], [1.6037, 19.33], [1.6202, 19.33], [1.6383, 19.33], [1.6557, 19.33], [1.6726, 19.33], [1.6915, 19.33], [1.7074, 19.33], [1.7234, 19.33], [1.7397, 19.33], [1.7567, 19.33], [1.7748, 19.33], [1.7864, 19.33], [1.7988, 19.33], [1.8111, 19.33], [1.8228, 19.33], [1.8348, 19.33], [1.849, 19.33], [1.8589, 19.33], [1.8722, 19.33], [1.8845, 19.33], [1.8952, 19.33], [1.9117, 19.33], [1.9286, 19.33], [1.9418, 19.33], [1.9522, 19.33], [1.9643, 19.33], [1.9761, 19.33], [1.9883, 19.33], [2.0003, 19.33], [2.0122, 19.33], [2.0242, 19.33], [2.036, 19.33], [2.0559, 19.33], [2.0718, 19.33], [2.0824, 19.33], [2.0943, 19.33], [2.1075, 19.33], [2.1191, 19.33], [2.1307, 19.33], [2.1479, 19.33], [2.165, 19.33], [2.1767, 19.33]], "t_stop": 0.4997}, "G_far10_stop_0.5s": {"n_samples": 98, "travel_deg": 7.55, "active_sec": 0.48, "mean_speed": 15.73, "bin_speeds": [23.5], "median_speed": 23.5, "max_speed": 23.5, "speed_cv": 0.0, "stall_ratio": 0.0, "overshoot_deg": 3.25, "stop_latency_sec": 0.24, "read_fails": 0, "end_from_start_deg": -10.37, "how": "stop", "speed": 10, "guard": false, "samples": [[0.0722, 0.26], [0.1321, 0.26], [0.1921, 0.26], [0.2521, -0.35], [0.3121, -1.84], [0.3721, -3.25], [0.4321, -4.21], [0.4921, -5.27], [0.5521, -7.29], [0.5813, -8.96], [0.5973, -9.05], [0.6133, -9.05], [0.6293, -9.05], [0.6459, -9.4], [0.6613, -9.66], [0.6773, -9.84], [0.6933, -10.45], [0.7093, -10.81], [0.7259, -10.89], [0.7413, -10.89], [0.7573, -10.89], [0.7733, -10.72], [0.7893, -10.54], [0.8059, -10.28], [0.8213, -10.28], [0.8373, -10.19], [0.8533, -10.19], [0.8693, -10.19], [0.886, -10.28], [0.9013, -10.37], [0.9173, -10.37], [0.9333, -10.45], [0.9493, -10.45], [0.9659, -10.54], [0.9813, -10.54], [0.9973, -10.54], [1.0133, -10.54], [1.0293, -10.54], [1.046, -10.54], [1.0613, -10.54], [1.0773, -10.54], [1.0933, -10.54], [1.1093, -10.54], [1.126, -10.54], [1.1413, -10.54], [1.1573, -10.54], [1.1733, -10.54], [1.1893, -10.54], [1.206, -10.54], [1.2213, -10.54], [1.2373, -10.54], [1.2533, -10.54], [1.2693, -10.54], [1.286, -10.54], [1.3013, -10.54], [1.3175, -10.54], [1.3336, -10.54], [1.3493, -10.54], [1.3665, -10.54], [1.3853, -10.54], [1.4015, -10.54], [1.4173, -10.54], [1.4345, -10.54], [1.4533, -10.54], [1.4695, -10.54], [1.4853, -10.54], [1.5024, -10.54], [1.5213, -10.54], [1.5376, -10.54], [1.5533, -10.54], [1.5704, -10.54], [1.5946, -10.54], [1.611, -10.54], [1.633, -10.54], [1.6542, -10.54], [1.6761, -10.54], [1.6971, -10.54], [1.7187, -10.54], [1.742, -10.54], [1.766, -10.54], [1.7873, -10.54], [1.8034, -10.54], [1.8148, -10.54], [1.8337, -10.54], [1.8496, -10.54], [1.8653, -10.54], [1.8824, -10.54], [1.9013, -10.54], [1.9176, -10.54], [1.9334, -10.54], [1.9504, -10.54], [1.9693, -10.54], [1.9855, -10.54], [2.0013, -10.54], [2.0184, -10.54], [2.0373, -10.54], [2.0535, -10.54], [2.0693, -10.54]], "t_stop": 0.5522}, "H_jog10_jogstop_1": {"n_samples": 115, "travel_deg": 17.05, "active_sec": 0.91, "mean_speed": 18.72, "bin_speeds": [19.7, 11.7, 16.2, 36.8], "median_speed": 17.92, "max_speed": 36.8, "speed_cv": 0.53, "stall_ratio": 0.0, "overshoot_deg": 3.34, "stop_latency_sec": 0.08, "read_fails": 1, "end_from_start_deg": 20.73, "how": "jog_stop", "speed": 10, "guard": false, "samples": [[0.1166, 0.17], [0.1372, 0.17], [0.1592, 0.17], [0.1858, 0.17], [0.2022, 0.17], [0.2231, 0.35], [0.2485, 0.61], [0.308, 1.49], [0.3683, 3.6], [0.4299, 3.86], [0.4879, 5.0], [0.5479, 7.47], [0.6079, 8.17], [0.6679, 9.14], [0.7279, 11.42], [0.7879, 12.39], [0.8479, 13.18], [0.9077, 15.38], [0.9676, 16.61], [1.0276, 17.22], [1.0575, 19.68], [1.0735, 20.12], [1.0896, 20.65], [1.1055, 20.74], [1.122, 20.91], [1.1376, 21.0], [1.1535, 21.0], [1.1696, 20.91], [1.1855, 20.83], [1.202, 20.74], [1.2175, 20.65], [1.2336, 20.65], [1.2502, 20.56], [1.26, 20.56], [1.2775, 20.56], [1.294, 20.56], [1.3095, 20.56], [1.3256, 20.56], [1.3415, 20.56], [1.3575, 20.56], [1.374, 20.56], [1.3896, 20.56], [1.4055, 20.56], [1.4216, 20.56], [1.4375, 20.56], [1.454, 20.56], [1.4695, 20.56], [1.4855, 20.56], [1.5016, 20.56], [1.5175, 20.56], [1.534, 20.56], [1.5495, 20.56], [1.5655, 20.56], [1.5816, 20.56], [1.5975, 20.56], [1.614, 20.56], [1.6295, 20.56], [1.6455, 20.56], [1.6616, 20.56], [1.6775, 20.56], [1.694, 20.56], [1.7095, 20.56], [1.7255, 20.56], [1.7416, 20.56], [1.7575, 20.56], [1.774, 20.56], [1.7895, 20.56], [1.8055, 20.56], [1.8216, 20.56], [1.8375, 20.56], [1.854, 20.56], [1.8695, 20.56], [1.8855, 20.56], [1.9016, 20.56], [1.9175, 20.56], [1.934, 20.56], [1.9495, 20.56], [1.9655, 20.56], [1.9816, 20.56], [1.9975, 20.56], [2.0141, 20.56], [2.0295, 20.56], [2.0455, 20.56], [2.0616, 20.56], [2.0775, 20.56], [2.094, 20.56], [2.1095, 20.56], [2.1255, 20.56], [2.1416, 20.56], [2.1576, 20.56], [2.1741, 20.56], [2.1895, 20.56], [2.2055, 20.56], [2.2216, 20.56], [2.2375, 20.56], [2.2541, 20.56], [2.2695, 20.56], [2.2855, 20.56], [2.3016, 20.56], [2.3175, 20.56], [2.334, 20.56], [2.3496, 20.56], [2.3655, 20.56], [2.3837, 20.56], [2.3928, 20.56], [2.406, 20.56], [2.4173, 20.56], [2.4281, 20.56], [2.4495, 20.56], [2.4655, 20.56], [2.4815, 20.56], [2.4976, 20.56], [2.5135, 20.56], [2.53, 20.56], [2.5455, 20.56]], "t_stop": 1.0276}, "H_jog10_jogstop_2": {"n_samples": 115, "travel_deg": 17.49, "active_sec": 1.02, "mean_speed": 17.14, "bin_speeds": [38.2, 17.7, 10.2, 20.6, 26.3], "median_speed": 20.57, "max_speed": 38.16, "speed_cv": 0.46, "stall_ratio": 0.0, "overshoot_deg": 3.78, "stop_latency_sec": 0.14, "read_fails": 0, "end_from_start_deg": -21.71, "how": "jog_stop", "speed": 10, "guard": false, "samples": [[0.0329, -0.61], [0.0522, -0.61], [0.0722, -0.61], [0.0922, -0.61], [0.1534, -0.61], [0.2134, -0.61], [0.2734, -0.61], [0.3334, -2.19], [0.3934, -4.48], [0.4534, -5.0], [0.5134, -6.06], [0.5734, -8.52], [0.6334, -9.4], [0.6934, -10.01], [0.7537, -12.48], [0.8135, -13.71], [0.8735, -14.06], [0.9334, -16.34], [0.9934, -17.92], [1.0534, -18.1], [1.082, -20.47], [1.0981, -21.0], [1.1145, -21.79], [1.1301, -22.14], [1.1477, -22.32], [1.166, -22.41], [1.1824, -22.41], [1.198, -22.32], [1.2157, -22.06], [1.2341, -22.06], [1.2504, -21.97], [1.2661, -21.88], [1.2836, -21.88], [1.3021, -21.88], [1.3181, -21.88], [1.3341, -21.88], [1.3518, -21.88], [1.3651, -21.88], [1.3758, -21.88], [1.3882, -21.88], [1.4065, -21.88], [1.4218, -21.88], [1.4345, -21.88], [1.454, -21.88], [1.4682, -21.88], [1.4865, -21.88], [1.503, -21.88], [1.5148, -21.88], [1.5292, -21.88], [1.5385, -21.88], [1.5544, -21.88], [1.5723, -21.88], [1.5843, -21.88], [1.6025, -21.88], [1.6182, -21.88], [1.6302, -21.88], [1.6429, -21.88], [1.6546, -21.88], [1.6705, -21.88], [1.6881, -21.88], [1.7066, -21.88], [1.7247, -21.88], [1.7353, -21.88], [1.7478, -21.88], [1.7591, -21.88], [1.7702, -21.88], [1.7829, -21.88], [1.7943, -21.88], [1.8069, -21.88], [1.8187, -21.88], [1.8306, -21.88], [1.8464, -21.88], [1.8661, -21.88], [1.8821, -21.88], [1.8984, -21.88], [1.914, -21.88], [1.9317, -21.88], [1.95, -21.88], [1.9664, -21.88], [1.982, -21.88], [1.9998, -21.88], [2.0181, -21.88], [2.0344, -21.88], [2.05, -21.88], [2.0677, -21.88], [2.086, -21.88], [2.1024, -21.88], [2.1181, -21.88], [2.1358, -21.88], [2.154, -21.88], [2.1704, -21.88], [2.186, -21.88], [2.2038, -21.88], [2.222, -21.88], [2.2384, -21.88], [2.254, -21.88], [2.2717, -21.88], [2.29, -21.88], [2.3064, -21.88], [2.322, -21.88], [2.3397, -21.88], [2.358, -21.88], [2.3744, -21.88], [2.39, -21.88], [2.4077, -21.88], [2.4261, -21.88], [2.4425, -21.88], [2.4581, -21.88], [2.4753, -21.88], [2.4941, -21.88], [2.5101, -21.88], [2.5261, -21.88], [2.5433, -21.88], [2.5621, -21.88], [2.5781, -21.88]], "t_stop": 1.0534}, "H_jog10_jogstop_3": {"n_samples": 128, "travel_deg": 18.19, "active_sec": 1.03, "mean_speed": 17.71, "bin_speeds": [34.0, 9.9, 42.5, 11.0, 22.5], "median_speed": 22.5, "max_speed": 42.54, "speed_cv": 0.57, "stall_ratio": 0.0, "overshoot_deg": 3.08, "stop_latency_sec": 0.07, "read_fails": 3, "end_from_start_deg": 21.7, "how": "jog_stop", "speed": 10, "guard": false, "samples": [[0.0331, 0.26], [0.053, 0.26], [0.0729, 0.26], [0.093, 0.26], [0.113, 0.26], [0.133, 0.26], [0.1529, 0.26], [0.173, 0.26], [0.193, 0.26], [0.213, 0.35], [0.233, 0.52], [0.253, 1.05], [0.273, 1.75], [0.293, 2.63], [0.313, 3.42], [0.333, 3.77], [0.353, 4.04], [0.373, 4.3], [0.3929, 4.39], [0.413, 4.57], [0.433, 4.83], [0.453, 5.44], [0.473, 6.41], [0.493, 7.38], [0.5129, 7.99], [0.5333, 8.17], [0.5532, 8.52], [0.5738, 8.7], [0.5888, 8.78], [0.709, 12.21], [0.9772, 17.22], [1.0007, 17.75], [1.06, 18.45], [1.0894, 20.91], [1.1105, 21.0], [1.1305, 21.26], [1.1505, 21.44], [1.1705, 21.35], [1.1907, 21.35], [1.2113, 21.44], [1.2307, 21.44], [1.2454, 21.44], [1.2638, 21.44], [1.2829, 21.53], [1.2991, 21.53], [1.3149, 21.53], [1.3318, 21.53], [1.3509, 21.53], [1.3671, 21.53], [1.383, 21.53], [1.3997, 21.53], [1.4189, 21.53], [1.4352, 21.53], [1.4509, 21.53], [1.4676, 21.53], [1.4829, 21.53], [1.4989, 21.53], [1.515, 21.53], [1.5309, 21.53], [1.5476, 21.53], [1.563, 21.53], [1.5789, 21.53], [1.595, 21.53], [1.6109, 21.53], [1.6276, 21.53], [1.6429, 21.53], [1.6589, 21.53], [1.675, 21.53], [1.6909, 21.53], [1.7077, 21.53], [1.7271, 21.53], [1.7422, 21.53], [1.7544, 21.53], [1.7662, 21.53], [1.7786, 21.53], [1.7954, 21.53], [1.8121, 21.53], [1.8283, 21.53], [1.8474, 21.53], [1.8581, 21.53], [1.8699, 21.53], [1.8819, 21.53], [1.8938, 21.53], [1.906, 21.53], [1.9217, 21.53], [1.94, 21.53], [1.952, 21.53], [1.964, 21.53], [1.9768, 21.53], [1.9881, 21.53], [2.0038, 21.53], [2.0219, 21.53], [2.0382, 21.53], [2.0557, 21.53], [2.0754, 21.53], [2.0915, 21.53], [2.1021, 21.53], [2.1141, 21.53], [2.1258, 21.53], [2.1378, 21.53], [2.1506, 21.53], [2.1625, 21.53], [2.1751, 21.53], [2.1864, 21.53], [2.2007, 21.53], [2.2114, 21.53], [2.2226, 21.53], [2.2392, 21.53], [2.2562, 21.53], [2.275, 21.53], [2.2913, 21.53], [2.307, 21.53], [2.324, 21.53], [2.3429, 21.53], [2.3592, 21.53], [2.3749, 21.53], [2.3921, 21.53], [2.411, 21.53], [2.427, 21.53], [2.443, 21.53], [2.4594, 21.53], [2.4749, 21.53], [2.4909, 21.53], [2.5069, 21.53], [2.523, 21.53], [2.5395, 21.53], [2.5549, 21.53], [2.5709, 21.53]], "t_stop": 1.06}}, "start": [-0.17, 1.14, 1.14, 0.0, 0.87, -29.53]}
```


## 15:50 長押しを15°先へ1回送る形にし、daemon に stop を足した

長押しを次の形に作り直しました（commit 4e99c9d）。

- 押して0.4秒たったら、読んだ角度から15°先の目標を speed 20 で1回だけ送る
- 0.1秒おきに角度を読み、目標まで残り5°以下になったら、次の15°先を送る
- 離したら、daemon の stop（jog_stop と stop の両方）を送ってその場で止める。stop が届かなくても、アームは送ってある目標（最大15°先）で止まる
- L2+R2 の停止でも stop を送り、HOME の途中の動きも止める

daemon には動いている途中で止める命令がなかったので、Pi で動いている daemon を取ってきて、stop の命令を1つだけ書き足すスクリプト（`tools/daemon_add_stop.sh`）を作りました。書き足す前の daemon は、KIOXIA の `archive/mecharm_daemon_premerge_20261105_155954/` に写してあります。

- ねらい：送り直すたびに加速からやり直すカクつきをなくし、アーム自身の加速・減速で動かす
- 変わったこと：長押しで送る回数が、0.1秒に1回から、15°動くごとに1回になった（最初の記録で、長押しの目標を送ったのは103回、角度を読んで送らなかった回はその数倍）
- 見込める効果：長押しの動きは、jog_probe の A（1回送る形）に近いなめらかさになる。実機の長押しは、このあとの記録で、毎秒40〜60°で動き続けた

実機を動かすコードなので、別の Claude にコードを読んでもらいました。必須の指摘は1件で、HOME の途中で L2+R2 を押しても、着くまで stop が出ない作りになっていました。届いたかを確かめるループの頭で停止を見て、すぐ抜けるように直しました。推奨のうち4つ（通信が詰まって止まったときも stop を送る・長押しの途中で終わったら stop を1回送る・長押しの1回目が無視されたら送り直す・daemon を書き換えるスクリプトに失敗したときの戻し方を足す）も入れました。

#### 別の Claude のレビュー（長押しの作り直しと daemon に stop を足すスクリプト）

```markdown
## 結論

必須は 1 件です。L2+R2 では、HOME の途中の動きを止められません。それ以外の流れは筋が通っています。長押しを離したとき・ほかのボタン・進まない・端・停止のどの終わり方でも、halt は送った動きの後に送られます。長押しの目標を送っている最中に離した場合も、`released_while_sending` で後から止めています。gate・busy・halt_pending まわりに競合は見つかりませんでした。

（行番号は review_gamepad_teleop.py のものです）

## 必須

**1. L2+R2 を押しても HOME（と 1 刻み）が止まらない。stop が届くのは着いた後になる**
- 場所: `DaemonArm.send_and_check` の届いたかを確かめるループ（470〜503 行）と `_dispatch_halt`（752 行）
- 何が起きるか: halt は「走っている仕事が終わってから」送る作りです。ところが、届いたかを確かめるループは `quitting` しか見ていません。gate の取り消しを見るのは送り直しのときだけです。
- 例: HOME を送ってアームが動いている途中で L2+R2 を押す。
  - `enter_stop` が gate を取り消し、halt を「送る予定」にする。
  - 仕事は HOME に着くか待ちの上限（8 秒以上）まで、0.3 秒おきに角度を読み続ける。
  - stop が送られるのは HOME に着いた後です。
- 「L2+R2 で HOME の途中の動きも止める」という今回の目的が実機では果たせません。
- テスト `test_stop_during_home_sends_halt` は、FakeArm がすぐ着いた後に L2+R2 を押しているので、この場合を通っていません。
- 直し方: ループの頭で `if gate.cancel.is_set(): return dict(base, reached=None, halted_during_check=True, ...)` として抜ける。こうすれば halt が次の読み取り（最大でおよそ 0.3〜3.7 秒）の後にすぐ出ます。テストには「HOME の確かめの途中で L2+R2 → 仕事が早く戻る → halt」を足します。

## 推奨

**1. daemon の stop が失敗しても「止めた」扱いになる**
- 場所: daemon_add_stop.sh で足す stop の処理と、teleop の 519 行
- 何が起きるか: daemon の stop は、`jog_stop` と `stop` の両方が例外を出しても `{"ok": True}` を返します。teleop は ok だけを見るので、今の角度へ送る代わりの止め方に移りません。
- 特に危ないのは、Pi の daemon でアームの変数が `_mc` という名前でない場合です。どちらの呼び出しも NameError になります。それでも構文の確かめ（`compile`）は通り、最後の確かめでも `ok: True` が表示されます。
- 直し方: daemon 側で「2 つとも例外なら `ok: False`」にする。またはスクリプトで、足す前に `_mc` と `log` が daemon の中にあるかを grep で確かめる。

**2. 送信が詰まって停止になったとき（arm_error）に stop を送らない**
- 場所: 797 行の `kind != "arm_error"`
- 何が起きるか: 長押しの 1 回目の 15° 先を送る通信がタイムアウトすると、届いたかどうか分かりません。指令が届いていればアームは動いています。しかし `hold_last_sent_id` がまだ付いていないので、`_end_hold` からも halt は出ません。結果、最大 15° 先まで動きます。
- halt が失敗しても停止にはしない作りなので、arm_error を外す理由（止める → 失敗 → 止めるの繰り返しを防ぐ）はもうありません。1 回だけ stop を試す形にできます。

**3. 終わるとき（ウィンドウを閉じる・Ctrl+C）に stop を送らない**
- 場所: 1168 行 `shutdown`
- 何が起きるか: 長押しのまま Ctrl+C を押すと、予定していた halt は捨てられます。アームは 15° 先（約 0.4 秒分）まで、HOME の途中なら HOME まで動き続けます。
- 「アームを動かさない」という終わり方の決まりと stop は矛盾しません。直し方: 仕事が戻るのを待った後、`hold_last_sent_id` か `halt_pending` が残っていれば `arm.halt()` を 1 回呼ぶ。

**4. 長押しの 1 回目が無視されると、1 秒後に「進まない」で止まる**
- 場所: 987〜991 行の lead_ok と、`_hold_progress` の進まない判定
- 何が起きるか: 以前の作りは 0.1 秒ごとに送り直していたので、無視された指令も次の送信で取り戻せました。今の作りは、15° 先の目標を一度送ると残りが 5° を切るまで送り直しません。daemon がこの 1 回を無視すると、1 秒後に「どこかに当たっていれば」と表示して止まります。
- 直し方: 送ってから一度も動いていないとき（IGNORED_MOVE_DEG 未満）に限って、1 回だけ送り直す。

**5. 長押しを離した直後の押し直しが受け付けられない**
- 何が起きるか: 離すと halt の仕事が走ります（通信と 0.3 秒の待ち、全体で 0.4 秒ほど）。その間に逆向きを押すと「前の操作が終わっていません」になり、押し直しが必要です。危険ではありませんが、操作感が悪くなります。
- 直し方: 下の 7 で daemon が待たないと分かれば、`HALT_SETTLE_SEC` を短くする。または halt の後の角度の読み取りを記録だけにする。

**6. 端の手前で止まることがある**
- 場所: 993〜1003 行
- 何が起きるか: 端の目標まで残り 3° 以下になると at_limit で長押しを終え、halt を送ります。そのため、端の 1〜3° 手前で止まることがあります。安全側の動きなので、直さずに記事やログに書いておくだけで十分です。

**7. 実機で確かめること: 離してから stop が届くまでの遅れ**
- 何が起きるか: 走っている仕事が終わるまで halt は出ません。長押しの送信の返事が遅い場合（`rpc.SEND_WAIT` の設定次第で最長 3.7 秒、LOG352）、遅れはその分伸びます。15° はおよそ 0.4 秒で動き切る量なので、stop が着く前に目標に着いてしまうおそれがあります。
- 確かめ方: log.jsonl の `t_halt` と、離した時刻・前の送信の `t_send` の差を一度見る。

**8. daemon_add_stop.sh で失敗を見逃す・戻し方がない箇所がある**
- `cp "$WORK/before.py" "$BK/..."` の結果を見ていません。写しを残せなくても、そのまま Pi のファイルを上書きします。`|| exit 1` を付けます。
- Pi のファイルを `scp` で直接上書きしています。途中で切れると、壊れた daemon が残ります（次に起動したとき立ち上がらない）。一時名で送ってから `mv` で入れ替えるべきです。
- `systemctl restart` の結果と、port が開いたかの待ちは、どちらも失敗しても先へ進みます。最後の確かめが例外で落ちても `記録:` と表示して終わります。失敗したときは、`$BK/mecharm_daemon.py` を戻すコマンドを表示して `exit 1` にします。
- `$ROOT/mecharm_daemon.py` を確かめずに上書きしています。Mac の手元版に Pi と違う変更があれば消えます。上書きする前に `git diff --quiet` で確かめます。
- daemon を起動し直すと MyCobot の初期化が走ります。teleop を止め、アームを安全な姿勢にしてから実行する、と注意書きに足すのがよいです。
```

#### daemon に stop を足したときの端末の出力（15:59）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py tools/daemon_add_stop.sh
git commit -m "gamepad_teleop: 長押しを15°先へ1回送る形にし、離したら daemon の stop で止める"
tools/daemon_add_stop.sh
[main 4e99c9d] gamepad_teleop: 長押しを15°先へ1回送る形にし、離したら daemon の stop で止める
 3 files changed, 483 insertions(+), 44 deletions(-)
 create mode 100755 tools/daemon_add_stop.sh
今の daemon の写し: /Volumes/KIOXIA/r2r2r-data/archive/mecharm_daemon_premerge_20261105_155954/mecharm_daemon.py
stop を書き足しました
--- 差分
236a237,250
> 
>     # 2026-11-05: 動いている途中で止める (ゲームパッドの長押しを離したとき・L2+R2).
>     # jog_probe (diag/jog_probe_20261105_*) で jog_stop と stop はどちらも効かない回があったので両方呼ぶ.
>     elif cmd == "stop":
>         res = {}
>         for name in ("jog_stop", "stop"):
>             try:
>                 res[name] = getattr(_mc, name)()
>             except Exception as e:
>                 res[name] = f"{type(e).__name__}: {e}"
>         log(f"stop: {res}")
>         if all(isinstance(v, str) for v in res.values()):
>             return {"ok": False, "error": f"stop failed: {res}"}
>         return {"ok": True, "result": res}
ping → {'ok': True, 'daemon': 'mecharm_daemon', 'fresh_mode': 0}
stop → {'ok': True, 'result': {'jog_stop': None, 'stop': None}}
できました。記録: /Volumes/KIOXIA/r2r2r-data/archive/mecharm_daemon_premerge_20261105_155954
```


## 16:00 ゲームパッドで使うと、止めるたびにほかの関節が1〜1.5°ずつずれて積み上がった

作り直したゲームパッドを実機で使いました。長押しは動きましたが、困りごとが2つ出ました。

1つ目は、R1 で切り替える1°と2°の違いが出ないことです。記録を数えると、1回押しを30回送って、動かした関節が0.3°以上動いたのは4回だけでした。それでも画面には「届いた」と出ていました。届いたかの判定を3°以内にしていたので、1°・2°の押しは、まったく動かなくても「届いた」になっていました。

2つ目は、動かしていない関節が動いてしまうことです。長押しを止めるたびに、動かしていない j1・j2・j4 が1〜1.5°ずつずれ、その止まった角度を次の出発点にしていたので、ずれが積み上がっていました。この記録の間に、j1 は4.83°から37.00°まで上がっています。

【動画】LOG446_02_gamepad_drift.mp4 作り直したゲームパッドで mechArm 270 を動かしたところ。長押しは動くが、止めるたびに肩とひじが少しずつ下がっていく

#### teleop_20261105_160038 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_160038  行 376
-- 1 回押し: 送った量と, 動かした関節が動いた量
   0.00s j0 -1° → 動いた -1.32° ほかの関節の最大の変化 0.8° 届いた 待ち 0.02秒 送り直し 0回
   5.11s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.01秒 送り直し 0回
   6.72s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  20.20s j1 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  22.69s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.06秒 送り直し 0回
  27.21s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  32.52s j0 +2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  35.91s j1 -2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  37.28s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  40.85s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  50.08s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  54.32s j2 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.06秒 送り直し 0回
  60.64s j3 -1° → 動いた -0.26° ほかの関節の最大の変化 1.05° 届いた 待ち 0.02秒 送り直し 0回
  62.93s j3 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.07秒 送り直し 0回
  65.50s j3 +1° → 動いた 0.27° ほかの関節の最大の変化 1.14° 届いた 待ち 0.34秒 送り直し 0回
  67.50s j3 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.04秒 送り直し 0回
  68.47s j3 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  70.32s j3 -1° → 動いた -0.44° ほかの関節の最大の変化 0.79° 届いた 待ち 0.02秒 送り直し 0回
  71.03s j3 -1° → 動いた -0.87° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  74.67s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  77.85s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.88° 届いた 待ち 0.02秒 送り直し 0回
  83.18s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  89.23s j5 -1° → 動いた -0.26° ほかの関節の最大の変化 0.97° 届いた 待ち 0.03秒 送り直し 0回
  93.43s j5 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  99.30s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
 103.73s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.06秒 送り直し 0回
 105.57s j0 +1° → 動いた 1.49° ほかの関節の最大の変化 1.23° 届いた 待ち 0.02秒 送り直し 0回
 107.88s j0 +1° → 動いた -0.09° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
 111.69s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.88° 届いた 待ち 0.03秒 送り直し 0回
 114.83s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.08° 届いた 待ち 0.03秒 送り直し 0回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   1.34s release jNone 差 [-20.3, 0.0, 0.0, 0.0, 0.0, 0.0] 送り直し None
   5.85s release jNone 差 [9.05, 0.0, 0.0, 0.0, 0.0, 0.0] 送り直し None
   7.68s release jNone 差 [15.12, 1.76, 1.67, -0.09, 1.41, 0.0] 送り直し None
  21.49s release jNone 差 [0.0, -13.08, 1.67, 0.0, 1.49, 0.0] 送り直し None
  26.63s release jNone 差 [-27.68, 0.0, 0.0, 0.0, 0.0, 0.0] 送り直し None
  31.13s release jNone 差 [5.0, 0.79, 0.88, 0.0, 1.41, 0.0] 送り直し None
  34.62s hold_stall jNone 差 [0.0, 1.14, 0.88, 0.0, 1.58, 0.0] 送り直し None
  40.14s release jNone 差 [0.0, 0.79, 0.88, 0.0, 1.41, 0.0] 送り直し None
  44.27s hold_stall jNone 差 [0.0, 1.14, 0.97, 0.0, 1.49, 0.0] 送り直し None
  53.78s release jNone 差 [0.0, 0.71, -22.76, 0.0, 1.23, 0.0] 送り直し None
  57.24s release jNone 差 [0.0, 0.97, 24.34, 0.0, 1.4, 0.0] 送り直し None
  62.37s release jNone 差 [-0.08, 0.88, 0.79, -23.64, 1.15, 0.0] 送り直し None
  65.04s release jNone 差 [0.0, 1.31, 0.7, 6.84, 1.41, 0.0] 送り直し None
  66.66s release jNone 差 [0.0, 0.88, 0.7, 4.57, 1.06, 0.0] 送り直し None
  68.02s released_while_sending jNone 差 [0.0, 0.79, 0.71, -1.41, 0.97, 0.0] 送り直し None
  69.57s release jNone 差 [0.0, 1.32, 0.88, -11.77, 1.06, 0.0] 送り直し None
  71.59s released_while_sending jNone 差 [0.0, 0.88, 0.0, -0.71, 0.97, 0.0] 送り直し None
  77.09s hold_stall jNone 差 [0.0, 1.23, 0.0, 0.0, 1.5, 0.0] 送り直し None
  82.25s hold_not_sent jNone 差 [0.0, 1.32, 0.0, 0.17, 1.24, 0.0] 送り直し None
  85.05s release jNone 差 [0.0, 1.05, 0.0, -0.09, 14.15, 0.0] 送り直し None
  93.04s release jNone 差 [0.0, 1.4, 0.0, 0.0, 1.94, -7.29] 送り直し None
  97.18s release jNone 差 [0.0, 1.49, 0.0, 0.0, 1.94, 0.0] 送り直し None
 102.77s release jNone 差 [0.09, 1.41, 0.0, 0.0, 1.76, 0.0] 送り直し None
 105.01s release jNone 差 [14.77, 1.06, 0.0, 0.18, 1.58, 0.0] 送り直し None
 106.98s release jNone 差 [25.05, 0.96, 0.0, 0.7, 1.5, 0.0] 送り直し None
 109.74s release jNone 差 [2.81, 1.14, 0.0, -0.8, 1.5, 0.0] 送り直し None
 113.62s release jNone 差 [0.0, 0.0, -25.83, 0.0, 0.0, 0.0] 送り直し None
 116.61s release jNone 差 [-4.65, 1.32, 0.97, 0.79, 1.67, 0.0] 送り直し None
 119.80s L2+R2 jNone 差 [-0.09, 1.75, 1.05, 0.0, 1.85, 0.0] 送り直し None
-- 受付なし 4 回. そのとき動いていた仕事: {'move(長押し)': 3, 'halt': 1}
```

#### ゲームパッドの端末の出力（16:00 teleop_20261105_160038）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % git add tools/pi/mecharm_daemon.py
git commit -m "daemon に stop を足した版を tools/pi に置く"
python3 tools/gamepad_teleop.py --execute
[main e0bf052] daemon に stop を足した版を tools/pi に置く
 1 file changed, 339 insertions(+)
 create mode 100644 tools/pi/mecharm_daemon.py
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_160038
[実機] daemon に送ります。起動したときの姿勢: -0.61 +4.83 +5.00 -0.08 +0.96 -29.61
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] j0 -1.0° → -1.61 +4.83 +5.00 -0.08 +0.96 -29.61  届いた（ずれ 0.8°）  届いた角度 -1.93 +5.53 +5.80 -0.08 +0.17 -29.61
[長押し] j0 を -1.58° → -6.85° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +1.0° → -26.15 +5.53 +5.80 -0.08 +0.17 -29.61  届いた（ずれ 1.18°）  届いた角度 -27.33 +5.53 +5.80 -0.08 +0.17 -29.61
[長押し] j0 を -26.45° → -25.13° まで（目標を 1 回送信。止めます）
[送信] j0 +1.0° → -15.08 +6.32 +6.50 -0.08 +0.17 -29.61  届いた（ずれ 1.09°）  届いた角度 -16.17 +6.32 +6.50 -0.08 +0.17 -29.61
[長押し] j0 を -16.17° → -16.17° まで（目標を 1 回送信。止めます）
[送信] j1 -1.0° → -1.05 +7.08 +8.17 -0.17 +1.58 -29.61  届いた（ずれ 1.0°）  届いた角度 -1.49 +8.08 +8.17 -0.17 +0.79 -29.61
[長押し] j1 を +8.08° → +8.08° まで（目標を 1 回送信。止めます）
[送信] j0 -1.0° → -2.49 -5.00 +9.84 -0.17 +2.28 -29.61  届いた（ずれ 1.0°）  届いた角度 -1.49 -5.00 +9.84 -0.17 +2.28 -29.61
[長押し] j0 を -2.46° → -64.07° まで（目標を 6 回送信。止めます）
[送信] j0 +1.0° → -90.75 -4.13 +10.63 -0.17 +3.07 -29.61  届いた（ずれ 1.0°）  届いた角度 -91.75 -4.13 +10.63 -0.17 +3.07 -29.61
[長押し] j0 を -90.52° → -0.87° まで（目標を 7 回送信。止めます）
[送信] j0 +2.0° → +6.13 -2.63 +12.21 -0.26 +4.48 -29.61  届いた（ずれ 2.09°）  届いた角度 +4.04 -2.63 +12.21 -0.26 +4.48 -29.61
[長押し] j0 を +5.97° → +20.83° まで（目標を 2 回送信。止めます）
[長押し] j0 が 1 秒進まないので止めました（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）
[止める] stop（hold_stall）  止まった角度 +20.83 -0.70 +13.79 -0.26 +6.85 -29.61
[送信] j1 -2.0° → +20.83 -2.70 +13.79 -0.26 +6.85 -29.61  届いた（ずれ 2.0°）  届いた角度 +20.83 -0.70 +13.79 -0.26 +6.85 -29.61
[送信] j0 +1.0° → +21.83 -2.70 +13.79 -0.26 +6.85 -29.61  届いた（ずれ 1.3°）  届いた角度 +20.83 -1.40 +14.50 -0.26 +7.55 -29.61
[長押し] j0 を +21.79° → +65.21° まで（目標を 4 回送信。止めます）
[送信] j0 -1.0° → +64.21 -0.61 +15.38 -0.26 +8.96 -29.61  届いた（ずれ 0.91°）  届いた角度 +65.12 -0.61 +15.38 -0.26 +8.96 -29.61
[長押し] j0 を +63.89° → +13.35° まで（目標を 5 回送信。止めます）
[長押し] j0 が 1 秒進まないので止めました（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）
[止める] stop（hold_stall）  止まった角度 +13.35 +1.31 +17.05 -0.43 +11.33 -29.61
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → +13.35 +1.31 +16.05 -0.43 +11.33 -29.61  届いた（ずれ 1.0°）  届いた角度 +13.35 +1.31 +17.05 -0.43 +11.33 -29.61
[長押し] j2 を +17.05° → -35.68° まで（目標を 5 回送信。止めます）
[送信] j2 +1.0° → +13.35 +2.81 -57.44 -0.43 +12.56 -29.61  届いた（ずれ 1.0°）  届いた角度 +13.35 +2.81 -58.44 -0.43 +12.56 -29.61
[長押し] j2 を -56.95° → -14.85° まで（目標を 4 回送信。止めます）
[関節] 上下で動かす関節を j3 にしました
[送信] j3 -1.0° → +13.35 +4.57 +9.49 -1.35 +15.02 -29.61  届いた（ずれ 1.05°）  届いた角度 +13.35 +5.44 +10.54 -0.61 +14.67 -29.61
[長押し] j3 を -0.61° → -11.16° まで（目標を 2 回送信。止めます）
[送信] j3 +1.0° → +13.27 +6.32 +11.33 -33.80 +15.82 -29.61  届いた（ずれ 0.74°）  届いた角度 +13.27 +6.32 +11.33 -34.54 +15.82 -29.61
[長押し] j3 を -33.92° → -4.21° まで（目標を 3 回送信。止めます）
[送信] j3 +1.0° → +13.18 +8.34 +12.56 +3.63 +18.10 -29.61  届いた（ずれ 1.14°）  届いた角度 +13.18 +9.05 +13.27 +2.81 +19.24 -29.61
[長押し] j3 を +2.81° → +16.78° まで（目標を 2 回送信。止めます）
[送信] j3 -1.0° → +13.18 +9.93 +13.97 +20.35 +20.30 -29.53  届いた（ずれ 0.91°）  届いた角度 +13.18 +9.93 +13.97 +21.26 +20.30 -29.53
[止める] stop（released_while_sending）  止まった角度 +13.18 +11.51 +15.29 +19.24 +21.97 -29.53
[送信] j3 -1.0° → +13.18 +11.51 +15.29 +18.24 +21.97 -29.53  届いた（ずれ 1.0°）  届いた角度 +13.18 +11.51 +15.29 +19.24 +21.97 -29.53
[長押し] j3 を +19.24° → +16.34° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j3 -1.0° → +13.18 +13.62 +16.52 +3.57 +23.73 -29.53  届いた（ずれ 0.79°）  届いた角度 +13.18 +14.41 +16.52 +3.95 +24.43 -29.53
[送信] j3 -1.0° → +13.18 +13.62 +16.52 +2.57 +23.73 -29.53  届いた（ずれ 0.79°）  届いた角度 +13.18 +14.41 +16.52 +2.90 +24.43 -29.53
[止める] stop（released_while_sending）  止まった角度 +13.18 +15.29 +16.52 +2.19 +25.40 -29.53
[関節] 上下で動かす関節を j4 にしました
[送信] j4 -1.0° → +13.18 +15.29 +16.52 +2.19 +24.40 -29.53  届いた（ずれ 1.0°）  届いた角度 +13.18 +15.29 +16.52 +2.19 +25.40 -29.53
[長押し] j4 を +25.40° → +0.87° まで（目標を 3 回送信。止めます）
[長押し] j4 が 1 秒進まないので止めました（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）
[止める] stop（hold_stall）  止まった角度 +13.18 +17.31 +16.52 +2.10 +2.37 -29.53
[送信] j4 -1.0° → +13.18 +17.31 +16.52 +2.10 +1.37 -29.53  届いた（ずれ 1.0°）  届いた角度 +13.18 +18.19 +16.52 +2.10 +2.37 -29.53
[範囲] j4 を -95.85° → -90.00° に切った（J4_SAFE -90.00°）
[範囲] j4 -103.33° は送らない：範囲の端にいて、押した向きに進めない（範囲 [-90.00, -90.00]・J4_SAFE）
[送らない] j4 -15.0°（長押し 16）
[長押し] j4 を +2.37° → -80.85° まで（目標を 8 回送信。止めます）
[止める] stop（hold_not_sent）  止まった角度 +13.18 +19.51 +16.52 +2.54 -87.09 -29.53
[送信] j4 +1.0° → +13.18 +19.51 +16.52 +2.54 -86.09 -29.53  届いた（ずれ 1.0°）  届いた角度 +13.18 +19.51 +16.52 +2.63 -87.09 -29.53
[長押し] j4 を -85.25° → -58.79° まで（目標を 3 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j5 にしました
[送信] j5 -1.0° → +13.18 +21.44 +16.52 +2.63 -44.64 -30.53  届いた（ずれ 0.97°）  届いた角度 +13.18 +22.41 +16.52 +2.63 -45.35 -29.79
[長押し] j5 を -29.79° → -112.32° まで（目標を 7 回送信。止めます）
[送信] j5 +1.0° → +13.18 +23.81 +16.52 +2.63 -43.41 -118.61  届いた（ずれ 1.0°）  届いた角度 +13.18 +23.81 +16.52 +2.63 -43.41 -119.61
[長押し] j5 を -119.17° → -30.58° まで（目標を 8 回送信。止めます）
[関節] 上下で動かす関節を j1 にしました
[送信] j0 -1.0° → +12.18 +26.27 +16.52 +2.63 -40.07 -30.58  届いた（ずれ 1.0°）  届いた角度 +13.18 +26.27 +16.52 +2.63 -40.07 -30.58
[長押し] j0 を +11.95° → -49.39° まで（目標を 6 回送信。止めます）
[送信] j0 +1.0° → -48.30 +28.65 +16.52 +2.90 -37.96 -30.76  届いた（ずれ 1.0°）  届いた角度 -49.30 +28.65 +16.52 +2.90 -37.96 -30.76
[長押し] j0 を -47.90° → -47.90° まで（目標を 1 回送信。止めます）
[送信] j0 +1.0° → -32.13 +30.67 +16.52 +2.90 -35.33 -30.76  届いた（ずれ 1.23°）  届いた角度 -31.64 +31.64 +16.52 +2.72 -34.10 -30.76
[長押し] j0 を -31.81° → -31.81° まで（目標を 1 回送信。止めます）
[送信] j0 +1.0° → -5.76 +32.60 +16.52 +3.51 -32.60 -30.76  届いた（ずれ 1.27°）  届いた角度 -7.03 +32.60 +16.52 +3.51 -32.60 -30.76
[長押し] j0 を -6.06° → +29.97° まで（目標を 4 回送信。止めます）
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → +32.78 +34.71 +15.52 +3.33 -30.05 -30.76  届いた（ずれ 1.0°）  届いた角度 +32.78 +35.59 +16.52 +3.60 -30.05 -30.58
[長押し] j2 を +16.52° → +2.90° まで（目標を 2 回送信。止めます）
[送信] j0 -1.0° → +31.78 +35.77 -22.93 +3.51 -29.53 -30.67  届いた（ずれ 1.0°）  届いた角度 +32.78 +35.85 -22.93 +3.51 -29.53 -30.67
[長押し] j0 を +31.81° → +6.67° まで（目標を 3 回送信。止めます）
[停止] L2+R2。新しい指令は送りません（OPTIONS で再開）
[止める] stop（L2+R2）  止まった角度 +1.93 +40.07 -19.95 +3.95 -26.01 -30.76
[再開] 操作を受け付けます
^C
[終了] Ctrl+C
[終了] アームは動かしていません。記録: /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_160038
```


## 16:08 止めたあとにほかの関節を指令へ戻す形にしたら、もっと動かなくなった

ずれを打ち消すつもりで、止めたあと、動かしていた関節は止まった角度、ほかの関節は指令の角度で送り直す形にしました（commit f0d7e73）。あわせて、1回押しの「届いた」を、動かした関節が0.5°以内に来たときだけにしました。

ところが実機では、全体がぎこちなくなり、1回押しも長押しも、動かないことが増えました。このとき私は、送り直しても動かないなら mechArm のサーボは1〜2°の小さな動きにそもそも反応しないのかもしれない、と書きました。これには次の指摘がありました。

> 前に細かい動作で動いていたじゃん？

記録を見直すと、その通りでした。前の回でも1°押しで関節は動いていて、この記録でも、止めた直後の1°押しと2°押しは動いていました。動かなかった場面に共通していたのは、腕を伸ばした姿勢で j1 が自分の重さで指令より3〜6°下がっていたことです（指令40.07°に対して、読むと43〜46°）。戻す命令でその j1 を40.07°へ送っても届かず、届かない指令を抱えたままだと、次に送った指令が無視されやすくなっていました。もう1つ、長押しで次の15°を送ったときに、それが無視されて前の目標で止まる場面もありました（j0 が −27.4°、−64.2°、−36.1° で止まった）。

【動画】LOG446_03_gamepad_stuck.mp4 止めたあとに指令へ戻す形にしたときの mechArm 270。押しても動かない時間が長く、動きがぎこちない

#### teleop_20261105_161347 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_161347  行 118
-- 1 回押し: 送った量と, 動かした関節が動いた量
   0.00s j0 -1° → 動いた -1.32° ほかの関節の最大の変化 1.15° 届いた 待ち 0.4秒 送り直し 0回
   4.81s j0 -1° → 動いた -1.32° ほかの関節の最大の変化 0.18° 届いた 待ち 0.02秒 送り直し 0回
   5.90s j0 -2° → 動いた -1.67° ほかの関節の最大の変化 0.18° 届いた 待ち 0.03秒 送り直し 0回
  10.02s j0 +2° → 動いた 1.23° ほかの関節の最大の変化 0.09° 届いた 待ち 0.35秒 送り直し 0回
  14.59s j0 +2° → 動いた 0.0° ほかの関節の最大の変化 1.14° 動かなかった 待ち 2.8秒 送り直し 3回
  18.75s j0 +1° → 動いた 2.72° ほかの関節の最大の変化 0.35° 届いた 待ち 0.33秒 送り直し 0回
  21.59s j0 +1° → 動いた 1.41° ほかの関節の最大の変化 1.4° 届いた 待ち 0.7秒 送り直し 0回
  27.74s j2 -1° → 動いた -1.23° ほかの関節の最大の変化 0.7° 届かなかった 待ち 8.11秒 送り直し 0回
  37.80s j2 -2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 2.79秒 送り直し 3回
  42.25s j2 -2° → 動いた 0.0° ほかの関節の最大の変化 0.08° 動かなかった 待ち 2.75秒 送り直し 3回
  45.38s j2 -2° → 動いた 0.0° ほかの関節の最大の変化 0.26° 動かなかった 待ち 2.78秒 送り直し 3回
  49.25s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.27° 動かなかった 待ち 2.84秒 送り直し 3回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   2.73s hold_stall j0 差 [0.0, 1.84, 1.14, -0.18, 1.85, 0.0] 送り直し [-27.42, 40.07, -19.95, 3.95, -27.86, -30.76]
   8.33s release j0 差 [-1.06, 1.5, 0.96, -0.88, 1.67, 0.0] 送り直し [-80.77, 40.07, -19.95, 3.95, -27.86, -30.76]
  12.29s release j0 差 [0.08, 1.85, 1.05, 0.0, 1.58, 0.0] 送り直し [-64.16, 40.07, -19.95, 3.95, -27.86, -30.76]
  21.21s hold_stall j0 差 [-0.09, 1.84, 1.05, 0.26, 2.02, 0.0] 送り直し [-36.21, 40.07, -19.95, 3.95, -27.86, -30.76]
  22.89s release j0 差 [12.83, 1.5, 1.05, 0.18, 1.76, 0.08] 送り直し [-21.97, 44.03, -19.95, 3.95, -27.86, -30.76]
  41.24s release j2 差 [0.0, 0.0, -13.71, 0.0, 0.0, 0.0] 送り直し [-21.97, 44.03, -33.13, 3.95, -27.86, -30.76]
-- 受付なし 10 回. そのとき動いていた仕事: {'move(長押し)': 2, 'halt': 5, 'move': 3}
```

#### ゲームパッドの端末の出力（16:13 teleop_20261105_161347）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py
git commit -m "gamepad_teleop: 止めたあと他の関節を指令へ戻す・出発点を関節ごと に・1刻みの届いた判定を0.5°に"
python3 tools/gamepad_teleop.py --execute
[main f0d7e73] gamepad_teleop: 止めたあと他の関節を指令へ戻す・出発点を関節ごとに・1刻みの届いた判定を0.5°に
 2 files changed, 137 insertions(+), 30 deletions(-)
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_161347
[実機] daemon に送ります。起動したときの姿勢: +1.93 +40.07 -19.95 +3.95 -27.86 -30.76
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] j0 -1.0° → +0.93 +40.07 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 1.15°）  届いた角度 +0.61 +41.22 -18.98 +3.77 -27.50 -30.76
[長押し] j0 を +0.70° → -27.42° まで（目標を 3 回送信。止めます）
[長押し] j0 が 1 秒進まないので止めました（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）
[止める] stop（hold_stall）  止まった角度 -27.42 +43.06 -17.84 +3.95 -25.57 -30.76
[送信] j0 -1.0° → -28.42 +40.07 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 2.9°）  届いた角度 -28.74 +42.97 -18.01 +4.13 -25.66 -30.76
[送信] j0 -2.0° → -30.42 +40.07 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 2.9°）  届いた角度 -30.14 +42.97 -18.01 +3.95 -26.36 -30.76
[長押し] j0 を -30.05° → -79.71° まで（目標を 5 回送信。止めます）
[送信] j0 +2.0° → -78.77 +40.07 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 2.46°）  届いた角度 -79.18 +42.18 -18.54 +3.86 -25.40 -30.93
[長押し] j0 を -79.10° → -64.24° まで（目標を 2 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +2.0° → -62.16 +40.07 -19.95 +3.95 -27.86 -30.76  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.29°）  届いた角度 -64.24 +42.36 -18.36 +3.86 -26.54 -30.84
[送信] j0 +1.0° → -61.16 +40.07 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 2.29°）  届いた角度 -61.52 +42.36 -18.36 +3.77 -27.42 -30.93
[長押し] j0 を -61.52° → -36.12° まで（目標を 3 回送信。止めます）
[長押し] j0 が 1 秒進まないので止めました（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）
[止める] stop（hold_stall）  止まった角度 -36.21 +44.20 -17.31 +3.86 -25.66 -30.84
[送信] j0 +1.0° → -35.21 +44.03 -19.95 +3.95 -27.86 -30.76  届いた（ずれ 2.11°）  届いた角度 -34.80 +45.43 -18.54 +3.95 -25.75 -30.84
[長押し] j0 を -34.80° → -34.80° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j2 にしました
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -21.97 +44.03 -20.95 +3.95 -27.86 -30.76  届かなかった（ずれ 2.72°）  届いた角度 -22.06 +46.75 -19.42 +3.95 -27.24 -30.76
[送信] j2 -2.0° → -21.97 +44.03 -21.42 +3.95 -27.86 -30.76  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.72°）  届いた角度 -22.06 +46.75 -19.42 +3.95 -28.82 -30.76
[長押し] j2 を -19.42° → -19.42° まで（目標を 1 回送信。止めます）
[送信] j2 -2.0° → -21.97 +44.03 -35.13 +3.95 -27.86 -30.76  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.72°）  届いた角度 -22.06 +46.75 -33.13 +3.95 -28.74 -30.76
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -2.0° → -21.97 +44.03 -37.13 +3.95 -27.86 -30.76  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 4.0°）  届いた角度 -22.06 +46.75 -33.13 +3.95 -28.30 -30.76
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -21.97 +44.03 -34.13 +3.95 -27.86 -30.76  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.72°）  届いた角度 -22.06 +46.75 -33.13 +3.95 -28.03 -30.76
[送信] HOME → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 1.58°）  届いた角度 +0.35 +1.58 +0.17 +0.79 -0.52 -30.67
^C
[終了] Ctrl+C
[終了] アームは動かしていません。記録: /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_161347
```

そこで、止めたあとは何も送らず、動かしていない関節の指令は変えない（重さで下がった分を拾わない）形にしました。1回押しの「届いた」は動かした関節だけで判定し、長押しが目標の手前で止まったら0.3秒で同じ目標を送り直すようにしました（commit 31a336c）。それでも、1回押しはあまり動きませんでした。

#### ゲームパッドの端末の出力（16:22 teleop_20261105_162224）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py
git commit -m "gamepad_teleop: 止めたあと送り直さない・1刻みは動かした関節だけで判定・長押しが止まったら送り直す"
python3 tools/gamepad_teleop.py --execute
[main 31a336c] gamepad_teleop: 止めたあと送り直さない・1刻みは動かした関節だけで判定・長押しが止まったら送り直す
 2 files changed, 70 insertions(+), 23 deletions(-)
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_162224
[実機] daemon に送ります。起動したときの姿勢: -0.17 +1.58 +0.96 +0.26 -0.17 -30.23
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] j0 -1.0° → -1.17 +1.58 +0.96 +0.26 -0.17 -30.23  届いた（ずれ 0.88°）  届いた角度 -0.96 +2.46 +1.75 +0.26 -0.08 -30.23
[長押し] j0 を -0.96° → -54.14° まで（目標を 4 回送信。止めます）
[送信] j0 +1.0° → -72.38 +1.58 +0.96 +0.26 -0.17 -30.23  届いた（ずれ 0.88°）  届いた角度 -72.15 +2.46 +1.75 -0.08 -0.08 -30.14
[送信] j0 +1.0° → -71.38 +1.58 +0.96 +0.26 -0.17 -30.23  届いた（ずれ 0.88°）  届いた角度 -71.10 +2.46 +1.75 -0.08 -0.08 -30.14
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +1.0° → -70.38 +1.58 +0.96 +0.26 -0.17 -30.23  届かなかった・無視されたので 1 回送り直した（ずれ 0.88°）  届いた角度 -71.10 +2.46 +1.75 -0.08 -0.08 -30.14
[関節] 上下で動かす関節を j2 にしました
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +2.0° → -69.10 +1.58 +0.96 +0.26 -0.17 -30.23  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.0°）  届いた角度 -71.10 +2.46 +1.75 -0.08 -0.08 -30.14
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -2.0° → -69.10 +1.58 -1.04 +0.26 -0.17 -30.23  届かなかった（ずれ 1.83°）  届いた角度 -68.81 +2.46 +0.79 -0.08 -0.08 -30.14
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -69.10 +1.58 -0.21 +0.26 -0.17 -30.23  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 1.0°）  届いた角度 -68.81 +2.46 +0.79 -0.08 -0.08 -30.14
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -69.10 +1.58 -1.21 +0.26 -0.17 -30.23  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.0°）  届いた角度 -68.81 +2.46 +0.79 +0.00 -0.08 -30.14
[送信] j0 +1.0° → -68.10 +1.58 -1.21 +0.26 -0.17 -30.23  届いた（ずれ 2.0°）  届いた角度 -67.85 +2.46 +0.79 +0.00 -0.08 -30.14
[長押し] j0 を -67.93° → +40.51° まで（目標を 9 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → +59.15 +1.58 -2.21 +0.26 -0.17 -30.23  届かなかった（ずれ 1.6°）  届いた角度 +58.62 +2.98 -0.61 +0.26 +0.43 -30.14
[送信] HOME → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 2.72°）  届いた角度 +2.72 +1.66 +0.70 +0.26 -0.61 -30.14
^C
[終了] Ctrl+C
[終了] アームは動かしていません。記録: /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_162224
```


## 16:26 1°・2°の小さな動きは、動かす関節だけを送ると12回中12回動いた（jog_probe small）

当て推量で直すのをやめ、小さな動きがどの送り方なら通るかを、実機で一度だけ確かめました。腕を少し前に倒した姿勢（j1 40°。直前にゲームパッドでいた姿勢）にして、根元 j0 を±1°と±2°ずつ、3通りの送り方で6回ずつ送りました。

| 送り方 | 1° | 2° |
|---|---|---|
| S1 6関節まとめて送る。ほかの関節は今読んだ角度 | 6回中5回動いた | 6回中6回 |
| S2 6関節まとめて送る。ほかの関節は指令の角度（重さで下がった分とずれている。このときのゲームパッドの送り方） | 6回中5回 | 6回中6回 |
| S3 j0 だけを send_angle で送る | 6回中6回（毎回0.79°） | 6回中6回（毎回2.19°） |

止まった姿勢から送れば、1°・2°の動きはどの送り方でもほぼ通りました。サーボは小さな動きにちゃんと反応します。動かす関節だけを送る S3 は、動いた量も毎回そろっていました。

#### jog_probe small の端末の出力（16:26）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py tools/jog_probe.sh tools/pi/jog_probe_pi.py
git commit -m "gamepad_teleop の直しと、jog_probe に小さな動きを比べる small の 組を足す"
tools/jog_probe.sh small
[main 2726d9d] gamepad_teleop の直しと、jog_probe に小さな動きを比べる small の組を足す
 2 files changed, 80 insertions(+), 3 deletions(-)
jog_probe 20261105_162617 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_162617_small)
--- デーモンの状態 (止める前)
mode=systemd
pid=26153
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=26153
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.43, 1.66, 0.7, 0.26, -0.26, -30.14]
根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 18.5 ms / 空で返った割合 0.0

腕を少し前に倒した姿勢 [0.0, 40.0, -20.0, 0.0, -30.0, -30.0] へ動かします  (Enter で進む / q と Enter で終わる)

  着いた角度: [-0.43, 41.13, -18.19, 0.26, -28.91, -30.14]  (指令との差 j1 +1.13°)

S1 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S1 1.0°] 動いた 5/6  動いた量: 0.86 0.86 0.86 0.86 0.86 -0.0

S1 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S1 2.0°] 動いた 6/6  動いた量: 2.2 2.37 1.93 2.27 2.18 2.36

S2 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S2 1.0°] 動いた 5/6  動いた量: 1.05 0.96 0.0 1.06 0.8 0.88

S2 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S2 2.0°] 動いた 6/6  動いた量: 2.18 2.36 2.01 2.27 2.1 2.28

S3 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S3 1.0°] 動いた 6/6  動いた量: 0.79 0.79 0.79 0.79 0.79 0.79

S3 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S3 2.0°] 動いた 6/6  動いた量: 2.19 2.19 2.19 2.19 2.19 2.19

HOME へ戻します  (Enter で進む / q と Enter で終わる)

結果: /tmp/jog_probe_20261105_162617.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_162617_small/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=6649
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=6649
checker=no
デーモンは戻った (5555 LISTEN)
```

#### diag/jog_probe_20261105_162617_small/result.json

```json
{"started_at": "2022-10-13 16:18:45", "pymycobot": "2.9.6", "params": {"speed": 20, "stream_interval": 0.1, "stream_ahead": 3.0, "jog_speeds": [10, 30], "guard_deg": 25.0, "set": "small", "jog_dir": {"+1": 0, "-1": 1}}, "tests": {"read": {"median_ms": 16.0, "max_ms": 18.5, "empty_ratio": 0.0}, "small": {"S1_1": {"how": "S1", "step": 1.0, "n_moved": 5, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": -0.43, "want": 0.57, "moved_deg": 0.86, "moved": true, "moved_at_sec": 0.12, "others_gap_deg": 1.81}, {"i": 1, "sign": -1, "q0": 0.43, "want": -0.57, "moved_deg": 0.86, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 2.78}, {"i": 2, "sign": 1, "q0": -0.43, "want": 0.57, "moved_deg": 0.86, "moved": true, "moved_at_sec": 0.17, "others_gap_deg": 3.66}, {"i": 3, "sign": -1, "q0": 0.43, "want": -0.57, "moved_deg": 0.86, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 4.82}, {"i": 4, "sign": 1, "q0": -0.43, "want": 0.57, "moved_deg": 0.86, "moved": true, "moved_at_sec": 0.17, "others_gap_deg": 6.05}, {"i": 5, "sign": -1, "q0": 0.43, "want": -0.57, "moved_deg": -0.0, "moved": false, "moved_at_sec": null, "others_gap_deg": 7.28}]}, "S1_2": {"how": "S1", "step": 2.0, "n_moved": 6, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": 0.43, "want": 2.43, "moved_deg": 2.2, "moved": true, "moved_at_sec": 0.25, "others_gap_deg": 7.28}, {"i": 1, "sign": -1, "q0": 2.63, "want": 0.63, "moved_deg": 2.37, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 8.51}, {"i": 2, "sign": 1, "q0": 0.26, "want": 2.26, "moved_deg": 1.93, "moved": true, "moved_at_sec": 0.12, "others_gap_deg": 9.65}, {"i": 3, "sign": -1, "q0": 2.19, "want": 0.19, "moved_deg": 2.27, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 10.88}, {"i": 4, "sign": 1, "q0": -0.08, "want": 1.92, "moved_deg": 2.18, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 12.03}, {"i": 5, "sign": -1, "q0": 2.1, "want": 0.1, "moved_deg": 2.36, "moved": true, "moved_at_sec": 0.14, "others_gap_deg": 13.26}]}, "S2_1": {"how": "S2", "step": 1.0, "n_moved": 5, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": -0.26, "want": 0.74, "moved_deg": 1.05, "moved": true, "moved_at_sec": 0.35, "others_gap_deg": 14.4}, {"i": 1, "sign": -1, "q0": 0.79, "want": -0.21, "moved_deg": 0.96, "moved": true, "moved_at_sec": 0.17, "others_gap_deg": 2.09}, {"i": 2, "sign": 1, "q0": -0.17, "want": 0.83, "moved_deg": 0.0, "moved": false, "moved_at_sec": null, "others_gap_deg": 2.09}, {"i": 3, "sign": -1, "q0": -0.17, "want": -1.17, "moved_deg": 1.06, "moved": true, "moved_at_sec": 0.19, "others_gap_deg": 2.09}, {"i": 4, "sign": 1, "q0": -1.23, "want": -0.23, "moved_deg": 0.8, "moved": true, "moved_at_sec": 0.17, "others_gap_deg": 2.09}, {"i": 5, "sign": -1, "q0": -0.43, "want": -1.43, "moved_deg": 0.88, "moved": true, "moved_at_sec": 0.19, "others_gap_deg": 2.09}]}, "S2_2": {"how": "S2", "step": 2.0, "n_moved": 6, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": -1.31, "want": 0.69, "moved_deg": 2.18, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 2.09}, {"i": 1, "sign": -1, "q0": 0.87, "want": -1.13, "moved_deg": 2.36, "moved": true, "moved_at_sec": 0.14, "others_gap_deg": 2.09}, {"i": 2, "sign": 1, "q0": -1.49, "want": 0.51, "moved_deg": 2.01, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}, {"i": 3, "sign": -1, "q0": 0.52, "want": -1.48, "moved_deg": 2.27, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}, {"i": 4, "sign": 1, "q0": -1.75, "want": 0.25, "moved_deg": 2.1, "moved": true, "moved_at_sec": 0.13, "others_gap_deg": 2.09}, {"i": 5, "sign": -1, "q0": 0.35, "want": -1.65, "moved_deg": 2.28, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}]}, "S3_1": {"how": "S3", "step": 1.0, "n_moved": 6, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": -1.93, "want": -0.93, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}, {"i": 1, "sign": -1, "q0": -1.14, "want": -2.14, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 2.09}, {"i": 2, "sign": 1, "q0": -1.93, "want": -0.93, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.17, "others_gap_deg": 2.09}, {"i": 3, "sign": -1, "q0": -1.14, "want": -2.14, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 2.09}, {"i": 4, "sign": 1, "q0": -1.93, "want": -0.93, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.19, "others_gap_deg": 2.09}, {"i": 5, "sign": -1, "q0": -1.14, "want": -2.14, "moved_deg": 0.79, "moved": true, "moved_at_sec": 0.22, "others_gap_deg": 2.09}]}, "S3_2": {"how": "S3", "step": 2.0, "n_moved": 6, "n": 6, "trials": [{"i": 0, "sign": 1, "q0": -1.93, "want": 0.07, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.2, "others_gap_deg": 2.09}, {"i": 1, "sign": -1, "q0": 0.26, "want": -1.74, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.16, "others_gap_deg": 2.09}, {"i": 2, "sign": 1, "q0": -1.93, "want": 0.07, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}, {"i": 3, "sign": -1, "q0": 0.26, "want": -1.74, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.15, "others_gap_deg": 2.09}, {"i": 4, "sign": 1, "q0": -1.93, "want": 0.07, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.14, "others_gap_deg": 2.09}, {"i": 5, "sign": -1, "q0": 0.26, "want": -1.74, "moved_deg": 2.19, "moved": true, "moved_at_sec": 0.14, "others_gap_deg": 2.09}]}}}, "start": [-0.43, 1.66, 0.7, 0.26, -0.26, -30.14], "small_pose_measured": [-0.43, 41.13, -18.19, 0.26, -28.91, -30.14]}
```


## 16:28 十字キーは、動かす関節だけを send_angle で送る形にした

十字キーの1回押しも長押しも、動かす関節だけを send_angle で送る形にしました（commit b71ffb5）。HOME だけは今までどおり6関節まとめて送ります。

- ねらい：重さで下がった関節の指令とぶつからないようにし、ほかの関節を動かさない
- 変わったこと：十字キーで送る指令から、動かさない5つの関節の角度が消えた
- 見込める効果：ほかの関節がつられて動くこと、ずれの積み上がりが、仕組みとして起きなくなる。実際、このあとの記録では、j1 は起動時と終わりで 1.49°→1.14°、1.31°→2.54° と、ほとんど変わらなかった

ほかの関節は止まったままになりましたが、今度は受付なしが目立ちました。1本の記録で40回です。

#### teleop_20261105_163144 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_163144  行 326
-- 1 回押し: 送った量と, 動かした関節が動いた量
   2.94s j0 -1° → 動いた -0.88° ほかの関節の最大の変化 0.0° 届いた 待ち 0.34秒 送り直し 0回
   8.50s j0 +2° → 動いた 2.02° ほかの関節の最大の変化 0.8° 届いた 待ち 0.03秒 送り直し 0回
  16.76s j2 -1° → 動いた -2.37° ほかの関節の最大の変化 3.17° 届かなかった 待ち 8.16秒 送り直し 0回
  25.35s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 2.1° 動かなかった 待ち 3.16秒 送り直し 3回
  30.41s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 4.13° 動かなかった 待ち 2.77秒 送り直し 3回
  36.51s j2 +1° → 動いた 0.7° ほかの関節の最大の変化 7.11° 届いた 待ち 0.37秒 送り直し 0回
  41.90s j2 -1° → 動いた 0.61° ほかの関節の最大の変化 2.55° 届かなかった 待ち 8.14秒 送り直し 0回
  54.53s j3 -1° → 動いた -0.53° ほかの関節の最大の変化 0.0° 届いた 待ち 3.31秒 送り直し 1回
  60.27s j3 -1° → 動いた -0.97° ほかの関節の最大の変化 0.0° 届いた 待ち 0.33秒 送り直し 0回
  68.20s j3 +1° → 動いた 0.53° ほかの関節の最大の変化 1.05° 届いた 待ち 3.44秒 送り直し 2回
  72.90s j3 +1° → 動いた 1.05° ほかの関節の最大の変化 0.44° 届いた 待ち 0.35秒 送り直し 0回
  77.89s j3 +1° → 動いた 1.23° ほかの関節の最大の変化 0.0° 届いた 待ち 0.35秒 送り直し 0回
  78.90s j3 +1° → 動いた 0.53° ほかの関節の最大の変化 1.41° 届いた 待ち 2.36秒 送り直し 0回
  82.36s j4 -1° → 動いた -2.28° ほかの関節の最大の変化 0.09° 届いた 待ち 0.35秒 送り直し 0回
  86.78s j4 +1° → 動いた 1.85° ほかの関節の最大の変化 1.06° 届かなかった 待ち 8.1秒 送り直し 0回
  97.10s j5 -1° → 動いた -0.53° ほかの関節の最大の変化 0.09° 届いた 待ち 3.34秒 送り直し 1回
 105.77s j5 -2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 2.74秒 送り直し 3回
 111.65s j5 +1° → 動いた 0.52° ほかの関節の最大の変化 0.7° 届いた 待ち 1.98秒 送り直し 0回
 116.60s j0 -1° → 動いた -4.04° ほかの関節の最大の変化 0.97° 届いた 待ち 0.35秒 送り直し 0回
 121.42s j2 -1° → 動いた -1.85° ほかの関節の最大の変化 3.61° 届かなかった 待ち 8.14秒 送り直し 0回
 130.01s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 2.81秒 送り直し 3回
 133.46s j2 +1° → 動いた 0.53° ほかの関節の最大の変化 0.53° 届かなかった 待ち 8.15秒 送り直し 0回
 186.47s j4 -1° → 動いた -1.57° ほかの関節の最大の変化 0.0° 届いた 待ち 5.34秒 送り直し 2回
 193.15s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 2.78秒 送り直し 3回
 196.91s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
 202.04s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 2.79秒 送り直し 3回
 208.44s j4 +1° → 動いた 1.59° ほかの関節の最大の変化 0.09° 届いた 待ち 4.91秒 送り直し 0回
 230.75s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.09° 動かなかった 待ち 2.83秒 送り直し 3回
 237.26s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.53° 届かなかった 待ち 13.0秒 送り直し 1回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   7.50s release j0 差 [-11.52, 0.97, 0.97, 0.0, 1.5, 0.0] 送り直し None
  14.68s release j0 差 [21.27, 1.05, 0.96, 0.0, 1.59, 0.0] 送り直し None
  35.76s release j2 差 [-0.09, 0.62, -6.06, 0.0, 3.25, 0.0] 送り直し None
  40.81s release j2 差 [0.0, 0.79, 22.68, 0.0, 1.41, 0.0] 送り直し None
  65.34s release j3 差 [0.0, 0.79, 0.62, -13.54, -0.44, 0.0] 送り直し None
  77.12s release j3 差 [0.0, 0.0, 0.0, 14.94, 0.0, 0.0] 送り直し None
  78.46s release j3 差 [0.0, 0.87, 0.61, 0.17, 1.23, 0.0] 送り直し None
  85.54s release j4 差 [0.0, 1.06, 0.7, -0.53, 1.76, 0.0] 送り直し None
 110.88s release j5 差 [0.0, 0.88, 0.7, -0.43, 1.49, -26.1] 送り直し None
 115.84s release j5 差 [0.0, 0.0, 0.0, 0.09, 0.0, 7.56] 送り直し None
 118.79s release j0 差 [-14.49, 0.79, 0.71, 0.08, 1.5, 0.0] 送り直し None
 201.19s release j4 差 [0.0, -0.08, 0.0, 0.0, -6.68, 0.0] 送り直し None
-- 受付なし 40 回. そのとき動いていた仕事: {'halt': 12, 'move': 23, 'move(長押し)': 2, 'home': 3}
```

#### ゲームパッドの端末の出力（16:31 teleop_20261105_163144）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py
git commit -m "gamepad_teleop: 十字キーは動かす関節だけを send_angle で送る"
python3 tools/gamepad_teleop.py --execute
[main b71ffb5] gamepad_teleop: 十字キーは動かす関節だけを send_angle で送る
 2 files changed, 31 insertions(+), 16 deletions(-)
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_163144
[実機] daemon に送ります。起動したときの姿勢: +0.70 +1.49 +1.75 -0.08 +0.26 -30.23
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] HOME → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 1.75°）  届いた角度 -0.26 +1.49 +1.75 -0.17 +0.87 -30.23
[送信] j0 -1.0° → -1.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 1.75°）  届いた角度 -1.14 +1.49 +1.75 -0.17 +0.87 -30.23
[長押し] j0 を -1.14° → -80.06° まで（目標を 8 回送信。止めます）
[送信] j0 +2.0° → -89.58 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 2.37°）  届いた角度 -89.56 +1.66 +2.02 -0.17 +2.37 -30.23
[長押し] j0 を -89.20° → +21.44° まで（目標を 10 回送信。止めます）
[関節] 上下で動かす関節を j2 にしました
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → +42.71 +0.00 -1.00 +0.00 +0.00 -30.00  届かなかった（ずれ 2.99°）  届いた角度 +45.70 +1.49 +0.61 -0.35 +0.87 -30.23
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → +42.71 +0.00 -0.39 +0.00 +0.00 -30.00  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.99°）  届いた角度 +45.70 +1.49 +0.61 -0.35 -1.23 -30.23
[送信] j2 -1.0° → +42.71 +0.00 -1.39 +0.00 +0.00 -30.00  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.99°）  届いた角度 +45.70 +1.49 +0.61 -0.35 +2.90 -30.23
[長押し] j2 を +0.61° → -50.27° まで（目標を 6 回送信。止めます）
[送信] j2 +1.0° → +42.71 +0.00 -55.33 +0.00 +0.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +0.52 -55.63 -0.26 +1.23 -30.23
[長押し] j2 を -54.31° → +7.55° まで（目標を 6 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → +42.71 +0.00 +29.23 +0.00 +0.00 -30.00  届かなかった（ずれ 2.9°）  届いた角度 +45.61 +1.49 +30.84 -0.26 +0.17 -30.23
[関節] 上下で動かす関節を j3 にしました
[受付なし] 前の操作が終わっていません（ためません）
[送信] j3 -1.0° → +42.71 +0.00 +29.23 -1.26 +0.00 -30.00  届いた・無視されたので 1 回送り直した（ずれ 2.9°）  届いた角度 +45.61 +1.49 +30.84 -0.79 +0.17 -30.23
[送信] j3 -1.0° → +42.71 +0.00 +29.23 -2.26 +0.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.49 +30.84 -1.84 +0.17 -30.23
[長押し] j3 を -1.84° → -89.20° まで（目標を 11 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j3 +1.0° → +42.71 +0.00 +29.23 -101.74 +0.00 -30.00  届いた・無視されたので 2 回送り直した（ずれ 2.9°）  届いた角度 +45.61 +1.23 +31.20 -102.21 -0.79 -30.23
[送信] j3 +1.0° → +42.71 +0.00 +29.23 -100.74 +0.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.23 +31.20 -101.16 -0.35 -30.23
[長押し] j3 を -101.16° → -21.88° まで（目標を 10 回送信。止めます）
[送信] j3 +1.0° → +42.71 +0.00 +29.23 -5.94 +0.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.23 +31.20 -5.53 +1.84 -30.23
[長押し] j3 を -5.53° → -5.53° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j4 にしました
[送信] j3 +1.0° → +42.71 +0.00 +29.23 -4.36 +0.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.31 +31.20 -4.83 +1.66 -30.23
[送信] j4 -1.0° → +42.71 +0.00 +29.23 -4.36 -1.00 -30.00  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.31 +31.20 -4.74 -0.70 -30.23
[長押し] j4 を -0.70° → -60.38° まで（目標を 7 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j5 にしました
[送信] j4 +1.0° → +42.71 +0.00 +29.23 -4.36 -57.62 -30.00  届かなかった（ずれ 2.9°）  届いた角度 +45.61 +1.31 +31.20 -4.65 -56.77 -30.23
[受付なし] 前の操作が終わっていません（ためません）
[送信] j5 -1.0° → +42.71 +0.00 +29.23 -4.36 -57.62 -31.23  届いた・無視されたので 1 回送り直した（ずれ 2.9°）  届いた角度 +45.61 +1.31 +31.20 -4.57 -56.86 -30.76
[送信] j5 -2.0° → +42.71 +0.00 +29.23 -4.36 -57.62 -33.23  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 2.9°）  届いた角度 +45.61 +1.31 +31.20 -4.57 -58.53 -30.93
[長押し] j5 を -30.93° → -59.76° まで（目標を 3 回送信。止めます）
[送信] j5 +1.0° → +42.71 +0.00 +29.23 -4.36 -57.62 -84.86  届いた（ずれ 2.9°）  届いた角度 +45.61 +1.49 +31.28 -4.92 -56.51 -85.34
[長押し] j5 を -85.34° → -31.90° まで（目標を 5 回送信。止めます）
[送信] j0 -1.0° → +41.71 +0.00 +29.23 -4.36 -57.62 -24.34  届いた（ずれ 2.05°）  届いた角度 +41.57 +1.49 +31.28 -3.77 -56.51 -23.46
[長押し] j0 を +41.83° → +8.96° まで（目標を 4 回送信。止めます）
[関節] 上下で動かす関節を j1 にしました
[関節] 上下で動かす関節を j2 にしました
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -5.53 +0.00 +28.23 -4.36 -57.62 -24.34  届かなかった（ずれ 1.91°）  届いた角度 -5.62 +1.31 +30.14 -4.13 -58.62 -23.37
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 -1.0° → -5.53 +0.00 +29.14 -4.36 -57.62 -24.34  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 1.31°）  届いた角度 -5.62 +1.31 +30.14 -4.13 -58.62 -23.37
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j3 にしました
[受付なし] 前の操作が終わっていません（ためません）
[送信] j2 +1.0° → -5.53 +0.00 +30.14 -4.36 -57.62 -24.34  届かなかった（ずれ 1.31°）  届いた角度 -5.62 +1.31 +30.67 -4.21 -58.09 -23.29
[送信] HOME → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 1.84°）  届いた角度 -0.26 +1.31 +1.84 -0.79 +0.43 -28.74
[関節] 上下で動かす関節を j4 にしました
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 -1.0° → +0.00 +0.00 +0.00 +0.00 -1.00 -30.00  届いた・無視されたので 2 回送り直した（ずれ 1.84°）  届いた角度 -0.26 +1.31 +1.84 -0.26 -1.14 -29.70
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +1.0° → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 1.84°）  届いた角度 -0.26 +1.31 +1.84 -0.26 -1.14 -29.70
[送信] j4 -1.0° → +0.00 +0.00 +0.00 +0.00 -1.00 -30.00  届いた（ずれ 1.84°）  届いた角度 -0.26 +1.31 +1.84 -0.26 -1.14 -29.70
[範囲] j4 を -95.59° → -90.00° に切った（J4_SAFE -90.00°）
[長押し] j4 を -1.14° → -81.56° まで（目標を 9 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +1.0° → +0.00 +0.00 +0.00 +0.00 -87.24 -30.00  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 1.75°）  届いた角度 -0.26 +1.23 +1.75 +0.43 -88.33 -29.70
[受付なし] HOME: 前の操作が終わっていません（押し直してください）
[送信] j4 +1.0° → +0.00 +0.00 +0.00 +0.00 -86.24 -30.00  届いた（ずれ 1.75°）  届いた角度 -0.26 +1.14 +1.75 +0.35 -86.74 -29.70
[送信] HOME → +0.00 +0.00 +0.00 +0.00 +0.00 -30.00  届いた（ずれ 1.93°）  届いた角度 -0.26 +1.14 +1.75 +0.35 +1.93 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 -1.0° → -1.00 +0.00 +0.00 +0.00 +0.00 -30.00  動かなかった（次の押しは この目標の先から）・無視されたので 3 回送り直した（ずれ 1.75°）  届いた角度 -0.26 +1.14 +1.75 +0.26 -0.79 -29.79
[関節] 上下で動かす関節を j5 にしました
[関節] 上下で動かす関節を j1 にしました
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[送信] j0 -1.0° → -2.00 +0.00 +0.00 +0.00 +0.00 -30.00  届かなかった・無視されたので 1 回送り直した（ずれ 1.75°）  届いた角度 -0.26 +1.14 +1.75 +0.26 -0.26 -29.79
^C
[終了] Ctrl+C
[終了] アームは動かしていません。記録: /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_163144
```


## 16:35 1回押しの待ちを短くした（受付なし 40回→28回）

受付なしの多くは、1回押しの「届いた」を待っている間に押したものでした。j2 のように重さで1〜2°手前で止まる関節では、届くのを8秒の上限まで待っていました。角度を読む間隔も0.3秒で、届いたと分かるまでに毎回0.3秒以上かかっていました（commit 72d9d96）。

- 1回押しは、動き出して0.25秒止まったら「手前で止まった」として戻る。指令はその目標のままにし、次の押しはその先から動く
- 1回押しで角度を読む間隔を0.3秒から0.05秒に
- 動き出さないときの送り直しは、0.5秒おきに3回から、0.3秒おきに2回に
- 長押しを止めたあと角度を読むまでの待ちを0.3秒から0.1秒に

1回押しの待ちは中央の値で2.79秒から0.18秒になりました。それでも、数秒から十数秒まとめて受け付けない時間が残りました。いちばん長いのは約15秒で、長押しを離したあとの止める処理に11秒かかっていました。

#### teleop_20261105_163620 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_163620  行 386
-- 1 回押し: 送った量と, 動かした関節が動いた量
   0.00s j0 -1° → 動いた -0.79° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
   5.22s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  17.49s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 1.49° 動かなかった 待ち 1.01秒 送り直し 2回
  21.82s j2 +1° → 動いた 1.49° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  28.88s j0 +1° → 動いた 1.49° ほかの関節の最大の変化 0.08° 届いた 待ち 0.17秒 送り直し 0回
  30.49s j4 -1° → 動いた -0.08° ほかの関節の最大の変化 2.28° 動かなかった 待ち 1.02秒 送り直し 2回
  32.41s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.04秒 送り直し 2回
  39.96s j4 +1° → 動いた 0.52° ほかの関節の最大の変化 1.06° 届いた 待ち 0.1秒 送り直し 0回
  44.55s j4 +1° → 動いた 1.32° ほかの関節の最大の変化 0.61° 届いた 待ち 0.19秒 送り直し 0回
  45.29s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  45.79s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  46.24s j4 +1° → 動いた 0.88° ほかの関節の最大の変化 0.0° 手前で止まった 待ち 0.31秒 送り直し 0回
  47.00s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  47.21s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  47.39s j4 +1° → 動いた 0.08° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  48.21s j4 +2° → 動いた 1.23° ほかの関節の最大の変化 0.0° 届いた 待ち 0.09秒 送り直し 0回
  48.89s j4 +2° → 動いた 1.14° ほかの関節の最大の変化 0.0° 届いた 待ち 0.11秒 送り直し 0回
  49.48s j4 +2° → 動いた 2.02° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  50.03s j4 +2° → 動いた 1.32° ほかの関節の最大の変化 0.0° 届いた 待ち 0.09秒 送り直し 0回
  50.26s j4 +2° → 動いた 0.08° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.09秒 送り直し 2回
  51.49s j4 +2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.05秒 送り直し 2回
  52.69s j4 +2° → 動いた 2.11° ほかの関節の最大の変化 0.0° 届いた 待ち 0.17秒 送り直し 0回
  53.80s j4 +2° → 動いた 1.85° ほかの関節の最大の変化 0.0° 届いた 待ち 0.17秒 送り直し 0回
  54.25s j4 +2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 0.99秒 送り直し 2回
  57.42s j4 +1° → 動いた 2.8° ほかの関節の最大の変化 0.0° 届いた 待ち 0.15秒 送り直し 0回
  74.90s j4 +2° → 動いた 1.84° ほかの関節の最大の変化 0.0° 届いた 待ち 0.16秒 送り直し 0回
  75.64s j4 +1° → 動いた 0.62° ほかの関節の最大の変化 0.0° 届いた 待ち 0.09秒 送り直し 0回
  76.38s j4 +1° → 動いた 1.15° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  77.10s j4 +2° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.1秒 送り直し 2回
  81.31s j5 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 5.59秒 送り直し 2回
  94.98s j5 -1° → 動いた -1.23° ほかの関節の最大の変化 2.02° 手前で止まった 待ち 0.29秒 送り直し 0回
  99.15s j5 +1° → 動いた 0.35° ほかの関節の最大の変化 1.23° 手前で止まった 待ち 0.31秒 送り直し 0回
 104.70s j5 +1° → 動いた 0.35° ほかの関節の最大の変化 1.93° 手前で止まった 待ち 0.8秒 送り直し 1回
 111.83s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.88° 動かなかった 待ち 0.99秒 送り直し 2回
 117.61s j3 +1° → 動いた 0.78° ほかの関節の最大の変化 0.97° 手前で止まった 待ち 0.33秒 送り直し 0回
 122.34s j3 -1° → 動いた -1.06° ほかの関節の最大の変化 1.23° 届いた 待ち 0.24秒 送り直し 0回
 128.60s j3 -1° → 動いた -0.17° ほかの関節の最大の変化 0.0° 届いた 待ち 0.79秒 送り直し 2回
 132.55s j4 -1° → 動いた -1.41° ほかの関節の最大の変化 1.58° 手前で止まった 待ち 0.46秒 送り直し 0回
 137.89s j3 +1° → 動いた 1.67° ほかの関節の最大の変化 0.53° 手前で止まった 待ち 0.61秒 送り直し 0回
 142.76s j4 +1° → 動いた 0.09° ほかの関節の最大の変化 0.7° 届いた 待ち 0.09秒 送り直し 0回
 147.91s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.53° 動かなかった 待ち 1.04秒 送り直し 2回
 149.40s j2 +1° → 動いた 0.53° ほかの関節の最大の変化 0.7° 手前で止まった 待ち 0.34秒 送り直し 0回
 154.98s j3 -1° → 動いた -1.23° ほかの関節の最大の変化 0.88° 手前で止まった 待ち 0.73秒 送り直し 0回
 156.36s j3 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
 157.20s j3 +1° → 動いた 0.52° ほかの関節の最大の変化 0.08° 手前で止まった 待ち 0.43秒 送り直し 0回
 159.75s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
 162.19s j4 +1° → 動いた 0.0° ほかの関節の最大の変化 0.09° 動かなかった 待ち 1.03秒 送り直し 2回
 265.17s j4 -1° → 動いた 0.7° ほかの関節の最大の変化 0.61° 届いた 待ち 0.1秒 送り直し 0回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   4.40s release j0 差 [-8.35, 0.7, 0.62, -0.09, 1.22, 0.0] 送り直し None
  15.94s release j0 差 [11.34, 1.14, 0.88, -0.18, 0.52, -0.09] 送り直し None
  21.31s release j2 差 [0.0, -0.44, -26.1, 0.0, -1.13, 0.0] 送り直し None
  24.97s release j2 差 [0.0, 0.0, 2.81, 0.0, 0.0, 0.0] 送り直し None
  30.22s release j0 差 [16.69, 0.79, 0.7, -0.08, 1.4, -0.09] 送り直し None
  32.06s release j4 差 [0.0, 0.0, 0.0, -0.09, -12.47, 0.0] 送り直し None
  36.40s release j4 差 [0.0, 0.88, 0.71, 0.08, -12.56, 0.0] 送り直し None
  43.79s release j4 差 [0.0, 0.96, 0.88, 0.0, 13.09, 0.0] 送り直し None
  62.00s release j4 差 [0.0, 0.0, 0.0, 0.09, 9.14, 0.0] 送り直し None
  98.12s release j5 差 [0.0, 0.79, 0.7, 0.0, 1.05, -21.09] 送り直し None
  99.96s released_while_sending j5 差 [0.0, 0.7, 0.61, 0.0, 0.62, 0.88] 送り直し None
 108.48s release j5 差 [0.0, 0.88, 0.97, 0.0, 1.41, 8.88] 送り直し None
 116.19s release j2 差 [0.0, 0.18, -13.36, 0.0, 1.06, 0.0] 送り直し None
 121.89s release j3 差 [0.0, 0.62, 0.61, -0.96, 0.53, 0.0] 送り直し None
 125.89s release j3 差 [0.0, 0.0, 0.0, -1.4, 0.0, 0.0] 送り直し None
 130.48s release j3 差 [0.0, 0.53, 0.53, -26.37, 1.23, 0.0] 送り直し None
 135.50s release j4 差 [0.09, -0.09, 0.0, -0.18, -3.78, 0.0] 送り直し None
 139.45s release j3 差 [0.0, 0.44, 0.35, 17.14, 0.27, 0.0] 送り直し None
 144.55s release j4 差 [0.0, 0.52, 0.44, 0.09, 8.87, 0.0] 送り直し None
 152.42s release j2 差 [0.0, 0.97, 26.18, 0.08, 1.58, 0.0] 送り直し None
 161.43s release j4 差 [0.0, 0.0, 0.0, 0.09, -14.77, 0.0] 送り直し None
 163.99s release j4 差 [0.0, 0.97, 0.88, 0.0, 3.78, -0.08] 送り直し None
-- 受付なし 28 回. そのとき動いていた仕事: {'move(長押し)': 10, 'move': 17, 'halt': 1}
```

#### ゲームパッドの端末の出力（16:36 teleop_20261105_163620）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/test_gamepad_teleop.py
git commit -m "gamepad_teleop: 受付なしを減らす（止める待ち0.1秒・1刻みは止まっ たら戻る・読む間隔0.05秒）"
python3 tools/gamepad_teleop.py --execute
[main 72d9d96] gamepad_teleop: 受付なしを減らす（止める待ち0.1秒・1刻みは止まったら戻る・読む間隔0.05秒）
 2 files changed, 47 insertions(+), 9 deletions(-)
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_163620
[実機] daemon に送ります。起動したときの姿勢: -0.26 +1.14 +1.75 +0.26 -0.26 -29.79
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] j0 -1.0° → -1.26 +1.14 +1.75 +0.26 -0.26 -29.79  届いた（ずれ 0.21°）  届いた角度 -1.05 +1.14 +1.75 +0.26 -0.26 -29.79
[長押し] j0 を -0.96° → -93.95° まで（目標を 8 回送信。止めます）
[送信] j0 +1.0° → -101.30 +1.14 +1.75 +0.26 -0.26 -29.79  届いた（ずれ 1.49°）  届いた角度 -100.98 +2.10 +2.72 +0.00 +1.23 -29.88
[長押し] j0 を -102.21° → -35.33° まで（目標を 6 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[関節] 上下で動かす関節を j2 にしました
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[送信] j2 -1.0° → -23.99 +1.14 +0.75 +0.26 -0.26 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.23°）  届いた角度 -23.99 +1.23 +2.98 -0.35 +1.93 -29.97
[長押し] j2 を +2.98° → -35.68° まで（目標を 6 回送信。止めます）
[送信] j2 +1.0° → -23.99 +1.14 -60.78 +0.26 -0.26 -29.79  届いた（ずれ 0.61°）  届いた角度 -23.99 +0.61 -60.29 -0.35 -0.87 -29.88
[長押し] j2 を -60.29° → -6.50° まで（目標を 6 回送信。止めます）
[関節] 上下で動かす関節を j3 にしました
[関節] 上下で動かす関節を j4 にしました
[送信] j0 +1.0° → -22.99 +1.14 -3.69 +0.26 -0.26 -29.79  届いた（ずれ 7.38°）  届いた角度 -22.50 +0.79 +3.69 -0.35 -0.35 -29.88
[長押し] j0 を -22.93° → -13.09° まで（目標を 1 回送信。止めます）
[送信] j4 -1.0° → +3.60 +1.14 -3.69 +0.26 -1.26 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.34°）  届いた角度 +5.09 +1.66 +4.65 -0.43 +1.23 -29.88
[長押し] j4 を +1.23° → +0.79° まで（目標を 1 回送信。止めます）
[送信] j4 -1.0° → +3.60 +1.14 -3.69 +0.26 -12.68 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.34°）  届いた角度 +5.09 +1.66 +4.65 -0.52 -11.77 -29.88
[長押し] j4 を -11.77° → -74.53° まで（目標を 6 回送信。止めます）
[範囲] j4 を -102.36° → -90.00° に切った（J4_SAFE -90.00°）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -86.09 -29.79  届いた（ずれ 8.87°）  届いた角度 +5.09 +1.31 +5.18 -0.35 -86.57 -29.88
[長押し] j4 を -86.57° → -32.95° まで（目標を 7 回送信。止めます）
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -18.86 -29.79  届いた（ずれ 8.52°）  届いた角度 +5.09 +1.49 +4.83 -0.35 -18.54 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -17.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -17.75 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -16.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -16.96 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -15.86 -29.79  手前で止まった（次の押しは この目標の先から）（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -15.11 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -14.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -15.11 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -13.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -14.23 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 -12.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -13.27 -29.79
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -10.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -11.07 -29.79
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -8.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -9.14 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -6.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -6.41 -29.79
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -4.86 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -5.09 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -2.86 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -4.57 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -0.86 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -4.57 -29.79
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -2.57 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -2.46 -29.79
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 -0.57 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -0.61 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 +1.43 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 -0.61 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 +2.43 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.35 +2.28 -29.79
[長押し] j4 を +2.46° → +8.26° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 +19.40 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +19.24 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 +20.40 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +19.95 -29.79
[送信] j4 +1.0° → +3.60 +1.14 -3.69 +0.26 +21.40 -29.79  届いた（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +21.18 -29.79
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 +2.0° → +3.60 +1.14 -3.69 +0.26 +23.40 -29.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +21.18 -29.79
[関節] 上下で動かす関節を j5 にしました
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[送信] j5 -1.0° → +3.60 +1.14 -3.69 +0.26 +23.40 -30.79  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +21.18 -29.79
[送信] j5 -1.0° → +3.60 +1.14 -3.69 +0.26 +23.40 -31.79  手前で止まった（次の押しは この目標の先から）（ずれ 8.43°）  届いた角度 +5.09 +1.49 +4.74 -0.26 +23.20 -31.02
[長押し] j5 を -31.02° → -62.84° まで（目標を 3 回送信。止めます）
[送信] j5 +1.0° → +3.60 +1.14 -3.69 +0.26 +23.40 -82.93  手前で止まった（次の押しは この目標の先から）（ずれ 8.17°）  届いた角度 +5.09 +1.49 +4.48 -0.35 +24.60 -83.58
[止める] stop（released_while_sending）  止まった角度 +5.09 +2.19 +5.09 -0.35 +25.22 -82.70
[送信] j5 +1.0° → +3.60 +1.14 -3.69 +0.26 +23.40 -81.70  手前で止まった（次の押しは この目標の先から）・無視されたので 1 回送り直した（ずれ 8.34°）  届いた角度 +5.09 +1.31 +4.65 -0.35 +23.99 -82.35
[長押し] j5 を -82.35° → -36.12° まで（目標を 4 回送信。止めます）
[関節] 上下で動かす関節を j1 にしました
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → +3.60 +1.14 +4.62 +0.26 +23.40 -27.24  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.49°）  届いた角度 +5.09 +1.40 +5.62 -0.35 +24.52 -27.33
[長押し] j2 を +5.62° → -39.90° まで（目標を 6 回送信。止めます）
[関節] 上下で動かす関節を j3 にしました
[送信] j3 +1.0° → +3.60 +1.14 -53.26 +1.26 +23.40 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 2.08°）  届いた角度 +5.09 +0.96 -53.34 +0.43 +25.48 -27.24
[長押し] j3 を +0.43° → +72.59° まで（目標を 10 回送信。止めます）
[送信] j3 -1.0° → +3.60 +1.14 -53.26 +70.63 +23.40 -27.24  届いた（ずれ 1.49°）  届いた角度 +5.09 +0.87 -53.87 +70.48 +24.25 -27.15
[長押し] j3 を +69.78° → +1.75° まで（目標を 7 回送信。止めます）
[送信] j3 -1.0° → +3.60 +1.14 -53.26 -0.65 +23.40 -27.24  届いた・無視されたので 2 回送り直した（ずれ 1.49°）  届いた角度 +5.09 +0.87 -53.87 -0.17 +24.25 -27.15
[長押し] j3 を -0.17° → -0.17° まで（目標を 2 回送信。止めます）
[関節] 上下で動かす関節を j4 にしました
[送信] j4 -1.0° → +3.60 +1.14 -53.26 -26.54 +22.40 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 1.76°）  届いた角度 +5.09 +1.05 -53.43 -27.50 +24.16 -27.24
[長押し] j4 を +24.16° → -15.99° まで（目標を 6 回送信。止めます）
[関節] 上下で動かす関節を j5 にしました
[関節] 上下で動かす関節を j1 にしました
[関節] 上下で動かす関節を j2 にしました
[関節] 上下で動かす関節を j3 にしました
[送信] j3 +1.0° → +3.60 +1.14 -53.26 -25.54 -19.77 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 1.53°）  届いた角度 +5.09 +0.87 -53.43 -27.07 -20.30 -27.15
[長押し] j3 を -27.07° → -18.89° まで（目標を 1 回送信。止めます）
[関節] 上下で動かす関節を j4 にしました
[送信] j4 +1.0° → +3.60 +1.14 -53.26 -1.75 -18.77 -27.24  届いた（ずれ 1.49°）  届いた角度 +5.09 +1.23 -52.91 -1.14 -19.24 -27.15
[長押し] j4 を -19.16° → +2.81° まで（目標を 2 回送信。止めます）
[関節] 上下で動かす関節を j5 にしました
[関節] 上下で動かす関節を j1 にしました
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → +3.60 +1.14 -54.26 -1.75 +11.68 -27.24  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.49°）  届いた角度 +5.09 +1.05 -53.17 -1.05 +11.68 -27.15
[送信] j2 +1.0° → +3.60 +1.14 -53.26 -1.75 +11.68 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 1.49°）  届いた角度 +5.09 +0.96 -52.64 -0.96 +10.98 -27.15
[長押し] j2 を -52.64° → -25.22° まで（目標を 5 回送信。止めます）
[関節] 上下で動かす関節を j3 にしました
[送信] j3 -1.0° → +3.60 +1.14 +0.96 -2.75 +11.68 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 1.49°）  届いた角度 +5.09 +1.49 +1.84 -2.10 +11.68 -27.24
[送信] j3 +1.0° → +3.60 +1.14 +0.96 -1.75 +11.68 -27.24  届いた（ずれ 1.49°）  届いた角度 +5.09 +1.49 +1.84 -2.10 +11.68 -27.24
[送信] j3 +1.0° → +3.60 +1.14 +0.96 -0.75 +11.68 -27.24  手前で止まった（次の押しは この目標の先から）（ずれ 1.49°）  届いた角度 +5.09 +1.49 +1.84 -1.58 +11.60 -27.24
[関節] 上下で動かす関節を j4 にしました
[送信] j4 -1.0° → +3.60 +1.14 +0.96 -0.75 +10.68 -27.24  届いた（ずれ 1.49°）  届いた角度 +5.09 +1.49 +1.84 -1.31 +10.63 -27.15
[長押し] j4 を +10.63° → -15.02° まで（目標を 3 回送信。止めます）
[送信] j4 +1.0° → +3.60 +1.14 +0.96 -0.75 -28.79 -27.24  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.49°）  届いた角度 +5.09 +1.49 +1.84 -1.05 -29.79 -27.07
[長押し] j4 を -29.79° → -16.43° まで（目標を 2 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 -1.0° → +3.60 +1.14 +0.96 -0.75 -13.65 -27.24  届いた（ずれ 1.85°）  届いた角度 +5.09 +1.93 +2.81 -1.14 -13.71 -27.15
^C
[終了] Ctrl+C
[終了] アームは動かしていません。記録: /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_163620
```


## 16:41 daemon が角度を読み直す待ちを0.2秒から0.02秒にした（受付なし 28回→13回）

まとめて受け付けない時間の原因は、daemon が角度を読むところでした。アームが動いている最中は、角度の読み取りが空で返ることがよくあります。daemon はそのたびに0.2秒待って最大12回読み直すので、1回の読み取りに最長約2.6秒かかります。Mac 側も読めないと5回読み直すので、合わせて10秒を超えることがありました。しかも daemon は、送る命令のたびに、記録のためだけに角度を読んでいて、ここで読めないと送る命令の返事そのものが遅れていました。

daemon を次のように書き換えるスクリプト（`tools/daemon_fast_read.sh`）を作りました。書き換える前の daemon は、KIOXIA の `archive/mecharm_daemon_premerge_fastread_20261105_170254/` に写してあります。

- 読み直しの待ちを0.2秒から0.02秒に（jog_probe で直接読んだときは、0.02秒おきの読み直しですぐ読めていた）
- 送る命令のあとの記録用の読み取りは1回だけにし、読めなくても送る命令はすぐ返す
- ゲームパッドの止める処理の読み取りも1回だけにした（Mac 側。commit 617c3bd）

- ねらい：アームが動いている最中の読み取りの失敗で、指令の返事と次の操作が何秒も止まらないようにする
- 変わったこと：読めなかったときの待ちが、1回の読み取りで最長約2.6秒から約0.3秒になった。受付なしは28回から13回になり、1回押しの待ちの最大は5.59秒から1.27秒になった
- 見込める効果：π0.5 の実機推論も同じ daemon を通るので、送る指令の返りが速くなり、前から気になっていた動きの合間の長さも短くなる見込み。推論ではまだ測っていない

#### Pi の mecharm_daemon.py の差分（書き換える前 → stop を足し、読み直しを速くしたあと）

```diff
--- mecharm_daemon.py（11/5 15:59 に Pi から持ち帰った版）
+++ tools/pi/mecharm_daemon.py（stop と読み直しの変更のあと）
@@ -18,7 +18,7 @@
 SERIAL_PORT = "/dev/ttyAMA0"
 BAUDRATE = 1000000
 GET_ANGLES_RETRIES = 12
-GET_ANGLES_INTERVAL_SEC = 0.2
+GET_ANGLES_INTERVAL_SEC = 0.02   # 2026-11-05: 0.2 → 0.02 (動いている間は空で返ることが多く, 1 回の読み取りに最長 2.6 秒かかっていた)
 
 _mc = None
 _server_sock = None
@@ -54,6 +54,16 @@
     return None
 
 
+def read_angles_once_for_log():
+    """送ったあとの記録用に 1 回だけ読む (2026-11-05). 読めなくても待たない.
+    以前は読み直しつきで, 読めないと送る命令の返事が最長 2.6 秒遅れていた."""
+    try:
+        a = _mc.get_angles()
+    except Exception:
+        return None
+    return a if isinstance(a, (list, tuple)) and len(a) == 6 else None
+
+
 def handle_command(cmd_obj):
     """コマンドを処理してレスポンス dict を返す。"""
     global _fresh_mode_state
@@ -78,7 +88,7 @@
 
             if wait > 0:
                 time.sleep(wait)
-            current_angles = read_angles_with_retry("send_angles_after", log_fail=False)
+            current_angles = read_angles_once_for_log()
             log(f"send_angles 後の現在角度: {current_angles}")
 
             return {"ok": True, "result": result, "elapsed_ms": elapsed_ms}
@@ -104,7 +114,7 @@
 
             if wait > 0:
                 time.sleep(wait)
-            current_angles = read_angles_with_retry("send_angle_after", log_fail=False)
+            current_angles = read_angles_once_for_log()
             log(f"send_angle 後の現在角度: {current_angles}")
 
             return {"ok": True, "result": result, "elapsed_ms": elapsed_ms}
@@ -235,6 +245,20 @@
             return {"ok": True, "angles": list(a)}
         return {"ok": True, "angles": None, "raw": repr(a)[:80]}
 
+    # 2026-11-05: 動いている途中で止める (ゲームパッドの長押しを離したとき・L2+R2).
+    # jog_probe (diag/jog_probe_20261105_*) で jog_stop と stop はどちらも効かない回があったので両方呼ぶ.
+    elif cmd == "stop":
+        res = {}
+        for name in ("jog_stop", "stop"):
+            try:
+                res[name] = getattr(_mc, name)()
+            except Exception as e:
+                res[name] = f"{type(e).__name__}: {e}"
+        log(f"stop: {res}")
+        if all(isinstance(v, str) for v in res.values()):
+            return {"ok": False, "error": f"stop failed: {res}"}
+        return {"ok": True, "result": res}
+
     else:
         return {"ok": False, "error": f"unknown cmd: {cmd}"}
```

#### daemon の読み直しを速くしたときと、ゲームパッドの端末の出力（17:03 teleop_20261105_170313）

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
git add tools/gamepad_teleop.py tools/daemon_fast_read.sh
git commit -m "daemon の読み直しを速くするスクリプト・止めるときの読み取りは1回 だけ"
tools/daemon_fast_read.sh
git add tools/pi/mecharm_daemon.py
git commit -m "daemon の読み直しを0.02秒にした版を tools/pi に置く"
python3 tools/gamepad_teleop.py --execute
[main 617c3bd] daemon の読み直しを速くするスクリプト・止めるときの読み取りは1回だけ
 2 files changed, 111 insertions(+), 1 deletion(-)
 create mode 100755 tools/daemon_fast_read.sh
今の daemon の写し: /Volumes/KIOXIA/r2r2r-data/archive/mecharm_daemon_premerge_fastread_20261105_170254/mecharm_daemon.py
読み取りを速くしました
--- 差分
21c21
< GET_ANGLES_INTERVAL_SEC = 0.2
---
> GET_ANGLES_INTERVAL_SEC = 0.02   # 2026-11-05: 0.2 → 0.02 (動いている間は空で返ることが多く, 1 回の読み取りに最長 2.6 秒かかっていた)
54a55,64
> 
> 
> def read_angles_once_for_log():
>     """送ったあとの記録用に 1 回だけ読む (2026-11-05). 読めなくても待たない.
>     以前は読み直しつきで, 読めないと送る命令の返事が最長 2.6 秒遅れていた."""
>     try:
>         a = _mc.get_angles()
>     except Exception:
>         return None
>     return a if isinstance(a, (list, tuple)) and len(a) == 6 else None
81c91
<             current_angles = read_angles_with_retry("send_angles_after", log_fail=False)
---
>             current_angles = read_angles_once_for_log()
107c117
<             current_angles = read_angles_with_retry("send_angle_after", log_fail=False)
---
>             current_angles = read_angles_once_for_log()
ping → {'ok': True, 'daemon': 'mecharm_daemon', 'fresh_mode': 0}
get_angles → {'ok': True, 'angles': [5.09, 1.31, 2.81, -0.96, -13.62, -26.98]}
できました。記録: /Volumes/KIOXIA/r2r2r-data/archive/mecharm_daemon_premerge_fastread_20261105_170254
[main c7992ca] daemon の読み直しを0.02秒にした版を tools/pi に置く
 1 file changed, 13 insertions(+), 3 deletions(-)
[記録] /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/teleop_20261105_170313
[実機] daemon に送ります。起動したときの姿勢: +5.09 +1.31 +2.81 -0.96 -13.62 -26.98
コントローラーを待っています（つないでいなければ、今つないでください）
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[送信] j0 -1.0° → +4.09 +1.31 +2.81 -0.96 -13.62 -26.98  届いた（ずれ 0.05°）  届いた角度 +4.04 +1.31 +2.81 -0.96 -13.62 -26.98
[長押し] j0 を +4.30° → -66.97° まで（目標を 7 回送信。止めます）
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → -74.53 +1.31 +1.81 -0.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.46°）  届いた角度 -76.99 +1.49 +3.86 -0.08 -12.12 -26.71
[長押し] j2 を +3.86° → -49.65° まで（目標を 8 回送信。止めます）
[送信] j2 +1.0° → -74.53 +1.31 -61.75 -0.96 -13.62 -26.98  届いた（ずれ 2.37°）  届いた角度 -76.90 +0.52 -61.96 -0.43 -13.18 -26.71
[長押し] j2 を -61.17° → -4.83° まで（目標を 7 回送信。止めます）
[送信] j0 +1.0° → -73.53 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.11°）  届いた角度 -73.21 +1.58 -0.70 -0.35 -11.51 -26.71
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +1.0° → -72.53 +1.31 -2.63 -0.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.11°）  届いた角度 -73.38 +1.58 -0.70 -0.70 -11.51 -26.71
[受付なし] 前の操作が終わっていません（ためません）
[送信] j0 +1.0° → -71.53 +1.31 -2.63 -0.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.93°）  届いた角度 -73.38 +1.58 -0.70 -0.70 -12.39 -26.71
[送信] j0 -1.0° → -72.53 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 1.93°）  届いた角度 -72.77 +1.58 -0.70 -0.70 -12.39 -26.71
[送信] j0 +1.0° → -71.53 +1.31 -2.63 -0.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.93°）  届いた角度 -72.33 +1.58 -0.70 -0.70 -13.53 -26.71
[送信] j0 +1.0° → -70.53 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -70.40 +1.58 -0.61 -0.35 -13.53 -26.71
[送信] j0 +2.0° → -68.53 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -68.20 +1.49 -0.61 -0.61 -13.53 -26.71
[送信] j0 +2.0° → -66.53 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -66.79 +1.49 -0.61 -0.70 -13.53 -26.71
[長押し] j0 を -66.44° → -66.44° まで（目標を 1 回送信。止めます）
[送信] j0 +1.0° → -57.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -57.65 +1.49 -0.61 -1.05 -13.62 -26.80
[送信] j0 +1.0° → -56.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -56.77 +1.49 -0.61 -1.23 -13.62 -26.80
[送信] j0 +1.0° → -55.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -55.54 +1.49 -0.61 -1.23 -13.62 -26.80
[送信] j0 -1.0° → -56.97 +1.31 -2.63 -0.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.02°）  届いた角度 -56.07 +1.49 -0.61 -1.14 -13.62 -26.80
[送信] j0 -1.0° → -57.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -58.35 +1.49 -0.61 -0.96 -13.62 -26.80
[送信] j0 -1.0° → -58.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -59.06 +1.49 -0.61 -0.96 -13.62 -26.80
[送信] j0 -1.0° → -59.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -59.50 +1.49 -0.61 -0.96 -13.62 -26.80
[送信] j0 -1.0° → -60.97 +1.31 -2.63 -0.96 -13.62 -26.98  届いた（ずれ 2.02°）  届いた角度 -61.17 +1.49 -0.61 -0.96 -13.62 -26.80
[関節] 上下で動かす関節を j3 にしました
[送信] j3 -1.0° → -60.97 +1.31 -2.63 -1.96 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.02°）  届いた角度 -61.17 +1.49 -0.61 -0.96 -13.62 -26.80
[長押し] j3 を -0.96° → -8.61° まで（目標を 1 回送信。止めます）
[送信] j3 +1.0° → -60.97 +1.31 -2.63 -13.15 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 3.06°）  届いた角度 -60.90 +1.49 +0.43 -13.88 -12.21 -26.89
[送信] j3 +1.0° → -60.97 +1.31 -2.63 -12.15 -13.62 -26.98  手前で止まった（次の押しは この目標の先から）（ずれ 3.06°）  届いた角度 -60.90 +1.49 +0.43 -12.74 -12.21 -26.89
[長押し] j3 を -12.74° → +63.98° まで（目標を 10 回送信。止めます）
[送信] j3 -1.0° → -60.97 +1.31 -2.63 +63.16 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 4.03°）  届いた角度 -61.08 +2.46 +1.40 +64.16 -13.53 -26.89
[送信] j3 -1.0° → -60.97 +1.31 -2.63 +62.16 -13.62 -26.98  手前で止まった（次の押しは この目標の先から）（ずれ 2.8°）  届いた角度 -60.99 +1.58 +0.17 +63.36 -13.27 -26.89
[長押し] j3 を +63.36° → -0.26° まで（目標を 7 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j3 +1.0° → -60.97 +1.31 -2.63 -7.52 -13.62 -26.98  手前で止まった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.8°）  届いた角度 -60.90 +1.49 +0.17 -8.17 -11.60 -26.89
[送信] j3 +1.0° → -60.97 +1.31 -2.63 -6.52 -13.62 -26.98  手前で止まった（次の押しは この目標の先から）（ずれ 2.8°）  届いた角度 -60.99 +1.49 +0.17 -7.03 -11.77 -26.89
[止める] stop（released_while_sending）  止まった角度 -61.08 +1.49 +0.17 -3.69 -12.21 -26.89
[送信] j3 +1.0° → -60.97 +1.31 -2.63 -2.69 -13.62 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.8°）  届いた角度 -61.08 +1.49 +0.17 -3.69 -12.74 -26.89
[関節] 上下で動かす関節を j4 にしました
[送信] j4 -1.0° → -60.97 +1.31 -2.63 -2.69 -14.62 -26.98  届いた（ずれ 2.8°）  届いた角度 -61.08 +1.49 +0.17 -2.98 -14.15 -26.89
[範囲] j4 を -99.99° → -90.00° に切った（J4_SAFE -90.00°）
[範囲] j4 -103.76° は送らない：範囲の端にいて、押した向きに進めない（範囲 [-90.00, -90.00]・J4_SAFE）
[送らない] j4 -15.0°（長押し 30）
[長押し] j4 を -14.23° → -84.99° まで（目標を 10 回送信。止めます）
[止める] stop（hold_not_sent）  止まった角度 -61.08 +2.10 +0.52 -2.90 -89.12 -26.89
[送信] j4 +1.0° → -60.97 +1.31 -2.63 -2.69 -88.12 -26.98  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.37°）  届いた角度 -61.17 +1.14 -0.26 -3.16 -88.76 -26.89
[長押し] j4 を -88.76° → -45.35° まで（目標を 4 回送信。止めます）
[関節] 上下で動かす関節を j5 にしました
[送信] j5 -1.0° → -60.97 +1.31 -2.63 -2.69 -37.08 -27.98  手前で止まった（次の押しは この目標の先から）（ずれ 2.89°）  届いた角度 -61.08 +1.58 +0.26 -3.16 -38.05 -27.24
[長押し] j5 を -27.24° → -49.92° まで（目標を 3 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[受付なし] 前の操作が終わっていません（ためません）
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[受付なし] 前の操作が終わっていません（ためません）
[送信] j5 +1.0° → -60.97 +1.31 -2.63 -2.69 -37.08 -63.59  手前で止まった（次の押しは この目標の先から）（ずれ 2.63°）  届いた角度 -60.90 +1.49 +0.00 -3.16 -37.52 -64.24
[長押し] j5 を -64.24° → -40.16° まで（目標を 3 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j5 -1.0° → -60.97 +1.31 -2.63 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.63°）  届いた角度 -60.90 +1.49 +0.00 -3.16 -38.23 -25.75
[関節] 上下で動かす関節を j1 にしました
[関節] 上下で動かす関節を j2 にしました
[送信] j2 -1.0° → -60.97 +1.31 -3.63 -2.69 -37.08 -26.92  手前で止まった（次の押しは この目標の先から）（ずれ 2.99°）  届いた角度 -61.08 +1.49 -2.02 -2.98 -40.07 -25.75
[長押し] j2 を -2.02° → -44.03° まで（目標を 4 回送信。止めます）
[送信] j2 +1.0° → -60.97 +1.31 -54.54 -2.69 -37.08 -26.92  届いた（ずれ 3.34°）  届いた角度 -61.17 +0.61 -54.93 -2.81 -40.42 -26.10
[長押し] j2 を -54.14° → -2.37° まで（目標を 5 回送信。止めます）
[関節] 上下で動かす関節を j3 にしました
[関節] 上下で動かす関節を j4 にしました
[関節] 上下で動かす関節を j5 にしました
[関節] 上下で動かす関節を j1 にしました
[送信] j1 -1.0° → -60.97 +0.31 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.35°）  届いた角度 -61.17 +1.66 +5.00 -2.90 -37.79 -26.36
[長押し] j1 を +1.66° → -26.89° まで（目標を 3 回送信。止めます）
[送信] j1 +1.0° → -60.97 -30.81 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 3.26°）  届いた角度 -60.99 -31.37 +5.00 -2.98 -40.34 -26.45
[長押し] j1 を -31.37° → -25.40° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j1 +1.0° → -60.97 -3.92 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 2.73°）  届いた角度 -61.08 -4.04 +5.00 -3.07 -39.81 -26.54
[長押し] j1 を -3.16° → +20.56° まで（目標を 3 回送信。止めます）
[送信] j0 -1.0° → -61.97 +24.43 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 0.97°）  届いた角度 -61.61 +24.43 +5.88 -3.16 -38.05 -26.63
[長押し] j0 を -62.31° → -91.49° まで（目標を 3 回送信。止めます）
[送信] j0 +1.0° → -100.51 +24.43 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 1.85°）  届いた角度 -100.54 +25.57 +6.85 -3.16 -36.47 -26.89
[長押し] j0 を -100.63° → +51.76° まで（目標を 13 回送信。止めます）
[送信] j0 -1.0° → +54.89 +24.43 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 0.56°）  届いた角度 +55.45 +24.25 +5.53 -3.16 -37.00 -26.89
[送信] j0 -1.0° → +53.89 +24.43 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 0.56°）  届いた角度 +53.61 +24.25 +5.53 -3.25 -37.00 -26.89
[長押し] j0 を +54.05° → -36.12° まで（目標を 9 回送信。止めます）
[送信] j1 -1.0° → -35.41 +23.43 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.97°）  届いた角度 -35.77 +25.40 +5.62 -2.46 -37.00 -26.98
[長押し] j1 を +25.40° → -12.48° まで（目標を 5 回送信。止めます）
[送信] j1 +1.0° → -35.41 -19.30 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 0.88°）  届いた角度 -35.68 -18.80 +5.09 -2.63 -37.96 -26.98
[長押し] j1 を -18.80° → +38.67° まで（目標を 6 回送信。止めます）
[送信] j0 +1.0° → -34.41 +48.07 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 1.53°）  届いた角度 -35.94 +48.25 +5.80 -2.46 -36.38 -26.98
[送信] j0 +1.0° → -33.41 +48.07 +5.00 -2.69 -37.08 -26.92  届いた（ずれ 0.71°）  届いた角度 -33.22 +48.25 +5.71 -2.10 -37.44 -26.98
[長押し] j0 を -33.75° → +14.94° まで（目標を 6 回送信。止めます）
[送信] j1 -1.0° → +19.86 +47.07 +5.00 -2.69 -37.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.32°）  届いた角度 +18.98 +49.39 +6.32 -2.19 -36.65 -27.07
[関節] 上下で動かす関節を j2 にしました
[関節] 上下で動かす関節を j3 にしました
[関節] 上下で動かす関節を j4 にしました
[送信] j4 -1.0° → +19.86 +47.07 +5.00 -2.69 -38.08 -26.92  動かなかった（次の押しは この目標の先から）・無視されたので 2 回送り直した（ずれ 2.81°）  届いた角度 +22.67 +49.39 +5.27 -2.81 -36.91 -27.07
[長押し] j4 を -36.91° → -36.91° まで（目標を 1 回送信。止めます）
[受付なし] 前の操作が終わっていません（ためません）
[送信] j4 -1.0° → +19.86 +47.07 +5.00 -2.69 -38.88 -26.92  手前で止まった（次の押しは この目標の先から）（ずれ 2.81°）  届いた角度 +22.67 +49.30 +5.18 -2.81 -38.14 -27.07
[長押し] j4 を -38.14° → -50.71° まで（目標を 2 回送信。止めます）
[送信] j0 +1.0° → +20.86 +47.07 +5.00 -2.69 -61.61 -26.92  届いた（ずれ 2.23°）  届いた角度 +20.74 +49.30 +5.27 -3.16 -63.54 -27.07
[長押し] j0 を +20.91° → +37.00° まで（目標を 2 回送信。止めます）
[送信] j0 -1.0° → +47.25 +47.07 +5.00 -2.69 -61.61 -26.92  届いた（ずれ 2.23°）  届いた角度 +47.37 +49.30 +5.27 -2.98 -63.54 -27.07
[長押し] j0 を +47.19° → +7.55° まで（目標を 4 回送信。止めます）
```

#### teleop_20261105_170313 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_170313  行 549
-- 1 回押し: 送った量と, 動かした関節が動いた量
   0.00s j0 -1° → 動いた -1.05° ほかの関節の最大の変化 0.0° 届いた 待ち 0.1秒 送り直し 0回
   6.46s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 3.34° 動かなかった 待ち 1.04秒 送り直し 2回
  10.85s j2 +1° → 動いた 0.44° ほかの関節の最大の変化 0.79° 届いた 待ち 0.18秒 送り直し 0回
  15.45s j0 +1° → 動いた 3.95° ほかの関節の最大の変化 1.93° 届いた 待ち 0.22秒 送り直し 0回
  15.85s j0 +1° → 動いた -0.35° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.04秒 送り直し 2回
  17.75s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.06秒 送り直し 2回
  19.45s j0 -1° → 動いた 0.61° ほかの関節の最大の変化 0.0° 届いた 待ち 0.16秒 送り直し 0回
  20.55s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 1.05° 動かなかった 待ち 1.0秒 送り直し 2回
  23.57s j0 +1° → 動いた 1.93° ほかの関節の最大の変化 0.35° 届いた 待ち 0.16秒 送り直し 0回
  25.57s j0 +2° → 動いた 2.2° ほかの関節の最大の変化 0.35° 届いた 待ち 0.17秒 送り直し 0回
  26.57s j0 +2° → 動いた 1.5° ほかの関節の最大の変化 0.35° 届いた 待ち 0.16秒 送り直し 0回
  28.40s j0 +1° → 動いた 1.58° ほかの関節の最大の変化 0.18° 届いた 待ち 0.09秒 送り直し 0回
  29.67s j0 +1° → 動いた 1.32° ほかの関節の最大の変化 0.0° 届いた 待ち 0.16秒 送り直し 0回
  30.50s j0 +1° → 動いた 1.5° ほかの関節の最大の変化 0.0° 届いた 待ち 0.11秒 送り直し 0回
  31.89s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 0.99秒 送り直し 2回
  33.24s j0 -1° → 動いた -2.28° ほかの関節の最大の変化 0.09° 届いた 待ち 0.3秒 送り直し 0回
  34.20s j0 -1° → 動いた -1.06° ほかの関節の最大の変化 0.0° 届いた 待ち 0.09秒 送り直し 0回
  34.90s j0 -1° → 動いた -0.27° ほかの関節の最大の変化 0.0° 届いた 待ち 0.09秒 送り直し 0回
  35.66s j0 -1° → 動いた -1.06° ほかの関節の最大の変化 0.0° 届いた 待ち 0.24秒 送り直し 0回
  38.51s j3 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.07秒 送り直し 2回
  41.15s j3 +1° → 動いた 0.27° ほかの関節の最大の変化 0.97° 動かなかった 待ち 1.09秒 送り直し 2回
  43.28s j3 +1° → 動いた 0.97° ほかの関節の最大の変化 0.0° 手前で止まった 待ち 0.3秒 送り直し 0回
  47.60s j3 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.06秒 送り直し 2回
  49.24s j3 -1° → 動いた -0.8° ほかの関節の最大の変化 1.23° 手前で止まった 待ち 0.4秒 送り直し 0回
  54.39s j3 +1° → 動いた 0.35° ほかの関節の最大の変化 1.14° 手前で止まった 待ち 1.27秒 送り直し 2回
  56.49s j3 +1° → 動いた 1.05° ほかの関節の最大の変化 0.09° 手前で止まった 待ち 0.37秒 送り直し 0回
  57.33s j3 +1° → 動いた 0.0° ほかの関節の最大の変化 0.09° 動かなかった 待ち 1.05秒 送り直し 2回
  59.55s j4 -1° → 動いた -1.41° ほかの関節の最大の変化 0.71° 届いた 待ち 0.02秒 送り直し 0回
  64.03s j4 +1° → 動いた 0.18° ほかの関節の最大の変化 1.14° 動かなかった 待ち 1.02秒 送り直し 2回
  71.15s j5 -1° → 動いた -0.35° ほかの関節の最大の変化 1.05° 手前で止まった 待ち 0.41秒 送り直し 0回
  81.45s j5 +1° → 動いた 0.35° ほかの関節の最大の変化 1.23° 手前で止まった 待ち 0.31秒 送り直し 0回
  83.97s j5 -1° → 動いた 0.17° ほかの関節の最大の変化 0.71° 動かなかった 待ち 1.04秒 送り直し 2回
  88.34s j2 -1° → 動いた -2.02° ほかの関節の最大の変化 1.75° 手前で止まった 待ち 0.62秒 送り直し 0回
  91.49s j2 +1° → 動いた 0.61° ほかの関節の最大の変化 1.24° 届いた 待ち 0.09秒 送り直し 0回
  97.63s j1 -1° → 動いた 0.0° ほかの関節の最大の変化 0.97° 動かなかった 待ち 0.99秒 送り直し 2回
 100.24s j1 +1° → 動いた 0.0° ほかの関節の最大の変化 0.26° 動かなかった 待ち 1.01秒 送り直し 2回
 103.86s j1 +1° → 動いた 0.88° ほかの関節の最大の変化 0.09° 届いた 待ち 0.1秒 送り直し 0回
 105.79s j0 -1° → 動いた -0.44° ほかの関節の最大の変化 0.09° 届いた 待ち 0.17秒 送り直し 0回
 107.89s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.01秒 送り直し 0回
 115.19s j0 -1° → 動いた 0.0° ほかの関節の最大の変化 1.15° 動かなかった 待ち 0.98秒 送り直し 2回
 116.43s j0 -1° → 動いた -1.84° ほかの関節の最大の変化 0.09° 届いた 待ち 0.16秒 送り直し 0回
 122.16s j1 -1° → 動いた 0.0° ほかの関節の最大の変化 0.88° 動かなかった 待ち 0.99秒 送り直し 2回
 125.64s j1 +1° → 動いた 0.71° ほかの関節の最大の変化 1.41° 届いた 待ち 0.2秒 送り直し 0回
 129.65s j0 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.01秒 送り直し 2回
 130.89s j0 +1° → 動いた 2.72° ほかの関節の最大の変化 1.06° 届いた 待ち 0.17秒 送り直し 0回
 134.28s j1 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 0.98秒 送り直し 2回
 137.10s j4 -1° → 動いた -0.26° ほかの関節の最大の変化 3.69° 動かなかった 待ち 1.02秒 送り直し 2回
 139.57s j4 -1° → 動いた -0.44° ほかの関節の最大の変化 1.41° 手前で止まった 待ち 0.58秒 送り直し 0回
 142.86s j0 +1° → 動いた -1.93° ほかの関節の最大の変化 1.93° 届いた 待ち 0.09秒 送り直し 0回
 144.54s j0 -1° → 動いた -0.88° ほかの関節の最大の変化 0.08° 届いた 待ち 0.17秒 送り直し 0回
 197.21s j4 -1° → 動いた -1.32° ほかの関節の最大の変化 0.09° 届いた 待ち 0.81秒 送り直し 0回
 198.45s j4 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.01秒 送り直し 2回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   3.69s release j0 差 [-7.56, 0.88, 0.7, 0.6, 1.32, 0.0] 送り直し None
  10.35s release j2 差 [-0.09, -0.26, -13.1, -0.09, -0.44, 0.0] 送り直し None
  13.44s release j2 差 [0.0, 0.88, 2.2, 0.0, 1.58, 0.0] 送り直し None
  27.22s release j0 差 [7.47, 0.0, 0.0, 0.0, 0.0, -0.09] 送り直し None
  40.20s release j3 差 [0.18, 0.79, 0.69, -5.54, 1.32, 0.0] 送り直し None
  47.03s release j3 差 [0.09, 0.79, 0.8, 0.18, -0.18, 0.0] 送り直し None
  53.00s release j3 差 [0.09, 0.7, 0.62, -8.26, 1.06, 0.0] 送り直し None
  57.13s released_while_sending j3 差 [-0.09, 0.0, 0.0, 3.34, -0.44, 0.0] 送り直し None
  63.53s hold_not_sent j4 差 [0.09, 0.61, 0.44, 0.0, -0.36, 0.0] 送り直し None
  66.90s release j4 差 [0.18, 0.88, 0.69, 0.0, 8.27, 0.0] 送り直し None
  80.04s release j5 差 [0.18, 1.14, 0.88, 0.18, 0.53, -14.67] 送り直し None
  83.05s release j5 差 [0.0, 0.0, 0.0, 0.0, 0.0, 8.52] 送り直し None
  91.19s release j2 差 [0.0, -0.17, -11.51, 0.09, -0.62, -0.09] 送り直し None
  94.10s release j2 差 [0.18, 0.88, 7.37, 0.0, 1.41, 0.0] 送り直し None
  99.86s release j1 差 [0.09, -4.92, 0.0, -0.08, -1.05, 0.0] 送り直し None
 101.91s release j1 差 [-0.09, 15.3, 0.0, 0.0, 0.09, 0.0] 送り直し None
 105.25s release j1 差 [0.09, 3.87, 0.8, 0.0, 1.58, -0.09] 送り直し None
 107.62s release j0 差 [-10.02, 0.97, 0.62, 0.96, 1.23, 0.0] 送り直し None
 114.00s release j0 差 [4.13, 1.15, 0.88, -0.88, 1.5, 0.0] 送り直し None
 120.80s release j0 差 [0.71, 1.15, 0.79, -0.36, 1.41, -0.09] 送り直し None
 125.34s release j1 差 [0.18, -7.82, 0.44, 0.0, 0.17, 0.0] 送り直し None
 128.58s release j1 差 [-0.09, 9.4, 0.62, 0.17, 1.31, 0.0] 送り直し None
 133.66s release j0 差 [4.92, 1.14, 0.62, -0.27, 1.41, -0.09] 送り直し None
 138.42s release j4 差 [0.0, 1.14, 0.44, 0.09, -0.97, 0.0] 送り直し None
 141.40s release j4 差 [0.0, 1.23, 0.62, 0.09, -10.9, 0.0] 送り直し None
 144.21s release j0 差 [11.25, 0.0, 0.0, -0.79, 0.0, 0.0] 送り直し None
 146.64s release j0 差 [-6.68, 1.14, 0.61, 0.35, 1.59, 0.0] 送り直し None
 201.64s release j4 差 [0.0, 0.79, 0.79, 0.0, -0.52, 0.0] 送り直し None
-- 受付なし 13 回. そのとき動いていた仕事: {'move': 2, 'halt': 5, 'move(長押し)': 6}
```


## 17:08 押した瞬間には送らず、離したら1刻み・押し続けたら長押しのどちらかだけを送る形にした（受付なし 13回→0回）

残っていたのは、十字キーの向きを変えたときの細かい動きです。今までは、押すとまず1°動き、0.4秒押し続けたら長押しの動きに変わっていたので、向きを変えるたびに、1°動いて少し止まってから動き出す形になっていました。さらに、前の長押しを止める処理と重なると、押した瞬間の1回が受付なしになっていました。

- 押した瞬間には送らない。0.4秒より前に離せば1刻み、押し続ければ長押しの、どちらか片方だけを送る（commit 452a3b6）
- 動いている最中に押した十字キーは捨てず、前の動きや止める処理が終わってから送る。何回か押したときは最後の1回だけで、1秒以内に送れなければ捨てる（あとから急に動かさないため）。爪と HOME は今までどおり、動いている間は受付なし

そのかわり、短く押したときは離した瞬間に動くので、今までより0.1〜0.2秒遅れて動き出します。最後の記録では受付なしが0回になり、1回押しの待ちは中央の値で0.17秒でした。1回だけ、1回押しが7.75秒かかった場面が残っています（j1 の2°押しで、最初の送信から送り直しまで約7秒あいていた。原因はまだ調べていない）。

#### teleop_20261105_171125 を1回押しと止める処理ごとに並べた出力

```text
== teleop_20261105_171125  行 235
-- 1 回押し: 送った量と, 動かした関節が動いた量
  30.78s j1 +1° → 動いた 2.02° ほかの関節の最大の変化 1.05° 手前で止まった 待ち 0.59秒 送り直し 0回
  31.46s j1 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  32.00s j1 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.03秒 送り直し 0回
  34.30s j1 +2° → 動いた 0.0° ほかの関節の最大の変化 1.84° 動かなかった 待ち 7.75秒 送り直し 2回
  42.25s j1 -1° → 動いた 0.88° ほかの関節の最大の変化 0.35° 手前で止まった 待ち 0.3秒 送り直し 0回
  44.90s j2 -1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 動かなかった 待ち 1.02秒 送り直し 2回
  46.01s j2 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  46.93s j2 +1° → 動いた 1.49° ほかの関節の最大の変化 0.0° 届いた 待ち 0.17秒 送り直し 0回
  48.05s j2 +1° → 動いた 0.35° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  48.89s j2 +1° → 動いた 0.0° ほかの関節の最大の変化 0.0° 届いた 待ち 0.02秒 送り直し 0回
  50.04s j2 +2° → 動いた 1.58° ほかの関節の最大の変化 0.0° 届いた 待ち 0.16秒 送り直し 0回
  50.95s j2 +2° → 動いた 1.5° ほかの関節の最大の変化 0.0° 届いた 待ち 0.17秒 送り直し 0回
  52.14s j2 +2° → 動いた 1.49° ほかの関節の最大の変化 0.0° 届いた 待ち 0.16秒 送り直し 0回
  53.18s j2 +2° → 動いた 2.02° ほかの関節の最大の変化 0.0° 手前で止まった 待ち 0.6秒 送り直し 0回
-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)
   3.06s release j0 差 [-9.84, 0.0, 0.0, 0.0, 0.0, 0.0] 送り直し None
   6.72s release j0 差 [15.11, 0.97, 0.88, -0.09, 1.49, 0.0] 送り直し None
  10.85s release j2 差 [0.0, 0.18, -4.04, 0.0, 0.61, 0.0] 送り直し None
  13.29s release j2 差 [0.0, 0.96, 3.6, 0.0, 1.5, 0.0] 送り直し None
  17.58s release j4 差 [0.0, 0.79, 0.71, 0.0, 8.7, 0.0] 送り直し None
  22.03s release j4 差 [0.0, 0.96, 0.87, 0.0, 1.23, 0.0] 送り直し None
  26.51s release j1 差 [0.0, -4.04, -0.09, 0.0, -0.35, 0.0] 送り直し None
  29.95s release j1 差 [-0.08, 2.11, 0.96, 0.0, 1.76, 0.0] 送り直し None
  56.94s release j0 差 [-3.87, 1.14, 0.35, 0.97, 1.4, 0.17] 送り直し None
  60.59s release j0 差 [6.95, 1.05, 0.44, -0.62, 1.23, -0.08] 送り直し None
 257.83s controller_disconnected jNone 差 [-0.09, 1.05, 0.79, 0.09, 1.48, 0.0] 送り直し None
-- 受付なし 0 回. そのとき動いていた仕事: {}
```


## 7本の記録を同じ数え方で並べた表

#### 7本の記録の比べ（src/teleop_stats.py の出力）

```markdown
| 記録 | 行 | 1回押し 送った | 動かした関節が0.3°以上動いた | 受付なし | 止める | 長押しの目標を送った回数 | 1回押しの待ち 中央/最大(秒) | 起動時と終わりの j1 |
|---|---|---|---|---|---|---|---|---|
| 160038 | 376 | 30 | 4 | 4 | 29 | 103 | 0.02 / 0.34 | +4.83 → +37.00 |
| 161347 | 118 | 12 | 7 | 10 | 6 | 16 | 1.73 / 8.11 | +40.07 → +46.75 |
| 162224 | 86 | 10 | 6 | 22 | 2 | 15 | 2.79 / 8.85 | +1.58 → +2.98 |
| 163144 | 326 | 29 | 20 | 40 | 12 | 84 | 2.79 / 13.00 | +1.49 → +1.14 |
| 163620 | 386 | 48 | 27 | 28 | 22 | 104 | 0.18 / 5.59 | +1.14 → +2.54 |
| 170313 | 549 | 52 | 32 | 13 | 28 | 138 | 0.34 / 1.27 | +1.31 → +2.54 |
| 171125 | 235 | 14 | 8 | 0 | 11 | 58 | 0.17 / 7.75 | +1.49 → +30.67 |
```

1回押しの「動いた」は、動かした関節が0.3°以上動いた回数です。最後の記録の j1 が30.67°で終わっているのは、j1 を長押しで動かしたためで、ずれではありません。


## なめらかさは speed 20 以上でしか出ないが、修正に使うには足りている

送り方をいろいろ変えても、mechArm 270 のサーボはゆっくり動かすと0.2秒ごとに進んで止まります。長押しで大きく運び、1回押しの1°・2°で合わせる形なら、AI の動きを直す道具としては足りていると判断しました。

【図解】LOG446_hold_and_step.html


## 次に確かめること

| 順番 | 確かめること | 見る数字 |
|---|---|---|
| 1 | π0.5 の実機推論で失敗しかけたところを、このゲームパッドで直す | 1回の直しにかかった時間・直した回数 |
| 2 | daemon の読み直しを速くしたあと、推論の動きの合間が短くなったか | 推論の1回の送信の返り・1つの動作にかかる時間 |
| 3 | 1回押しが7秒以上かかった場面の原因 | その送信の前後の daemon のログ |
| 4 | 十字キーの右で根元がどちらに回るか（今は右がプラス）を決める | ― |


## 18:00 LinkedIn の自動投稿のトークンを作り直した

この回の SNS を予約したとき、LinkedIn の自動投稿に使うトークン（投稿してよいという合図の文字列）が12月23日ごろに切れることが分かりました。トークンは60日で切れます（2026-10-24 に作ったもの）。そのままだと、それより後に予約した LinkedIn の投稿（この回の分は2027年1月6日）は出ません。そこで、この場で作り直しました。

| 順番 | やったこと | だれが |
|---|---|---|
| 1 | LinkedIn の開発者ページ（[LinkedIn Developers](https://www.linkedin.com/developers/apps)）で、App「Pixels to Motors Autopost」の OAuth Token Tools を開き、scope に `openid`・`profile`・`w_member_social` を選んでトークンを作った | 人 |
| 2 | トークンを KIOXIA の `keys/linkedin_token.txt` に保存した（チャットには貼らない） | 人 |
| 3 | 中身を画面に出さずに、LinkedIn の `https://api.linkedin.com/v2/userinfo` に問い合わせ、使えることを確かめた | Claude |
| 4 | GitHub の r2r2r-content の Actions の Secret `LINKEDIN_ACCESS_TOKEN` を、ブラウザで上書きした（Update secret） | 人 |
| 5 | 次に切れる前の 2026-12-31 10:00 に、作り直しのリマインダーを予約した | Claude |

4は、はじめ Claude が代わりにやるつもりでしたが、Claude の作業環境から GitHub へつなぐ経路では、Actions の Secret をさわれない決まりになっていました。そのときの返事です（トークンの中身は出していません）。

#### Claude の作業環境から Secret を上書きしようとしたときの返事

```text
failed to fetch public key: HTTP 403: Access to this GitHub Actions path is not permitted through this proxy. (https://api.github.com/repos/PixelstoMotors/r2r2r-content/actions/secrets/public-key)
```

#### トークンが使えるかを確かめたときの出力

```text
トークンは有効 True
```

次にトークンが切れるのは2027年1月4日ごろです。作り直しは、上の1・2・4を人がブラウザで行い、3を Claude が確かめる形になります。


## この回のコード（全文）

### gamepad_teleop.py（commit 452a3b6）

#### tools/gamepad_teleop.py

```python
#!/usr/bin/env python3
"""gamepad_teleop.py — ゲームパッドで mechArm 270 を手で動かす (依頼 68. 2026-11-02)

PICK で爪の位置がずれたときに, エイイチがゲームパッドで左右・上げ下げ・爪の開閉を直す.
押した分だけそのまま動く. 自動で動く要素は入れない (自動の握り直し・失敗時の自動 HOME などはない).
押した操作と, 送った角度・届いた角度をすべて log.jsonl に残す (あとで「人が直した記録」として使う).

操作 (エイイチが決めた. 変えない):
  十字キー 左 / 右 (13 / 14)  j0 を 1° ずつ (2026-11-03 に 0.5° から変えた. 0.5° ではサーボが反応しなかった). どの関節を選んでいても いつも j0
                              (向き: 左 = J0_LEFT_SIGN. 依頼に向きの指定がないので, 右 = +, 左 = − にしてある)
  十字キー 上 / 下 (11 / 12)  選んでいる関節を 1° ずつ. 上 = −, 下 = +. 始めは j1
  十字キーの長押し            押している間, 止めずに動かし続ける. 短く押せば 1 刻み.
                              (2026-11-05: 押した瞬間には送らない. 0.4 秒より前に離せば 1 刻み, 押し続ければ長押しの
                              どちらか片方だけを送る. 動いている間に押した十字キーは, 最後の 1 つだけ 終わってから送る)
                              (2026-11-05 作り直し. 3° 先を 0.1 秒おきに送り直す形はカクついた. jog_probe の 3 回の実機で,
                              送り直すたびに加速からやり直すこと, ゆっくりの速さではどの命令も 0.2 秒ごとに止まることが分かった)
                              押して HOLD_START_SEC (0.4 秒) たっても押していれば, 「いま読んだ角度から HOLD_AHEAD_DEG (15°) 先」を
                              speed 20 (毎秒約 40°) で 1 回だけ送り, アーム自身の加速・減速で動かす. HOLD_INTERVAL_SEC (0.1 秒) おきに
                              角度を読み, 目標まで残り HOLD_REFILL_DEG (5°) 以下になったら次の 15° 先を送る.
                              離したら daemon の stop (jog_stop と stop) を送って, その場で止める (行きすぎは実機で約 3°).
                              stop が届かなくても, アームは送ってある目標 (最大 15° 先) で止まる.
                              長押しの送信では届いたかを待たない.
                              R1 は短い押しの刻み (2°) にだけ効く. 長押しの速さは speed で決まる (20 のまま).
                              離したら, 送ると決める前の送信は取り消す.
                              押し始めに受け付けられなかった押し (動いている間・停止中) は, 押し続けても長押しにしない.
                              離した合図を取りこぼしても止まるよう, 毎コマ コントローラーのボタンの状態も見る.
                              HOLD_STALL_SEC (1 秒) のあいだ動かした関節が進んでいなければ, その長押しは止める (当たっているなど).
                              離す・L2+R2・範囲の端・△・ほかのボタン・接続が切れる で長押しは止まる
  △ (3)                       上下で動かす関節を切り替える: j1 → j2 → j3 → j4 → j5 → j1
  R1 (10) を押しながら        1 回 2° ずつ (十字キーの左右・上下とも)
  × (0) / ○ (1)              爪を閉じる / 開く
  HOME (5) を 1 秒長押し      HOME [0, 0, 0, 0, 0, -30] に戻る. 1 秒続けて押したときに 1 回だけ送る
  L2 と R2 (軸 4・5) の両方が 0.0 を超えたとき  停止. 以後の動く操作を受け付けない. OPTIONS (6) で再開
                              2026-11-05 から, 停止のときも daemon の stop を送り, 動いている途中の動き (HOME を含む) も止める
  ほかのボタン (□・SHARE・L1・L3・R3・タッチパッド・スティック) は何もしない

守り:
  - j1 は 90.87 (arm_kinematics.md の PICK_J1_FIXED) を超える指令を送らない
    (fk_lookup.J1_SAFE_MAX = 88.0 は別の用途の値なので, ここでは使わない)
  - 各関節は物理可動域 (wr.JOINT_LIMITS) まで. j4 は J4_SAFE (−90〜+60)
    (基準の姿勢から j0 ±15°・j1〜j5 ±10° の枠は 2026-11-03 にやめた. HOME から手でブロックの上まで運ぶため)
  - 範囲で切られたら理由を画面とログに出す. 別の関節で補わない
  - HOME だけは範囲の検査を通さずに送れる (run_policy_client.py の h と同じ扱い)

送り方:
  - 十字キー (1 刻み・長押し) は, 動かす関節だけを send_angle で送る (2026-11-05. ほかの関節には指令を送らない).
    HOME は send_angles で 6 関節. send_coords は使わない. speed 20 (j0_sweep_scan.SPEED)
  - 1 回押すごとに目標を 1 つ作って送り, 3° 以内に届いたかを読んで確かめる.
    送った指令が無視されることがある (どの関節も動かない. 2026-11-03 の実機で 3 回, 8 秒止まった.
    waypoint_replay.py の「単発は無視されるが, 打ち直せば通る」と同じ). 送ってから IGNORED_CHECK_SEC
    (0.5 秒) たっても, 届いておらず, どの関節も IGNORED_MOVE_DEG (0.3°) 動いていなければ, 同じ目標を
    送り直す (IGNORED_MAX_RESENDS 回まで). 送り直しも SendGate の中で行うので, 停止のあとは送らない
  - 送ってから届くまで (または待ちの上限まで) と, 爪のあとの GRIPPER_SLEEP の間は
    次の動く操作を受け付けない (ためない). 停止はいつでも受け付ける
    (送る仕事は別のスレッドで行い, 画面とコントローラーの読み取りは止めない)
  - 停止が入ったあとは新しい指令を送らない. 動いている途中の動きは daemon の stop で止める
    (2026-11-05 に daemon へ stop を足した. tools/daemon_add_stop.sh. stop のない古い daemon なら,
    今の角度へ send_angles して止める. ただしこれは実機で効かない回があった)

1 回の出発点 (2026-11-05 に関節ごとにした):
  関節ごとに, 直前の指令と送る前に読んだ角度が 3° 以内なら 指令, 離れていれば 読んだ角度 (start_pose).
  動かす関節は, 直前の指令に届いていなければ 読んだ角度.
  長押しを止めたあとは何も送らない. 止まった関節だけ止まった角度を指令にし, ほかの関節の指令は変えない
  (重さで下がった分を出発点にすると, 止めるたびにずれが積み上がった. 下がった j1 を指令へ送り直す形は,
   届かない指令のせいで次の指令が無視されやすくなったので 11/5 16:13 にやめた).
  動かさない関節は, 指令と読んだ角度が 10° 以内なら指令のまま (START_FALLBACK_DEG).
  1 刻みの「届いた」は, 動かした関節だけを見て 0.5° 以内 (STEP_REACH_TOL_DEG). 動かなければ 3 回まで送り直し, それでも動かなければ戻る.
  長押しで目標の手前で止まったら, 0.3 秒で同じ目標を送り直す (3 回まで).
  (以前の説明: 直前に送った目標に届いていて, 送る前に読んだ角度とも 3° 以内なら その目標. そうでなければ 読んだ角度.)
  (j1 の重さによる 2〜3° の不足があっても, 0.5° の刻みが読んだ値に引きずられないように.
   手で動かされたなど 3° を超えて離れていたら, 古い目標から大きく動かさない)
  出発点の 6 関節のどれかが範囲の外なら送らない (範囲の端へ切って 1 回で大きく動かさない).

停止と送信の順番 (codex R1):
  「送ると決める」と「停止・終了の取り消し」を 仕事ごとの鍵 (SendGate) で並べる (codex R1・R2).
  停止のあとに送ると決める指令はない. 停止は待たされない (画面も止まらない). 停止より前に決めた送信は
  通信の上限 SEND_RPC_TIMEOUT_SEC (8 秒) の中で終わる. 止める前に作った仕事は OPTIONS で再開しても生き返らない.
  1 コマの中では L2+R2 と読み取りの失敗を ボタンより先に見る. 送ったあと確かめる途中で関節角を
  読めなければ停止にする. log.jsonl に書けなくなったら停止し, 再開させない.

終わり方:
  Ctrl+C / ウィンドウを閉じる. 新しい指令は送らずに終わる. アームは動かさない
  (HOME 復帰もサーボ解放もしない. run_policy_client.py の finally と同じ)

Usage:
  python3 tools/gamepad_teleop.py              # ドライラン (daemon にもアームにも触らない. HOME から始まる仮の姿勢)
  python3 tools/gamepad_teleop.py --execute    # daemon に送る

記録 (--execute のときだけ): /Volumes/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop/{run_stem}/
      log.jsonl (押した操作 1 つにつき 1 行) / meta.json / gamepad_teleop.py (使ったスクリプトの写し)
      通しの完走ではないので台帳には書かない.
      ドライランは記録しない (KIOXIA に何も書かない・フォルダも作らない. KIOXIA がなくても動く. 依頼 69)

読み込み (依頼 69):
  run_policy_client・j0_sweep_scan・visual_servo_pick は cv2 を読み, cv2 は自分の libSDL2
  (site-packages/cv2/.dylibs/) を持っている. pygame の libSDL2 と 2 つ入ると objc の
  「Class SDLApplication is implemented in both ...」が十数行出る. なのでこの 3 つは --execute のときだけ
  load_daemon_modules() で読む (ドライランでは cv2 も daemon の送り口も読まない).
  ドライランでも要る値 (HOME・J4_SAFE・GRIPPER_SLEEP・物理可動域) は, 読み込まずに元のファイルの
  代入から読む (二重に書かない). --execute で読んだあと, 読み込んだ値と同じかを確かめる.
  --execute では cv2 を読むので 警告は今までどおり出る (動きには影響なし).
"""
import argparse
import ast
import hashlib
import json
import os
import platform
import queue
import shutil
import subprocess
import sys
import threading
import time
from datetime import datetime
from pathlib import Path

# ウィンドウが手前にないときもコントローラーの入力を受け取る (gamepad_check.py と同じ)
os.environ.setdefault("SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS", "1")
os.environ.setdefault("PYGAME_HIDE_SUPPORT_PROMPT", "1")

import numpy as np  # noqa: E402
import pygame  # noqa: E402

_HERE = Path(__file__).resolve().parent
_ROOT = _HERE.parent
sys.path.insert(0, str(_ROOT / "pi05"))
_RPC_PATH = _ROOT / "pi05" / "run_policy_client.py"
_WR_PATH = _ROOT / "dynamic_tracking_limits" / "drag_teaching" / "waypoint_replay.py"


def read_constants(path, names):
    """path を読み込まずに (実行せずに), 一番外の `名前 = 値` の値を読む. 1 回だけ代入されている名前に限る.
    ファイルのどこかで ほかの形 (+= ・型注釈つき・連鎖・for・global の中など) で同じ名前に代入していれば止める
    (--execute では読み込んだ値とも比べる)."""
    found = {}
    tree = ast.parse(Path(path).read_text(encoding="utf-8"))
    simple = set()
    for node in tree.body:
        if isinstance(node, ast.Assign) and len(node.targets) == 1 and isinstance(node.targets[0], ast.Name):
            name = node.targets[0].id
            if name in names:
                if name in found:
                    raise RuntimeError(f"{path} で {name} が 2 回代入されています")
                found[name] = ast.literal_eval(node.value)
                simple.add(id(node.targets[0]))
    for node in ast.walk(tree):
        if (isinstance(node, ast.Name) and node.id in names and isinstance(node.ctx, (ast.Store, ast.Del))
                and id(node) not in simple):
            raise RuntimeError(f"{path} で {node.id} がほかの形でも代入されています (行 {node.lineno})")
    missing = [n for n in names if n not in found]
    if missing:
        raise RuntimeError(f"{path} に {missing} が見つかりません")
    return found


# 爪 (gripper_cmd)・HOME・J4_SAFE・関節角の読み方 (read_angles) は run_policy_client と同じものを使う.
# daemon の送り口と run_policy_client は --execute のときだけ load_daemon_modules() で読む (cv2 の SDL を避ける)
_RPC_CONST = read_constants(_RPC_PATH, ("HOME", "J4_SAFE", "GRIPPER_SLEEP"))
_WR_CONST = read_constants(_WR_PATH, ("JOINT_LIMITS",))
rpc = None
wr = None
SPEED = POLL_SLEEP = REACH_TIMEOUT_SEC = None     # j0_sweep_scan の 20 / 0.3 / 8.0 (--execute で読む)
close_daemon_socket = daemon_send_angles = daemon_set_gripper = daemon_set_gripper_value = get_daemon_socket = None
daemon_request = None


def load_daemon_modules():
    """--execute のときだけ呼ぶ. run_policy_client (パスと pymycobot のスタブも入る)・j0_sweep_scan・
    visual_servo_pick の daemon の送り口を読む. 2 回目からは何もしない.
    読み込まずに読んだ値 (HOME・J4_SAFE・GRIPPER_SLEEP・JOINT_LIMITS) と違えば止める."""
    global rpc, wr, SPEED, POLL_SLEEP, REACH_TIMEOUT_SEC
    global close_daemon_socket, daemon_send_angles, daemon_set_gripper, daemon_set_gripper_value, get_daemon_socket
    global daemon_request
    if rpc is not None:
        return
    import run_policy_client as _rpc
    import j0_sweep_scan as _j0
    import visual_servo_pick as _vsp
    pairs = (("HOME", _rpc.HOME, HOME), ("J4_SAFE", _rpc.J4_SAFE, J4_SAFE),
             ("GRIPPER_SLEEP", _rpc.GRIPPER_SLEEP, GRIPPER_SLEEP), ("JOINT_LIMITS", _rpc.wr.JOINT_LIMITS, JOINT_LIMITS))
    diff = [n for n, loaded, read in pairs if _norm(loaded) != _norm(read)]
    if diff:
        raise RuntimeError(f"読み込んだ値がファイルから読んだ値と違います: {diff}")
    SPEED, POLL_SLEEP, REACH_TIMEOUT_SEC = _j0.SPEED, _j0.POLL_SLEEP, _j0.REACH_TIMEOUT_SEC
    close_daemon_socket, daemon_send_angles = _vsp.close_daemon_socket, _vsp.daemon_send_angles
    daemon_set_gripper, daemon_set_gripper_value = _vsp.daemon_set_gripper, _vsp.daemon_set_gripper_value
    get_daemon_socket = _vsp.get_daemon_socket
    daemon_request = _vsp._daemon_request
    wr = _rpc.wr
    rpc = _rpc


def _norm(v):
    if isinstance(v, (list, tuple)):
        return [_norm(x) for x in v]
    return float(v)


# ---- ボタンと軸 (/Volumes/KIOXIA/r2r2r-data/diag/gamepad_check_20261102/ で確かめた番号) ----
BTN_CROSS = 0
BTN_CIRCLE = 1
BTN_SQUARE = 2
BTN_TRIANGLE = 3
BTN_SHARE = 4
BTN_HOME = 5
BTN_OPTIONS = 6
BTN_L3 = 7
BTN_R3 = 8
BTN_L1 = 9
BTN_R1 = 10
BTN_UP = 11
BTN_DOWN = 12
BTN_LEFT = 13
BTN_RIGHT = 14
BTN_TOUCHPAD = 15
BUTTON_NAMES = {
    BTN_CROSS: "cross", BTN_CIRCLE: "circle", BTN_SQUARE: "square", BTN_TRIANGLE: "triangle",
    BTN_SHARE: "share", BTN_HOME: "home", BTN_OPTIONS: "options", BTN_L3: "l3", BTN_R3: "r3",
    BTN_L1: "l1", BTN_R1: "r1", BTN_UP: "dpad_up", BTN_DOWN: "dpad_down", BTN_LEFT: "dpad_left",
    BTN_RIGHT: "dpad_right", BTN_TOUCHPAD: "touchpad",
}
AXIS_L2 = 4
AXIS_R2 = 5
TRIGGER_STOP_ABOVE = 0.0      # L2 と R2 の両方がこれを超えたら停止 (離して -1.0, 押し込んで +1.0)

# ---- 動かし方 ----
STEP_FINE_DEG = 1.0            # 2026-11-03: 0.5° はサーボが反応しなかった (読んだ角度が変わらない). 1° にした
STEP_COARSE_DEG = 2.0          # R1 を押しながら
J0_LEFT_SIGN = -1.0            # 十字キー左で j0 を動かす向き (右はその逆). 依頼に向きの指定がない
UP_SIGN = -1.0                 # 十字キー上 = −, 下 = + (PICK の上空 → 床で j1・j2・j4 が増える向き)
SELECT_ORDER = (1, 2, 3, 4, 5)  # △ で回す順. 始めは j1
HOME_HOLD_SEC = 1.0
HOME = [float(v) for v in _RPC_CONST["HOME"]]   # [0, 0, 0, 0, 0, -30]

# ---- 守り ----
J1_MAX_DEG = 90.87             # arm_kinematics.md の PICK_J1_FIXED (エイイチと決めた. J1_SAFE_MAX 88 は使わない)
J4_SAFE = tuple(float(v) for v in _RPC_CONST["J4_SAFE"])   # (-90, 60)
JOINT_LIMITS = [tuple(float(v) for v in lim) for lim in _WR_CONST["JOINT_LIMITS"]]   # 物理可動域 (wr.JOINT_LIMITS)
GRIPPER_SLEEP = float(_RPC_CONST["GRIPPER_SLEEP"])   # 爪のあとの待ち (rpc.GRIPPER_SLEEP. ドライランと画面の表示で使う)
LIMIT_EPS_DEG = 1e-6
REACH_TOL_DEG = 3.0            # 届いたかの判定 (推論の到着確認と同じ 3°)
STEP_REACH_TOL_DEG = 0.5       # 1 刻み (1°・2°) で, 動かした関節が届いたかの判定 (2026-11-05. 3° では動かなくても「届いた」になり,
                               # 1° と 2° の違いが出なかった. 実機の記録で 1 刻みの 30 回中 23 回は 1 ° も動いていなかった)

# ---- 長押し (2026-11-03) ----
HOLD_START_SEC = 0.4           # 押してからこれだけたっても押していれば, 長押しとして送り続ける
STEP_PENDING_MAX_SEC = 1.0     # 離したときの 1 刻みを, 前の仕事が終わるまで待つ上限 (古い押しを後から動かさない)
HOLD_INTERVAL_SEC = 0.1        # 長押しで目標を送り直す間隔
HOLD_AHEAD_DEG = 15.0          # 長押しの目標 = 読んだ角度からこれだけ先 (2026-11-05 に 3 → 15. 離すと stop で止める)
HOLD_REFILL_DEG = 5.0          # 目標まで残りがこれ以下になったら次の目標を送る (送るたびに加速からやり直すので, 送る回数を減らす)
HALT_SETTLE_SEC = 0.1          # stop を送ってから角度を読むまで (11/5 に 0.3 → 0.1. 止める間に押した操作が受付なしになっていた)
STEP_POLL_SEC = 0.05           # 1 刻みで角度を読む間隔 (11/5. 0.3 秒おきでは, 届いたと分かるまで毎回 0.3 秒以上かかった)
STEP_SETTLE_SEC = 0.25         # 1 刻みで動き出したあと, これだけ角度が変わらなければ「止まった」として戻る
                               # (重さで 1〜2° 手前で止まる関節で, 届くのを 8 秒待って受付なしが続いた)
STEP_IGNORED_CHECK_SEC = 0.3   # 1 刻みで動き出さなければ送り直すまで (6 関節の送り方の 0.5 秒より短く)
STEP_MAX_RESENDS = 2           # 1 刻みの送り直しの上限 (動かないときに 3 秒近く待たないように)
HOLD_STALL_SEC = 1.5           # このあいだ動かした関節が HOLD_STALL_DEG 進んでいなければ, 長押しを止める (11/5 に 1.0 → 1.5. 送り直す間を持たせる)
HOLD_RESEND_AFTER_SEC = 0.3    # 長押しで目標の手前で止まったら (この時間たっても前の読みから動いていない), 同じ目標を送り直す
HOLD_MAX_RESENDS = 3           # 1 つの目標を送り直す回数の上限
START_FALLBACK_DEG = 10.0      # 動かさない関節は, 指令と読んだ角度がこれより離れていなければ 指令のまま (重さで 3〜6° 下がるのを拾わない)
HOLD_STALL_DEG = 0.3
DRY_HOLD_MAX_DEG = 1.5         # ドライランの長押しで 1 回読むごとに目標へ寄せる量 (0.1 秒おきに読むので 15°/秒 のつもり)

# ---- 無視された指令の送り直し (2026-11-03) ----
IGNORED_CHECK_SEC = 0.5        # 送ってからこれだけたっても動いていなければ, 無視されたとみなす
IGNORED_MOVE_DEG = 0.3         # どの関節もこれより動いていなければ「動いていない」
IGNORED_MAX_RESENDS = 3        # 送り直す回数の上限

DRY_MOVE_SEC = 0.3             # ドライランで「動いている」状態を見せる時間
SEND_RPC_TIMEOUT_SEC = 8.0     # send_angles 1 回の通信 (接続・ping・送信・返事) の上限. 通信が詰まった
                               # 送信が 停止のずっとあとに届かないように (daemon の返事は送信後の読み直し込みで最長 3.7 秒. LOG352)
WORKER_JOIN_SEC = 12.0         # 終わるとき, 送っている途中の仕事が戻るのを待つ上限 (読み取り 1 回は最長 3.7 秒)

DATA_ROOT = Path("/Volumes/KIOXIA/r2r2r-data")
LOG_ROOT = DATA_ROOT / "runs" / "experiments" / "gamepad_teleop"
SSD_MOUNT = "/Volumes/KIOXIA"

STATE_IDLE = "IDLE"
STATE_MOVING = "MOVING"
STATE_STOPPED = "STOPPED"


def ensure_ssd_mounted():
    if not os.path.ismount(SSD_MOUNT):
        sys.exit("[ABORT] KIOXIA がマウントされていません。記録をローカルには逃がさず、ここで止めます。")


def _r(a):
    return None if a is None else [round(float(v), 2) for v in a]


def _fmt(a):
    return "None" if a is None else " ".join(f"{float(v):+.2f}" for v in a)


# =============================================================================
# 守り (純関数. テストで直接呼ぶ)
# =============================================================================

def joint_window():
    """各関節に送ってよい範囲 (lo, hi, 各端の出どころ) を作る.
    出どころ: PHYS (物理可動域) / J4_SAFE / J1_MAX. 狭い方が勝つ."""
    lo, hi, lo_src, hi_src = [], [], [], []
    for k in range(6):
        cands_lo = [(JOINT_LIMITS[k][0], "PHYS")]
        cands_hi = [(JOINT_LIMITS[k][1], "PHYS")]
        if k == 4:
            cands_lo.append((J4_SAFE[0], "J4_SAFE"))
            cands_hi.append((J4_SAFE[1], "J4_SAFE"))
        if k == 1:
            cands_hi.append((J1_MAX_DEG, "J1_MAX"))
        v_lo, s_lo = max(cands_lo, key=lambda c: c[0])
        v_hi, s_hi = min(cands_hi, key=lambda c: c[0])
        lo.append(v_lo); hi.append(v_hi); lo_src.append(s_lo); hi_src.append(s_hi)
    return np.array(lo), np.array(hi), lo_src, hi_src


LIMIT_JA = {"PHYS": "物理可動域", "J4_SAFE": "J4_SAFE",
            "J1_MAX": "j1 の上限 90.87 (PICK_J1_FIXED)"}


def start_pose(cmd, measured):
    """次の出発点: 関節ごとに, 指令と読んだ角度が START_FALLBACK_DEG (10°) 以内なら指令, 離れていれば読んだ角度.
    (11/5: 3° にしていたら, 腕を伸ばした姿勢で j1 が重さで 3〜6° 下がり, 読んだ角度を拾ってずれが積み上がった)
    (重さで 1〜2° 沈んだ分を読んだ角度でなぞると, 送るたびにずれが積み上がる. 2026-11-05.
     手で動かされた・止められたなど 3° より離れていれば, 古い指令から大きく動かさない)"""
    cmd = np.asarray(cmd, dtype=float)
    q = np.asarray(measured, dtype=float)
    return np.where(np.abs(cmd - q) <= START_FALLBACK_DEG, cmd, q)


def plan_step(start, joint, delta):
    """start (今回の出発点) の joint を delta 動かした目標を作り, 範囲を通す.

    戻り値 dict:
      target   送る目標 (6) or None (送らない)
      clip     切られた中身 [{joint, want, cmd, limit, bound}] (切られて端まで送るとき)
      refused  送らない理由 [{joint, value, limit, lo, hi, ...}] (空なら送ってよい)
    動かした関節は範囲の端で切る (端までは送る). 端にいて押した向きに 1 ° も進めないときは送らない.
    ほかの関節は変えない (補わない). 6 関節のどれかが範囲の外なら送らない.
    """
    lo, hi, lo_src, hi_src = joint_window()
    want = np.asarray(start, dtype=float)[:6].copy()
    out = {"target": None, "clip": [], "refused": []}
    if not np.all(np.isfinite(want)):
        out["refused"].append({"joint": None, "why": "nonfinite_start", "value": _r(want)})
        return out
    # 出発点の 6 関節がどれか範囲の外なら送らない (切ってから送ると, 範囲の外から 1 回で
    # 刻みより大きく動く. 例: j1=100 から −0.5 を押すと 90.87 へ −9.13° になる. codex 必須 2)
    for k in range(6):
        if want[k] < lo[k] - LIMIT_EPS_DEG or want[k] > hi[k] + LIMIT_EPS_DEG:
            src = hi_src[k] if want[k] > hi[k] else lo_src[k]
            out["refused"].append({"joint": k, "why": "start_out_of_window", "value": round(want[k], 2),
                                   "lo": round(lo[k], 2), "hi": round(hi[k], 2), "limit": src})
    if out["refused"]:
        return out
    v = want[joint] + delta
    if lo[joint] > hi[joint]:
        out["refused"].append({"joint": joint, "why": "empty_window", "value": round(v, 2),
                               "lo": round(lo[joint], 2), "hi": round(hi[joint], 2),
                               "limit": f"{lo_src[joint]}/{hi_src[joint]}"})
        return out
    c = min(max(v, lo[joint]), hi[joint])
    if abs(c - v) > LIMIT_EPS_DEG:
        src = hi_src[joint] if v > hi[joint] else lo_src[joint]
        bound = hi[joint] if v > hi[joint] else lo[joint]
        out["clip"].append({"joint": joint, "want": round(v, 2), "cmd": round(c, 2),
                            "limit": src, "bound": round(float(bound), 2)})
    if (c - want[joint]) * np.sign(delta) <= LIMIT_EPS_DEG:
        # 端にいる (または出発点が範囲の外で, 押した向きに進めない)
        src = hi_src[joint] if delta > 0 else lo_src[joint]
        out["refused"].append({"joint": joint, "why": "at_limit", "value": round(v, 2),
                               "lo": round(lo[joint], 2), "hi": round(hi[joint], 2), "limit": src})
        return out
    want[joint] = c
    for k in range(6):
        if want[k] < lo[k] - LIMIT_EPS_DEG or want[k] > hi[k] + LIMIT_EPS_DEG:
            src = hi_src[k] if want[k] > hi[k] else lo_src[k]
            out["refused"].append({"joint": k, "why": "out_of_window", "value": round(want[k], 2),
                                   "lo": round(lo[k], 2), "hi": round(hi[k], 2), "limit": src})
    if not out["refused"]:
        out["target"] = want
    return out


def limit_text_ascii(plan):
    """画面用 (英数字だけ)."""
    parts = []
    for c in plan.get("clip", []):
        parts.append(f"j{c['joint']} clipped {c['want']:+.2f}->{c['cmd']:+.2f} ({c['limit']} {c['bound']:+.2f})")
    for r in plan.get("refused", []):
        if r.get("joint") is None:
            parts.append(f"refused: {r['why']}")
        else:
            parts.append(f"j{r['joint']} refused {r['why']} {r['value']:+.2f} "
                         f"[{r['lo']:+.2f}, {r['hi']:+.2f}] ({r['limit']})")
    return " / ".join(parts)


def limit_text_ja(plan):
    """ターミナル用 (日本語)."""
    parts = []
    for c in plan.get("clip", []):
        parts.append(f"j{c['joint']} を {c['want']:+.2f}° → {c['cmd']:+.2f}° に切った"
                     f"（{LIMIT_JA.get(c['limit'], c['limit'])} {c['bound']:+.2f}°）")
    for r in plan.get("refused", []):
        if r.get("joint") is None:
            parts.append(f"送らない: {r['why']}")
            continue
        why = {"at_limit": "範囲の端にいて、押した向きに進めない",
               "out_of_window": "範囲の外",
               "start_out_of_window": "出発点が範囲の外（HOME の長押しで戻せます）",
               "empty_window": "範囲が空"}.get(r["why"], r["why"])
        parts.append(f"j{r['joint']} {r['value']:+.2f}° は送らない：{why}"
                     f"（範囲 [{r['lo']:+.2f}, {r['hi']:+.2f}]・{LIMIT_JA.get(r['limit'], r['limit'])}）")
    return " / ".join(parts)


# =============================================================================
# アームへの送り口
# =============================================================================

class SendGate:
    """1 つの仕事の「送ると決める」と「停止・終了の取り消し」を順番に並べる鍵 (codex R1 必須 1 / R2).

    送る側は 鍵の中で取り消しを確かめて「送ると決めた」(committed) を立て, 鍵の外で送る.
    停止・終了は 鍵の中で取り消しを立て, そのときに送ると決めていたかを受け取る.
    鍵を持つのは確かめる一瞬だけなので, 停止は待たされない (画面も止まらない).
    なので「停止のあとに送ると決めた指令」はない. 停止より前に決めた送信は, 通信が遅れても
    daemon_send_angles の timeout_override (SEND_RPC_TIMEOUT_SEC) の中で終わる.
    取り消しは仕事ごとに作り, OPTIONS で再開しても戻さない (止める前の仕事が生き返らない).
    """

    def __init__(self):
        self.lock = threading.Lock()
        self.cancel = threading.Event()
        self.committed = False

    def run(self, fn):
        """取り消されていなければ「送ると決めた」を立ててから fn() を呼ぶ. 戻り値: 呼んだか."""
        with self.lock:
            if self.cancel.is_set():
                return False
            self.committed = True
        fn()
        return True

    def cancel_now(self):
        """取り消しを立てる. 戻り値: それより前に送ると決めていたか (送信中・送信済み)."""
        with self.lock:
            self.cancel.set()
            return self.committed


class DaemonArm:
    """--execute: daemon に送る. 送り方・読み方は visual_servo_pick / run_policy_client と同じ."""

    execute = True

    def read(self):
        return rpc.read_angles()          # 5 回まで読み直す. 読めなければ None

    @staticmethod
    def _send(target, joint):
        """joint があれば その関節だけ send_angle で送る (ほかの関節には指令を送らない. 2026-11-05 の jog_probe small で
        12 回中 12 回動き, 動いた量もそろった. 6 関節まとめて送ると, 重さで下がった関節の指令とぶつかって
        ゲームパッドでは動かないことが多かった). joint が None (HOME) なら send_angles で 6 関節."""
        if joint is None:
            return daemon_send_angles([float(v) for v in target], speed=SPEED, wait=rpc.SEND_WAIT,
                                      timeout_override=SEND_RPC_TIMEOUT_SEC)
        resp = daemon_request({"cmd": "send_angle", "joint_id": int(joint) + 1, "angle": float(target[joint]),
                               "speed": SPEED, "wait": rpc.SEND_WAIT}, timeout_override=SEND_RPC_TIMEOUT_SEC)
        if not resp.get("ok"):
            raise RuntimeError(f"send_angle: {resp.get('error')}")
        return resp

    def send_and_check(self, target, gate, quitting, check=True, joint=None):
        """target を send_angles (speed 20) で送り, 3° 以内に届くかを読んで確かめる.
        gate が取り消されていれば送らない. 無視されたら送り直す (IGNORED_*). 確かめる途中で読めなければ error.
        check=False (長押し): 送るだけで, 届いたかは待たない (0.1 秒後に次の目標を送るため)."""
        target = np.asarray(target, dtype=float)
        if not check:
            t_send = time.time()
            try:
                sent = gate.run(lambda: self._send(target, joint))
            except Exception as e:
                return {"sent": "unknown", "error": f"send_failed: {type(e).__name__}: {e}", "t_send": t_send}
            if not sent:
                return {"sent": False, "why": "halted_before_send"}
            return {"sent": True, "reached": None, "no_check": True, "t_send": t_send}
        pre = self.read()
        if pre is None:
            return {"sent": False, "error": "read_failed_before_send"}
        pre_max = float(np.max(np.abs(target - pre)))
        timeout = max(REACH_TIMEOUT_SEC, wr._compute_arrival_timeout(pre_max))
        t_send = time.time()
        try:
            sent = gate.run(lambda: self._send(target, joint))
        except Exception as e:
            # 届いたかどうか分からない. 呼び出し側で停止にする
            return {"sent": "unknown", "error": f"send_failed: {type(e).__name__}: {e}",
                    "measured_before_send": _r(pre), "t_send": t_send}
        if not sent:
            return {"sent": False, "why": "halted_before_send", "measured_before_send": _r(pre)}
        t0 = time.monotonic()
        t_last_send = t0
        last, err = None, None
        step = joint is not None
        check_sec = STEP_IGNORED_CHECK_SEC if step else IGNORED_CHECK_SEC
        max_resends = STEP_MAX_RESENDS if step else IGNORED_MAX_RESENDS
        poll = STEP_POLL_SEC if step else POLL_SLEEP
        q_seen, t_change = None, t0          # 1 刻み: 動かした関節の角度が最後に変わった時刻
        resends = []                      # 送り直した時刻 (送ってからの秒)
        base = {"sent": True, "timeout_sec": round(timeout, 2), "t_send": t_send, "measured_before_send": _r(pre),
                "resends": resends}
        while time.monotonic() - t0 < timeout:
            if quitting.is_set():
                return dict(base, reached=None, interrupted=True, reached_angles=_r(last),
                            reach_err=None if err is None else round(err, 3))
            if gate.cancel.is_set():
                # 停止 (L2+R2) が入った: 届くのを待たずに戻り, すぐに stop を送らせる (2026-11-05 レビュー 必須 1)
                return dict(base, reached=None, halted_during_check=True, reached_angles=_r(last),
                            reach_err=None if err is None else round(err, 3),
                            elapsed_sec=round(time.monotonic() - t0, 2))
            a = self.read()
            if a is None:
                # 動いているはずの間に読めない: 届いたか分からないまま次を受け付けない (codex 必須 6)
                return dict(base, reached=None, reached_angles=_r(last),
                            reach_err=None if err is None else round(err, 3),
                            error="read_failed_during_check", elapsed_sec=round(time.monotonic() - t0, 2))
            last = a
            err = float(np.max(np.abs(a - target)))          # 丸める前の値で判定する (codex 推奨 3)
            err_j = None if joint is None else abs(float(a[joint] - target[joint]))
            # 1 刻みは 動かした関節だけで判定する (ほかの関節は重さで 3〜6° 下がっていても「届いた」にする. 11/5)
            if (err_j <= STEP_REACH_TOL_DEG) if err_j is not None else (err <= REACH_TOL_DEG):
                return dict(base, reached=True, reached_angles=_r(a), reach_err=round(err, 3),
                            elapsed_sec=round(time.monotonic() - t0, 2))
            moved = float(np.max(np.abs(a - pre))) if joint is None else abs(float(a[joint] - pre[joint]))
            if step:
                if q_seen is None or abs(float(a[joint]) - q_seen) > 0.05:
                    q_seen, t_change = float(a[joint]), time.monotonic()
                elif moved >= IGNORED_MOVE_DEG and time.monotonic() - t_change >= STEP_SETTLE_SEC:
                    # 動き出して止まった (重さで手前で止まった): 待たずに戻る. 指令はこの目標のまま (次の押しはこの先から)
                    return dict(base, reached=False, settled=True, reached_angles=_r(a), reach_err=round(err, 3),
                                elapsed_sec=round(time.monotonic() - t0, 2))
            if (len(resends) >= max_resends and moved < IGNORED_MOVE_DEG
                    and time.monotonic() - t_last_send >= check_sec):
                # 送り直しても動かない: 待ちの上限 (8 秒) まで待たずに戻る
                return dict(base, reached=False, not_moved=True, reached_angles=_r(a), reach_err=round(err, 3),
                            elapsed_sec=round(time.monotonic() - t0, 2))
            if (len(resends) < max_resends and moved < IGNORED_MOVE_DEG
                    and time.monotonic() - t_last_send >= check_sec):
                # 無視された: 同じ目標を送り直す (停止・離したあとなら送らない)
                try:
                    again = gate.run(lambda: self._send(target, joint))
                except Exception as e:
                    return dict(base, reached=None, reached_angles=_r(a), reach_err=round(err, 3),
                                error=f"resend_failed: {type(e).__name__}: {e}",
                                elapsed_sec=round(time.monotonic() - t0, 2))
                if not again:
                    return dict(base, reached=None, halted_during_check=True, reached_angles=_r(a),
                                reach_err=round(err, 3), elapsed_sec=round(time.monotonic() - t0, 2))
                t_last_send = time.monotonic()
                resends.append(round(t_last_send - t0, 2))
                continue
            time.sleep(poll)
        return dict(base, reached=False, reached_angles=_r(last),
                    reach_err=None if err is None else round(err, 3),
                    elapsed_sec=round(time.monotonic() - t0, 2))

    def halt(self):
        """動いている途中で止める (2026-11-05). daemon の stop (jog_stop と stop). stop のない古い daemon なら
        今の角度へ send_angles する. そのあと HALT_SETTLE_SEC 待って角度を読む. 停止の鍵 (SendGate) は通さない
        (止める命令は停止のあとにも送る). 送れなくても停止にはしない (止める → 失敗 → 止める の繰り返しを避ける)."""
        t_send = time.time()
        out = {"t_halt": t_send}
        try:
            resp = daemon_request({"cmd": "stop"}, timeout_override=SEND_RPC_TIMEOUT_SEC)
        except Exception as e:
            resp = None
            out["halt_error"] = f"{type(e).__name__}: {e}"
        if resp is not None and resp.get("ok"):
            out.update(halt="stop", halt_result=resp.get("result"))
        else:
            if resp is not None:
                out["halt_daemon_resp"] = resp
            q = self.read()
            if q is not None:
                try:
                    daemon_send_angles([float(v) for v in q], speed=SPEED, wait=rpc.SEND_WAIT,
                                       timeout_override=SEND_RPC_TIMEOUT_SEC)
                    out["halt"] = "send_current"
                except Exception as e:
                    out["halt_error"] = f"{type(e).__name__}: {e}"
            else:
                out["halt_error"] = out.get("halt_error") or "read_failed"
        time.sleep(HALT_SETTLE_SEC)
        out["measured_after_halt"] = _r(self.read_once())    # 読めなくても読み直さない (11/5. 止める処理が 11 秒かかった)
        return out

    def read_once(self):
        """daemon に 1 回だけ角度を聞く (Mac 側では読み直さない). 読めなければ None."""
        try:
            resp = daemon_request({"cmd": "get_angles"}, timeout_override=SEND_RPC_TIMEOUT_SEC)
        except Exception:
            return None
        a = resp.get("angles") if resp.get("ok") else None
        return np.array([float(v) for v in a]) if a is not None and len(a) == 6 else None

    def gripper(self, state, gate):
        """run_policy_client.gripper_cmd と同じ中身 (閉 = daemon_set_gripper_value(GRIP_VALUE) /
        開 = daemon_set_gripper(0, wait=GRIP_OPEN_DAEMON_WAIT). そのあと GRIPPER_SLEEP 待つ).
        指令だけを gate の中で送り, 待ちは gate の外で行う (停止の受け付けを待ちの分だけ遅らせない).
        戻り値: 送ったか."""
        if state == 1:
            sent = gate.run(lambda: daemon_set_gripper_value(rpc.GRIP_VALUE))
        else:
            sent = gate.run(lambda: daemon_set_gripper(0, wait=rpc.GRIP_OPEN_DAEMON_WAIT))
        if sent:
            time.sleep(rpc.GRIPPER_SLEEP)
        return sent


class DryArm:
    """ドライラン: daemon にもアームにも触らない. HOME から始まる仮の姿勢を動かす."""

    execute = False

    def __init__(self, start=HOME):
        self.q = np.asarray(start, dtype=float).copy()
        self.hold_target = None           # 長押しで送った目標. 読むたびに DRY_HOLD_MAX_DEG ずつ寄せる

    def read(self):
        if self.hold_target is not None:
            self.q = self.q + np.clip(self.hold_target - self.q, -DRY_HOLD_MAX_DEG, DRY_HOLD_MAX_DEG)
        return self.q.copy()

    def halt(self):
        self.hold_target = None
        return {"halt": "dry", "measured_after_halt": _r(self.q), "dry": True}

    def send_and_check(self, target, gate, quitting, check=True, joint=None):
        t_send = time.time()
        if not gate.run(lambda: None):
            return {"sent": False, "why": "halted_before_send", "measured_before_send": _r(self.q)}
        if not check:                     # 長押し: 読むたびに少しずつ目標へ寄せる (待たない)
            self.hold_target = np.asarray(target, dtype=float).copy()
            return {"sent": True, "reached": None, "no_check": True, "t_send": t_send, "dry": True}
        self.hold_target = None
        time.sleep(DRY_MOVE_SEC)
        self.q = np.asarray(target, dtype=float).copy()
        return {"sent": True, "reached": True, "reached_angles": _r(self.q), "reach_err": 0.0,
                "t_send": t_send, "dry": True}

    def gripper(self, state, gate):
        if not gate.run(lambda: None):
            return False
        time.sleep(GRIPPER_SLEEP)         # 実機と同じ間だけ受け付けない
        return True


# =============================================================================
# 記録
# =============================================================================

class JsonlLog:
    def __init__(self, path):
        self.path = Path(path)
        self.f = open(self.path, "x", encoding="utf-8")

    def write(self, rec):
        self.f.write(json.dumps(rec, ensure_ascii=False) + "\n")
        self.f.flush()                    # 途中で止まっても残るように 1 行ごとに

    def close(self):
        if not self.f.closed:
            self.f.close()


class NullLog:
    """ドライラン: 何も書かない (依頼 69)."""

    def write(self, rec):
        pass

    def close(self):
        pass


def write_json_atomic(path, obj):
    tmp = Path(str(path) + ".tmp")
    with open(tmp, "w", encoding="utf-8") as f:
        json.dump(obj, f, ensure_ascii=False, indent=2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, path)


# =============================================================================
# 操作の状態 (pygame に依存しない. テストで直接呼ぶ)
# =============================================================================

class Teleop:
    """押したボタンを受けて, 送る仕事を別のスレッドで 1 つずつ行う.

    送っている間 (busy) の動く操作は受け付けない (ためない). 停止はいつでも受け付ける.
    状態を書き換えるのは呼び出し側のスレッド (pygame のループ) だけ. 送る仕事の結果は
    results に入り, poll() で受け取って状態とログに反映する.
    送る直前の確かめは 仕事ごとの SendGate で行い, 停止・終了はその鍵を取ってから取り消す.
    """

    def __init__(self, arm, start_pose, log, out=print, spawn=None):
        self.arm = arm
        self.log = log
        self.out = out
        self.spawn = spawn or self._spawn_thread
        self.cmd = np.asarray(start_pose, dtype=float).copy()        # 直前の目標 (始めは起動時の姿勢)
        self.cmd_reached = True
        self.measured = np.asarray(start_pose, dtype=float).copy()   # 最後に読めた角度
        self.sel = 0                       # SELECT_ORDER の何番目 (始めは j1)
        self.r1 = False
        self.stopped = False
        self.stop_reason = None
        self.busy = False
        self.pending = None                # 送っている操作のログ行
        self.thread = None
        self.grip = "unknown"
        self.last_limit = ""               # 直前に範囲で切られた理由 (画面用. 英数字)
        self.last_msg = ""
        self.gate = None                   # 今の仕事の SendGate (停止・終了で取り消す)
        self.log_failed = False            # log.jsonl に書けなくなったら 再開させない (終わらせる)
        self.quitting = threading.Event()
        self.results = queue.Queue()
        self.home_down_at = None
        self.home_handled = False
        self.triggers = [-1.0, -1.0]
        self.both_triggers = False
        self.read_error = False
        self.seq = 0
        self.n_sent = 0
        self.hold = None                   # 十字キーの長押し {id, button, joint, sign, down_at, n, last_req_at}
        self.hold_seq = 0
        self.hold_last_sent_id = None      # 長押しの目標を送った長押しの id (その長押しが終わったら止める)
        self.hold_sent = None              # 最後に送った長押しの目標 {q (送る前に読んだ角度), t, resent}
        self.halt_pending = None           # 止める命令を送る予定 {reason, hold_id, measured_at_request}
        self.step_pending = None           # 離したときの 1 刻みで, 前の仕事が終わるのを待っているもの

    # ---- 見せる値 ----
    @property
    def joint(self):
        return SELECT_ORDER[self.sel]

    @property
    def step(self):
        return STEP_COARSE_DEG if self.r1 else STEP_FINE_DEG

    @property
    def state(self):
        if self.stopped:
            return STATE_STOPPED
        return STATE_MOVING if self.busy else STATE_IDLE

    # ---- 記録 ----
    def _entry(self, button, kind, **kw):
        self.seq += 1
        e = {"seq": self.seq, "t": datetime.now().isoformat(timespec="milliseconds"),
             "t_unix": round(time.time(), 3), "button": button,
             "button_name": BUTTON_NAMES.get(button) if isinstance(button, int) else button,
             "kind": kind, "selected_joint": self.joint, "step_deg": self.step,
             "execute": bool(self.arm.execute)}
        e.update(kw)
        return e

    def _finish(self, e):
        e.update({"grip_state": self.grip, "stopped": self.stopped, "stop_reason": self.stop_reason})
        try:
            self.log.write(e)
        except Exception as ex:          # SSD が外れたなど. ローカルには逃がさない
            first = not self.log_failed
            self.log_failed = True
            if first:
                self.out(f"[記録エラー] log.jsonl に書けません: {ex}。停止にします"
                         "（再開はできません。終わらせて KIOXIA を確かめてください）")
            if not self.stopped:
                self.stop_reason = "log_write_failed"
            self.stopped = True
            self._cancel_gate()
            self._drop_home_hold()

    # ---- 停止 ----
    def _cancel_gate(self):
        """今の仕事をまだ送ると決めていなければ, もう送らせない (待たない).
        戻り値: 停止より前に送ると決めていたか (None = 仕事なし)."""
        if self.gate is None:
            return None
        return self.gate.cancel_now()

    def _drop_home_hold(self):
        """HOME の長押しを無効にする (押し直しを求める. codex 必須 4)."""
        if self.home_down_at is not None and not self.home_handled:
            self.home_handled = True
            self.out("[HOME] 長押しの途中で受け付けられなくなったので取り消しました（押し直してください）")
            self._finish(self._entry(BTN_HOME, "home", accepted=False, reason="hold_cancelled"))

    def _end_hold(self, msg=None, reason="hold_end"):
        h = self.hold
        if h is not None:
            if h.get("q0") is not None:
                self.out(f"[長押し] j{h['joint']} を {h['q0']:+.2f}° → {h['q_last']:+.2f}° まで"
                         f"（目標を {h['n_sent']} 回送信。止めます）")
            if msg:
                self.out(msg)
            if self.hold_last_sent_id == h["id"]:
                # 長押しの目標 (最大 15° 先) へ向かって動いているので止める (離した・停止・端・進まない・ほかのボタン)
                self.request_halt(reason, hold_id=h["id"], joint=h["joint"])
            self.hold = None

    def request_halt(self, reason, hold_id=None, joint=None):
        """止める命令を送る予定にする. 送っている仕事があれば, それが終わってすぐに送る (daemon の通信は 1 本なので).
        joint: 長押しで動かしていた関節 (止めたあと, ほかの関節を指令の角度へ戻すため)."""
        if self.halt_pending is None:
            self.halt_pending = {"reason": reason, "hold_id": hold_id, "joint": joint,
                                 "measured_at_request": _r(self.measured)}
        self.hold_last_sent_id = None
        self.hold_sent = None
        self._dispatch_halt()

    def _dispatch_halt(self):
        if self.halt_pending is None or self.busy:
            return
        hp = self.halt_pending
        self.halt_pending = None
        e = self._entry(None, "halt", accepted=True, halt_reason=hp["reason"], hold_id=hp["hold_id"],
                        halt_joint=hp.get("joint"), measured_at_request=hp["measured_at_request"])
        self.busy = True
        self.pending = e
        self.gate = None                   # 止める命令は停止の鍵で取り消さない
        snap = {"cmd": self.cmd.copy(), "cmd_reached": self.cmd_reached, "hold_last_sent_id": None,
                "halt_joint": hp.get("joint")}
        self.spawn(lambda: self._run_job(("halt",), snap, SendGate()))

    def _hold_progress(self, e, job):
        """長押しの 1 回の送信のあと: 進み具合を覚え, HOLD_STALL_SEC 進んでいなければ止める."""
        h = self.hold
        if h is None or h["id"] != e.get("hold_id") or not e.get("measured_before"):
            return
        qj = float(e["measured_before"][job[1]])
        t = h["last_req_at"]
        if h.get("q0") is None:
            h.update(q0=qj, n_sent=0, prog_q=qj, prog_t=t)
        h["q_last"] = qj
        if e.get("sent") is True:
            h["n_sent"] += 1
        if abs(qj - h["prog_q"]) >= HOLD_STALL_DEG:
            h["prog_q"], h["prog_t"] = qj, t
        elif t - h["prog_t"] >= HOLD_STALL_SEC:
            self._end_hold(f"[長押し] j{job[1]} が {HOLD_STALL_SEC:.0f} 秒進まないので止めました"
                           "（どこかに当たっていれば、逆向きを1回押すか HOME で戻してください）", reason="hold_stall")

    def enter_stop(self, reason, button=None, kind="stop"):
        was = self.stopped
        self.stopped = True
        self._end_hold(reason="stop")
        committed = self._cancel_gate()
        if not was:
            self.stop_reason = reason
        self.out(f"[停止] {reason}。新しい指令は送りません（OPTIONS で再開）"
                 + ("。止める前に送った動きは stop で止めます" if committed else "")
                 + ("。まだ送っていなかった操作は送りません" if committed is False else ""))
        self._finish(self._entry(button, kind, accepted=True, reason=reason, already_stopped=was,
                                 busy=self.busy, send_committed_before_stop=committed,
                                 triggers=[round(v, 3) for v in self.triggers]))
        self._drop_home_hold()
        if not was:
            # 動いている途中の動き (長押し・HOME・1 刻み) を止める. 止まっている腕に送っても何も起きない
            self.request_halt(reason)

    def set_triggers(self, l2, r2):
        self.triggers = [float(l2), float(r2)]
        both = l2 > TRIGGER_STOP_ABOVE and r2 > TRIGGER_STOP_ABOVE
        if both and not self.both_triggers:
            self.both_triggers = True
            self.enter_stop("L2+R2", button="L2+R2")
        self.both_triggers = both

    def controller_lost(self, reason):
        self.enter_stop(reason, button=None, kind="controller_lost")
        self.r1 = False                      # 押しっぱなしの状態を持ち越さない
        self.home_down_at = None
        self.home_handled = False
        self.both_triggers = False

    def controller_read_failed(self, msg):
        if not self.read_error:
            self.read_error = True
            self.enter_stop(f"read_error: {msg}", button=None, kind="read_error")

    def controller_read_ok(self):
        self.read_error = False

    def _resume(self, e):
        if not self.stopped:
            e.update(accepted=False, reason="not_stopped")
            self.out("[再開] 止まっていないので何もしません")
        elif self.both_triggers:
            e.update(accepted=False, reason="triggers_still_pressed")
            self.out("[再開] L2 と R2 を離してから OPTIONS を押してください")
        elif self.read_error:
            e.update(accepted=False, reason="controller_read_error")
            self.out("[再開] コントローラーを読めていないので再開しません")
        elif self.log_failed:
            e.update(accepted=False, reason="log_write_failed")
            self.out("[再開] 記録が書けないので再開しません（終わらせて KIOXIA を確かめてください）")
        else:
            # 止める前に作った仕事の取り消しは戻さない (仕事ごとの SendGate. 再開で生き返らない)
            self.stopped = False
            self.stop_reason = None
            e.update(accepted=True)
            self.out("[再開] 操作を受け付けます")
        self._finish(e)

    # ---- ボタン ----
    def press(self, button, now):
        if button == BTN_R1:
            self.r1 = True
            self._finish(self._entry(button, "modifier", accepted=True))
            return
        self._end_hold()                     # 十字キーの長押しは, ほかのボタン (R1 以外) で止まる
        if button == BTN_TRIANGLE:
            self.sel = (self.sel + 1) % len(SELECT_ORDER)
            self.out(f"[関節] 上下で動かす関節を j{self.joint} にしました")
            self._finish(self._entry(button, "select_joint", accepted=True))
            return
        if button == BTN_OPTIONS:
            self._resume(self._entry(button, "resume"))
            return
        if button == BTN_HOME:
            self.home_down_at = now
            self.home_handled = False
            if self.stopped or self.busy:
                # 押し始めに受け付けられないなら, 長押しを続けても送らない (押し直しを求める)
                self.home_handled = True
                why = "stopped" if self.stopped else "busy"
                self.out("[受付なし] HOME: " + ("停止中です" if self.stopped else "前の操作が終わっていません")
                         + "（押し直してください）")
                self._finish(self._entry(button, "home", accepted=False, reason=why))
            return                           # 1 秒続いたとき (tick) か 離したとき (release) に 1 行書く
        if button in (BTN_LEFT, BTN_RIGHT, BTN_UP, BTN_DOWN):
            if button in (BTN_LEFT, BTN_RIGHT):
                sign = J0_LEFT_SIGN if button == BTN_LEFT else -J0_LEFT_SIGN
                j = 0
            else:
                sign = UP_SIGN if button == BTN_UP else -UP_SIGN
                j = self.joint
            if self.stopped:
                self._request(self._entry(button, "move", joint=j, delta=sign * self.step), ("move", j, 0.0, None))
                return                       # 停止中: 受付なしを 1 行書くだけ (_request が断る)
            # 2026-11-05: 押した瞬間には送らない. 離したのが HOLD_START_SEC より前なら 1 刻み (release),
            # 押し続けたら長押し (tick) の, どちらか片方だけを送る. 押した瞬間に 1 刻みを送ると,
            # 向きを変えるたびに「1° 動く → 止まる → 動き出す」になり, 前の長押しを止める処理とも重なって受付なしになった
            self.hold_seq += 1
            self.hold = {"id": self.hold_seq, "button": button, "joint": j, "sign": sign,
                         "down_at": now, "n": 0, "last_req_at": now - HOLD_INTERVAL_SEC}
            return
        if button in (BTN_CROSS, BTN_CIRCLE):
            state = 1 if button == BTN_CROSS else 0
            self._request(self._entry(button, "grip_close" if state else "grip_open", grip_cmd=state),
                          ("grip", state))
            return
        self._finish(self._entry(button, "ignored", accepted=False, reason="unassigned"))

    def release(self, button, now):
        if self.hold is not None and button == self.hold["button"] and self.hold["n"] == 0:
            # 長押しになる前に離した: 1 刻みを送る (動いている間なら, 終わってから送る. 1 秒たったら捨てる)
            h = self.hold
            self.hold = None
            self.step_pending = {"button": button, "joint": h["joint"], "delta": h["sign"] * self.step,
                                 "hold_id": h["id"], "at": now}
            self._dispatch_step(now)
        elif self.hold is not None and button == self.hold["button"]:
            hid = self.hold["id"]
            self._end_hold(reason="release")   # 離したら長押しを止める (目標を送っていれば stop も送る)
            p = self.pending
            if (self.busy and self.gate is not None and p is not None
                    and p.get("hold_id") == hid and (p.get("hold_n") or 0) >= 1):
                # 長押しの 2 回目からの刻みを, まだ送ると決めていなければ送らない (1 回目 = 短い押しは取り消さない)
                p["released_during_job"] = True
                self.gate.cancel_now()
        if button == BTN_R1:
            self.r1 = False
        elif button == BTN_HOME:
            if self.home_down_at is not None and not self.home_handled:
                held = now - self.home_down_at
                self.out(f"[HOME] {held:.2f} 秒で離したので送りません（{HOME_HOLD_SEC:.0f} 秒の長押しで送ります）")
                self._finish(self._entry(button, "home_short", accepted=False, reason="held_too_short",
                                         held_sec=round(held, 3)))
            self.home_down_at = None
            self.home_handled = False

    def _dispatch_step(self, now=None):
        sp = self.step_pending
        if sp is None or self.busy or self.halt_pending is not None:
            return
        self.step_pending = None
        if now is not None and now - sp["at"] > STEP_PENDING_MAX_SEC:
            self._finish(self._entry(sp["button"], "move", joint=sp["joint"], delta=sp["delta"],
                                     accepted=False, reason="step_expired"))
            return
        e = self._entry(sp["button"], "move", joint=sp["joint"], delta=sp["delta"], hold_id=sp["hold_id"], hold_n=0)
        self._request(e, ("move", sp["joint"], sp["delta"], None))

    def tick(self, now):
        self._dispatch_halt()
        self._dispatch_step(now)
        if self.home_down_at is not None and not self.home_handled and (self.busy or self.stopped):
            self._drop_home_hold()           # 長押しの途中で別の操作が動いた・止まった
        if (self.home_down_at is not None and not self.home_handled
                and now - self.home_down_at >= HOME_HOLD_SEC):
            self.home_handled = True
            self._request(self._entry(BTN_HOME, "home", held_sec=round(now - self.home_down_at, 3)),
                          ("home",))
        h = self.hold
        if (h is not None and not self.stopped and not self.busy
                and now - h["down_at"] >= HOLD_START_SEC - 1e-6
                and now - h["last_req_at"] >= HOLD_INTERVAL_SEC - 1e-6):
            h["n"] += 1
            h["last_req_at"] = now
            d = h["sign"] * HOLD_AHEAD_DEG
            self._request(self._entry(h["button"], "move", joint=h["joint"], delta=d,
                                      hold_id=h["id"], hold_n=h["n"],
                                      held_sec=round(now - h["down_at"], 3)),
                          ("move", h["joint"], d, h["id"]))

    def _hold_alive(self, hold_id):
        h = self.hold
        return h is not None and h["id"] == hold_id

    # ---- 送る仕事 ----
    def _request(self, e, job):
        if self.stopped:
            e.update(accepted=False, reason="stopped")
            self.out("[受付なし] 停止中です（OPTIONS で再開）")
            self._finish(e)
            return
        if self.busy:
            e.update(accepted=False, reason="busy")
            self.out("[受付なし] 前の操作が終わっていません（ためません）")
            self._finish(e)
            return
        e["accepted"] = True
        self.busy = True
        self.pending = e
        gate = SendGate()
        self.gate = gate
        snap = {"cmd": self.cmd.copy(), "cmd_reached": self.cmd_reached,
                "hold_last_sent_id": self.hold_last_sent_id,
                "hold_sent": None if self.hold_sent is None else dict(self.hold_sent)}
        self.spawn(lambda: self._run_job(job, snap, gate))

    def _spawn_thread(self, fn):
        self.thread = threading.Thread(target=fn, daemon=True)
        self.thread.start()

    def _run_job(self, job, snap, gate):
        res = {}
        try:
            if job[0] == "move":
                _, j, d, hold_id = job
                q = self.arm.read()
                res["measured_before"] = _r(q)
                if q is None:
                    res["error"] = "read_failed"
                    return
                if hold_id is not None:
                    # 長押しの 2 回目から: 動かす関節は「いま読んだ角度 + 3° 先」. ほかの関節は直前の指令のまま
                    # (読んだ角度で送り直すと, 重さで沈んだ分を毎回なぞって j1 などがずり下がる)
                    cmd = np.asarray(snap["cmd"], dtype=float)
                    others = [k for k in range(6) if k != j]
                    gap_o = float(np.max(np.abs(cmd[others] - q[others])))
                    start = start_pose(cmd, q)          # ほかの関節は 関節ごとに 指令から (3° 以内なら)
                    start[j] = q[j]
                    res["start_source"] = "hold" if gap_o <= REACH_TOL_DEG else "mixed"
                    res["cmd_gap_deg"] = round(gap_o, 3)
                    res["hold_lead_deg"] = round(abs(float(cmd[j] - q[j])), 3)
                    lead = float(cmd[j] - q[j]) * float(np.sign(d))
                    hs = snap.get("hold_sent")
                    if snap.get("hold_last_sent_id") == hold_id and lead > HOLD_REFILL_DEG:
                        if (hs is not None and hs["resends"] < HOLD_MAX_RESENDS
                                and time.monotonic() - hs["t"] >= HOLD_RESEND_AFTER_SEC
                                and abs(float(q[j]) - float(hs["last_q"][j])) < IGNORED_MOVE_DEG):
                            # 目標の手前で止まった (次の目標が無視され, 前の目標で止まった. 11/5 の実機で 3 回):
                            # 待たずに同じ目標を送り直す
                            res["command"] = _r(cmd)
                            res["_target"] = cmd.copy()
                            res["hold_resend"] = True
                            res.update(self.arm.send_and_check(cmd, gate, self.quitting, check=False, joint=j))
                            return
                        # この長押しの目標へ向かっている途中: 送らない (送るたびに加速からやり直してカクつく)
                        res.update(sent=False, why="lead_ok", hold_remaining_deg=round(lead, 3))
                        return
                    plan = plan_step(start, j, d)
                    if (plan["target"] is not None and plan["clip"]
                            and abs(float(plan["target"][j] - cmd[j])) < 0.01):
                        if snap.get("hold_last_sent_id") == hold_id and lead > REACH_TOL_DEG:
                            # 範囲の端の目標へ向かっている途中: 端まで行かせる (ここで止めると端の手前 5° で止まる)
                            res.update(sent=False, why="lead_ok", hold_remaining_deg=round(lead, 3), at_limit_target=True)
                            return
                        # 範囲の端の目標をもう送ってあり, ほぼ着いた: 同じ目標を送り続けない (長押しを止める)
                        c = plan["clip"][0]
                        plan = {"target": None, "clip": [], "refused": [{
                            "joint": j, "why": "at_limit", "value": c["want"], "lo": c["bound"], "hi": c["bound"],
                            "limit": c["limit"]}]}
                    if (plan["target"] is not None and abs(float(cmd[j] - q[j])) <= HOLD_AHEAD_DEG + REACH_TOL_DEG
                            and (plan["target"][j] - cmd[j]) * np.sign(d) < 0):
                        # 読んだ角度が古いと「読んだ角度 + 3°」が前の目標より後ろになる. 後ろへは戻さない (引き戻さない)
                        plan["target"][j] = cmd[j]
                        res["held_previous_target"] = True
                    res["clip"] = plan["clip"]
                    res["refused"] = plan["refused"]
                    res["limit_ja"] = limit_text_ja(plan)
                    res["limit_ascii"] = limit_text_ascii(plan)
                    if plan["target"] is None:
                        res["sent"] = False
                        return
                    res["command"] = _r(plan["target"])
                    res["_target"] = plan["target"]
                    res.update(self.arm.send_and_check(plan["target"], gate, self.quitting, check=False, joint=j))
                    return
                # 出発点: 直前の目標に届いていて, 今読んだ角度とも 3° 以内ならその目標.
                # そうでなければ今読んだ角度 (手で動かされたなど. 古い目標から大きく動かさない. codex 必須 3)
                gap = float(np.max(np.abs(np.asarray(snap["cmd"]) - q)))
                cmd0 = np.asarray(snap["cmd"], dtype=float)
                start = start_pose(cmd0, q)
                if not snap["cmd_reached"] or abs(float(cmd0[j] - q[j])) > REACH_TOL_DEG:
                    start[j] = q[j]                     # 動かす関節が届いていない・3° より離れていれば, 読んだ角度から
                res["start_source"] = "command" if start[j] == cmd0[j] else "measured"   # 動かす関節の出発点
                res["others_from_measured"] = [k for k in range(6) if k != j and start[k] != cmd0[k]]
                res["cmd_gap_deg"] = round(gap, 3)
                plan = plan_step(start, j, d)
                res["clip"] = plan["clip"]
                res["refused"] = plan["refused"]
                res["limit_ja"] = limit_text_ja(plan)
                res["limit_ascii"] = limit_text_ascii(plan)
                if plan["target"] is None:
                    res["sent"] = False
                    return
                res["command"] = _r(plan["target"])
                res["_target"] = plan["target"]
                res.update(self.arm.send_and_check(plan["target"], gate, self.quitting, joint=j))
            elif job[0] == "home":
                q = self.arm.read()
                res["measured_before"] = _r(q)
                if q is None:                # 読めなければ送らない (codex 必須 6)
                    res["error"] = "read_failed"
                    return
                res["command"] = _r(HOME)
                res["_target"] = np.array(HOME)
                res["range_check"] = "skipped_for_home"
                res.update(self.arm.send_and_check(np.array(HOME), gate, self.quitting))
            elif job[0] == "halt":
                res.update(self.arm.halt())
                q = res.get("measured_after_halt")
                hj = snap.get("halt_joint")
                if False and q is not None and hj is not None and not self.stopped:
                    # 11/5 16:13 にやめた: 重さで届かない j1 の指令を送ると, そのあとの指令が無視されやすくなった
                    # stop のあと, 動かしていない関節が 1〜2° 下がる (11/5 の記録で j1 +1°・j4 +1.5° 前後, 毎回).
                    # 止まった関節は止まった角度, ほかの関節は指令の角度で送り直して元に戻す.
                    # 戻さずに読んだ角度を次の出発点にすると, 止めるたびにずれが積み上がった (j1 が 5° → 40°)
                    pin = np.asarray(snap["cmd"], dtype=float).copy()
                    pin[hj] = float(q[hj])
                    lo, hi, _ls, _hs = joint_window()
                    if np.all(pin >= lo - LIMIT_EPS_DEG) and np.all(pin <= hi + LIMIT_EPS_DEG):
                        res["pin_command"] = _r(pin)
                        res["_pin"] = pin
                        r2 = self.arm.send_and_check(pin, gate, self.quitting, check=False)
                        res["pin_sent"] = r2.get("sent")
                    else:
                        res["pin_command"] = None
                        res["pin_refused"] = "out_of_window"
            elif job[0] == "grip":
                res["measured_before"] = None
                sent = self.arm.gripper(job[1], gate)
                res["sent"] = bool(sent)
                if not sent:
                    res["why"] = "halted_before_send"
        except Exception as ex:
            res["error"] = f"{type(ex).__name__}: {ex}"
        finally:
            self.results.put((job, res))

    def poll(self):
        """送る仕事の結果を受け取り, 状態とログに反映する (pygame のループから毎回呼ぶ)."""
        while True:
            try:
                job, res = self.results.get_nowait()
            except queue.Empty:
                return
            self._apply(job, res)

    def _apply(self, job, res):
        e = self.pending or self._entry(None, "orphan_result")
        self.pending = None
        self.busy = False
        target = res.pop("_target", None)
        e.update(res)
        if res.get("reached_angles") is not None:
            self.measured = np.asarray(res["reached_angles"], dtype=float)
        elif res.get("measured_before") is not None:
            self.measured = np.asarray(res["measured_before"], dtype=float)
        sent = res.get("sent")
        if job[0] == "halt":
            self._apply_halt(e, res)
            return
        if job[0] == "move" and sent is True and res.get("no_check") and e.get("hold_id") is not None:
            if self._hold_alive(e["hold_id"]):
                self.hold_last_sent_id = e["hold_id"]
                mb = e.get("measured_before")
                if res.get("hold_resend"):
                    if self.hold_sent is not None:
                        self.hold_sent["resends"] += 1
                        self.hold_sent["t"] = time.monotonic()
                        if mb is not None:
                            self.hold_sent["last_q"] = list(mb)
                elif mb is not None:
                    self.hold_sent = {"q": list(mb), "last_q": list(mb), "t": time.monotonic(), "resends": 0}
            else:
                # 送っている間に離された・止められた: 送った目標へ動き出しているので止める
                self.request_halt("released_while_sending", hold_id=e["hold_id"], joint=job[1])
        if (job[0] == "move" and res.get("why") == "lead_ok" and self.hold_sent is not None
                and e.get("measured_before") is not None):
            self.hold_sent["last_q"] = list(e["measured_before"])     # 次の確かめで「止まったか」を見るため
        if job[0] in ("move", "home") and sent is True:
            self.n_sent += 1
            self.cmd = np.asarray(target, dtype=float)
            # 長押しの送信は届くのを待たないが, アームは目標へ向かって動き続けるので「届く目標」として扱う
            # (次の短い押しは, 読んだ角度と 3° 以内ならこの目標から. 離れていれば読んだ角度から)
            # 1 刻みが送り直しても動かなかったとき (サーボが小さな動きに反応しない) も, 指令はその目標のままにする.
            # 次の押しはそこから 1 刻み先になるので, 押した分が積み上がって動き出す (3° 離れるまで. start_pose)
            self.cmd_reached = True if (res.get("no_check") or res.get("not_moved") or res.get("settled")) \
                else bool(res.get("reached"))
        elif sent == "unknown":
            self.cmd_reached = False                      # 次は読んだ角度から
        if job[0] == "grip" and res.get("error"):
            self.grip = "unknown"
        if job[0] == "grip" and sent is True:
            self.grip = "closed" if job[1] == 1 else "open"
        if job[0] == "move":
            self.last_limit = res.get("limit_ascii", "")
        e["reached"] = res.get("reached") if sent is True else None
        # ---- ターミナル ----
        if job[0] == "move":
            label = f"j{job[1]} {job[2]:+.1f}°" + (f"（長押し {e.get('hold_n')}）" if job[3] is not None else "")
        elif job[0] == "home":
            label = "HOME"
        else:
            label = "爪を" + ("閉じる" if job[1] == 1 else "開く")
        if res.get("limit_ja"):
            self.out(f"[範囲] {res['limit_ja']}")
        if res.get("error"):
            self.out(f"[エラー] {label}: {res['error']}。停止にします")
        elif sent is True and job[0] == "grip":
            self.out(f"[爪] {label}（待ち {GRIPPER_SLEEP:.1f} 秒のあと受付）")
        elif sent is True and res.get("no_check"):
            self._hold_progress(e, job)                    # 長押し: 1 回ずつは出さない (離したときに 1 行)
        elif res.get("why") == "lead_ok":
            self._hold_progress(e, job)                    # 目標へ向かっている途中 (送っていない). 進み具合だけ見る
        elif sent is True:
            r = res.get("reached")
            how = "届いた" if r else ("確かめる途中で終了" if r is None else
                                     ("動かなかった（次の押しは この目標の先から）" if res.get("not_moved") else
                                      ("手前で止まった（次の押しは この目標の先から）" if res.get("settled") else "届かなかった")))
            if res.get("resends"):
                how += f"・無視されたので {len(res['resends'])} 回送り直した"
            self.out(f"[送信] {label} → {_fmt(res.get('command'))}  {how}"
                     f"（ずれ {res.get('reach_err')}°）  届いた角度 {_fmt(res.get('reached_angles'))}")
        elif res.get("why") == "halted_before_send" and e.get("released_during_job") and not self.stopped:
            pass                                           # 長押しを離したので取り消した. 何も出さない
        elif res.get("why") == "halted_before_send":
            self.out(f"[送らない] {label}: 停止が入ったので送りませんでした")
        else:
            self.out(f"[送らない] {label}")
        # 長押しの中で送れなかったら (範囲の端・停止), その長押しは止める. 端で同じ行を繰り返さない
        if (job[0] == "move" and sent is not True and res.get("why") != "lead_ok"
                and e.get("hold_id") is not None and self._hold_alive(e["hold_id"])):
            self._end_hold(reason="hold_not_sent")
        self.gate = None
        self._finish(e)
        if res.get("error"):
            self.enter_stop(f"arm_error: {res['error']}", kind="arm_error")
        self._dispatch_halt()
        self._dispatch_step()

    def _apply_halt(self, e, res):
        pin = res.pop("_pin", None)
        e.pop("_pin", None)                                # _apply で先に e へ入っている (JSON にしない)
        e.update(res)
        q = res.get("measured_after_halt")
        if q is not None:
            self.measured = np.asarray(q, dtype=float)
        if pin is not None and res.get("pin_sent") is True:
            self.cmd = np.asarray(pin, dtype=float)       # 止まった関節は止まった角度, ほかは指令のまま
            self.cmd_reached = True
        elif q is not None and e.get("halt_joint") is not None:
            # 長押しを止めた: 止まった関節だけ止まった角度にする. ほかの関節の指令は変えない (重さで下がった分を拾わない)
            self.cmd[e["halt_joint"]] = float(q[e["halt_joint"]])
            self.cmd_reached = True
        elif q is not None:
            # 停止 (L2+R2) で HOME などの途中で止めた: 止まった所を指令にする (古い目標へ急に動かさない)
            self.cmd = np.asarray(q, dtype=float).copy()
            self.cmd_reached = True
        else:
            self.cmd_reached = False
        before = e.get("measured_at_request")
        if q is not None and before is not None:
            d = np.asarray(q, dtype=float) - np.asarray(before, dtype=float)
            e["moved_after_request_deg"] = _r(d)
        how = {"stop": "stop", "send_current": "今の角度へ送り直し（daemon に stop がない）",
               "dry": "ドライラン"}.get(res.get("halt"), "送れなかった")
        if res.get("halt_error"):
            self.out(f"[止める] 止める命令を送れませんでした: {res['halt_error']}（L2+R2 で停止・必要なら電源を切ってください）")
        elif e.get("halt_reason") not in ("release", "hold_end"):
            self.out(f"[止める] {how}（{e.get('halt_reason')}）  止まった角度 {_fmt(q)}")
        self.gate = None
        self._finish(e)
        self._dispatch_halt()
        self._dispatch_step()

    # ---- 終わり ----
    def shutdown(self):
        """新しい指令を送らずに終わる. 送っている途中の仕事が戻るのを WORKER_JOIN_SEC まで待つ.
        戻り値: 仕事が終わっているか (終わっていなければ daemon のソケットを閉じない)."""
        self.quitting.set()
        committed = self._cancel_gate()
        if self.pending is not None:
            self.pending["send_committed_before_exit"] = committed
        if self.thread is not None:
            self.thread.join(WORKER_JOIN_SEC)
        self.poll()
        done = self.thread is None or not self.thread.is_alive()
        if done and (self.halt_pending is not None or self.hold_last_sent_id is not None
                     or (self.hold is not None and self.hold_last_sent_id == self.hold["id"])):
            # 長押しの目標へ動いている途中で終わった: stop を 1 回だけ送る (新しく動かす指令ではない. レビュー 推奨 3)
            try:
                r = self.arm.halt()
            except Exception as ex:
                r = {"halt_error": f"{type(ex).__name__}: {ex}"}
            self.halt_pending = None
            self.hold_last_sent_id = None
            e = self._entry(None, "halt", accepted=True, halt_reason="exit")
            e.update(r)
            self._finish(e)
        if self.pending is not None:
            e = self.pending
            self.pending = None
            e.update(reached=None, interrupted_at_exit=True)
            self._finish(e)
        return done

    def status_lines(self, q_now=None):
        """画面の文字 (英数字だけ)."""
        q = self.measured if q_now is None else q_now
        lines = [
            ("big", f"JOINT  j{self.joint}    STEP {self.step:.1f} deg"),
            ("big", f"STATE  {self.state}" + ("  (moving)" if self.stopped and self.busy else "")),
            ("big", f"GRIP   {self.grip}"),
        ]
        for k in range(6):
            lines.append(("mono", f"j{k}  {q[k]:+8.2f}   cmd {self.cmd[k]:+8.2f}"))
        lines.append(("small", "last limit: " + (self.last_limit or "-")))
        if self.stopped:
            lines.append(("small", f"stop reason: {self.stop_reason}  (OPTIONS = resume)"))
        return lines


# =============================================================================
# pygame のループ
# =============================================================================

WINDOW_SIZE = (900, 560)


def controller_info(js):
    return {"name": js.get_name(), "guid": js.get_guid(), "instance_id": js.get_instance_id(),
            "axes": js.get_numaxes(), "buttons": js.get_numbuttons(), "hats": js.get_numhats(),
            "connected_at": datetime.now().isoformat(timespec="seconds")}


def run_loop(tp, screen, fonts, mode_text, on_controller=None, on_frame=None):
    """ウィンドウを閉じるまで回す. 戻り値: 終わった理由."""
    js = None
    clock = pygame.time.Clock()
    frame = 0
    while True:
        if on_frame is not None:
            on_frame(frame, tp)
        frame += 1
        now = time.monotonic()
        events = pygame.event.get()
        buttons = []
        for ev in events:
            if ev.type == pygame.QUIT:
                return "window_closed"
            if ev.type == pygame.JOYDEVICEADDED:
                if js is None:
                    js = pygame.joystick.Joystick(ev.device_index)
                    info = controller_info(js)
                    tp.out(f"[接続] {info['name']}  GUID={info['guid']}  軸={info['axes']}  ボタン={info['buttons']}")
                    if on_controller is not None:
                        on_controller(info)
            elif ev.type == pygame.JOYDEVICEREMOVED:
                if js is not None and ev.instance_id == js.get_instance_id():
                    js = None
                    tp.controller_lost("controller_disconnected")
            elif ev.type in (pygame.JOYBUTTONDOWN, pygame.JOYBUTTONUP):
                if js is not None and ev.instance_id == js.get_instance_id():
                    buttons.append(ev)
        # 停止 (L2+R2) と 読み取りの失敗を ボタンより先に見る (同じコマのボタンで送らない. codex 必須 5)
        read_ok = js is not None
        if js is not None:
            try:
                l2, r2 = js.get_axis(AXIS_L2), js.get_axis(AXIS_R2)
                tp.controller_read_ok()
                tp.set_triggers(l2, r2)
            except Exception as ex:          # pygame.error など
                read_ok = False
                tp.controller_read_failed(f"{type(ex).__name__}: {ex}")
        if read_ok:
            for ev in buttons:
                if ev.type == pygame.JOYBUTTONDOWN:
                    tp.press(ev.button, now)
                else:
                    tp.release(ev.button, now)
        # 長押しの最中は, 離した合図を取りこぼしても止まるよう, ボタンの状態も毎コマ見る
        if js is not None and read_ok and tp.hold is not None:
            hb = tp.hold["button"]
            try:
                held = js.get_button(hb)
            except Exception as ex:          # pygame.error など
                tp.controller_read_failed(f"{type(ex).__name__}: {ex}")
            else:
                if not held:
                    tp.release(hb, now)
        tp.tick(now)
        tp.poll()
        draw(screen, fonts, tp, mode_text, js)
        clock.tick(60)


def draw(screen, fonts, tp, mode_text, js):
    screen.fill((20, 20, 24))
    color_state = {STATE_IDLE: (120, 220, 140), STATE_MOVING: (240, 200, 80),
                   STATE_STOPPED: (240, 90, 90)}[tp.state]
    y = 10
    screen.blit(fonts["small"].render(f"{mode_text}   controller: "
                                      + (js.get_name()[:40] if js is not None else "none"),
                                      True, (200, 220, 255)), (10, y))
    y += 28
    for kind, text in tp.status_lines():
        col = color_state if text.startswith("STATE") else (235, 235, 235)
        screen.blit(fonts[kind].render(text[:110], True, col), (10, y))
        y += {"big": 44, "mono": 26, "small": 24}[kind]
    y += 6
    for t in ("dpad L/R: j0   dpad U/D: selected joint (up = -, down = +)   hold: keep moving   triangle: next joint",
              "R1 hold: 2 deg   cross: close   circle: open   HOME hold 1s: home",
              "L2+R2: stop   OPTIONS: resume   window close / Ctrl+C: quit (arm is not moved)"):
        screen.blit(fonts["small"].render(t, True, (150, 150, 160)), (10, y))
        y += 22
    pygame.display.flip()


# =============================================================================
# main
# =============================================================================

def git_info(path):
    def run(*a):
        try:
            return subprocess.run(["git", *a], cwd=_ROOT, capture_output=True, text=True,
                                  timeout=5).stdout.strip()
        except Exception:
            return None
    rel = os.path.relpath(path, _ROOT)
    return {"commit": run("rev-parse", "HEAD"),
            "script_status": run("status", "--porcelain", "--", rel) or "clean"}


def main(argv=None, on_frame=None, start_pose_dry=None):
    ap = argparse.ArgumentParser(description="ゲームパッドで mechArm を手で動かす (既定はドライラン)")
    ap.add_argument("--execute", action="store_true", help="daemon に送る (付けなければドライラン)")
    args = ap.parse_args(argv)

    stamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    run_stem = f"teleop_{stamp}" + ("" if args.execute else "_dry")
    if args.execute:
        ensure_ssd_mounted()
        try:
            load_daemon_modules()
        except Exception as ex:          # 読み込みの失敗・値の違い. 記録も daemon もまだ触っていない
            sys.exit(f"[ABORT] daemon の送り口を読めません: {type(ex).__name__}: {ex}。何も送らずに終わります")
        run_dir = LOG_ROOT / run_stem
        if run_dir.exists():
            sys.exit(f"[ABORT] 同じ名前のフォルダがあります: {run_dir}")
        run_dir.mkdir(parents=True)
        script_copy = run_dir / Path(__file__).name
        shutil.copy2(__file__, script_copy)
        log = JsonlLog(run_dir / "log.jsonl")
        print(f"[記録] {run_dir}")
    else:
        # ドライランは記録しない: KIOXIA に何も書かない・フォルダも作らない (依頼 69)
        run_dir = script_copy = None
        log = NullLog()
        print("[記録] ドライランなので記録しません")

    tp = None
    meta = None
    end_reason = None
    daemon_used = False
    try:
        if args.execute:
            get_daemon_socket()
            daemon_used = True
            rpc.install_daemon_lock()
            arm = DaemonArm()
            start = arm.read()
            if start is None:
                end_reason = "start_read_failed"
                sys.exit("[ABORT] 起動したときの関節角を読めません（daemon を確かめてください）。何も送らずに終わります")
            print("[実機] daemon に送ります。起動したときの姿勢: " + _fmt(start))
        else:
            start = np.asarray(start_pose_dry if start_pose_dry is not None else HOME, dtype=float)
            arm = DryArm(start)
            print("[ドライラン] daemon にもアームにも触りません。HOME から始まる仮の姿勢を動かします")
        lo, hi, _, _ = joint_window()
        bad = [k for k in range(6) if not (lo[k] - LIMIT_EPS_DEG <= start[k] <= hi[k] + LIMIT_EPS_DEG)]
        if bad:
            print("[注意] 起動したときの姿勢が守りの外: " + ", ".join(f"j{k}={start[k]:+.2f}" for k in bad)
                  + "。この関節を含む操作は送りません（HOME の長押しは送れます）")

        meta = None if not args.execute else {
            "run_stem": run_stem, "started_at": datetime.now().isoformat(timespec="seconds"),
            "execute": bool(args.execute), "argv": sys.argv,
            "controllers": [],
            "python": sys.version, "pygame": pygame.version.ver,
            "sdl": ".".join(str(v) for v in pygame.get_sdl_version()), "platform": platform.platform(),
            "start_pose": _r(start),
            "guards": {"J1_MAX_DEG": J1_MAX_DEG, "range": "physical_limits (no base window. 2026-11-03)",
                       "J4_SAFE": list(J4_SAFE), "JOINT_LIMITS": [list(x) for x in JOINT_LIMITS],
                       "window": {"lo": _r(lo), "hi": _r(hi)},
                       "home_bypasses_range_check": True},
            "motion": {"speed": SPEED, "step_fine_deg": STEP_FINE_DEG, "step_coarse_deg": STEP_COARSE_DEG,
                       "reach_tol_deg": REACH_TOL_DEG, "reach_timeout_min_sec": REACH_TIMEOUT_SEC,
                       "poll_sec": POLL_SLEEP, "gripper_sleep_sec": rpc.GRIPPER_SLEEP,
                       "grip_close_value": rpc.GRIP_VALUE, "send_wait": rpc.SEND_WAIT,
                       "home": HOME, "home_hold_sec": HOME_HOLD_SEC, "trigger_stop_above": TRIGGER_STOP_ABOVE,
                       "hold_start_sec": HOLD_START_SEC, "hold_interval_sec": HOLD_INTERVAL_SEC,
                       "hold_ahead_deg": HOLD_AHEAD_DEG, "hold_stall_sec": HOLD_STALL_SEC,
                       "ignored_check_sec": IGNORED_CHECK_SEC, "ignored_max_resends": IGNORED_MAX_RESENDS,
                       "j0_left_sign": J0_LEFT_SIGN, "up_sign": UP_SIGN, "select_order": list(SELECT_ORDER)},
            "button_map": {str(k): v for k, v in BUTTON_NAMES.items()},
            "git": git_info(__file__),
            "script_copy": script_copy.name,
            "script_sha256": hashlib.sha256(script_copy.read_bytes()).hexdigest(),
        }
        if meta is not None:
            write_json_atomic(run_dir / "meta.json", meta)

        def on_controller(info):
            if meta is None:
                return
            meta["controllers"].append(info)
            try:
                write_json_atomic(run_dir / "meta.json", meta)
            except Exception as ex:
                print(f"[記録エラー] meta.json に書けません: {ex}")

        tp = Teleop(arm, start, log)
        pygame.init()
        pygame.joystick.init()
        screen = pygame.display.set_mode(WINDOW_SIZE)
        pygame.display.set_caption("gamepad_teleop" + (" [EXECUTE]" if args.execute else " [DRY RUN]"))
        mono = "menlo,consolas,dejavusansmono"
        fonts = {"big": pygame.font.SysFont(mono, 34, bold=True), "mono": pygame.font.SysFont(mono, 20),
                 "small": pygame.font.SysFont(mono, 16)}
        print("コントローラーを待っています（つないでいなければ、今つないでください）")
        end_reason = run_loop(tp, screen, fonts, "EXECUTE" if args.execute else "DRY RUN",
                              on_controller=on_controller, on_frame=on_frame)
    except KeyboardInterrupt:
        end_reason = "ctrl_c"
        print("\n[終了] Ctrl+C")
    finally:
        # 終わるときにアームを動かさない (HOME 復帰もサーボ解放もしない). 新しい指令も送らない
        worker_done = True
        if tp is not None:
            worker_done = tp.shutdown()
            if not worker_done:
                print("[終了] 送っている途中の仕事が戻らないまま終わります（ソケットは閉じません）")
        if meta is not None:
            meta.update(ended_at=datetime.now().isoformat(timespec="seconds"), end_reason=end_reason or "error",
                        n_sent=(tp.n_sent if tp is not None else 0))
            try:
                write_json_atomic(run_dir / "meta.json", meta)
            except Exception as ex:
                print(f"[記録エラー] meta.json に書けません: {ex}")
        log.close()
        if daemon_used and worker_done:
            try:
                close_daemon_socket()
            except Exception:
                pass
        pygame.quit()
        print("[終了] アームは動かしていません。" + (f"記録: {run_dir}" if run_dir is not None else "記録なし（ドライラン）"))
    return 0


if __name__ == "__main__":
    sys.exit(main())
```

### test_gamepad_teleop.py（テスト89件・commit 452a3b6）

#### tools/test_gamepad_teleop.py

```python
#!/usr/bin/env python3
"""test_gamepad_teleop.py — gamepad_teleop.py の確かめ (アームなし・コントローラーなし. 依頼 68).

  python3 tools/test_gamepad_teleop.py -v

中身:
  - ボタン番号と操作の対応 (依頼 68 の表) / 十字キー上下の向き / △ で j1 → j5 → j1
  - 守り: j1 は 90.87 を超えない / 物理可動域まで (基準の姿勢からの枠はない. 2026-11-03) / J4_SAFE
  - 長押し (2026-11-03): 短い押しは 1 刻み / 押している間は送り続ける / 離す・停止・△・範囲の端で止まる /
    指令が読んだ角度より 3° 先なら送らずに待つ / 追いつかなければ止める
  - 停止: L2・R2 の両方 > 0.0 で止まる・片方では止まらない / 停止中は受け付けない / OPTIONS で戻る / 接続が切れたら停止
  - HOME: 1 秒に満たない長押しでは送らない / 1 秒続けたら 1 回だけ送る
  - 動いている間の押しは受け付けない (ためない)
  - daemon への送り方: 停止が立っていれば送らない / 届かなくても送り直さない
  - ドライランで main() がひととおり動く (偽のコントローラー・ダミーの画面・一時フォルダ)
  - 依頼 69: ドライランは KIOXIA に書かない (フォルダも作らない・KIOXIA がなくても動く) / --execute は今までどおり書く /
    ドライランでは cv2 (2 つ目の libSDL2) を読まない・objc の重複の警告が出ない (別のプロセスで確かめる)
  - codex R1 の指摘: 範囲外の出発点 / 目標と読んだ角度のずれ / 長押しの持ち越し / 停止と送信の順番 /
    再開で古い仕事が生き返らない / 読み取り失敗 / 記録の失敗 / ボタンより先に L2+R2 を見る
KIOXIA にもアームにも触らない.
"""
import json
import os
import subprocess
import sys
import tempfile
import threading
import types
import time
import unittest
from pathlib import Path
from unittest import mock

os.environ.setdefault("SDL_VIDEODRIVER", "dummy")
os.environ.setdefault("SDL_AUDIODRIVER", "dummy")

import numpy as np  # noqa: E402

sys.path.insert(0, str(Path(__file__).resolve().parent))
import gamepad_teleop as gt  # noqa: E402

# DaemonArm のテストで daemon の送り口 (の差し替え) を使うので読み込んでおく.
# ドライランで読まないことは TestNoCv2InDryRun で別のプロセスで確かめる
gt.load_daemon_modules()

HOME = [0.0, 0.0, 0.0, 0.0, 0.0, -30.0]

# テストは 0.5° の刻みで書いてある. 実際の値 (1°. 2026-11-03) は TestStepValue で確かめる
STEP_FINE_REAL = gt.STEP_FINE_DEG
gt.STEP_FINE_DEG = 0.5


class TestStepValue(unittest.TestCase):
    def test_real_steps(self):
        self.assertEqual(STEP_FINE_REAL, 1.0)
        self.assertEqual(gt.STEP_COARSE_DEG, 2.0)


class ListLog:
    def __init__(self):
        self.rows = []

    def write(self, rec):
        json.dumps(rec, ensure_ascii=False)      # JSON にできること
        self.rows.append(rec)


class FakeArm:
    execute = False

    def __init__(self, start=HOME, reach=True):
        self.q = np.asarray(start, dtype=float).copy()
        self.sent = []
        self.grips = []
        self.reach = reach

    def read(self):
        return self.q.copy()

    def send_and_check(self, target, gate, quitting, check=True, joint=None):
        if not gate.run(lambda: self.sent.append([float(v) for v in target])):
            return {"sent": False, "why": "halted_before_send"}
        if not check:
            self.checks = getattr(self, "checks", []) + [False]
            self.q = np.asarray(target, dtype=float).copy() if self.reach else self.q
            return {"sent": True, "reached": None, "no_check": True}
        if self.reach:
            self.q = np.asarray(target, dtype=float).copy()
        return {"sent": True, "reached": self.reach, "reached_angles": gt._r(self.q), "reach_err": 0.0}

    def gripper(self, state, gate):
        return gate.run(lambda: self.grips.append(state))

    def halt(self):
        self.halts = getattr(self, "halts", 0) + 1
        return {"halt": "stop", "measured_after_halt": gt._r(self.q)}


def make(start=HOME, reach=True, sync=True):
    arm = FakeArm(start, reach)
    log = ListLog()
    spawned = []
    spawn = (lambda fn: fn()) if sync else spawned.append
    tp = gt.Teleop(arm, start, log, out=lambda *a: None, spawn=spawn)
    return tp, arm, log, spawned


def press(tp, b, now=0.0):
    tp.press(b, now)
    tp.release(b, now)
    tp.poll()


class TestButtonMap(unittest.TestCase):
    def test_numbers(self):
        self.assertEqual((gt.BTN_CROSS, gt.BTN_CIRCLE, gt.BTN_SQUARE, gt.BTN_TRIANGLE), (0, 1, 2, 3))
        self.assertEqual((gt.BTN_SHARE, gt.BTN_HOME, gt.BTN_OPTIONS, gt.BTN_L3, gt.BTN_R3), (4, 5, 6, 7, 8))
        self.assertEqual((gt.BTN_L1, gt.BTN_R1), (9, 10))
        self.assertEqual((gt.BTN_UP, gt.BTN_DOWN, gt.BTN_LEFT, gt.BTN_RIGHT, gt.BTN_TOUCHPAD), (11, 12, 13, 14, 15))
        self.assertEqual((gt.AXIS_L2, gt.AXIS_R2), (4, 5))

    def test_dpad_left_right_always_j0(self):
        for sel in range(5):
            tp, arm, log, _ = make()
            tp.sel = sel
            press(tp, gt.BTN_RIGHT)
            self.assertEqual(log.rows[-1]["joint"], 0)
            self.assertAlmostEqual(arm.sent[-1][0], 0.5)
            press(tp, gt.BTN_LEFT)
            press(tp, gt.BTN_LEFT)
            self.assertAlmostEqual(arm.sent[-1][0], -0.5)
            self.assertEqual(arm.sent[-1][1:], HOME[1:])

    def test_up_minus_down_plus_starts_j1(self):
        tp, arm, log, _ = make()
        self.assertEqual(tp.joint, 1)
        press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(arm.sent[-1][1], 0.5)
        press(tp, gt.BTN_UP)
        press(tp, gt.BTN_UP)
        self.assertAlmostEqual(arm.sent[-1][1], -0.5)

    def test_triangle_cycles(self):
        tp, arm, log, _ = make()
        seen = [tp.joint]
        for _ in range(5):
            press(tp, gt.BTN_TRIANGLE)
            seen.append(tp.joint)
        self.assertEqual(seen, [1, 2, 3, 4, 5, 1])
        self.assertEqual(arm.sent, [])                      # 切り替えだけでは送らない
        tp.sel = 3                                           # j4
        press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(arm.sent[-1][4], 0.5)

    def test_r1_coarse_step(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_R1, 0.0)
        press(tp, gt.BTN_RIGHT)
        self.assertAlmostEqual(arm.sent[-1][0], 2.0)
        press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(arm.sent[-1][1], 2.0)
        tp.release(gt.BTN_R1, 0.0)
        press(tp, gt.BTN_RIGHT)
        self.assertAlmostEqual(arm.sent[-1][0], 2.5)

    def test_gripper(self):
        tp, arm, log, _ = make()
        press(tp, gt.BTN_CROSS)
        self.assertEqual(arm.grips, [1])
        self.assertEqual(tp.grip, "closed")
        press(tp, gt.BTN_CIRCLE)
        self.assertEqual(arm.grips, [1, 0])
        self.assertEqual(tp.grip, "open")

    def test_unassigned_do_nothing(self):
        tp, arm, log, _ = make()
        for b in (gt.BTN_SQUARE, gt.BTN_SHARE, gt.BTN_L1, gt.BTN_L3, gt.BTN_R3, gt.BTN_TOUCHPAD):
            press(tp, b)
        self.assertEqual(arm.sent, [])
        self.assertEqual(arm.grips, [])
        self.assertTrue(all(r["kind"] == "ignored" for r in log.rows))
        self.assertEqual(tp.joint, 1)


class TestGuards(unittest.TestCase):
    def test_j1_never_above_9087(self):
        start = [0.0, 85.0, 0.0, 0.0, 0.0, -30.0]
        tp, arm, log, _ = make(start)
        tp.r1 = True
        for _ in range(6):
            press(tp, gt.BTN_DOWN)
        self.assertTrue(all(s[1] <= 90.87 + 1e-9 for s in arm.sent))
        self.assertAlmostEqual(arm.sent[-1][1], 90.87)
        clipped = [r for r in log.rows if r.get("clip")]
        self.assertEqual(clipped[0]["clip"][0]["limit"], "J1_MAX")
        refused = [r for r in log.rows if r.get("refused")]
        self.assertTrue(refused and refused[-1]["refused"][0]["why"] == "at_limit")
        self.assertIn("J1_MAX", tp.last_limit)

    def test_home_to_pick_height(self):
        # HOME から j1 を PICK の高さ 90.87 まで下ろせる (基準の姿勢からの ±10° の枠はない. 2026-11-03)
        tp, arm, log, _ = make()
        tp.r1 = True
        for _ in range(50):
            press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(max(s[1] for s in arm.sent), 90.87)
        self.assertFalse(any(r.get("clip") and r["clip"][0]["limit"] == "BASE" for r in log.rows))
        # ほかの関節も ±10° を超えて動く
        for _ in range(12):
            press(tp, gt.BTN_RIGHT)
        self.assertAlmostEqual(arm.sent[-1][0], 24.0)
        tp.sel = 1                                          # j2
        for _ in range(15):
            press(tp, gt.BTN_UP)
        self.assertAlmostEqual(arm.sent[-1][2], -30.0)
        tp.sel = 4                                          # j5
        for _ in range(10):
            press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(arm.sent[-1][5], -10.0)

    def test_j4_safe(self):
        start = [0.0, 0.0, 0.0, 0.0, 55.0, -30.0]
        tp, arm, log, _ = make(start)
        tp.sel = 3
        tp.r1 = True
        for _ in range(5):
            press(tp, gt.BTN_DOWN)
        self.assertAlmostEqual(max(s[4] for s in arm.sent), 60.0)
        self.assertEqual([r for r in log.rows if r.get("clip")][0]["clip"][0]["limit"], "J4_SAFE")

    def test_window_function(self):
        lo, hi, lo_src, hi_src = gt.joint_window()
        self.assertAlmostEqual(hi[1], 90.87)
        self.assertEqual(hi_src[1], "J1_MAX")
        self.assertAlmostEqual(lo[4], -90.0)
        self.assertAlmostEqual(hi[4], 60.0)
        self.assertEqual((lo_src[4], hi_src[4]), ("J4_SAFE", "J4_SAFE"))
        for k in (0, 2, 3, 5):                                # 残りは物理可動域
            self.assertEqual((lo[k], hi[k]), gt.JOINT_LIMITS[k])
            self.assertEqual((lo_src[k], hi_src[k]), ("PHYS", "PHYS"))
        self.assertEqual(lo[1], gt.JOINT_LIMITS[1][0])

    def test_no_compensation_other_joints(self):
        start = [0.0, 0.0, 0.0, 0.0, 0.0, -30.0]
        p = gt.plan_step(start, 1, 20.0)
        self.assertAlmostEqual(p["target"][1], 20.0)
        self.assertEqual(list(p["target"][[0, 2, 3, 4, 5]]), [0.0, 0.0, 0.0, 0.0, -30.0])

    def test_out_of_window_start_refuses(self):
        # 起動したときに j1 が 91 (守りの外): j1 を下げる (−) 押しも, 他の関節の押しも送らない
        start = [0.0, 91.0, 0.0, 0.0, 0.0, -30.0]
        p = gt.plan_step(start, 0, 0.5)
        self.assertIsNone(p["target"])
        self.assertEqual(p["refused"][0]["joint"], 1)

    def test_home_then_continue(self):
        start = [10.0, 5.0, 0.0, 0.0, 0.0, -30.0]
        tp, arm, log, _ = make(start)
        tp.press(gt.BTN_HOME, 0.0)
        tp.tick(1.01)
        tp.poll()
        self.assertEqual(arm.sent[-1], HOME)
        tp.r1 = True
        for _ in range(10):
            press(tp, gt.BTN_LEFT)
        self.assertAlmostEqual(arm.sent[-1][0], -20.0)       # HOME から続けて動く (枠はない)

    def test_home_bypasses_range(self):
        # 範囲の外 (j1=95) にいても HOME は送れる
        start = [0.0, 95.0, 0.0, 0.0, 0.0, -30.0]
        tp, arm, log, _ = make(start)
        press(tp, gt.BTN_DOWN)
        self.assertEqual(arm.sent, [])
        tp.press(gt.BTN_HOME, 0.0)
        tp.tick(1.0)
        tp.poll()
        self.assertEqual(arm.sent, [HOME])

    def test_start_from_measured_when_not_reached(self):
        tp, arm, log, _ = make(reach=False)
        press(tp, gt.BTN_RIGHT)                    # 届かない (仮の姿勢は HOME のまま)
        self.assertFalse(tp.cmd_reached)
        press(tp, gt.BTN_RIGHT)                    # 次は読んだ角度 (0) から
        self.assertAlmostEqual(arm.sent[-1][0], 0.5)
        self.assertEqual(log.rows[-1]["start_source"], "measured")


class LagArm(FakeArm):
    """送ると「届いた」と返すが, 角度は読むたびに lag_step ずつしか追いつかない (読みが古いのと同じ)."""

    def __init__(self, start=HOME, lag_step=0.0):
        super().__init__(start)
        self.target = np.asarray(start, dtype=float).copy()
        self.lag_step = lag_step
        self.reads = 0

    def read(self):
        self.reads += 1
        d = self.target - self.q
        self.q = self.q + np.clip(d, -self.lag_step, self.lag_step)
        return self.q.copy()

    def send_and_check(self, target, gate, quitting, check=True, joint=None):
        if not gate.run(lambda: self.sent.append([float(v) for v in target])):
            return {"sent": False, "why": "halted_before_send"}
        self.target = np.asarray(target, dtype=float).copy()
        if not check:
            return {"sent": True, "reached": None, "no_check": True}
        return {"sent": True, "reached": True, "reached_angles": gt._r(self.q), "reach_err": 0.0}

    def halt(self):
        self.halts = getattr(self, "halts", 0) + 1
        self.target = self.q.copy()                   # stop: その場で止まる
        return {"halt": "stop", "measured_after_halt": gt._r(self.q)}


def make_arm(arm, sync=True):
    log = ListLog()
    out = []
    tp = gt.Teleop(arm, arm.q.copy(), log, out=out.append, spawn=lambda fn: fn())
    return tp, log, out


class TestHold(unittest.TestCase):
    """長押し (2026-11-05 作り直し): 0.4 秒で「読んだ角度 + 15° 先」を 1 回送り, 0.1 秒おきに読んで,
    残り 5° 以下になったら次の 15° 先を送る. 届くのを待たない. 長押しが終わったら stop を送る."""

    def test_short_press_is_one_step(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_RIGHT, 0.0)
        tp.poll()
        tp.release(gt.BTN_RIGHT, 0.1)
        for t in (0.4, 0.6, 1.0):
            tp.tick(t)
            tp.poll()
        self.assertEqual(len(arm.sent), 1)

    def test_hold_sends_ahead_of_measured_without_waiting(self):
        arm = LagArm(lag_step=1.0)                    # 読むたびに 1° ずつ目標へ寄る
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()        # 押した瞬間には送らない (11/5)
        for t in (0.1, 0.3, 0.39):
            tp.tick(t); tp.poll()
        self.assertEqual(len(arm.sent), 0)
        t = 0.4
        for _ in range(30):
            tp.tick(t); tp.poll()
            t += 0.1
        rows = [r for r in log.rows if r["kind"] == "move" and r.get("hold_n", 0) >= 1]
        sends = [r for r in rows if r.get("sent") is True]
        waits = [r for r in rows if r.get("why") == "lead_ok"]
        self.assertGreaterEqual(len(sends), 2)        # 30 回読んで, 送ったのは数回だけ
        self.assertLessEqual(len(sends), 4)
        self.assertEqual(len(arm.sent), len(sends))   # 1 刻みは送らない (長押しだけ)
        self.assertEqual(len(sends) + len(waits), 30)
        for r in sends:                               # 動かす関節は 読んだ角度 + 15°, ほかは そのまま
            self.assertAlmostEqual(r["command"][0], r["measured_before"][0] + gt.HOLD_AHEAD_DEG, places=2)
            self.assertEqual(r["command"][1:], HOME[1:])
            self.assertTrue(r["no_check"])
        for r in waits:                               # 送らなかったのは, 残りが 5° より多いとき
            self.assertGreater(r["hold_remaining_deg"], gt.HOLD_REFILL_DEG)
        for r in sends[1:]:                           # 次を送ったのは, 残りが 5° 以下になってから
            self.assertLessEqual(r["hold_lead_deg"], gt.HOLD_REFILL_DEG + 1e-9)
        n = len(arm.sent)
        tp.release(gt.BTN_RIGHT, t)
        tp.poll()
        for t2 in (t + 0.2, t + 0.5):
            tp.tick(t2); tp.poll()
        self.assertEqual(len(arm.sent), n)            # 離したら stop だけ (送り直しはしない. 11/5 16:13)
        self.assertEqual(arm.halts, 1)                # 離したら stop を 1 回送る
        self.assertEqual(arm.sent[-1][1:], HOME[1:])
        halt = [r for r in log.rows if r["kind"] == "halt"]
        self.assertEqual(len(halt), 1)
        self.assertEqual(halt[0]["halt_reason"], "release")
        self.assertTrue(any("[長押し] j0" in o for o in out))     # 離したときに 1 行
        q = arm.q.copy()
        for _ in range(5):
            arm.read()
        self.assertTrue(np.allclose(arm.q, q))        # stop のあと動かない
        self.assertTrue(np.allclose(tp.cmd, q))       # 止まった所が次の出発点

    def test_hold_keeps_other_joints_at_command(self):
        # j1 が重さで 1° 沈んでいても, 長押しの送信で j1 を読んだ値で送り直さない (ずり下がらない)
        arm = LagArm(start=[0, 30.0, 0, 0, 0, -30], lag_step=1.0)
        tp, log, out = make_arm(arm)
        arm.q[1] = 31.0
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        t = 0.4
        for _ in range(5):
            tp.tick(t); tp.poll()
            t += 0.1
        self.assertTrue(all(abs(s[1] - 30.0) < 1e-9 for s in arm.sent))

    def test_hold_direction_and_selected_joint(self):
        tp, arm, log, _ = make()
        tp.sel = 1                                    # j2
        tp.press(gt.BTN_UP, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()
        self.assertAlmostEqual(arm.sent[-1][2], -gt.HOLD_AHEAD_DEG)

    def test_triangle_and_other_buttons_end_hold(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_DOWN, 0.0); tp.poll()
        tp.press(gt.BTN_TRIANGLE, 0.1)
        tp.tick(0.5); tp.poll()
        self.assertEqual(len(arm.sent), 0)
        tp.press(gt.BTN_RIGHT, 1.0); tp.poll()
        tp.press(gt.BTN_CIRCLE, 1.1); tp.poll()       # 爪で止まる
        tp.tick(1.5); tp.poll()
        self.assertEqual(len(arm.sent), 0)
        self.assertEqual(arm.grips, [0])

    def test_stop_ends_hold_and_resume_does_not_revive(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()
        tp.set_triggers(0.5, 0.5)
        tp.tick(0.6); tp.poll()
        self.assertEqual(len(arm.sent), 1)
        self.assertIsNone(tp.hold)
        tp.set_triggers(-1.0, -1.0)
        press(tp, gt.BTN_OPTIONS, 0.7)
        tp.tick(0.9); tp.tick(1.2); tp.poll()
        self.assertEqual(len(arm.sent), 1)

    def test_disconnect_ends_hold(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.controller_lost("controller_disconnected")
        tp.tick(0.5); tp.poll()
        self.assertEqual(len(arm.sent), 0)
        self.assertIsNone(tp.hold)

    def test_limit_ends_hold_without_repeating_lines(self):
        start = [0.0, 80.0, 0.0, 0.0, 0.0, -30.0]
        arm = LagArm(start=start, lag_step=0.5)
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_DOWN, 0.0); tp.poll()         # 80 → 80.5
        tp.tick(0.4); tp.poll()                       # 読んだ角度 + 15 → 90.87 に切る
        self.assertAlmostEqual(arm.sent[-1][1], 90.87)
        t = 0.5
        for _ in range(60):                           # 端へ向かっている間は送らず, 端の手前 3° 以内で長押しを止める
            if tp.hold is None:
                break
            tp.tick(t); tp.poll()
            t += 0.1
        self.assertIsNone(tp.hold)
        self.assertGreater(arm.q[1], 90.87 - gt.REACH_TOL_DEG - 0.3)   # 端の 5° 手前で止めない
        n_rows = len(log.rows)
        for t2 in (t + 0.1, t + 0.5, t + 2.0):
            tp.tick(t2); tp.poll()
        self.assertEqual(len(arm.sent), 1)            # 長押しの 1 回だけ
        self.assertEqual(len(log.rows), n_rows)
        refused = [r for r in log.rows if r.get("refused")]
        self.assertEqual(refused[-1]["refused"][0]["why"], "at_limit")
        self.assertTrue(any(r.get("at_limit_target") for r in log.rows))
        self.assertEqual(arm.halts, 1)

    def test_hold_target_never_goes_back(self):
        # 読みが古く, 前の目標より後ろの「読んだ角度 + 3°」になるときは, 前の目標を送る (引き戻さない)
        arm = LagArm(lag_step=2.0)
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()
        arm.lag_step = 0.0                            # 読みが進まない (古い)
        arm.q[0] = 0.0
        tp.tick(0.5); tp.poll()
        js = [s[0] for s in arm.sent]
        self.assertEqual(js, sorted(js))              # 右へ押している間, 目標は戻らない
        self.assertEqual(log.rows[-1].get("why"), "lead_ok")   # 目標へ向かっている途中なので 送らない

    def test_stall_ends_hold(self):
        arm = LagArm(lag_step=0.0)                    # まったく動かない (当たっている)
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        t = 0.4
        for _ in range(20):
            tp.tick(t); tp.poll()
            t += 0.1
        self.assertIsNone(tp.hold)
        self.assertLessEqual(len(arm.sent), 1 + 12)
        self.assertTrue(any("進まないので止めました" in o for o in out))
        self.assertTrue(all(s[0] <= gt.HOLD_AHEAD_DEG + 1e-9 for s in arm.sent))   # 先へ出るのは 15° まで
        self.assertLessEqual(len(arm.sent), 2 + gt.HOLD_MAX_RESENDS)   # 1 刻み + 長押しの 1 回 + 送り直し (3 回まで)
        self.assertEqual(arm.halts, 1)                # 止めたときに stop を送る

    def test_short_press_after_hold_starts_from_command(self):
        tp, arm, log, _ = make()                      # FakeArm は目標へすぐ着く
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()
        tp.release(gt.BTN_RIGHT, 0.45)
        tp.poll()                                     # 離したときの stop が終わる
        last = arm.sent[-1][0]
        press(tp, gt.BTN_RIGHT, 1.0)
        self.assertAlmostEqual(arm.sent[-1][0], last + 0.5)
        self.assertEqual(log.rows[-1]["start_source"], "command")


class TestHalt(unittest.TestCase):
    """止める命令 (2026-11-05): 長押しの終わり・停止で daemon の stop を送る."""

    def test_stop_during_home_sends_halt(self):
        tp, arm, log, spawned = make([5.0, 0, 0, 0, 0, -30], sync=False)
        tp.press(gt.BTN_HOME, 0.0); tp.tick(1.0)
        spawned.pop()(); tp.poll()                 # HOME を送った (FakeArm はすぐ着くが, 実機は動いている途中)
        tp.set_triggers(1.0, 1.0)
        self.assertEqual(len(spawned), 1)          # 停止中でも stop は送る
        spawned.pop()(); tp.poll()
        self.assertEqual(arm.halts, 1)
        self.assertTrue(tp.stopped)

    def test_halt_waits_for_running_job_and_is_not_cancelled(self):
        tp, arm, log, spawned = make(sync=False)
        tp.press(gt.BTN_RIGHT, 0.0)
        tp.tick(0.4)                               # 長押しの 1 回目 (まだ走らせていない)
        job = spawned.pop()
        job(); tp.poll()                           # 送った
        tp.tick(0.5)                               # 読むだけの仕事
        check = spawned.pop()
        tp.release(gt.BTN_RIGHT, 0.55)             # 離した: 走っている仕事があるので stop は待つ
        self.assertEqual(spawned, [])
        check(); tp.poll()
        self.assertEqual(len(spawned), 1)          # 仕事が終わってから stop
        tp.set_triggers(1.0, 1.0)                  # stop を送る前に停止しても, stop は取り消さない
        spawned.pop()(); tp.poll()
        self.assertGreaterEqual(arm.halts, 1)

    def test_halt_pins_other_joints_no_drift(self):
        # stop のあと j1 が 1° 沈む (11/5 の実機). 止めるたびに 読んだ角度を出発点にすると積み上がった
        arm = LagArm(start=[0, 30.0, 0, 0, 0, -30], lag_step=5.0)
        tp, log, out = make_arm(arm)
        orig_halt = arm.halt
        def sag_halt():
            arm.q[1] += 1.0
            arm.target[1] += 1.0
            return orig_halt()
        arm.halt = sag_halt
        t = 0.0
        for _ in range(5):                            # 長押しを 5 回
            tp.press(gt.BTN_RIGHT, t); tp.poll()
            for k in range(4):
                tp.tick(t + 0.4 + 0.1 * k); tp.poll()
            tp.release(gt.BTN_RIGHT, t + 0.8); tp.poll()
            t += 2.0
        self.assertAlmostEqual(tp.cmd[1], 30.0)       # 指令の j1 は動かない
        self.assertTrue(all(abs(s_[1] - 30.0) < 1e-9 for s_ in arm.sent))
        halts = [r for r in log.rows if r["kind"] == "halt"]
        self.assertEqual(len(halts), 5)
        self.assertTrue(all("pin_sent" not in r for r in halts))   # 止めたあとは何も送らない

    def test_daemon_arm_step_ignores_other_joints_sag(self):
        # j1 が重さで 5° 下がっていても, 動かした j0 が着けば「届いた」 (11/5)
        saved = {k: getattr(gt, k) for k in ("daemon_send_angles", "rpc", "wr", "SPEED", "POLL_SLEEP", "REACH_TIMEOUT_SEC",
                                             "daemon_request")}
        try:
            gt.daemon_request = lambda c, **k: {"ok": True}
            gt.rpc = types.SimpleNamespace(SEND_WAIT=0, read_angles=lambda: np.array([1.0, 45.0, 0, 0, 0, -30]))
            gt.wr = types.SimpleNamespace(_compute_arrival_timeout=lambda d: 8.0)
            gt.daemon_send_angles = lambda a, **k: None
            gt.SPEED, gt.POLL_SLEEP, gt.REACH_TIMEOUT_SEC = 20, 0.0, 8.0
            r = gt.DaemonArm().send_and_check(np.array([1.0, 40.0, 0, 0, 0, -30]), gt.SendGate(), threading.Event(), joint=0)
            self.assertTrue(r["reached"])
        finally:
            for k, v in saved.items():
                setattr(gt, k, v)

    def test_daemon_arm_step_settles_short_without_waiting(self):
        # j2 が重さで 1.6° 手前で止まる: 8 秒待たずに「手前で止まった」で戻る (11/5)
        saved = {k: getattr(gt, k) for k in ("daemon_send_angles", "rpc", "wr", "SPEED", "POLL_SLEEP", "REACH_TIMEOUT_SEC",
                                             "daemon_request")}
        try:
            seq = iter([0.0, -0.3, -0.6, -0.6, -0.6, -0.6, -0.6, -0.6, -0.6, -0.6, -0.6, -0.6] + [-0.6] * 200)
            gt.rpc = types.SimpleNamespace(SEND_WAIT=0, read_angles=lambda: np.array([0.0, 0, next(seq), 0, 0, -30]))
            gt.wr = types.SimpleNamespace(_compute_arrival_timeout=lambda d: 8.0)
            gt.daemon_request = lambda c, **k: {"ok": True}
            gt.SPEED, gt.POLL_SLEEP, gt.REACH_TIMEOUT_SEC = 20, 0.3, 8.0
            t0 = time.monotonic()
            r = gt.DaemonArm().send_and_check(np.array([0.0, 0, -2.0, 0, 0, -30]), gt.SendGate(), threading.Event(), joint=2)
            self.assertLess(time.monotonic() - t0, 1.0)
            self.assertTrue(r["settled"])
            self.assertEqual(r["resends"], [])
        finally:
            for k, v in saved.items():
                setattr(gt, k, v)

    def test_hold_resends_when_stopped_short(self):
        # 次の目標が無視されて前の目標の手前で止まった: 0.3 秒たったら同じ目標を送り直す (11/5)
        arm = LagArm(lag_step=0.0)
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()                       # 15° 先を送った (でも動かない)
        tp.hold_sent["t"] -= 1.0                      # 送ってから 1 秒たったことにする
        tp.tick(0.5); tp.poll()
        self.assertEqual(log.rows[-1].get("hold_resend"), True)
        self.assertEqual(arm.sent[-1], arm.sent[-2])  # 同じ目標
        self.assertEqual(tp.hold_sent["resends"], 1)

    def test_daemon_arm_step_not_moved_returns_and_resends(self):
        saved = {k: getattr(gt, k) for k in ("daemon_send_angles", "rpc", "wr", "SPEED", "POLL_SLEEP", "REACH_TIMEOUT_SEC",
                                             "IGNORED_CHECK_SEC", "daemon_request")}
        try:
            sends = []
            gt.rpc = types.SimpleNamespace(SEND_WAIT=0, read_angles=lambda: np.array([0.0, 0, 0, 0, 0, -30]))
            gt.wr = types.SimpleNamespace(_compute_arrival_timeout=lambda d: 8.0)
            gt.daemon_send_angles = lambda a, **k: self.fail("1 刻みで 6 関節を送った")
            gt.daemon_request = lambda c, **k: (sends.append(c) or {"ok": True})
            gt.SPEED, gt.POLL_SLEEP, gt.REACH_TIMEOUT_SEC, gt.IGNORED_CHECK_SEC = 20, 0.0, 8.0, 0.01
            t0 = time.monotonic()
            r = gt.DaemonArm().send_and_check(np.array([1.0, 0, 0, 0, 0, -30]), gt.SendGate(), threading.Event(), joint=0)
            self.assertLess(time.monotonic() - t0, 1.0)  # 8 秒待たない
            self.assertFalse(r["reached"])              # 1° 動かなければ「届いた」にしない (3° の判定では届いたになっていた)
            self.assertTrue(r["not_moved"])
            self.assertEqual(len(sends), 1 + gt.STEP_MAX_RESENDS)
            self.assertEqual({(c["cmd"], c["joint_id"], c["angle"]) for c in sends}, {("send_angle", 1, 1.0)})
        finally:
            for k, v in saved.items():
                setattr(gt, k, v)

    def test_not_moved_step_accumulates(self):
        tp, arm, log, _ = make()
        def nm(target, gate, quitting, check=True, joint=None):
            gate.run(lambda: arm.sent.append([float(v) for v in target]))
            return {"sent": True, "reached": False, "not_moved": True, "reached_angles": gt._r(arm.q)}
        arm.send_and_check = nm
        press(tp, gt.BTN_RIGHT)
        press(tp, gt.BTN_RIGHT)
        self.assertAlmostEqual(arm.sent[-1][0], 1.0)  # 動かなくても 押した分は積み上がる (0.5 → 1.0)

    def test_short_press_does_not_send_halt(self):
        tp, arm, log, _ = make()
        press(tp, gt.BTN_RIGHT)
        tp.tick(0.5); tp.poll()
        self.assertEqual(getattr(arm, "halts", 0), 0)

    def test_halt_error_does_not_stop_or_loop(self):
        tp, arm, log, _ = make()
        arm.halt = lambda: {"halt_error": "boom", "measured_after_halt": None}
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()
        tp.release(gt.BTN_RIGHT, 0.5); tp.poll()
        self.assertFalse(tp.stopped)
        self.assertFalse(tp.busy)
        self.assertEqual(sum(r["kind"] == "halt" for r in log.rows), 1)

    def test_daemon_arm_halt_falls_back_without_stop_cmd(self):
        calls = []
        saved = {k: getattr(gt, k) for k in ("daemon_request", "daemon_send_angles", "rpc", "SPEED", "HALT_SETTLE_SEC")}
        try:
            gt.daemon_request = lambda c, timeout_override=None: (calls.append(("req", c)) or {"ok": False, "error": "unknown cmd: stop"})
            gt.daemon_send_angles = lambda a, **k: calls.append(("send", a))
            gt.rpc = types.SimpleNamespace(SEND_WAIT=0, read_angles=lambda: np.array([1.0, 2, 3, 4, 5, -30]))
            gt.SPEED = 20
            gt.HALT_SETTLE_SEC = 0.0
            r = gt.DaemonArm().halt()
            self.assertEqual(r["halt"], "send_current")
            self.assertEqual(calls[0], ("req", {"cmd": "stop"}))
            self.assertEqual(calls[1], ("send", [1.0, 2.0, 3.0, 4.0, 5.0, -30.0]))
            gt.daemon_request = lambda c, timeout_override=None: {"ok": True, "result": {"jog_stop": 0, "stop": 0}}
            calls.clear()
            r = gt.DaemonArm().halt()
            self.assertEqual(r["halt"], "stop")
            self.assertEqual(calls, [])
        finally:
            for k, v in saved.items():
                setattr(gt, k, v)

    def test_daemon_arm_check_returns_when_stopped(self):
        # HOME の途中で L2+R2: 届くのを待たずに戻る (戻れば すぐ stop を送れる. レビュー 必須 1)
        saved = {k: getattr(gt, k) for k in ("daemon_send_angles", "rpc", "wr", "SPEED", "POLL_SLEEP", "REACH_TIMEOUT_SEC")}
        try:
            gate = gt.SendGate()
            reads = []
            def read_angles():
                reads.append(1)
                if len(reads) == 3:
                    gate.cancel_now()                  # 動いている途中で停止
                return np.array([20.0, 0, 0, 0, 0, -30]) - len(reads)
            gt.rpc = types.SimpleNamespace(SEND_WAIT=0, read_angles=read_angles)
            gt.wr = types.SimpleNamespace(_compute_arrival_timeout=lambda d: 8.0)
            gt.daemon_send_angles = lambda a, **k: None
            gt.SPEED, gt.POLL_SLEEP, gt.REACH_TIMEOUT_SEC = 20, 0.0, 8.0
            t0 = time.monotonic()
            r = gt.DaemonArm().send_and_check(np.array(HOME), gate, threading.Event())
            self.assertLess(time.monotonic() - t0, 1.0)
            self.assertTrue(r["halted_during_check"])
            self.assertLessEqual(len(reads), 4)
        finally:
            for k, v in saved.items():
                setattr(gt, k, v)

    def test_arm_error_also_sends_halt(self):
        tp, arm, log, _ = make()
        def bad(target, gate, quitting, check=True, joint=None):
            gate.run(lambda: None)
            return {"sent": "unknown", "error": "send_failed: timeout"}
        arm.send_and_check = bad
        press(tp, gt.BTN_RIGHT); tp.poll()
        self.assertTrue(tp.stopped)
        self.assertEqual(arm.halts, 1)
        self.assertEqual(sum(r["kind"] == "halt" for r in log.rows), 1)   # 失敗しても繰り返さない

    def test_exit_during_hold_sends_halt_once(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        tp.tick(0.4); tp.poll()                       # 長押しの目標を送った
        self.assertTrue(tp.shutdown())
        self.assertEqual(arm.halts, 1)
        self.assertEqual([r for r in log.rows if r["kind"] == "halt"][-1]["halt_reason"], "exit")

    def test_exit_when_idle_sends_nothing(self):
        tp, arm, log, _ = make()
        press(tp, gt.BTN_RIGHT)
        self.assertTrue(tp.shutdown())
        self.assertEqual(getattr(arm, "halts", 0), 0)

    def test_dry_arm_hold_moves_on_read_and_halt_stops(self):
        arm = gt.DryArm()
        tp, log, out = make_arm(arm)
        tp.press(gt.BTN_RIGHT, 0.0); tp.poll()
        t = 0.4
        for _ in range(20):
            tp.tick(t); tp.poll()
            t += 0.1
        self.assertGreater(arm.q[0], 15.0)            # 読むたびに寄っていく
        tp.release(gt.BTN_RIGHT, t); tp.poll()
        q = arm.read().copy()
        self.assertTrue(np.allclose(arm.read(), q))


class TestHoldReview(unittest.TestCase):
    """2026-11-03 のレビューの指摘 (A: 受け付けられなかった押し / B: 離したあとの 1 刻み / D: 離した合図の取りこぼし)."""

    def test_press_while_busy_starts_hold_when_free(self):
        # 11/5: 動いている間に押して押し続けていれば, 空いてから長押しになる (向きを変えたとき受付なしにしない)
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_CROSS)                       # 爪の仕事で busy
        self.assertTrue(tp.busy)
        tp.press(gt.BTN_DOWN, 0.0)
        self.assertIsNotNone(tp.hold)
        tp.tick(0.4)                                  # まだ空いていない: 送らない
        self.assertEqual(len(spawned), 1)
        spawned.pop(0)()                              # 爪の仕事が終わる
        tp.poll()
        for t in (0.6, 0.8, 1.0):
            tp.tick(t)
            while spawned:
                spawned.pop(0)()
            tp.poll()
        self.assertGreaterEqual(len(arm.sent), 1)
        self.assertAlmostEqual(arm.sent[0][1], gt.HOLD_AHEAD_DEG)

    def test_press_rejected_while_stopped_does_not_become_hold(self):
        tp, arm, log, _ = make()
        tp.set_triggers(0.5, 0.5)
        tp.press(gt.BTN_RIGHT, 0.0)
        self.assertIsNone(tp.hold)

    def test_release_cancels_uncommitted_repeat(self):
        tp, arm, log, spawned = make(sync=False)
        out = []
        tp.out = out.append
        tp.press(gt.BTN_RIGHT, 0.0)
        tp.tick(0.4)                                  # 長押しの 1 回目の仕事ができた (まだ走っていない)
        tp.release(gt.BTN_RIGHT, 0.45)                # 走る前に離した
        spawned.pop(0)(); tp.poll()
        self.assertEqual(len(arm.sent), 0)
        last = [r for r in log.rows if r["kind"] == "move"][-1]
        self.assertEqual(last["why"], "halted_before_send")
        self.assertTrue(last["released_during_job"])
        self.assertFalse(tp.stopped)
        self.assertFalse(any("停止が入った" in o for o in out))
        tp.press(gt.BTN_RIGHT, 1.0)                   # 次の押しは普通に動く
        tp.release(gt.BTN_RIGHT, 1.05)
        spawned.pop(0)(); tp.poll()
        self.assertEqual(len(arm.sent), 1)

    def test_release_does_not_cancel_first_step(self):
        tp, arm, log, spawned = make(sync=False)
        tp.press(gt.BTN_RIGHT, 0.0)
        tp.release(gt.BTN_RIGHT, 0.05)                # 短い押し: 仕事が走る前に離しても 1 刻みは送る
        spawned.pop(0)(); tp.poll()
        self.assertEqual(len(arm.sent), 1)

    def test_loop_releases_hold_when_button_state_is_up(self):
        import pygame
        pygame.init()
        screen = pygame.display.set_mode((200, 100))
        fonts = {k: pygame.font.SysFont("menlo", 12) for k in ("big", "mono", "small")}
        js = FakeJoystick(0)
        js.held = set()
        tp, arm, log, _ = make()
        frames = {
            0: lambda: pygame.event.post(pygame.event.Event(pygame.JOYDEVICEADDED, device_index=0)),
            2: lambda: (js.held.add(gt.BTN_RIGHT),
                        pygame.event.post(pygame.event.Event(pygame.JOYBUTTONDOWN, instance_id=7, button=gt.BTN_RIGHT, joy=0))),
            4: lambda: js.held.discard(gt.BTN_RIGHT),   # 離した合図 (JOYBUTTONUP) は来ない
            60: lambda: pygame.event.post(pygame.event.Event(pygame.QUIT)),
        }
        seen = {}

        def on_frame(n, t):
            frames.get(n, lambda: None)()
            if n == 3:
                seen["hold_at_3"] = t.hold is not None
        with mock.patch.object(gt.pygame.joystick, "Joystick", lambda i: js):
            gt.run_loop(tp, screen, fonts, "TEST", on_frame=on_frame)
        pygame.quit()
        self.assertTrue(seen["hold_at_3"])            # 押している間は長押しのまま
        self.assertIsNone(tp.hold)                    # 状態が離れたら止まる
        self.assertEqual(len(arm.sent), 1)            # 1 秒近くたっても 1 刻みだけ


class TestCodexR1(unittest.TestCase):
    def test_selected_joint_out_of_window_not_clamped(self):
        # 基準 j1=100 (守りの外) から −0.5 を押しても 90.87 へ 1 回で動かさない
        start = [0.0, 100.0, 0.0, 0.0, 0.0, -30.0]
        p = gt.plan_step(start, 1, -0.5)
        self.assertIsNone(p["target"])
        self.assertEqual(p["refused"][0]["why"], "start_out_of_window")
        tp, arm, log, _ = make(start)
        press(tp, gt.BTN_UP)
        self.assertEqual(arm.sent, [])

    def test_physical_limit_ends(self):
        base = [0.0, 0.0, 170.0, 0.0, 0.0, -30.0]       # j2 の物理可動域は ±177
        p = gt.plan_step(base, 2, 20.0)
        self.assertAlmostEqual(p["target"][2], 177.0)
        self.assertEqual(p["clip"][0]["limit"], "PHYS")

    def test_gap_between_command_and_measured(self):
        tp, arm, log, _ = make()
        press(tp, gt.BTN_RIGHT)                         # 目標 j0=0.5 に届いた
        arm.q[0] = 10.0                                 # 手で動かされた
        press(tp, gt.BTN_RIGHT)
        self.assertAlmostEqual(arm.sent[-1][0], 10.5)   # 今読んだ角度から 0.5
        self.assertEqual(log.rows[-1]["start_source"], "measured")
        arm.q[0] = -170.0                               # 物理可動域 (-156) の外 → 送らない
        press(tp, gt.BTN_RIGHT)
        self.assertEqual(len(arm.sent), 2)

    def test_home_hold_across_busy_is_dropped(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)                         # 動いている
        tp.press(gt.BTN_HOME, 0.0)                      # busy 中に押し始め
        spawned.pop()()
        tp.poll()                                       # 0.5 秒で空く
        tp.tick(1.5)
        self.assertEqual(spawned, [])
        self.assertIn(("home", False, "busy"), [(r["kind"], r.get("accepted"), r.get("reason")) for r in log.rows])

    def test_home_hold_dropped_when_other_op_starts(self):
        tp, arm, log, spawned = make(sync=False)
        tp.press(gt.BTN_HOME, 0.0)
        press(tp, gt.BTN_RIGHT)                         # 長押しの途中で j0 を動かした
        tp.tick(0.2)
        spawned.pop()()
        tp.poll()
        tp.tick(1.5)
        self.assertEqual(spawned, [])
        self.assertIn("hold_cancelled", [r.get("reason") for r in log.rows])

    def test_home_hold_dropped_by_stop_and_disconnect(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_HOME, 0.0)
        tp.set_triggers(1, 1)
        tp.set_triggers(-1, -1)
        press(tp, gt.BTN_OPTIONS)
        tp.tick(1.5)
        self.assertEqual(arm.sent, [])
        tp.r1 = True
        tp.press(gt.BTN_HOME, 2.0)
        tp.controller_lost("controller_disconnected")
        self.assertFalse(tp.r1)
        press(tp, gt.BTN_OPTIONS)
        tp.tick(5.0)
        self.assertEqual(arm.sent, [])

    def test_resume_does_not_revive_old_job(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)
        tp.set_triggers(1, 1)
        tp.set_triggers(-1, -1)
        press(tp, gt.BTN_OPTIONS)                       # すぐ再開
        self.assertFalse(tp.stopped)
        spawned.pop()()                                 # 止める前の仕事が走る
        tp.poll()
        self.assertEqual(arm.sent, [])

    def test_home_read_failure_does_not_send(self):
        tp, arm, log, _ = make([5.0, 0, 0, 0, 0, -30])
        reads = iter([None, np.array(HOME)])
        arm.read = lambda: next(reads)
        tp.press(gt.BTN_HOME, 0.0)
        tp.tick(1.0)
        tp.poll()
        self.assertEqual(arm.sent, [])
        self.assertTrue(tp.stopped)

    def test_log_failure_blocks_resume(self):
        tp, arm, log, _ = make()

        def bad(rec):
            raise OSError("disk gone")
        log.write = bad
        press(tp, gt.BTN_TRIANGLE)
        self.assertTrue(tp.stopped)
        press(tp, gt.BTN_OPTIONS)
        self.assertTrue(tp.stopped)
        press(tp, gt.BTN_RIGHT)
        self.assertEqual(arm.sent, [])

    def test_loop_reads_triggers_before_buttons(self):
        import pygame
        pygame.init()
        screen = pygame.display.set_mode((200, 100))
        fonts = {k: pygame.font.SysFont("menlo", 12) for k in ("big", "mono", "small")}
        js = FakeJoystick(0)
        tp, arm, log, _ = make()
        frames = {
            0: lambda: pygame.event.post(pygame.event.Event(pygame.JOYDEVICEADDED, device_index=0)),
            2: lambda: (js.axes.__setitem__(slice(4, 6), [1.0, 1.0]),
                        pygame.event.post(pygame.event.Event(pygame.JOYBUTTONDOWN, instance_id=7, button=gt.BTN_RIGHT, joy=0))),
            4: lambda: pygame.event.post(pygame.event.Event(pygame.QUIT)),
        }
        with mock.patch.object(gt.pygame.joystick, "Joystick", lambda i: js):
            gt.run_loop(tp, screen, fonts, "TEST", on_frame=lambda n, t: frames.get(n, lambda: None)())
        self.assertEqual(arm.sent, [])
        self.assertTrue(tp.stopped)
        # 読み取りに失敗したコマのボタンも処理しない
        js2 = FakeJoystick(0)
        js2.get_axis = lambda a: (_ for _ in ()).throw(pygame.error("gone"))
        tp2, arm2, log2, _ = make()
        frames2 = {
            0: lambda: pygame.event.post(pygame.event.Event(pygame.JOYDEVICEADDED, device_index=0)),
            2: lambda: pygame.event.post(pygame.event.Event(pygame.JOYBUTTONDOWN, instance_id=7, button=gt.BTN_RIGHT, joy=0)),
            4: lambda: pygame.event.post(pygame.event.Event(pygame.QUIT)),
        }
        with mock.patch.object(gt.pygame.joystick, "Joystick", lambda i: js2):
            gt.run_loop(tp2, screen, fonts, "TEST", on_frame=lambda n, t: frames2.get(n, lambda: None)())
        self.assertEqual(arm2.sent, [])
        self.assertTrue(tp2.stopped)
        pygame.quit()


class TestShutdown(unittest.TestCase):
    def test_uncommitted_job_is_not_sent_at_exit(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)
        tp.shutdown()                                # 仕事はまだ走っていない
        spawned.pop()()                              # 終了のあとに走っても送らない
        self.assertEqual(arm.sent, [])
        last = [r for r in log.rows if r["kind"] == "move"][0]
        self.assertIs(last["send_committed_before_exit"], False)
        self.assertTrue(last["interrupted_at_exit"])

    def test_committed_send_is_waited_and_recorded(self):
        tp, arm, log, _ = make(sync=False)
        release = threading.Event()
        entered = threading.Event()
        orig = arm.send_and_check

        def slow(target, gate, quitting, check=True, joint=None):
            def fn():
                entered.set()
                release.wait(2.0)
                arm.sent.append([float(v) for v in target])
            if not gate.run(fn):
                return {"sent": False, "why": "halted_before_send"}
            return {"sent": True, "reached": None, "interrupted": True}
        arm.send_and_check = slow
        tp.spawn = tp._spawn_thread
        press(tp, gt.BTN_RIGHT)
        entered.wait(1.0)
        threading.Timer(0.2, release.set).start()
        done = tp.shutdown()                          # 送ると決めた送信が戻るまで待つ
        self.assertTrue(done)
        self.assertEqual(len(arm.sent), 1)
        move = [r for r in log.rows if r["kind"] == "move"][0]
        self.assertIs(move["send_committed_before_exit"], True)

    def test_worker_not_done_returns_false(self):
        tp, arm, log, _ = make(sync=False)
        entered = threading.Event()

        def stuck(target, gate, quitting, check=True, joint=None):
            gate.run(lambda: (entered.set(), threading.Event().wait(1.0)))
            return {"sent": True}
        arm.send_and_check = stuck
        tp.spawn = tp._spawn_thread
        press(tp, gt.BTN_RIGHT)
        entered.wait(1.0)
        with mock.patch.object(gt, "WORKER_JOIN_SEC", 0.1):
            self.assertFalse(tp.shutdown())           # 戻らない → main はソケットを閉じない


class TestStop(unittest.TestCase):
    def test_both_triggers(self):
        tp, arm, log, _ = make()
        tp.set_triggers(0.5, -1.0)
        self.assertFalse(tp.stopped)
        tp.set_triggers(-1.0, 0.9)
        self.assertFalse(tp.stopped)
        tp.set_triggers(0.0, 0.0)                  # ちょうど 0.0 は超えていない
        self.assertFalse(tp.stopped)
        tp.set_triggers(0.01, 0.01)
        self.assertTrue(tp.stopped)
        self.assertEqual(tp.state, gt.STATE_STOPPED)

    def test_stopped_rejects_and_options_resumes(self):
        tp, arm, log, _ = make()
        tp.set_triggers(1.0, 1.0)
        for b in (gt.BTN_RIGHT, gt.BTN_DOWN, gt.BTN_CROSS, gt.BTN_CIRCLE):
            press(tp, b)
        tp.press(gt.BTN_HOME, 0.0)
        tp.tick(2.0)
        tp.release(gt.BTN_HOME, 2.0)
        self.assertEqual(arm.sent, [])
        self.assertEqual(arm.grips, [])
        self.assertTrue(all(r.get("reason") == "stopped" for r in log.rows
                            if r["kind"] in ("move", "grip_close", "grip_open", "home")))
        press(tp, gt.BTN_OPTIONS)                  # まだ L2+R2 を押している → 戻らない
        self.assertTrue(tp.stopped)
        tp.set_triggers(-1.0, -1.0)
        press(tp, gt.BTN_OPTIONS)
        self.assertFalse(tp.stopped)
        press(tp, gt.BTN_RIGHT)
        self.assertEqual(len(arm.sent), 1)

    def test_disconnect_and_read_error(self):
        tp, arm, log, _ = make()
        tp.controller_lost("controller_disconnected")
        self.assertTrue(tp.stopped)
        self.assertEqual(log.rows[-1]["kind"], "controller_lost")
        tp2, arm2, log2, _ = make()
        tp2.controller_read_failed("x")
        tp2.controller_read_failed("x")
        self.assertTrue(tp2.stopped)
        self.assertEqual(sum(r["kind"] == "read_error" for r in log2.rows), 1)
        press(tp2, gt.BTN_OPTIONS)                 # 読めないうちは戻らない
        self.assertTrue(tp2.stopped)
        tp2.controller_read_ok()
        press(tp2, gt.BTN_OPTIONS)
        self.assertFalse(tp2.stopped)

    def test_stop_while_moving_blocks_send(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)                    # 仕事を作ったが, まだ走らせていない
        self.assertTrue(tp.busy)
        tp.set_triggers(1.0, 1.0)                  # 動いている間でも停止は受け付ける
        self.assertTrue(tp.stopped)
        spawned.pop()()                            # 仕事が走る: 送る直前に停止を見て送らない
        tp.poll()
        self.assertEqual(arm.sent, [])
        move = [r for r in log.rows if r["kind"] == "move"][0]
        self.assertEqual(move["why"], "halted_before_send")
        self.assertTrue(tp.busy)                   # 停止の stop を送る仕事 (前の仕事が終わってから)
        spawned.pop()()
        tp.poll()
        self.assertFalse(tp.busy)
        self.assertEqual(arm.halts, 1)
        self.assertEqual([r for r in log.rows if r["kind"] == "halt"][0]["halt_reason"], "L2+R2")


class TestHomeHold(unittest.TestCase):
    def test_short_press_does_not_send(self):
        tp, arm, log, _ = make()
        tp.press(gt.BTN_HOME, 10.0)
        tp.tick(10.5)
        tp.tick(10.99)
        tp.release(gt.BTN_HOME, 10.99)
        tp.poll()
        self.assertEqual(arm.sent, [])
        self.assertEqual(log.rows[-1]["kind"], "home_short")

    def test_hold_sends_once(self):
        tp, arm, log, _ = make([5.0, 0, 0, 0, 0, -30])
        tp.press(gt.BTN_HOME, 0.0)
        for t in (0.5, 1.0, 1.5, 3.0, 5.0):
            tp.tick(t)
            tp.poll()
        tp.release(gt.BTN_HOME, 5.0)
        self.assertEqual(arm.sent, [HOME])
        self.assertEqual(sum(r["kind"] == "home" for r in log.rows), 1)
        self.assertFalse(any(r["kind"] == "home_short" for r in log.rows))
        tp.press(gt.BTN_HOME, 6.0)                 # 押し直せば, また 1 回
        tp.tick(7.0)
        tp.poll()
        self.assertEqual(len(arm.sent), 2)


class TestBusy(unittest.TestCase):
    def test_presses_while_moving_are_dropped(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)
        for b in (gt.BTN_RIGHT, gt.BTN_DOWN, gt.BTN_CROSS):
            press(tp, b)
        tp.press(gt.BTN_HOME, 0.0)
        tp.tick(1.5)
        self.assertEqual(len(spawned), 1)           # 仕事は 1 つだけ
        spawned.pop()()
        tp.poll()
        self.assertEqual(len(spawned), 1)           # 最後の十字キー (下) だけ 終わってから送る
        spawned.pop()()
        tp.poll()
        tp.tick(3.0)                                # 長押しのまま空いても, ためた HOME は出ない
        self.assertEqual(spawned, [])
        # 動いている間の十字キーは, 最後の 1 つだけ 終わってから送る (11/5). 爪と HOME は受付なし
        self.assertEqual(arm.sent[0], [0.5, 0, 0, 0, 0, -30])
        busy = [r for r in log.rows if r.get("reason") == "busy"]
        self.assertEqual(len(busy), 2)


class TestDaemonArm(unittest.TestCase):
    def _arm(self, reads):
        it = iter(reads)
        last = [None]

        def read():
            try:
                last[0] = next(it)
            except StopIteration:
                pass
            return None if last[0] is None else np.asarray(last[0], dtype=float)
        return read

    def test_halt_blocks_send(self):
        sends = []
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME])), \
                mock.patch.object(gt, "daemon_send_angles", lambda *a, **k: sends.append(a)):
            gate, quit_ = gt.SendGate(), threading.Event()
            gate.cancel_now()
            r = gt.DaemonArm().send_and_check(np.array(HOME), gate, quit_)
        self.assertEqual(sends, [])
        self.assertFalse(r["sent"])

    def test_single_send_no_retry(self):
        sends = []
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: sends.append((a, k))), \
                mock.patch.object(gt, "REACH_TIMEOUT_SEC", 0.3), \
                mock.patch.object(gt.wr, "_compute_arrival_timeout", lambda d: 0.1), \
                mock.patch.object(gt, "POLL_SLEEP", 0.05):
            r = gt.DaemonArm().send_and_check(np.array([5.0, 0, 0, 0, 0, -30]),
                                              gt.SendGate(), threading.Event())
        self.assertEqual(len(sends), 1)
        self.assertEqual(sends[0][1]["speed"], 20)
        self.assertFalse(r["reached"])
        self.assertTrue(r["sent"])

    def test_ignored_send_is_resent(self):
        # 送っても動かない (無視された) → 0.5 秒後に同じ目標を送り直す → 動いて届く (2026-11-03)
        sends = []
        state = {"q": np.array(HOME, dtype=float)}

        def send(a, **k):
            sends.append(list(a))
            if len(sends) >= 2:                          # 2 回目で通る
                state["q"] = np.array(a, dtype=float)

        target = [5.0, 0, 0, 0, 0, -30]
        with mock.patch.object(gt.rpc, "read_angles", lambda: state["q"].copy()), \
                mock.patch.object(gt, "daemon_send_angles", send), \
                mock.patch.object(gt, "IGNORED_CHECK_SEC", 0.05), \
                mock.patch.object(gt, "POLL_SLEEP", 0.02):
            r = gt.DaemonArm().send_and_check(np.array(target), gt.SendGate(), threading.Event())
        self.assertEqual(len(sends), 2)
        self.assertEqual(sends[1], target)
        self.assertTrue(r["reached"])
        self.assertEqual(len(r["resends"]), 1)

    def test_resend_limited_and_not_when_moving(self):
        sends = []
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: sends.append(a)), \
                mock.patch.object(gt, "IGNORED_CHECK_SEC", 0.02), \
                mock.patch.object(gt, "REACH_TIMEOUT_SEC", 0.5), \
                mock.patch.object(gt.wr, "_compute_arrival_timeout", lambda d: 0.1), \
                mock.patch.object(gt, "POLL_SLEEP", 0.01):
            r = gt.DaemonArm().send_and_check(np.array([5.0, 0, 0, 0, 0, -30]), gt.SendGate(), threading.Event())
        self.assertEqual(len(sends), 1 + gt.IGNORED_MAX_RESENDS)
        self.assertFalse(r["reached"])
        # 動いている (届いていないが 0.3° 以上動いた) なら送り直さない
        sends.clear()
        moving = [HOME] + [[0.5 * (i + 1), 0, 0, 0, 0, -30] for i in range(6)]
        with mock.patch.object(gt.rpc, "read_angles", self._arm(moving)), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: sends.append(a)), \
                mock.patch.object(gt, "IGNORED_CHECK_SEC", 0.0), \
                mock.patch.object(gt, "REACH_TIMEOUT_SEC", 0.2), \
                mock.patch.object(gt.wr, "_compute_arrival_timeout", lambda d: 0.1), \
                mock.patch.object(gt, "POLL_SLEEP", 0.01):
            gt.DaemonArm().send_and_check(np.array([9.0, 0, 0, 0, 0, -30]), gt.SendGate(), threading.Event())
        self.assertEqual(len(sends), 1)

    def test_no_resend_after_stop(self):
        sends = []
        gate = gt.SendGate()
        reads = {"n": 0}

        def read():
            reads["n"] += 1
            if reads["n"] == 2:
                gate.cancel_now()                         # 確かめる途中で L2+R2
            return np.array(HOME, dtype=float)
        with mock.patch.object(gt.rpc, "read_angles", read), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: sends.append(a)), \
                mock.patch.object(gt, "IGNORED_CHECK_SEC", 0.0), \
                mock.patch.object(gt, "POLL_SLEEP", 0.01):
            r = gt.DaemonArm().send_and_check(np.array([5.0, 0, 0, 0, 0, -30]), gate, threading.Event())
        self.assertEqual(len(sends), 1)
        self.assertTrue(r["halted_during_check"])

    def test_reached(self):
        target = [1.0, 0, 0, 0, 0, -30]
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME, [0.5, 0, 0, 0, 0, -30]])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: None):
            r = gt.DaemonArm().send_and_check(np.array(target), gt.SendGate(), threading.Event())
        self.assertTrue(r["reached"])
        self.assertEqual(r["reach_err"], 0.5)

    def test_reach_uses_unrounded_error(self):
        target = [3.004, 0, 0, 0, 0, -30]
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: None), \
                mock.patch.object(gt, "REACH_TIMEOUT_SEC", 0.2), \
                mock.patch.object(gt.wr, "_compute_arrival_timeout", lambda d: 0.1), \
                mock.patch.object(gt, "POLL_SLEEP", 0.05):
            r = gt.DaemonArm().send_and_check(np.array(target), gt.SendGate(), threading.Event())
        self.assertFalse(r["reached"])

    def test_read_none_during_check_is_error(self):
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME, None])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: None):
            r = gt.DaemonArm().send_and_check(np.array([5.0, 0, 0, 0, 0, -30]), gt.SendGate(), threading.Event())
        self.assertTrue(r["sent"])
        self.assertEqual(r["error"], "read_failed_during_check")
        self.assertIsNone(r["reached"])

    def test_stop_does_not_wait_and_reports_commit(self):
        # 送ると決めて送信 (通信) の最中に停止が来ても, 停止は待たない. 決めていたことを返す.
        # 停止のあとに「送ると決める」ことはない
        gate = gt.SendGate()
        entered, release = threading.Event(), threading.Event()

        def slow_send():
            entered.set()
            release.wait(2.0)
        t = threading.Thread(target=lambda: gate.run(slow_send))
        t.start()
        entered.wait(1.0)
        got = []
        stopper = threading.Thread(target=lambda: got.append(gate.cancel_now()))
        stopper.start()
        stopper.join(0.5)
        self.assertFalse(stopper.is_alive())         # 待たされない
        self.assertEqual(got, [True])                # 停止より前に送ると決めていた
        release.set()
        t.join(2.0)
        self.assertFalse(gate.run(lambda: self.fail("取り消しのあとに送った")))
        g2 = gt.SendGate()
        self.assertFalse(g2.cancel_now())            # まだ決めていない仕事は送らない
        self.assertFalse(g2.run(lambda: self.fail("取り消しのあとに送った")))

    def test_send_uses_rpc_timeout(self):
        seen = []
        with mock.patch.object(gt.rpc, "read_angles", self._arm([HOME])), \
                mock.patch.object(gt, "daemon_send_angles", lambda a, **k: seen.append(k)):
            gt.DaemonArm().send_and_check(np.array(HOME), gt.SendGate(), threading.Event())
        self.assertEqual(seen[0]["timeout_override"], gt.SEND_RPC_TIMEOUT_SEC)

    def test_stop_log_says_whether_send_was_committed(self):
        tp, arm, log, spawned = make(sync=False)
        press(tp, gt.BTN_RIGHT)
        tp.set_triggers(1, 1)                       # まだ送ると決めていない
        stop = [r for r in log.rows if r["kind"] == "stop"][0]
        self.assertIs(stop["send_committed_before_stop"], False)

    def test_gripper_gate(self):
        calls = []
        with mock.patch.object(gt, "daemon_set_gripper_value", lambda v: calls.append(("close", v))), \
                mock.patch.object(gt, "daemon_set_gripper", lambda s, wait: calls.append(("open", s, wait))), \
                mock.patch.object(gt.rpc, "GRIPPER_SLEEP", 0.0):
            arm = gt.DaemonArm()
            self.assertTrue(arm.gripper(1, gt.SendGate()))
            self.assertTrue(arm.gripper(0, gt.SendGate()))
            g = gt.SendGate()
            g.cancel_now()
            self.assertFalse(arm.gripper(1, g))
        self.assertEqual(calls, [("close", 20), ("open", 0, gt.rpc.GRIP_OPEN_DAEMON_WAIT)])


class FakeJoystick:
    def __init__(self, idx):
        self.axes = [0.0, 0.0, 0.0, 0.0, -1.0, -1.0]

    def get_instance_id(self):
        return 7

    def get_name(self):
        return "PS4 Controller"

    def get_guid(self):
        return "fake-guid"

    def get_numaxes(self):
        return 6

    def get_numbuttons(self):
        return 16

    def get_numhats(self):
        return 0

    def get_axis(self, a):
        return self.axes[a]

    def get_button(self, b):
        return 1 if b in getattr(self, "held", set()) else 0


class TestDryRunMain(unittest.TestCase):
    def test_flow(self):
        import pygame
        js_holder = {}

        def make_js(idx):
            js_holder["js"] = FakeJoystick(idx)
            return js_holder["js"]

        def btn(b, down=True):
            t = pygame.JOYBUTTONDOWN if down else pygame.JOYBUTTONUP
            pygame.event.post(pygame.event.Event(t, instance_id=7, button=b, joy=0))

        # フレームごとの台本 (ドライランは 1 回 0.3 秒動いている扱い = 60fps で 18 コマ程度)
        script = {
            1: lambda: pygame.event.post(pygame.event.Event(pygame.JOYDEVICEADDED, device_index=0)),
            3: lambda: (btn(gt.BTN_RIGHT), btn(gt.BTN_RIGHT, False)),
            5: lambda: (btn(gt.BTN_RIGHT), btn(gt.BTN_RIGHT, False)),       # 動いている間 → 終わってから送る (11/5)
            40: lambda: btn(gt.BTN_TRIANGLE),
            42: lambda: (btn(gt.BTN_DOWN), btn(gt.BTN_DOWN, False)),
            80: lambda: btn(gt.BTN_CROSS),
            82: lambda: js_holder["js"].axes.__setitem__(slice(4, 6), [0.5, 0.5]),   # 停止
            85: lambda: (btn(gt.BTN_LEFT), btn(gt.BTN_LEFT, False)),
            86: lambda: js_holder["js"].axes.__setitem__(slice(4, 6), [-1.0, -1.0]),
            88: lambda: btn(gt.BTN_OPTIONS),
            150: lambda: btn(gt.BTN_HOME),
            230: lambda: btn(gt.BTN_HOME, False),
            300: lambda: pygame.event.post(pygame.event.Event(pygame.QUIT)),
        }

        def on_frame(n, tp):
            if n in script:
                script[n]()

        logs = []

        class SpyNullLog(gt.NullLog):         # 書かないことは変えずに, 渡された行だけ見る
            def __init__(self):
                self.rows = []
                logs.append(self)

            def write(self, rec):
                json.dumps(rec, ensure_ascii=False)
                self.rows.append(rec)

        out = []
        with tempfile.TemporaryDirectory() as td, \
                mock.patch.object(gt, "LOG_ROOT", Path(td)), \
                mock.patch.object(gt, "ensure_ssd_mounted", side_effect=AssertionError("KIOXIA を確かめた")), \
                mock.patch.object(gt, "load_daemon_modules", side_effect=AssertionError("daemon の送り口を読んだ")), \
                mock.patch.object(gt, "JsonlLog", side_effect=AssertionError("log.jsonl を開いた")), \
                mock.patch.object(gt, "write_json_atomic", side_effect=AssertionError("meta.json を書いた")), \
                mock.patch.object(gt.shutil, "copy2", side_effect=AssertionError("スクリプトを写した")), \
                mock.patch.object(gt, "NullLog", SpyNullLog), \
                mock.patch.object(gt.pygame.joystick, "Joystick", make_js), \
                mock.patch.object(gt, "GRIPPER_SLEEP", 0.2), \
                mock.patch.object(gt, "get_daemon_socket", side_effect=AssertionError("daemon に触った")), \
                mock.patch.object(gt, "daemon_send_angles", side_effect=AssertionError("daemon に送った")), \
                mock.patch("builtins.print", lambda *a, **k: out.append(" ".join(str(x) for x in a))):
            gt.main([], on_frame=on_frame)
            self.assertEqual(list(Path(td).iterdir()), [])        # フォルダも作らない
        self.assertEqual(len(logs), 1)
        rows = logs[0].rows
        self.assertIn("[記録] ドライランなので記録しません", out)
        self.assertIn("[終了] アームは動かしていません。記録なし（ドライラン）", out)
        kinds = [(r["kind"], r.get("accepted"), r.get("reason")) for r in rows]
        # 受け付けた 1 回目の行は届いてから書くので, 動いている間に断った行 (busy) が先に来る
        self.assertIn(("move", True), [k[:2] for k in kinds])
        self.assertIn(("select_joint", True, None), kinds)
        self.assertIn(("stop", True, "L2+R2"), kinds)
        self.assertIn(("move", False, "stopped"), kinds)
        self.assertIn(("resume", True, None), kinds)
        home = [r for r in rows if r["kind"] == "home"]
        self.assertEqual(len(home), 1)
        self.assertEqual(home[0]["command"], HOME)
        moves = [r for r in rows if r["kind"] == "move" and r.get("sent") is True]
        self.assertEqual(moves[0]["command"], [0.5, 0, 0, 0, 0, -30])
        self.assertEqual(moves[1]["command"], [1.0, 0, 0, 0, 0, -30])        # 動いている間の押しは 終わってから (11/5)
        self.assertEqual(moves[2]["command"], [1.0, 0.0, 0.5, 0, 0, -30])    # △ で j2 にしてから下
        for r in moves:
            for key in ("t", "button", "kind", "selected_joint", "step_deg", "measured_before",
                        "command", "reached_angles", "reached", "grip_state", "clip", "stopped"):
                self.assertIn(key, r)
        self.assertTrue(all(r["execute"] is False for r in rows))


class TestExecuteMainRecords(unittest.TestCase):
    """--execute は今までどおり KIOXIA (ここでは一時フォルダ) に log.jsonl・meta.json・写しを書く."""

    def test_execute_writes(self):
        import pygame
        script = {
            1: lambda: pygame.event.post(pygame.event.Event(pygame.JOYDEVICEADDED, device_index=0)),
            3: lambda: (pygame.event.post(pygame.event.Event(pygame.JOYBUTTONDOWN, instance_id=7,
                                                             button=gt.BTN_RIGHT, joy=0)),
                        pygame.event.post(pygame.event.Event(pygame.JOYBUTTONUP, instance_id=7,
                                                             button=gt.BTN_RIGHT, joy=0))),
            60: lambda: pygame.event.post(pygame.event.Event(pygame.QUIT)),
        }
        sends = []
        q = {"now": list(HOME)}

        def send(a, **k):
            sends.append(list(a))
            q["now"] = list(a)

        with tempfile.TemporaryDirectory() as td, \
                mock.patch.object(gt, "LOG_ROOT", Path(td)), \
                mock.patch.object(gt, "ensure_ssd_mounted", lambda: None), \
                mock.patch.object(gt.pygame.joystick, "Joystick", FakeJoystick), \
                mock.patch.object(gt, "get_daemon_socket", lambda: None), \
                mock.patch.object(gt, "close_daemon_socket", lambda: None), \
                mock.patch.object(gt.rpc, "install_daemon_lock", lambda: None), \
                mock.patch.object(gt.rpc, "read_angles", lambda: np.array(q["now"], dtype=float)), \
                mock.patch.object(gt, "daemon_send_angles", send), \
                mock.patch.object(gt, "daemon_request", lambda c, **k: (sends.append(("send_angle", c["joint_id"], c["angle"]))
                                                                        or {"ok": True})), \
                mock.patch("builtins.print", lambda *a, **k: None):
            gt.main(["--execute"], on_frame=lambda n, tp: script[n]() if n in script else None)
            runs = list(Path(td).iterdir())
            self.assertEqual(len(runs), 1)
            run = runs[0]
            self.assertFalse(run.name.endswith("_dry"))
            rows = [json.loads(x) for x in (run / "log.jsonl").read_text().splitlines()]
            meta = json.loads((run / "meta.json").read_text())
            self.assertTrue((run / "gamepad_teleop.py").exists())
        self.assertEqual(sends, [("send_angle", 1, 0.5)])   # 十字キーは動かす関節だけを送る (11/5)
        self.assertEqual([(r["kind"], r.get("sent")) for r in rows], [("move", True)])
        self.assertTrue(rows[0]["execute"])
        self.assertEqual(meta["controllers"][0]["name"], "PS4 Controller")
        self.assertEqual(meta["controllers"][0]["guid"], "fake-guid")
        self.assertTrue(meta["execute"])
        self.assertEqual(meta["end_reason"], "window_closed")
        self.assertEqual(meta["n_sent"], 1)
        self.assertEqual(meta["guards"]["J1_MAX_DEG"], 90.87)
        self.assertEqual(meta["motion"]["speed"], 20)
        for key in ("python", "pygame", "sdl", "start_pose", "git"):
            self.assertIn(key, meta)


class TestNoCv2InDryRun(unittest.TestCase):
    """依頼 69: ドライランは cv2 (cv2/.dylibs/libSDL2) を読まず, objc の重複の警告が出ない.
    このプロセスはもう load_daemon_modules() を呼んでいるので, 別のプロセスで main([]) を回す."""

    CHILD = r'''
import os, sys, tempfile
os.environ["SDL_VIDEODRIVER"] = "dummy"; os.environ["SDL_AUDIODRIVER"] = "dummy"
sys.path.insert(0, sys.argv[1])
from pathlib import Path
import gamepad_teleop as gt
import pygame
td = tempfile.mkdtemp()
gt.LOG_ROOT = Path(td)
gt.SSD_MOUNT = "/nonexistent_kioxia_for_test"     # KIOXIA がなくても動く
gt.main([], on_frame=lambda n, tp: pygame.event.post(pygame.event.Event(pygame.QUIT)) if n == 5 else None)
assert os.listdir(td) == [], os.listdir(td)
bad = [m for m in ("cv2", "run_policy_client", "visual_servo_pick", "j0_sweep_scan") if m in sys.modules]
assert not bad, bad
assert gt.rpc is None and gt.daemon_send_angles is None
print("CHILD_OK")
'''

    def test_dry_run_in_fresh_process(self):
        r = subprocess.run([sys.executable, "-c", self.CHILD, str(Path(gt.__file__).parent)],
                           capture_output=True, text=True, timeout=60)
        self.assertEqual(r.returncode, 0, r.stdout + r.stderr)
        self.assertIn("CHILD_OK", r.stdout)
        self.assertNotIn("is implemented in both", r.stderr)


class TestConstantsMatchModules(unittest.TestCase):
    """読み込まずに読んだ値が, 読み込んだモジュールの値と同じ."""

    def test_same(self):
        self.assertEqual(gt.HOME, [float(v) for v in gt.rpc.HOME])
        self.assertEqual(gt.J4_SAFE, tuple(float(v) for v in gt.rpc.J4_SAFE))
        self.assertEqual(gt.GRIPPER_SLEEP, gt.rpc.GRIPPER_SLEEP)
        self.assertEqual(gt.JOINT_LIMITS, [tuple(float(v) for v in x) for x in gt.wr.JOINT_LIMITS])
        self.assertEqual((gt.SPEED, gt.POLL_SLEEP, gt.REACH_TIMEOUT_SEC), (20, 0.3, 8.0))

    def test_read_constants_rejects_double_assignment(self):
        with tempfile.TemporaryDirectory() as td:
            f = Path(td) / "m.py"
            f.write_text("A = 1\nA = 2\n")
            with self.assertRaises(RuntimeError):
                gt.read_constants(f, ("A",))
            with self.assertRaises(RuntimeError):
                gt.read_constants(f, ("B",))
            for src in ("A = 1\nA += 1\n", "A = 1\nA: int = 2\n", "A = 1\nB = A = 2\n",
                        "A = 1\nfor A in []:\n    pass\n", "A = 1\ndef f():\n    global A\n    A = 2\n"):
                f.write_text(src)
                with self.assertRaises(RuntimeError, msg=src):
                    gt.read_constants(f, ("A",))
            f.write_text("A = 1\ndef f():\n    return A\n")
            self.assertEqual(gt.read_constants(f, ("A",)), {"A": 1})


class TestExecuteLoadGuards(unittest.TestCase):
    def test_no_load_when_ssd_missing(self):
        with mock.patch.object(gt, "ensure_ssd_mounted", side_effect=SystemExit("no ssd")), \
                mock.patch.object(gt, "load_daemon_modules") as load:
            with self.assertRaises(SystemExit) as cm:
                gt.main(["--execute"])
        self.assertEqual(str(cm.exception), "no ssd")
        load.assert_not_called()

    def test_load_failure_aborts_before_record(self):
        with tempfile.TemporaryDirectory() as td, \
                mock.patch.object(gt, "LOG_ROOT", Path(td)), \
                mock.patch.object(gt, "ensure_ssd_mounted", lambda: None), \
                mock.patch.object(gt, "load_daemon_modules", side_effect=ImportError("x")), \
                mock.patch.object(gt, "get_daemon_socket", side_effect=AssertionError("daemon に触った")):
            with self.assertRaises(SystemExit) as cm:
                gt.main(["--execute"])
            self.assertIn("[ABORT]", str(cm.exception))
            self.assertEqual(list(Path(td).iterdir()), [])

    def test_mismatch_aborts_in_fresh_process(self):
        """ファイルから読んだ値と読み込んだ値が違えば, daemon の送り口を入れずに止める (別のプロセス)."""
        child = r'''
import os, sys, tempfile
os.environ["SDL_VIDEODRIVER"] = "dummy"
sys.path.insert(0, sys.argv[1])
from pathlib import Path
import gamepad_teleop as gt
gt.HOME = [1.0, 0.0, 0.0, 0.0, 0.0, -30.0]
td = tempfile.mkdtemp()
gt.LOG_ROOT = Path(td)
gt.ensure_ssd_mounted = lambda: None
try:
    gt.main(["--execute"])
except SystemExit as e:
    assert "HOME" in str(e), e
else:
    raise AssertionError("止まらなかった")
assert os.listdir(td) == [], os.listdir(td)
assert gt.rpc is None and gt.daemon_send_angles is None and gt.get_daemon_socket is None
print("CHILD_OK")
'''
        r = subprocess.run([sys.executable, "-c", child, str(Path(gt.__file__).parent)],
                           capture_output=True, text=True, timeout=60)
        self.assertEqual(r.returncode, 0, r.stdout + r.stderr)
        self.assertIn("CHILD_OK", r.stdout)


if __name__ == "__main__":
    unittest.main()
```

### jog_probe.sh

#### tools/jog_probe.sh

```bash
#!/bin/bash
# jog_probe.sh — Mac から, Pi の mechArm で根元 j0 を 4 つの動かし方で動かし, なめらかさと限界を測る (2026-11-03)
#
#   tools/jog_probe.sh     A 1 回の send_angles / B 送り直し (今の長押し) / C 送り直し + fresh_mode / D jog (speed 10・30)
#                          テストごとに Enter で進む。q と Enter で止める
#
# 流れ (tools/servo_check.sh と同じ):
#   0. KIOXIA のマウントを確かめ, diag/jog_probe_{日時}/ を作る
#   1. tools/pi/jog_probe_pi.py を Pi へ送る
#   2. デーモンを止める (シリアルを直接使うため). 止まったこと・5555 とシリアルが空いたことを確かめる
#   3. Pi で jog_probe_pi.py を流す (PYTHONPATH に 2.9.6 の置き場所を入れる)
#   4. 終わったら (途中で止めても) 測るプロセスが残っていれば止め, 結果の JSON を持ち帰り, デーモンを元の起動のしかたで戻す
# 画面の出力は全部 console.txt に残す。

set -u
PI=ubuntu@192.168.2.1
KEY="$HOME/.ssh/id_rsa_pi"
SSH_OPTS=(-i "$KEY" -o ConnectTimeout=5 -o ServerAliveInterval=5 -o ServerAliveCountMax=3)   # 切れたら約 15 秒で返る
SSH=(ssh "${SSH_OPTS[@]}" "$PI")           # 標準入力を使うもの (heredoc)
SSHN=(ssh -n "${SSH_OPTS[@]}" "$PI")       # 端末の入力を読まないもの
UNIT=mecharm-daemon.service
DATA_ROOT="${SERVO_CHECK_DATA_ROOT:-/Volumes/KIOXIA/r2r2r-data}"
PI_SCRIPT=/home/ubuntu/jog_probe_pi.py
PI_PYTHONPATH=/usr/local/lib/python2.7/dist-packages   # 対話シェルの ~/.bashrc と同じ (pymycobot 2.9.6)
DAEMON_UP_WAIT=${SERVO_CHECK_UP_WAIT:-60}   # 戻したデーモンが 5555 を開くまで待つ上限 (秒)
HERE="$(cd "$(dirname "$0")" && pwd)"

SET=base
case "${1:-}" in
    "") ;;
    stop) SET=stop ;;   # 2026-11-05: 止め方を比べる (jog_stop / stop / 今の角度へ send_angles)
    hold) SET=hold ;;   # 2026-11-05: 遠い目標を途中で止める・jog_stop の確かさ
    small) SET=small ;; # 2026-11-05: 1°・2° の小さな動きがどの送り方なら通るか
    *) echo "使い方: $0 [stop|hold|small]" >&2; exit 2 ;;
esac

if [ ! -d "$DATA_ROOT/diag" ]; then
    echo "ABORT: $DATA_ROOT/diag がない (KIOXIA がマウントされていない?)" >&2
    exit 1
fi
STAMP=$(date +%Y%m%d_%H%M%S)
OUT="$DATA_ROOT/diag/jog_probe_$STAMP"
[ "$SET" != base ] && OUT="${OUT}_$SET"
if [ -e "$OUT" ]; then
    echo "ABORT: $OUT がすでにある" >&2
    exit 1
fi
mkdir "$OUT" || exit 1
PI_OUT=/tmp/jog_probe_$STAMP.json

# Pi のデーモンの状態を key=value で出す
remote_state() {
    "${SSH[@]}" 'bash -s' <<'REMOTE'
pid=$(pgrep -f '[m]echarm_daemon\.py' | head -n 1)
if [ "$(systemctl is-active mecharm-daemon.service 2>/dev/null)" = active ]; then mode=systemd
elif [ -n "$pid" ]; then mode=manual
else mode=none; fi
echo "mode=$mode"
echo "pid=${pid:-なし}"
if ss -ltn | grep -q ':5555 '; then echo "listen=yes"; else echo "listen=no"; fi
if [ -n "$pid" ]; then
    pp=$(tr '\0' '\n' < /proc/$pid/environ 2>/dev/null | sed -n 's/^PYTHONPATH=//p')
    echo "daemon_pythonpath=${pp:-(なし)}"
fi
# /dev/ttyAMA0 を開いているプロセス (root のものも見るため sudo。読めなければ「不明」)
if sudo -n true 2>/dev/null; then
    u=$(sudo -n find /proc/[0-9]*/fd -lname /dev/ttyAMA0 2>/dev/null | cut -d/ -f3 | sort -u | tr '\n' ' ')
    u=${u% }
    echo "serial_users=${u:-(なし)}"
else
    echo "serial_users=不明"
fi
if pgrep -f '[j]og_probe_pi\.py' > /dev/null; then echo "checker=yes"; else echo "checker=no"; fi
REMOTE
}

state_val() { sed -n "s/^$1=//p" <<<"$2" | head -n 1; }

MODE=""
RESTORED=0
restore() {                 # デーモンを元に戻す (MODE が決まる前に終わったときは何もしない)
    [ "$RESTORED" = 1 ] && return
    RESTORED=1
    [ -n "$MODE" ] || return
    # 点検のプロセスが残っていれば止めてから戻す (シリアルを二重に開かない)
    "${SSHN[@]}" "pkill -INT -f '[j]og_probe_pi\.py'; for i in 1 2 3 4 5; do pgrep -f '[j]og_probe_pi\.py' > /dev/null || exit 0; sleep 1; done; pkill -KILL -f '[j]og_probe_pi\.py'; sleep 1"
    scp -i "$KEY" -q -o ConnectTimeout=5 "$PI:$PI_OUT" "$OUT/result.json" 2>/dev/null &&
        echo "結果の JSON: $OUT/result.json" || echo "結果の JSON は持ち帰れなかった"
    case "$MODE" in
        systemd)
            echo "--- デーモンを戻す (systemctl start)"
            "${SSHN[@]}" "sudo systemctl start $UNIT" ;;
        manual)
            echo "--- デーモンを戻す (対話シェルで手で起動)"
            "${SSHN[@]}" 'bash -ic "nohup python3 /home/ubuntu/mecharm_daemon.py >> /home/ubuntu/daemon.log 2>&1 &"' ;;
        *) return ;;
    esac
    local i st
    for ((i = 0; i < DAEMON_UP_WAIT; i += 5)); do
        st=$(remote_state)
        [ "$(state_val listen "$st")" = yes ] && break
        sleep 5
    done
    echo "$st"
    if [ "$(state_val listen "$st")" = yes ]; then
        echo "デーモンは戻った (5555 LISTEN)"
        case "$(state_val daemon_pythonpath "$st")" in
            *python2.7*) ;;
            *) echo "注意: デーモンの PYTHONPATH に python2.7 がない (pymycobot 4.0.4 を読んでいるかもしれない)" ;;
        esac
    else
        echo "注意: デーモンが 5555 を開いていない。tools/daemon_ctl.sh status で確かめる"
    fi
}

main() {
    echo "jog_probe $STAMP (結果: $OUT)"
    trap 'restore' EXIT
    trap 'exit 130' INT TERM

    scp -i "$KEY" -q -o ConnectTimeout=5 "$HERE/pi/jog_probe_pi.py" "$PI:$PI_SCRIPT" || { echo "ABORT: Pi へ送れなかった"; exit 1; }

    echo "--- デーモンの状態 (止める前)"
    local st
    st=$(remote_state) || { echo "ABORT: Pi につながらない"; exit 1; }
    echo "$st"
    MODE=$(state_val mode "$st")
    case "$MODE" in
        systemd) "${SSHN[@]}" "sudo systemctl stop $UNIT" ;;
        manual) "${SSHN[@]}" "pkill -TERM -f '[m]echarm_daemon\.py'" ;;
        none) echo "デーモンは動いていない (終わったあとも起動しない)" ;;
        *) echo "ABORT: デーモンの状態が読めない"; MODE=""; exit 1 ;;
    esac
    local i
    for ((i = 0; i < 10; i++)); do
        st=$(remote_state)
        [ "$(state_val pid "$st")" = なし ] && [ "$(state_val listen "$st")" = no ] && break
        sleep 1
    done
    echo "--- デーモンの状態 (止めたあと)"
    echo "$st"
    if [ "$(state_val pid "$st")" != なし ]; then
        echo "ABORT: デーモンが止まらない"
        exit 1
    fi
    if [ "$(state_val listen "$st")" != no ]; then
        echo "ABORT: 5555 がまだ開いている"
        exit 1
    fi
    if [ "$(state_val serial_users "$st")" != "(なし)" ]; then
        echo "ABORT: /dev/ttyAMA0 を開いているプロセスがある・確かめられない ($(state_val serial_users "$st"))"
        exit 1
    fi

    ssh -tt "${SSH_OPTS[@]}" "$PI" "PYTHONPATH=$PI_PYTHONPATH python3 -u $PI_SCRIPT --out $PI_OUT --set $SET"
    local rc=$?
    echo "--- jog_probe_pi.py の終了コード: $rc"
    exit "$rc"
}

main 2>&1 | tee -i "$OUT/console.txt"
exit "${PIPESTATUS[0]}"
```

### jog_probe_pi.py

#### tools/pi/jog_probe_pi.py

```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""jog_probe_pi.py — 根元 j0 で 4 つの動かし方を測り, mechArm がどこまでなめらかに動くかを見る (2026-11-03)

Mac の tools/jog_probe.sh から呼ぶ (デーモンを止めてから, シリアルに直接つなぐ)。
Pi の python3 は 3.6, pymycobot 2.9.6 (PYTHONPATH=/usr/local/lib/python2.7/dist-packages)。

測るもの (どれも j0 だけを動かす. 始める前に HOME 近くにいること. 各テストのあと始めの角度へ戻す):
  0. 読み取り: get_angles を 40 回. 1 回の時間と, 空で返る割合
  A. 1 回の send_angles (+10°, speed 20): 着くまでの時間と最高速度 (アーム自体の速さ)
  B. 送り直し (今のゲームパッドの長押しと同じ): 0.1 秒おきに「読んだ角度 + 3°」を send_angles. 1 秒
  C. B と同じ. ただし set_fresh_mode(1) (前の動きを待たずに上書き)
  D. jog_angle(1, 向き, speed) を 1 秒 → jog_stop. speed 10 と 30
各テストで: 進んだ角度・平均の速さ・0.1 秒ごとの速さのばらつき (なめらかさ)・止まった区間の割合・
止める命令のあとに進んだ角度 (行きすぎ) を出す。生の記録 (時刻と角度) は --out の JSON に入る。

守り: j0 が始めの角度から JOG_GUARD_DEG (25°) 離れたら, jog_stop・stop・今の角度へ send_angles を送ってそのテストを止める。

--set stop (2026-11-05 追加): 1 回目 (11/5 15:34) で, jog_stop のあとも j0 が同じ速さで動き続けたため,
止め方を比べる。jog (speed 5・10) と, 遠い目標への 1 回の send_angles (speed 10・20) を 1 秒動かし,
jog_stop / stop / hold (今の角度へ send_angles) のどれで止まるかと, 止める命令のあとに進んだ角度を測る。
jog_angle の向きは, 1 回目の実機で 1 を送ると j0 が減った (説明書きと逆) ので, JOG_DIR で合わせる。

--set hold (2026-11-05 追加): 2 回目 (15:39) で, jog は send_angles では止まらず (hold が効かない),
stop は効いたり効かなかったり, jog_stop も 1 回目は効かなかった。遠い目標への send_angles は
1 秒で目標に着いてしまい, 途中で止める試しになっていなかった。そこで,
G: 遠い目標 (20°) へ送り, 動いている途中 (0.4〜0.5 秒) で止める (hold / stop)
H: jog speed 10 を jog_stop で止めるのを 3 回 (止まる確かさ) を測る。

--set small (2026-11-05 追加): ゲームパッドの 1 刻み (1°・2°) が動いたり動かなかったりする. どの送り方なら
小さな動きが通るかを測る. 腕を少し前に倒した姿勢 SMALL_POSE (j1 が重さで指令より下がる. 11/5 の実機で 3〜6°) で,
j0 を ±1° と ±2° ずつ, 次の 3 通りで 6 回ずつ送り, 1 秒のうちに 0.5° 以上動いたかを数える.
  S1 send_angles: ほかの関節は「いま読んだ角度」
  S2 send_angles: ほかの関節は「姿勢の指令の角度」(重さで下がった分とずれている. ゲームパッドの今の送り方)
  S3 send_angle: j0 だけ (ほかの関節には指令を送らない)
最後に HOME へ戻す。
q と Enter (または Ctrl-C・ssh が切れたとき) で止める。終わるとき (止めたときも) jog_stop と set_fresh_mode(0)。
send_coords() は使わない。release 系は呼ばない。
"""

from __future__ import print_function

import argparse
import json
import select
import signal
import statistics
import sys
import time

SERIAL_PORT = "/dev/ttyAMA0"
BAUDRATE = 1000000
HOME = [0, 0, 0, 0, 0, -30]
SPEED = 20
HOME_TOL_DEG = 5.0
JOG_GUARD_DEG = 25.0
STEP_A_DEG = 10.0
STREAM_SEC = 1.0
STREAM_INTERVAL_SEC = 0.1
STREAM_AHEAD_DEG = 3.0
JOG_SEC = 1.0
JOG_SPEEDS = (10, 30)
AFTER_STOP_SEC = 1.0
RETURN_TIMEOUT_SEC = 10.0
JOG_DIR = {+1: 0, -1: 1}   # 11/5 の実機: direction=1 で j0 が減った, 0 で増えた
FAR_DEG = 20.0
AFTER_STOP_SEC_STOP_SET = 1.5
FAILS = {"n": 0}
SMALL_POSE = [0.0, 40.0, -20.0, 0.0, -30.0, -30.0]   # 11/5 16:13 のゲームパッドで実際にいた姿勢に近い
SMALL_STEPS = (1.0, 2.0)
SMALL_REPEAT = 6
SMALL_WAIT_SEC = 1.0
SMALL_MOVED_DEG = 0.5
BIN_SEC = 0.1
GET_ANGLES_RETRIES = 12


class Quit(Exception):
    pass


def now():
    return time.time()


def stdin_quit():
    r, _w, _x = select.select([sys.stdin], [], [], 0)
    if r:
        line = sys.stdin.readline()
        if line.strip().lower() == "q":
            raise Quit()


def ask(msg):
    print(msg + "  (Enter で進む / q と Enter で終わる)", flush=True)
    line = sys.stdin.readline()
    if not line or line.strip().lower() == "q":
        raise Quit()


def read_angles(mc, tries=GET_ANGLES_RETRIES):
    for _ in range(tries):
        a = mc.get_angles()
        if a and len(a) == 6:
            return [float(x) for x in a]
        time.sleep(0.02)
    return None


def wait_arrive(mc, target, timeout):
    t0 = now()
    a = None
    while now() - t0 < timeout:
        stdin_quit()
        a = read_angles(mc)
        if a is not None and max(abs(x - y) for x, y in zip(a, target)) <= 2.0:
            return a, True
        time.sleep(0.1)
    return a, False


def summarize(samples, t_cmd0, t_stop, sign):
    """samples: [(t, j0)]. t_cmd0 = 動かし始めた時刻, t_stop = 止める命令 (なければ None)."""
    act = [(t, q) for t, q in samples if t >= t_cmd0 and (t_stop is None or t <= t_stop)]
    out = {"n_samples": len(samples)}
    if len(act) < 2:
        return out
    travel = (act[-1][1] - act[0][1]) * sign
    dur = act[-1][0] - act[0][0]
    out.update(travel_deg=round(travel, 2), active_sec=round(dur, 2),
               mean_speed=round(travel / dur, 2) if dur > 0 else None)
    # 0.1 秒ごとの速さ (最初の 0.2 秒は加速として除く)
    bins = []
    t = act[0][0] + 0.2
    while t + BIN_SEC <= act[-1][0]:
        seg = [(ts, q) for ts, q in act if t <= ts <= t + BIN_SEC]
        if len(seg) >= 2:
            bins.append((seg[-1][1] - seg[0][1]) * sign / (seg[-1][0] - seg[0][0]) if seg[-1][0] > seg[0][0] else 0.0)
        t += BIN_SEC
    if bins:
        med = statistics.median(bins)
        out.update(bin_speeds=[round(b, 1) for b in bins], median_speed=round(med, 2),
                   max_speed=round(max(bins), 2),
                   speed_cv=round(statistics.pstdev(bins) / med, 2) if med > 0.5 else None,
                   stall_ratio=round(sum(1 for b in bins if b < 0.25 * med) / len(bins), 2) if med > 0.5 else None)
    if t_stop is not None:
        before = [q for ts, q in samples if ts <= t_stop]
        after = [(ts, q) for ts, q in samples if ts > t_stop]
        if before and after:
            q_stop = before[-1]
            out["overshoot_deg"] = round((after[-1][1] - q_stop) * sign, 2)
            moving = [ts for (ts, q), (ts2, q2) in zip(after, after[1:]) if abs(q2 - q) > 0.1]
            out["stop_latency_sec"] = round(moving[-1] - t_stop, 2) if moving else 0.0
    return out


def run_sampling(mc, start, sec, sign, on_tick=None, label=""):
    """sec 秒, できるだけ速く j0 を読む. on_tick(t, angles) を毎回呼ぶ. 守りを超えたら止める."""
    samples = []
    t0 = now()
    while now() - t0 < sec:
        stdin_quit()
        a = mc.get_angles()
        t = now()
        if not (a and len(a) == 6):
            FAILS["n"] += 1
        if a and len(a) == 6:
            samples.append((t, float(a[0])))
            if abs(float(a[0]) - start[0]) > JOG_GUARD_DEG:
                print("  守り: j0 が始めから {:.1f}° 離れたので止めます".format(float(a[0]) - start[0]), flush=True)
                guard_halt(mc, [float(x) for x in a])
                return samples, True
            if on_tick is not None:
                on_tick(t, [float(x) for x in a])
    return samples, False


def guard_halt(mc, a):
    """守りに当たったとき: jog_stop・stop・今の角度への send_angles を全部送る"""
    for f in (lambda: mc.jog_stop(), lambda: mc.stop(), lambda: mc.send_angles(a, SPEED)):
        try:
            f()
        except Exception:
            pass


def halt(mc, how):
    """止め方を 1 つだけ使う. hold は今の角度を読んでそこへ send_angles"""
    if how == "jog_stop":
        mc.jog_stop()
    elif how == "stop":
        mc.stop()
    elif how == "hold":
        a = read_angles(mc, tries=3)
        if a is not None:
            mc.send_angles(a, SPEED)
    else:
        raise ValueError(how)


def stop_set_result(mc, start, samples, after, t_cmd, t_stop, sign):
    s = summarize(samples + after, t_cmd, t_stop, sign)
    s["read_fails"] = FAILS["n"]
    q_end = after[-1][1] if after else None
    s["end_from_start_deg"] = None if q_end is None else round(q_end - start[0], 2)
    # 止める命令から 1.5 秒のあいだに, 最後に 0.1° より動いた時刻 (止まるまでの時間)
    return s


def test_jog_stopset(mc, start, sign, speed, how):
    FAILS["n"] = 0
    t_cmd = now()
    mc.jog_angle(1, JOG_DIR[sign], speed)
    samples, guard = run_sampling(mc, start, JOG_SEC, sign)
    t_stop = now()
    if not guard:
        halt(mc, how)
    after, _ = run_sampling(mc, start, AFTER_STOP_SEC_STOP_SET, sign)
    s = stop_set_result(mc, start, samples, after, t_cmd, t_stop, sign)
    s.update(how=how, speed=speed, guard=guard)
    return s, samples + after, t_cmd, t_stop


def test_far_stopset(mc, start, sign, speed, how, sec=JOG_SEC):
    FAILS["n"] = 0
    target = list(start)
    target[0] = start[0] + sign * FAR_DEG
    t_cmd = now()
    mc.send_angles(target, speed)
    samples, guard = run_sampling(mc, start, sec, sign)
    t_stop = now()
    if not guard:
        halt(mc, how)
    after, _ = run_sampling(mc, start, AFTER_STOP_SEC_STOP_SET, sign)
    s = stop_set_result(mc, start, samples, after, t_cmd, t_stop, sign)
    s.update(how=how, speed=speed, guard=guard)
    return s, samples + after, t_cmd, t_stop


def test_small(mc, how, step):
    """j0 を ±step ずつ SMALL_REPEAT 回. 毎回 送る前に読み, 1 秒のあいだ読んで 0.5° 以上動いたかを見る."""
    trials = []
    sign = +1
    for i in range(SMALL_REPEAT):
        stdin_quit()
        q = read_angles(mc)
        if q is None:
            trials.append({"i": i, "error": "read_failed"})
            continue
        want = q[0] + sign * step
        if how == "S1":
            target = list(q)
            target[0] = want
            mc.send_angles(target, SPEED)
        elif how == "S2":
            target = list(SMALL_POSE)
            target[0] = want
            mc.send_angles(target, SPEED)
        else:
            mc.send_angle(1, want, SPEED)
        t0 = now()
        moved_at, q_end = None, q[0]
        while now() - t0 < SMALL_WAIT_SEC:
            a = read_angles(mc, tries=3)
            if a is not None:
                q_end = a[0]
                if moved_at is None and abs(a[0] - q[0]) >= SMALL_MOVED_DEG:
                    moved_at = now() - t0
        moved = (q_end - q[0]) * sign
        trials.append({"i": i, "sign": sign, "q0": round(q[0], 2), "want": round(want, 2),
                       "moved_deg": round(moved, 2), "moved": moved_at is not None,
                       "moved_at_sec": None if moved_at is None else round(moved_at, 2),
                       "others_gap_deg": round(max(abs(q[k] - SMALL_POSE[k]) for k in range(1, 5)), 2)})
        sign = -sign
    n_ok = sum(1 for t in trials if t.get("moved"))
    print("  [{} {}°] 動いた {}/{}  動いた量: {}".format(how, step, n_ok, len(trials),
          " ".join(str(t.get("moved_deg")) for t in trials)), flush=True)
    return {"how": how, "step": step, "n_moved": n_ok, "n": len(trials), "trials": trials}


def run_small_set(mc, result):
    ask("\n腕を少し前に倒した姿勢 {} へ動かします".format(SMALL_POSE))
    mc.send_angles(SMALL_POSE, SPEED)
    a, ok = wait_arrive(mc, SMALL_POSE, 15.0)
    time.sleep(1.0)
    a = read_angles(mc)
    print("  着いた角度: {}  (指令との差 j1 {:+.2f}°)".format(a, None if a is None else a[1] - SMALL_POSE[1]), flush=True)
    result["small_pose_measured"] = a
    out = {}
    for how in ("S1", "S2", "S3"):
        for step in SMALL_STEPS:
            ask("\n{} {}° を始めます".format(how, step))
            out["{}_{}".format(how, int(step))] = test_small(mc, how, step)
    result["tests"]["small"] = out
    ask("\nHOME へ戻します")
    mc.send_angles(HOME, SPEED)
    wait_arrive(mc, HOME, 15.0)


def back_to_start(mc, start):
    mc.send_angles(start, SPEED)
    a, ok = wait_arrive(mc, start, RETURN_TIMEOUT_SEC)
    print("  始めの角度へ戻した: " + ("着いた" if ok else "着かない") + " j0={}".format(None if a is None else round(a[0], 2)), flush=True)
    time.sleep(0.5)


def test_read(mc):
    lat, empty = [], 0
    for _ in range(40):
        t = now()
        a = mc.get_angles()
        lat.append(now() - t)
        if not (a and len(a) == 6):
            empty += 1
    r = {"median_ms": round(statistics.median(lat) * 1000, 1), "max_ms": round(max(lat) * 1000, 1),
         "empty_ratio": round(empty / 40.0, 2)}
    print("  読み取り 1 回: 中央 {median_ms} ms / 最大 {max_ms} ms / 空で返った割合 {empty_ratio}".format(**r), flush=True)
    return r


def test_step(mc, start):
    target = list(start)
    target[0] = start[0] + STEP_A_DEG
    t_cmd = now()
    mc.send_angles(target, SPEED)
    samples, guard = run_sampling(mc, start, 2.0, +1)
    s = summarize(samples, t_cmd, None, +1)
    reached = [t for t, q in samples if abs(q - target[0]) <= 1.0]
    s["arrive_sec"] = round(reached[0] - t_cmd, 2) if reached else None
    return s, samples, t_cmd, None


def test_stream(mc, start, sign, fresh):
    if fresh:
        mc.set_fresh_mode(1)
    st = {"last": 0.0, "n": 0}
    t_cmd = now()

    def tick(t, a):
        if t - st["last"] >= STREAM_INTERVAL_SEC:
            target = list(start)
            target[0] = a[0] + sign * STREAM_AHEAD_DEG
            mc.send_angles(target, SPEED)
            st["last"] = t
            st["n"] += 1
    try:
        samples, guard = run_sampling(mc, start, STREAM_SEC, sign, on_tick=tick)
        t_stop = now()
        after, _ = run_sampling(mc, start, AFTER_STOP_SEC, sign)
    finally:
        if fresh:
            mc.set_fresh_mode(0)
    s = summarize(samples + after, t_cmd, t_stop, sign)
    s["n_sends"] = st["n"]
    return s, samples + after, t_cmd, t_stop


def test_jog(mc, start, sign, speed):
    direction = 1 if sign > 0 else 0
    t_cmd = now()
    try:
        mc.jog_angle(1, direction, speed)
        samples, guard = run_sampling(mc, start, JOG_SEC, sign)
    finally:
        mc.jog_stop()
    t_stop = now()
    after, _ = run_sampling(mc, start, AFTER_STOP_SEC, sign)
    s = summarize(samples + after, t_cmd, t_stop, sign)
    moved = abs(samples[-1][1] - samples[0][1]) if len(samples) >= 2 else 0.0
    s["jog_moved"] = moved > 1.0
    return s, samples + after, t_cmd, t_stop


def show(name, s):
    keys = ["travel_deg", "mean_speed", "median_speed", "max_speed", "speed_cv", "stall_ratio",
            "overshoot_deg", "stop_latency_sec", "arrive_sec", "n_sends", "jog_moved",
            "read_fails", "end_from_start_deg", "guard"]
    print("  [{}] ".format(name) + "  ".join("{}={}".format(k, s[k]) for k in keys if k in s), flush=True)
    if "bin_speeds" in s:
        print("        0.1 秒ごとの速さ (°/秒): " + " ".join(str(v) for v in s["bin_speeds"]), flush=True)


def main(argv=None):
    ap = argparse.ArgumentParser()
    ap.add_argument("--out", required=True)
    ap.add_argument("--set", choices=["base", "stop", "hold", "small"], default="base")
    args = ap.parse_args(argv)

    def on_hup(signum, frame):
        raise Quit()
    signal.signal(signal.SIGHUP, on_hup)

    import pymycobot
    from pymycobot.mycobot import MyCobot
    print("pymycobot {} ({})".format(getattr(pymycobot, "__version__", "?"), pymycobot.__file__), flush=True)
    mc = MyCobot(SERIAL_PORT, BAUDRATE)
    time.sleep(0.5)
    result = {"started_at": time.strftime("%Y-%m-%d %H:%M:%S"), "pymycobot": getattr(pymycobot, "__version__", "?"),
              "params": {"speed": SPEED, "stream_interval": STREAM_INTERVAL_SEC, "stream_ahead": STREAM_AHEAD_DEG,
                         "jog_speeds": list(JOG_SPEEDS), "guard_deg": JOG_GUARD_DEG,
                         "set": args.set, "jog_dir": {"+1": JOG_DIR[+1], "-1": JOG_DIR[-1]}}, "tests": {}}
    try:
        start = read_angles(mc)
        print("始めの角度: {}".format(start), flush=True)
        if start is None:
            print("角度が読めないので終わります", flush=True)
            return 1
        if max(abs(x - y) for x, y in zip(start, HOME)) > HOME_TOL_DEG:
            ask("HOME から離れています。HOME [0,0,0,0,0,-30] へ送ります")
            mc.send_angles(HOME, SPEED)
            start, ok = wait_arrive(mc, HOME, 15.0)
            if not ok:
                print("HOME に着かないので終わります", flush=True)
                return 1
            time.sleep(0.5)
            start = read_angles(mc)
        result["start"] = start
        print("根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。", flush=True)

        print("\n0. 読み取りの速さ (動かさない)", flush=True)
        result["tests"]["read"] = test_read(mc)

        plan_stop = [
            ("E_jog5_jogstop", lambda: test_jog_stopset(mc, start, +1, 5, "jog_stop")),
            ("E_jog5_stop", lambda: test_jog_stopset(mc, start, -1, 5, "stop")),
            ("E_jog5_hold", lambda: test_jog_stopset(mc, start, +1, 5, "hold")),
            ("E_jog10_stop", lambda: test_jog_stopset(mc, start, -1, 10, "stop")),
            ("E_jog10_hold", lambda: test_jog_stopset(mc, start, +1, 10, "hold")),
            ("F_far10_stop", lambda: test_far_stopset(mc, start, -1, 10, "stop")),
            ("F_far10_hold", lambda: test_far_stopset(mc, start, +1, 10, "hold")),
            ("F_far20_hold", lambda: test_far_stopset(mc, start, -1, 20, "hold"))]
        plan_hold = [
            ("G_far5_hold_0.5s", lambda: test_far_stopset(mc, start, +1, 5, "hold", 0.5)),
            ("G_far10_hold_0.5s", lambda: test_far_stopset(mc, start, -1, 10, "hold", 0.5)),
            ("G_far20_hold_0.4s", lambda: test_far_stopset(mc, start, +1, 20, "hold", 0.4)),
            ("G_far10_stop_0.5s", lambda: test_far_stopset(mc, start, -1, 10, "stop", 0.5)),
            ("H_jog10_jogstop_1", lambda: test_jog_stopset(mc, start, +1, 10, "jog_stop")),
            ("H_jog10_jogstop_2", lambda: test_jog_stopset(mc, start, -1, 10, "jog_stop")),
            ("H_jog10_jogstop_3", lambda: test_jog_stopset(mc, start, +1, 10, "jog_stop"))]
        plan = [("A_step_10deg", lambda: test_step(mc, start)),
                ("B_stream", lambda: test_stream(mc, start, +1, False)),
                ("C_stream_fresh", lambda: test_stream(mc, start, -1, True)),
                ("D_jog_speed{}".format(JOG_SPEEDS[0]), lambda: test_jog(mc, start, +1, JOG_SPEEDS[0])),
                ("D_jog_speed{}".format(JOG_SPEEDS[1]), lambda: test_jog(mc, start, -1, JOG_SPEEDS[1]))]
        if args.set == "small":
            run_small_set(mc, result)
            plan = []
        elif args.set == "stop":
            plan = plan_stop
        elif args.set == "hold":
            plan = plan_hold
        for name, fn in plan:
            ask("\n{} を始めます".format(name))
            s, samples, t_cmd, t_stop = fn()
            show(name, s)
            result["tests"][name] = dict(s, samples=[[round(t - t_cmd, 4), round(q, 2)] for t, q in samples],
                                         t_stop=None if t_stop is None else round(t_stop - t_cmd, 4))
            back_to_start(mc, start)
    except Quit:
        print("\n止めました (このあとは動かす命令を送りません)", flush=True)
        result["quit"] = True
    finally:
        for f in (getattr(mc, "jog_stop", None),):
            try:
                if f is not None:
                    f()
            except Exception:
                pass
        try:
            mc.set_fresh_mode(0)
        except Exception:
            pass
        with open(args.out, "w") as fp:
            json.dump(result, fp, ensure_ascii=False)
        print("結果: " + args.out, flush=True)
    return 0


if __name__ == "__main__":
    sys.exit(main())
```

### daemon_add_stop.sh

#### tools/daemon_add_stop.sh

```bash
#!/bin/bash
# daemon_add_stop.sh — Pi の mecharm_daemon.py に「stop」の命令を 1 つ書き足して起動し直す (2026-11-05)
#
#   tools/daemon_add_stop.sh
#
# なぜ: ゲームパッドの長押しを「15° 先へ 1 回送り, 離したら止める」形にするため (jog_probe 3 回の結果).
#       今の daemon には動いている途中で止める命令がない.
# 足す命令: {"cmd": "stop"} → mc.jog_stop() と mc.stop() を順に呼ぶ (どちらかが効かなかった試しがあるので両方).
#       ほかの命令は 1 文字も変えない (unknown cmd の else の直前に足すだけ).
# 流れ:
#   1. Pi で今動いている /home/ubuntu/mecharm_daemon.py を Mac に持ち帰り, KIOXIA の archive/ に写しを残す
#   2. すでに stop があれば何もしない. なければ書き足し, 構文を確かめる
#   3. Pi へ一時名で送ってから入れ替え, systemd で起動し直し, ping と stop が返事をするか確かめる
#      うまくいかなければ, 元に戻すコマンドを出して止まる
# 流す前に: ゲームパッドなど daemon を使うものを止め, アームを HOME など安全な姿勢にしておく
#           (daemon を起動し直すと MyCobot の初期化が走る)
# 書き足した daemon は tools/pi/mecharm_daemon.py にも置く (これからの手元の正. ルートの mecharm_daemon.py は古い版なので触らない)
set -u
PI=ubuntu@192.168.2.1
KEY="$HOME/.ssh/id_rsa_pi"
SSH=(ssh -n -i "$KEY" -o ConnectTimeout=5 "$PI")
UNIT=mecharm-daemon.service
HERE="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(dirname "$HERE")"
DATA_ROOT=/Volumes/KIOXIA/r2r2r-data
[ -d "$DATA_ROOT/archive" ] || { echo "ABORT: $DATA_ROOT/archive がない (KIOXIA がマウントされていない?)"; exit 1; }
STAMP=$(date +%Y%m%d_%H%M%S)
BK="$DATA_ROOT/archive/mecharm_daemon_premerge_$STAMP"
mkdir "$BK" || exit 1
WORK=$(mktemp -d)

scp -i "$KEY" -q -o ConnectTimeout=5 "$PI:/home/ubuntu/mecharm_daemon.py" "$WORK/before.py" || { echo "ABORT: Pi から持ち帰れない"; exit 1; }
cp "$WORK/before.py" "$BK/mecharm_daemon.py" || { echo "ABORT: 写しを残せない (Pi の daemon は変えていません)"; exit 1; }
echo "今の daemon の写し: $BK/mecharm_daemon.py"

python3 - "$WORK/before.py" "$WORK/after.py" <<'PY'
import sys
src = open(sys.argv[1], encoding="utf-8").read()
if 'cmd == "stop"' in src:
    print("すでに stop があります。書き足しません")
    open(sys.argv[2], "w", encoding="utf-8").write(src)
    sys.exit(0)
for need in ("_mc", "def log("):
    assert need in src, f"daemon に {need} がない (書き足す命令が動かない)"
anchor = '''    else:
        return {"ok": False, "error": f"unknown cmd: {cmd}"}'''
assert src.count(anchor) == 1, "書き足す場所 (unknown cmd の else) が 1 つに決まらない"
add = '''    # 2026-11-05: 動いている途中で止める (ゲームパッドの長押しを離したとき・L2+R2).
    # jog_probe (diag/jog_probe_20261105_*) で jog_stop と stop はどちらも効かない回があったので両方呼ぶ.
    elif cmd == "stop":
        res = {}
        for name in ("jog_stop", "stop"):
            try:
                res[name] = getattr(_mc, name)()
            except Exception as e:
                res[name] = f"{type(e).__name__}: {e}"
        log(f"stop: {res}")
        if all(isinstance(v, str) for v in res.values()):
            return {"ok": False, "error": f"stop failed: {res}"}
        return {"ok": True, "result": res}

'''
out = src.replace(anchor, add + anchor)
compile(out, "mecharm_daemon.py", "exec")
open(sys.argv[2], "w", encoding="utf-8").write(out)
print("stop を書き足しました")
PY
[ $? = 0 ] || { echo "ABORT: 書き足せない (Pi の daemon は変えていません)"; exit 1; }
cp "$WORK/after.py" "$BK/mecharm_daemon_with_stop.py" || exit 1
cp "$WORK/after.py" "$HERE/pi/mecharm_daemon.py" || exit 1
RESTORE="scp -i $KEY $BK/mecharm_daemon.py $PI:/home/ubuntu/mecharm_daemon.py && ssh -i $KEY $PI sudo systemctl restart $UNIT"
fail() { echo "ABORT: $1"; echo "元に戻すには: $RESTORE"; exit 1; }
echo "--- 差分"
diff "$WORK/before.py" "$WORK/after.py"

scp -i "$KEY" -q -o ConnectTimeout=5 "$WORK/after.py" "$PI:/home/ubuntu/mecharm_daemon.py.new" || { echo "ABORT: Pi へ送れない (Pi の daemon は変えていません)"; exit 1; }
"${SSH[@]}" "python3 -m py_compile /home/ubuntu/mecharm_daemon.py.new && mv /home/ubuntu/mecharm_daemon.py.new /home/ubuntu/mecharm_daemon.py" \
    || { echo "ABORT: Pi で入れ替えられない (Pi の daemon は変えていません)"; exit 1; }
"${SSH[@]}" "sudo systemctl restart $UNIT" || fail "systemctl restart が失敗した"
UP=no
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
    sleep 2
    "${SSH[@]}" "ss -ltn | grep -q ':5555 '" && { UP=yes; break; }
done
[ "$UP" = yes ] || fail "30 秒たっても 5555 が開かない"
python3 - <<'PY'
import json, socket
s = socket.create_connection(("192.168.2.1", 5555), timeout=5)
f = s.makefile("rwb")
for c in ({"cmd": "ping"}, {"cmd": "stop"}):
    f.write((json.dumps(c) + "\n").encode()); f.flush()
    r = json.loads(f.readline().decode())
    print(c["cmd"], "→", r)
    assert r.get("ok"), c["cmd"] + " が ok を返さない"
s.close()
PY
[ $? = 0 ] || fail "ping か stop が ok を返さない"
echo "できました。記録: $BK"
```

### daemon_fast_read.sh

#### tools/daemon_fast_read.sh

```bash
#!/bin/bash
# daemon_fast_read.sh — Pi の mecharm_daemon.py の角度の読み直しを速くして起動し直す (2026-11-05)
#
#   tools/daemon_fast_read.sh
#
# なぜ: 動いている間は get_angles が空で返ることが多く, daemon は 0.2 秒待って 12 回まで読み直す (1 回最長約 2.6 秒).
#       送る命令のたびに記録用にも読むので, 送る命令の返事も遅れ, ゲームパッドが最長 15 秒受け付けなかった.
# 変えること: 読み直しの待ち 0.2 → 0.02 秒. 送ったあとの記録用の読み取りは 1 回だけ (読めなくても待たない).
#       ほかは 1 文字も変えない. AI の実機推論も同じ daemon を通る (送る命令の返りが速くなるだけ).
# 流れ:
#   1. Pi で今動いている /home/ubuntu/mecharm_daemon.py を Mac に持ち帰り, KIOXIA の archive/ に写しを残す
#   2. すでに書き換えてあれば何もしない. なければ書き換え, 構文を確かめる
#   3. Pi へ一時名で送ってから入れ替え, systemd で起動し直し, ping と get_angles が返事をするか確かめる
#      うまくいかなければ, 元に戻すコマンドを出して止まる
# 流す前に: ゲームパッドなど daemon を使うものを止め, アームを HOME など安全な姿勢にしておく
#           (daemon を起動し直すと MyCobot の初期化が走る)
# 書き足した daemon は tools/pi/mecharm_daemon.py にも置く (これからの手元の正. ルートの mecharm_daemon.py は古い版なので触らない)
set -u
PI=ubuntu@192.168.2.1
KEY="$HOME/.ssh/id_rsa_pi"
SSH=(ssh -n -i "$KEY" -o ConnectTimeout=5 "$PI")
UNIT=mecharm-daemon.service
HERE="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(dirname "$HERE")"
DATA_ROOT=/Volumes/KIOXIA/r2r2r-data
[ -d "$DATA_ROOT/archive" ] || { echo "ABORT: $DATA_ROOT/archive がない (KIOXIA がマウントされていない?)"; exit 1; }
STAMP=$(date +%Y%m%d_%H%M%S)
BK="$DATA_ROOT/archive/mecharm_daemon_premerge_fastread_$STAMP"
mkdir "$BK" || exit 1
WORK=$(mktemp -d)

scp -i "$KEY" -q -o ConnectTimeout=5 "$PI:/home/ubuntu/mecharm_daemon.py" "$WORK/before.py" || { echo "ABORT: Pi から持ち帰れない"; exit 1; }
cp "$WORK/before.py" "$BK/mecharm_daemon.py" || { echo "ABORT: 写しを残せない (Pi の daemon は変えていません)"; exit 1; }
echo "今の daemon の写し: $BK/mecharm_daemon.py"

python3 - "$WORK/before.py" "$WORK/after.py" <<'PY'
import re, sys
src = open(sys.argv[1], encoding="utf-8").read()
if "read_angles_once_for_log" in src:
    print("すでに書き換えてあります。書き換えません")
    open(sys.argv[2], "w", encoding="utf-8").write(src)
    sys.exit(0)
out = src
n = len(re.findall(r"^GET_ANGLES_INTERVAL_SEC = 0\.2$", out, flags=re.M))
assert n == 1, "GET_ANGLES_INTERVAL_SEC = 0.2 が 1 つに決まらない"
out = re.sub(r"^GET_ANGLES_INTERVAL_SEC = 0\.2$",
             "GET_ANGLES_INTERVAL_SEC = 0.02   # 2026-11-05: 0.2 → 0.02 (動いている間は空で返ることが多く, 1 回の読み取りに最長 2.6 秒かかっていた)",
             out, flags=re.M)
for label in ("send_angles_after", "send_angle_after"):
    old = f'read_angles_with_retry("{label}", log_fail=False)'
    assert out.count(old) == 1, f"{old} が 1 つに決まらない"
    out = out.replace(old, f'read_angles_once_for_log()')
anchor = "def handle_command(cmd_obj):"
assert out.count(anchor) == 1
helper = '''def read_angles_once_for_log():
    """送ったあとの記録用に 1 回だけ読む (2026-11-05). 読めなくても待たない.
    以前は読み直しつきで, 読めないと送る命令の返事が最長 2.6 秒遅れていた."""
    try:
        a = _mc.get_angles()
    except Exception:
        return None
    return a if isinstance(a, (list, tuple)) and len(a) == 6 else None


'''
out = out.replace(anchor, helper + anchor)
compile(out, "mecharm_daemon.py", "exec")
open(sys.argv[2], "w", encoding="utf-8").write(out)
print("読み取りを速くしました")
PY
[ $? = 0 ] || { echo "ABORT: 書き足せない (Pi の daemon は変えていません)"; exit 1; }
cp "$WORK/after.py" "$BK/mecharm_daemon_fast_read.py" || exit 1
cp "$WORK/after.py" "$HERE/pi/mecharm_daemon.py" || exit 1
RESTORE="scp -i $KEY $BK/mecharm_daemon.py $PI:/home/ubuntu/mecharm_daemon.py && ssh -i $KEY $PI sudo systemctl restart $UNIT"
fail() { echo "ABORT: $1"; echo "元に戻すには: $RESTORE"; exit 1; }
echo "--- 差分"
diff "$WORK/before.py" "$WORK/after.py"

scp -i "$KEY" -q -o ConnectTimeout=5 "$WORK/after.py" "$PI:/home/ubuntu/mecharm_daemon.py.new" || { echo "ABORT: Pi へ送れない (Pi の daemon は変えていません)"; exit 1; }
"${SSH[@]}" "python3 -m py_compile /home/ubuntu/mecharm_daemon.py.new && mv /home/ubuntu/mecharm_daemon.py.new /home/ubuntu/mecharm_daemon.py" \
    || { echo "ABORT: Pi で入れ替えられない (Pi の daemon は変えていません)"; exit 1; }
"${SSH[@]}" "sudo systemctl restart $UNIT" || fail "systemctl restart が失敗した"
UP=no
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
    sleep 2
    "${SSH[@]}" "ss -ltn | grep -q ':5555 '" && { UP=yes; break; }
done
[ "$UP" = yes ] || fail "30 秒たっても 5555 が開かない"
python3 - <<'PY'
import json, socket
s = socket.create_connection(("192.168.2.1", 5555), timeout=5)
f = s.makefile("rwb")
for c in ({"cmd": "ping"}, {"cmd": "get_angles"}):
    f.write((json.dumps(c) + "\n").encode()); f.flush()
    r = json.loads(f.readline().decode())
    print(c["cmd"], "→", r)
    assert r.get("ok"), c["cmd"] + " が ok を返さない"
s.close()
PY
[ $? = 0 ] || fail "ping か get_angles が ok を返さない"
echo "できました。記録: $BK"
```

### Pi の mecharm_daemon.py（stop を足し、読み直しを速くしたあと）

#### tools/pi/mecharm_daemon.py

```python
#!/usr/bin/env python3
"""
mecharm_daemon.py
Pi 側で常駐する MyCobot 制御デーモン。
TCP socket で Mac からの JSON コマンドを受け取り、永続化された MyCobot 経由で実機に転送する。
"""

import json
import socket
import sys
import time
import signal
import traceback
from pymycobot.mycobot import MyCobot

DAEMON_HOST = "0.0.0.0"
DAEMON_PORT = 5555
SERIAL_PORT = "/dev/ttyAMA0"
BAUDRATE = 1000000
GET_ANGLES_RETRIES = 12
GET_ANGLES_INTERVAL_SEC = 0.02   # 2026-11-05: 0.2 → 0.02 (動いている間は空で返ることが多く, 1 回の読み取りに最長 2.6 秒かかっていた)

_mc = None
_server_sock = None
_running = True
_fresh_mode_state = 0


def log(msg):
    print(f"[DAEMON {time.strftime('%H:%M:%S')}] {msg}", flush=True)


def init_mycobot():
    global _mc
    log(f"MyCobot 初期化中 ({SERIAL_PORT}, baud={BAUDRATE})...")
    _mc = MyCobot(SERIAL_PORT, BAUDRATE)
    log("✓ MyCobot 初期化完了")
    warmup_angles = read_angles_with_retry("startup_warmup", log_fail=False)
    log(f"startup_warmup angles={warmup_angles}")


def read_angles_with_retry(label="get_angles", log_fail=True):
    """pymycobot の空配列対策つき角度取得。"""
    angles = None
    for attempt in range(GET_ANGLES_RETRIES):
        angles = _mc.get_angles()
        if isinstance(angles, (list, tuple)) and len(angles) == 6:
            if attempt > 0:
                log(f"{label}: get_angles success retry={attempt} angles={angles}")
            return angles
        time.sleep(GET_ANGLES_INTERVAL_SEC)
    if log_fail:
        log(f"{label}: get_angles empty/invalid after {GET_ANGLES_RETRIES} retries: {angles}")
    return None


def read_angles_once_for_log():
    """送ったあとの記録用に 1 回だけ読む (2026-11-05). 読めなくても待たない.
    以前は読み直しつきで, 読めないと送る命令の返事が最長 2.6 秒遅れていた."""
    try:
        a = _mc.get_angles()
    except Exception:
        return None
    return a if isinstance(a, (list, tuple)) and len(a) == 6 else None


def handle_command(cmd_obj):
    """コマンドを処理してレスポンス dict を返す。"""
    global _fresh_mode_state
    cmd = cmd_obj.get("cmd")

    if cmd == "ping":
        return {"ok": True, "daemon": "mecharm_daemon", "fresh_mode": _fresh_mode_state}

    elif cmd == "send_angles":
        try:
            angles = cmd_obj["angles"]
            speed = int(cmd_obj.get("speed", 20))
            wait = float(cmd_obj.get("wait", 0))
            if len(angles) != 6:
                return {"ok": False, "error": f"angles must be length 6, got {len(angles)}"}

            log(f"send_angles 呼び出し前: angles={angles}, speed={speed}, wait={wait}")
            t0 = time.perf_counter()
            result = _mc.send_angles(angles, speed)
            elapsed_ms = (time.perf_counter() - t0) * 1000.0
            log(f"send_angles 呼び出し後: result={result}, elapsed_ms={elapsed_ms:.1f}")

            if wait > 0:
                time.sleep(wait)
            current_angles = read_angles_once_for_log()
            log(f"send_angles 後の現在角度: {current_angles}")

            return {"ok": True, "result": result, "elapsed_ms": elapsed_ms}
        except Exception as e:
            log(f"send_angles 例外: {type(e).__name__}: {e}")
            log(traceback.format_exc().rstrip())
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}

    elif cmd == "send_angle":
        try:
            joint_id = int(cmd_obj["joint_id"])
            angle = float(cmd_obj["angle"])
            speed = int(cmd_obj.get("speed", 20))
            wait = float(cmd_obj.get("wait", 0))
            if not (1 <= joint_id <= 6):
                return {"ok": False, "error": f"joint_id must be 1..6, got {joint_id}"}

            log(f"send_angle 呼び出し前: joint_id={joint_id}, angle={angle}, speed={speed}, wait={wait}")
            t0 = time.perf_counter()
            result = _mc.send_angle(joint_id, angle, speed)
            elapsed_ms = (time.perf_counter() - t0) * 1000.0
            log(f"send_angle 呼び出し後: result={result}, elapsed_ms={elapsed_ms:.1f}")

            if wait > 0:
                time.sleep(wait)
            current_angles = read_angles_once_for_log()
            log(f"send_angle 後の現在角度: {current_angles}")

            return {"ok": True, "result": result, "elapsed_ms": elapsed_ms}
        except Exception as e:
            log(f"send_angle 例外: {type(e).__name__}: {e}")
            log(traceback.format_exc().rstrip())
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}

    elif cmd == "get_angles":
        # DAY190: mc.get_angles() は起動直後や通信直後に [] / None を返すことがある。
        a = read_angles_with_retry("get_angles")
        if a is None:
            return {
                "ok": False,
                "error": f"get_angles returned empty/invalid after {GET_ANGLES_RETRIES} retries",
            }
        return {"ok": True, "angles": a}

    elif cmd == "set_fresh_mode":
        value = int(cmd_obj["value"])
        if value not in (0, 1):
            return {"ok": False, "error": f"value must be 0 or 1, got {value}"}
        try:
            _mc.set_fresh_mode(value)
        except AttributeError:
            return {"ok": False, "error": "set_fresh_mode is not available in this pymycobot environment"}
        _fresh_mode_state = value
        log(f"set_fresh_mode({value})")
        return {"ok": True, "fresh_mode": _fresh_mode_state}

    elif cmd == "set_gripper":
        state = int(cmd_obj["state"])
        speed = int(cmd_obj.get("speed", 100))
        wait = float(cmd_obj.get("wait", 0))
        # DAY175 対策: 連続送信時の動作不具合回避のため事前 sleep
        time.sleep(2)
        result = _mc.set_gripper_state(state, speed)
        if wait > 0:
            time.sleep(wait)
        return {"ok": True, "result": result}

    # DAY261: 値ベース把持 cmd (純追記).
    # state ベースの set_gripper とは独立。閉じ切らない目標値で握って押し込み力を
    # 残す検証用。値域ガード必須 (value 0-100 / speed 1-100)。範囲外は
    # ハードに送らず error を返す。応答フォーマットは set_gripper と同形 {ok, result}。
    elif cmd == "set_gripper_value":
        try:
            value = int(cmd_obj["value"])
            speed = int(cmd_obj.get("speed", 100))
        except (KeyError, TypeError, ValueError) as e:
            return {"ok": False, "error": f"bad args: {type(e).__name__}: {e}"}
        if not (0 <= value <= 100):
            return {"ok": False, "error": f"value must be 0..100, got {value}"}
        if not (1 <= speed <= 100):
            return {"ok": False, "error": f"speed must be 1..100, got {speed}"}
        try:
            result = _mc.set_gripper_value(value, speed)
        except AttributeError:
            return {"ok": False,
                    "error": "set_gripper_value is not available in this pymycobot environment"}
        except Exception as e:
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}
        log(f"set_gripper_value(value={value}, speed={speed}) result={result}")
        return {"ok": True, "result": result}

    # DAY259 グリッパー保持診断 (A-2)。読み取り専用の getter のみ追加。
    # pymycobot の純 getter (シリアル read のみ・モーター駆動しない) を想定。
    # 例外はクライアントへ転送するだけで、daemon は落とさない。
    elif cmd == "get_gripper_value":
        try:
            val = _mc.get_gripper_value()
            return {"ok": True, "value": int(val) if val is not None else None}
        except Exception as e:
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}

    elif cmd == "is_gripper_moving":
        try:
            flag = _mc.is_gripper_moving()
            return {"ok": True, "moving": bool(flag) if flag is not None else None}
        except Exception as e:
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}

    # ---- LOG352 (2026-10-19): ストリーミング再生用の 2 コマンド (純追記) --------
    # 既存 send_angles / get_angles は 1 文字も変えない (本線 run_pick_place.py が依存)。
    #
    # 背景: 既存 send_angles は送信後に read_angles_with_retry() を呼ぶ。
    # 動作中の _mc.get_angles() は空リストを返しやすく、12 回 x (読み ~0.11s +
    # sleep 0.2s) = 約 3.7 秒ブロックする。0.1 秒周期で送り続ける補間ストリーミング
    # 再生 (record_teach_demo.py) では、474 送信中 27 回がこの 3.7 秒を踏み、
    # tick 周期が平均 0.46-0.55s まで伸びた (公称 0.1s / 実測 2026-10-19)。
    # _mc.send_angles() 自体は平均 10.4ms なので、遅いのは読み直しだけ。
    # Pi 直の waypoint_streaming_replay.py は送信後に角度を読まない。それと同じ
    # 送り方を daemon 経由でも使えるようにする。

    elif cmd == "send_angles_fast":
        # 送信後に角度を読み直さない send_angles。
        # 応答は _mc.send_angles() の実行時間だけ (実測 ~10ms)。
        # 到達確認は呼び出し側が区間の終わりで既存 get_angles を使って行う。
        try:
            angles = cmd_obj["angles"]
            speed = int(cmd_obj.get("speed", 20))
            if not isinstance(angles, (list, tuple)) or len(angles) != 6:
                return {"ok": False,
                        "error": f"angles must be length 6, got {len(angles) if isinstance(angles, (list, tuple)) else type(angles).__name__}"}
            t0 = time.perf_counter()
            result = _mc.send_angles(list(angles), speed)
            elapsed_ms = (time.perf_counter() - t0) * 1000.0
            # 1 送信 1 行だけログに残す (今回の原因特定は daemon ログで出来た)。
            log(f"send_angles_fast: angles={angles}, speed={speed}, "
                f"result={result}, elapsed_ms={elapsed_ms:.1f}")
            return {"ok": True, "result": result, "elapsed_ms": elapsed_ms}
        except Exception as e:
            log(f"send_angles_fast 例外: {type(e).__name__}: {e}")
            log(traceback.format_exc().rstrip())
            return {"ok": False, "error": f"{type(e).__name__}: {e}"}

    elif cmd == "get_angles_once":
        # 1 回だけ読んで、読めなければ angles=None を返す (リトライしない)。
        # 記録用の観測に使う。読めないことは異常ではないので ok=True で返す
        # (ok=False にすると呼び出し側の _daemon_request が例外にしてしまう)。
        # 既存 get_angles (12 回リトライ) は到達確認用にそのまま残す。
        try:
            a = _mc.get_angles()
        except Exception as e:
            return {"ok": True, "angles": None,
                    "error": f"{type(e).__name__}: {e}"}
        if isinstance(a, (list, tuple)) and len(a) == 6:
            return {"ok": True, "angles": list(a)}
        return {"ok": True, "angles": None, "raw": repr(a)[:80]}

    # 2026-11-05: 動いている途中で止める (ゲームパッドの長押しを離したとき・L2+R2).
    # jog_probe (diag/jog_probe_20261105_*) で jog_stop と stop はどちらも効かない回があったので両方呼ぶ.
    elif cmd == "stop":
        res = {}
        for name in ("jog_stop", "stop"):
            try:
                res[name] = getattr(_mc, name)()
            except Exception as e:
                res[name] = f"{type(e).__name__}: {e}"
        log(f"stop: {res}")
        if all(isinstance(v, str) for v in res.values()):
            return {"ok": False, "error": f"stop failed: {res}"}
        return {"ok": True, "result": res}

    else:
        return {"ok": False, "error": f"unknown cmd: {cmd}"}


def serve_client(client_sock, addr):
    log(f"接続: {addr}")
    buf = b""
    try:
        while _running:
            data = client_sock.recv(4096)
            if not data:
                break
            buf += data
            while b"\n" in buf:
                line, buf = buf.split(b"\n", 1)
                line = line.strip()
                if not line:
                    continue
                try:
                    cmd_obj = json.loads(line.decode("utf-8"))
                    log(f"cmd received: {cmd_obj.get('cmd')}")
                    response = handle_command(cmd_obj)
                except Exception as e:
                    response = {"ok": False, "error": f"{type(e).__name__}: {e}"}
                    log(f"コマンド処理エラー: {e}")
                resp_line = (json.dumps(response) + "\n").encode("utf-8")
                client_sock.sendall(resp_line)
    except ConnectionResetError:
        log(f"接続リセット: {addr}")
    except Exception as e:
        log(f"クライアントエラー: {e}")
    finally:
        client_sock.close()
        log(f"切断: {addr}")


def shutdown_handler(signum, frame):
    global _running
    log(f"シグナル受信 ({signum}), シャットダウン開始")
    _running = False
    if _mc is not None:
        try:
            _mc.set_fresh_mode(0)
            log("set_fresh_mode(0)")
        except Exception:
            pass
    if _server_sock:
        try:
            _server_sock.close()
        except Exception:
            pass
    sys.exit(0)


def main():
    global _server_sock

    signal.signal(signal.SIGTERM, shutdown_handler)
    signal.signal(signal.SIGINT, shutdown_handler)

    init_mycobot()

    _server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    _server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    _server_sock.bind((DAEMON_HOST, DAEMON_PORT))
    _server_sock.listen(1)
    log(f"ポート {DAEMON_PORT} で待ち受け中...")

    try:
        while _running:
            try:
                client_sock, addr = _server_sock.accept()
            except OSError:
                break
            serve_client(client_sock, addr)
    finally:
        if _mc is not None:
            try:
                _mc.set_fresh_mode(0)
                log("set_fresh_mode(0)")
            except Exception:
                pass
        _server_sock.close()
        log("シャットダウン完了")


if __name__ == "__main__":
    main()
```

### 記録を数えるスクリプト

#### teleop_stats.py（7本の記録を同じ数え方で並べる）

```python
"""LOG446: 11/5 のゲームパッドの記録 7 本を、同じ数え方で並べる."""
import json, sys, collections, statistics
from pathlib import Path
ROOT = Path("/mnt/user-data/uploads/KIOXIA/r2r2r-data/runs/experiments/gamepad_teleop")
RUNS = ["160038", "161347", "162224", "163144", "163620", "170313", "171125"]
print("| 記録 | 行 | 1回押し 送った | 動かした関節が0.3°以上動いた | 受付なし | 止める | 長押しの目標を送った回数 | 1回押しの待ち 中央/最大(秒) | 起動時と終わりの j1 |")
print("|---|---|---|---|---|---|---|---|---|")
for r in RUNS:
    rows = [json.loads(l) for l in open(ROOT / f"teleop_20261105_{r}" / "log.jsonl")]
    short = [x for x in rows if x["kind"] == "move" and (x.get("hold_n") or 0) == 0 and x.get("sent") is True]
    moved = 0
    els = []
    for x in short:
        j = x["joint"]; mb = x.get("measured_before"); ra = x.get("reached_angles")
        if mb and ra and abs(ra[j] - mb[j]) >= 0.3:
            moved += 1
        if x.get("elapsed_sec") is not None:
            els.append(x["elapsed_sec"])
    busy = sum(1 for x in rows if x.get("reason") == "busy")
    halts = sum(1 for x in rows if x["kind"] == "halt")
    hold_sent = sum(1 for x in rows if x["kind"] == "move" and (x.get("hold_n") or 0) >= 1 and x.get("sent") is True)
    angs = [x.get("measured_before") for x in rows if x.get("measured_before")]
    j1 = f"{angs[0][1]:+.2f} → {angs[-1][1]:+.2f}" if angs else "-"
    med = statistics.median(els) if els else None
    print(f"| {r} | {len(rows)} | {len(short)} | {moved} | {busy} | {halts} | {hold_sent} | "
          f"{'-' if med is None else f'{med:.2f}'} / {'-' if not els else f'{max(els):.2f}'} | {j1} |")
```

#### teleop_details.py（1本の記録を1回押しと止める処理ごとに並べる）

```python
"""LOG446: ゲームパッドの記録 1 本を, 1 回押しと止める処理ごとに並べる (11/5 の不具合を調べたときの数え方).

使い方: python3 teleop_details.py <teleop の記録のフォルダ>
"""
import json, sys, collections
from pathlib import Path
d = Path(sys.argv[1])
rows = [json.loads(l) for l in open(d / "log.jsonl")]
t0 = rows[0]["t_unix"]
print(f"== {d.name}  行 {len(rows)}")
print("-- 1 回押し: 送った量と, 動かした関節が動いた量")
for r in rows:
    if r["kind"] == "move" and (r.get("hold_n") or 0) == 0 and r.get("sent") is True:
        j = r["joint"]; mb = r.get("measured_before"); ra = r.get("reached_angles"); c = r["command"]
        mv = None if not (mb and ra) else round(ra[j] - mb[j], 2)
        oth = None if not (mb and ra) else round(max(abs(ra[k] - mb[k]) for k in range(6) if k != j), 2)
        tag = "届いた" if r.get("reached") else ("手前で止まった" if r.get("settled") else ("動かなかった" if r.get("not_moved") else "届かなかった"))
        print(f"{r['t_unix']-t0:7.2f}s j{j} {r['delta']:+.0f}° → 動いた {mv}° ほかの関節の最大の変化 {oth}° "
              f"{tag} 待ち {r.get('elapsed_sec')}秒 送り直し {len(r.get('resends') or [])}回")
print("-- 止める処理: 止める前に読んだ角度から, 止めたあとに読んだ角度までの差 (6 関節)")
for r in rows:
    if r["kind"] == "halt":
        print(f"{r['t_unix']-t0:7.2f}s {r.get('halt_reason')} j{r.get('halt_joint')} 差 {r.get('moved_after_request_deg')} "
              f"送り直し {r.get('pin_command')}")
busy = [r for r in rows if r.get("reason") == "busy"]
last = None; cause = collections.Counter()
for r in rows:
    if r.get("reason") == "busy":
        cause[last] += 1
    elif r.get("accepted") and r["kind"] in ("move", "halt", "home", "grip_close", "grip_open"):
        last = r["kind"] + ("(長押し)" if (r.get("hold_n") or 0) > 0 else "")
print(f"-- 受付なし {len(busy)} 回. そのとき動いていた仕事: {dict(cause)}")
```

#### plot_jog_probe.py（jog_probe の生の記録を図にする）

```python
"""LOG446: jog_probe の生の記録 (時刻と j0 の角度) を, 送り方ごとに並べた図にする."""
import json
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from matplotlib import font_manager
D = "/mnt/user-data/uploads/KIOXIA/r2r2r-data/diag/"
runs = {"base": "jog_probe_20261105_153401", "stop": "jog_probe_20261105_153952_stop", "hold": "jog_probe_20261105_154332_hold"}
R = {k: json.load(open(D + v + "/result.json")) for k, v in runs.items()}
for f in font_manager.findSystemFonts():
    if "NotoSansCJK" in f or "NotoSansJP" in f:
        font_manager.fontManager.addfont(f)
plt.rcParams["font.family"] = ["Noto Sans CJK JP"]
INK, PAPER = "#0d0d0d", "#f5f5f0"
panels = [
    ("A 1回だけ送る (+10°, speed 20)", "base", "A_step_10deg", "-"),
    ("B 0.1秒おきに3°先を送り直す (前のゲームパッド)", "base", "B_stream", "-"),
    ("C B + fresh_mode", "base", "C_stream_fresh", "-"),
    ("D jog speed 30", "base", "D_jog_speed30", "-"),
    ("E jog speed 5 (階段状)", "stop", "E_jog5_jogstop", "-"),
    ("G 20°先へ送り 0.5秒で stop (今のゲームパッド)", "hold", "G_far10_stop_0.5s", "-"),
]
fig, axes = plt.subplots(3, 2, figsize=(12, 9), facecolor=PAPER)
for ax, (title, run, key, ls) in zip(axes.flat, panels):
    t = R[run]["tests"][key]
    s = t["samples"]
    x = [a for a, q in s if a <= 2.0]
    y = [q - s[0][1] for a, q in s if a <= 2.0]
    ax.set_facecolor(PAPER)
    ax.plot(x, y, color=INK, lw=1.8, marker="o", ms=2.5)
    if t.get("t_stop"):
        ax.axvline(t["t_stop"], color=INK, lw=1, ls="--")
        ax.text(t["t_stop"] + 0.03, ax.get_ylim()[0] if False else min(y) , "止める命令", fontsize=9, color=INK)
    ax.set_title(title, fontsize=11, color=INK, loc="left")
    ax.set_xlim(0, 2.0)
    ax.grid(color=INK, alpha=0.15)
    for sp in ax.spines.values():
        sp.set_color(INK); sp.set_linewidth(1.2)
    ax.tick_params(colors=INK, labelsize=9)
for ax in axes[-1]:
    ax.set_xlabel("送ってからの秒", color=INK)
for ax in axes[:, 0]:
    ax.set_ylabel("j0 の動いた角度 (°)", color=INK)
fig.suptitle("mechArm 270 の根元 j0 を、送り方を変えて動かした生の記録 (2026-11-05 jog_probe)", color=INK, fontsize=13, x=0.01, ha="left")
fig.tight_layout(rect=(0, 0, 1, 0.96))
fig.savefig("/mnt/user-data/outputs/LOG446_images/LOG446_04_jog_probe_traces.png", dpi=110, facecolor=PAPER)
print("ok")
```

### この回の commit

#### r2r2r-scripts の commit（11/5 15:34〜17:08）

```text
452a3b6 2026-11-05 17:11:25 +0900 gamepad_teleop: 押した瞬間には送らず、離したら1刻み・押し続けたら長押しのどちらかだけ送る
c7992ca 2026-11-05 17:03:11 +0900 daemon の読み直しを0.02秒にした版を tools/pi に置く
617c3bd 2026-11-05 17:02:53 +0900 daemon の読み直しを速くするスクリプト・止めるときの読み取りは1回だけ
72d9d96 2026-11-05 16:36:19 +0900 gamepad_teleop: 受付なしを減らす（止める待ち0.1秒・1刻みは止まったら戻る・読む間隔0.05秒）
b71ffb5 2026-11-05 16:31:42 +0900 gamepad_teleop: 十字キーは動かす関節だけを send_angle で送る
2726d9d 2026-11-05 16:26:17 +0900 gamepad_teleop の直しと、jog_probe に小さな動きを比べる small の組を足す
31a336c 2026-11-05 16:22:22 +0900 gamepad_teleop: 止めたあと送り直さない・1刻みは動かした関節だけで判定・長押しが止まったら送り直す
f0d7e73 2026-11-05 16:13:45 +0900 gamepad_teleop: 止めたあと他の関節を指令へ戻す・出発点を関節ごとに・1刻みの届いた判定を0.5°に
e0bf052 2026-11-05 16:00:35 +0900 daemon に stop を足した版を tools/pi に置く
4e99c9d 2026-11-05 15:59:53 +0900 gamepad_teleop: 長押しを15°先へ1回送る形にし、離したら daemon の stop で止める
b577a13 2026-11-05 15:43:32 +0900 jog_probe: 遠い目標を途中で止める hold の組を足す
dcdf3f1 2026-11-05 15:39:52 +0900 jog_probe: 止め方を比べる stop の組を足す (jog の向きは実機に合わせる)
2c28f88 2026-11-05 15:34:01 +0900 jog_probe: j0 を4通りで動かし、なめらかさと限界を測る
```


## この回の実機の記録（全量）

### 16:00 の記録 runs/experiments/gamepad_teleop/teleop_20261105_160038/meta.json

```json
{
  "run_stem": "teleop_20261105_160038",
  "started_at": "2026-11-05T16:00:43",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T16:00:51"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    -0.61,
    4.83,
    5.0,
    -0.08,
    0.96,
    -29.61
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.0,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "e0bf05203a2af9acc41eb611f0db51a00c5ba4df",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "be5c7372080646069412ba5a528239fde63807099c8b1a7ec11fd914d7d9846c",
  "ended_at": "2026-11-05T16:13:43",
  "end_reason": "ctrl_c",
  "n_sent": 133
}
```

### 16:00 の記録 runs/experiments/gamepad_teleop/teleop_20261105_160038/log.jsonl（376行）

```json
{"seq": 1, "t": "2026-11-05T16:00:52.689", "t_unix": 1793862052.69, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [-0.61, 4.83, 5.0, -0.08, 0.96, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.61, 4.83, 5.0, -0.08, 0.96, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862052.760244, "measured_before_send": [-0.61, 4.83, 5.0, -0.08, 0.96, -29.61], "resends": [], "reached": true, "reached_angles": [-1.93, 5.53, 5.8, -0.08, 0.17, -29.61], "reach_err": 0.8, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T16:00:53.167", "t_unix": 1793862053.168, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.479, "accepted": true, "measured_before": [-1.58, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 0.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-16.58, 4.83, 5.0, -0.08, 0.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862053.194277, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T16:00:53.285", "t_unix": 1793862053.286, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.597, "accepted": true, "measured_before": [-1.4, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 15.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T16:00:53.389", "t_unix": 1793862053.39, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.7, "accepted": true, "measured_before": [-3.33, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 13.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T16:00:53.489", "t_unix": 1793862053.49, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 0.801, "accepted": true, "measured_before": [-6.85, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T16:00:53.605", "t_unix": 1793862053.606, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 0.917, "accepted": true, "released_during_job": true, "measured_before": [-12.21, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 4.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-27.21, 4.83, 5.0, -0.08, 0.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862053.6382499, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T16:00:54.424", "t_unix": 1793862054.425, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 2, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T16:00:54.033", "t_unix": 1793862054.034, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "measured_at_request": [-6.85, 5.53, 5.8, -0.08, 0.17, -29.61], "t_halt": 1793862054.0342588, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-27.15, 5.53, 5.8, -0.08, 0.17, -29.61], "moved_after_request_deg": [-20.3, 0.0, 0.0, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T16:00:57.798", "t_unix": 1793862057.801, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 3, "hold_n": 0, "accepted": true, "measured_before": [-27.33, 5.53, 5.8, -0.08, 0.17, -29.61], "start_source": "command", "cmd_gap_deg": 0.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-26.15, 5.53, 5.8, -0.08, 0.17, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862057.874445, "measured_before_send": [-27.33, 5.53, 5.8, -0.08, 0.17, -29.61], "resends": [], "reached": true, "reached_angles": [-27.33, 5.53, 5.8, -0.08, 0.17, -29.61], "reach_err": 1.18, "elapsed_sec": 0.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T16:00:58.200", "t_unix": 1793862058.201, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 3, "hold_n": 1, "held_sec": 0.405, "accepted": true, "measured_before": [-26.45, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-11.45, 5.53, 5.8, -0.08, 0.17, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862058.223705, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T16:00:58.302", "t_unix": 1793862058.302, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 3, "hold_n": 2, "held_sec": 0.506, "accepted": true, "measured_before": [-26.19, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 14.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T16:00:58.403", "t_unix": 1793862058.403, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 3, "hold_n": 3, "held_sec": 0.607, "accepted": true, "measured_before": [-25.13, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T16:00:58.503", "t_unix": 1793862058.504, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 3, "hold_n": 4, "held_sec": 0.708, "accepted": true, "released_during_job": true, "measured_before": [-21.18, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T16:00:58.538", "t_unix": 1793862058.538, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 3, "measured_at_request": [-25.13, 6.32, 6.5, -0.08, 0.17, -29.61], "t_halt": 1793862058.539544, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-16.08, 6.32, 6.5, -0.08, 0.17, -29.61], "moved_after_request_deg": [9.05, 0.0, 0.0, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T16:00:59.411", "t_unix": 1793862059.412, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 4, "hold_n": 0, "accepted": true, "measured_before": [-16.17, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-15.08, 6.32, 6.5, -0.08, 0.17, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862059.464354, "measured_before_send": [-16.17, 6.32, 6.5, -0.08, 0.17, -29.61], "resends": [], "reached": true, "reached_angles": [-16.17, 6.32, 6.5, -0.08, 0.17, -29.61], "reach_err": 1.09, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T16:00:59.818", "t_unix": 1793862059.819, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 1, "held_sec": 0.407, "accepted": true, "measured_before": [-16.17, 6.32, 6.5, -0.08, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 1.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.17, 6.32, 6.5, -0.08, 0.17, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862059.843095, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T16:01:00.283", "t_unix": 1793862060.283, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 2, "held_sec": 0.872, "accepted": true, "released_during_job": true, "measured_before": [-2.81, 7.11, 7.2, -0.17, 0.17, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [12.19, 6.32, 6.5, -0.08, 0.17, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862060.314744, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T16:01:00.367", "t_unix": 1793862060.367, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 4, "measured_at_request": [-16.17, 6.32, 6.5, -0.08, 0.17, -29.61], "t_halt": 1793862060.3706932, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-1.05, 8.08, 8.17, -0.17, 1.58, -29.61], "moved_after_request_deg": [15.12, 1.76, 1.67, -0.09, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T16:01:12.889", "t_unix": 1793862072.89, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 5, "hold_n": 0, "accepted": true, "measured_before": [-1.49, 8.08, 8.17, -0.17, 0.79, -29.61], "start_source": "command", "cmd_gap_deg": 0.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.05, 7.08, 8.17, -0.17, 1.58, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862072.9661288, "measured_before_send": [-1.49, 8.08, 8.17, -0.17, 0.79, -29.61], "resends": [], "reached": true, "reached_angles": [-1.49, 8.08, 8.17, -0.17, 0.79, -29.61], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T16:01:13.300", "t_unix": 1793862073.3, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 5, "hold_n": 1, "held_sec": 0.411, "accepted": true, "measured_before": [-1.49, 8.08, 8.17, -0.17, 0.79, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.05, -6.92, 8.17, -0.17, 1.58, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862073.330176, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T16:01:13.720", "t_unix": 1793862073.72, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 5, "hold_n": 2, "held_sec": 0.831, "accepted": true, "released_during_job": true, "measured_before": [-1.49, -5.88, 8.96, -0.17, 0.79, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.05, -20.88, 8.17, -0.17, 1.58, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862074.12551, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T16:01:14.176", "t_unix": 1793862074.176, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 5, "measured_at_request": [-1.49, 8.08, 8.17, -0.17, 0.79, -29.61], "t_halt": 1793862074.176321, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-1.49, -5.0, 9.84, -0.17, 2.28, -29.61], "moved_after_request_deg": [0.0, -13.08, 1.67, 0.0, 1.49, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T16:01:15.383", "t_unix": 1793862075.384, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 6, "hold_n": 0, "accepted": true, "measured_before": [-1.49, -5.0, 9.84, -0.17, 2.28, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-2.49, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862075.449931, "measured_before_send": [-1.49, -5.0, 9.84, -0.17, 2.28, -29.61], "resends": [], "reached": true, "reached_angles": [-1.49, -5.0, 9.84, -0.17, 2.28, -29.61], "reach_err": 1.0, "elapsed_sec": 0.06, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T16:01:15.787", "t_unix": 1793862075.787, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 1, "held_sec": 0.404, "accepted": true, "measured_before": [-2.46, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 0.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-17.46, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862075.818159, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T16:01:16.225", "t_unix": 1793862076.225, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 2, "held_sec": 0.842, "accepted": true, "measured_before": [-17.13, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-32.13, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862076.648022, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T16:01:17.032", "t_unix": 1793862077.033, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 3, "held_sec": 1.649, "accepted": true, "measured_before": [-26.1, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 6.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T16:01:17.133", "t_unix": 1793862077.133, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 4, "held_sec": 1.75, "accepted": true, "measured_before": [-30.84, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 1.29, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-45.84, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862077.171295, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T16:01:17.233", "t_unix": 1793862077.234, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 5, "held_sec": 1.851, "accepted": true, "measured_before": [-31.64, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 14.2, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.2, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T16:01:17.335", "t_unix": 1793862077.335, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 6, "held_sec": 1.952, "accepted": true, "measured_before": [-32.6, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T16:01:17.441", "t_unix": 1793862077.441, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 7, "held_sec": 2.058, "accepted": true, "measured_before": [-36.21, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 9.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T16:01:17.556", "t_unix": 1793862077.557, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 8, "held_sec": 2.174, "accepted": true, "measured_before": [-40.95, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 4.89, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-55.95, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862077.618291, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T16:01:18.027", "t_unix": 1793862078.028, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 9, "held_sec": 2.644, "accepted": true, "measured_before": [-53.78, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 2.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-68.78, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862078.065954, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T16:01:18.128", "t_unix": 1793862078.129, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 10, "held_sec": 2.746, "accepted": true, "measured_before": [-56.68, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T16:01:18.231", "t_unix": 1793862078.232, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 11, "held_sec": 2.849, "accepted": true, "measured_before": [-56.68, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T16:01:18.332", "t_unix": 1793862078.332, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 12, "held_sec": 2.949, "accepted": true, "measured_before": [-60.73, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 8.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T16:01:18.434", "t_unix": 1793862078.435, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 13, "held_sec": 3.052, "accepted": true, "measured_before": [-64.07, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 4.71, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-79.07, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862078.472877, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T16:01:18.912", "t_unix": 1793862078.912, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 6, "hold_n": 14, "held_sec": 3.529, "accepted": true, "released_during_job": true, "measured_before": [-77.69, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 1.38, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-92.69, -5.0, 9.84, -0.17, 2.28, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862078.943895, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T16:01:19.321", "t_unix": 1793862079.321, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 6, "measured_at_request": [-64.07, -4.13, 10.63, -0.17, 3.07, -29.61], "t_halt": 1793862079.327352, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-91.75, -4.13, 10.63, -0.17, 3.07, -29.61], "moved_after_request_deg": [-27.68, 0.0, 0.0, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T16:01:19.898", "t_unix": 1793862079.899, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 7, "hold_n": 0, "accepted": true, "measured_before": [-91.75, -4.13, 10.63, -0.17, 3.07, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-90.75, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862079.945277, "measured_before_send": [-91.75, -4.13, 10.63, -0.17, 3.07, -29.61], "resends": [], "reached": true, "reached_angles": [-91.75, -4.13, 10.63, -0.17, 3.07, -29.61], "reach_err": 1.0, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T16:01:20.302", "t_unix": 1793862080.303, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 1, "held_sec": 0.404, "accepted": true, "measured_before": [-90.52, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-75.52, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862080.343245, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T16:01:20.409", "t_unix": 1793862080.41, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 2, "held_sec": 0.511, "accepted": true, "measured_before": [-90.52, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T16:01:20.511", "t_unix": 1793862080.511, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 3, "held_sec": 0.613, "accepted": true, "measured_before": [-90.43, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T16:01:20.612", "t_unix": 1793862080.612, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 4, "held_sec": 0.714, "accepted": true, "measured_before": [-86.48, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 10.96, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.96, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T16:01:20.713", "t_unix": 1793862080.713, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 5, "held_sec": 0.815, "accepted": true, "measured_before": [-82.26, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T16:01:20.828", "t_unix": 1793862080.829, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 6, "held_sec": 0.93, "accepted": true, "measured_before": [-76.99, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 1.47, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-61.99, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862080.863429, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T16:01:20.931", "t_unix": 1793862080.932, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 7, "held_sec": 1.033, "accepted": true, "measured_before": [-75.58, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 13.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T16:01:21.048", "t_unix": 1793862081.048, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 8, "held_sec": 1.15, "accepted": true, "measured_before": [-62.05, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 0.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-47.05, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862081.4302511, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T16:01:21.484", "t_unix": 1793862081.484, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 9, "held_sec": 1.586, "accepted": true, "measured_before": [-62.31, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 15.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T16:01:21.586", "t_unix": 1793862081.586, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 10, "held_sec": 1.688, "accepted": true, "measured_before": [-61.87, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 14.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T16:01:21.702", "t_unix": 1793862081.702, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 11, "held_sec": 1.804, "accepted": true, "measured_before": [-57.91, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 10.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T16:01:21.803", "t_unix": 1793862081.804, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 12, "held_sec": 1.905, "accepted": true, "measured_before": [-53.7, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 6.65, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.65, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T16:01:21.920", "t_unix": 1793862081.92, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 13, "held_sec": 2.022, "accepted": true, "measured_before": [-48.33, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 1.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-33.33, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862081.98762, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T16:01:22.090", "t_unix": 1793862082.09, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 14, "held_sec": 2.192, "accepted": true, "measured_before": [-47.1, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T16:01:22.191", "t_unix": 1793862082.191, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 15, "held_sec": 2.293, "accepted": true, "measured_before": [-45.35, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T16:01:22.293", "t_unix": 1793862082.293, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 16, "held_sec": 2.395, "accepted": true, "measured_before": [-41.39, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 8.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T16:01:22.395", "t_unix": 1793862082.395, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 17, "held_sec": 2.497, "accepted": true, "measured_before": [-37.79, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 4.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-22.79, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862082.42689, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T16:01:22.510", "t_unix": 1793862082.51, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 18, "held_sec": 2.612, "accepted": true, "measured_before": [-32.69, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 9.9, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.9, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T16:01:22.611", "t_unix": 1793862082.612, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 19, "held_sec": 2.713, "accepted": true, "measured_before": [-33.31, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 10.52, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.52, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T16:01:22.712", "t_unix": 1793862082.712, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 20, "held_sec": 2.814, "accepted": true, "measured_before": [-29.97, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 7.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T16:01:22.814", "t_unix": 1793862082.814, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 21, "held_sec": 2.916, "accepted": true, "measured_before": [-25.48, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 2.69, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-10.48, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862082.859662, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T16:01:22.920", "t_unix": 1793862082.921, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 22, "held_sec": 3.022, "accepted": true, "measured_before": [-22.93, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 12.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T16:01:23.021", "t_unix": 1793862083.021, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 23, "held_sec": 3.123, "accepted": true, "measured_before": [-22.58, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T16:01:23.121", "t_unix": 1793862083.122, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 24, "held_sec": 3.223, "accepted": true, "measured_before": [-19.16, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T16:01:23.222", "t_unix": 1793862083.222, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 25, "held_sec": 3.324, "accepted": true, "measured_before": [-15.82, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 5.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T16:01:23.325", "t_unix": 1793862083.326, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 26, "held_sec": 3.427, "accepted": true, "measured_before": [-10.81, -3.42, 11.33, -0.17, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [4.19, -4.13, 10.63, -0.17, 3.07, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862083.3500428, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T16:01:23.428", "t_unix": 1793862083.428, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 7, "hold_n": 27, "held_sec": 3.53, "accepted": true, "measured_before": [-0.87, -3.42, 11.33, -0.26, 3.07, -29.61], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 5.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T16:01:23.821", "t_unix": 1793862083.822, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 7, "measured_at_request": [-0.87, -3.42, 11.33, -0.26, 3.07, -29.61], "t_halt": 1793862083.824791, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [4.13, -2.63, 12.21, -0.26, 4.48, -29.61], "moved_after_request_deg": [5.0, 0.79, 0.88, 0.0, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T16:01:24.836", "t_unix": 1793862084.836, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T16:01:25.207", "t_unix": 1793862085.207, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 8, "hold_n": 0, "accepted": true, "measured_before": [4.04, -2.63, 12.21, -0.26, 4.48, -29.61], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [6.13, -2.63, 12.21, -0.26, 4.48, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862085.27354, "measured_before_send": [4.04, -2.63, 12.21, -0.26, 4.48, -29.61], "resends": [], "reached": true, "reached_angles": [4.04, -2.63, 12.21, -0.26, 4.48, -29.61], "reach_err": 2.09, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T16:01:25.613", "t_unix": 1793862085.613, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 1, "held_sec": 0.406, "accepted": true, "measured_before": [5.97, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 0.16, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [20.97, -2.63, 12.21, -0.26, 4.48, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862085.6281862, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T16:01:25.714", "t_unix": 1793862085.714, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 2, "held_sec": 0.507, "accepted": true, "measured_before": [15.64, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 5.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T16:01:26.085", "t_unix": 1793862086.085, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 3, "held_sec": 0.878, "accepted": true, "measured_before": [19.16, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.81, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [34.16, -2.63, 12.21, -0.26, 4.48, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862086.1183932, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T16:01:26.186", "t_unix": 1793862086.186, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 4, "held_sec": 0.979, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T16:01:26.303", "t_unix": 1793862086.304, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 5, "held_sec": 1.096, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T16:01:26.418", "t_unix": 1793862086.418, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 6, "held_sec": 1.211, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T16:01:26.519", "t_unix": 1793862086.519, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 7, "held_sec": 1.312, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T16:01:26.635", "t_unix": 1793862086.636, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 8, "held_sec": 1.428, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T16:01:26.736", "t_unix": 1793862086.737, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 9, "held_sec": 1.53, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T16:01:26.838", "t_unix": 1793862086.839, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 10, "held_sec": 1.632, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T16:01:26.954", "t_unix": 1793862086.955, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 11, "held_sec": 1.748, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T16:01:27.071", "t_unix": 1793862087.071, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 12, "held_sec": 1.864, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T16:01:27.172", "t_unix": 1793862087.173, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 13, "held_sec": 1.966, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T16:01:27.273", "t_unix": 1793862087.273, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 14, "held_sec": 2.066, "accepted": true, "measured_before": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T16:01:27.307", "t_unix": 1793862087.307, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "hold_stall", "hold_id": 8, "measured_at_request": [20.83, -1.84, 12.91, -0.26, 5.27, -29.61], "t_halt": 1793862087.3085282, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [20.83, -0.7, 13.79, -0.26, 6.85, -29.61], "moved_after_request_deg": [0.0, 1.14, 0.88, 0.0, 1.58, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T16:01:28.598", "t_unix": 1793862088.598, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 1, "delta": -2.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [20.83, -0.7, 13.79, -0.26, 6.85, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [20.83, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862088.643917, "measured_before_send": [20.83, -0.7, 13.79, -0.26, 6.85, -29.61], "resends": [], "reached": true, "reached_angles": [20.83, -0.7, 13.79, -0.26, 6.85, -29.61], "reach_err": 2.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T16:01:29.972", "t_unix": 1793862089.973, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T16:01:29.968", "t_unix": 1793862089.968, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [20.83, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "command", "cmd_gap_deg": 1.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [21.83, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862090.0264251, "measured_before_send": [20.83, -1.4, 14.5, -0.26, 7.55, -29.61], "resends": [], "reached": true, "reached_angles": [20.83, -1.4, 14.5, -0.26, 7.55, -29.61], "reach_err": 1.3, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T16:01:30.374", "t_unix": 1793862090.375, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 1, "held_sec": 0.407, "accepted": true, "measured_before": [21.79, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 0.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [36.79, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862090.402827, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T16:01:30.475", "t_unix": 1793862090.476, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 2, "held_sec": 0.508, "accepted": true, "measured_before": [21.79, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T16:01:30.578", "t_unix": 1793862090.578, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 3, "held_sec": 0.61, "accepted": true, "measured_before": [23.02, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T16:01:30.692", "t_unix": 1793862090.693, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 4, "held_sec": 0.725, "accepted": true, "measured_before": [27.68, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T16:01:30.794", "t_unix": 1793862090.794, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 5, "held_sec": 0.827, "accepted": true, "measured_before": [31.72, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T16:01:30.910", "t_unix": 1793862090.911, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 6, "held_sec": 0.943, "accepted": true, "measured_before": [36.38, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [51.38, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862090.955765, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T16:01:31.344", "t_unix": 1793862091.345, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 7, "held_sec": 1.377, "accepted": true, "measured_before": [46.23, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 5.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T16:01:31.447", "t_unix": 1793862091.447, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 8, "held_sec": 1.48, "accepted": true, "measured_before": [50.44, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 0.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [65.44, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862091.478884, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T16:01:31.851", "t_unix": 1793862091.852, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 9, "held_sec": 1.884, "accepted": true, "measured_before": [60.46, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [75.46, -2.7, 13.79, -0.26, 6.85, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862091.884004, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T16:01:31.969", "t_unix": 1793862091.969, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 10, "held_sec": 2.002, "accepted": true, "measured_before": [64.95, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T16:01:32.070", "t_unix": 1793862092.07, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 11, "held_sec": 2.102, "accepted": true, "measured_before": [65.47, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T16:01:32.172", "t_unix": 1793862092.172, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 12, "held_sec": 2.204, "accepted": true, "measured_before": [65.12, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T16:01:32.274", "t_unix": 1793862092.275, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 13, "held_sec": 2.307, "accepted": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T16:01:32.376", "t_unix": 1793862092.376, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 14, "held_sec": 2.408, "accepted": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T16:01:32.477", "t_unix": 1793862092.478, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 15, "held_sec": 2.51, "accepted": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T16:01:32.593", "t_unix": 1793862092.594, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 16, "held_sec": 2.626, "accepted": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T16:01:32.695", "t_unix": 1793862092.696, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 17, "held_sec": 2.728, "accepted": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T16:01:32.795", "t_unix": 1793862092.796, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 18, "held_sec": 2.828, "accepted": true, "released_during_job": true, "measured_before": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "start_source": "hold", "cmd_gap_deg": 1.3, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T16:01:32.828", "t_unix": 1793862092.828, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 10, "measured_at_request": [65.21, -1.4, 14.5, -0.26, 7.55, -29.61], "t_halt": 1793862092.8293812, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [65.21, -0.61, 15.38, -0.26, 8.96, -29.61], "moved_after_request_deg": [0.0, 0.79, 0.88, 0.0, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T16:01:33.543", "t_unix": 1793862093.544, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T16:01:33.537", "t_unix": 1793862093.537, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 11, "hold_n": 0, "accepted": true, "measured_before": [65.12, -0.61, 15.38, -0.26, 8.96, -29.61], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [64.21, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862093.6108532, "measured_before_send": [65.12, -0.61, 15.38, -0.26, 8.96, -29.61], "resends": [], "reached": true, "reached_angles": [65.12, -0.61, 15.38, -0.26, 8.96, -29.61], "reach_err": 0.91, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T16:01:33.938", "t_unix": 1793862093.939, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 1, "held_sec": 0.402, "accepted": true, "measured_before": [63.89, 0.17, 16.08, -0.26, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [48.89, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862093.9634519, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T16:01:34.355", "t_unix": 1793862094.355, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 2, "held_sec": 0.818, "accepted": true, "measured_before": [54.58, 0.17, 16.08, -0.26, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 5.69, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.69, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T16:01:34.455", "t_unix": 1793862094.456, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 3, "held_sec": 0.919, "accepted": true, "measured_before": [49.65, 0.17, 16.08, -0.26, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [34.65, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862094.489616, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T16:01:34.560", "t_unix": 1793862094.56, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 4, "held_sec": 1.024, "accepted": true, "measured_before": [49.13, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T16:01:34.676", "t_unix": 1793862094.677, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 5, "held_sec": 1.14, "accepted": true, "measured_before": [47.81, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T16:01:34.777", "t_unix": 1793862094.778, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 6, "held_sec": 1.241, "accepted": true, "measured_before": [44.2, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T16:01:34.880", "t_unix": 1793862094.88, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 7, "held_sec": 1.344, "accepted": true, "measured_before": [39.63, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [24.63, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862094.917123, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T16:01:34.982", "t_unix": 1793862094.983, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 8, "held_sec": 1.446, "accepted": true, "measured_before": [35.59, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.96, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.96, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T16:01:35.098", "t_unix": 1793862095.099, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 9, "held_sec": 1.562, "accepted": true, "measured_before": [34.54, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T16:01:35.198", "t_unix": 1793862095.199, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 10, "held_sec": 1.662, "accepted": true, "measured_before": [32.51, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.88, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.88, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 119, "t": "2026-11-05T16:01:35.300", "t_unix": 1793862095.3, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 11, "held_sec": 1.764, "accepted": true, "measured_before": [28.38, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.38, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862095.3379571, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 120, "t": "2026-11-05T16:01:35.417", "t_unix": 1793862095.418, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 12, "held_sec": 1.881, "accepted": true, "measured_before": [24.6, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 121, "t": "2026-11-05T16:01:35.521", "t_unix": 1793862095.521, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 13, "held_sec": 1.984, "accepted": true, "measured_before": [24.69, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 122, "t": "2026-11-05T16:01:35.623", "t_unix": 1793862095.623, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 14, "held_sec": 2.087, "accepted": true, "measured_before": [21.53, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 123, "t": "2026-11-05T16:01:35.723", "t_unix": 1793862095.724, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 15, "held_sec": 2.187, "accepted": true, "measured_before": [17.4, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [2.4, -0.61, 15.38, -0.26, 8.96, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862095.755265, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 124, "t": "2026-11-05T16:01:35.839", "t_unix": 1793862095.839, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 16, "held_sec": 2.303, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.35, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 125, "t": "2026-11-05T16:01:35.941", "t_unix": 1793862095.941, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 17, "held_sec": 2.405, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 126, "t": "2026-11-05T16:01:36.057", "t_unix": 1793862096.058, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 18, "held_sec": 2.521, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 127, "t": "2026-11-05T16:01:36.173", "t_unix": 1793862096.174, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 19, "held_sec": 2.637, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 128, "t": "2026-11-05T16:01:36.275", "t_unix": 1793862096.275, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 20, "held_sec": 2.738, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 129, "t": "2026-11-05T16:01:36.375", "t_unix": 1793862096.375, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 21, "held_sec": 2.838, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 130, "t": "2026-11-05T16:01:36.491", "t_unix": 1793862096.492, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 22, "held_sec": 2.955, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 131, "t": "2026-11-05T16:01:36.592", "t_unix": 1793862096.593, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 23, "held_sec": 3.056, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 132, "t": "2026-11-05T16:01:36.708", "t_unix": 1793862096.708, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 24, "held_sec": 3.171, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 133, "t": "2026-11-05T16:01:36.809", "t_unix": 1793862096.809, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 25, "held_sec": 3.273, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 134, "t": "2026-11-05T16:01:36.926", "t_unix": 1793862096.926, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 11, "hold_n": 26, "held_sec": 3.39, "accepted": true, "measured_before": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 135, "t": "2026-11-05T16:01:36.960", "t_unix": 1793862096.961, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "hold_stall", "hold_id": 11, "measured_at_request": [13.35, 0.17, 16.08, -0.43, 9.84, -29.61], "t_halt": 1793862096.961217, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.35, 1.31, 17.05, -0.43, 11.33, -29.61], "moved_after_request_deg": [0.0, 1.14, 0.97, 0.0, 1.49, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 136, "t": "2026-11-05T16:01:39.723", "t_unix": 1793862099.724, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 137, "t": "2026-11-05T16:01:42.766", "t_unix": 1793862102.767, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 12, "hold_n": 0, "accepted": true, "measured_before": [13.35, 1.31, 17.05, -0.43, 11.33, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, 16.05, -0.43, 11.33, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862102.8787131, "measured_before_send": [13.35, 1.31, 17.05, -0.43, 11.33, -29.61], "resends": [], "reached": true, "reached_angles": [13.35, 1.31, 17.05, -0.43, 11.33, -29.61], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 138, "t": "2026-11-05T16:01:43.182", "t_unix": 1793862103.182, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 1, "held_sec": 0.416, "accepted": true, "measured_before": [13.35, 2.1, 17.05, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, 2.05, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862103.212898, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 139, "t": "2026-11-05T16:01:43.283", "t_unix": 1793862103.283, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 2, "held_sec": 0.517, "accepted": true, "measured_before": [13.35, 2.1, 17.05, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 140, "t": "2026-11-05T16:01:43.384", "t_unix": 1793862103.385, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 3, "held_sec": 0.619, "accepted": true, "measured_before": [13.35, 2.1, 16.78, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 14.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 141, "t": "2026-11-05T16:01:43.485", "t_unix": 1793862103.486, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 4, "held_sec": 0.72, "accepted": true, "measured_before": [13.35, 2.1, 3.51, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, -11.49, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862103.82059, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 142, "t": "2026-11-05T16:01:43.887", "t_unix": 1793862103.887, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 5, "held_sec": 1.121, "accepted": true, "measured_before": [13.35, 2.1, 3.51, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 143, "t": "2026-11-05T16:01:43.988", "t_unix": 1793862103.988, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 6, "held_sec": 1.222, "accepted": true, "measured_before": [13.35, 2.1, 3.07, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 144, "t": "2026-11-05T16:01:44.088", "t_unix": 1793862104.089, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 7, "held_sec": 1.323, "accepted": true, "measured_before": [13.35, 2.1, -0.96, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 10.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 145, "t": "2026-11-05T16:01:44.205", "t_unix": 1793862104.206, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 8, "held_sec": 1.44, "accepted": true, "measured_before": [13.35, 2.1, -0.96, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 10.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 146, "t": "2026-11-05T16:01:44.307", "t_unix": 1793862104.307, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 9, "held_sec": 1.541, "accepted": true, "measured_before": [13.35, 2.1, -9.22, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 2.27, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, -24.22, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862104.332921, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 147, "t": "2026-11-05T16:01:44.742", "t_unix": 1793862104.742, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 10, "held_sec": 1.976, "accepted": true, "measured_before": [13.35, 2.1, -22.85, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 1.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, -37.85, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862105.1198359, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 148, "t": "2026-11-05T16:01:45.182", "t_unix": 1793862105.183, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 11, "held_sec": 2.416, "accepted": true, "measured_before": [13.35, 2.1, -22.85, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 149, "t": "2026-11-05T16:01:45.285", "t_unix": 1793862105.285, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 12, "held_sec": 2.519, "accepted": true, "measured_before": [13.35, 2.1, -35.68, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 2.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, -50.68, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862105.6448882, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 150, "t": "2026-11-05T16:01:46.069", "t_unix": 1793862106.069, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 12, "hold_n": 13, "held_sec": 3.303, "accepted": true, "released_during_job": true, "measured_before": [13.35, 2.1, -47.54, -0.43, 11.33, -29.61], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 3.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 1.31, -62.54, -0.43, 11.33, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862106.116724, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 151, "t": "2026-11-05T16:01:46.473", "t_unix": 1793862106.473, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 12, "measured_at_request": [13.35, 2.1, -35.68, -0.43, 11.33, -29.61], "t_halt": 1793862106.4740422, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.35, 2.81, -58.44, -0.43, 12.56, -29.61], "moved_after_request_deg": [0.0, 0.71, -22.76, 0.0, 1.23, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 152, "t": "2026-11-05T16:01:47.006", "t_unix": 1793862107.006, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 13, "hold_n": 0, "accepted": true, "measured_before": [13.35, 2.81, -58.44, -0.43, 12.56, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, -57.44, -0.43, 12.56, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862107.073916, "measured_before_send": [13.35, 2.81, -58.44, -0.43, 12.56, -29.61], "resends": [], "reached": true, "reached_angles": [13.35, 2.81, -58.44, -0.43, 12.56, -29.61], "reach_err": 1.0, "elapsed_sec": 0.06, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 153, "t": "2026-11-05T16:01:47.421", "t_unix": 1793862107.421, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 1, "held_sec": 0.416, "accepted": true, "measured_before": [13.35, 3.42, -56.95, -0.35, 13.53, -29.61], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 0.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, -41.95, -0.43, 12.56, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862107.449527, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 154, "t": "2026-11-05T16:01:47.538", "t_unix": 1793862107.538, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 2, "held_sec": 0.533, "accepted": true, "measured_before": [13.35, 3.51, -56.68, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 14.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 155, "t": "2026-11-05T16:01:47.639", "t_unix": 1793862107.639, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 3, "held_sec": 0.634, "accepted": true, "measured_before": [13.35, 3.51, -55.72, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 156, "t": "2026-11-05T16:01:47.740", "t_unix": 1793862107.741, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 4, "held_sec": 0.735, "accepted": true, "measured_before": [13.35, 3.51, -51.94, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 157, "t": "2026-11-05T16:01:47.856", "t_unix": 1793862107.857, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 5, "held_sec": 0.851, "accepted": true, "measured_before": [13.35, 3.51, -47.1, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 5.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 158, "t": "2026-11-05T16:01:47.972", "t_unix": 1793862107.973, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 6, "held_sec": 0.967, "accepted": true, "measured_before": [13.35, 3.51, -42.45, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 0.5, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, -27.45, -0.43, 12.56, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862108.014994, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 159, "t": "2026-11-05T16:01:48.090", "t_unix": 1793862108.091, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 7, "held_sec": 1.085, "accepted": true, "measured_before": [13.35, 3.6, -31.64, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, -16.64, -0.43, 12.56, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862108.494242, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 160, "t": "2026-11-05T16:01:48.577", "t_unix": 1793862108.578, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 8, "held_sec": 1.572, "accepted": true, "measured_before": [13.35, 3.6, -26.63, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 161, "t": "2026-11-05T16:01:48.678", "t_unix": 1793862108.679, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 9, "held_sec": 1.673, "accepted": true, "measured_before": [13.35, 3.6, -25.57, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 8.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 162, "t": "2026-11-05T16:01:48.779", "t_unix": 1793862108.78, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 10, "held_sec": 1.774, "accepted": true, "measured_before": [13.35, 3.6, -22.58, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 5.94, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.94, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 163, "t": "2026-11-05T16:01:48.880", "t_unix": 1793862108.88, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 11, "held_sec": 1.875, "accepted": true, "measured_before": [13.35, 3.6, -18.19, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 1.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, -3.19, -0.43, 12.56, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862108.915987, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 164, "t": "2026-11-05T16:01:48.984", "t_unix": 1793862108.985, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 12, "held_sec": 1.979, "accepted": true, "measured_before": [13.35, 3.6, -16.87, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 165, "t": "2026-11-05T16:01:49.101", "t_unix": 1793862109.101, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 13, "held_sec": 2.095, "accepted": true, "measured_before": [13.35, 3.6, -14.85, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 166, "t": "2026-11-05T16:01:49.202", "t_unix": 1793862109.203, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 13, "hold_n": 14, "held_sec": 2.197, "accepted": true, "released_during_job": true, "measured_before": [13.35, 3.6, -2.19, -0.35, 13.62, -29.61], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 2.81, 12.81, -0.43, 12.56, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862109.537014, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 167, "t": "2026-11-05T16:01:49.926", "t_unix": 1793862109.927, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 13, "measured_at_request": [13.35, 3.6, -14.85, -0.35, 13.62, -29.61], "t_halt": 1793862109.92766, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.35, 4.57, 9.49, -0.35, 15.02, -29.61], "moved_after_request_deg": [0.0, 0.97, 24.34, 0.0, 1.4, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 168, "t": "2026-11-05T16:01:52.758", "t_unix": 1793862112.759, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 169, "t": "2026-11-05T16:01:53.325", "t_unix": 1793862113.326, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 14, "hold_n": 0, "accepted": true, "measured_before": [13.35, 4.57, 9.49, -0.35, 15.02, -29.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 4.57, 9.49, -1.35, 15.02, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862113.380383, "measured_before_send": [13.35, 4.57, 9.49, -0.35, 15.02, -29.61], "resends": [], "reached": true, "reached_angles": [13.35, 5.44, 10.54, -0.61, 14.67, -29.61], "reach_err": 1.05, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 170, "t": "2026-11-05T16:01:53.798", "t_unix": 1793862113.799, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 1, "held_sec": 0.473, "accepted": true, "measured_before": [13.35, 5.44, 10.54, -0.61, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 0.74, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 4.57, 9.49, -15.61, 15.02, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862113.834325, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 171, "t": "2026-11-05T16:01:53.899", "t_unix": 1793862113.9, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 2, "held_sec": 0.574, "accepted": true, "measured_before": [13.35, 5.44, 10.54, -0.61, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 172, "t": "2026-11-05T16:01:54.000", "t_unix": 1793862114.0, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 3, "held_sec": 0.674, "accepted": true, "measured_before": [13.35, 5.44, 10.54, -2.46, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 173, "t": "2026-11-05T16:01:54.101", "t_unix": 1793862114.101, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 4, "held_sec": 0.776, "accepted": true, "measured_before": [13.35, 5.44, 10.54, -6.5, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 174, "t": "2026-11-05T16:01:54.204", "t_unix": 1793862114.204, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 5, "held_sec": 0.879, "accepted": true, "measured_before": [13.35, 5.44, 10.54, -11.16, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 4.57, 9.49, -26.16, 15.02, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862114.242748, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 175, "t": "2026-11-05T16:01:54.661", "t_unix": 1793862114.661, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 14, "hold_n": 6, "held_sec": 1.336, "accepted": true, "released_during_job": true, "measured_before": [13.35, 5.44, 10.54, -23.46, 14.67, -29.61], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 2.7, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.35, 4.57, 9.49, -38.46, 15.02, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862114.689326, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 176, "t": "2026-11-05T16:01:55.063", "t_unix": 1793862115.063, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 14, "measured_at_request": [13.35, 5.44, 10.54, -11.16, 14.67, -29.61], "t_halt": 1793862115.064953, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.27, 6.32, 11.33, -34.8, 15.82, -29.61], "moved_after_request_deg": [-0.08, 0.88, 0.79, -23.64, 1.15, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 177, "t": "2026-11-05T16:01:55.621", "t_unix": 1793862115.622, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 15, "hold_n": 0, "accepted": true, "measured_before": [13.27, 6.32, 11.33, -34.54, 15.82, -29.61], "start_source": "command", "cmd_gap_deg": 0.26, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.27, 6.32, 11.33, -33.8, 15.82, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862115.665601, "measured_before_send": [13.27, 6.32, 11.33, -34.54, 15.82, -29.61], "resends": [], "reached": true, "reached_angles": [13.27, 6.32, 11.33, -34.54, 15.82, -29.61], "reach_err": 0.74, "elapsed_sec": 0.07, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 178, "t": "2026-11-05T16:01:56.023", "t_unix": 1793862116.023, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 1, "held_sec": 0.402, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -33.92, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 0.12, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.27, 6.32, 11.33, -18.92, 15.82, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862116.061789, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 179, "t": "2026-11-05T16:01:56.124", "t_unix": 1793862116.124, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 2, "held_sec": 0.503, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -23.37, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.27, 6.32, 11.33, -8.37, 15.82, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862116.496854, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 180, "t": "2026-11-05T16:01:56.563", "t_unix": 1793862116.564, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 3, "held_sec": 0.942, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -11.16, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 2.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.27, 6.32, 11.33, 3.84, 15.82, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862116.938345, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 181, "t": "2026-11-05T16:01:57.006", "t_unix": 1793862117.007, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 4, "held_sec": 1.385, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -9.14, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 182, "t": "2026-11-05T16:01:57.107", "t_unix": 1793862117.108, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 5, "held_sec": 1.486, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -7.82, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 183, "t": "2026-11-05T16:01:57.208", "t_unix": 1793862117.209, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 6, "held_sec": 1.588, "accepted": true, "measured_before": [13.18, 7.03, 11.86, -4.21, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 8.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 184, "t": "2026-11-05T16:01:57.324", "t_unix": 1793862117.324, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 15, "hold_n": 7, "held_sec": 1.703, "accepted": true, "released_during_job": true, "measured_before": [13.18, 7.03, 11.86, 2.9, 16.69, -29.61], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 0.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.27, 6.32, 11.33, 17.9, 15.82, -29.61], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 185, "t": "2026-11-05T16:01:57.727", "t_unix": 1793862117.727, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 15, "measured_at_request": [13.18, 7.03, 11.86, -4.21, 16.69, -29.61], "t_halt": 1793862117.727998, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 8.34, 12.56, 2.63, 18.1, -29.61], "moved_after_request_deg": [0.0, 1.31, 0.7, 6.84, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 186, "t": "2026-11-05T16:01:58.194", "t_unix": 1793862118.194, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [13.18, 8.34, 12.56, 2.54, 18.1, -29.61], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 8.34, 12.56, 3.63, 18.1, -29.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862118.229574, "measured_before_send": [13.18, 8.34, 12.56, 2.54, 18.1, -29.61], "resends": [], "reached": true, "reached_angles": [13.18, 9.05, 13.27, 2.81, 19.24, -29.61], "reach_err": 1.14, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 187, "t": "2026-11-05T16:01:58.629", "t_unix": 1793862118.63, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 1, "held_sec": 0.436, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 2.81, 19.24, -29.61], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 0.82, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 8.34, 12.56, 17.81, 18.1, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862118.652797, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 188, "t": "2026-11-05T16:01:58.745", "t_unix": 1793862118.745, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 2, "held_sec": 0.551, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 3.42, 19.24, -29.61], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 14.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 189, "t": "2026-11-05T16:01:58.845", "t_unix": 1793862118.845, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 3, "held_sec": 0.651, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 6.41, 19.24, -29.61], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 190, "t": "2026-11-05T16:01:58.946", "t_unix": 1793862118.946, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 4, "held_sec": 0.752, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 10.72, 19.24, -29.61], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 191, "t": "2026-11-05T16:01:59.047", "t_unix": 1793862119.047, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 5, "held_sec": 0.853, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 15.02, 19.24, -29.61], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 2.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 8.34, 12.56, 30.02, 18.1, -29.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862119.082474, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 192, "t": "2026-11-05T16:01:59.181", "t_unix": 1793862119.182, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 6, "held_sec": 0.988, "accepted": true, "measured_before": [13.18, 9.05, 13.27, 16.78, 19.24, -29.53], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 193, "t": "2026-11-05T16:01:59.298", "t_unix": 1793862119.298, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 16, "hold_n": 7, "held_sec": 1.104, "accepted": true, "released_during_job": true, "measured_before": [13.18, 9.05, 13.27, 19.33, 19.24, -29.53], "start_source": "hold", "cmd_gap_deg": 1.14, "hold_lead_deg": 10.69, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.69, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 194, "t": "2026-11-05T16:01:59.348", "t_unix": 1793862119.349, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 16, "measured_at_request": [13.18, 9.05, 13.27, 16.78, 19.24, -29.53], "t_halt": 1793862119.348995, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 9.93, 13.97, 21.35, 20.3, -29.53], "moved_after_request_deg": [0.0, 0.88, 0.7, 4.57, 1.06, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 195, "t": "2026-11-05T16:02:00.189", "t_unix": 1793862120.19, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 17, "hold_n": 0, "accepted": true, "measured_before": [13.18, 9.93, 13.97, 21.26, 20.3, -29.53], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 9.93, 13.97, 20.35, 20.3, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862120.257534, "measured_before_send": [13.18, 9.93, 13.97, 21.26, 20.3, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 9.93, 13.97, 21.26, 20.3, -29.53], "reach_err": 0.91, "elapsed_sec": 0.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 196, "t": "2026-11-05T16:02:00.588", "t_unix": 1793862120.589, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 17, "hold_n": 1, "held_sec": 0.4, "accepted": true, "released_during_job": true, "measured_before": [13.18, 10.72, 14.58, 20.65, 21.0, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 9.93, 13.97, 5.65, 20.3, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862120.623256, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 197, "t": "2026-11-05T16:02:00.707", "t_unix": 1793862120.707, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "released_while_sending", "hold_id": 17, "measured_at_request": [13.18, 10.72, 14.58, 20.65, 21.0, -29.53], "t_halt": 1793862120.709397, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 11.51, 15.29, 19.24, 21.97, -29.53], "moved_after_request_deg": [0.0, 0.79, 0.71, -1.41, 0.97, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 198, "t": "2026-11-05T16:02:01.161", "t_unix": 1793862121.161, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [13.18, 11.51, 15.29, 19.24, 21.97, -29.53], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 11.51, 15.29, 18.24, 21.97, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862121.210367, "measured_before_send": [13.18, 11.51, 15.29, 19.24, 21.97, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 11.51, 15.29, 19.24, 21.97, -29.53], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 199, "t": "2026-11-05T16:02:01.566", "t_unix": 1793862121.567, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 18, "hold_n": 1, "held_sec": 0.406, "accepted": true, "measured_before": [13.18, 11.51, 15.29, 19.24, 21.97, -29.53], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 11.51, 15.29, 4.24, 21.97, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862121.605551, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 200, "t": "2026-11-05T16:02:01.672", "t_unix": 1793862121.672, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 18, "hold_n": 2, "held_sec": 0.512, "accepted": true, "measured_before": [13.18, 11.77, 15.29, 19.24, 21.97, -29.53], "start_source": "hold", "cmd_gap_deg": 0.26, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 201, "t": "2026-11-05T16:02:01.788", "t_unix": 1793862121.789, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 18, "hold_n": 3, "held_sec": 0.629, "accepted": true, "measured_before": [13.18, 12.3, 15.64, 16.34, 22.67, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 202, "t": "2026-11-05T16:02:01.889", "t_unix": 1793862121.889, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 18, "hold_n": 4, "held_sec": 0.729, "accepted": true, "released_during_job": true, "measured_before": [13.18, 12.3, 15.82, 4.92, 22.67, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 0.68, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 11.51, 15.29, -10.08, 21.97, -29.53], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 204, "t": "2026-11-05T16:02:02.456", "t_unix": 1793862122.456, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 19, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 203, "t": "2026-11-05T16:02:02.257", "t_unix": 1793862122.258, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 18, "measured_at_request": [13.18, 12.3, 15.64, 16.34, 22.67, -29.53], "t_halt": 1793862122.261662, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 13.62, 16.52, 4.57, 23.73, -29.53], "moved_after_request_deg": [0.0, 1.32, 0.88, -11.77, 1.06, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 206, "t": "2026-11-05T16:02:03.284", "t_unix": 1793862123.285, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 21, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 205, "t": "2026-11-05T16:02:03.012", "t_unix": 1793862123.013, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [13.18, 13.62, 16.52, 4.39, 23.73, -29.53], "start_source": "command", "cmd_gap_deg": 0.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 13.62, 16.52, 3.57, 23.73, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862123.065129, "measured_before_send": [13.18, 13.62, 16.52, 4.39, 23.73, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 14.41, 16.52, 3.95, 24.43, -29.53], "reach_err": 0.79, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 207, "t": "2026-11-05T16:02:03.721", "t_unix": 1793862123.722, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 22, "hold_n": 0, "accepted": true, "measured_before": [13.18, 14.41, 16.52, 3.77, 24.43, -29.53], "start_source": "command", "cmd_gap_deg": 0.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 13.62, 16.52, 2.57, 23.73, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862123.76425, "measured_before_send": [13.18, 14.41, 16.52, 3.77, 24.43, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 14.41, 16.52, 2.9, 24.43, -29.53], "reach_err": 0.79, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 208, "t": "2026-11-05T16:02:04.158", "t_unix": 1793862124.159, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 22, "hold_n": 1, "held_sec": 0.437, "accepted": true, "released_during_job": true, "measured_before": [13.18, 14.41, 16.52, 2.9, 24.43, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 13.62, 16.52, -12.1, 23.73, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862124.182695, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 209, "t": "2026-11-05T16:02:04.276", "t_unix": 1793862124.277, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "released_while_sending", "hold_id": 22, "measured_at_request": [13.18, 14.41, 16.52, 2.9, 24.43, -29.53], "t_halt": 1793862124.277824, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 15.29, 16.52, 2.19, 25.4, -29.53], "moved_after_request_deg": [0.0, 0.88, 0.0, -0.71, 0.97, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 210, "t": "2026-11-05T16:02:05.616", "t_unix": 1793862125.617, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 211, "t": "2026-11-05T16:02:06.653", "t_unix": 1793862126.654, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 212, "t": "2026-11-05T16:02:07.357", "t_unix": 1793862127.358, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 23, "hold_n": 0, "accepted": true, "measured_before": [13.18, 15.29, 16.52, 2.19, 25.4, -29.53], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 15.29, 16.52, 2.19, 24.4, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862127.4206212, "measured_before_send": [13.18, 15.29, 16.52, 2.19, 25.4, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 15.29, 16.52, 2.19, 25.4, -29.53], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 213, "t": "2026-11-05T16:02:07.768", "t_unix": 1793862127.769, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 1, "held_sec": 0.411, "accepted": true, "measured_before": [13.18, 15.29, 16.52, 2.19, 25.4, -29.53], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 15.29, 16.52, 2.19, 10.4, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862127.79235, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 214, "t": "2026-11-05T16:02:08.175", "t_unix": 1793862128.175, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 2, "held_sec": 0.818, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 14.32, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 3.92, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 15.29, 16.52, 2.19, -0.68, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862128.2318668, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 215, "t": "2026-11-05T16:02:08.300", "t_unix": 1793862128.3, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 3, "held_sec": 0.943, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 11.68, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 12.36, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.36, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 216, "t": "2026-11-05T16:02:08.401", "t_unix": 1793862128.402, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 4, "held_sec": 1.044, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 10.98, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 217, "t": "2026-11-05T16:02:08.501", "t_unix": 1793862128.502, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 5, "held_sec": 1.144, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 8.17, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 218, "t": "2026-11-05T16:02:08.617", "t_unix": 1793862128.617, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 6, "held_sec": 1.26, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 2.72, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 3.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 15.29, 16.52, 2.19, -12.28, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862128.648252, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 219, "t": "2026-11-05T16:02:08.718", "t_unix": 1793862128.719, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 7, "held_sec": 1.361, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.96, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 220, "t": "2026-11-05T16:02:08.820", "t_unix": 1793862128.821, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 8, "held_sec": 1.463, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.96, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 221, "t": "2026-11-05T16:02:08.922", "t_unix": 1793862128.923, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 9, "held_sec": 1.565, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.96, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 222, "t": "2026-11-05T16:02:09.022", "t_unix": 1793862129.023, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 10, "held_sec": 1.665, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 223, "t": "2026-11-05T16:02:09.123", "t_unix": 1793862129.124, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 11, "held_sec": 1.766, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 224, "t": "2026-11-05T16:02:09.224", "t_unix": 1793862129.225, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 12, "held_sec": 1.867, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 225, "t": "2026-11-05T16:02:09.326", "t_unix": 1793862129.326, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 13, "held_sec": 1.969, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 226, "t": "2026-11-05T16:02:09.441", "t_unix": 1793862129.441, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 14, "held_sec": 2.084, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 227, "t": "2026-11-05T16:02:09.543", "t_unix": 1793862129.544, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 15, "held_sec": 2.186, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 228, "t": "2026-11-05T16:02:09.645", "t_unix": 1793862129.646, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 16, "held_sec": 2.288, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 229, "t": "2026-11-05T16:02:09.747", "t_unix": 1793862129.748, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 23, "hold_n": 17, "held_sec": 2.39, "accepted": true, "measured_before": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 230, "t": "2026-11-05T16:02:09.780", "t_unix": 1793862129.78, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "hold_stall", "hold_id": 23, "measured_at_request": [13.18, 16.08, 16.52, 2.1, 0.87, -29.53], "t_halt": 1793862129.782985, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 17.31, 16.52, 2.1, 2.37, -29.53], "moved_after_request_deg": [0.0, 1.23, 0.0, 0.0, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 231, "t": "2026-11-05T16:02:10.538", "t_unix": 1793862130.538, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 24, "hold_n": 0, "accepted": true, "measured_before": [13.18, 17.31, 16.52, 2.1, 2.37, -29.53], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, 1.37, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862130.5851789, "measured_before_send": [13.18, 17.31, 16.52, 2.1, 2.37, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 18.19, 16.52, 2.1, 2.37, -29.53], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 232, "t": "2026-11-05T16:02:10.973", "t_unix": 1793862130.973, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 1, "held_sec": 0.435, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, 2.37, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -12.63, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862130.993577, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 233, "t": "2026-11-05T16:02:11.074", "t_unix": 1793862131.074, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 2, "held_sec": 0.536, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, 2.37, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 234, "t": "2026-11-05T16:02:11.175", "t_unix": 1793862131.175, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 3, "held_sec": 0.637, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, 1.49, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 235, "t": "2026-11-05T16:02:11.277", "t_unix": 1793862131.278, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 4, "held_sec": 0.74, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -3.42, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 236, "t": "2026-11-05T16:02:11.393", "t_unix": 1793862131.394, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 5, "held_sec": 0.856, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -10.28, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.35, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -25.28, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862131.794732, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 237, "t": "2026-11-05T16:02:11.862", "t_unix": 1793862131.863, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 6, "held_sec": 1.325, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -10.28, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 238, "t": "2026-11-05T16:02:11.964", "t_unix": 1793862131.964, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 7, "held_sec": 1.426, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -12.21, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 239, "t": "2026-11-05T16:02:12.065", "t_unix": 1793862132.065, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 8, "held_sec": 1.527, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -16.69, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 240, "t": "2026-11-05T16:02:12.165", "t_unix": 1793862132.166, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 9, "held_sec": 1.628, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -20.39, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.89, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -35.39, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862132.1888618, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 241, "t": "2026-11-05T16:02:12.585", "t_unix": 1793862132.585, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 10, "held_sec": 2.047, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -31.99, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -46.99, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862132.6098719, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 242, "t": "2026-11-05T16:02:13.009", "t_unix": 1793862133.009, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 11, "held_sec": 2.471, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -43.5, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -58.5, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862133.033014, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 243, "t": "2026-11-05T16:02:13.111", "t_unix": 1793862133.111, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 12, "held_sec": 2.573, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -55.19, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.31, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -70.19, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862133.487183, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 244, "t": "2026-11-05T16:02:13.907", "t_unix": 1793862133.907, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 13, "held_sec": 3.369, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.1, -67.93, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.26, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 17.31, 16.52, 2.1, -82.93, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862133.971168, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 245, "t": "2026-11-05T16:02:14.026", "t_unix": 1793862134.027, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 14, "held_sec": 3.489, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.19, -68.02, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 246, "t": "2026-11-05T16:02:14.127", "t_unix": 1793862134.128, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 15, "held_sec": 3.59, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.28, -80.85, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.08, "clip": [{"joint": 4, "want": -95.85, "cmd": -90.0, "limit": "J4_SAFE", "bound": -90.0}], "refused": [], "limit_ja": "j4 を -95.85° → -90.00° に切った（J4_SAFE -90.00°）", "limit_ascii": "j4 clipped -95.85->-90.00 (J4_SAFE -90.00)", "command": [13.18, 17.31, 16.52, 2.1, -90.0, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862134.503992, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 247, "t": "2026-11-05T16:02:14.907", "t_unix": 1793862134.907, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 24, "hold_n": 16, "held_sec": 4.369, "accepted": true, "measured_before": [13.18, 18.19, 16.52, 2.37, -88.33, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 1.67, "clip": [], "refused": [{"joint": 4, "why": "at_limit", "value": -103.33, "lo": -90.0, "hi": -90.0, "limit": "J4_SAFE"}], "limit_ja": "j4 -103.33° は送らない：範囲の端にいて、押した向きに進めない（範囲 [-90.00, -90.00]・J4_SAFE）", "limit_ascii": "j4 refused at_limit -103.33 [-90.00, -90.00] (J4_SAFE)", "sent": false, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 248, "t": "2026-11-05T16:02:14.940", "t_unix": 1793862134.941, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "hold_not_sent", "hold_id": 24, "measured_at_request": [13.18, 18.19, 16.52, 2.37, -88.33, -29.53], "t_halt": 1793862134.942059, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 19.51, 16.52, 2.54, -87.09, -29.53], "moved_after_request_deg": [0.0, 1.32, 0.0, 0.17, 1.24, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 249, "t": "2026-11-05T16:02:15.868", "t_unix": 1793862135.868, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 25, "hold_n": 0, "accepted": true, "measured_before": [13.18, 19.51, 16.52, 2.63, -87.09, -29.53], "start_source": "command", "cmd_gap_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 19.51, 16.52, 2.54, -86.09, -29.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862135.92479, "measured_before_send": [13.18, 19.51, 16.52, 2.63, -87.09, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 19.51, 16.52, 2.63, -87.09, -29.53], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 250, "t": "2026-11-05T16:02:16.269", "t_unix": 1793862136.27, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 1, "held_sec": 0.401, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.63, -85.25, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 19.51, 16.52, 2.54, -70.25, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862136.3274398, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 251, "t": "2026-11-05T16:02:16.392", "t_unix": 1793862136.393, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 2, "held_sec": 0.525, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.63, -85.25, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 252, "t": "2026-11-05T16:02:16.509", "t_unix": 1793862136.51, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 3, "held_sec": 0.642, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.63, -83.49, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 253, "t": "2026-11-05T16:02:16.612", "t_unix": 1793862136.612, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 4, "held_sec": 0.744, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.63, -78.75, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 254, "t": "2026-11-05T16:02:16.712", "t_unix": 1793862136.712, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 5, "held_sec": 0.844, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.63, -74.53, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 19.51, 16.52, 2.54, -59.53, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862136.750081, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 255, "t": "2026-11-05T16:02:16.817", "t_unix": 1793862136.818, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 6, "held_sec": 0.95, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -70.83, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 256, "t": "2026-11-05T16:02:16.932", "t_unix": 1793862136.933, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 7, "held_sec": 1.065, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -68.9, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 257, "t": "2026-11-05T16:02:17.035", "t_unix": 1793862137.035, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 8, "held_sec": 1.167, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -66.26, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 6.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 258, "t": "2026-11-05T16:02:17.152", "t_unix": 1793862137.152, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 9, "held_sec": 1.284, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -62.22, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.69, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 19.51, 16.52, 2.54, -47.22, -29.53], "sent": true, "reached": null, "no_check": true, "t_send": 1793862137.1949298, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 259, "t": "2026-11-05T16:02:17.253", "t_unix": 1793862137.253, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 10, "held_sec": 1.385, "accepted": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -58.79, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 261, "t": "2026-11-05T16:02:17.722", "t_unix": 1793862137.722, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 26, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 260, "t": "2026-11-05T16:02:17.369", "t_unix": 1793862137.37, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 25, "hold_n": 11, "held_sec": 1.502, "accepted": true, "released_during_job": true, "measured_before": [13.18, 20.39, 16.52, 2.72, -46.58, -29.53], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 19.51, 16.52, 2.54, -31.58, -29.53], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 262, "t": "2026-11-05T16:02:17.739", "t_unix": 1793862137.739, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 25, "measured_at_request": [13.18, 20.39, 16.52, 2.72, -58.79, -29.53], "t_halt": 1793862137.740116, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 21.44, 16.52, 2.63, -44.64, -29.53], "moved_after_request_deg": [0.0, 1.05, 0.0, -0.09, 14.15, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 263, "t": "2026-11-05T16:02:19.569", "t_unix": 1793862139.57, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 264, "t": "2026-11-05T16:02:21.920", "t_unix": 1793862141.921, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 27, "hold_n": 0, "accepted": true, "measured_before": [13.18, 21.44, 16.52, 2.63, -44.64, -29.53], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -30.53], "sent": true, "timeout_sec": 8.0, "t_send": 1793862142.024108, "measured_before_send": [13.18, 21.44, 16.52, 2.63, -44.64, -29.53], "resends": [], "reached": true, "reached_angles": [13.18, 22.41, 16.52, 2.63, -45.35, -29.79], "reach_err": 0.97, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 265, "t": "2026-11-05T16:02:22.431", "t_unix": 1793862142.432, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 1, "held_sec": 0.512, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -29.79], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 0.74, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -44.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793862142.4780009, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 266, "t": "2026-11-05T16:02:22.582", "t_unix": 1793862142.582, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 2, "held_sec": 0.662, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -30.41], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 14.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 267, "t": "2026-11-05T16:02:22.683", "t_unix": 1793862142.684, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 3, "held_sec": 0.764, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -33.31], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 268, "t": "2026-11-05T16:02:22.784", "t_unix": 1793862142.785, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 4, "held_sec": 0.865, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -37.79], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 7.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 269, "t": "2026-11-05T16:02:22.901", "t_unix": 1793862142.902, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 5, "held_sec": 0.982, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -42.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 1.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -57.89], "sent": true, "reached": null, "no_check": true, "t_send": 1793862142.9470022, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 270, "t": "2026-11-05T16:02:23.003", "t_unix": 1793862143.004, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 6, "held_sec": 1.083, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -44.03], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 271, "t": "2026-11-05T16:02:23.103", "t_unix": 1793862143.104, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 7, "held_sec": 1.184, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -45.52], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 272, "t": "2026-11-05T16:02:23.204", "t_unix": 1793862143.204, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 8, "held_sec": 1.284, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -49.21], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 273, "t": "2026-11-05T16:02:23.305", "t_unix": 1793862143.305, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 9, "held_sec": 1.385, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -53.78], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -68.78], "sent": true, "reached": null, "no_check": true, "t_send": 1793862143.348205, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 274, "t": "2026-11-05T16:02:23.407", "t_unix": 1793862143.407, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 10, "held_sec": 1.487, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -56.86], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 275, "t": "2026-11-05T16:02:23.507", "t_unix": 1793862143.508, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 11, "held_sec": 1.587, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -57.3], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 276, "t": "2026-11-05T16:02:23.607", "t_unix": 1793862143.608, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 12, "held_sec": 1.687, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -59.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 9.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 277, "t": "2026-11-05T16:02:23.708", "t_unix": 1793862143.708, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 13, "held_sec": 1.788, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -63.72], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 5.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 278, "t": "2026-11-05T16:02:23.823", "t_unix": 1793862143.824, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 14, "held_sec": 1.903, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -67.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 1.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -82.67], "sent": true, "reached": null, "no_check": true, "t_send": 1793862143.855896, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 279, "t": "2026-11-05T16:02:24.312", "t_unix": 1793862144.312, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 15, "held_sec": 2.392, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -81.65], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 1.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -96.65], "sent": true, "reached": null, "no_check": true, "t_send": 1793862144.3571289, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 280, "t": "2026-11-05T16:02:24.412", "t_unix": 1793862144.413, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 16, "held_sec": 2.493, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -81.91], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 14.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 281, "t": "2026-11-05T16:02:24.513", "t_unix": 1793862144.514, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 17, "held_sec": 2.593, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -83.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 282, "t": "2026-11-05T16:02:24.631", "t_unix": 1793862144.631, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 18, "held_sec": 2.711, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -87.8], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 283, "t": "2026-11-05T16:02:24.731", "t_unix": 1793862144.731, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 19, "held_sec": 2.811, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -92.54], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -107.54], "sent": true, "reached": null, "no_check": true, "t_send": 1793862144.808022, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 284, "t": "2026-11-05T16:02:24.871", "t_unix": 1793862144.872, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 20, "held_sec": 2.952, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -105.46], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 2.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -120.46], "sent": true, "reached": null, "no_check": true, "t_send": 1793862145.249107, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 285, "t": "2026-11-05T16:02:25.306", "t_unix": 1793862145.306, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 21, "held_sec": 3.386, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -106.87], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 13.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 286, "t": "2026-11-05T16:02:25.406", "t_unix": 1793862145.407, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 22, "held_sec": 3.486, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -108.54], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 287, "t": "2026-11-05T16:02:25.507", "t_unix": 1793862145.508, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 23, "held_sec": 3.588, "accepted": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.35, -112.32], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 8.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 288, "t": "2026-11-05T16:02:25.609", "t_unix": 1793862145.61, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 27, "hold_n": 24, "held_sec": 3.69, "accepted": true, "released_during_job": true, "measured_before": [13.18, 22.41, 16.52, 2.63, -45.26, -116.36], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.1, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 21.44, 16.52, 2.63, -44.64, -131.36], "sent": true, "reached": null, "no_check": true, "t_send": 1793862145.675889, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 289, "t": "2026-11-05T16:02:25.726", "t_unix": 1793862145.727, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 27, "measured_at_request": [13.18, 22.41, 16.52, 2.63, -45.35, -112.32], "t_halt": 1793862145.7304692, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 23.81, 16.52, 2.63, -43.41, -119.61], "moved_after_request_deg": [0.0, 1.4, 0.0, 0.0, 1.94, -7.29], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 290, "t": "2026-11-05T16:02:26.117", "t_unix": 1793862146.117, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 28, "hold_n": 0, "accepted": true, "measured_before": [13.18, 23.81, 16.52, 2.63, -43.41, -119.61], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -118.61], "sent": true, "timeout_sec": 8.0, "t_send": 1793862146.16903, "measured_before_send": [13.18, 23.81, 16.52, 2.63, -43.41, -119.61], "resends": [], "reached": true, "reached_angles": [13.18, 23.81, 16.52, 2.63, -43.41, -119.61], "reach_err": 1.0, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 291, "t": "2026-11-05T16:02:26.517", "t_unix": 1793862146.518, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 1, "held_sec": 0.401, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -119.17], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 0.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -104.17], "sent": true, "reached": null, "no_check": true, "t_send": 1793862146.555527, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 292, "t": "2026-11-05T16:02:26.958", "t_unix": 1793862146.959, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 2, "held_sec": 0.841, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -106.61], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 2.44, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -91.61], "sent": true, "reached": null, "no_check": true, "t_send": 1793862146.991866, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 293, "t": "2026-11-05T16:02:27.059", "t_unix": 1793862147.059, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 3, "held_sec": 0.942, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -104.94], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 294, "t": "2026-11-05T16:02:27.159", "t_unix": 1793862147.16, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 4, "held_sec": 1.043, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -103.53], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 295, "t": "2026-11-05T16:02:27.261", "t_unix": 1793862147.262, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 5, "held_sec": 1.145, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -100.72], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 296, "t": "2026-11-05T16:02:27.377", "t_unix": 1793862147.378, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 6, "held_sec": 1.261, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -94.74], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 3.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -79.74], "sent": true, "reached": null, "no_check": true, "t_send": 1793862147.44671, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 297, "t": "2026-11-05T16:02:27.548", "t_unix": 1793862147.549, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 7, "held_sec": 1.431, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -81.65], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 1.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -66.65], "sent": true, "reached": null, "no_check": true, "t_send": 1793862147.913964, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 298, "t": "2026-11-05T16:02:28.327", "t_unix": 1793862148.328, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 8, "held_sec": 2.21, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -67.93], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 1.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -52.93], "sent": true, "reached": null, "no_check": true, "t_send": 1793862148.354712, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 299, "t": "2026-11-05T16:02:28.763", "t_unix": 1793862148.763, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 9, "held_sec": 2.646, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -55.89], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -40.89], "sent": true, "reached": null, "no_check": true, "t_send": 1793862148.793762, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 300, "t": "2026-11-05T16:02:28.881", "t_unix": 1793862148.881, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 10, "held_sec": 2.764, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -53.7], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 12.81, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.81, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 301, "t": "2026-11-05T16:02:28.982", "t_unix": 1793862148.982, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 11, "held_sec": 2.865, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -52.38], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 302, "t": "2026-11-05T16:02:29.083", "t_unix": 1793862149.083, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 12, "held_sec": 2.966, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -49.74], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 303, "t": "2026-11-05T16:02:29.185", "t_unix": 1793862149.186, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 13, "held_sec": 3.068, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -44.91], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 4.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -29.91], "sent": true, "reached": null, "no_check": true, "t_send": 1793862149.245594, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 304, "t": "2026-11-05T16:02:29.302", "t_unix": 1793862149.303, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 14, "held_sec": 3.185, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -33.04], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 3.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [13.18, 23.81, 16.52, 2.63, -43.41, -18.04], "sent": true, "reached": null, "no_check": true, "t_send": 1793862149.705774, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 305, "t": "2026-11-05T16:02:29.769", "t_unix": 1793862149.77, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 28, "hold_n": 15, "held_sec": 3.653, "accepted": true, "measured_before": [13.18, 24.78, 16.52, 2.63, -42.01, -30.58], "start_source": "hold", "cmd_gap_deg": 1.4, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 306, "t": "2026-11-05T16:02:29.871", "t_unix": 1793862149.872, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 28, "measured_at_request": [13.18, 24.78, 16.52, 2.63, -42.01, -30.58], "t_halt": 1793862149.873701, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [13.18, 26.27, 16.52, 2.63, -40.07, -30.58], "moved_after_request_deg": [0.0, 1.49, 0.0, 0.0, 1.94, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 307, "t": "2026-11-05T16:02:31.218", "t_unix": 1793862151.219, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 308, "t": "2026-11-05T16:02:31.990", "t_unix": 1793862151.99, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 29, "hold_n": 0, "accepted": true, "measured_before": [13.18, 26.27, 16.52, 2.63, -40.07, -30.58], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [12.18, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "timeout_sec": 8.0, "t_send": 1793862152.0553112, "measured_before_send": [13.18, 26.27, 16.52, 2.63, -40.07, -30.58], "resends": [], "reached": true, "reached_angles": [13.18, 26.27, 16.52, 2.63, -40.07, -30.58], "reach_err": 1.0, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 309, "t": "2026-11-05T16:02:32.399", "t_unix": 1793862152.4, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 1, "held_sec": 0.41, "accepted": true, "measured_before": [11.95, 27.24, 16.52, 2.81, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-3.05, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862152.429257, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 310, "t": "2026-11-05T16:02:32.515", "t_unix": 1793862152.516, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 2, "held_sec": 0.526, "accepted": true, "measured_before": [12.04, 27.24, 16.52, 2.81, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 15.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 311, "t": "2026-11-05T16:02:32.632", "t_unix": 1793862152.633, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 3, "held_sec": 0.643, "accepted": true, "measured_before": [10.98, 27.24, 16.52, 2.81, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 312, "t": "2026-11-05T16:02:32.748", "t_unix": 1793862152.749, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 4, "held_sec": 0.759, "accepted": true, "measured_before": [5.88, 27.24, 16.52, 2.02, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 8.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 313, "t": "2026-11-05T16:02:32.850", "t_unix": 1793862152.85, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 5, "held_sec": 0.86, "accepted": true, "measured_before": [1.14, 27.24, 16.52, 2.02, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-13.86, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862152.892281, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 314, "t": "2026-11-05T16:02:32.957", "t_unix": 1793862152.958, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 6, "held_sec": 0.968, "accepted": true, "measured_before": [-11.25, 27.24, 16.52, 2.02, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 2.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-26.25, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862153.323424, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 315, "t": "2026-11-05T16:02:33.373", "t_unix": 1793862153.373, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 7, "held_sec": 1.383, "accepted": true, "measured_before": [-13.88, 27.24, 16.52, 2.28, -39.72, -30.58], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 316, "t": "2026-11-05T16:02:33.476", "t_unix": 1793862153.476, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 8, "held_sec": 1.486, "accepted": true, "measured_before": [-13.88, 27.24, 16.52, 2.28, -39.72, -30.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 317, "t": "2026-11-05T16:02:33.592", "t_unix": 1793862153.593, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 9, "held_sec": 1.603, "accepted": true, "measured_before": [-17.84, 27.24, 16.52, 2.28, -39.72, -30.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 8.41, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.41, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 318, "t": "2026-11-05T16:02:33.693", "t_unix": 1793862153.694, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 10, "held_sec": 1.704, "accepted": true, "measured_before": [-22.14, 27.24, 16.52, 2.28, -39.72, -30.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-37.14, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862153.75748, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 319, "t": "2026-11-05T16:02:33.811", "t_unix": 1793862153.812, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 11, "held_sec": 1.822, "accepted": true, "measured_before": [-34.54, 27.24, 16.52, 2.54, -39.72, -30.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 2.6, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-49.54, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862154.1681962, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 320, "t": "2026-11-05T16:02:34.567", "t_unix": 1793862154.568, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 12, "held_sec": 2.578, "accepted": true, "measured_before": [-46.66, 27.24, 16.52, 2.02, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 2.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-61.66, 26.27, 16.52, 2.63, -40.07, -30.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793862154.6010041, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 321, "t": "2026-11-05T16:02:34.669", "t_unix": 1793862154.669, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 13, "held_sec": 2.679, "accepted": true, "measured_before": [-49.3, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.36, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.36, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 322, "t": "2026-11-05T16:02:34.771", "t_unix": 1793862154.772, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 14, "held_sec": 2.782, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 323, "t": "2026-11-05T16:02:34.873", "t_unix": 1793862154.873, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 15, "held_sec": 2.883, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 324, "t": "2026-11-05T16:02:34.973", "t_unix": 1793862154.974, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 16, "held_sec": 2.984, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 325, "t": "2026-11-05T16:02:35.075", "t_unix": 1793862155.075, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 17, "held_sec": 3.085, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 326, "t": "2026-11-05T16:02:35.175", "t_unix": 1793862155.176, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 18, "held_sec": 3.186, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 327, "t": "2026-11-05T16:02:35.276", "t_unix": 1793862155.277, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 19, "held_sec": 3.287, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 328, "t": "2026-11-05T16:02:35.378", "t_unix": 1793862155.378, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 29, "hold_n": 20, "held_sec": 3.388, "accepted": true, "measured_before": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 329, "t": "2026-11-05T16:02:35.462", "t_unix": 1793862155.463, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 29, "measured_at_request": [-49.39, 27.24, 16.52, 2.9, -39.72, -30.76], "t_halt": 1793862155.463357, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-49.3, 28.65, 16.52, 2.9, -37.96, -30.76], "moved_after_request_deg": [0.09, 1.41, 0.0, 0.0, 1.76, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 330, "t": "2026-11-05T16:02:36.423", "t_unix": 1793862156.424, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 30, "hold_n": 0, "accepted": true, "measured_before": [-49.3, 28.65, 16.52, 2.9, -37.96, -30.76], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-48.3, 28.65, 16.52, 2.9, -37.96, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862156.475018, "measured_before_send": [-49.3, 28.65, 16.52, 2.9, -37.96, -30.76], "resends": [], "reached": true, "reached_angles": [-49.3, 28.65, 16.52, 2.9, -37.96, -30.76], "reach_err": 1.0, "elapsed_sec": 0.06, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 331, "t": "2026-11-05T16:02:36.830", "t_unix": 1793862156.831, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 30, "hold_n": 1, "held_sec": 0.408, "accepted": true, "measured_before": [-47.9, 29.61, 16.52, 2.72, -36.91, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 0.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-32.9, 28.65, 16.52, 2.9, -37.96, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862156.857114, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 332, "t": "2026-11-05T16:02:37.265", "t_unix": 1793862157.265, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 30, "hold_n": 2, "held_sec": 0.842, "accepted": true, "released_during_job": true, "measured_before": [-33.13, 29.61, 16.52, 2.9, -36.91, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-18.13, 28.65, 16.52, 2.9, -37.96, -30.76], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 333, "t": "2026-11-05T16:02:37.702", "t_unix": 1793862157.703, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 30, "measured_at_request": [-47.9, 29.61, 16.52, 2.72, -36.91, -30.76], "t_halt": 1793862157.702944, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-33.13, 30.67, 16.52, 2.9, -35.33, -30.76], "moved_after_request_deg": [14.77, 1.06, 0.0, 0.18, 1.58, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 334, "t": "2026-11-05T16:02:38.259", "t_unix": 1793862158.26, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 31, "hold_n": 0, "accepted": true, "measured_before": [-33.13, 30.67, 16.52, 2.9, -35.33, -30.76], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-32.13, 30.67, 16.52, 2.9, -35.33, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862158.305731, "measured_before_send": [-33.13, 30.67, 16.52, 2.9, -35.33, -30.76], "resends": [], "reached": true, "reached_angles": [-31.64, 31.64, 16.52, 2.72, -34.1, -30.76], "reach_err": 1.23, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 335, "t": "2026-11-05T16:02:38.713", "t_unix": 1793862158.714, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 31, "hold_n": 1, "held_sec": 0.455, "accepted": true, "measured_before": [-31.81, 31.64, 16.52, 2.81, -34.1, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 0.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-16.81, 30.67, 16.52, 2.9, -35.33, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862158.740631, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 336, "t": "2026-11-05T16:02:38.830", "t_unix": 1793862158.831, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 31, "hold_n": 2, "held_sec": 0.572, "accepted": true, "measured_before": [-31.81, 31.64, 16.52, 2.81, -34.1, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 337, "t": "2026-11-05T16:02:38.932", "t_unix": 1793862158.932, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 31, "hold_n": 3, "held_sec": 0.673, "accepted": true, "released_during_job": true, "measured_before": [-17.57, 31.64, 16.52, 3.6, -34.1, -30.67], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-2.57, 30.67, 16.52, 2.9, -35.33, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862159.303637, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 338, "t": "2026-11-05T16:02:39.675", "t_unix": 1793862159.675, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 31, "measured_at_request": [-31.81, 31.64, 16.52, 2.81, -34.1, -30.76], "t_halt": 1793862159.677662, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-6.76, 32.6, 16.52, 3.51, -32.6, -30.76], "moved_after_request_deg": [25.05, 0.96, 0.0, 0.7, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 339, "t": "2026-11-05T16:02:40.567", "t_unix": 1793862160.567, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 32, "hold_n": 0, "accepted": true, "measured_before": [-6.94, 32.6, 16.52, 3.51, -32.6, -30.76], "start_source": "command", "cmd_gap_deg": 0.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-5.76, 32.6, 16.52, 3.51, -32.6, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862160.616192, "measured_before_send": [-6.94, 32.6, 16.52, 3.51, -32.6, -30.76], "resends": [], "reached": true, "reached_angles": [-7.03, 32.6, 16.52, 3.51, -32.6, -30.76], "reach_err": 1.27, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 340, "t": "2026-11-05T16:02:40.972", "t_unix": 1793862160.973, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 1, "held_sec": 0.406, "accepted": true, "measured_before": [-6.06, 33.57, 16.52, 3.77, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [8.94, 32.6, 16.52, 3.51, -32.6, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862161.008236, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 341, "t": "2026-11-05T16:02:41.089", "t_unix": 1793862161.09, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 2, "held_sec": 0.523, "accepted": true, "measured_before": [-5.44, 33.57, 16.52, 3.51, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 14.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 342, "t": "2026-11-05T16:02:41.190", "t_unix": 1793862161.19, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 3, "held_sec": 0.623, "accepted": true, "measured_before": [-5.09, 33.57, 16.52, 3.86, -31.55, -30.84], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 343, "t": "2026-11-05T16:02:41.305", "t_unix": 1793862161.306, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 4, "held_sec": 0.739, "accepted": true, "measured_before": [0.26, 33.57, 16.52, 4.04, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 344, "t": "2026-11-05T16:02:41.406", "t_unix": 1793862161.406, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 5, "held_sec": 0.84, "accepted": true, "measured_before": [4.13, 33.57, 16.52, 3.6, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 4.81, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.13, 32.6, 16.52, 3.51, -32.6, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862161.44437, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 345, "t": "2026-11-05T16:02:41.878", "t_unix": 1793862161.878, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 6, "held_sec": 1.312, "accepted": true, "measured_before": [17.57, 33.57, 16.52, 3.86, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 1.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.57, 32.6, 16.52, 3.51, -32.6, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862161.913096, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 346, "t": "2026-11-05T16:02:41.994", "t_unix": 1793862161.994, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 7, "held_sec": 1.428, "accepted": true, "measured_before": [19.24, 33.57, 16.52, 3.33, -31.55, -30.84], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 347, "t": "2026-11-05T16:02:42.095", "t_unix": 1793862162.096, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 8, "held_sec": 1.529, "accepted": true, "measured_before": [20.21, 33.57, 16.52, 4.13, -31.55, -30.67], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 12.36, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.36, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 348, "t": "2026-11-05T16:02:42.212", "t_unix": 1793862162.213, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 9, "held_sec": 1.646, "accepted": true, "measured_before": [25.22, 33.57, 16.52, 4.13, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 7.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 349, "t": "2026-11-05T16:02:42.329", "t_unix": 1793862162.329, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 32, "hold_n": 10, "held_sec": 1.762, "accepted": true, "measured_before": [29.97, 33.57, 16.52, 4.13, -31.55, -30.76], "start_source": "hold", "cmd_gap_deg": 1.05, "hold_lead_deg": 2.6, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [44.97, 32.6, 16.52, 3.51, -32.6, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862162.35866, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 350, "t": "2026-11-05T16:02:42.428", "t_unix": 1793862162.429, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 32, "measured_at_request": [29.97, 33.57, 16.52, 4.13, -31.55, -30.76], "t_halt": 1793862162.430302, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [32.78, 34.71, 16.52, 3.33, -30.05, -30.76], "moved_after_request_deg": [2.81, 1.14, 0.0, -0.8, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 351, "t": "2026-11-05T16:02:43.974", "t_unix": 1793862163.975, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 352, "t": "2026-11-05T16:02:44.376", "t_unix": 1793862164.377, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 33, "hold_n": 0, "accepted": true, "measured_before": [32.78, 34.71, 16.52, 3.33, -29.97, -30.76], "start_source": "command", "cmd_gap_deg": 0.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.78, 34.71, 15.52, 3.33, -30.05, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862164.433422, "measured_before_send": [32.78, 34.71, 16.52, 3.33, -29.97, -30.76], "resends": [], "reached": true, "reached_angles": [32.78, 35.59, 16.52, 3.6, -30.05, -30.58], "reach_err": 1.0, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 353, "t": "2026-11-05T16:02:44.851", "t_unix": 1793862164.851, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 1, "held_sec": 0.475, "accepted": true, "measured_before": [32.78, 35.59, 16.52, 3.6, -30.05, -30.58], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.78, 34.71, 1.52, 3.33, -30.05, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862164.876361, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 354, "t": "2026-11-05T16:02:44.966", "t_unix": 1793862164.967, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 2, "held_sec": 0.591, "accepted": true, "measured_before": [32.78, 35.59, 16.52, 3.6, -30.05, -30.58], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 355, "t": "2026-11-05T16:02:45.069", "t_unix": 1793862165.069, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 3, "held_sec": 0.693, "accepted": true, "measured_before": [32.78, 35.59, 15.82, 3.6, -29.88, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 356, "t": "2026-11-05T16:02:45.176", "t_unix": 1793862165.177, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 4, "held_sec": 0.801, "accepted": true, "measured_before": [32.78, 35.59, 11.51, 3.6, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 357, "t": "2026-11-05T16:02:45.278", "t_unix": 1793862165.279, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 5, "held_sec": 0.902, "accepted": true, "measured_before": [32.78, 35.59, 6.59, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 358, "t": "2026-11-05T16:02:45.381", "t_unix": 1793862165.381, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 6, "held_sec": 1.005, "accepted": true, "measured_before": [32.78, 35.59, 3.07, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 1.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.78, 34.71, -11.93, 3.33, -30.05, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862165.414645, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 359, "t": "2026-11-05T16:02:45.483", "t_unix": 1793862165.483, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 7, "held_sec": 1.107, "accepted": true, "measured_before": [32.78, 35.59, 2.9, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 360, "t": "2026-11-05T16:02:45.584", "t_unix": 1793862165.585, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 8, "held_sec": 1.208, "accepted": true, "measured_before": [32.78, 35.59, 2.9, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 361, "t": "2026-11-05T16:02:45.685", "t_unix": 1793862165.686, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 9, "held_sec": 1.31, "accepted": true, "measured_before": [32.78, 35.68, 2.9, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 362, "t": "2026-11-05T16:02:45.786", "t_unix": 1793862165.787, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 10, "held_sec": 1.41, "accepted": true, "measured_before": [32.78, 35.77, 2.9, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 363, "t": "2026-11-05T16:02:45.887", "t_unix": 1793862165.888, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 33, "hold_n": 11, "held_sec": 1.511, "accepted": true, "released_during_job": true, "measured_before": [32.78, 35.77, -9.49, 3.51, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 2.44, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.78, 34.71, -24.49, 3.33, -30.05, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862165.91419, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 364, "t": "2026-11-05T16:02:46.308", "t_unix": 1793862166.308, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 33, "measured_at_request": [32.78, 35.77, 2.9, 3.51, -29.53, -30.67], "t_halt": 1793862166.308532, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [32.78, 35.77, -22.93, 3.51, -29.53, -30.67], "moved_after_request_deg": [0.0, 0.0, -25.83, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 365, "t": "2026-11-05T16:02:47.514", "t_unix": 1793862167.515, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 34, "hold_n": 0, "accepted": true, "measured_before": [32.78, 35.77, -22.93, 3.51, -29.53, -30.67], "start_source": "command", "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [31.78, 35.77, -22.93, 3.51, -29.53, -30.67], "sent": true, "timeout_sec": 8.0, "t_send": 1793862167.586817, "measured_before_send": [32.78, 35.77, -22.93, 3.51, -29.53, -30.67], "resends": [], "reached": true, "reached_angles": [32.78, 35.85, -22.93, 3.51, -29.53, -30.67], "reach_err": 1.0, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 366, "t": "2026-11-05T16:02:47.918", "t_unix": 1793862167.919, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 1, "held_sec": 0.405, "accepted": true, "measured_before": [31.81, 37.0, -21.97, 3.6, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 0.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [16.81, 35.77, -22.93, 3.51, -29.53, -30.67], "sent": true, "reached": null, "no_check": true, "t_send": 1793862167.9369202, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 367, "t": "2026-11-05T16:02:48.019", "t_unix": 1793862168.019, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 2, "held_sec": 0.505, "accepted": true, "measured_before": [31.81, 37.0, -21.97, 3.6, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 368, "t": "2026-11-05T16:02:48.120", "t_unix": 1793862168.121, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 3, "held_sec": 0.607, "accepted": true, "measured_before": [30.84, 37.0, -21.97, 3.6, -29.53, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 369, "t": "2026-11-05T16:02:48.235", "t_unix": 1793862168.235, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 4, "held_sec": 0.721, "accepted": true, "measured_before": [26.54, 37.0, -21.97, 2.81, -29.53, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 370, "t": "2026-11-05T16:02:48.350", "t_unix": 1793862168.351, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 5, "held_sec": 0.837, "accepted": true, "measured_before": [17.05, 37.0, -21.97, 3.86, -29.53, -30.67], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 0.24, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [2.05, 35.77, -22.93, 3.51, -29.53, -30.67], "sent": true, "reached": null, "no_check": true, "t_send": 1793862168.756869, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 371, "t": "2026-11-05T16:02:49.163", "t_unix": 1793862169.163, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 6, "held_sec": 1.649, "accepted": true, "measured_before": [6.67, 37.0, -21.97, 3.16, -29.53, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 4.62, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-8.33, 35.77, -22.93, 3.51, -29.53, -30.67], "sent": true, "reached": null, "no_check": true, "t_send": 1793862169.191072, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 372, "t": "2026-11-05T16:02:49.265", "t_unix": 1793862169.265, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 7, "held_sec": 1.751, "accepted": true, "released_during_job": true, "measured_before": [2.54, 37.0, -21.97, 3.69, -29.53, -30.76], "start_source": "hold", "cmd_gap_deg": 1.23, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 373, "t": "2026-11-05T16:02:49.298", "t_unix": 1793862169.298, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 34, "measured_at_request": [6.67, 37.0, -21.97, 3.16, -29.53, -30.76], "t_halt": 1793862169.3000479, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [2.02, 38.32, -21.0, 3.95, -27.86, -30.76], "moved_after_request_deg": [-4.65, 1.32, 0.97, 0.79, 1.67, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 374, "t": "2026-11-05T16:02:52.487", "t_unix": 1793862172.488, "button": "L2+R2", "button_name": "L2+R2", "kind": "stop", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "reason": "L2+R2", "already_stopped": false, "busy": false, "send_committed_before_stop": null, "triggers": [1.0, 1.0], "grip_state": "unknown", "stopped": true, "stop_reason": "L2+R2"}
{"seq": 375, "t": "2026-11-05T16:02:52.488", "t_unix": 1793862172.489, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "L2+R2", "hold_id": null, "measured_at_request": [2.02, 38.32, -21.0, 3.95, -27.86, -30.76], "t_halt": 1793862172.492202, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [1.93, 40.07, -19.95, 3.95, -26.01, -30.76], "moved_after_request_deg": [-0.09, 1.75, 1.05, 0.0, 1.85, 0.0], "grip_state": "unknown", "stopped": true, "stop_reason": "L2+R2"}
{"seq": 376, "t": "2026-11-05T16:02:55.463", "t_unix": 1793862175.464, "button": 6, "button_name": "options", "kind": "resume", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 16:13 の記録 runs/experiments/gamepad_teleop/teleop_20261105_161347/meta.json

```json
{
  "run_stem": "teleop_20261105_161347",
  "started_at": "2026-11-05T16:13:48",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T16:13:57"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    1.93,
    40.07,
    -19.95,
    3.95,
    -27.86,
    -30.76
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.0,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "f0d7e732e335c551b2960bd19b583907420773aa",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "baf7e242f2c7801f3de18a9de5b2b0f3adeb9e92c40bbc921a477d2706f29d03",
  "ended_at": "2026-11-05T16:22:20",
  "end_reason": "ctrl_c",
  "n_sent": 29
}
```

### 16:13 の記録 runs/experiments/gamepad_teleop/teleop_20261105_161347/log.jsonl（118行）

```json
{"seq": 1, "t": "2026-11-05T16:14:03.034", "t_unix": 1793862843.034, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [1.93, 40.07, -19.95, 3.95, -27.86, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.93, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862843.127028, "measured_before_send": [1.93, 40.07, -19.95, 3.95, -27.86, -30.76], "resends": [], "reached": true, "reached_angles": [0.61, 41.22, -18.98, 3.77, -27.5, -30.76], "reach_err": 1.15, "elapsed_sec": 0.4, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T16:14:03.581", "t_unix": 1793862843.581, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.549, "accepted": true, "measured_before": [0.7, 41.22, -18.98, 4.13, -27.5, -30.67], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-14.3, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862843.6045382, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T16:14:03.681", "t_unix": 1793862843.681, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.65, "accepted": true, "measured_before": [1.14, 41.22, -18.98, 4.13, -27.5, -30.67], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 15.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T16:14:03.797", "t_unix": 1793862843.798, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.766, "accepted": true, "measured_before": [-0.17, 41.22, -18.98, 3.51, -27.5, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 14.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T16:14:03.898", "t_unix": 1793862843.898, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 0.866, "accepted": true, "measured_before": [-3.69, 41.22, -18.98, 3.51, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 10.61, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.61, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T16:14:03.999", "t_unix": 1793862843.999, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 0.967, "accepted": true, "measured_before": [-8.26, 41.22, -18.98, 3.51, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 6.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T16:14:04.101", "t_unix": 1793862844.101, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 1.069, "accepted": true, "measured_before": [-12.74, 41.22, -18.98, 3.51, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 1.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-27.74, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862844.1261408, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T16:14:04.216", "t_unix": 1793862844.217, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 1.185, "accepted": true, "measured_before": [-14.58, 41.22, -18.98, 4.39, -27.42, -30.67], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T16:14:04.317", "t_unix": 1793862844.318, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 1.286, "accepted": true, "measured_before": [-15.02, 41.22, -18.98, 3.6, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.72, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.72, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T16:14:04.417", "t_unix": 1793862844.418, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 1.386, "accepted": true, "measured_before": [-19.16, 41.22, -18.98, 3.33, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T16:14:04.535", "t_unix": 1793862844.535, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 1.503, "accepted": true, "measured_before": [-24.6, 41.22, -18.98, 3.86, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 3.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-39.6, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862844.572963, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T16:14:04.652", "t_unix": 1793862844.653, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 11, "held_sec": 1.621, "accepted": true, "measured_before": [-27.59, 41.22, -18.98, 3.95, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T16:14:04.752", "t_unix": 1793862844.753, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 12, "held_sec": 1.721, "accepted": true, "measured_before": [-27.77, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T16:14:04.853", "t_unix": 1793862844.854, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 13, "held_sec": 1.822, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T16:14:04.955", "t_unix": 1793862844.956, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 14, "held_sec": 1.924, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T16:14:05.056", "t_unix": 1793862845.057, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 15, "held_sec": 2.025, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T16:14:05.171", "t_unix": 1793862845.172, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 16, "held_sec": 2.14, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T16:14:05.289", "t_unix": 1793862845.289, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 17, "held_sec": 2.257, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T16:14:05.391", "t_unix": 1793862845.391, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 18, "held_sec": 2.359, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T16:14:05.492", "t_unix": 1793862845.492, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 19, "held_sec": 2.461, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T16:14:05.608", "t_unix": 1793862845.608, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 20, "held_sec": 2.576, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T16:14:05.725", "t_unix": 1793862845.725, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 21, "held_sec": 2.693, "accepted": true, "measured_before": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T16:14:05.758", "t_unix": 1793862845.759, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "hold_stall", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-27.42, 41.22, -18.98, 4.13, -27.42, -30.76], "t_halt": 1793862845.7595918, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-27.42, 43.06, -17.84, 3.95, -25.57, -30.76], "pin_command": [-27.42, 40.07, -19.95, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [0.0, 1.84, 1.14, -0.18, 1.85, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T16:14:06.747", "t_unix": 1793862846.748, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T16:14:07.839", "t_unix": 1793862847.84, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 2, "hold_n": 0, "accepted": true, "measured_before": [-27.42, 42.97, -18.01, 3.95, -25.66, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-28.42, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862847.8907351, "measured_before_send": [-27.42, 42.97, -18.01, 3.95, -25.66, -30.76], "resends": [], "reached": true, "reached_angles": [-28.74, 42.97, -18.01, 4.13, -25.66, -30.76], "reach_err": 2.9, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T16:14:08.476", "t_unix": 1793862848.477, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T16:14:08.938", "t_unix": 1793862848.939, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -2.0, "hold_id": 3, "hold_n": 0, "accepted": true, "measured_before": [-28.47, 42.97, -18.01, 4.13, -26.36, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-30.42, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862849.0121138, "measured_before_send": [-28.47, 42.97, -18.01, 4.13, -26.36, -30.76], "resends": [], "reached": true, "reached_angles": [-30.14, 42.97, -18.01, 3.95, -26.36, -30.76], "reach_err": 2.9, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T16:14:09.414", "t_unix": 1793862849.415, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 1, "held_sec": 0.477, "accepted": true, "measured_before": [-30.05, 42.97, -18.01, 3.69, -26.36, -30.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-45.05, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862849.440793, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T16:14:09.515", "t_unix": 1793862849.516, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 2, "held_sec": 0.578, "accepted": true, "measured_before": [-30.67, 42.97, -18.01, 3.69, -26.36, -30.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T16:14:09.617", "t_unix": 1793862849.618, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 3, "held_sec": 0.68, "accepted": true, "measured_before": [-30.93, 42.97, -18.01, 3.69, -26.36, -30.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T16:14:09.719", "t_unix": 1793862849.719, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 4, "held_sec": 0.781, "accepted": true, "measured_before": [-34.54, 42.97, -18.01, 3.69, -26.36, -30.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 10.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T16:14:09.834", "t_unix": 1793862849.835, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 5, "held_sec": 0.897, "accepted": true, "measured_before": [-40.69, 42.97, -18.01, 3.69, -26.36, -30.67], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.36, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-55.69, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862849.90045, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T16:14:09.952", "t_unix": 1793862849.952, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 6, "held_sec": 1.015, "accepted": true, "measured_before": [-43.76, 42.97, -18.01, 4.04, -26.36, -30.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T16:14:10.053", "t_unix": 1793862850.054, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 7, "held_sec": 1.116, "accepted": true, "measured_before": [-46.05, 42.97, -18.01, 4.21, -26.36, -30.67], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T16:14:10.168", "t_unix": 1793862850.169, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 8, "held_sec": 1.231, "accepted": true, "measured_before": [-47.19, 42.97, -18.01, 3.25, -26.54, -30.84], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T16:14:10.270", "t_unix": 1793862850.27, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 9, "held_sec": 1.333, "accepted": true, "measured_before": [-52.73, 42.89, -18.01, 3.25, -26.8, -30.84], "start_source": "hold", "cmd_gap_deg": 2.82, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-67.73, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862850.301067, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T16:14:10.371", "t_unix": 1793862850.372, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 10, "held_sec": 1.434, "accepted": true, "measured_before": [-55.45, 42.8, -18.01, 4.48, -26.89, -30.76], "start_source": "hold", "cmd_gap_deg": 2.73, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T16:14:10.488", "t_unix": 1793862850.488, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 11, "held_sec": 1.55, "accepted": true, "measured_before": [-55.81, 42.71, -18.01, 3.6, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.64, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T16:14:10.590", "t_unix": 1793862850.59, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 12, "held_sec": 1.653, "accepted": true, "measured_before": [-59.76, 42.62, -18.01, 3.42, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 7.97, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.97, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T16:14:10.691", "t_unix": 1793862850.692, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 13, "held_sec": 1.754, "accepted": true, "measured_before": [-64.68, 42.62, -18.01, 3.42, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 3.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-79.68, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862850.738497, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T16:14:10.794", "t_unix": 1793862850.794, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 14, "held_sec": 1.856, "accepted": true, "measured_before": [-67.23, 42.62, -18.01, 4.13, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T16:14:10.895", "t_unix": 1793862850.896, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 15, "held_sec": 1.958, "accepted": true, "measured_before": [-67.67, 42.62, -18.01, 4.21, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T16:14:11.012", "t_unix": 1793862851.012, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 16, "held_sec": 2.074, "accepted": true, "measured_before": [-70.66, 42.62, -18.01, 3.25, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 9.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T16:14:11.113", "t_unix": 1793862851.113, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 17, "held_sec": 2.176, "accepted": true, "measured_before": [-75.32, 42.62, -18.01, 3.33, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 4.36, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-90.32, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862851.144622, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T16:14:11.214", "t_unix": 1793862851.214, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 18, "held_sec": 2.277, "accepted": true, "measured_before": [-78.75, 42.62, -18.01, 3.42, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T16:14:11.317", "t_unix": 1793862851.317, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 3, "hold_n": 19, "held_sec": 2.38, "accepted": true, "measured_before": [-79.71, 42.62, -18.01, 4.13, -26.89, -30.84], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 10.61, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.61, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T16:14:11.368", "t_unix": 1793862851.368, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 3, "halt_joint": 0, "measured_at_request": [-79.71, 42.62, -18.01, 4.13, -26.89, -30.84], "t_halt": 1793862851.3686552, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-80.77, 44.12, -17.05, 3.25, -25.22, -30.84], "pin_command": [-80.77, 40.07, -19.95, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [-1.06, 1.5, 0.96, -0.88, 1.67, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T16:14:12.615", "t_unix": 1793862852.616, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T16:14:13.051", "t_unix": 1793862853.052, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 4, "hold_n": 0, "accepted": true, "measured_before": [-80.41, 42.18, -18.54, 3.95, -25.4, -30.84], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-78.77, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862853.094151, "measured_before_send": [-80.41, 42.18, -18.54, 3.95, -25.4, -30.84], "resends": [], "reached": true, "reached_angles": [-79.18, 42.18, -18.54, 3.86, -25.4, -30.93], "reach_err": 2.46, "elapsed_sec": 0.35, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T16:14:13.500", "t_unix": 1793862853.501, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 1, "held_sec": 0.448, "accepted": true, "measured_before": [-79.1, 42.18, -18.54, 3.86, -25.66, -30.84], "start_source": "hold", "cmd_gap_deg": 2.2, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-64.1, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862853.5220742, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T16:14:13.616", "t_unix": 1793862853.617, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 2, "held_sec": 0.565, "accepted": true, "measured_before": [-78.83, 42.18, -18.54, 3.86, -25.92, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 14.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T16:14:13.732", "t_unix": 1793862853.732, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 3, "held_sec": 0.681, "accepted": true, "measured_before": [-76.46, 42.18, -18.54, 4.21, -25.92, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 12.36, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.36, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T16:14:13.833", "t_unix": 1793862853.834, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 4, "held_sec": 0.782, "accepted": true, "measured_before": [-72.24, 42.18, -18.54, 4.21, -25.92, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 8.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T16:14:13.935", "t_unix": 1793862853.936, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 5, "held_sec": 0.884, "accepted": true, "measured_before": [-67.85, 42.18, -18.54, 4.21, -25.92, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-52.85, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862853.969366, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T16:14:14.050", "t_unix": 1793862854.05, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 6, "held_sec": 0.999, "accepted": true, "measured_before": [-63.8, 42.18, -18.54, 3.69, -25.92, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T16:14:14.150", "t_unix": 1793862854.15, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 7, "held_sec": 1.099, "accepted": true, "measured_before": [-63.8, 42.18, -18.54, 3.25, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T16:14:14.251", "t_unix": 1793862854.251, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 8, "held_sec": 1.2, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T16:14:14.352", "t_unix": 1793862854.352, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 9, "held_sec": 1.301, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T16:14:14.466", "t_unix": 1793862854.467, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 10, "held_sec": 1.415, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T16:14:14.567", "t_unix": 1793862854.568, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 11, "held_sec": 1.516, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T16:14:14.669", "t_unix": 1793862854.669, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 12, "held_sec": 1.618, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T16:14:14.770", "t_unix": 1793862854.771, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 13, "held_sec": 1.719, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.01, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T16:14:14.885", "t_unix": 1793862854.886, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 14, "held_sec": 1.834, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.1, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T16:14:14.988", "t_unix": 1793862854.988, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 15, "held_sec": 1.937, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.1, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T16:14:15.088", "t_unix": 1793862855.088, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 16, "held_sec": 2.037, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.1, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T16:14:15.190", "t_unix": 1793862855.19, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 17, "held_sec": 2.139, "accepted": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.36, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T16:14:15.291", "t_unix": 1793862855.292, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 4, "hold_n": 18, "held_sec": 2.24, "accepted": true, "released_during_job": true, "measured_before": [-64.24, 42.18, -18.54, 3.86, -26.71, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T16:14:15.628", "t_unix": 1793862855.628, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 5, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T16:14:15.326", "t_unix": 1793862855.327, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 4, "halt_joint": 0, "measured_at_request": [-64.24, 42.18, -18.54, 3.86, -26.36, -30.84], "t_halt": 1793862855.3272839, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-64.16, 44.03, -17.49, 3.86, -24.78, -30.84], "pin_command": [-64.16, 40.07, -19.95, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [0.08, 1.85, 1.05, 0.0, 1.58, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T16:14:17.269", "t_unix": 1793862857.269, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T16:14:19.331", "t_unix": 1793862859.332, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 7, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T16:14:20.197", "t_unix": 1793862860.198, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 8, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T16:14:17.622", "t_unix": 1793862857.622, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 6, "hold_n": 0, "accepted": true, "measured_before": [-64.24, 42.36, -18.36, 3.86, -25.4, -30.84], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-62.16, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862857.662914, "measured_before_send": [-64.24, 42.36, -18.36, 3.86, -25.4, -30.84], "resends": [0.7, 1.41, 2.11], "reached": false, "not_moved": true, "reached_angles": [-64.24, 42.36, -18.36, 3.86, -26.54, -30.84], "reach_err": 2.29, "elapsed_sec": 2.8, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T16:14:21.780", "t_unix": 1793862861.78, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [-64.24, 42.36, -18.36, 3.86, -27.07, -30.84], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.29, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-61.16, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862861.8305511, "measured_before_send": [-64.24, 42.36, -18.36, 3.86, -27.07, -30.84], "resends": [], "reached": true, "reached_angles": [-61.52, 42.36, -18.36, 3.77, -27.42, -30.93], "reach_err": 2.29, "elapsed_sec": 0.33, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T16:14:22.218", "t_unix": 1793862862.219, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 1, "held_sec": 0.439, "accepted": true, "measured_before": [-61.52, 42.36, -18.36, 4.04, -27.42, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 0.36, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-46.52, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862862.232914, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T16:14:22.627", "t_unix": 1793862862.628, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 2, "held_sec": 0.847, "accepted": true, "measured_before": [-50.71, 42.36, -18.36, 4.39, -27.59, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.71, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862862.671749, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T16:14:22.745", "t_unix": 1793862862.746, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 3, "held_sec": 0.965, "accepted": true, "measured_before": [-47.1, 42.36, -18.36, 3.95, -27.59, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T16:14:22.846", "t_unix": 1793862862.847, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 4, "held_sec": 1.066, "accepted": true, "measured_before": [-46.14, 42.36, -18.36, 3.77, -27.59, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T16:14:22.947", "t_unix": 1793862862.947, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 5, "held_sec": 1.167, "accepted": true, "measured_before": [-44.38, 42.36, -18.36, 4.74, -27.68, -30.76], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T16:14:23.049", "t_unix": 1793862863.049, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 6, "held_sec": 1.269, "accepted": true, "measured_before": [-39.37, 42.36, -18.36, 4.65, -27.68, -30.76], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-24.37, 40.07, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862863.080471, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T16:14:23.150", "t_unix": 1793862863.15, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 7, "held_sec": 1.37, "accepted": true, "measured_before": [-36.03, 42.36, -18.36, 3.77, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T16:14:23.252", "t_unix": 1793862863.252, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 8, "held_sec": 1.472, "accepted": true, "measured_before": [-35.77, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T16:14:23.352", "t_unix": 1793862863.353, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 9, "held_sec": 1.573, "accepted": true, "measured_before": [-36.03, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T16:14:23.453", "t_unix": 1793862863.454, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 10, "held_sec": 1.673, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T16:14:23.570", "t_unix": 1793862863.571, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 11, "held_sec": 1.79, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T16:14:23.671", "t_unix": 1793862863.671, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 12, "held_sec": 1.891, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T16:14:23.771", "t_unix": 1793862863.772, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 13, "held_sec": 1.992, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T16:14:23.888", "t_unix": 1793862863.888, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 14, "held_sec": 2.108, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T16:14:23.990", "t_unix": 1793862863.99, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 15, "held_sec": 2.21, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T16:14:24.105", "t_unix": 1793862864.106, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 16, "held_sec": 2.326, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T16:14:24.206", "t_unix": 1793862864.207, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 9, "hold_n": 17, "held_sec": 2.427, "accepted": true, "measured_before": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T16:14:24.242", "t_unix": 1793862864.242, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "hold_stall", "hold_id": 9, "halt_joint": 0, "measured_at_request": [-36.12, 42.36, -18.36, 3.6, -27.68, -30.84], "t_halt": 1793862864.242409, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-36.21, 44.2, -17.31, 3.86, -25.66, -30.84], "pin_command": [-36.21, 40.07, -19.95, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [-0.09, 1.84, 1.05, 0.26, 2.02, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T16:14:24.627", "t_unix": 1793862864.628, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [-36.21, 44.03, -17.31, 3.86, -25.66, -30.84], "start_source": "command", "others_from_measured": [1], "cmd_gap_deg": 3.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.21, 44.03, -19.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862864.6688461, "measured_before_send": [-36.21, 43.76, -17.31, 3.86, -25.66, -30.84], "resends": [], "reached": true, "reached_angles": [-34.8, 45.43, -18.54, 3.95, -25.75, -30.84], "reach_err": 2.11, "elapsed_sec": 0.7, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T16:14:25.436", "t_unix": 1793862865.436, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 1, "held_sec": 0.808, "accepted": true, "measured_before": [-34.8, 45.43, -18.54, 3.95, -25.75, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-19.8, 44.03, -19.95, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862865.4587579, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T16:14:25.552", "t_unix": 1793862865.553, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 10, "hold_n": 2, "held_sec": 0.925, "accepted": true, "released_during_job": true, "measured_before": [-24.34, 45.43, -18.54, 4.04, -25.75, -30.84], "start_source": "hold", "cmd_gap_deg": 2.11, "hold_lead_deg": 4.54, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-9.34, 44.03, -19.95, 3.95, -27.86, -30.76], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T16:14:26.220", "t_unix": 1793862866.22, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 11, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T16:14:25.923", "t_unix": 1793862865.923, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 10, "halt_joint": 0, "measured_at_request": [-34.8, 45.43, -18.54, 3.95, -25.75, -30.84], "t_halt": 1793862865.9238882, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-21.97, 46.93, -17.49, 4.13, -23.99, -30.76], "pin_command": [-21.97, 44.03, -19.95, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [12.83, 1.5, 1.05, 0.18, 1.76, 0.08], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T16:14:29.266", "t_unix": 1793862869.266, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T16:14:34.323", "t_unix": 1793862874.323, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 13, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T16:14:35.468", "t_unix": 1793862875.469, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 14, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T16:14:36.631", "t_unix": 1793862876.631, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T16:14:36.966", "t_unix": 1793862876.966, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 15, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T16:14:30.768", "t_unix": 1793862870.77, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 12, "hold_n": 0, "accepted": true, "measured_before": [-22.06, 46.75, -18.19, 3.95, -26.54, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -20.95, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862870.813629, "measured_before_send": [-22.06, 46.75, -18.19, 3.95, -26.54, -30.76], "resends": [], "reached": false, "reached_angles": [-22.06, 46.75, -19.42, 3.95, -27.24, -30.76], "reach_err": 2.72, "elapsed_sec": 8.11, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T16:14:40.529", "t_unix": 1793862880.53, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T16:14:40.830", "t_unix": 1793862880.831, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [-22.06, 46.75, -19.42, 3.95, -28.82, -30.76], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 2.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -21.42, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862880.879064, "measured_before_send": [-22.06, 46.75, -19.42, 3.95, -28.82, -30.76], "resends": [0.7, 1.4, 2.11], "reached": false, "not_moved": true, "reached_angles": [-22.06, 46.75, -19.42, 3.95, -28.82, -30.76], "reach_err": 2.72, "elapsed_sec": 2.79, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T16:14:43.730", "t_unix": 1793862883.731, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 16, "hold_n": 1, "held_sec": 2.9, "accepted": true, "measured_before": [-22.06, 46.75, -19.42, 3.95, -28.82, -30.76], "start_source": "hold", "cmd_gap_deg": 2.72, "hold_lead_deg": 2.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -34.42, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862883.766721, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T16:14:44.187", "t_unix": 1793862884.187, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 16, "hold_n": 2, "held_sec": 3.357, "accepted": true, "released_during_job": true, "measured_before": [-22.06, 46.75, -30.67, 3.95, -28.82, -30.76], "start_source": "hold", "cmd_gap_deg": 2.72, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -45.67, 3.95, -27.86, -30.76], "sent": true, "reached": null, "no_check": true, "t_send": 1793862884.240313, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T16:14:44.278", "t_unix": 1793862884.278, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 16, "halt_joint": 2, "measured_at_request": [-22.06, 46.75, -19.42, 3.95, -28.82, -30.76], "t_halt": 1793862884.2785878, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-22.06, 46.75, -33.13, 3.95, -28.82, -30.76], "pin_command": [-21.97, 44.03, -33.13, 3.95, -27.86, -30.76], "pin_sent": true, "moved_after_request_deg": [0.0, 0.0, -13.71, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T16:14:44.919", "t_unix": 1793862884.92, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T16:14:48.061", "t_unix": 1793862888.062, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T16:14:45.287", "t_unix": 1793862885.287, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 17, "hold_n": 0, "accepted": true, "measured_before": [-22.06, 46.75, -33.13, 3.95, -28.82, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -35.13, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862885.338636, "measured_before_send": [-22.06, 46.75, -33.13, 3.95, -28.82, -30.76], "resends": [0.7, 1.4, 2.09], "reached": false, "not_moved": true, "reached_angles": [-22.06, 46.75, -33.13, 3.95, -28.74, -30.76], "reach_err": 2.72, "elapsed_sec": 2.75, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T16:14:50.430", "t_unix": 1793862890.43, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T16:14:51.235", "t_unix": 1793862891.236, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 19, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T16:14:48.415", "t_unix": 1793862888.415, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [-22.06, 46.75, -33.13, 3.95, -28.56, -30.76], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -37.13, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862888.446197, "measured_before_send": [-22.06, 46.75, -33.13, 3.95, -28.56, -30.76], "resends": [0.69, 1.41, 2.11], "reached": false, "not_moved": true, "reached_angles": [-22.06, 46.75, -33.13, 3.95, -28.3, -30.76], "reach_err": 4.0, "elapsed_sec": 2.78, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T16:14:53.234", "t_unix": 1793862893.235, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 21, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T16:14:54.173", "t_unix": 1793862894.173, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 22, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T16:14:52.278", "t_unix": 1793862892.279, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [-22.06, 46.75, -33.13, 3.95, -28.3, -30.76], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 4.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-21.97, 44.03, -34.13, 3.95, -27.86, -30.76], "sent": true, "timeout_sec": 8.0, "t_send": 1793862892.325689, "measured_before_send": [-22.06, 46.75, -33.13, 3.95, -28.3, -30.76], "resends": [0.72, 1.45, 2.15], "reached": false, "not_moved": true, "reached_angles": [-22.06, 46.75, -33.13, 3.95, -28.03, -30.76], "reach_err": 2.72, "elapsed_sec": 2.84, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T16:14:58.828", "t_unix": 1793862898.828, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 2, "step_deg": 1.0, "execute": true, "held_sec": 1.012, "accepted": true, "measured_before": [-22.06, 46.75, -33.13, 3.95, -28.03, -30.76], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 9.01, "t_send": 1793862898.870304, "measured_before_send": [-22.06, 46.75, -33.13, 3.95, -28.03, -30.76], "resends": [], "reached": true, "reached_angles": [0.35, 1.58, 0.17, 0.79, -0.52, -30.67], "reach_err": 1.58, "elapsed_sec": 1.14, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 16:22 の記録 runs/experiments/gamepad_teleop/teleop_20261105_162224/meta.json

```json
{
  "run_stem": "teleop_20261105_162224",
  "started_at": "2026-11-05T16:22:25",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T16:22:31"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    -0.17,
    1.58,
    0.96,
    0.26,
    -0.17,
    -30.23
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.5,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "31a336c1994f1a214b00abe93f20b8b271e5d178",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "2ccfa5a504163d02786d9854141ee1a21a8d48ca8bfd78318bf945544461c5e6",
  "ended_at": "2026-11-05T16:26:15",
  "end_reason": "ctrl_c",
  "n_sent": 26
}
```

### 16:22 の記録 runs/experiments/gamepad_teleop/teleop_20261105_162224/log.jsonl（86行）

```json
{"seq": 1, "t": "2026-11-05T16:22:36.397", "t_unix": 1793863356.398, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [-0.17, 1.58, 0.96, 0.26, -0.17, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.17, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863356.43919, "measured_before_send": [-0.17, 1.58, 0.96, 0.26, -0.17, -30.23], "resends": [], "reached": true, "reached_angles": [-0.96, 2.46, 1.75, 0.26, -0.08, -30.23], "reach_err": 0.88, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T16:22:36.840", "t_unix": 1793863356.84, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.443, "accepted": true, "measured_before": [-0.96, 2.46, 1.75, 0.26, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.21, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-15.96, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863356.861637, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T16:22:36.942", "t_unix": 1793863356.942, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.545, "accepted": true, "measured_before": [-1.14, 2.46, 1.75, 0.26, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 14.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T16:22:37.043", "t_unix": 1793863357.043, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.646, "accepted": true, "measured_before": [-15.2, 2.46, 1.75, 0.26, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-30.2, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863357.4127731, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T16:22:37.799", "t_unix": 1793863357.8, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 1.403, "accepted": true, "measured_before": [-29.61, 2.46, 1.75, 0.08, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-44.61, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863358.227385, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T16:22:38.621", "t_unix": 1793863358.621, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 2.224, "accepted": true, "measured_before": [-44.29, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-59.29, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863359.028451, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T16:22:39.125", "t_unix": 1793863359.126, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 2.728, "accepted": true, "measured_before": [-44.29, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T16:22:39.228", "t_unix": 1793863359.228, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 2.831, "accepted": true, "measured_before": [-46.31, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T16:22:39.328", "t_unix": 1793863359.329, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 2.931, "accepted": true, "measured_before": [-50.44, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T16:22:39.429", "t_unix": 1793863359.43, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 3.032, "accepted": true, "measured_before": [-54.14, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 5.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T16:22:39.530", "t_unix": 1793863359.531, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 3.133, "accepted": true, "released_during_job": true, "measured_before": [-58.71, 2.46, 1.75, 0.0, -0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-73.71, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863359.561855, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T16:22:39.597", "t_unix": 1793863359.598, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-54.14, 2.46, 1.75, 0.0, -0.08, -30.23], "t_halt": 1793863359.598322, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-73.38, 2.46, 1.75, -0.08, -0.08, -30.14], "moved_after_request_deg": [-19.24, 0.0, 0.0, -0.08, 0.0, 0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T16:22:40.686", "t_unix": 1793863360.687, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 2, "hold_n": 0, "accepted": true, "measured_before": [-73.3, 2.46, 1.75, -0.08, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-72.38, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863360.7509918, "measured_before_send": [-73.3, 2.46, 1.75, -0.08, -0.08, -30.14], "resends": [], "reached": true, "reached_angles": [-72.15, 2.46, 1.75, -0.08, -0.08, -30.14], "reach_err": 0.88, "elapsed_sec": 0.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T16:22:41.372", "t_unix": 1793863361.372, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 3, "hold_n": 0, "accepted": true, "measured_before": [-72.15, 2.46, 1.75, -0.08, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-71.38, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863361.407577, "measured_before_send": [-72.15, 2.46, 1.75, -0.08, -0.08, -30.14], "resends": [], "reached": true, "reached_angles": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "reach_err": 0.88, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T16:22:42.876", "t_unix": 1793863362.877, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 5, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T16:22:43.548", "t_unix": 1793863363.549, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 6, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T16:22:44.587", "t_unix": 1793863364.588, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T16:22:45.075", "t_unix": 1793863365.076, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 7, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T16:22:45.779", "t_unix": 1793863365.779, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T16:22:46.281", "t_unix": 1793863366.282, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 8, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T16:22:49.016", "t_unix": 1793863369.017, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 9, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T16:22:50.107", "t_unix": 1793863370.107, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 10, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T16:22:50.108", "t_unix": 1793863370.108, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 11, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T16:22:51.668", "t_unix": 1793863371.668, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 12, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T16:22:52.333", "t_unix": 1793863372.334, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 13, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T16:22:54.487", "t_unix": 1793863374.487, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 14, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T16:22:42.029", "t_unix": 1793863362.029, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 4, "hold_n": 0, "accepted": true, "measured_before": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-70.38, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863362.074432, "measured_before_send": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "resends": [8.85], "reached": false, "reached_angles": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "reach_err": 0.88, "elapsed_sec": 8.85, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T16:22:55.386", "t_unix": 1793863375.387, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T16:22:57.495", "t_unix": 1793863377.496, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T16:22:58.369", "t_unix": 1793863378.37, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T16:22:58.707", "t_unix": 1793863378.707, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 16, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T16:22:55.888", "t_unix": 1793863375.888, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 15, "hold_n": 0, "accepted": true, "measured_before": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 0.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-69.1, 1.58, 0.96, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863375.935076, "measured_before_send": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "resends": [0.7, 1.41, 2.14], "reached": false, "not_moved": true, "reached_angles": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "reach_err": 2.0, "elapsed_sec": 2.8, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T16:23:01.084", "t_unix": 1793863381.085, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 18, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T16:23:02.168", "t_unix": 1793863382.169, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 19, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T16:23:02.899", "t_unix": 1793863382.899, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 20, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T16:23:04.325", "t_unix": 1793863384.326, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T16:23:04.762", "t_unix": 1793863384.762, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 21, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T16:22:59.415", "t_unix": 1793863379.416, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 17, "hold_n": 0, "accepted": true, "measured_before": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-69.1, 1.58, -1.04, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863379.462872, "measured_before_send": [-71.1, 2.46, 1.75, -0.08, -0.08, -30.14], "resends": [], "reached": false, "reached_angles": [-68.81, 2.46, 0.79, -0.08, -0.08, -30.14], "reach_err": 1.83, "elapsed_sec": 8.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T16:23:08.742", "t_unix": 1793863388.742, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T16:23:10.471", "t_unix": 1793863390.471, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 23, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T16:23:08.675", "t_unix": 1793863388.676, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 22, "hold_n": 0, "accepted": true, "measured_before": [-68.81, 2.46, 0.79, -0.08, -0.08, -30.14], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 1.83, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-69.1, 1.58, -0.21, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863388.719019, "measured_before_send": [-68.81, 2.46, 0.79, -0.08, -0.08, -30.14], "resends": [0.69, 1.42, 2.11], "reached": false, "not_moved": true, "reached_angles": [-68.81, 2.46, 0.79, -0.08, -0.08, -30.14], "reach_err": 1.0, "elapsed_sec": 2.78, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T16:23:15.047", "t_unix": 1793863395.048, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 25, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T16:23:15.048", "t_unix": 1793863395.049, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T16:23:14.042", "t_unix": 1793863394.042, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 24, "hold_n": 0, "accepted": true, "measured_before": [-68.81, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-69.1, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863394.087019, "measured_before_send": [-68.81, 2.46, 0.79, 0.0, -0.08, -30.14], "resends": [0.7, 1.43, 2.14], "reached": false, "not_moved": true, "reached_angles": [-68.81, 2.46, 0.79, 0.0, -0.08, -30.14], "reach_err": 2.0, "elapsed_sec": 2.8, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T16:23:17.796", "t_unix": 1793863397.797, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T16:23:18.479", "t_unix": 1793863398.48, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T16:23:19.248", "t_unix": 1793863399.248, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 26, "hold_n": 0, "accepted": true, "measured_before": [-68.81, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-68.1, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863399.302005, "measured_before_send": [-68.81, 2.46, 0.79, 0.0, -0.08, -30.14], "resends": [], "reached": true, "reached_angles": [-67.85, 2.46, 0.79, 0.0, -0.08, -30.14], "reach_err": 2.0, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T16:23:19.698", "t_unix": 1793863399.699, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 1, "held_sec": 0.451, "accepted": true, "measured_before": [-67.93, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 0.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-52.93, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863399.7204669, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T16:23:19.798", "t_unix": 1793863399.799, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 2, "held_sec": 0.551, "accepted": true, "measured_before": [-67.93, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T16:23:19.901", "t_unix": 1793863399.902, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 3, "held_sec": 0.654, "accepted": true, "measured_before": [-66.79, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T16:23:20.002", "t_unix": 1793863400.003, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 4, "held_sec": 0.755, "accepted": true, "measured_before": [-62.66, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T16:23:20.103", "t_unix": 1793863400.104, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 5, "held_sec": 0.856, "accepted": true, "measured_before": [-58.79, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 5.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T16:23:20.205", "t_unix": 1793863400.206, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 6, "held_sec": 0.958, "accepted": true, "measured_before": [-53.43, 2.46, 0.79, 0.0, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 0.5, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-38.43, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863400.23991, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T16:23:20.321", "t_unix": 1793863400.321, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 7, "held_sec": 1.073, "accepted": true, "measured_before": [-43.5, 2.46, 0.79, 0.08, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T16:23:20.708", "t_unix": 1793863400.709, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 8, "held_sec": 1.461, "accepted": true, "measured_before": [-40.86, 2.46, 0.79, 0.08, -0.08, -30.14], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-25.86, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863400.7372642, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T16:23:20.824", "t_unix": 1793863400.825, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 9, "held_sec": 1.577, "accepted": true, "measured_before": [-28.12, 2.46, 0.79, 0.08, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 2.26, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-13.12, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863401.2219808, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T16:23:21.279", "t_unix": 1793863401.28, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 10, "held_sec": 2.032, "accepted": true, "measured_before": [-25.75, 2.46, 0.79, 0.08, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 12.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T16:23:21.382", "t_unix": 1793863401.382, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 11, "held_sec": 2.134, "accepted": true, "measured_before": [-25.75, 2.46, 0.79, 0.17, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 12.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T16:23:21.499", "t_unix": 1793863401.499, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 12, "held_sec": 2.251, "accepted": true, "measured_before": [-21.09, 2.46, 0.79, 0.17, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 7.97, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.97, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T16:23:21.599", "t_unix": 1793863401.599, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 13, "held_sec": 2.351, "accepted": true, "measured_before": [-17.84, 2.46, 0.79, 0.17, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 4.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-2.84, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863401.658375, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T16:23:21.715", "t_unix": 1793863401.716, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 14, "held_sec": 2.468, "accepted": true, "measured_before": [-13.35, 2.46, 0.79, 0.17, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 10.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T16:23:21.818", "t_unix": 1793863401.819, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 15, "held_sec": 2.571, "accepted": true, "measured_before": [-3.07, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [11.93, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863402.179353, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T16:23:22.219", "t_unix": 1793863402.22, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 16, "held_sec": 2.972, "accepted": true, "measured_before": [-2.37, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T16:23:22.319", "t_unix": 1793863402.32, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 17, "held_sec": 3.072, "accepted": true, "measured_before": [-2.72, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 14.65, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.65, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T16:23:22.421", "t_unix": 1793863402.421, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 18, "held_sec": 3.173, "accepted": true, "measured_before": [0.7, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 11.23, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.23, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T16:23:22.538", "t_unix": 1793863402.538, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 19, "held_sec": 3.29, "accepted": true, "measured_before": [4.83, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 7.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T16:23:22.638", "t_unix": 1793863402.639, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 20, "held_sec": 3.391, "accepted": true, "measured_before": [10.1, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 1.83, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [25.1, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863402.69832, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T16:23:22.758", "t_unix": 1793863402.759, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 21, "held_sec": 3.511, "accepted": true, "measured_before": [21.62, 2.46, 0.79, 0.26, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 3.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [36.62, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863403.1361852, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T16:23:23.201", "t_unix": 1793863403.201, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 22, "held_sec": 3.953, "accepted": true, "measured_before": [33.75, 2.46, 0.79, 0.35, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 2.87, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [48.75, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863403.569608, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T16:23:23.639", "t_unix": 1793863403.639, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 23, "held_sec": 4.391, "accepted": true, "measured_before": [37.08, 2.46, 0.79, 0.35, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 11.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T16:23:23.740", "t_unix": 1793863403.74, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 24, "held_sec": 4.492, "accepted": true, "measured_before": [36.82, 2.46, 0.79, 0.35, -0.08, -30.05], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 11.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T16:23:23.841", "t_unix": 1793863403.842, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 25, "held_sec": 4.594, "accepted": true, "measured_before": [40.51, 2.46, 0.79, 0.35, -0.08, -29.97], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 8.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T16:23:23.942", "t_unix": 1793863403.943, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 26, "hold_n": 26, "held_sec": 4.694, "accepted": true, "released_during_job": true, "measured_before": [48.86, 2.46, 0.79, 0.35, -0.08, -29.97], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 0.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [63.86, 1.58, -1.21, 0.26, -0.17, -30.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793863404.347233, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T16:23:24.734", "t_unix": 1793863404.734, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 26, "halt_joint": 0, "measured_at_request": [40.51, 2.46, 0.79, 0.35, -0.08, -29.97], "t_halt": 1793863404.736706, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [59.15, 3.42, 1.75, 0.35, 1.4, -30.14], "moved_after_request_deg": [18.64, 0.96, 0.96, 0.0, 1.48, -0.17], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T16:23:27.834", "t_unix": 1793863407.834, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 28, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T16:23:29.075", "t_unix": 1793863409.076, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T16:23:30.529", "t_unix": 1793863410.529, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 29, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T16:23:30.529", "t_unix": 1793863410.529, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T16:23:32.059", "t_unix": 1793863412.059, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 30, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T16:23:32.059", "t_unix": 1793863412.06, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T16:23:33.188", "t_unix": 1793863413.189, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 31, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T16:23:33.237", "t_unix": 1793863413.238, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T16:23:34.431", "t_unix": 1793863414.432, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 32, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T16:23:34.465", "t_unix": 1793863414.465, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T16:23:26.130", "t_unix": 1793863406.131, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 27, "hold_n": 0, "accepted": true, "measured_before": [59.06, 3.51, 1.75, 0.35, 1.4, -30.14], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [59.15, 1.58, -2.21, 0.26, -0.17, -30.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793863406.17473, "measured_before_send": [59.06, 3.51, 1.75, 0.35, 1.4, -30.14], "resends": [], "reached": false, "reached_angles": [58.62, 2.98, -0.61, 0.26, 0.43, -30.14], "reach_err": 1.6, "elapsed_sec": 8.15, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T16:23:51.445", "t_unix": 1793863431.446, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 2, "step_deg": 1.0, "execute": true, "held_sec": 1.012, "accepted": true, "measured_before": [58.62, 2.98, -0.61, 0.26, -0.87, -30.14], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 10.79, "t_send": 1793863431.491513, "measured_before_send": [58.62, 2.98, -0.61, 0.26, -0.87, -30.14], "resends": [], "reached": true, "reached_angles": [2.72, 1.66, 0.7, 0.26, -0.61, -30.14], "reach_err": 2.72, "elapsed_sec": 1.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 16:31 の記録 runs/experiments/gamepad_teleop/teleop_20261105_163144/meta.json

```json
{
  "run_stem": "teleop_20261105_163144",
  "started_at": "2026-11-05T16:31:45",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T16:31:51"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    0.7,
    1.49,
    1.75,
    -0.08,
    0.26,
    -30.23
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.5,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "b71ffb5aca9a7ca9a3b74e41e3a5d011d1083fe4",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "197310e4269e159c4507d16222fd3952d1261e3208503926fec08575af3a7d3c",
  "ended_at": "2026-11-05T16:36:17",
  "end_reason": "ctrl_c",
  "n_sent": 116
}
```

### 16:31 の記録 runs/experiments/gamepad_teleop/teleop_20261105_163144/log.jsonl（326行）

```json
{"seq": 1, "t": "2026-11-05T16:31:53.338", "t_unix": 1793863913.338, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 1, "step_deg": 1.0, "execute": true, "held_sec": 1.003, "accepted": true, "measured_before": [0.7, 1.49, 1.75, -0.17, 45.17, -30.23], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 8.78, "t_send": 1793863913.3969028, "measured_before_send": [0.7, 1.49, 1.75, -0.17, 45.17, -30.23], "resends": [], "reached": true, "reached_angles": [-0.26, 1.49, 1.75, -0.17, 0.87, -30.23], "reach_err": 1.75, "elapsed_sec": 0.67, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T16:31:56.281", "t_unix": 1793863916.281, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.0, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863916.3476741, "measured_before_send": [-0.26, 1.49, 1.75, -0.17, 0.87, -30.23], "resends": [], "reached": true, "reached_angles": [-1.14, 1.49, 1.75, -0.17, 0.87, -30.23], "reach_err": 1.75, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T16:31:56.769", "t_unix": 1793863916.77, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.489, "accepted": true, "measured_before": [-1.14, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 0.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-16.14, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863916.7909088, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T16:31:57.190", "t_unix": 1793863917.191, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.91, "accepted": true, "measured_before": [-10.81, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 5.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T16:31:57.291", "t_unix": 1793863917.291, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 1.01, "accepted": true, "measured_before": [-15.55, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-30.55, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863917.3173099, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T16:31:57.393", "t_unix": 1793863917.393, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 1.112, "accepted": true, "measured_before": [-15.73, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 14.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T16:31:57.493", "t_unix": 1793863917.494, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 1.213, "accepted": true, "measured_before": [-16.96, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 13.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T16:31:57.595", "t_unix": 1793863917.595, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 1.314, "accepted": true, "measured_before": [-20.74, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 9.81, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.81, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T16:31:57.695", "t_unix": 1793863917.696, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 1.415, "accepted": true, "measured_before": [-24.34, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 6.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T16:31:57.797", "t_unix": 1793863917.797, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 1.516, "accepted": true, "measured_before": [-29.44, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 1.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-44.44, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863917.8566961, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T16:31:57.912", "t_unix": 1793863917.913, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 1.632, "accepted": true, "measured_before": [-30.05, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 14.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T16:31:58.027", "t_unix": 1793863918.027, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 1.747, "accepted": true, "measured_before": [-31.9, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T16:31:58.143", "t_unix": 1793863918.143, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 11, "held_sec": 1.862, "accepted": true, "measured_before": [-35.85, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 8.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T16:31:58.259", "t_unix": 1793863918.26, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 12, "held_sec": 1.979, "accepted": true, "measured_before": [-44.03, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-59.03, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863918.6487072, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T16:31:58.750", "t_unix": 1793863918.751, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 13, "held_sec": 2.47, "accepted": true, "measured_before": [-44.03, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T16:31:58.853", "t_unix": 1793863918.853, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 14, "held_sec": 2.572, "accepted": true, "measured_before": [-46.14, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 12.89, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.89, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T16:31:58.969", "t_unix": 1793863918.97, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 15, "held_sec": 2.689, "accepted": true, "measured_before": [-50.53, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 8.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T16:31:59.070", "t_unix": 1793863919.071, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 16, "held_sec": 2.79, "accepted": true, "measured_before": [-54.66, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 4.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-69.66, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863919.095807, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T16:31:59.173", "t_unix": 1793863919.173, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 17, "held_sec": 2.892, "accepted": true, "measured_before": [-58.62, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T16:31:59.288", "t_unix": 1793863919.289, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 18, "held_sec": 3.008, "accepted": true, "measured_before": [-58.62, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T16:31:59.389", "t_unix": 1793863919.39, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 19, "held_sec": 3.109, "accepted": true, "measured_before": [-58.44, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T16:31:59.491", "t_unix": 1793863919.491, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 20, "held_sec": 3.21, "accepted": true, "measured_before": [-58.44, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.22, "command": [-69.66, 0.0, 0.0, 0.0, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863919.5040221, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T16:31:59.592", "t_unix": 1793863919.592, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 21, "held_sec": 3.311, "accepted": true, "measured_before": [-58.44, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T16:31:59.708", "t_unix": 1793863919.708, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 22, "held_sec": 3.427, "accepted": true, "measured_before": [-61.08, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T16:31:59.824", "t_unix": 1793863919.824, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 23, "held_sec": 3.544, "accepted": true, "measured_before": [-65.39, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 4.27, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-80.39, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863919.8589382, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T16:31:59.925", "t_unix": 1793863919.925, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 24, "held_sec": 3.644, "accepted": true, "measured_before": [-69.25, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T16:32:00.026", "t_unix": 1793863920.027, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 25, "held_sec": 3.746, "accepted": true, "measured_before": [-69.78, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 10.61, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.61, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T16:32:00.127", "t_unix": 1793863920.128, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 26, "held_sec": 3.847, "accepted": true, "measured_before": [-71.71, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T16:32:00.244", "t_unix": 1793863920.245, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 27, "held_sec": 3.964, "accepted": true, "measured_before": [-76.9, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 3.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-91.9, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863920.269011, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T16:32:00.360", "t_unix": 1793863920.361, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 28, "held_sec": 4.08, "accepted": true, "measured_before": [-80.06, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 11.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T16:32:00.462", "t_unix": 1793863920.462, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 29, "held_sec": 4.181, "accepted": true, "released_during_job": true, "measured_before": [-91.58, 1.49, 1.75, -0.17, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 0.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-106.58, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T16:32:00.834", "t_unix": 1793863920.835, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-80.06, 1.49, 1.75, -0.17, 0.87, -30.23], "t_halt": 1793863920.838727, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-91.58, 2.46, 2.72, -0.17, 2.37, -30.23], "moved_after_request_deg": [-11.52, 0.97, 0.97, 0.0, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T16:32:01.287", "t_unix": 1793863921.288, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T16:32:01.840", "t_unix": 1793863921.841, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 2, "hold_n": 0, "accepted": true, "measured_before": [-91.58, 2.46, 2.72, -0.17, 2.37, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-89.58, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863921.91445, "measured_before_send": [-91.58, 2.46, 2.72, -0.17, 2.37, -30.23], "resends": [], "reached": true, "reached_angles": [-89.56, 1.66, 2.02, -0.17, 2.37, -30.23], "reach_err": 2.37, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T16:32:02.317", "t_unix": 1793863922.318, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 1, "held_sec": 0.477, "accepted": true, "measured_before": [-89.2, 1.66, 2.02, -0.17, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 0.38, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.2, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863922.348325, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T16:32:02.434", "t_unix": 1793863922.434, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 2, "held_sec": 0.593, "accepted": true, "measured_before": [-89.12, 1.66, 2.02, -0.17, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 14.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T16:32:02.534", "t_unix": 1793863922.535, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 3, "held_sec": 0.694, "accepted": true, "measured_before": [-88.76, 1.66, 2.02, -0.17, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T16:32:02.635", "t_unix": 1793863922.636, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 4, "held_sec": 0.795, "accepted": true, "measured_before": [-84.02, 1.66, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 9.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T16:32:02.738", "t_unix": 1793863922.738, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 5, "held_sec": 0.897, "accepted": true, "measured_before": [-80.33, 1.66, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 6.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T16:32:02.838", "t_unix": 1793863922.839, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 6, "held_sec": 0.998, "accepted": true, "measured_before": [-75.23, 1.66, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 1.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.23, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863922.877016, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T16:32:02.973", "t_unix": 1793863922.974, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 7, "held_sec": 1.133, "accepted": true, "measured_before": [-74.26, 1.58, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T16:32:03.074", "t_unix": 1793863923.074, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 8, "held_sec": 1.233, "accepted": true, "measured_before": [-72.24, 1.58, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T16:32:03.190", "t_unix": 1793863923.19, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 9, "held_sec": 1.35, "accepted": true, "measured_before": [-68.02, 1.58, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 7.79, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.79, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T16:32:03.292", "t_unix": 1793863923.292, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 10, "held_sec": 1.451, "accepted": true, "measured_before": [-63.45, 1.58, 2.02, -0.26, 2.37, -30.23], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-48.45, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863923.3409338, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T16:32:03.740", "t_unix": 1793863923.74, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 11, "held_sec": 1.899, "accepted": true, "measured_before": [-51.06, 1.58, 2.02, -0.26, 2.19, -30.23], "start_source": "hold", "cmd_gap_deg": 2.19, "hold_lead_deg": 2.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-36.06, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863923.805957, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T16:32:03.856", "t_unix": 1793863923.857, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 12, "held_sec": 2.016, "accepted": true, "measured_before": [-48.33, 1.58, 2.02, -0.26, 2.19, -30.23], "start_source": "hold", "cmd_gap_deg": 2.19, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T16:32:03.973", "t_unix": 1793863923.974, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 13, "held_sec": 2.133, "accepted": true, "measured_before": [-47.63, 1.58, 2.02, -0.26, 2.19, -30.23], "start_source": "hold", "cmd_gap_deg": 2.19, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T16:32:04.090", "t_unix": 1793863924.091, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 14, "held_sec": 2.25, "accepted": true, "measured_before": [-42.53, 1.58, 2.02, -0.26, 2.1, -30.23], "start_source": "hold", "cmd_gap_deg": 2.1, "hold_lead_deg": 6.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T16:32:04.191", "t_unix": 1793863924.191, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 15, "held_sec": 2.351, "accepted": true, "measured_before": [-38.4, 1.58, 2.02, -0.26, 2.1, -30.23], "start_source": "hold", "cmd_gap_deg": 2.1, "hold_lead_deg": 2.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.4, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863924.231929, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T16:32:04.325", "t_unix": 1793863924.325, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 16, "held_sec": 2.484, "accepted": true, "measured_before": [-35.33, 1.58, 2.02, -0.26, 2.1, -30.23], "start_source": "hold", "cmd_gap_deg": 2.1, "hold_lead_deg": 11.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T16:32:04.425", "t_unix": 1793863924.426, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 17, "held_sec": 2.585, "accepted": true, "measured_before": [-35.68, 1.58, 2.02, -0.26, 2.1, -30.23], "start_source": "hold", "cmd_gap_deg": 2.1, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T16:32:04.527", "t_unix": 1793863924.528, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 18, "held_sec": 2.687, "accepted": true, "measured_before": [-31.28, 1.58, 2.02, -0.26, 2.1, -30.23], "start_source": "hold", "cmd_gap_deg": 2.1, "hold_lead_deg": 7.88, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.88, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T16:32:04.628", "t_unix": 1793863924.628, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 19, "held_sec": 2.787, "accepted": true, "measured_before": [-23.29, 1.58, 2.02, -0.35, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 0.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-8.29, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863924.992338, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T16:32:05.400", "t_unix": 1793863925.4, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 20, "held_sec": 3.559, "accepted": true, "measured_before": [-7.99, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [7.01, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863925.818288, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T16:32:06.219", "t_unix": 1793863926.219, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 21, "held_sec": 4.378, "accepted": true, "measured_before": [1.75, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 5.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T16:32:06.319", "t_unix": 1793863926.319, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 22, "held_sec": 4.479, "accepted": true, "measured_before": [6.59, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 0.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [21.59, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863926.348924, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T16:32:06.436", "t_unix": 1793863926.437, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 23, "held_sec": 4.596, "accepted": true, "measured_before": [6.76, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T16:32:06.536", "t_unix": 1793863926.537, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 24, "held_sec": 4.696, "accepted": true, "measured_before": [8.43, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T16:32:06.637", "t_unix": 1793863926.638, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 25, "held_sec": 4.797, "accepted": true, "measured_before": [12.04, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T16:32:06.754", "t_unix": 1793863926.755, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 26, "held_sec": 4.914, "accepted": true, "measured_before": [16.96, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 4.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [31.96, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863926.781805, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T16:32:06.869", "t_unix": 1793863926.87, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 27, "held_sec": 5.029, "accepted": true, "measured_before": [21.26, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 10.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T16:32:06.970", "t_unix": 1793863926.971, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 28, "held_sec": 5.13, "accepted": true, "measured_before": [21.79, 1.58, 2.02, -0.35, 1.23, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T16:32:07.075", "t_unix": 1793863927.076, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 29, "held_sec": 5.235, "accepted": true, "measured_before": [21.44, 1.58, 2.02, -0.35, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 10.52, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.52, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T16:32:07.176", "t_unix": 1793863927.176, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 30, "held_sec": 5.335, "accepted": true, "measured_before": [21.44, 1.58, 2.02, -0.35, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 10.52, "command": [31.96, 0.0, 0.0, 0.0, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863927.20019, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T16:32:07.593", "t_unix": 1793863927.593, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 31, "held_sec": 5.753, "accepted": true, "released_during_job": true, "measured_before": [31.11, 1.58, 2.02, -0.35, 0.87, -30.23], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [46.11, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863927.6190631, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T16:32:08.014", "t_unix": 1793863928.015, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 2, "halt_joint": 0, "measured_at_request": [21.44, 1.58, 2.02, -0.35, 0.87, -30.23], "t_halt": 1793863928.016799, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [42.71, 2.63, 2.98, -0.35, 2.46, -30.23], "moved_after_request_deg": [21.27, 1.05, 0.96, 0.0, 1.59, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T16:32:08.686", "t_unix": 1793863928.686, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T16:32:12.083", "t_unix": 1793863932.084, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 4, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T16:32:14.131", "t_unix": 1793863934.131, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T16:32:14.433", "t_unix": 1793863934.434, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 5, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T16:32:16.918", "t_unix": 1793863936.919, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 6, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T16:32:10.093", "t_unix": 1793863930.094, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 3, "hold_n": 0, "accepted": true, "measured_before": [42.53, 2.63, 2.98, -0.35, 2.46, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -1.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863930.138155, "measured_before_send": [42.53, 2.63, 2.98, -0.35, 2.46, -30.23], "resends": [], "reached": false, "reached_angles": [45.7, 1.49, 0.61, -0.35, 0.87, -30.23], "reach_err": 2.99, "elapsed_sec": 8.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T16:32:21.121", "t_unix": 1793863941.122, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 8, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T16:32:18.685", "t_unix": 1793863938.685, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 7, "hold_n": 0, "accepted": true, "measured_before": [45.7, 1.49, 0.61, -0.35, 0.87, -30.23], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 2.99, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -0.39, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863938.727277, "measured_before_send": [45.7, 1.49, 0.61, -0.35, 0.87, -30.23], "resends": [1.04, 1.77, 2.49], "reached": false, "not_moved": true, "reached_angles": [45.7, 1.49, 0.61, -0.35, -1.23, -30.23], "reach_err": 2.99, "elapsed_sec": 3.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T16:32:23.743", "t_unix": 1793863943.744, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [45.7, 1.49, 0.61, -0.35, -1.23, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.99, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -1.39, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863943.787447, "measured_before_send": [45.7, 1.49, 0.61, -0.35, -1.23, -30.23], "resends": [0.67, 1.36, 2.1], "reached": false, "not_moved": true, "reached_angles": [45.7, 1.49, 0.61, -0.35, 2.9, -30.23], "reach_err": 2.99, "elapsed_sec": 2.77, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T16:32:26.607", "t_unix": 1793863946.608, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 1, "held_sec": 2.864, "accepted": true, "measured_before": [45.7, 1.49, 0.61, -0.35, 4.21, -30.23], "start_source": "mixed", "cmd_gap_deg": 4.21, "hold_lead_deg": 2.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -14.39, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863946.6276171, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T16:32:26.707", "t_unix": 1793863946.708, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 2, "held_sec": 2.964, "accepted": true, "measured_before": [45.7, 1.49, 0.61, -0.35, 4.57, -30.23], "start_source": "mixed", "cmd_gap_deg": 4.57, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T16:32:26.808", "t_unix": 1793863946.809, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 3, "held_sec": 3.066, "accepted": true, "measured_before": [45.7, 1.49, -1.23, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T16:32:26.911", "t_unix": 1793863946.911, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 4, "held_sec": 3.168, "accepted": true, "measured_before": [45.7, 1.49, -1.23, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T16:32:27.011", "t_unix": 1793863947.011, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 5, "held_sec": 3.268, "accepted": true, "measured_before": [45.7, 1.49, -1.23, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 13.16, "command": [42.71, 0.0, -14.39, 0.0, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863947.068371, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T16:32:27.127", "t_unix": 1793863947.127, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 6, "held_sec": 3.384, "accepted": true, "measured_before": [45.7, 1.49, -12.74, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 1.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -27.74, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863947.149184, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T16:32:27.228", "t_unix": 1793863947.228, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 7, "held_sec": 3.485, "accepted": true, "measured_before": [45.7, 1.49, -12.91, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T16:32:27.343", "t_unix": 1793863947.343, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 8, "held_sec": 3.6, "accepted": true, "measured_before": [45.7, 1.49, -14.15, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 13.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T16:32:27.459", "t_unix": 1793863947.459, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 9, "held_sec": 3.716, "accepted": true, "measured_before": [45.7, 1.49, -18.63, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T16:32:27.576", "t_unix": 1793863947.576, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 10, "held_sec": 3.833, "accepted": true, "measured_before": [45.7, 1.49, -23.81, -0.35, 1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 3.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -38.81, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863947.601175, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T16:32:27.998", "t_unix": 1793863947.999, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 11, "held_sec": 4.255, "accepted": true, "measured_before": [45.7, 1.49, -35.59, -0.35, 1.05, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -50.59, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863948.027984, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T16:32:28.098", "t_unix": 1793863948.099, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 12, "held_sec": 4.356, "accepted": true, "measured_before": [45.7, 1.49, -37.61, -0.35, 0.61, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T16:32:28.199", "t_unix": 1793863948.199, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 13, "held_sec": 4.456, "accepted": true, "measured_before": [45.7, 1.4, -38.32, -0.35, 0.43, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T16:32:28.301", "t_unix": 1793863948.302, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 14, "held_sec": 4.558, "accepted": true, "measured_before": [45.7, 1.4, -41.48, -0.35, 0.43, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T16:32:28.403", "t_unix": 1793863948.403, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 15, "held_sec": 4.66, "accepted": true, "measured_before": [45.7, 0.96, -49.65, -0.26, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 0.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -64.65, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863948.799689, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T16:32:28.859", "t_unix": 1793863948.859, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 16, "held_sec": 5.116, "accepted": true, "measured_before": [45.7, 0.96, -49.65, -0.26, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T16:32:28.961", "t_unix": 1793863948.961, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 17, "held_sec": 5.218, "accepted": true, "measured_before": [45.7, 0.96, -50.27, -0.26, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 14.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T16:32:29.061", "t_unix": 1793863949.061, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 9, "hold_n": 18, "held_sec": 5.318, "accepted": true, "released_during_job": true, "measured_before": [45.7, 0.96, -53.78, -0.26, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T16:32:29.095", "t_unix": 1793863949.096, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 9, "halt_joint": 2, "measured_at_request": [45.7, 0.96, -50.27, -0.26, 0.08, -30.23], "t_halt": 1793863949.097242, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 1.58, -56.33, -0.26, 3.33, -30.23], "moved_after_request_deg": [-0.09, 0.62, -6.06, 0.0, 3.25, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T16:32:29.850", "t_unix": 1793863949.851, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.58, -56.33, -0.26, 8.34, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -55.33, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863949.894537, "measured_before_send": [45.61, 1.58, -56.33, -0.26, 8.43, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 0.52, -55.63, -0.26, 1.23, -30.23], "reach_err": 2.9, "elapsed_sec": 0.37, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T16:32:30.319", "t_unix": 1793863950.319, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 1, "held_sec": 0.469, "accepted": true, "measured_before": [45.61, 0.87, -54.31, -0.17, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -39.31, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863950.344835, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T16:32:30.719", "t_unix": 1793863950.72, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 2, "held_sec": 0.869, "accepted": true, "measured_before": [45.61, 0.7, -45.79, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 6.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T16:32:30.821", "t_unix": 1793863950.821, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 3, "held_sec": 0.971, "accepted": true, "measured_before": [45.61, 0.7, -38.4, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -23.4, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863951.19309, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T16:32:31.608", "t_unix": 1793863951.609, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 4, "held_sec": 1.758, "accepted": true, "measured_before": [45.61, 0.7, -27.59, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, -12.59, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863951.641632, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T16:32:31.710", "t_unix": 1793863951.71, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 5, "held_sec": 1.86, "accepted": true, "measured_before": [45.61, 0.7, -23.64, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T16:32:31.811", "t_unix": 1793863951.811, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 6, "held_sec": 1.961, "accepted": true, "measured_before": [45.61, 0.7, -22.41, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T16:32:31.926", "t_unix": 1793863951.927, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 7, "held_sec": 2.076, "accepted": true, "measured_before": [45.61, 0.7, -22.41, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T16:32:32.027", "t_unix": 1793863952.027, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 8, "held_sec": 2.177, "accepted": true, "measured_before": [45.61, 0.7, -22.41, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.82, "command": [42.71, 0.0, -12.59, 0.0, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863952.046185, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T16:32:32.447", "t_unix": 1793863952.447, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 9, "held_sec": 2.597, "accepted": true, "measured_before": [45.61, 0.7, -12.83, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.24, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 2.17, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863952.470072, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T16:32:32.869", "t_unix": 1793863952.87, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 10, "held_sec": 3.019, "accepted": true, "measured_before": [45.61, 0.79, -4.57, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T16:32:32.986", "t_unix": 1793863952.987, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 11, "held_sec": 3.136, "accepted": true, "measured_before": [45.61, 0.79, 2.1, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.07, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 17.1, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863953.012456, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T16:32:33.087", "t_unix": 1793863953.087, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 12, "held_sec": 3.237, "accepted": true, "measured_before": [45.61, 0.79, 3.07, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T16:32:33.187", "t_unix": 1793863953.188, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 13, "held_sec": 3.337, "accepted": true, "measured_before": [45.61, 0.79, 3.6, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T16:32:33.303", "t_unix": 1793863953.303, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 14, "held_sec": 3.453, "accepted": true, "measured_before": [45.61, 0.79, 7.55, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T16:32:33.420", "t_unix": 1793863953.421, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 10, "hold_n": 15, "held_sec": 3.57, "accepted": true, "released_during_job": true, "measured_before": [45.61, 0.79, 18.01, -0.26, 1.31, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 33.01, 0.0, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863953.750856, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T16:32:34.144", "t_unix": 1793863954.144, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 10, "halt_joint": 2, "measured_at_request": [45.61, 0.79, 7.55, -0.26, 1.31, -30.23], "t_halt": 1793863954.145035, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 1.58, 30.23, -0.26, 2.72, -30.23], "moved_after_request_deg": [0.0, 0.79, 22.68, 0.0, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T16:32:38.112", "t_unix": 1793863958.112, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 12, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T16:32:42.550", "t_unix": 1793863962.551, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 13, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T16:32:35.240", "t_unix": 1793863955.24, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 11, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.58, 30.23, -0.26, 2.72, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863955.318178, "measured_before_send": [45.61, 1.58, 30.23, -0.26, 2.72, -30.23], "resends": [], "reached": false, "reached_angles": [45.61, 1.49, 30.84, -0.26, 0.17, -30.23], "reach_err": 2.9, "elapsed_sec": 8.14, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T16:32:47.228", "t_unix": 1793863967.229, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T16:32:51.103", "t_unix": 1793863971.104, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 15, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T16:32:47.866", "t_unix": 1793863967.866, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 14, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -0.26, 0.17, -30.23], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -1.26, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863968.028065, "measured_before_send": [45.61, 1.49, 30.84, -0.26, 0.17, -30.23], "resends": [0.7], "reached": true, "reached_angles": [45.61, 1.49, 30.84, -0.79, 0.17, -30.23], "reach_err": 2.9, "elapsed_sec": 3.31, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T16:32:53.602", "t_unix": 1793863973.604, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -0.87, 0.17, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -2.26, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863973.663475, "measured_before_send": [45.61, 1.49, 30.84, -0.87, 0.17, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 1.49, 30.84, -1.84, 0.17, -30.23], "reach_err": 2.9, "elapsed_sec": 0.33, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 119, "t": "2026-11-05T16:32:54.043", "t_unix": 1793863974.043, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 1, "held_sec": 0.442, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -1.84, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -16.84, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863974.0574589, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 120, "t": "2026-11-05T16:32:54.146", "t_unix": 1793863974.146, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 2, "held_sec": 0.545, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -1.84, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 121, "t": "2026-11-05T16:32:54.260", "t_unix": 1793863974.261, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 3, "held_sec": 0.659, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -1.84, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 122, "t": "2026-11-05T16:32:54.375", "t_unix": 1793863974.375, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 4, "held_sec": 0.774, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -1.84, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 15.0, "command": [42.71, 0.0, 29.23, -16.84, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863974.445158, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 123, "t": "2026-11-05T16:32:54.495", "t_unix": 1793863974.496, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 5, "held_sec": 0.894, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -15.11, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.73, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -30.11, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863974.522927, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 124, "t": "2026-11-05T16:32:54.596", "t_unix": 1793863974.596, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 6, "held_sec": 0.994, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -16.25, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 125, "t": "2026-11-05T16:32:54.696", "t_unix": 1793863974.697, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 7, "held_sec": 1.095, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -17.4, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 126, "t": "2026-11-05T16:32:54.813", "t_unix": 1793863974.814, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 8, "held_sec": 1.212, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -21.35, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.76, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.76, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 127, "t": "2026-11-05T16:32:54.914", "t_unix": 1793863974.915, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 9, "held_sec": 1.313, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -25.92, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -40.92, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863974.9502249, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 128, "t": "2026-11-05T16:32:55.015", "t_unix": 1793863975.016, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 10, "held_sec": 1.414, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -29.17, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 129, "t": "2026-11-05T16:32:55.116", "t_unix": 1793863975.117, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 11, "held_sec": 1.515, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -29.44, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 130, "t": "2026-11-05T16:32:55.216", "t_unix": 1793863975.217, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 12, "held_sec": 1.615, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -29.44, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 131, "t": "2026-11-05T16:32:55.318", "t_unix": 1793863975.318, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 13, "held_sec": 1.717, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -29.44, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.48, "command": [42.71, 0.0, 29.23, -40.92, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863975.337743, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 132, "t": "2026-11-05T16:32:55.740", "t_unix": 1793863975.74, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 14, "held_sec": 2.138, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -39.99, 0.17, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -54.99, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863975.768957, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 133, "t": "2026-11-05T16:32:55.855", "t_unix": 1793863975.856, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 15, "held_sec": 2.254, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -40.25, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 134, "t": "2026-11-05T16:32:55.957", "t_unix": 1793863975.958, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 16, "held_sec": 2.356, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -42.71, 0.08, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 135, "t": "2026-11-05T16:32:56.073", "t_unix": 1793863976.073, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 17, "held_sec": 2.472, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -47.9, 0.0, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 136, "t": "2026-11-05T16:32:56.189", "t_unix": 1793863976.189, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 137, "t": "2026-11-05T16:32:56.189", "t_unix": 1793863976.189, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 18, "held_sec": 2.587, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -52.47, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -67.47, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863976.2277582, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 138, "t": "2026-11-05T16:32:56.289", "t_unix": 1793863976.29, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 19, "held_sec": 2.688, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -53.96, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 139, "t": "2026-11-05T16:32:56.391", "t_unix": 1793863976.391, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 20, "held_sec": 2.789, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -53.96, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 140, "t": "2026-11-05T16:32:56.492", "t_unix": 1793863976.493, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 21, "held_sec": 2.891, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -54.05, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 141, "t": "2026-11-05T16:32:56.593", "t_unix": 1793863976.593, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 22, "held_sec": 2.992, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -54.05, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.42, "command": [42.71, 0.0, 29.23, -67.47, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863976.616247, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 142, "t": "2026-11-05T16:32:56.995", "t_unix": 1793863976.995, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 23, "held_sec": 3.393, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -64.86, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -79.86, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863977.01473, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 143, "t": "2026-11-05T16:32:57.403", "t_unix": 1793863977.403, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 24, "held_sec": 3.801, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -78.48, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.38, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -93.48, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863977.8211, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 144, "t": "2026-11-05T16:32:57.872", "t_unix": 1793863977.872, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 25, "held_sec": 4.27, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -78.48, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 145, "t": "2026-11-05T16:32:57.974", "t_unix": 1793863977.975, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 26, "held_sec": 4.372, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -80.06, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 146, "t": "2026-11-05T16:32:58.091", "t_unix": 1793863978.091, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 27, "held_sec": 4.489, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -85.34, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 147, "t": "2026-11-05T16:32:58.191", "t_unix": 1793863978.192, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 28, "held_sec": 4.59, "accepted": true, "measured_before": [45.61, 1.49, 30.84, -89.2, -1.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -104.2, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863978.2231328, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 148, "t": "2026-11-05T16:32:58.307", "t_unix": 1793863978.307, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 16, "hold_n": 29, "held_sec": 4.705, "accepted": true, "released_during_job": true, "measured_before": [45.61, 1.49, 30.84, -101.6, -1.49, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.6, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -116.6, 0.0, -30.0], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 150, "t": "2026-11-05T16:32:58.996", "t_unix": 1793863978.997, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 17, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 149, "t": "2026-11-05T16:32:58.679", "t_unix": 1793863978.679, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 16, "halt_joint": 3, "measured_at_request": [45.61, 1.49, 30.84, -89.2, -1.14, -30.23], "t_halt": 1793863978.679776, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 2.28, 31.46, -102.74, -1.58, -30.23], "moved_after_request_deg": [0.0, 0.79, 0.62, -13.54, -0.44, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 151, "t": "2026-11-05T16:32:59.296", "t_unix": 1793863979.297, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 153, "t": "2026-11-05T16:33:03.283", "t_unix": 1793863983.284, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 19, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 152, "t": "2026-11-05T16:33:01.536", "t_unix": 1793863981.537, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [45.61, 2.28, 31.46, -102.74, -1.58, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -101.74, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863981.5863621, "measured_before_send": [45.61, 2.28, 31.46, -102.74, -1.58, -30.23], "resends": [0.76, 1.48], "reached": true, "reached_angles": [45.61, 1.23, 31.2, -102.21, -0.79, -30.23], "reach_err": 2.9, "elapsed_sec": 3.44, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 154, "t": "2026-11-05T16:33:06.238", "t_unix": 1793863986.239, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -102.21, -0.79, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -100.74, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863986.287859, "measured_before_send": [45.61, 1.23, 31.2, -102.21, -0.79, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 1.23, 31.2, -101.16, -0.35, -30.23], "reach_err": 2.9, "elapsed_sec": 0.35, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 155, "t": "2026-11-05T16:33:06.694", "t_unix": 1793863986.694, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 1, "held_sec": 0.456, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -101.16, -0.26, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -86.16, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863986.7141461, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 156, "t": "2026-11-05T16:33:06.794", "t_unix": 1793863986.794, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 2, "held_sec": 0.556, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -89.82, 0.0, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -74.82, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863987.17491, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 157, "t": "2026-11-05T16:33:07.237", "t_unix": 1793863987.237, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 3, "held_sec": 0.999, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.92, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 158, "t": "2026-11-05T16:33:07.353", "t_unix": 1793863987.354, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 4, "held_sec": 1.115, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.92, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 159, "t": "2026-11-05T16:33:07.454", "t_unix": 1793863987.454, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 5, "held_sec": 1.216, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.92, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 160, "t": "2026-11-05T16:33:07.504", "t_unix": 1793863987.505, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 161, "t": "2026-11-05T16:33:07.554", "t_unix": 1793863987.555, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 6, "held_sec": 1.317, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.83, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.01, "command": [42.71, 0.0, 29.23, -74.82, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863987.5816681, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 162, "t": "2026-11-05T16:33:07.655", "t_unix": 1793863987.655, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 7, "held_sec": 1.417, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.83, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 163, "t": "2026-11-05T16:33:07.771", "t_unix": 1793863987.771, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 8, "held_sec": 1.533, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.83, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 164, "t": "2026-11-05T16:33:07.886", "t_unix": 1793863987.886, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 9, "held_sec": 1.648, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -86.83, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.01, "command": [42.71, 0.0, 29.23, -74.82, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863987.951245, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 165, "t": "2026-11-05T16:33:08.003", "t_unix": 1793863988.004, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 10, "held_sec": 1.765, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -75.58, 0.79, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -60.58, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863988.0262988, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 166, "t": "2026-11-05T16:33:08.439", "t_unix": 1793863988.439, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 11, "held_sec": 2.201, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -62.49, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -47.49, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863988.4798222, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 167, "t": "2026-11-05T16:33:08.541", "t_unix": 1793863988.541, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 12, "held_sec": 2.303, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -61.17, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 168, "t": "2026-11-05T16:33:08.641", "t_unix": 1793863988.642, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 13, "held_sec": 2.403, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -59.58, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 169, "t": "2026-11-05T16:33:08.741", "t_unix": 1793863988.742, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 14, "held_sec": 2.503, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -55.63, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 170, "t": "2026-11-05T16:33:08.842", "t_unix": 1793863988.843, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 15, "held_sec": 2.604, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -51.06, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 3.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -36.06, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863988.86911, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 171, "t": "2026-11-05T16:33:08.942", "t_unix": 1793863988.943, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 16, "held_sec": 2.704, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -48.16, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 172, "t": "2026-11-05T16:33:09.044", "t_unix": 1793863989.044, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 17, "held_sec": 2.806, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -36.73, 1.75, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.67, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -21.73, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863989.402941, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 173, "t": "2026-11-05T16:33:09.801", "t_unix": 1793863989.802, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 18, "held_sec": 3.563, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -22.41, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.68, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -7.41, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863989.8908072, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 174, "t": "2026-11-05T16:33:09.949", "t_unix": 1793863989.95, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 19, "held_sec": 3.711, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -21.88, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 175, "t": "2026-11-05T16:33:10.051", "t_unix": 1793863990.052, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 20, "held_sec": 3.813, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -21.88, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 176, "t": "2026-11-05T16:33:10.152", "t_unix": 1793863990.153, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 21, "held_sec": 3.914, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -21.88, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 177, "t": "2026-11-05T16:33:10.268", "t_unix": 1793863990.268, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 22, "held_sec": 4.03, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -21.88, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "command": [42.71, 0.0, 29.23, -7.41, 0.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863990.330571, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 178, "t": "2026-11-05T16:33:10.386", "t_unix": 1793863990.387, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 20, "hold_n": 23, "held_sec": 4.148, "accepted": true, "released_during_job": true, "measured_before": [45.61, 1.23, 31.2, -7.47, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, 7.53, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863990.414446, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 179, "t": "2026-11-05T16:33:10.454", "t_unix": 1793863990.455, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 20, "halt_joint": 3, "measured_at_request": [45.61, 1.23, 31.2, -21.88, 1.84, -30.23], "t_halt": 1793863990.454885, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 1.23, 31.2, -6.94, 1.84, -30.23], "moved_after_request_deg": [0.0, 0.0, 0.0, 14.94, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 181, "t": "2026-11-05T16:33:11.298", "t_unix": 1793863991.299, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 180, "t": "2026-11-05T16:33:11.233", "t_unix": 1793863991.233, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 21, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -6.76, 1.84, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -5.94, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863991.294842, "measured_before_send": [45.61, 1.23, 31.2, -6.76, 1.84, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 1.23, 31.2, -5.53, 1.84, -30.23], "reach_err": 2.9, "elapsed_sec": 0.35, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 182, "t": "2026-11-05T16:33:11.701", "t_unix": 1793863991.702, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 2.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 21, "hold_n": 1, "held_sec": 0.469, "accepted": true, "measured_before": [45.61, 1.23, 31.2, -5.53, 1.84, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, 9.47, 0.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863991.7296069, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 184, "t": "2026-11-05T16:33:12.037", "t_unix": 1793863992.037, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 22, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 183, "t": "2026-11-05T16:33:11.801", "t_unix": 1793863991.802, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 21, "halt_joint": 3, "measured_at_request": [45.61, 1.23, 31.2, -5.53, 1.84, -30.23], "t_halt": 1793863991.802548, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 2.1, 31.81, -5.36, 3.07, -30.23], "moved_after_request_deg": [0.0, 0.87, 0.61, 0.17, 1.23, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 186, "t": "2026-11-05T16:33:13.025", "t_unix": 1793863993.026, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 24, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 187, "t": "2026-11-05T16:33:13.479", "t_unix": 1793863993.48, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 25, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 188, "t": "2026-11-05T16:33:14.901", "t_unix": 1793863994.901, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 185, "t": "2026-11-05T16:33:12.238", "t_unix": 1793863992.238, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 23, "hold_n": 0, "accepted": true, "measured_before": [45.61, 2.1, 31.81, -5.36, 3.07, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.07, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863992.291341, "measured_before_send": [45.61, 2.1, 31.81, -5.44, 3.07, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 1.31, 31.2, -4.83, 1.66, -30.23], "reach_err": 2.9, "elapsed_sec": 2.36, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 189, "t": "2026-11-05T16:33:15.694", "t_unix": 1793863995.694, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 26, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.83, 1.58, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -1.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793863995.7739499, "measured_before_send": [45.61, 1.31, 31.2, -4.83, 1.58, -30.23], "resends": [], "reached": true, "reached_angles": [45.61, 1.31, 31.2, -4.74, -0.7, -30.23], "reach_err": 2.9, "elapsed_sec": 0.35, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 190, "t": "2026-11-05T16:33:16.173", "t_unix": 1793863996.173, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 1, "held_sec": 0.479, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -0.7, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -15.7, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863996.194127, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 191, "t": "2026-11-05T16:33:16.274", "t_unix": 1793863996.275, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 2, "held_sec": 0.581, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -0.7, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 192, "t": "2026-11-05T16:33:16.390", "t_unix": 1793863996.391, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 3, "held_sec": 0.697, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -3.25, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 193, "t": "2026-11-05T16:33:16.491", "t_unix": 1793863996.491, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 4, "held_sec": 0.797, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -7.99, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 7.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 194, "t": "2026-11-05T16:33:16.606", "t_unix": 1793863996.606, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 5, "held_sec": 0.912, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -12.74, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -27.74, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863996.6426141, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 195, "t": "2026-11-05T16:33:17.054", "t_unix": 1793863997.054, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 6, "held_sec": 1.36, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -24.69, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 3.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -39.69, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863997.086376, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 196, "t": "2026-11-05T16:33:17.156", "t_unix": 1793863997.156, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 7, "held_sec": 1.462, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -26.54, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 197, "t": "2026-11-05T16:33:17.256", "t_unix": 1793863997.257, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 8, "held_sec": 1.563, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -26.71, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 198, "t": "2026-11-05T16:33:17.359", "t_unix": 1793863997.359, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 9, "held_sec": 1.665, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -30.14, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 199, "t": "2026-11-05T16:33:17.459", "t_unix": 1793863997.46, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 10, "held_sec": 1.766, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.74, -34.89, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.8, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -49.89, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863997.5211961, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 200, "t": "2026-11-05T16:33:17.576", "t_unix": 1793863997.577, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 11, "held_sec": 1.883, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -46.66, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 3.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -61.66, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863997.921176, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 201, "t": "2026-11-05T16:33:17.980", "t_unix": 1793863997.98, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 12, "held_sec": 2.286, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -48.51, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 202, "t": "2026-11-05T16:33:18.080", "t_unix": 1793863998.08, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 13, "held_sec": 2.386, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -48.51, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 203, "t": "2026-11-05T16:33:18.195", "t_unix": 1793863998.196, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 14, "held_sec": 2.502, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -48.51, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 204, "t": "2026-11-05T16:33:18.297", "t_unix": 1793863998.297, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 15, "held_sec": 2.603, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -48.51, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "command": [42.71, 0.0, 29.23, -4.36, -61.66, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793863998.319791, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 205, "t": "2026-11-05T16:33:18.411", "t_unix": 1793863998.411, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 16, "held_sec": 2.717, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -48.51, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 206, "t": "2026-11-05T16:33:18.511", "t_unix": 1793863998.512, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 17, "held_sec": 2.818, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -51.15, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 10.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 207, "t": "2026-11-05T16:33:18.628", "t_unix": 1793863998.628, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 18, "held_sec": 2.934, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -56.07, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 5.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 208, "t": "2026-11-05T16:33:18.730", "t_unix": 1793863998.73, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 19, "held_sec": 3.036, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -59.85, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.81, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -74.85, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793863998.7605581, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 209, "t": "2026-11-05T16:33:18.832", "t_unix": 1793863998.833, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 26, "hold_n": 20, "held_sec": 3.139, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.65, -60.38, -30.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 210, "t": "2026-11-05T16:33:18.883", "t_unix": 1793863998.883, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 26, "halt_joint": 4, "measured_at_request": [45.61, 1.31, 31.2, -4.65, -60.38, -30.23], "t_halt": 1793863998.8840609, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 2.37, 31.9, -5.18, -58.62, -30.23], "moved_after_request_deg": [0.0, 1.06, 0.7, -0.53, 1.76, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 212, "t": "2026-11-05T16:33:23.450", "t_unix": 1793864003.451, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 28, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 213, "t": "2026-11-05T16:33:24.089", "t_unix": 1793864004.089, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 214, "t": "2026-11-05T16:33:24.422", "t_unix": 1793864004.423, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 29, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 215, "t": "2026-11-05T16:33:27.601", "t_unix": 1793864007.602, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 211, "t": "2026-11-05T16:33:20.119", "t_unix": 1793864000.12, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 27, "hold_n": 0, "accepted": true, "measured_before": [45.61, 2.37, 31.9, -5.36, -58.62, -30.23], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864000.1965818, "measured_before_send": [45.61, 2.37, 31.9, -5.36, -58.62, -30.23], "resends": [], "reached": false, "reached_angles": [45.61, 1.31, 31.2, -4.65, -56.77, -30.23], "reach_err": 2.9, "elapsed_sec": 8.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 217, "t": "2026-11-05T16:33:32.491", "t_unix": 1793864012.492, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 31, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 216, "t": "2026-11-05T16:33:30.434", "t_unix": 1793864010.434, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 30, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -56.77, -30.23], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -31.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793864010.4828851, "measured_before_send": [45.61, 1.31, 31.2, -4.57, -56.77, -30.23], "resends": [0.7], "reached": true, "reached_angles": [45.61, 1.31, 31.2, -4.57, -56.86, -30.76], "reach_err": 2.9, "elapsed_sec": 3.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 218, "t": "2026-11-05T16:33:38.689", "t_unix": 1793864018.69, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 5, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 219, "t": "2026-11-05T16:33:39.109", "t_unix": 1793864019.11, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -2.0, "hold_id": 32, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -30.93], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -33.23], "sent": true, "timeout_sec": 8.0, "t_send": 1793864019.158266, "measured_before_send": [45.61, 1.31, 31.2, -4.57, -58.53, -30.93], "resends": [0.69, 1.38, 2.08], "reached": false, "not_moved": true, "reached_angles": [45.61, 1.31, 31.2, -4.57, -58.53, -30.93], "reach_err": 2.9, "elapsed_sec": 2.74, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 220, "t": "2026-11-05T16:33:42.002", "t_unix": 1793864022.002, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 32, "hold_n": 1, "held_sec": 2.892, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -30.93], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -45.93], "sent": true, "reached": null, "no_check": true, "t_send": 1793864022.022202, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 221, "t": "2026-11-05T16:33:42.420", "t_unix": 1793864022.42, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 32, "hold_n": 2, "held_sec": 3.311, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -44.56], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 1.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -59.56], "sent": true, "reached": null, "no_check": true, "t_send": 1793864022.448221, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 222, "t": "2026-11-05T16:33:42.873", "t_unix": 1793864022.873, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 32, "hold_n": 3, "held_sec": 3.764, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -59.23], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -74.23], "sent": true, "reached": null, "no_check": true, "t_send": 1793864023.2836092, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 223, "t": "2026-11-05T16:33:43.378", "t_unix": 1793864023.379, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 32, "hold_n": 4, "held_sec": 4.27, "accepted": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -59.76], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 224, "t": "2026-11-05T16:33:43.493", "t_unix": 1793864023.493, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 32, "hold_n": 5, "held_sec": 4.384, "accepted": true, "released_during_job": true, "measured_before": [45.61, 1.31, 31.2, -4.57, -58.53, -73.82], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -88.82], "sent": true, "reached": null, "no_check": true, "t_send": 1793864023.862145, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 225, "t": "2026-11-05T16:33:44.218", "t_unix": 1793864024.218, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 32, "halt_joint": 5, "measured_at_request": [45.61, 1.31, 31.2, -4.57, -58.53, -59.76], "t_halt": 1793864024.219109, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 2.19, 31.9, -5.0, -57.04, -85.86], "moved_after_request_deg": [0.0, 0.88, 0.7, -0.43, 1.49, -26.1], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 227, "t": "2026-11-05T16:33:44.990", "t_unix": 1793864024.991, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 5, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 226, "t": "2026-11-05T16:33:44.989", "t_unix": 1793864024.99, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 33, "hold_n": 0, "accepted": true, "measured_before": [45.61, 2.19, 31.9, -5.0, -57.04, -85.86], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -84.86], "sent": true, "timeout_sec": 8.0, "t_send": 1793864025.0350301, "measured_before_send": [45.61, 2.19, 31.9, -5.0, -57.04, -85.86], "resends": [], "reached": true, "reached_angles": [45.61, 1.49, 31.28, -4.92, -56.51, -85.34], "reach_err": 2.9, "elapsed_sec": 1.98, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 228, "t": "2026-11-05T16:33:47.070", "t_unix": 1793864027.071, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 1, "held_sec": 2.081, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -85.34], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 0.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -70.34], "sent": true, "reached": null, "no_check": true, "t_send": 1793864027.091234, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 229, "t": "2026-11-05T16:33:47.174", "t_unix": 1793864027.175, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 2, "held_sec": 2.186, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -84.9], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 230, "t": "2026-11-05T16:33:47.275", "t_unix": 1793864027.276, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 3, "held_sec": 2.287, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -82.44], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 231, "t": "2026-11-05T16:33:47.377", "t_unix": 1793864027.377, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 4, "held_sec": 2.388, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -78.22], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 7.88, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.88, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 232, "t": "2026-11-05T16:33:47.491", "t_unix": 1793864027.492, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 5, "held_sec": 2.503, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -73.21], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.87, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -58.21], "sent": true, "reached": null, "no_check": true, "t_send": 1793864027.556274, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 233, "t": "2026-11-05T16:33:47.608", "t_unix": 1793864027.608, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 6, "held_sec": 2.619, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -70.92], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 12.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 234, "t": "2026-11-05T16:33:47.709", "t_unix": 1793864027.709, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 7, "held_sec": 2.72, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -69.78], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 235, "t": "2026-11-05T16:33:47.826", "t_unix": 1793864027.826, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 8, "held_sec": 2.837, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.92, -56.51, -65.47], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 7.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 236, "t": "2026-11-05T16:33:47.940", "t_unix": 1793864027.941, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 9, "held_sec": 2.951, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -60.64], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -45.64], "sent": true, "reached": null, "no_check": true, "t_send": 1793864027.9678369, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 237, "t": "2026-11-05T16:33:48.060", "t_unix": 1793864028.06, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 10, "held_sec": 3.071, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -58.79], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 238, "t": "2026-11-05T16:33:48.176", "t_unix": 1793864028.177, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 11, "held_sec": 3.188, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -56.86], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 239, "t": "2026-11-05T16:33:48.278", "t_unix": 1793864028.278, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 12, "held_sec": 3.289, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -53.7], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 240, "t": "2026-11-05T16:33:48.395", "t_unix": 1793864028.395, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 13, "held_sec": 3.406, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -47.98], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -32.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793864028.456267, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 241, "t": "2026-11-05T16:33:48.514", "t_unix": 1793864028.514, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 14, "held_sec": 3.525, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -35.41], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [42.71, 0.0, 29.23, -4.36, -57.62, -20.41], "sent": true, "reached": null, "no_check": true, "t_send": 1793864028.873087, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 242, "t": "2026-11-05T16:33:48.929", "t_unix": 1793864028.929, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 15, "held_sec": 3.94, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -33.48], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 243, "t": "2026-11-05T16:33:49.045", "t_unix": 1793864029.045, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 2.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 16, "held_sec": 4.056, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.83, -56.51, -31.9], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 244, "t": "2026-11-05T16:33:49.145", "t_unix": 1793864029.146, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 33, "hold_n": 17, "held_sec": 4.156, "accepted": true, "released_during_job": true, "measured_before": [45.61, 1.49, 31.28, -4.74, -56.51, -28.21], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 7.8, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.8, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 245, "t": "2026-11-05T16:33:49.180", "t_unix": 1793864029.18, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 33, "halt_joint": 5, "measured_at_request": [45.61, 1.49, 31.28, -4.83, -56.51, -31.9], "t_halt": 1793864029.1806269, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [45.61, 1.49, 31.28, -4.74, -56.51, -24.34], "moved_after_request_deg": [0.0, 0.0, 0.0, 0.09, 0.0, 7.56], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 246, "t": "2026-11-05T16:33:49.937", "t_unix": 1793864029.938, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 34, "hold_n": 0, "accepted": true, "measured_before": [45.61, 1.49, 31.28, -4.74, -56.51, -24.34], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [41.71, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": true, "timeout_sec": 8.0, "t_send": 1793864029.978871, "measured_before_send": [45.61, 1.49, 31.28, -4.74, -56.51, -24.34], "resends": [], "reached": true, "reached_angles": [41.57, 1.49, 31.28, -3.77, -56.51, -23.46], "reach_err": 2.05, "elapsed_sec": 0.35, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 247, "t": "2026-11-05T16:33:50.373", "t_unix": 1793864030.374, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 1, "held_sec": 0.437, "accepted": true, "measured_before": [41.83, 1.49, 31.28, -3.95, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 0.12, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [26.83, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": true, "reached": null, "no_check": true, "t_send": 1793864030.395927, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 248, "t": "2026-11-05T16:33:50.488", "t_unix": 1793864030.489, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 2, "held_sec": 0.552, "accepted": true, "measured_before": [41.74, 1.49, 31.28, -3.95, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 249, "t": "2026-11-05T16:33:50.589", "t_unix": 1793864030.59, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 3, "held_sec": 0.653, "accepted": true, "measured_before": [40.07, 1.49, 31.28, -4.21, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 13.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 250, "t": "2026-11-05T16:33:50.690", "t_unix": 1793864030.691, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 4, "held_sec": 0.754, "accepted": true, "measured_before": [36.12, 1.49, 31.28, -4.13, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 9.29, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.29, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 251, "t": "2026-11-05T16:33:50.792", "t_unix": 1793864030.792, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 5, "held_sec": 0.855, "accepted": true, "measured_before": [31.81, 1.49, 31.28, -4.13, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [16.81, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": true, "reached": null, "no_check": true, "t_send": 1793864030.831275, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 252, "t": "2026-11-05T16:33:51.228", "t_unix": 1793864031.228, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 6, "held_sec": 1.292, "accepted": true, "measured_before": [19.77, 1.49, 31.28, -4.13, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [4.77, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": true, "reached": null, "no_check": true, "t_send": 1793864031.255583, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 253, "t": "2026-11-05T16:33:51.344", "t_unix": 1793864031.345, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 7, "held_sec": 1.408, "accepted": true, "measured_before": [16.96, 1.49, 31.28, -4.13, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 254, "t": "2026-11-05T16:33:51.445", "t_unix": 1793864031.445, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 8, "held_sec": 1.508, "accepted": true, "measured_before": [16.25, 1.49, 31.28, -4.13, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 255, "t": "2026-11-05T16:33:51.545", "t_unix": 1793864031.546, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 9, "held_sec": 1.609, "accepted": true, "measured_before": [13.0, 1.49, 31.28, -4.21, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 8.23, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.23, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 256, "t": "2026-11-05T16:33:51.647", "t_unix": 1793864031.647, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 10, "held_sec": 1.71, "accepted": true, "measured_before": [8.96, 1.49, 31.28, -4.21, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-6.04, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": true, "reached": null, "no_check": true, "t_send": 1793864031.676296, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 257, "t": "2026-11-05T16:33:51.761", "t_unix": 1793864031.762, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 34, "hold_n": 11, "held_sec": 1.825, "accepted": true, "released_during_job": true, "measured_before": [-3.25, 1.49, 31.28, -4.21, -56.51, -23.46], "start_source": "hold", "cmd_gap_deg": 2.05, "hold_lead_deg": 2.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-18.25, 0.0, 29.23, -4.36, -57.62, -24.34], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 258, "t": "2026-11-05T16:33:52.129", "t_unix": 1793864032.13, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 34, "halt_joint": 0, "measured_at_request": [8.96, 1.49, 31.28, -4.21, -56.51, -23.46], "t_halt": 1793864032.129714, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-5.53, 2.28, 31.99, -4.13, -55.01, -23.46], "moved_after_request_deg": [-14.49, 0.79, 0.71, 0.08, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 259, "t": "2026-11-05T16:33:52.633", "t_unix": 1793864032.634, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 260, "t": "2026-11-05T16:33:53.659", "t_unix": 1793864033.66, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 262, "t": "2026-11-05T16:33:58.988", "t_unix": 1793864038.989, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 263, "t": "2026-11-05T16:33:59.339", "t_unix": 1793864039.339, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": -2.0, "hold_id": 36, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 261, "t": "2026-11-05T16:33:54.753", "t_unix": 1793864034.754, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 35, "hold_n": 0, "accepted": true, "measured_before": [-5.62, 2.28, 31.99, -4.13, -55.01, -23.46], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-5.53, 0.0, 28.23, -4.36, -57.62, -24.34], "sent": true, "timeout_sec": 8.0, "t_send": 1793864034.80119, "measured_before_send": [-5.62, 2.28, 31.99, -4.13, -55.01, -23.46], "resends": [], "reached": false, "reached_angles": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "reach_err": 1.91, "elapsed_sec": 8.14, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 265, "t": "2026-11-05T16:34:03.345", "t_unix": 1793864043.346, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 266, "t": "2026-11-05T16:34:04.475", "t_unix": 1793864044.475, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 38, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 264, "t": "2026-11-05T16:34:03.343", "t_unix": 1793864043.344, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 37, "hold_n": 0, "accepted": true, "measured_before": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 1.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-5.53, 0.0, 29.14, -4.36, -57.62, -24.34], "sent": true, "timeout_sec": 8.0, "t_send": 1793864043.3893728, "measured_before_send": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "resends": [0.69, 1.39, 2.12], "reached": false, "not_moved": true, "reached_angles": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "reach_err": 1.31, "elapsed_sec": 2.81, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 268, "t": "2026-11-05T16:34:09.244", "t_unix": 1793864049.245, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 40, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 269, "t": "2026-11-05T16:34:11.075", "t_unix": 1793864051.076, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 270, "t": "2026-11-05T16:34:11.495", "t_unix": 1793864051.495, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 41, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 267, "t": "2026-11-05T16:34:06.797", "t_unix": 1793864046.798, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 39, "hold_n": 0, "accepted": true, "measured_before": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.31, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-5.53, 0.0, 30.14, -4.36, -57.62, -24.34], "sent": true, "timeout_sec": 8.0, "t_send": 1793864046.837313, "measured_before_send": [-5.62, 1.31, 30.14, -4.13, -58.62, -23.37], "resends": [], "reached": false, "reached_angles": [-5.62, 1.31, 30.67, -4.21, -58.09, -23.29], "reach_err": 1.31, "elapsed_sec": 8.15, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 271, "t": "2026-11-05T16:34:39.450", "t_unix": 1793864079.45, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 3, "step_deg": 1.0, "execute": true, "held_sec": 1.004, "accepted": true, "measured_before": [-5.62, 1.31, 30.67, -4.21, -57.83, -23.29], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 10.67, "t_send": 1793864079.522689, "measured_before_send": [-5.62, 1.31, 30.67, -4.21, -57.83, -23.29], "resends": [], "reached": true, "reached_angles": [-0.26, 1.31, 1.84, -0.79, 0.43, -28.74], "reach_err": 1.84, "elapsed_sec": 1.42, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 272, "t": "2026-11-05T16:34:57.945", "t_unix": 1793864097.946, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 274, "t": "2026-11-05T16:35:01.920", "t_unix": 1793864101.921, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 275, "t": "2026-11-05T16:35:03.740", "t_unix": 1793864103.74, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 43, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 276, "t": "2026-11-05T16:35:03.740", "t_unix": 1793864103.741, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 277, "t": "2026-11-05T16:35:04.637", "t_unix": 1793864104.638, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 44, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 273, "t": "2026-11-05T16:34:59.811", "t_unix": 1793864099.812, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 42, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, 0.43, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -1.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864099.864758, "measured_before_send": [-0.26, 1.31, 1.84, -0.26, 0.43, -29.7], "resends": [0.69, 1.41], "reached": true, "reached_angles": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "reach_err": 1.84, "elapsed_sec": 5.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 279, "t": "2026-11-05T16:35:09.548", "t_unix": 1793864109.548, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 46, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 278, "t": "2026-11-05T16:35:06.485", "t_unix": 1793864106.486, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 45, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864106.5320032, "measured_before_send": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "resends": [0.71, 1.43, 2.13], "reached": false, "not_moved": true, "reached_angles": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "reach_err": 1.84, "elapsed_sec": 2.78, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 280, "t": "2026-11-05T16:35:10.249", "t_unix": 1793864110.249, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 47, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -1.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864110.289439, "measured_before_send": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "resends": [], "reached": true, "reached_angles": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "reach_err": 1.84, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 281, "t": "2026-11-05T16:35:10.656", "t_unix": 1793864110.656, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 1, "held_sec": 0.408, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, -1.14, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 0.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -16.14, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864110.677637, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 282, "t": "2026-11-05T16:35:11.110", "t_unix": 1793864111.111, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 2, "held_sec": 0.862, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, -13.44, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 2.7, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -28.44, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864111.1516001, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 283, "t": "2026-11-05T16:35:11.228", "t_unix": 1793864111.228, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 3, "held_sec": 0.98, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.26, -25.22, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -40.22, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864111.6140091, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 284, "t": "2026-11-05T16:35:11.985", "t_unix": 1793864111.986, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 4, "held_sec": 1.737, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -39.37, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -54.37, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864112.4114208, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 285, "t": "2026-11-05T16:35:12.462", "t_unix": 1793864112.463, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 5, "held_sec": 2.214, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -39.37, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 286, "t": "2026-11-05T16:35:12.564", "t_unix": 1793864112.565, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 6, "held_sec": 2.316, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -39.37, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 287, "t": "2026-11-05T16:35:12.665", "t_unix": 1793864112.665, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 7, "held_sec": 2.417, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -39.37, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 288, "t": "2026-11-05T16:35:12.765", "t_unix": 1793864112.766, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 8, "held_sec": 2.517, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -49.21, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 5.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 289, "t": "2026-11-05T16:35:12.882", "t_unix": 1793864112.883, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 9, "held_sec": 2.635, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -49.21, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 5.16, "command": [0.0, 0.0, 0.0, 0.0, -54.37, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864112.942542, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 290, "t": "2026-11-05T16:35:12.997", "t_unix": 1793864112.998, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 10, "held_sec": 2.749, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, -0.17, -53.96, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -68.96, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864113.016507, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 291, "t": "2026-11-05T16:35:13.415", "t_unix": 1793864113.415, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 11, "held_sec": 3.167, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, 0.17, -66.0, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -81.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864113.448403, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 292, "t": "2026-11-05T16:35:13.515", "t_unix": 1793864113.516, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 12, "held_sec": 3.267, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, 0.35, -68.64, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 12.36, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.36, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 293, "t": "2026-11-05T16:35:13.616", "t_unix": 1793864113.616, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 13, "held_sec": 3.368, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, 0.35, -68.73, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 294, "t": "2026-11-05T16:35:13.717", "t_unix": 1793864113.718, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 14, "held_sec": 3.469, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, 0.35, -68.73, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 295, "t": "2026-11-05T16:35:13.834", "t_unix": 1793864113.834, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 15, "held_sec": 3.586, "accepted": true, "measured_before": [-0.26, 1.31, 1.84, 0.35, -68.73, -29.7], "start_source": "hold", "cmd_gap_deg": 1.84, "hold_lead_deg": 12.27, "command": [0.0, 0.0, 0.0, 0.0, -81.0, -30.0], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864113.857716, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 296, "t": "2026-11-05T16:35:14.257", "t_unix": 1793864114.258, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 16, "held_sec": 4.009, "accepted": true, "measured_before": [-0.26, 1.31, 1.75, 0.43, -80.59, -29.7], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 0.41, "clip": [{"joint": 4, "want": -95.59, "cmd": -90.0, "limit": "J4_SAFE", "bound": -90.0}], "refused": [], "limit_ja": "j4 を -95.59° → -90.00° に切った（J4_SAFE -90.00°）", "limit_ascii": "j4 clipped -95.59->-90.00 (J4_SAFE -90.00)", "command": [0.0, 0.0, 0.0, 0.0, -90.0, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793864114.326835, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 297, "t": "2026-11-05T16:35:14.428", "t_unix": 1793864114.428, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 47, "hold_n": 17, "held_sec": 4.18, "accepted": true, "measured_before": [-0.26, 1.31, 1.75, 0.43, -81.56, -29.7], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 8.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 298, "t": "2026-11-05T16:35:14.528", "t_unix": 1793864114.528, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 47, "halt_joint": 4, "measured_at_request": [-0.26, 1.31, 1.75, 0.43, -81.56, -29.7], "t_halt": 1793864114.5288498, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-0.26, 1.23, 1.75, 0.43, -88.24, -29.7], "moved_after_request_deg": [0.0, -0.08, 0.0, 0.0, -6.68, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 300, "t": "2026-11-05T16:35:15.980", "t_unix": 1793864115.981, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 301, "t": "2026-11-05T16:35:17.847", "t_unix": 1793864117.847, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 49, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 299, "t": "2026-11-05T16:35:15.378", "t_unix": 1793864115.379, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 48, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.23, 1.75, 0.43, -88.33, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -87.24, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864115.427357, "measured_before_send": [-0.26, 1.23, 1.75, 0.43, -88.33, -29.7], "resends": [0.69, 1.41, 2.13], "reached": false, "not_moved": true, "reached_angles": [-0.26, 1.23, 1.75, 0.43, -88.33, -29.7], "reach_err": 1.75, "elapsed_sec": 2.79, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 302, "t": "2026-11-05T16:35:18.284", "t_unix": 1793864118.285, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 304, "t": "2026-11-05T16:35:24.353", "t_unix": 1793864124.354, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 303, "t": "2026-11-05T16:35:21.774", "t_unix": 1793864121.774, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 50, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.23, 1.75, 0.35, -88.33, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -86.24, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864121.815658, "measured_before_send": [-0.26, 1.23, 1.75, 0.35, -88.33, -29.7], "resends": [], "reached": true, "reached_angles": [-0.26, 1.14, 1.75, 0.35, -86.74, -29.7], "reach_err": 1.75, "elapsed_sec": 4.91, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 305, "t": "2026-11-05T16:35:29.036", "t_unix": 1793864129.037, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 4, "step_deg": 1.0, "execute": true, "held_sec": 1.001, "accepted": true, "measured_before": [-0.26, 1.14, 1.75, 0.35, -86.66, -29.7], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 15.0, "t_send": 1793864129.104382, "measured_before_send": [-0.26, 1.14, 1.75, 0.35, -86.66, -29.7], "resends": [], "reached": true, "reached_angles": [-0.26, 1.14, 1.75, 0.35, 1.93, -29.79], "reach_err": 1.93, "elapsed_sec": 2.13, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 307, "t": "2026-11-05T16:35:46.087", "t_unix": 1793864146.088, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 52, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 306, "t": "2026-11-05T16:35:44.084", "t_unix": 1793864144.085, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 51, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.14, 1.75, 0.35, -0.79, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.0, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864144.133732, "measured_before_send": [-0.26, 1.14, 1.75, 0.35, -0.79, -29.79], "resends": [0.7, 1.4, 2.12], "reached": false, "not_moved": true, "reached_angles": [-0.26, 1.14, 1.75, 0.26, -0.79, -29.79], "reach_err": 1.75, "elapsed_sec": 2.83, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 308, "t": "2026-11-05T16:35:49.138", "t_unix": 1793864149.139, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 309, "t": "2026-11-05T16:35:49.640", "t_unix": 1793864149.64, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 311, "t": "2026-11-05T16:35:51.337", "t_unix": 1793864151.338, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 312, "t": "2026-11-05T16:35:51.787", "t_unix": 1793864151.788, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": -2.0, "hold_id": 54, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 313, "t": "2026-11-05T16:35:53.531", "t_unix": 1793864153.532, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 55, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 314, "t": "2026-11-05T16:35:53.932", "t_unix": 1793864153.932, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 56, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 315, "t": "2026-11-05T16:35:54.199", "t_unix": 1793864154.199, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 57, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 316, "t": "2026-11-05T16:35:54.441", "t_unix": 1793864154.441, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 58, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 317, "t": "2026-11-05T16:35:54.709", "t_unix": 1793864154.71, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 59, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 318, "t": "2026-11-05T16:35:55.144", "t_unix": 1793864155.145, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 60, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 319, "t": "2026-11-05T16:35:55.430", "t_unix": 1793864155.43, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 61, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 320, "t": "2026-11-05T16:35:55.634", "t_unix": 1793864155.634, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 62, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 321, "t": "2026-11-05T16:35:55.886", "t_unix": 1793864155.886, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 63, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 322, "t": "2026-11-05T16:35:56.140", "t_unix": 1793864156.14, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 64, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 323, "t": "2026-11-05T16:35:56.445", "t_unix": 1793864156.445, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 65, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 324, "t": "2026-11-05T16:35:57.049", "t_unix": 1793864157.049, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 66, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 325, "t": "2026-11-05T16:35:57.700", "t_unix": 1793864157.701, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 67, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 326, "t": "2026-11-05T16:36:01.241", "t_unix": 1793864161.241, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 68, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 310, "t": "2026-11-05T16:35:50.597", "t_unix": 1793864150.597, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 53, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.14, 1.75, 0.26, -0.79, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-2.0, 0.0, 0.0, 0.0, 0.0, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793864150.640255, "measured_before_send": [-0.26, 1.14, 1.75, 0.26, -0.79, -29.79], "resends": [13.0], "reached": false, "reached_angles": [-0.26, 1.14, 1.75, 0.26, -0.26, -29.79], "reach_err": 1.75, "elapsed_sec": 13.0, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 16:36 の記録 runs/experiments/gamepad_teleop/teleop_20261105_163620/meta.json

```json
{
  "run_stem": "teleop_20261105_163620",
  "started_at": "2026-11-05T16:36:22",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T16:36:27"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    -0.26,
    1.14,
    1.75,
    0.26,
    -0.26,
    -29.79
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.5,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "72d9d964c770e3c8f8c95d98600d41f607624dce",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "5e84320facb48ece2464b4875b263342d900d97e4d16418f155e1f73cff94d9b",
  "ended_at": "2026-11-05T16:51:52",
  "end_reason": "ctrl_c",
  "n_sent": 152
}
```

### 16:36 の記録 runs/experiments/gamepad_teleop/teleop_20261105_163620/log.jsonl（386行）

```json
{"seq": 1, "t": "2026-11-05T16:36:30.051", "t_unix": 1793864190.052, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [-0.26, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.26, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864190.092095, "measured_before_send": [-0.26, 1.14, 1.75, 0.26, -0.26, -29.79], "resends": [], "reached": true, "reached_angles": [-1.05, 1.14, 1.75, 0.26, -0.26, -29.79], "reach_err": 0.21, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T16:36:30.486", "t_unix": 1793864190.487, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.436, "accepted": true, "measured_before": [-0.96, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.3, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-15.96, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864190.509464, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T16:36:30.587", "t_unix": 1793864190.588, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.537, "accepted": true, "measured_before": [-1.05, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T16:36:30.689", "t_unix": 1793864190.689, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.638, "accepted": true, "measured_before": [-15.11, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-30.11, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864191.09264, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T16:36:31.499", "t_unix": 1793864191.5, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 1.449, "accepted": true, "measured_before": [-26.1, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 4.01, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-41.1, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864191.519255, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T16:36:31.884", "t_unix": 1793864191.884, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 1.831, "accepted": true, "measured_before": [-36.03, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T16:36:31.998", "t_unix": 1793864191.998, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 1.947, "accepted": true, "measured_before": [-40.34, 1.14, 1.75, 0.26, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-55.34, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864192.040844, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T16:36:32.100", "t_unix": 1793864192.101, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 2.05, "accepted": true, "measured_before": [-41.66, 1.14, 1.75, 0.17, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T16:36:32.203", "t_unix": 1793864192.204, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 2.153, "accepted": true, "measured_before": [-41.13, 1.14, 1.75, 0.17, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T16:36:32.304", "t_unix": 1793864192.304, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 2.253, "accepted": true, "measured_before": [-44.56, 1.14, 1.75, 0.17, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T16:36:32.405", "t_unix": 1793864192.405, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 2.354, "accepted": true, "measured_before": [-48.86, 1.14, 1.75, 0.17, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 6.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T16:36:32.505", "t_unix": 1793864192.506, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 11, "held_sec": 2.455, "accepted": true, "measured_before": [-53.08, 1.14, 1.75, 0.17, -0.26, -29.79], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 2.26, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-68.08, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864192.570055, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T16:36:32.623", "t_unix": 1793864192.624, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 12, "held_sec": 2.573, "accepted": true, "measured_before": [-64.33, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-79.33, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864192.9980748, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T16:36:33.429", "t_unix": 1793864193.43, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 13, "held_sec": 3.379, "accepted": true, "measured_before": [-78.48, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-93.48, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864193.476817, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T16:36:33.545", "t_unix": 1793864193.545, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 14, "held_sec": 3.494, "accepted": true, "measured_before": [-79.62, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T16:36:33.646", "t_unix": 1793864193.647, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 15, "held_sec": 3.596, "accepted": true, "measured_before": [-79.71, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T16:36:33.746", "t_unix": 1793864193.747, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 16, "held_sec": 3.696, "accepted": true, "measured_before": [-93.25, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 0.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-108.25, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864194.1075509, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T16:36:34.165", "t_unix": 1793864194.166, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 17, "held_sec": 4.115, "accepted": true, "measured_before": [-93.16, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 15.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T16:36:34.282", "t_unix": 1793864194.282, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 18, "held_sec": 4.231, "accepted": true, "measured_before": [-93.95, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T16:36:34.382", "t_unix": 1793864194.382, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 19, "held_sec": 4.332, "accepted": true, "released_during_job": true, "measured_before": [-97.38, 1.14, 1.75, 0.17, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T16:36:34.448", "t_unix": 1793864194.449, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-93.95, 1.14, 1.75, 0.17, -0.26, -29.88], "t_halt": 1793864194.458165, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-102.3, 1.84, 2.37, 0.08, 0.96, -29.88], "moved_after_request_deg": [-8.35, 0.7, 0.62, -0.09, 1.22, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T16:36:35.268", "t_unix": 1793864195.269, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 2, "hold_n": 0, "accepted": true, "measured_before": [-100.98, 2.1, 2.72, 0.0, 1.23, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-101.3, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864195.345592, "measured_before_send": [-100.98, 2.1, 2.72, 0.0, 1.23, -29.88], "resends": [], "reached": true, "reached_angles": [-100.98, 2.1, 2.72, 0.0, 1.23, -29.88], "reach_err": 1.49, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T16:36:35.668", "t_unix": 1793864195.669, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 1, "held_sec": 0.401, "accepted": true, "measured_before": [-102.21, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-87.21, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864195.705159, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T16:36:36.104", "t_unix": 1793864196.105, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 2, "held_sec": 0.836, "accepted": true, "measured_before": [-90.96, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-75.96, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864196.1312199, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T16:36:36.220", "t_unix": 1793864196.22, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 3, "held_sec": 0.952, "accepted": true, "measured_before": [-87.09, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T16:36:36.320", "t_unix": 1793864196.321, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 4, "held_sec": 1.053, "accepted": true, "measured_before": [-87.09, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T16:36:36.421", "t_unix": 1793864196.421, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 5, "held_sec": 1.153, "accepted": true, "measured_before": [-83.75, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 7.79, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.79, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T16:36:36.535", "t_unix": 1793864196.536, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 6, "held_sec": 1.268, "accepted": true, "measured_before": [-79.18, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-64.18, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864196.569642, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T16:36:36.637", "t_unix": 1793864196.637, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 7, "held_sec": 1.369, "accepted": true, "measured_before": [-75.67, 1.66, 2.02, 0.0, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T16:36:36.886", "t_unix": 1793864196.887, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T16:36:36.753", "t_unix": 1793864196.753, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 8, "held_sec": 1.485, "accepted": true, "measured_before": [-64.33, 1.66, 2.02, -0.08, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.15, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-49.33, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864197.1208289, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T16:36:37.500", "t_unix": 1793864197.5, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 9, "held_sec": 2.232, "accepted": true, "measured_before": [-54.84, 1.66, 2.02, -0.08, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 5.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T16:36:37.601", "t_unix": 1793864197.602, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 10, "held_sec": 2.333, "accepted": true, "measured_before": [-50.88, 1.66, 2.02, -0.08, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.88, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864197.623894, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T16:36:37.718", "t_unix": 1793864197.718, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 11, "held_sec": 2.45, "accepted": true, "measured_before": [-48.95, 1.66, 2.02, -0.08, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T16:36:37.821", "t_unix": 1793864197.822, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 12, "held_sec": 2.553, "accepted": true, "measured_before": [-47.9, 1.66, 2.02, -0.17, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T16:36:37.938", "t_unix": 1793864197.939, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 13, "held_sec": 2.671, "accepted": true, "measured_before": [-41.92, 1.58, 2.02, -0.17, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 6.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T16:36:38.039", "t_unix": 1793864198.039, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 14, "held_sec": 2.771, "accepted": true, "measured_before": [-38.75, 1.58, 2.02, -0.17, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 2.87, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.75, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864198.070333, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T16:36:38.154", "t_unix": 1793864198.154, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 15, "held_sec": 2.886, "accepted": true, "measured_before": [-35.33, 1.58, 2.02, -0.17, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T16:36:38.255", "t_unix": 1793864198.256, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 16, "held_sec": 2.988, "accepted": true, "measured_before": [-35.33, 1.58, 2.02, -0.17, 1.23, -29.88], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T16:36:40.170", "t_unix": 1793864200.171, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 3, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T16:36:42.233", "t_unix": 1793864202.234, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 4, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T16:36:44.703", "t_unix": 1793864204.704, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T16:36:45.591", "t_unix": 1793864205.591, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 5, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T16:36:38.356", "t_unix": 1793864198.356, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 17, "held_sec": 3.088, "accepted": true, "released_during_job": true, "measured_before": [-23.99, 1.58, 2.02, -0.35, 0.17, -30.05], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 0.24, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-8.99, 1.14, 1.75, 0.26, -0.26, -29.79], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T16:36:45.995", "t_unix": 1793864205.996, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 2, "halt_joint": 0, "measured_at_request": [-35.33, 1.58, 2.02, -0.17, 1.23, -29.88], "t_halt": 1793864205.997497, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-23.99, 2.72, 2.9, -0.35, 1.75, -29.97], "moved_after_request_deg": [11.34, 1.14, 0.88, -0.18, 0.52, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T16:36:47.538", "t_unix": 1793864207.538, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 6, "hold_n": 0, "accepted": true, "measured_before": [-23.99, 2.72, 2.98, -0.35, 1.93, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, 0.75, 0.26, -0.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864207.587347, "measured_before_send": [-23.99, 2.72, 2.98, -0.35, 1.93, -29.97], "resends": [0.35, 0.7], "reached": false, "not_moved": true, "reached_angles": [-23.99, 1.23, 2.98, -0.35, 1.93, -29.97], "reach_err": 2.23, "elapsed_sec": 1.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T16:36:48.645", "t_unix": 1793864208.646, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 1, "held_sec": 1.108, "accepted": true, "measured_before": [-23.99, 1.23, 2.98, -0.35, 1.93, -29.97], "start_source": "hold", "cmd_gap_deg": 2.19, "hold_lead_deg": 2.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -12.02, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864208.672074, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T16:36:48.747", "t_unix": 1793864208.748, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 2, "held_sec": 1.21, "accepted": true, "measured_before": [-23.99, 1.23, 2.98, -0.35, 1.93, -29.97], "start_source": "hold", "cmd_gap_deg": 2.19, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T16:36:48.848", "t_unix": 1793864208.849, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 3, "held_sec": 1.311, "accepted": true, "measured_before": [-23.99, 1.23, -10.28, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 1.74, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -25.28, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864209.2166169, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T16:36:49.267", "t_unix": 1793864209.268, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 4, "held_sec": 1.73, "accepted": true, "measured_before": [-23.99, 1.23, -10.54, -0.35, 1.49, -29.97], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 14.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T16:36:49.368", "t_unix": 1793864209.368, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 5, "held_sec": 1.831, "accepted": true, "measured_before": [-23.99, 1.23, -10.81, -0.35, 1.49, -29.97], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T16:36:49.470", "t_unix": 1793864209.47, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 6, "held_sec": 1.933, "accepted": true, "measured_before": [-23.99, 1.23, -14.32, -0.35, 1.49, -29.97], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 10.96, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.96, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T16:36:49.587", "t_unix": 1793864209.587, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 7, "held_sec": 2.05, "accepted": true, "measured_before": [-23.99, 1.23, -14.32, -0.35, 1.49, -29.97], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 10.96, "command": [-23.99, 1.14, -25.28, 0.26, -0.26, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864209.642781, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T16:36:49.704", "t_unix": 1793864209.705, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 8, "held_sec": 2.167, "accepted": true, "measured_before": [-23.99, 1.23, -23.37, -0.35, 1.49, -29.97], "start_source": "hold", "cmd_gap_deg": 1.75, "hold_lead_deg": 1.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -38.37, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864209.733963, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T16:36:50.141", "t_unix": 1793864210.141, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 9, "held_sec": 2.604, "accepted": true, "measured_before": [-23.99, 1.23, -34.18, -0.35, 1.4, -29.97], "start_source": "hold", "cmd_gap_deg": 1.66, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -49.18, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864210.1726751, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T16:36:50.258", "t_unix": 1793864210.259, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 10, "held_sec": 2.721, "accepted": true, "measured_before": [-23.99, 1.14, -35.68, -0.35, 1.4, -29.88], "start_source": "hold", "cmd_gap_deg": 1.66, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T16:36:50.375", "t_unix": 1793864210.375, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 11, "held_sec": 2.838, "accepted": true, "measured_before": [-23.99, 1.14, -35.68, -0.35, 0.7, -29.88], "start_source": "hold", "cmd_gap_deg": 0.96, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T16:36:50.477", "t_unix": 1793864210.477, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 12, "held_sec": 2.94, "accepted": true, "measured_before": [-23.99, 1.14, -35.68, -0.35, 0.7, -29.88], "start_source": "hold", "cmd_gap_deg": 0.96, "hold_lead_deg": 13.5, "command": [-23.99, 1.14, -49.18, 0.26, -0.26, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864210.5422962, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T16:36:50.928", "t_unix": 1793864210.928, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 6, "hold_n": 13, "held_sec": 3.391, "accepted": true, "released_during_job": true, "measured_before": [-23.99, 1.05, -48.25, -0.35, 0.61, -29.88], "start_source": "hold", "cmd_gap_deg": 0.87, "hold_lead_deg": 0.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -63.25, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864210.9513578, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T16:36:51.365", "t_unix": 1793864211.365, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 6, "halt_joint": 2, "measured_at_request": [-23.99, 1.14, -35.68, -0.35, 0.7, -29.88], "t_halt": 1793864211.36781, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-23.99, 0.7, -61.78, -0.35, -0.43, -29.88], "moved_after_request_deg": [0.0, -0.44, -26.1, 0.0, -1.13, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T16:36:51.868", "t_unix": 1793864211.868, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 7, "hold_n": 0, "accepted": true, "measured_before": [-23.99, 0.61, -61.78, -0.35, -0.87, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -60.78, 0.26, -0.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864211.93411, "measured_before_send": [-23.99, 0.61, -61.78, -0.35, -0.87, -29.88], "resends": [], "reached": true, "reached_angles": [-23.99, 0.61, -60.29, -0.35, -0.87, -29.88], "reach_err": 0.61, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T16:36:52.326", "t_unix": 1793864212.326, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 1, "held_sec": 0.458, "accepted": true, "measured_before": [-23.99, 0.61, -60.29, -0.35, -0.87, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 0.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -45.29, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864212.346595, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T16:36:52.763", "t_unix": 1793864212.763, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 2, "held_sec": 0.895, "accepted": true, "measured_before": [-23.99, 0.61, -53.17, -0.35, -0.87, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 7.88, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.88, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T16:36:52.865", "t_unix": 1793864212.866, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 3, "held_sec": 0.997, "accepted": true, "measured_before": [-23.99, 0.7, -44.47, -0.35, -0.87, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 0.82, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -29.47, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864213.216864, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T16:36:53.619", "t_unix": 1793864213.62, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 4, "held_sec": 1.752, "accepted": true, "measured_before": [-23.99, 0.7, -34.01, -0.35, -0.87, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 4.54, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -19.01, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864213.6601448, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T16:36:53.721", "t_unix": 1793864213.721, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 5, "held_sec": 1.853, "accepted": true, "measured_before": [-23.99, 0.7, -30.23, -0.35, -0.87, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T16:36:53.821", "t_unix": 1793864213.821, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 6, "held_sec": 1.953, "accepted": true, "measured_before": [-23.99, 0.7, -30.23, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T16:36:53.936", "t_unix": 1793864213.937, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 7, "held_sec": 2.069, "accepted": true, "measured_before": [-23.99, 0.7, -30.23, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T16:36:54.053", "t_unix": 1793864214.054, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 8, "held_sec": 2.186, "accepted": true, "measured_before": [-23.99, 0.7, -22.67, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, -7.67, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864214.0874932, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T16:36:54.155", "t_unix": 1793864214.156, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 9, "held_sec": 2.288, "accepted": true, "measured_before": [-23.99, 0.7, -18.8, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T16:36:54.257", "t_unix": 1793864214.257, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 10, "held_sec": 2.389, "accepted": true, "measured_before": [-23.99, 0.7, -18.01, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T16:36:54.359", "t_unix": 1793864214.359, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 11, "held_sec": 2.491, "accepted": true, "measured_before": [-23.99, 0.7, -18.01, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T16:36:54.459", "t_unix": 1793864214.459, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 12, "held_sec": 2.591, "accepted": true, "measured_before": [-23.99, 0.7, -18.01, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 10.34, "command": [-23.99, 1.14, -7.67, 0.26, -0.26, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864214.479249, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T16:36:54.572", "t_unix": 1793864214.573, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 13, "held_sec": 2.705, "accepted": true, "measured_before": [-23.99, 0.7, -17.92, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T16:36:54.673", "t_unix": 1793864214.673, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 14, "held_sec": 2.805, "accepted": true, "measured_before": [-23.99, 0.7, -16.34, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T16:36:54.774", "t_unix": 1793864214.775, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 15, "held_sec": 2.907, "accepted": true, "measured_before": [-23.99, 0.7, -12.21, -0.35, -0.79, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 4.54, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-23.99, 1.14, 2.79, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864214.810718, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T16:36:54.875", "t_unix": 1793864214.876, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 16, "held_sec": 3.008, "accepted": true, "measured_before": [-23.99, 0.7, -8.52, -0.35, -0.61, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T16:36:54.976", "t_unix": 1793864214.977, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 7, "hold_n": 17, "held_sec": 3.108, "accepted": true, "measured_before": [-23.99, 0.79, -6.5, -0.35, -0.61, -29.88], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 9.29, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.29, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T16:36:55.026", "t_unix": 1793864215.026, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 7, "halt_joint": 2, "measured_at_request": [-23.99, 0.79, -6.5, -0.35, -0.61, -29.88], "t_halt": 1793864215.02702, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-23.99, 0.79, -3.69, -0.35, -0.61, -29.88], "moved_after_request_deg": [0.0, 0.0, 2.81, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T16:36:56.351", "t_unix": 1793864216.351, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T16:36:58.178", "t_unix": 1793864218.179, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T16:36:58.932", "t_unix": 1793864218.933, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 8, "hold_n": 0, "accepted": true, "measured_before": [-23.99, 0.79, 3.69, -0.35, -0.43, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 7.38, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-22.99, 1.14, -3.69, 0.26, -0.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864218.99542, "measured_before_send": [-23.99, 0.79, 3.69, -0.35, -0.43, -29.88], "resends": [], "reached": true, "reached_angles": [-22.5, 0.79, 3.69, -0.35, -0.35, -29.88], "reach_err": 7.38, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T16:36:59.339", "t_unix": 1793864219.339, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 1, "held_sec": 0.406, "accepted": true, "measured_before": [-22.93, 0.79, 3.69, -0.35, -0.26, -29.88], "start_source": "mixed", "cmd_gap_deg": 7.38, "hold_lead_deg": 0.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-7.93, 1.14, -3.69, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864219.369018, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T16:36:59.441", "t_unix": 1793864219.441, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 2, "held_sec": 0.509, "accepted": true, "measured_before": [-13.09, 0.79, 3.69, -0.35, -0.26, -29.88], "start_source": "mixed", "cmd_gap_deg": 7.38, "hold_lead_deg": 5.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T16:36:59.851", "t_unix": 1793864219.851, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 8, "hold_n": 3, "held_sec": 0.919, "accepted": true, "released_during_job": true, "measured_before": [-9.14, 0.79, 3.69, -0.35, -0.26, -29.88], "start_source": "mixed", "cmd_gap_deg": 7.38, "hold_lead_deg": 1.21, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [5.86, 1.14, -3.69, 0.26, -0.26, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864219.8957691, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T16:37:00.271", "t_unix": 1793864220.271, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 8, "halt_joint": 0, "measured_at_request": [-13.09, 0.79, 3.69, -0.35, -0.26, -29.88], "t_halt": 1793864220.271929, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [3.6, 1.58, 4.39, -0.43, 1.14, -29.97], "moved_after_request_deg": [16.69, 0.79, 0.7, -0.08, 1.4, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T16:37:00.541", "t_unix": 1793864220.541, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [2.81, 1.66, 4.65, -0.43, 1.31, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -1.26, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864220.589647, "measured_before_send": [2.9, 1.66, 4.65, -0.43, 1.31, -29.88], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.66, 4.65, -0.43, 1.23, -29.88], "reach_err": 8.34, "elapsed_sec": 1.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T16:37:01.669", "t_unix": 1793864221.67, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 9, "hold_n": 1, "held_sec": 1.129, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.43, 1.23, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 2.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -13.77, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864221.696811, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T16:37:01.786", "t_unix": 1793864221.786, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 9, "hold_n": 2, "held_sec": 1.245, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.43, 0.79, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T16:37:01.887", "t_unix": 1793864221.888, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 9, "hold_n": 3, "held_sec": 1.347, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.43, 0.79, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T16:37:02.004", "t_unix": 1793864222.005, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 9, "hold_n": 4, "held_sec": 1.464, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.66, 4.65, -0.43, 0.79, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 14.56, "command": [3.6, 1.14, -3.69, 0.26, -13.77, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864222.06818, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T16:37:02.107", "t_unix": 1793864222.107, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 9, "halt_joint": 4, "measured_at_request": [5.09, 1.66, 4.65, -0.43, 0.79, -29.88], "t_halt": 1793864222.107723, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.66, 4.65, -0.52, -11.68, -29.88], "moved_after_request_deg": [0.0, 0.0, 0.0, -0.09, -12.47, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T16:37:02.461", "t_unix": 1793864222.461, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -11.77, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -12.68, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864222.5191638, "measured_before_send": [5.09, 1.66, 4.65, -0.52, -11.77, -29.88], "resends": [0.35, 0.71], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.66, 4.65, -0.52, -11.77, -29.88], "reach_err": 8.34, "elapsed_sec": 1.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T16:37:03.615", "t_unix": 1793864223.615, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 1, "held_sec": 1.154, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -11.77, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 0.91, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -26.77, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864223.658184, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T16:37:04.061", "t_unix": 1793864224.062, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 2, "held_sec": 1.6, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -23.37, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 3.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -38.37, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864224.098599, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T16:37:04.198", "t_unix": 1793864224.198, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 3, "held_sec": 1.737, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -25.31, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 13.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T16:37:04.298", "t_unix": 1793864224.299, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 4, "held_sec": 1.838, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -26.54, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T16:37:04.399", "t_unix": 1793864224.399, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 5, "held_sec": 1.938, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -31.81, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 6.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T16:37:04.500", "t_unix": 1793864224.501, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 6, "held_sec": 2.04, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -35.5, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 2.87, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -50.5, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864224.5284731, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T16:37:04.601", "t_unix": 1793864224.602, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 7, "held_sec": 2.14, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -37.0, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T16:37:04.702", "t_unix": 1793864224.703, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 8, "held_sec": 2.242, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -37.7, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 12.8, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.8, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T16:37:04.804", "t_unix": 1793864224.804, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 9, "held_sec": 2.343, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -42.01, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 8.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T16:37:04.905", "t_unix": 1793864224.906, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 10, "held_sec": 2.445, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.52, -46.58, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 3.92, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -61.58, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864224.937248, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T16:37:05.389", "t_unix": 1793864225.39, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 11, "held_sec": 2.929, "accepted": true, "measured_before": [5.09, 1.66, 4.65, -0.43, -60.11, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 1.47, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -75.11, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864225.451162, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T16:37:05.505", "t_unix": 1793864225.506, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 12, "held_sec": 3.045, "accepted": true, "measured_before": [5.09, 1.58, 4.65, -0.43, -72.59, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -87.59, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864225.911443, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T16:37:05.967", "t_unix": 1793864225.968, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 13, "held_sec": 3.507, "accepted": true, "measured_before": [5.09, 1.49, 4.65, -0.43, -74.53, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 13.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T16:37:06.068", "t_unix": 1793864226.068, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 10, "hold_n": 14, "held_sec": 3.607, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 4.65, -0.35, -87.36, -29.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 0.23, "clip": [{"joint": 4, "want": -102.36, "cmd": -90.0, "limit": "J4_SAFE", "bound": -90.0}], "refused": [], "limit_ja": "j4 を -102.36° → -90.00° に切った（J4_SAFE -90.00°）", "limit_ascii": "j4 clipped -102.36->-90.00 (J4_SAFE -90.00)", "command": [3.6, 1.14, -3.69, 0.26, -90.0, -29.79], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T16:37:06.584", "t_unix": 1793864226.585, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 11, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T16:37:06.450", "t_unix": 1793864226.45, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 10, "halt_joint": 4, "measured_at_request": [5.09, 1.49, 4.65, -0.43, -74.53, -29.88], "t_halt": 1793864226.450455, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.37, 5.36, -0.35, -87.09, -29.88], "moved_after_request_deg": [0.0, 0.88, 0.71, 0.08, -12.56, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T16:37:10.013", "t_unix": 1793864230.013, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 12, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.37, 5.36, -0.35, -87.09, -29.88], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 9.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -86.09, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864230.059288, "measured_before_send": [5.09, 2.37, 5.36, -0.35, -87.09, -29.88], "resends": [], "reached": true, "reached_angles": [5.09, 1.31, 5.18, -0.35, -86.57, -29.88], "reach_err": 8.87, "elapsed_sec": 0.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T16:37:10.415", "t_unix": 1793864230.415, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 1, "held_sec": 0.402, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -86.57, -29.88], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 0.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -71.57, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864230.436776, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T16:37:10.817", "t_unix": 1793864230.817, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 2, "held_sec": 0.804, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -75.32, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -60.32, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864230.843123, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T16:37:10.918", "t_unix": 1793864230.918, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 3, "held_sec": 0.905, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -72.24, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T16:37:11.020", "t_unix": 1793864231.021, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 4, "held_sec": 1.008, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -71.1, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T16:37:11.122", "t_unix": 1793864231.123, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 5, "held_sec": 1.11, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -70.66, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T16:37:11.223", "t_unix": 1793864231.224, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 6, "held_sec": 1.211, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -70.66, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.34, "command": [3.6, 1.14, -3.69, 0.26, -60.32, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864231.251141, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T16:37:11.324", "t_unix": 1793864231.325, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 7, "held_sec": 1.312, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -70.48, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T16:37:11.425", "t_unix": 1793864231.426, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 8, "held_sec": 1.413, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -69.43, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 119, "t": "2026-11-05T16:37:11.526", "t_unix": 1793864231.527, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 9, "held_sec": 1.514, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -59.23, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 1.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -44.23, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864231.858079, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 120, "t": "2026-11-05T16:37:11.915", "t_unix": 1793864231.916, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 10, "held_sec": 1.903, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -59.23, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 121, "t": "2026-11-05T16:37:12.031", "t_unix": 1793864232.032, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 11, "held_sec": 2.019, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -57.74, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 13.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 122, "t": "2026-11-05T16:37:12.133", "t_unix": 1793864232.133, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 12, "held_sec": 2.12, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -53.87, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 9.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 123, "t": "2026-11-05T16:37:12.235", "t_unix": 1793864232.235, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 13, "held_sec": 2.222, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -49.04, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 4.81, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -34.04, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864232.265295, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 124, "t": "2026-11-05T16:37:12.337", "t_unix": 1793864232.338, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 14, "held_sec": 2.325, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -45.17, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 125, "t": "2026-11-05T16:37:12.439", "t_unix": 1793864232.44, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 15, "held_sec": 2.427, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -43.15, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 126, "t": "2026-11-05T16:37:12.541", "t_unix": 1793864232.541, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 16, "held_sec": 2.528, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -43.06, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 9.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 127, "t": "2026-11-05T16:37:12.641", "t_unix": 1793864232.641, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 17, "held_sec": 2.628, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -43.06, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 9.02, "command": [3.6, 1.14, -3.69, 0.26, -34.04, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864232.659915, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 128, "t": "2026-11-05T16:37:12.757", "t_unix": 1793864232.757, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 18, "held_sec": 2.744, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -42.97, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 8.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 129, "t": "2026-11-05T16:37:12.858", "t_unix": 1793864232.859, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 19, "held_sec": 2.846, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -40.78, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 130, "t": "2026-11-05T16:37:12.974", "t_unix": 1793864232.975, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 20, "held_sec": 2.962, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -37.17, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 3.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -22.17, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864233.000395, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 131, "t": "2026-11-05T16:37:13.075", "t_unix": 1793864233.076, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 21, "held_sec": 3.063, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -33.57, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 132, "t": "2026-11-05T16:37:13.191", "t_unix": 1793864233.191, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 22, "held_sec": 3.178, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -32.95, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 133, "t": "2026-11-05T16:37:13.292", "t_unix": 1793864233.292, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 23, "held_sec": 3.279, "accepted": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -32.95, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 134, "t": "2026-11-05T16:37:13.393", "t_unix": 1793864233.394, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 12, "hold_n": 24, "held_sec": 3.381, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.14, 4.3, -0.35, -32.95, -29.79], "start_source": "mixed", "cmd_gap_deg": 7.99, "hold_lead_deg": 10.78, "command": [3.6, 1.14, -3.69, 0.26, -22.17, -29.79], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864233.415188, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 135, "t": "2026-11-05T16:37:13.847", "t_unix": 1793864233.847, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 12, "halt_joint": 4, "measured_at_request": [5.09, 1.14, 4.3, -0.35, -32.95, -29.79], "t_halt": 1793864233.848543, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.1, 5.18, -0.35, -19.86, -29.79], "moved_after_request_deg": [0.0, 0.96, 0.88, 0.0, 13.09, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 136, "t": "2026-11-05T16:37:14.597", "t_unix": 1793864234.598, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 13, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.1, 5.27, -0.35, -19.86, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -18.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864234.647167, "measured_before_send": [5.09, 2.1, 5.27, -0.35, -19.86, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.83, -0.35, -18.54, -29.79], "reach_err": 8.52, "elapsed_sec": 0.19, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 137, "t": "2026-11-05T16:37:15.340", "t_unix": 1793864235.34, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 14, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -17.75, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -17.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864235.374723, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -17.75, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -17.75, -29.79], "reach_err": 8.43, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 138, "t": "2026-11-05T16:37:15.843", "t_unix": 1793864235.843, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 15, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -16.96, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -16.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864235.890493, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -16.96, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -16.96, -29.79], "reach_err": 8.43, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 140, "t": "2026-11-05T16:37:16.735", "t_unix": 1793864236.736, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 17, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 139, "t": "2026-11-05T16:37:16.295", "t_unix": 1793864236.296, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -15.99, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -15.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864236.358687, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -15.99, -29.79], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -15.11, -29.79], "reach_err": 8.43, "elapsed_sec": 0.31, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 141, "t": "2026-11-05T16:37:17.056", "t_unix": 1793864237.056, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -15.11, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -14.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864237.099998, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -15.11, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -15.11, -29.79], "reach_err": 8.43, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 142, "t": "2026-11-05T16:37:17.259", "t_unix": 1793864237.259, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 19, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -14.23, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -13.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864237.308533, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -14.23, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -14.23, -29.79], "reach_err": 8.43, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 143, "t": "2026-11-05T16:37:17.444", "t_unix": 1793864237.445, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -13.35, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -12.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864237.489362, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -13.27, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -13.27, -29.79], "reach_err": 8.43, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 144, "t": "2026-11-05T16:37:17.894", "t_unix": 1793864237.894, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 145, "t": "2026-11-05T16:37:18.261", "t_unix": 1793864238.262, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 21, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -12.3, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -10.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864238.322746, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -12.3, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -11.07, -29.79], "reach_err": 8.43, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 146, "t": "2026-11-05T16:37:18.943", "t_unix": 1793864238.944, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 22, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -10.28, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -8.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864238.993459, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -10.28, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -9.14, -29.79], "reach_err": 8.43, "elapsed_sec": 0.11, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 148, "t": "2026-11-05T16:37:19.852", "t_unix": 1793864239.852, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 24, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 147, "t": "2026-11-05T16:37:19.533", "t_unix": 1793864239.534, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 23, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -8.43, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -6.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864239.578968, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -8.43, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -6.41, -29.79], "reach_err": 8.43, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 149, "t": "2026-11-05T16:37:20.085", "t_unix": 1793864240.086, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 25, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -6.41, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -4.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864240.147646, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -6.41, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -5.09, -29.79], "reach_err": 8.43, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 151, "t": "2026-11-05T16:37:20.494", "t_unix": 1793864240.494, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 27, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 152, "t": "2026-11-05T16:37:20.692", "t_unix": 1793864240.693, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 28, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 153, "t": "2026-11-05T16:37:20.892", "t_unix": 1793864240.892, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 29, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 154, "t": "2026-11-05T16:37:21.143", "t_unix": 1793864241.143, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 30, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 150, "t": "2026-11-05T16:37:20.309", "t_unix": 1793864240.309, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 26, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -4.65, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -2.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864240.354704, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "resends": [0.36, 0.77], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "reach_err": 8.43, "elapsed_sec": 1.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 156, "t": "2026-11-05T16:37:22.138", "t_unix": 1793864242.138, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 32, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 155, "t": "2026-11-05T16:37:21.545", "t_unix": 1793864241.546, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 31, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -0.86, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864241.5926158, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "resends": [0.38, 0.73], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "reach_err": 8.43, "elapsed_sec": 1.05, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 157, "t": "2026-11-05T16:37:22.742", "t_unix": 1793864242.743, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 33, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -2.57, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864242.782866, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -4.57, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -2.46, -29.79], "reach_err": 8.43, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 158, "t": "2026-11-05T16:37:23.529", "t_unix": 1793864243.53, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 159, "t": "2026-11-05T16:37:23.851", "t_unix": 1793864243.851, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 34, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -2.46, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, -0.57, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864243.898606, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -2.46, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -0.61, -29.79], "reach_err": 8.43, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 161, "t": "2026-11-05T16:37:24.587", "t_unix": 1793864244.588, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 36, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 162, "t": "2026-11-05T16:37:24.805", "t_unix": 1793864244.805, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 37, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 163, "t": "2026-11-05T16:37:25.291", "t_unix": 1793864245.292, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 38, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 160, "t": "2026-11-05T16:37:24.303", "t_unix": 1793864244.304, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 35, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -0.61, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 1.43, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864244.354214, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -0.61, -29.79], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, -0.61, -29.79], "reach_err": 8.43, "elapsed_sec": 0.99, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 164, "t": "2026-11-05T16:37:26.597", "t_unix": 1793864246.598, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 165, "t": "2026-11-05T16:37:27.470", "t_unix": 1793864247.471, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 39, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, -0.52, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 2.43, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864247.528619, "measured_before_send": [5.09, 1.49, 4.74, -0.35, -0.52, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.35, 2.28, -29.79], "reach_err": 8.43, "elapsed_sec": 0.15, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 166, "t": "2026-11-05T16:37:27.877", "t_unix": 1793864247.878, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 39, "hold_n": 1, "held_sec": 0.407, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, 2.46, -29.79], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 0.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 17.46, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864247.898061, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 167, "t": "2026-11-05T16:37:27.980", "t_unix": 1793864247.98, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 39, "hold_n": 2, "held_sec": 0.51, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, 2.46, -29.79], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 168, "t": "2026-11-05T16:37:28.080", "t_unix": 1793864248.081, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 39, "hold_n": 3, "held_sec": 0.611, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, 4.39, -29.79], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 169, "t": "2026-11-05T16:37:28.181", "t_unix": 1793864248.182, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 39, "hold_n": 4, "held_sec": 0.711, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.35, 8.26, -29.79], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 9.2, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.2, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 171, "t": "2026-11-05T16:37:30.710", "t_unix": 1793864250.711, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 40, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 170, "t": "2026-11-05T16:37:28.282", "t_unix": 1793864248.283, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 39, "hold_n": 5, "held_sec": 0.813, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 4.74, -0.35, 12.91, -29.79], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 4.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 27.91, -29.79], "sent": true, "reached": null, "no_check": true, "t_send": 1793864248.313499, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 173, "t": "2026-11-05T16:37:32.302", "t_unix": 1793864252.303, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 41, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 174, "t": "2026-11-05T16:37:35.540", "t_unix": 1793864255.541, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 42, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 175, "t": "2026-11-05T16:37:37.630", "t_unix": 1793864257.631, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 43, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 176, "t": "2026-11-05T16:37:41.510", "t_unix": 1793864261.51, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 44, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 177, "t": "2026-11-05T16:37:43.491", "t_unix": 1793864263.491, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 178, "t": "2026-11-05T16:37:43.843", "t_unix": 1793864263.843, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 45, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 172, "t": "2026-11-05T16:37:32.048", "t_unix": 1793864252.049, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 39, "halt_joint": 4, "measured_at_request": [5.09, 1.49, 4.74, -0.35, 8.26, -29.79], "t_halt": 1793864252.0491788, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.49, 4.74, -0.26, 17.4, -29.79], "moved_after_request_deg": [0.0, 0.0, 0.0, 0.09, 9.14, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 179, "t": "2026-11-05T16:37:44.899", "t_unix": 1793864264.899, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 180, "t": "2026-11-05T16:37:44.949", "t_unix": 1793864264.949, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 46, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 17.4, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 19.4, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864264.98886, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 17.4, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 19.24, -29.79], "reach_err": 8.43, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 182, "t": "2026-11-05T16:37:45.693", "t_unix": 1793864265.694, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 181, "t": "2026-11-05T16:37:45.693", "t_unix": 1793864265.693, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 47, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 19.33, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 20.4, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864265.734143, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 19.33, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 19.95, -29.79], "reach_err": 8.43, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 184, "t": "2026-11-05T16:37:46.434", "t_unix": 1793864266.434, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 183, "t": "2026-11-05T16:37:46.433", "t_unix": 1793864266.433, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 48, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 20.03, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 21.4, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864266.4852228, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 20.03, -29.79], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "reach_err": 8.43, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 185, "t": "2026-11-05T16:37:47.083", "t_unix": 1793864267.083, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 187, "t": "2026-11-05T16:37:47.908", "t_unix": 1793864267.909, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 50, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 188, "t": "2026-11-05T16:37:47.909", "t_unix": 1793864267.909, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 4, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 189, "t": "2026-11-05T16:37:48.611", "t_unix": 1793864268.612, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 51, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 186, "t": "2026-11-05T16:37:47.150", "t_unix": 1793864267.151, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 2.0, "execute": true, "joint": 4, "delta": 2.0, "hold_id": 49, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -29.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864267.203073, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "resends": [0.38, 0.78], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "reach_err": 8.43, "elapsed_sec": 1.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 190, "t": "2026-11-05T16:37:49.399", "t_unix": 1793864269.399, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 192, "t": "2026-11-05T16:37:53.534", "t_unix": 1793864273.535, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 53, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 193, "t": "2026-11-05T16:37:54.039", "t_unix": 1793864274.039, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 5, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 194, "t": "2026-11-05T16:37:55.692", "t_unix": 1793864275.693, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 54, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 195, "t": "2026-11-05T16:37:57.019", "t_unix": 1793864277.02, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 55, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 196, "t": "2026-11-05T16:37:58.193", "t_unix": 1793864278.194, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 56, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 197, "t": "2026-11-05T16:38:00.543", "t_unix": 1793864280.544, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 57, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 191, "t": "2026-11-05T16:37:51.357", "t_unix": 1793864271.358, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 52, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -30.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864271.402718, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "resends": [4.75, 5.1], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "reach_err": 8.43, "elapsed_sec": 5.59, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 198, "t": "2026-11-05T16:38:05.037", "t_unix": 1793864285.037, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 58, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 8.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -31.79], "sent": true, "timeout_sec": 8.0, "t_send": 1793864285.103368, "measured_before_send": [5.09, 1.49, 4.74, -0.26, 21.18, -29.79], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.49, 4.74, -0.26, 23.2, -31.02], "reach_err": 8.43, "elapsed_sec": 0.29, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 199, "t": "2026-11-05T16:38:05.757", "t_unix": 1793864285.758, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 1, "held_sec": 0.721, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -31.02], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 0.77, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -46.02], "sent": true, "reached": null, "no_check": true, "t_send": 1793864285.781989, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 200, "t": "2026-11-05T16:38:06.146", "t_unix": 1793864286.147, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 2, "held_sec": 1.11, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -45.26], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -60.26], "sent": true, "reached": null, "no_check": true, "t_send": 1793864286.576273, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 201, "t": "2026-11-05T16:38:06.629", "t_unix": 1793864286.63, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 3, "held_sec": 1.592, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -56.68], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 3.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -71.68], "sent": true, "reached": null, "no_check": true, "t_send": 1793864286.998786, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 202, "t": "2026-11-05T16:38:07.065", "t_unix": 1793864287.065, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 4, "held_sec": 2.028, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -59.5], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 203, "t": "2026-11-05T16:38:07.167", "t_unix": 1793864287.167, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 5, "held_sec": 2.13, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -60.38], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 11.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 204, "t": "2026-11-05T16:38:07.269", "t_unix": 1793864287.269, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 6, "held_sec": 2.232, "accepted": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -62.84], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 8.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 205, "t": "2026-11-05T16:38:07.370", "t_unix": 1793864287.37, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 58, "hold_n": 7, "held_sec": 2.333, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 4.74, -0.26, 23.2, -70.92], "start_source": "mixed", "cmd_gap_deg": 8.43, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -85.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793864287.795786, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 206, "t": "2026-11-05T16:38:08.173", "t_unix": 1793864288.173, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 58, "halt_joint": 5, "measured_at_request": [5.09, 1.49, 4.74, -0.26, 23.2, -62.84], "t_halt": 1793864288.174262, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.28, 5.44, -0.26, 24.25, -83.93], "moved_after_request_deg": [0.0, 0.79, 0.7, 0.0, 1.05, -21.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 207, "t": "2026-11-05T16:38:09.199", "t_unix": 1793864289.2, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 59, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.46, 5.71, -0.26, 24.52, -83.93], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 9.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -82.93], "sent": true, "timeout_sec": 8.0, "t_send": 1793864289.240435, "measured_before_send": [5.09, 2.46, 5.71, -0.26, 24.52, -83.93], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.49, 4.48, -0.35, 24.6, -83.58], "reach_err": 8.17, "elapsed_sec": 0.31, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 208, "t": "2026-11-05T16:38:09.934", "t_unix": 1793864289.935, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 59, "hold_n": 1, "held_sec": 0.736, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 4.48, -0.35, 24.6, -83.58], "start_source": "mixed", "cmd_gap_deg": 8.17, "hold_lead_deg": 0.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -68.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793864289.957935, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 209, "t": "2026-11-05T16:38:10.010", "t_unix": 1793864290.011, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "released_while_sending", "hold_id": 59, "halt_joint": 5, "measured_at_request": [5.09, 1.49, 4.48, -0.35, 24.6, -83.58], "t_halt": 1793864290.032097, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.19, 5.09, -0.35, 25.22, -82.7], "moved_after_request_deg": [0.0, 0.7, 0.61, 0.0, 0.62, 0.88], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 210, "t": "2026-11-05T16:38:14.753", "t_unix": 1793864294.753, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 60, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.37, 5.36, -0.35, 25.92, -82.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 9.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -81.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793864294.814301, "measured_before_send": [5.09, 2.37, 5.36, -0.35, 25.92, -82.7], "resends": [0.34], "reached": false, "settled": true, "reached_angles": [5.09, 1.31, 4.65, -0.35, 23.99, -82.35], "reach_err": 8.34, "elapsed_sec": 0.8, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 211, "t": "2026-11-05T16:38:15.984", "t_unix": 1793864295.984, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 1, "held_sec": 1.232, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -82.35], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 0.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -67.35], "sent": true, "reached": null, "no_check": true, "t_send": 1793864296.006567, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 212, "t": "2026-11-05T16:38:16.099", "t_unix": 1793864296.1, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 2, "held_sec": 1.348, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -81.82], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 213, "t": "2026-11-05T16:38:16.200", "t_unix": 1793864296.201, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 3, "held_sec": 1.449, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -79.27], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 214, "t": "2026-11-05T16:38:16.316", "t_unix": 1793864296.316, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 4, "held_sec": 1.564, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -74.09], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 215, "t": "2026-11-05T16:38:16.433", "t_unix": 1793864296.433, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 5, "held_sec": 1.681, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -68.99], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -53.99], "sent": true, "reached": null, "no_check": true, "t_send": 1793864296.500176, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 216, "t": "2026-11-05T16:38:16.550", "t_unix": 1793864296.55, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 6, "held_sec": 1.798, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -67.76], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 217, "t": "2026-11-05T16:38:16.666", "t_unix": 1793864296.667, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 7, "held_sec": 1.915, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -65.03], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 11.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 218, "t": "2026-11-05T16:38:16.767", "t_unix": 1793864296.767, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 8, "held_sec": 2.015, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -61.08], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 219, "t": "2026-11-05T16:38:16.883", "t_unix": 1793864296.883, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 9, "held_sec": 2.131, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -54.58], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -39.58], "sent": true, "reached": null, "no_check": true, "t_send": 1793864297.269448, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 220, "t": "2026-11-05T16:38:17.370", "t_unix": 1793864297.37, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 10, "held_sec": 2.618, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -53.87], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 14.29, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.29, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 221, "t": "2026-11-05T16:38:17.471", "t_unix": 1793864297.472, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 11, "held_sec": 2.72, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -50.88], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 11.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 222, "t": "2026-11-05T16:38:17.572", "t_unix": 1793864297.573, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 12, "held_sec": 2.821, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -46.23], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 6.65, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.65, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 223, "t": "2026-11-05T16:38:17.673", "t_unix": 1793864297.673, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 13, "held_sec": 2.921, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -41.74], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 2.16, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -26.74], "sent": true, "reached": null, "no_check": true, "t_send": 1793864297.69716, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 224, "t": "2026-11-05T16:38:17.773", "t_unix": 1793864297.774, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 14, "held_sec": 3.022, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -40.16], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 225, "t": "2026-11-05T16:38:17.875", "t_unix": 1793864297.875, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 15, "held_sec": 3.123, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -38.84], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 226, "t": "2026-11-05T16:38:17.975", "t_unix": 1793864297.976, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 16, "held_sec": 3.224, "accepted": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -36.12], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 9.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 227, "t": "2026-11-05T16:38:18.077", "t_unix": 1793864298.077, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 60, "hold_n": 17, "held_sec": 3.326, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.31, 4.65, -0.35, 23.99, -31.2], "start_source": "mixed", "cmd_gap_deg": 8.34, "hold_lead_deg": 4.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -3.69, 0.26, 23.4, -16.2], "sent": true, "reached": null, "no_check": true, "t_send": 1793864298.143355, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 228, "t": "2026-11-05T16:38:18.534", "t_unix": 1793864298.535, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 60, "halt_joint": 5, "measured_at_request": [5.09, 1.31, 4.65, -0.35, 23.99, -36.12], "t_halt": 1793864298.535323, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.19, 5.62, -0.35, 25.4, -27.24], "moved_after_request_deg": [0.0, 0.88, 0.97, 0.0, 1.41, 8.88], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 229, "t": "2026-11-05T16:38:20.122", "t_unix": 1793864300.124, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 230, "t": "2026-11-05T16:38:21.193", "t_unix": 1793864301.194, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 231, "t": "2026-11-05T16:38:21.883", "t_unix": 1793864301.884, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 61, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.19, 5.62, -0.35, 25.4, -27.33], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 9.31, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 4.62, 0.26, 23.4, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864301.956855, "measured_before_send": [5.09, 2.19, 5.62, -0.35, 25.4, -27.33], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.4, 5.62, -0.35, 24.52, -27.33], "reach_err": 1.49, "elapsed_sec": 0.99, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 232, "t": "2026-11-05T16:38:23.321", "t_unix": 1793864303.322, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 1, "held_sec": 1.438, "accepted": true, "measured_before": [5.09, 1.4, 5.62, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -9.38, 0.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864303.342252, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 233, "t": "2026-11-05T16:38:23.438", "t_unix": 1793864303.438, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 2, "held_sec": 1.555, "accepted": true, "measured_before": [5.09, 1.4, 5.62, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 234, "t": "2026-11-05T16:38:23.539", "t_unix": 1793864303.54, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 3, "held_sec": 1.656, "accepted": true, "measured_before": [5.09, 1.4, 4.83, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 235, "t": "2026-11-05T16:38:23.640", "t_unix": 1793864303.64, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 4, "held_sec": 1.757, "accepted": true, "measured_before": [5.09, 1.4, 0.26, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 9.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 236, "t": "2026-11-05T16:38:23.754", "t_unix": 1793864303.754, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 5, "held_sec": 1.871, "accepted": true, "measured_before": [5.09, 1.4, -4.65, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 4.73, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -19.65, 0.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864303.788081, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 237, "t": "2026-11-05T16:38:23.888", "t_unix": 1793864303.889, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 6, "held_sec": 2.005, "accepted": true, "measured_before": [5.09, 1.4, -7.82, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 238, "t": "2026-11-05T16:38:23.990", "t_unix": 1793864303.991, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 7, "held_sec": 2.107, "accepted": true, "measured_before": [5.09, 1.4, -7.82, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 239, "t": "2026-11-05T16:38:24.093", "t_unix": 1793864304.093, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 8, "held_sec": 2.21, "accepted": true, "measured_before": [5.09, 1.4, -7.82, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 240, "t": "2026-11-05T16:38:24.194", "t_unix": 1793864304.195, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 9, "held_sec": 2.311, "accepted": true, "measured_before": [5.09, 1.4, -7.82, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "command": [3.6, 1.14, -19.65, 0.26, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864304.214106, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 241, "t": "2026-11-05T16:38:24.295", "t_unix": 1793864304.295, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 10, "held_sec": 2.412, "accepted": true, "measured_before": [5.09, 1.4, -7.82, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 242, "t": "2026-11-05T16:38:24.412", "t_unix": 1793864304.412, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 11, "held_sec": 2.529, "accepted": true, "measured_before": [5.09, 1.4, -9.49, -0.35, 24.52, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 10.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 243, "t": "2026-11-05T16:38:24.527", "t_unix": 1793864304.528, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 12, "held_sec": 2.644, "accepted": true, "measured_before": [5.09, 1.4, -18.19, -0.35, 24.34, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -33.19, 0.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864304.9367151, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 244, "t": "2026-11-05T16:38:25.335", "t_unix": 1793864305.335, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 13, "held_sec": 3.452, "accepted": true, "measured_before": [5.09, 1.4, -28.47, -0.35, 24.34, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 4.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -43.47, 0.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864305.362192, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 245, "t": "2026-11-05T16:38:25.436", "t_unix": 1793864305.436, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 14, "held_sec": 3.553, "accepted": true, "measured_before": [5.09, 1.4, -31.64, -0.35, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 246, "t": "2026-11-05T16:38:25.551", "t_unix": 1793864305.552, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 15, "held_sec": 3.668, "accepted": true, "measured_before": [5.09, 1.31, -32.43, -0.35, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 247, "t": "2026-11-05T16:38:25.653", "t_unix": 1793864305.653, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 16, "held_sec": 3.77, "accepted": true, "measured_before": [5.09, 1.31, -35.59, -0.35, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 7.88, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.88, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 248, "t": "2026-11-05T16:38:25.754", "t_unix": 1793864305.754, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 17, "held_sec": 3.871, "accepted": true, "measured_before": [5.09, 1.31, -39.9, -0.35, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -54.9, 0.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864305.7850392, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 249, "t": "2026-11-05T16:38:25.870", "t_unix": 1793864305.87, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 61, "hold_n": 18, "held_sec": 3.987, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.14, -52.2, -0.35, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 2.7, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -67.2, 0.26, 23.4, -27.24], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 250, "t": "2026-11-05T16:38:26.243", "t_unix": 1793864306.244, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 61, "halt_joint": 2, "measured_at_request": [5.09, 1.31, -39.9, -0.35, 24.25, -27.24], "t_halt": 1793864306.246248, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.49, -53.26, -0.35, 25.31, -27.24], "moved_after_request_deg": [0.0, 0.18, -13.36, 0.0, 1.06, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 251, "t": "2026-11-05T16:38:26.694", "t_unix": 1793864306.694, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 252, "t": "2026-11-05T16:38:27.665", "t_unix": 1793864307.666, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 62, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.93, -53.17, -0.35, 25.48, -27.24], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 1.26, 23.4, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864307.716352, "measured_before_send": [5.09, 1.93, -53.17, -0.35, 25.48, -27.24], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 0.96, -53.34, 0.43, 25.48, -27.24], "reach_err": 2.08, "elapsed_sec": 0.33, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 253, "t": "2026-11-05T16:38:28.408", "t_unix": 1793864308.408, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 1, "held_sec": 0.743, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 0.43, 25.48, -27.24], "start_source": "hold", "cmd_gap_deg": 2.08, "hold_lead_deg": 0.83, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 15.43, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864308.431107, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 254, "t": "2026-11-05T16:38:28.808", "t_unix": 1793864308.809, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 2, "held_sec": 1.143, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 11.86, 25.48, -27.33], "start_source": "hold", "cmd_gap_deg": 2.08, "hold_lead_deg": 3.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 26.86, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864308.8361, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 255, "t": "2026-11-05T16:38:28.910", "t_unix": 1793864308.911, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 3, "held_sec": 1.245, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 14.32, 25.48, -27.33], "start_source": "hold", "cmd_gap_deg": 2.08, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 256, "t": "2026-11-05T16:38:29.013", "t_unix": 1793864309.013, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 4, "held_sec": 1.348, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 14.32, 25.4, -27.33], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 257, "t": "2026-11-05T16:38:29.114", "t_unix": 1793864309.114, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 5, "held_sec": 1.449, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 14.32, 25.4, -27.33], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 12.54, "command": [3.6, 1.14, -53.26, 26.86, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864309.178636, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 258, "t": "2026-11-05T16:38:29.232", "t_unix": 1793864309.232, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 6, "held_sec": 1.567, "accepted": true, "measured_before": [5.18, 0.96, -53.34, 22.67, 25.4, -27.33], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 37.67, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864309.255504, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 259, "t": "2026-11-05T16:38:29.332", "t_unix": 1793864309.333, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 7, "held_sec": 1.667, "accepted": true, "measured_before": [5.18, 0.96, -53.34, 25.48, 25.4, -27.33], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 260, "t": "2026-11-05T16:38:29.434", "t_unix": 1793864309.434, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 8, "held_sec": 1.769, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 26.1, 25.4, -27.33], "start_source": "hold", "cmd_gap_deg": 2.0, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 261, "t": "2026-11-05T16:38:29.550", "t_unix": 1793864309.551, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 9, "held_sec": 1.885, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 26.1, 25.22, -27.33], "start_source": "hold", "cmd_gap_deg": 1.82, "hold_lead_deg": 11.57, "command": [3.6, 1.14, -53.26, 37.67, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864309.616364, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 262, "t": "2026-11-05T16:38:29.669", "t_unix": 1793864309.67, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 10, "held_sec": 2.004, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 34.62, 24.34, -27.33], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 49.62, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864309.6973598, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 263, "t": "2026-11-05T16:38:29.784", "t_unix": 1793864309.785, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 11, "held_sec": 2.119, "accepted": true, "measured_before": [5.36, 0.96, -53.34, 36.12, 24.34, -27.33], "start_source": "hold", "cmd_gap_deg": 1.76, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 264, "t": "2026-11-05T16:38:29.886", "t_unix": 1793864309.886, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 12, "held_sec": 2.22, "accepted": true, "measured_before": [5.27, 0.96, -53.34, 36.12, 24.34, -27.33], "start_source": "hold", "cmd_gap_deg": 1.67, "hold_lead_deg": 13.5, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.5, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 265, "t": "2026-11-05T16:38:29.986", "t_unix": 1793864309.986, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 13, "held_sec": 2.32, "accepted": true, "measured_before": [5.27, 0.96, -53.34, 36.21, 24.34, -27.33], "start_source": "hold", "cmd_gap_deg": 1.67, "hold_lead_deg": 13.41, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.41, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 266, "t": "2026-11-05T16:38:30.102", "t_unix": 1793864310.103, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 14, "held_sec": 2.437, "accepted": true, "measured_before": [5.27, 0.96, -53.34, 36.21, 24.34, -27.33], "start_source": "hold", "cmd_gap_deg": 1.67, "hold_lead_deg": 13.41, "command": [3.6, 1.14, -53.26, 49.62, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864310.12719, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 267, "t": "2026-11-05T16:38:30.539", "t_unix": 1793864310.54, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 15, "held_sec": 2.874, "accepted": true, "measured_before": [5.27, 0.96, -53.34, 47.98, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.67, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 62.98, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864310.8923478, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 268, "t": "2026-11-05T16:38:30.960", "t_unix": 1793864310.961, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 16, "held_sec": 3.295, "accepted": true, "measured_before": [5.27, 0.96, -53.34, 48.07, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.67, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 269, "t": "2026-11-05T16:38:31.060", "t_unix": 1793864311.061, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 17, "held_sec": 3.395, "accepted": true, "measured_before": [5.18, 0.96, -53.34, 48.07, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 270, "t": "2026-11-05T16:38:31.164", "t_unix": 1793864311.164, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 18, "held_sec": 3.498, "accepted": true, "measured_before": [5.18, 0.96, -53.34, 54.4, 24.16, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 271, "t": "2026-11-05T16:38:31.264", "t_unix": 1793864311.265, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 19, "held_sec": 3.599, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 59.32, 23.9, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 74.32, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864311.296295, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 272, "t": "2026-11-05T16:38:31.380", "t_unix": 1793864311.381, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 20, "held_sec": 3.715, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 61.17, 23.81, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 273, "t": "2026-11-05T16:38:31.483", "t_unix": 1793864311.483, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 21, "held_sec": 3.817, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 62.4, 23.81, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 274, "t": "2026-11-05T16:38:31.583", "t_unix": 1793864311.583, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 22, "held_sec": 3.917, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 66.18, 23.81, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 8.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 275, "t": "2026-11-05T16:38:31.684", "t_unix": 1793864311.684, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 23, "held_sec": 4.019, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 70.66, 23.81, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 85.66, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864311.718534, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 276, "t": "2026-11-05T16:38:31.787", "t_unix": 1793864311.787, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 24, "held_sec": 4.122, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 72.59, 23.73, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 277, "t": "2026-11-05T16:38:31.888", "t_unix": 1793864311.888, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 62, "hold_n": 25, "held_sec": 4.222, "accepted": true, "measured_before": [5.09, 0.96, -53.34, 72.59, 23.2, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 278, "t": "2026-11-05T16:38:31.939", "t_unix": 1793864311.939, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 62, "halt_joint": 3, "measured_at_request": [5.09, 0.96, -53.34, 72.59, 23.2, -27.15], "t_halt": 1793864311.9400132, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.58, -52.73, 71.63, 23.73, -27.15], "moved_after_request_deg": [0.0, 0.62, 0.61, -0.96, 0.53, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 279, "t": "2026-11-05T16:38:32.392", "t_unix": 1793864312.393, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 63, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.66, -52.64, 71.54, 23.99, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 70.63, 23.4, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864312.422234, "measured_before_send": [5.09, 1.66, -52.64, 71.54, 23.99, -27.15], "resends": [], "reached": true, "reached_angles": [5.09, 0.87, -53.87, 70.48, 24.25, -27.15], "reach_err": 1.49, "elapsed_sec": 0.24, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 280, "t": "2026-11-05T16:38:32.793", "t_unix": 1793864312.794, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 1, "held_sec": 0.401, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 69.78, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 54.78, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864312.813853, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 281, "t": "2026-11-05T16:38:33.211", "t_unix": 1793864313.211, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 2, "held_sec": 0.819, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 59.23, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 44.23, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864313.236136, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 282, "t": "2026-11-05T16:38:33.687", "t_unix": 1793864313.687, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 3, "held_sec": 1.294, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 44.2, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 29.2, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864314.056868, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 283, "t": "2026-11-05T16:38:34.462", "t_unix": 1793864314.463, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 4, "held_sec": 2.07, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 29.26, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 14.26, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864314.872052, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 284, "t": "2026-11-05T16:38:34.916", "t_unix": 1793864314.916, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 5, "held_sec": 2.524, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 29.17, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 285, "t": "2026-11-05T16:38:35.016", "t_unix": 1793864315.017, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 6, "held_sec": 2.624, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 28.38, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 286, "t": "2026-11-05T16:38:35.118", "t_unix": 1793864315.119, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 7, "held_sec": 2.726, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 28.38, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 287, "t": "2026-11-05T16:38:35.218", "t_unix": 1793864315.219, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 8, "held_sec": 2.826, "accepted": true, "measured_before": [5.18, 0.87, -53.87, 28.38, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.12, "command": [3.6, 1.14, -53.26, 14.26, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864315.282881, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 288, "t": "2026-11-05T16:38:35.334", "t_unix": 1793864315.335, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 9, "held_sec": 2.942, "accepted": true, "measured_before": [5.18, 0.87, -53.87, 15.82, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 1.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 0.82, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864315.354114, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 289, "t": "2026-11-05T16:38:35.754", "t_unix": 1793864315.755, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 10, "held_sec": 3.362, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 4.21, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.39, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -10.79, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864315.785147, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 290, "t": "2026-11-05T16:38:35.855", "t_unix": 1793864315.856, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 63, "hold_n": 11, "held_sec": 3.463, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 1.75, 24.25, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 291, "t": "2026-11-05T16:38:35.941", "t_unix": 1793864315.941, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 63, "halt_joint": 3, "measured_at_request": [5.09, 0.87, -53.87, 1.75, 24.25, -27.24], "t_halt": 1793864315.941906, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 0.87, -53.87, 0.35, 24.25, -27.24], "moved_after_request_deg": [0.0, 0.0, 0.0, -1.4, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 292, "t": "2026-11-05T16:38:37.253", "t_unix": 1793864317.253, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 3, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 293, "t": "2026-11-05T16:38:38.648", "t_unix": 1793864318.649, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 64, "hold_n": 0, "accepted": true, "measured_before": [5.09, 0.87, -53.87, 0.0, 24.25, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -0.65, 23.4, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864318.703962, "measured_before_send": [5.09, 0.87, -53.87, 0.0, 24.25, -27.15], "resends": [0.36, 0.7], "reached": true, "reached_angles": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "reach_err": 1.49, "elapsed_sec": 0.79, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 294, "t": "2026-11-05T16:38:39.568", "t_unix": 1793864319.568, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 1, "held_sec": 0.921, "accepted": true, "measured_before": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -15.17, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864319.592095, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 295, "t": "2026-11-05T16:38:39.685", "t_unix": 1793864319.686, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 2, "held_sec": 1.038, "accepted": true, "measured_before": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 296, "t": "2026-11-05T16:38:39.800", "t_unix": 1793864319.801, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 3, "held_sec": 1.154, "accepted": true, "measured_before": [5.18, 0.87, -53.87, -0.17, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 297, "t": "2026-11-05T16:38:39.903", "t_unix": 1793864319.904, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 4, "held_sec": 1.256, "accepted": true, "measured_before": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 298, "t": "2026-11-05T16:38:40.019", "t_unix": 1793864320.019, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 5, "held_sec": 1.372, "accepted": true, "measured_before": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "command": [3.6, 1.14, -53.26, -15.17, 23.4, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864320.082788, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 299, "t": "2026-11-05T16:38:40.134", "t_unix": 1793864320.134, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 64, "hold_n": 6, "held_sec": 1.487, "accepted": true, "released_during_job": true, "measured_before": [5.09, 0.87, -53.87, -14.32, 24.25, -27.07], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -29.32, 23.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864320.154145, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 300, "t": "2026-11-05T16:38:40.536", "t_unix": 1793864320.537, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 64, "halt_joint": 3, "measured_at_request": [5.09, 0.87, -53.87, -0.17, 24.25, -27.15], "t_halt": 1793864320.5402958, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.4, -53.34, -26.54, 25.48, -27.15], "moved_after_request_deg": [0.0, 0.53, 0.53, -26.37, 1.23, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 301, "t": "2026-11-05T16:38:40.920", "t_unix": 1793864320.921, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 302, "t": "2026-11-05T16:38:42.600", "t_unix": 1793864322.6, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 65, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.66, -53.08, -25.92, 25.57, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -26.54, 22.4, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864322.6661918, "measured_before_send": [5.09, 1.66, -53.08, -25.92, 25.57, -27.15], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.05, -53.43, -27.5, 24.16, -27.24], "reach_err": 1.76, "elapsed_sec": 0.46, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 303, "t": "2026-11-05T16:38:43.183", "t_unix": 1793864323.183, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 1, "held_sec": 0.584, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.5, 24.16, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -26.54, 9.16, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864323.206961, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 304, "t": "2026-11-05T16:38:43.300", "t_unix": 1793864323.3, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 2, "held_sec": 0.701, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.5, 23.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 305, "t": "2026-11-05T16:38:43.417", "t_unix": 1793864323.417, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 3, "held_sec": 0.818, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.5, 20.21, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 306, "t": "2026-11-05T16:38:43.518", "t_unix": 1793864323.519, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 4, "held_sec": 0.919, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.5, 15.64, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 6.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 307, "t": "2026-11-05T16:38:43.618", "t_unix": 1793864323.619, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 5, "held_sec": 1.019, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.59, 11.33, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 2.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -26.54, -3.67, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864323.649544, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 308, "t": "2026-11-05T16:38:43.735", "t_unix": 1793864323.735, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 6, "held_sec": 1.136, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.68, 10.63, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 309, "t": "2026-11-05T16:38:43.851", "t_unix": 1793864323.852, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 7, "held_sec": 1.252, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.68, 10.63, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 310, "t": "2026-11-05T16:38:43.967", "t_unix": 1793864323.967, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 8, "held_sec": 1.368, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.68, 10.63, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 311, "t": "2026-11-05T16:38:44.068", "t_unix": 1793864324.068, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 9, "held_sec": 1.469, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.68, 10.63, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.3, "command": [3.6, 1.14, -53.26, -26.54, -3.67, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864324.0877628, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 312, "t": "2026-11-05T16:38:44.168", "t_unix": 1793864324.169, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 10, "held_sec": 1.569, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.68, 10.63, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 313, "t": "2026-11-05T16:38:44.269", "t_unix": 1793864324.269, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 11, "held_sec": 1.67, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.77, 7.91, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 314, "t": "2026-11-05T16:38:44.371", "t_unix": 1793864324.371, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 12, "held_sec": 1.772, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.77, 3.42, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 315, "t": "2026-11-05T16:38:44.488", "t_unix": 1793864324.488, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 13, "held_sec": 1.888, "accepted": true, "measured_before": [5.09, 1.05, -53.43, -27.77, -1.4, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 2.27, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -26.54, -16.4, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864324.5494049, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 316, "t": "2026-11-05T16:38:44.655", "t_unix": 1793864324.656, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 14, "held_sec": 2.056, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -27.94, -3.07, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 317, "t": "2026-11-05T16:38:44.755", "t_unix": 1793864324.756, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 15, "held_sec": 2.156, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.03, -6.67, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 318, "t": "2026-11-05T16:38:44.857", "t_unix": 1793864324.857, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 16, "held_sec": 2.258, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.03, -11.33, -27.24], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 319, "t": "2026-11-05T16:38:44.958", "t_unix": 1793864324.958, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 17, "held_sec": 2.359, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.29, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 1.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -26.54, -30.29, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864324.9947882, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 320, "t": "2026-11-05T16:38:45.074", "t_unix": 1793864325.075, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 18, "held_sec": 2.475, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 321, "t": "2026-11-05T16:38:45.175", "t_unix": 1793864325.176, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 19, "held_sec": 2.576, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 322, "t": "2026-11-05T16:38:45.278", "t_unix": 1793864325.278, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 20, "held_sec": 2.679, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 323, "t": "2026-11-05T16:38:45.379", "t_unix": 1793864325.38, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 21, "held_sec": 2.78, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.3, "command": [3.6, 1.14, -53.26, -26.54, -30.29, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864325.39855, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 324, "t": "2026-11-05T16:38:45.480", "t_unix": 1793864325.48, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 22, "held_sec": 2.881, "accepted": true, "measured_before": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "start_source": "hold", "cmd_gap_deg": 1.58, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 325, "t": "2026-11-05T16:38:45.547", "t_unix": 1793864325.548, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 65, "halt_joint": 4, "measured_at_request": [5.09, 0.96, -53.43, -28.12, -15.99, -27.24], "t_halt": 1793864325.549821, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.18, 0.87, -53.43, -28.3, -19.77, -27.24], "moved_after_request_deg": [0.09, -0.09, 0.0, -0.18, -3.78, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 326, "t": "2026-11-05T16:38:46.037", "t_unix": 1793864326.038, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 327, "t": "2026-11-05T16:38:46.339", "t_unix": 1793864326.34, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 328, "t": "2026-11-05T16:38:46.589", "t_unix": 1793864326.59, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 329, "t": "2026-11-05T16:38:46.788", "t_unix": 1793864326.788, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 330, "t": "2026-11-05T16:38:47.945", "t_unix": 1793864327.946, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 66, "hold_n": 0, "accepted": true, "measured_before": [5.09, 0.87, -53.43, -28.74, -19.77, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.2, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -25.54, -19.77, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864327.9949398, "measured_before_send": [5.09, 0.87, -53.43, -28.74, -19.77, -27.15], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 0.87, -53.43, -27.07, -20.3, -27.15], "reach_err": 1.53, "elapsed_sec": 0.61, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 331, "t": "2026-11-05T16:38:48.667", "t_unix": 1793864328.667, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 66, "hold_n": 1, "held_sec": 0.722, "accepted": true, "measured_before": [5.09, 0.87, -53.43, -27.07, -20.3, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.53, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -12.07, -19.77, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864328.689358, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 332, "t": "2026-11-05T16:38:48.783", "t_unix": 1793864328.784, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 66, "hold_n": 2, "held_sec": 0.838, "accepted": true, "measured_before": [5.09, 0.87, -53.43, -26.54, -20.3, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 333, "t": "2026-11-05T16:38:48.898", "t_unix": 1793864328.898, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 66, "hold_n": 3, "held_sec": 0.953, "accepted": true, "measured_before": [5.09, 0.87, -53.43, -23.46, -20.3, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 334, "t": "2026-11-05T16:38:48.998", "t_unix": 1793864328.998, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 66, "hold_n": 4, "held_sec": 1.053, "accepted": true, "measured_before": [5.09, 0.87, -53.43, -18.89, -20.3, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 6.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 335, "t": "2026-11-05T16:38:49.099", "t_unix": 1793864329.1, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 66, "hold_n": 5, "held_sec": 1.155, "accepted": true, "released_during_job": true, "measured_before": [5.09, 0.87, -53.43, -14.5, -20.3, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, 0.5, -19.77, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864329.121949, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 336, "t": "2026-11-05T16:38:49.504", "t_unix": 1793864329.504, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 66, "halt_joint": 3, "measured_at_request": [5.09, 0.87, -53.43, -18.89, -20.3, -27.15], "t_halt": 1793864329.5045838, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.31, -53.08, -1.75, -20.03, -27.15], "moved_after_request_deg": [0.0, 0.44, 0.35, 17.14, 0.27, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 337, "t": "2026-11-05T16:38:51.432", "t_unix": 1793864331.433, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 338, "t": "2026-11-05T16:38:52.811", "t_unix": 1793864332.812, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 67, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, -52.91, -1.84, -19.33, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -1.75, -18.77, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864332.862211, "measured_before_send": [5.09, 1.49, -52.91, -1.84, -19.33, -27.15], "resends": [], "reached": true, "reached_angles": [5.09, 1.23, -52.91, -1.14, -19.24, -27.15], "reach_err": 1.49, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 339, "t": "2026-11-05T16:38:53.213", "t_unix": 1793864333.213, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 1, "held_sec": 0.403, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, -19.16, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.39, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -1.75, -4.16, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864333.2342331, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 340, "t": "2026-11-05T16:38:53.313", "t_unix": 1793864333.314, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 2, "held_sec": 0.504, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, -19.07, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 341, "t": "2026-11-05T16:38:53.414", "t_unix": 1793864333.415, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 3, "held_sec": 0.604, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, -4.92, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -1.75, 10.08, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864333.7886689, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 342, "t": "2026-11-05T16:38:53.883", "t_unix": 1793864333.883, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 4, "held_sec": 1.073, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, -4.13, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 343, "t": "2026-11-05T16:38:53.984", "t_unix": 1793864333.985, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 5, "held_sec": 1.174, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, -1.84, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 344, "t": "2026-11-05T16:38:54.085", "t_unix": 1793864334.085, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 6, "held_sec": 1.275, "accepted": true, "measured_before": [5.09, 0.79, -53.96, -1.05, 2.81, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 7.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 345, "t": "2026-11-05T16:38:54.200", "t_unix": 1793864334.201, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 67, "hold_n": 7, "held_sec": 1.391, "accepted": true, "released_during_job": true, "measured_before": [5.09, 0.79, -53.96, -0.96, 10.54, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -1.75, 25.54, -27.24], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 346, "t": "2026-11-05T16:38:54.602", "t_unix": 1793864334.602, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 67, "halt_joint": 4, "measured_at_request": [5.09, 0.79, -53.96, -1.05, 2.81, -27.15], "t_halt": 1793864334.602634, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.31, -53.52, -0.96, 11.68, -27.15], "moved_after_request_deg": [0.0, 0.52, 0.44, 0.09, 8.87, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 347, "t": "2026-11-05T16:38:55.778", "t_unix": 1793864335.779, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 348, "t": "2026-11-05T16:38:56.384", "t_unix": 1793864336.384, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 349, "t": "2026-11-05T16:38:56.956", "t_unix": 1793864336.957, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 350, "t": "2026-11-05T16:38:57.958", "t_unix": 1793864337.958, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 68, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.58, -53.17, -0.96, 11.86, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -54.26, -1.75, 11.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864337.9964402, "measured_before_send": [5.09, 1.58, -53.17, -0.96, 11.86, -27.15], "resends": [0.39, 0.73], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.05, -53.17, -1.05, 11.68, -27.15], "reach_err": 1.49, "elapsed_sec": 1.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 351, "t": "2026-11-05T16:38:59.453", "t_unix": 1793864339.454, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 69, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.05, -53.17, -1.05, 11.68, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -53.26, -1.75, 11.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864339.497608, "measured_before_send": [5.09, 1.05, -53.17, -1.05, 11.68, -27.15], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 0.96, -52.64, -0.96, 10.98, -27.15], "reach_err": 1.49, "elapsed_sec": 0.34, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 352, "t": "2026-11-05T16:39:00.206", "t_unix": 1793864340.206, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 1, "held_sec": 0.753, "accepted": true, "measured_before": [5.09, 0.96, -52.64, -0.96, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.62, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -37.64, -1.75, 11.68, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864340.2279959, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 353, "t": "2026-11-05T16:39:00.306", "t_unix": 1793864340.307, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 2, "held_sec": 0.854, "accepted": true, "measured_before": [5.09, 0.96, -52.64, -0.96, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 354, "t": "2026-11-05T16:39:00.409", "t_unix": 1793864340.409, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 3, "held_sec": 0.956, "accepted": true, "measured_before": [5.09, 0.96, -52.64, -0.96, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 355, "t": "2026-11-05T16:39:00.526", "t_unix": 1793864340.526, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 4, "held_sec": 1.073, "accepted": true, "measured_before": [5.09, 0.96, -52.64, -0.96, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "command": [3.6, 1.14, -37.64, -1.75, 11.68, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864340.587918, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 356, "t": "2026-11-05T16:39:00.660", "t_unix": 1793864340.661, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 5, "held_sec": 1.207, "accepted": true, "measured_before": [5.09, 0.96, -41.22, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -26.22, -1.75, 11.68, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864340.692815, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 357, "t": "2026-11-05T16:39:00.776", "t_unix": 1793864340.777, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 6, "held_sec": 1.324, "accepted": true, "measured_before": [5.09, 0.96, -37.08, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 10.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 358, "t": "2026-11-05T16:39:00.877", "t_unix": 1793864340.878, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 7, "held_sec": 1.425, "accepted": true, "measured_before": [5.09, 0.96, -36.65, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 359, "t": "2026-11-05T16:39:00.979", "t_unix": 1793864340.979, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 8, "held_sec": 1.526, "accepted": true, "measured_before": [5.09, 0.96, -36.65, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 360, "t": "2026-11-05T16:39:01.095", "t_unix": 1793864341.096, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 9, "held_sec": 1.642, "accepted": true, "measured_before": [5.09, 0.96, -36.65, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 10.43, "command": [3.6, 1.14, -26.22, -1.75, 11.68, -27.24], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793864341.124408, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 361, "t": "2026-11-05T16:39:01.211", "t_unix": 1793864341.211, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 10, "held_sec": 1.758, "accepted": true, "measured_before": [5.09, 0.96, -27.33, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, -12.33, -1.75, 11.68, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864341.567151, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 362, "t": "2026-11-05T16:39:01.620", "t_unix": 1793864341.62, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 11, "held_sec": 2.167, "accepted": true, "measured_before": [5.09, 0.96, -25.22, -0.87, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 12.89, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.89, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 363, "t": "2026-11-05T16:39:01.721", "t_unix": 1793864341.722, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 69, "hold_n": 12, "held_sec": 2.268, "accepted": true, "released_during_job": true, "measured_before": [5.09, 0.96, -13.53, -0.79, 10.98, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.2, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 1.47, -1.75, 11.68, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864342.0778, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 364, "t": "2026-11-05T16:39:02.474", "t_unix": 1793864342.474, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 69, "halt_joint": 2, "measured_at_request": [5.09, 0.96, -25.22, -0.87, 10.98, -27.15], "t_halt": 1793864342.475211, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.93, 0.96, -0.79, 12.56, -27.15], "moved_after_request_deg": [0.0, 0.97, 26.18, 0.08, 1.58, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 365, "t": "2026-11-05T16:39:03.643", "t_unix": 1793864343.643, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 366, "t": "2026-11-05T16:39:05.027", "t_unix": 1793864345.028, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 70, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.93, 0.96, -0.87, 12.56, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -2.75, 11.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864345.083918, "measured_before_send": [5.09, 1.93, 0.96, -0.87, 12.56, -27.15], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.49, 1.84, -2.1, 11.68, -27.24], "reach_err": 1.49, "elapsed_sec": 0.73, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 367, "t": "2026-11-05T16:39:06.412", "t_unix": 1793864346.412, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 71, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -2.1, 11.68, -27.24], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -1.75, 11.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864346.4593961, "measured_before_send": [5.09, 1.49, 1.84, -2.1, 11.68, -27.24], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 1.84, -2.1, 11.68, -27.24], "reach_err": 1.49, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 368, "t": "2026-11-05T16:39:07.254", "t_unix": 1793864347.255, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 72, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -2.1, 11.68, -27.24], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, 11.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864347.3115032, "measured_before_send": [5.09, 1.49, 1.84, -2.1, 11.6, -27.24], "resends": [], "reached": false, "settled": true, "reached_angles": [5.09, 1.49, 1.84, -1.58, 11.6, -27.24], "reach_err": 1.49, "elapsed_sec": 0.43, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 369, "t": "2026-11-05T16:39:08.990", "t_unix": 1793864348.991, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 370, "t": "2026-11-05T16:39:09.798", "t_unix": 1793864349.799, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 73, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.31, 10.63, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, 10.68, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864349.844943, "measured_before_send": [5.09, 1.49, 1.84, -1.31, 10.63, -27.15], "resends": [], "reached": true, "reached_angles": [5.09, 1.49, 1.84, -1.31, 10.63, -27.15], "reach_err": 1.49, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 371, "t": "2026-11-05T16:39:10.233", "t_unix": 1793864350.233, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 1, "held_sec": 0.434, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.31, 10.63, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -4.37, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864350.264715, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 372, "t": "2026-11-05T16:39:10.335", "t_unix": 1793864350.336, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 2, "held_sec": 0.537, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.31, 10.63, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 373, "t": "2026-11-05T16:39:10.436", "t_unix": 1793864350.436, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 3, "held_sec": 0.638, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.31, 9.84, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 374, "t": "2026-11-05T16:39:10.538", "t_unix": 1793864350.539, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 4, "held_sec": 0.74, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.23, 5.62, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 375, "t": "2026-11-05T16:39:10.638", "t_unix": 1793864350.639, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 5, "held_sec": 0.84, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.23, -3.95, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 0.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -18.95, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864350.969507, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 376, "t": "2026-11-05T16:39:11.344", "t_unix": 1793864351.345, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 6, "held_sec": 1.546, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.23, -15.02, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 3.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -30.02, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864351.373006, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 377, "t": "2026-11-05T16:39:11.445", "t_unix": 1793864351.445, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 73, "hold_n": 7, "held_sec": 1.647, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 1.84, -1.23, -18.19, -27.15], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 378, "t": "2026-11-05T16:39:11.478", "t_unix": 1793864351.479, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 73, "halt_joint": 4, "measured_at_request": [5.09, 1.49, 1.84, -1.23, -15.02, -27.15], "t_halt": 1793864351.4791481, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 1.49, 1.84, -1.14, -29.79, -27.15], "moved_after_request_deg": [0.0, 0.0, 0.0, 0.09, -14.77, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 379, "t": "2026-11-05T16:39:12.237", "t_unix": 1793864352.238, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 74, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.14, -29.79, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -28.79, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864352.3170052, "measured_before_send": [5.09, 1.49, 1.84, -1.14, -29.79, -27.07], "resends": [0.35, 0.71], "reached": false, "not_moved": true, "reached_angles": [5.09, 1.49, 1.84, -1.05, -29.79, -27.07], "reach_err": 1.49, "elapsed_sec": 1.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 380, "t": "2026-11-05T16:39:13.400", "t_unix": 1793864353.401, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 74, "hold_n": 1, "held_sec": 1.163, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.05, -29.79, -27.07], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -14.79, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864353.425517, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 381, "t": "2026-11-05T16:39:13.803", "t_unix": 1793864353.804, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 74, "hold_n": 2, "held_sec": 1.566, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.05, -19.77, -27.07], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -4.77, -27.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793864353.835954, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 382, "t": "2026-11-05T16:39:13.904", "t_unix": 1793864353.904, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 74, "hold_n": 3, "held_sec": 1.667, "accepted": true, "measured_before": [5.09, 1.49, 1.84, -1.05, -16.43, -27.07], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 383, "t": "2026-11-05T16:39:14.005", "t_unix": 1793864354.005, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 74, "hold_n": 4, "held_sec": 1.768, "accepted": true, "released_during_job": true, "measured_before": [5.09, 1.49, 1.84, -1.05, -16.17, -27.07], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 384, "t": "2026-11-05T16:39:14.040", "t_unix": 1793864354.04, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 74, "halt_joint": 4, "measured_at_request": [5.09, 1.49, 1.84, -1.05, -16.43, -27.07], "t_halt": 1793864354.0445282, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [5.09, 2.46, 2.72, -1.05, -12.65, -27.15], "moved_after_request_deg": [0.0, 0.97, 0.88, 0.0, 3.78, -0.08], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 386, "t": "2026-11-05T16:40:55.228", "t_unix": 1793864455.228, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 76, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 385, "t": "2026-11-05T16:40:55.223", "t_unix": 1793864455.224, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 75, "hold_n": 0, "accepted": true, "measured_before": [5.09, 2.54, 2.81, -1.14, -14.41, -27.15], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [3.6, 1.14, 0.96, -0.75, -13.65, -27.24], "sent": true, "timeout_sec": 8.0, "t_send": 1793864455.288037, "measured_before_send": [5.09, 2.54, 2.81, -1.14, -14.41, -27.15], "resends": [], "reached": true, "reached_angles": [5.09, 1.93, 2.81, -1.14, -13.71, -27.15], "reach_err": 1.85, "elapsed_sec": 0.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 17:03 の記録 runs/experiments/gamepad_teleop/teleop_20261105_170313/meta.json

```json
{
  "run_stem": "teleop_20261105_170313",
  "started_at": "2026-11-05T17:03:14",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T17:03:47"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    5.09,
    1.31,
    2.81,
    -0.96,
    -13.62,
    -26.98
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.5,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "c7992ca137a102227981b9595fa569359ca285dd",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "e6a1b54e8fa777cbdc6c33e1a98feda91e1366f7d7933b8c58ac5a4530fd82e5",
  "ended_at": "2026-11-05T17:11:23",
  "end_reason": "ctrl_c",
  "n_sent": 192
}
```

### 17:03 の記録 runs/experiments/gamepad_teleop/teleop_20261105_170313/log.jsonl（549行）

```json
{"seq": 1, "t": "2026-11-05T17:03:51.788", "t_unix": 1793865831.789, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 1, "hold_n": 0, "accepted": true, "measured_before": [5.09, 1.31, 2.81, -0.96, -13.62, -26.98], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [4.09, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865831.837409, "measured_before_send": [5.09, 1.31, 2.81, -0.96, -13.62, -26.98], "resends": [], "reached": true, "reached_angles": [4.04, 1.31, 2.81, -0.96, -13.62, -26.98], "reach_err": 0.05, "elapsed_sec": 0.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T17:03:52.192", "t_unix": 1793865832.192, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.404, "accepted": true, "measured_before": [4.3, 1.31, 2.81, -0.96, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.21, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-10.7, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865832.215175, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T17:03:52.292", "t_unix": 1793865832.292, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.504, "accepted": true, "measured_before": [4.3, 1.31, 2.81, -0.96, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T17:03:52.394", "t_unix": 1793865832.394, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.607, "accepted": true, "measured_before": [3.77, 1.31, 2.81, -0.96, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T17:03:52.495", "t_unix": 1793865832.495, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 0.707, "accepted": true, "measured_before": [-0.87, 1.31, 2.81, -0.96, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 9.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T17:03:52.612", "t_unix": 1793865832.613, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 0.825, "accepted": true, "measured_before": [-10.54, 1.31, 2.81, -0.87, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.09, "hold_lead_deg": 0.16, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-25.54, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865832.758465, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T17:03:52.812", "t_unix": 1793865832.812, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 1.024, "accepted": true, "measured_before": [-10.81, 1.31, 2.81, -0.26, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.7, "hold_lead_deg": 14.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T17:03:52.913", "t_unix": 1793865832.914, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 1.126, "accepted": true, "measured_before": [-15.38, 1.31, 2.81, -0.43, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 10.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T17:03:53.083", "t_unix": 1793865833.083, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 1.296, "accepted": true, "measured_before": [-17.13, 1.31, 2.81, -0.43, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 8.41, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.41, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T17:03:53.198", "t_unix": 1793865833.198, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 1.41, "accepted": true, "measured_before": [-22.5, 1.31, 2.81, -0.43, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 3.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-37.5, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865833.227618, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T17:03:53.313", "t_unix": 1793865833.314, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 1.526, "accepted": true, "measured_before": [-26.01, 1.31, 2.81, -0.35, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T17:03:53.482", "t_unix": 1793865833.482, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 11, "held_sec": 1.694, "accepted": true, "measured_before": [-27.94, 1.31, 2.81, -0.35, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 9.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T17:03:53.583", "t_unix": 1793865833.584, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 12, "held_sec": 1.796, "accepted": true, "measured_before": [-31.99, 1.31, 2.81, -0.35, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 5.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T17:03:53.685", "t_unix": 1793865833.685, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 13, "held_sec": 1.897, "accepted": true, "measured_before": [-35.85, 1.31, 2.81, -0.35, -13.62, -26.98], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 1.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-50.85, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865833.7182221, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T17:03:53.786", "t_unix": 1793865833.787, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 14, "held_sec": 1.999, "accepted": true, "measured_before": [-37.96, 1.31, 2.81, 0.26, -13.62, -26.89], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.89, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.89, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T17:03:53.886", "t_unix": 1793865833.887, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 15, "held_sec": 2.099, "accepted": true, "measured_before": [-37.96, 1.31, 2.81, 0.26, -13.62, -26.89], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.89, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.89, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T17:03:53.987", "t_unix": 1793865833.988, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 16, "held_sec": 2.2, "accepted": true, "measured_before": [-42.01, 1.31, 2.81, 0.26, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 8.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T17:03:54.104", "t_unix": 1793865834.105, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 17, "held_sec": 2.317, "accepted": true, "measured_before": [-45.52, 1.31, 2.81, -0.35, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 0.61, "hold_lead_deg": 5.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T17:03:54.220", "t_unix": 1793865834.22, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 18, "held_sec": 2.432, "accepted": true, "measured_before": [-51.06, 1.31, 2.81, 0.26, -13.62, -26.71], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 0.21, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-66.06, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865834.244173, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T17:03:54.385", "t_unix": 1793865834.386, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 19, "held_sec": 2.598, "accepted": true, "measured_before": [-50.8, 1.31, 2.81, 0.08, -13.62, -26.63], "start_source": "hold", "cmd_gap_deg": 1.04, "hold_lead_deg": 15.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T17:03:54.501", "t_unix": 1793865834.501, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 20, "held_sec": 2.713, "accepted": true, "measured_before": [-54.84, 1.31, 2.81, -0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 0.7, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T17:03:54.601", "t_unix": 1793865834.602, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 21, "held_sec": 2.814, "accepted": true, "measured_before": [-59.15, 1.31, 2.81, -0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 0.7, "hold_lead_deg": 6.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T17:03:54.702", "t_unix": 1793865834.702, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 22, "held_sec": 2.914, "accepted": true, "measured_before": [-63.28, 1.31, 2.81, -0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 0.7, "hold_lead_deg": 2.78, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-78.28, 1.31, 2.81, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865834.7333891, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T17:03:54.804", "t_unix": 1793865834.805, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 23, "held_sec": 3.017, "accepted": true, "measured_before": [-66.35, 1.31, 2.81, 0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 11.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T17:03:54.921", "t_unix": 1793865834.921, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 24, "held_sec": 3.134, "accepted": true, "measured_before": [-66.09, 1.31, 2.81, 0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T17:03:55.038", "t_unix": 1793865835.039, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 25, "held_sec": 3.251, "accepted": true, "measured_before": [-65.91, 1.31, 2.81, 0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T17:03:55.139", "t_unix": 1793865835.139, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 26, "held_sec": 3.351, "accepted": true, "measured_before": [-65.91, 1.31, 2.81, 0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.37, "command": [-78.28, 1.31, 2.81, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865835.157992, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T17:03:55.240", "t_unix": 1793865835.241, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 27, "held_sec": 3.453, "accepted": true, "measured_before": [-65.91, 1.31, 2.81, 0.26, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 1.22, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T17:03:55.341", "t_unix": 1793865835.342, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 28, "held_sec": 3.554, "accepted": true, "measured_before": [-66.97, 1.31, 2.81, -0.17, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T17:03:55.443", "t_unix": 1793865835.444, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 29, "held_sec": 3.656, "accepted": true, "released_during_job": true, "measured_before": [-70.75, 1.31, 2.81, -0.17, -13.62, -26.54], "start_source": "hold", "cmd_gap_deg": 0.79, "hold_lead_deg": 7.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T17:03:55.477", "t_unix": 1793865835.478, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-66.97, 1.31, 2.81, -0.17, -13.62, -26.54], "t_halt": 1793865835.47944, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-74.53, 2.19, 3.51, 0.43, -12.3, -26.54], "moved_after_request_deg": [-7.56, 0.88, 0.7, 0.6, 1.32, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T17:03:57.832", "t_unix": 1793865837.832, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T17:03:58.247", "t_unix": 1793865838.248, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 2, "hold_n": 0, "accepted": true, "measured_before": [-73.65, 2.37, 3.86, -0.08, -12.04, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, 1.81, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865838.2987578, "measured_before_send": [-73.65, 2.37, 3.86, -0.08, -12.04, -26.71], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [-76.99, 1.49, 3.86, -0.08, -12.12, -26.71], "reach_err": 2.46, "elapsed_sec": 1.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T17:03:59.389", "t_unix": 1793865839.39, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 1, "held_sec": 1.142, "accepted": true, "measured_before": [-76.99, 1.49, 3.86, -0.08, -12.12, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 2.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -11.14, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865839.414811, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T17:03:59.489", "t_unix": 1793865839.49, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 2, "held_sec": 1.242, "accepted": true, "measured_before": [-76.99, 1.49, 3.86, -0.08, -12.12, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T17:03:59.605", "t_unix": 1793865839.606, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 3, "held_sec": 1.358, "accepted": true, "measured_before": [-76.99, 1.49, 2.19, -0.08, -12.12, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T17:03:59.706", "t_unix": 1793865839.707, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 4, "held_sec": 1.459, "accepted": true, "measured_before": [-76.99, 1.49, -1.93, -0.08, -12.12, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 9.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T17:03:59.823", "t_unix": 1793865839.824, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 5, "held_sec": 1.576, "accepted": true, "measured_before": [-76.99, 1.49, -9.49, -0.08, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 1.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -24.49, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865840.007081, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T17:04:00.108", "t_unix": 1793865840.108, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 6, "held_sec": 1.861, "accepted": true, "measured_before": [-76.99, 1.49, -9.49, -0.08, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T17:04:00.224", "t_unix": 1793865840.224, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 7, "held_sec": 1.977, "accepted": true, "measured_before": [-76.99, 1.49, -16.78, -0.17, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 7.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T17:04:00.410", "t_unix": 1793865840.41, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 8, "held_sec": 2.163, "accepted": true, "measured_before": [-76.99, 1.49, -19.95, -0.17, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 4.54, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -34.95, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865840.431821, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T17:04:00.594", "t_unix": 1793865840.595, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 9, "held_sec": 2.348, "accepted": true, "measured_before": [-76.99, 1.49, -23.46, -0.17, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T17:04:00.697", "t_unix": 1793865840.698, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 10, "held_sec": 2.45, "accepted": true, "measured_before": [-76.99, 1.49, -25.66, -0.17, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 9.29, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.29, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T17:04:00.813", "t_unix": 1793865840.814, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 11, "held_sec": 2.567, "accepted": true, "measured_before": [-76.99, 1.49, -25.66, -0.17, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 9.29, "command": [-74.53, 1.31, -34.95, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865840.8787992, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T17:04:00.932", "t_unix": 1793865840.933, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 12, "held_sec": 2.685, "accepted": true, "measured_before": [-76.99, 1.49, -33.66, -0.17, -12.83, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 1.29, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -48.66, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865840.953707, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T17:04:01.115", "t_unix": 1793865841.115, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 13, "held_sec": 2.868, "accepted": true, "measured_before": [-76.99, 1.31, -34.27, -0.17, -13.18, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 14.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T17:04:01.216", "t_unix": 1793865841.217, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 14, "held_sec": 2.97, "accepted": true, "measured_before": [-76.99, 1.31, -37.96, -0.17, -13.18, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 10.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T17:04:01.317", "t_unix": 1793865841.317, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 15, "held_sec": 3.07, "accepted": true, "measured_before": [-76.9, 1.31, -42.36, -0.26, -13.18, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 6.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T17:04:01.417", "t_unix": 1793865841.417, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 16, "held_sec": 3.17, "accepted": true, "measured_before": [-76.9, 1.14, -42.36, -0.26, -13.27, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 6.3, "command": [-74.53, 1.31, -48.66, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865841.477258, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T17:04:01.535", "t_unix": 1793865841.535, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 17, "held_sec": 3.288, "accepted": true, "measured_before": [-76.9, 0.96, -47.63, -0.26, -14.23, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 1.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -62.63, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865841.557559, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T17:04:01.650", "t_unix": 1793865841.65, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 18, "held_sec": 3.403, "accepted": true, "measured_before": [-76.9, 0.96, -47.72, -0.26, -14.32, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T17:04:01.751", "t_unix": 1793865841.752, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 19, "held_sec": 3.504, "accepted": true, "measured_before": [-76.9, 0.96, -49.65, -0.26, -14.32, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T17:04:01.853", "t_unix": 1793865841.854, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 20, "held_sec": 3.606, "accepted": true, "measured_before": [-76.9, 0.96, -49.65, -0.26, -14.32, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.98, "command": [-74.53, 1.31, -62.63, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865841.917214, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T17:04:01.987", "t_unix": 1793865841.988, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 2, "hold_n": 21, "held_sec": 3.74, "accepted": true, "released_during_job": true, "measured_before": [-76.9, 0.96, -59.32, -0.26, -14.32, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 3.31, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -74.32, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865842.010572, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T17:04:02.136", "t_unix": 1793865842.137, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 2, "halt_joint": 2, "measured_at_request": [-76.9, 0.96, -49.65, -0.26, -14.32, -26.71], "t_halt": 1793865842.144738, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-76.99, 0.7, -62.75, -0.35, -14.76, -26.71], "moved_after_request_deg": [-0.09, -0.26, -13.1, -0.09, -0.44, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T17:04:02.634", "t_unix": 1793865842.634, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 3, "hold_n": 0, "accepted": true, "measured_before": [-76.9, 1.14, -62.4, -0.35, -13.97, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.37, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -61.75, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865842.6776068, "measured_before_send": [-76.9, 1.14, -62.4, -0.35, -13.97, -26.71], "resends": [], "reached": true, "reached_angles": [-76.9, 0.52, -61.96, -0.43, -13.18, -26.71], "reach_err": 2.37, "elapsed_sec": 0.18, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T17:04:03.041", "t_unix": 1793865843.042, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 1, "held_sec": 0.408, "accepted": true, "measured_before": [-76.9, 0.61, -61.17, -0.35, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 0.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -46.17, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865843.061673, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T17:04:03.142", "t_unix": 1793865843.143, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 2, "held_sec": 0.509, "accepted": true, "measured_before": [-76.99, 0.61, -61.08, -0.35, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.46, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T17:04:03.243", "t_unix": 1793865843.243, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 3, "held_sec": 0.609, "accepted": true, "measured_before": [-76.9, 0.61, -60.38, -0.35, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T17:04:03.358", "t_unix": 1793865843.359, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 4, "held_sec": 0.725, "accepted": true, "measured_before": [-76.9, 0.61, -55.45, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 9.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T17:04:03.460", "t_unix": 1793865843.46, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 5, "held_sec": 0.826, "accepted": true, "measured_before": [-76.9, 0.61, -55.45, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 9.28, "command": [-74.53, 1.31, -46.17, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865843.526558, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T17:04:03.578", "t_unix": 1793865843.578, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 6, "held_sec": 0.944, "accepted": true, "measured_before": [-76.9, 0.61, -46.75, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 0.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -31.75, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865843.605691, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T17:04:03.679", "t_unix": 1793865843.679, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 7, "held_sec": 1.045, "accepted": true, "measured_before": [-76.9, 0.61, -45.26, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 13.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T17:04:03.779", "t_unix": 1793865843.78, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 8, "held_sec": 1.146, "accepted": true, "measured_before": [-76.9, 0.61, -44.73, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T17:04:03.881", "t_unix": 1793865843.882, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 9, "held_sec": 1.248, "accepted": true, "measured_before": [-76.9, 0.61, -44.73, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T17:04:03.982", "t_unix": 1793865843.982, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 10, "held_sec": 1.348, "accepted": true, "measured_before": [-76.9, 0.7, -44.73, -0.43, -12.74, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.98, "command": [-74.53, 1.31, -31.75, -0.96, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865844.045718, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T17:04:04.100", "t_unix": 1793865844.101, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 11, "held_sec": 1.467, "accepted": true, "measured_before": [-76.9, 0.7, -31.99, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 0.24, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -16.99, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865844.129496, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T17:04:04.215", "t_unix": 1793865844.216, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 12, "held_sec": 1.582, "accepted": true, "measured_before": [-76.9, 0.7, -30.76, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T17:04:04.316", "t_unix": 1793865844.316, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 13, "held_sec": 1.682, "accepted": true, "measured_before": [-76.9, 0.7, -30.05, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 13.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T17:04:04.433", "t_unix": 1793865844.433, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 14, "held_sec": 1.799, "accepted": true, "measured_before": [-76.9, 0.7, -25.31, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 8.32, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.32, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T17:04:04.535", "t_unix": 1793865844.535, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 15, "held_sec": 1.901, "accepted": true, "measured_before": [-76.9, 0.7, -21.0, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 4.01, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, -6.0, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865844.565855, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T17:04:04.636", "t_unix": 1793865844.637, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 16, "held_sec": 2.003, "accepted": true, "measured_before": [-76.9, 0.7, -17.4, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T17:04:04.753", "t_unix": 1793865844.753, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 17, "held_sec": 2.119, "accepted": true, "measured_before": [-76.9, 0.7, -15.64, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 9.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T17:04:04.854", "t_unix": 1793865844.855, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 18, "held_sec": 2.221, "accepted": true, "measured_before": [-76.9, 0.7, -13.97, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 7.97, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.97, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T17:04:04.955", "t_unix": 1793865844.956, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 19, "held_sec": 2.322, "accepted": true, "measured_before": [-76.9, 0.7, -9.66, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 3.66, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-74.53, 1.31, 5.34, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865844.981492, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T17:04:05.056", "t_unix": 1793865845.056, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 20, "held_sec": 2.422, "accepted": true, "measured_before": [-76.9, 0.7, -6.24, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 11.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T17:04:05.157", "t_unix": 1793865845.157, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 3, "hold_n": 21, "held_sec": 2.523, "accepted": true, "measured_before": [-76.9, 0.7, -4.83, -0.35, -12.65, -26.71], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T17:04:05.226", "t_unix": 1793865845.226, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 3, "halt_joint": 2, "measured_at_request": [-76.9, 0.7, -4.83, -0.35, -12.65, -26.71], "t_halt": 1793865845.226469, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-76.9, 1.58, -2.63, -0.35, -11.07, -26.71], "moved_after_request_deg": [0.0, 0.88, 2.2, 0.0, 1.58, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T17:04:07.237", "t_unix": 1793865847.238, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 4, "hold_n": 0, "accepted": true, "measured_before": [-77.16, 1.66, -2.63, -0.35, -11.07, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-73.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865847.2862568, "measured_before_send": [-77.16, 1.66, -2.63, -0.35, -11.07, -26.71], "resends": [], "reached": true, "reached_angles": [-73.21, 1.58, -0.7, -0.35, -11.51, -26.71], "reach_err": 2.11, "elapsed_sec": 0.22, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T17:04:08.644", "t_unix": 1793865848.645, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 6, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T17:04:07.641", "t_unix": 1793865847.641, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 5, "hold_n": 0, "accepted": true, "measured_before": [-73.03, 1.58, -0.7, -0.7, -11.51, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-72.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865847.685081, "measured_before_send": [-73.21, 1.58, -0.7, -0.7, -11.51, -26.71], "resends": [0.33, 0.73], "reached": false, "not_moved": true, "reached_angles": [-73.38, 1.58, -0.7, -0.7, -11.51, -26.71], "reach_err": 2.11, "elapsed_sec": 1.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T17:04:10.290", "t_unix": 1793865850.291, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 8, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T17:04:09.534", "t_unix": 1793865849.535, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 7, "hold_n": 0, "accepted": true, "measured_before": [-73.38, 1.58, -0.7, -0.7, -12.39, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-71.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865849.58505, "measured_before_send": [-73.38, 1.58, -0.7, -0.7, -12.39, -26.71], "resends": [0.34, 0.71], "reached": false, "not_moved": true, "reached_angles": [-73.38, 1.58, -0.7, -0.7, -12.39, -26.71], "reach_err": 1.93, "elapsed_sec": 1.06, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T17:04:11.238", "t_unix": 1793865851.238, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [-73.38, 1.58, -0.7, -0.7, -12.39, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-72.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865851.2779179, "measured_before_send": [-73.38, 1.58, -0.7, -0.7, -12.39, -26.71], "resends": [], "reached": true, "reached_angles": [-72.77, 1.58, -0.7, -0.7, -12.39, -26.71], "reach_err": 1.93, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T17:04:12.341", "t_unix": 1793865852.341, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [-72.33, 1.58, -0.7, -0.7, -12.48, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-71.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865852.389744, "measured_before_send": [-72.33, 1.58, -0.7, -0.7, -12.48, -26.71], "resends": [0.35, 0.69], "reached": false, "not_moved": true, "reached_angles": [-72.33, 1.58, -0.7, -0.7, -13.53, -26.71], "reach_err": 1.93, "elapsed_sec": 1.0, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T17:04:15.358", "t_unix": 1793865855.358, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 11, "hold_n": 0, "accepted": true, "measured_before": [-72.33, 1.58, -0.61, -0.7, -13.53, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-70.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865855.3972192, "measured_before_send": [-72.33, 1.58, -0.61, -0.7, -13.53, -26.71], "resends": [], "reached": true, "reached_angles": [-70.4, 1.58, -0.61, -0.35, -13.53, -26.71], "reach_err": 2.02, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T17:04:16.622", "t_unix": 1793865856.623, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T17:04:17.363", "t_unix": 1793865857.363, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 12, "hold_n": 0, "accepted": true, "measured_before": [-70.4, 1.49, -0.61, -0.96, -13.53, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-68.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865857.4002612, "measured_before_send": [-70.4, 1.49, -0.61, -0.96, -13.53, -26.71], "resends": [], "reached": true, "reached_angles": [-68.2, 1.49, -0.61, -0.61, -13.53, -26.71], "reach_err": 2.02, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T17:04:18.357", "t_unix": 1793865858.357, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 2.0, "hold_id": 13, "hold_n": 0, "accepted": true, "measured_before": [-68.29, 1.49, -0.61, -1.05, -13.53, -26.71], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-66.53, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865858.401164, "measured_before_send": [-68.29, 1.49, -0.61, -1.05, -13.53, -26.71], "resends": [], "reached": true, "reached_angles": [-66.79, 1.49, -0.61, -0.7, -13.53, -26.71], "reach_err": 2.02, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T17:04:18.760", "t_unix": 1793865858.76, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 13, "hold_n": 1, "held_sec": 0.403, "accepted": true, "measured_before": [-66.44, 1.49, -0.61, -1.14, -13.53, -26.71], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 0.09, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-51.44, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865858.774223, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T17:04:18.861", "t_unix": 1793865858.862, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 13, "hold_n": 2, "held_sec": 0.505, "accepted": true, "released_during_job": true, "measured_before": [-64.95, 1.49, -0.61, -0.96, -13.53, -26.8], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 13.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T17:04:19.012", "t_unix": 1793865859.012, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 13, "halt_joint": 0, "measured_at_request": [-66.44, 1.49, -0.61, -1.14, -13.53, -26.71], "t_halt": 1793865859.018802, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-58.97, 1.49, -0.61, -1.14, -13.53, -26.8], "moved_after_request_deg": [7.47, 0.0, 0.0, 0.0, 0.0, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T17:04:20.188", "t_unix": 1793865860.189, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 14, "hold_n": 0, "accepted": true, "measured_before": [-59.23, 1.49, -0.61, -1.23, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-57.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865860.244969, "measured_before_send": [-59.32, 1.49, -0.61, -1.23, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-57.65, 1.49, -0.61, -1.05, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T17:04:21.462", "t_unix": 1793865861.462, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 15, "hold_n": 0, "accepted": true, "measured_before": [-58.09, 1.49, -0.61, -1.23, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-56.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865861.499327, "measured_before_send": [-58.09, 1.49, -0.61, -1.23, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-56.77, 1.49, -0.61, -1.23, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T17:04:22.284", "t_unix": 1793865862.285, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [-57.04, 1.49, -0.61, -1.23, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-55.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865862.344672, "measured_before_send": [-57.04, 1.49, -0.61, -1.23, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-55.54, 1.49, -0.61, -1.23, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.11, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T17:04:23.680", "t_unix": 1793865863.681, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 17, "hold_n": 0, "accepted": true, "measured_before": [-56.07, 1.49, -0.61, -1.14, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-56.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865863.7214358, "measured_before_send": [-56.07, 1.49, -0.61, -1.14, -13.62, -26.8], "resends": [0.33, 0.68], "reached": false, "not_moved": true, "reached_angles": [-56.07, 1.49, -0.61, -1.14, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.99, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T17:04:25.024", "t_unix": 1793865865.025, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [-56.07, 1.49, -0.61, -1.05, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-57.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865865.0652428, "measured_before_send": [-56.07, 1.49, -0.61, -1.05, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-58.35, 1.49, -0.61, -0.96, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.3, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T17:04:25.986", "t_unix": 1793865865.987, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 19, "hold_n": 0, "accepted": true, "measured_before": [-58.0, 1.49, -0.61, -0.96, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-58.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865866.0283468, "measured_before_send": [-58.0, 1.49, -0.61, -0.96, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-59.06, 1.49, -0.61, -0.96, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T17:04:26.688", "t_unix": 1793865866.689, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [-59.23, 1.49, -0.61, -0.96, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-59.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865866.729129, "measured_before_send": [-59.23, 1.49, -0.61, -0.96, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-59.5, 1.49, -0.61, -0.96, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T17:04:27.445", "t_unix": 1793865867.445, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 21, "hold_n": 0, "accepted": true, "measured_before": [-60.11, 1.49, -0.61, -0.96, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -0.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865867.494032, "measured_before_send": [-60.11, 1.49, -0.61, -0.96, -13.62, -26.8], "resends": [], "reached": true, "reached_angles": [-61.17, 1.49, -0.61, -0.96, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 0.24, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T17:04:28.795", "t_unix": 1793865868.796, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T17:04:30.304", "t_unix": 1793865870.304, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 22, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 1.49, -0.61, -0.96, -13.62, -26.8], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -1.96, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865870.34772, "measured_before_send": [-61.17, 1.49, -0.61, -0.96, -13.62, -26.8], "resends": [0.35, 0.7], "reached": false, "not_moved": true, "reached_angles": [-61.17, 1.49, -0.61, -0.96, -13.62, -26.8], "reach_err": 2.02, "elapsed_sec": 1.07, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T17:04:31.568", "t_unix": 1793865871.569, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 22, "hold_n": 1, "held_sec": 1.264, "accepted": true, "measured_before": [-61.17, 1.49, -0.61, -0.96, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -15.96, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865871.591407, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T17:04:31.668", "t_unix": 1793865871.668, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 22, "hold_n": 2, "held_sec": 1.364, "accepted": true, "measured_before": [-61.17, 1.49, -0.61, -1.23, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 14.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T17:04:31.769", "t_unix": 1793865871.769, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 22, "hold_n": 3, "held_sec": 1.466, "accepted": true, "measured_before": [-61.17, 1.49, -0.61, -3.77, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T17:04:31.884", "t_unix": 1793865871.885, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 22, "hold_n": 4, "held_sec": 1.581, "accepted": true, "measured_before": [-61.17, 1.49, -0.61, -8.61, -13.62, -26.8], "start_source": "hold", "cmd_gap_deg": 2.02, "hold_lead_deg": 7.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T17:04:31.985", "t_unix": 1793865871.985, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 22, "halt_joint": 3, "measured_at_request": [-61.17, 1.49, -0.61, -8.61, -13.62, -26.8], "t_halt": 1793865871.985881, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.99, 2.28, 0.08, -14.15, -12.3, -26.8], "moved_after_request_deg": [0.18, 0.79, 0.69, -5.54, 1.32, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T17:04:32.939", "t_unix": 1793865872.939, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 23, "hold_n": 0, "accepted": true, "measured_before": [-61.08, 2.46, 0.43, -14.15, -12.21, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -13.15, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865872.977963, "measured_before_send": [-61.08, 2.46, 0.43, -14.15, -12.21, -26.89], "resends": [0.38, 0.73], "reached": false, "not_moved": true, "reached_angles": [-60.9, 1.49, 0.43, -13.88, -12.21, -26.89], "reach_err": 3.06, "elapsed_sec": 1.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T17:04:34.163", "t_unix": 1793865874.164, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 23, "hold_n": 1, "held_sec": 1.225, "accepted": true, "released_during_job": true, "measured_before": [-60.9, 1.49, 0.43, -13.88, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 0.73, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 1.12, -13.62, -26.98], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T17:04:35.066", "t_unix": 1793865875.067, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 24, "hold_n": 0, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -13.71, -12.21, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -12.15, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865875.116443, "measured_before_send": [-60.9, 1.49, 0.43, -13.71, -12.21, -26.89], "resends": [], "reached": false, "settled": true, "reached_angles": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "reach_err": 3.06, "elapsed_sec": 0.3, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T17:04:35.569", "t_unix": 1793865875.569, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 1, "held_sec": 0.503, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 2.26, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865875.589762, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T17:04:35.669", "t_unix": 1793865875.669, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 2, "held_sec": 0.603, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T17:04:35.769", "t_unix": 1793865875.769, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 3, "held_sec": 0.703, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T17:04:35.871", "t_unix": 1793865875.871, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 4, "held_sec": 0.805, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T17:04:35.986", "t_unix": 1793865875.986, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 5, "held_sec": 0.92, "accepted": true, "measured_before": [-60.9, 1.49, 0.43, -12.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 15.0, "command": [-60.97, 1.31, -2.63, 2.26, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865876.0479941, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T17:04:36.104", "t_unix": 1793865876.105, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 6, "held_sec": 1.038, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 1.84, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 0.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 16.84, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865876.133827, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T17:04:36.221", "t_unix": 1793865876.221, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 7, "held_sec": 1.155, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 2.1, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 14.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T17:04:36.322", "t_unix": 1793865876.323, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 8, "held_sec": 1.256, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 4.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 119, "t": "2026-11-05T17:04:36.424", "t_unix": 1793865876.424, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 9, "held_sec": 1.358, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 4.74, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.1, "command": [-60.97, 1.31, -2.63, 16.84, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865876.487421, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 120, "t": "2026-11-05T17:04:36.540", "t_unix": 1793865876.541, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 10, "held_sec": 1.474, "accepted": true, "measured_before": [-60.99, 1.49, 0.43, 13.79, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 3.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 28.79, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865876.568258, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 121, "t": "2026-11-05T17:04:36.641", "t_unix": 1793865876.641, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 11, "held_sec": 1.575, "accepted": true, "measured_before": [-60.99, 1.49, 0.43, 16.34, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 122, "t": "2026-11-05T17:04:36.741", "t_unix": 1793865876.741, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 12, "held_sec": 1.675, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 16.69, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 123, "t": "2026-11-05T17:04:36.856", "t_unix": 1793865876.857, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 13, "held_sec": 1.79, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 19.59, -12.21, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 9.2, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.2, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 124, "t": "2026-11-05T17:04:36.956", "t_unix": 1793865876.957, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 14, "held_sec": 1.89, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 24.16, -12.3, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 4.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 39.16, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865876.9879801, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 125, "t": "2026-11-05T17:04:37.074", "t_unix": 1793865877.074, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 15, "held_sec": 2.008, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 28.03, -12.3, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 126, "t": "2026-11-05T17:04:37.189", "t_unix": 1793865877.189, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 16, "held_sec": 2.123, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 28.91, -12.3, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 127, "t": "2026-11-05T17:04:37.292", "t_unix": 1793865877.292, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 17, "held_sec": 2.226, "accepted": true, "measured_before": [-61.08, 1.49, 0.43, 36.82, -12.65, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 2.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 51.82, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865877.434888, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 128, "t": "2026-11-05T17:04:37.492", "t_unix": 1793865877.492, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 18, "held_sec": 2.426, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 38.75, -12.83, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 129, "t": "2026-11-05T17:04:37.660", "t_unix": 1793865877.661, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 19, "held_sec": 2.594, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 38.75, -12.83, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 130, "t": "2026-11-05T17:04:37.761", "t_unix": 1793865877.761, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 20, "held_sec": 2.695, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 38.75, -12.83, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 13.07, "command": [-60.97, 1.31, -2.63, 51.82, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865877.784176, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 131, "t": "2026-11-05T17:04:37.861", "t_unix": 1793865877.861, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 21, "held_sec": 2.795, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 43.24, -12.83, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 132, "t": "2026-11-05T17:04:38.044", "t_unix": 1793865878.045, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 22, "held_sec": 2.978, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 45.0, -12.83, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 6.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 133, "t": "2026-11-05T17:04:38.145", "t_unix": 1793865878.146, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 23, "held_sec": 3.079, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 49.57, -13.18, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 2.25, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 64.57, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865878.180875, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 134, "t": "2026-11-05T17:04:38.347", "t_unix": 1793865878.348, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 24, "held_sec": 3.281, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 52.47, -13.44, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 135, "t": "2026-11-05T17:04:38.464", "t_unix": 1793865878.465, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 25, "held_sec": 3.398, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 52.47, -13.44, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 136, "t": "2026-11-05T17:04:38.580", "t_unix": 1793865878.58, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 26, "held_sec": 3.514, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 61.25, -13.44, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 3.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 76.25, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865878.608187, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 137, "t": "2026-11-05T17:04:38.681", "t_unix": 1793865878.682, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 27, "held_sec": 3.616, "accepted": true, "measured_before": [-61.17, 1.49, 0.43, 63.98, -13.79, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 138, "t": "2026-11-05T17:04:38.783", "t_unix": 1793865878.783, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 24, "hold_n": 28, "held_sec": 3.717, "accepted": true, "released_during_job": true, "measured_before": [-61.17, 1.49, 0.43, 64.07, -14.5, -26.89], "start_source": "mixed", "cmd_gap_deg": 3.06, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 139, "t": "2026-11-05T17:04:38.818", "t_unix": 1793865878.819, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 24, "halt_joint": 3, "measured_at_request": [-61.17, 1.49, 0.43, 63.98, -13.79, -26.89], "t_halt": 1793865878.822133, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.08, 2.28, 1.23, 64.16, -13.97, -26.89], "moved_after_request_deg": [0.09, 0.79, 0.8, 0.18, -0.18, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 140, "t": "2026-11-05T17:04:39.387", "t_unix": 1793865879.388, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 25, "hold_n": 0, "accepted": true, "measured_before": [-61.08, 2.46, 1.4, 64.16, -13.53, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 63.16, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865879.4267561, "measured_before_send": [-61.08, 2.46, 1.4, 64.16, -13.53, -26.89], "resends": [0.35, 0.7], "reached": false, "not_moved": true, "reached_angles": [-61.08, 2.46, 1.4, 64.16, -13.53, -26.89], "reach_err": 4.03, "elapsed_sec": 1.06, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 141, "t": "2026-11-05T17:04:41.031", "t_unix": 1793865881.032, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -1.0, "hold_id": 26, "hold_n": 0, "accepted": true, "measured_before": [-61.08, 2.46, 1.4, 64.16, -13.53, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 62.16, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865881.069206, "measured_before_send": [-61.08, 2.46, 1.4, 64.16, -13.53, -26.89], "resends": [], "reached": false, "settled": true, "reached_angles": [-60.99, 1.58, 0.17, 63.36, -13.27, -26.89], "reach_err": 2.8, "elapsed_sec": 0.4, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 142, "t": "2026-11-05T17:04:41.619", "t_unix": 1793865881.62, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 1, "held_sec": 0.589, "accepted": true, "measured_before": [-60.99, 1.58, 0.17, 63.36, -13.27, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 1.2, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 48.36, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865881.6438038, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 143, "t": "2026-11-05T17:04:41.803", "t_unix": 1793865881.803, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 2, "held_sec": 0.772, "accepted": true, "measured_before": [-60.99, 1.58, 0.17, 61.61, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 13.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 144, "t": "2026-11-05T17:04:41.919", "t_unix": 1793865881.92, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 3, "held_sec": 0.889, "accepted": true, "measured_before": [-60.99, 1.58, 0.17, 56.95, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 8.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 145, "t": "2026-11-05T17:04:42.022", "t_unix": 1793865882.022, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 4, "held_sec": 0.991, "accepted": true, "measured_before": [-60.99, 1.58, 0.17, 52.55, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 37.55, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865882.05266, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 146, "t": "2026-11-05T17:04:42.137", "t_unix": 1793865882.137, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 5, "held_sec": 1.106, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 47.81, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 147, "t": "2026-11-05T17:04:42.323", "t_unix": 1793865882.323, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 6, "held_sec": 1.292, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 46.49, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 8.94, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.94, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 148, "t": "2026-11-05T17:04:42.423", "t_unix": 1793865882.423, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 7, "held_sec": 1.392, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 41.83, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 26.83, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865882.455574, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 149, "t": "2026-11-05T17:04:42.539", "t_unix": 1793865882.539, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 8, "held_sec": 1.508, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 38.75, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 150, "t": "2026-11-05T17:04:42.655", "t_unix": 1793865882.655, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 9, "held_sec": 1.624, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 32.95, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 6.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 151, "t": "2026-11-05T17:04:42.825", "t_unix": 1793865882.825, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 10, "held_sec": 1.794, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 30.58, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 15.58, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865882.849866, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 152, "t": "2026-11-05T17:04:43.009", "t_unix": 1793865883.01, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 11, "held_sec": 1.979, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 27.42, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 153, "t": "2026-11-05T17:04:43.126", "t_unix": 1793865883.127, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 12, "held_sec": 2.096, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 24.16, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 154, "t": "2026-11-05T17:04:43.227", "t_unix": 1793865883.228, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 13, "held_sec": 2.197, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 20.03, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 5.03, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865883.260561, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 155, "t": "2026-11-05T17:04:43.466", "t_unix": 1793865883.467, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 14, "held_sec": 2.436, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 16.43, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 156, "t": "2026-11-05T17:04:43.567", "t_unix": 1793865883.568, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 15, "held_sec": 2.536, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 16.43, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 157, "t": "2026-11-05T17:04:43.668", "t_unix": 1793865883.668, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 16, "held_sec": 2.637, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 16.34, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 158, "t": "2026-11-05T17:04:43.785", "t_unix": 1793865883.785, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 17, "held_sec": 2.754, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 16.34, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 11.31, "command": [-60.97, 1.31, -2.63, 5.03, -13.62, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865883.805225, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 159, "t": "2026-11-05T17:04:43.902", "t_unix": 1793865883.903, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 18, "held_sec": 2.872, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 15.73, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 160, "t": "2026-11-05T17:04:44.018", "t_unix": 1793865884.018, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 19, "held_sec": 2.987, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 5.71, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 0.68, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -9.29, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865884.350901, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 161, "t": "2026-11-05T17:04:44.486", "t_unix": 1793865884.487, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 20, "held_sec": 3.455, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, 4.04, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 162, "t": "2026-11-05T17:04:44.601", "t_unix": 1793865884.601, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 21, "held_sec": 3.57, "accepted": true, "measured_before": [-61.08, 1.58, 0.17, -0.26, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 9.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 163, "t": "2026-11-05T17:04:44.702", "t_unix": 1793865884.702, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": -15.0, "hold_id": 26, "hold_n": 22, "held_sec": 3.671, "accepted": true, "released_during_job": true, "measured_before": [-61.08, 1.58, 0.17, -5.44, -13.18, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 3.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -20.44, -13.62, -26.98], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 164, "t": "2026-11-05T17:04:44.787", "t_unix": 1793865884.787, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 26, "halt_joint": 3, "measured_at_request": [-61.08, 1.58, 0.17, -0.26, -13.18, -26.89], "t_halt": 1793865884.787495, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.99, 2.28, 0.79, -8.52, -12.12, -26.89], "moved_after_request_deg": [0.09, 0.7, 0.62, -8.26, 1.06, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 166, "t": "2026-11-05T17:04:46.874", "t_unix": 1793865886.875, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 28, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 167, "t": "2026-11-05T17:04:47.396", "t_unix": 1793865887.397, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 29, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 165, "t": "2026-11-05T17:04:46.182", "t_unix": 1793865886.183, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 27, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 2.63, 1.14, -8.52, -11.6, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.77, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -7.52, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865886.224917, "measured_before_send": [-61.17, 2.63, 1.14, -8.52, -11.6, -26.89], "resends": [0.4, 0.75], "reached": false, "settled": true, "reached_angles": [-60.9, 1.49, 0.17, -8.17, -11.6, -26.89], "reach_err": 2.8, "elapsed_sec": 1.27, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 168, "t": "2026-11-05T17:04:48.282", "t_unix": 1793865888.283, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 30, "hold_n": 0, "accepted": true, "measured_before": [-60.9, 1.49, 0.17, -8.08, -11.68, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.8, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -6.52, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865888.322709, "measured_before_send": [-60.9, 1.49, 0.17, -8.08, -11.68, -26.89], "resends": [], "reached": false, "settled": true, "reached_angles": [-60.99, 1.49, 0.17, -7.03, -11.77, -26.89], "reach_err": 2.8, "elapsed_sec": 0.37, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 169, "t": "2026-11-05T17:04:48.752", "t_unix": 1793865888.752, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 15.0, "hold_id": 30, "hold_n": 1, "held_sec": 0.471, "accepted": true, "released_during_job": true, "measured_before": [-60.99, 1.49, 0.17, -7.03, -11.77, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 0.51, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, 7.97, -13.62, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865888.774163, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 170, "t": "2026-11-05T17:04:48.921", "t_unix": 1793865888.922, "button": null, "button_name": null, "kind": "halt", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "released_while_sending", "hold_id": 30, "halt_joint": 3, "measured_at_request": [-60.99, 1.49, 0.17, -7.03, -11.77, -26.89], "t_halt": 1793865888.92335, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.08, 1.49, 0.17, -3.69, -12.21, -26.89], "moved_after_request_deg": [-0.09, 0.0, 0.0, 3.34, -0.44, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 171, "t": "2026-11-05T17:04:49.121", "t_unix": 1793865889.122, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 3, "step_deg": 1.0, "execute": true, "joint": 3, "delta": 1.0, "hold_id": 31, "hold_n": 0, "accepted": true, "measured_before": [-61.08, 1.49, 0.17, -3.69, -12.65, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.8, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -13.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865889.15421, "measured_before_send": [-61.08, 1.49, 0.17, -3.69, -12.65, -26.89], "resends": [0.4, 0.74], "reached": false, "not_moved": true, "reached_angles": [-61.08, 1.49, 0.17, -3.69, -12.74, -26.89], "reach_err": 2.8, "elapsed_sec": 1.05, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 172, "t": "2026-11-05T17:04:50.668", "t_unix": 1793865890.669, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 173, "t": "2026-11-05T17:04:51.338", "t_unix": 1793865891.339, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 32, "hold_n": 0, "accepted": true, "measured_before": [-61.08, 1.49, 0.17, -3.69, -12.74, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.8, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -14.62, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865891.396986, "measured_before_send": [-61.08, 1.49, 0.17, -3.69, -12.74, -26.89], "resends": [], "reached": true, "reached_angles": [-61.08, 1.49, 0.17, -2.98, -14.15, -26.89], "reach_err": 2.8, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 174, "t": "2026-11-05T17:04:51.738", "t_unix": 1793865891.739, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 1, "held_sec": 0.4, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -14.23, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 0.39, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -29.23, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865891.7658381, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 175, "t": "2026-11-05T17:04:51.855", "t_unix": 1793865891.856, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 2, "held_sec": 0.517, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -14.23, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 176, "t": "2026-11-05T17:04:51.957", "t_unix": 1793865891.957, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 3, "held_sec": 0.618, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -16.69, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 177, "t": "2026-11-05T17:04:52.072", "t_unix": 1793865892.073, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 4, "held_sec": 0.734, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -21.7, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 7.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 178, "t": "2026-11-05T17:04:52.173", "t_unix": 1793865892.174, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 5, "held_sec": 0.835, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -26.19, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 3.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -41.19, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865892.203181, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 179, "t": "2026-11-05T17:04:52.273", "t_unix": 1793865892.274, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 6, "held_sec": 0.935, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -29.0, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 180, "t": "2026-11-05T17:04:52.374", "t_unix": 1793865892.374, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 7, "held_sec": 1.035, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -29.17, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 181, "t": "2026-11-05T17:04:52.475", "t_unix": 1793865892.475, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 8, "held_sec": 1.137, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -29.17, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 182, "t": "2026-11-05T17:04:52.575", "t_unix": 1793865892.575, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 9, "held_sec": 1.237, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -29.17, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.02, "command": [-60.97, 1.31, -2.63, -2.69, -41.19, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865892.598741, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 183, "t": "2026-11-05T17:04:52.761", "t_unix": 1793865892.762, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 10, "held_sec": 1.423, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -36.91, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -51.91, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865892.924107, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 184, "t": "2026-11-05T17:04:52.981", "t_unix": 1793865892.982, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 11, "held_sec": 1.643, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -39.9, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 185, "t": "2026-11-05T17:04:53.082", "t_unix": 1793865893.082, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 12, "held_sec": 1.744, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -41.48, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 186, "t": "2026-11-05T17:04:53.183", "t_unix": 1793865893.183, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 13, "held_sec": 1.845, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -41.57, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 187, "t": "2026-11-05T17:04:53.283", "t_unix": 1793865893.284, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 14, "held_sec": 1.945, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -41.57, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.34, "command": [-60.97, 1.31, -2.63, -2.69, -51.91, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865893.3050082, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 188, "t": "2026-11-05T17:04:53.400", "t_unix": 1793865893.4, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 15, "held_sec": 2.061, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -41.57, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 189, "t": "2026-11-05T17:04:53.500", "t_unix": 1793865893.5, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 16, "held_sec": 2.161, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -43.76, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 8.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 190, "t": "2026-11-05T17:04:53.600", "t_unix": 1793865893.601, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 17, "held_sec": 2.262, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.98, -47.72, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -62.72, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865893.662529, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 191, "t": "2026-11-05T17:04:53.717", "t_unix": 1793865893.717, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 18, "held_sec": 2.378, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.9, -51.94, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 192, "t": "2026-11-05T17:04:53.831", "t_unix": 1793865893.832, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 19, "held_sec": 2.493, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.9, -52.55, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 193, "t": "2026-11-05T17:04:53.932", "t_unix": 1793865893.933, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 20, "held_sec": 2.594, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.9, -56.33, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 6.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 194, "t": "2026-11-05T17:04:54.047", "t_unix": 1793865894.047, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 21, "held_sec": 2.709, "accepted": true, "measured_before": [-61.17, 1.49, 0.17, -2.9, -61.69, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 1.03, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -76.69, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865894.121855, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 195, "t": "2026-11-05T17:04:54.185", "t_unix": 1793865894.186, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 22, "held_sec": 2.847, "accepted": true, "measured_before": [-61.08, 1.49, 0.17, -2.9, -72.59, -26.89], "start_source": "hold", "cmd_gap_deg": 2.8, "hold_lead_deg": 4.1, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -87.59, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865894.483948, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 196, "t": "2026-11-05T17:04:54.538", "t_unix": 1793865894.538, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 23, "held_sec": 3.199, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -76.2, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 197, "t": "2026-11-05T17:04:54.653", "t_unix": 1793865894.654, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 24, "held_sec": 3.315, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -78.04, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 198, "t": "2026-11-05T17:04:54.757", "t_unix": 1793865894.757, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 25, "held_sec": 3.419, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -78.04, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 199, "t": "2026-11-05T17:04:54.857", "t_unix": 1793865894.858, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 26, "held_sec": 3.519, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -78.04, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 9.55, "command": [-60.97, 1.31, -2.63, -2.69, -87.59, -26.98], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865894.881484, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 200, "t": "2026-11-05T17:04:54.960", "t_unix": 1793865894.96, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 27, "held_sec": 3.621, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -78.04, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 9.55, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.55, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 201, "t": "2026-11-05T17:04:55.077", "t_unix": 1793865895.077, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 28, "held_sec": 3.739, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -80.5, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 202, "t": "2026-11-05T17:04:55.177", "t_unix": 1793865895.178, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 29, "held_sec": 3.839, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -84.99, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 2.6, "clip": [{"joint": 4, "want": -99.99, "cmd": -90.0, "limit": "J4_SAFE", "bound": -90.0}], "refused": [], "limit_ja": "j4 を -99.99° → -90.00° に切った（J4_SAFE -90.00°）", "limit_ascii": "j4 clipped -99.99->-90.00 (J4_SAFE -90.00)", "command": [-60.97, 1.31, -2.63, -2.69, -90.0, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865895.24459, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 203, "t": "2026-11-05T17:04:55.297", "t_unix": 1793865895.297, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 32, "hold_n": 30, "held_sec": 3.959, "accepted": true, "measured_before": [-61.17, 1.49, 0.08, -2.9, -88.76, -26.89], "start_source": "hold", "cmd_gap_deg": 2.71, "hold_lead_deg": 1.24, "clip": [], "refused": [{"joint": 4, "why": "at_limit", "value": -103.76, "lo": -90.0, "hi": -90.0, "limit": "J4_SAFE"}], "limit_ja": "j4 -103.76° は送らない：範囲の端にいて、押した向きに進めない（範囲 [-90.00, -90.00]・J4_SAFE）", "limit_ascii": "j4 refused at_limit -103.76 [-90.00, -90.00] (J4_SAFE)", "sent": false, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 204, "t": "2026-11-05T17:04:55.315", "t_unix": 1793865895.315, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "hold_not_sent", "hold_id": 32, "halt_joint": 4, "measured_at_request": [-61.17, 1.49, 0.08, -2.9, -88.76, -26.89], "t_halt": 1793865895.3164642, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.08, 2.1, 0.52, -2.9, -89.12, -26.89], "moved_after_request_deg": [0.09, 0.61, 0.44, 0.0, -0.36, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 205, "t": "2026-11-05T17:04:55.819", "t_unix": 1793865895.82, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 1.0, "hold_id": 33, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 2.28, 0.79, -2.98, -88.94, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.42, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -88.12, -26.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865895.857111, "measured_before_send": [-61.17, 2.28, 0.79, -2.98, -88.94, -26.89], "resends": [0.35, 0.69], "reached": false, "not_moved": true, "reached_angles": [-61.17, 1.14, -0.26, -3.16, -88.76, -26.89], "reach_err": 2.37, "elapsed_sec": 1.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 206, "t": "2026-11-05T17:04:56.943", "t_unix": 1793865896.944, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 1, "held_sec": 1.124, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -88.76, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 0.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -73.76, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865896.9754372, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 207, "t": "2026-11-05T17:04:57.045", "t_unix": 1793865897.045, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 2, "held_sec": 1.226, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -88.76, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 208, "t": "2026-11-05T17:04:57.159", "t_unix": 1793865897.159, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 3, "held_sec": 1.34, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -86.57, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.81, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.81, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 209, "t": "2026-11-05T17:04:57.259", "t_unix": 1793865897.26, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 4, "held_sec": 1.44, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -81.91, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 8.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 210, "t": "2026-11-05T17:04:57.376", "t_unix": 1793865897.376, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 5, "held_sec": 1.557, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -76.28, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -61.28, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865897.419462, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 211, "t": "2026-11-05T17:04:57.560", "t_unix": 1793865897.561, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 6, "held_sec": 1.741, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -73.38, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 212, "t": "2026-11-05T17:04:57.661", "t_unix": 1793865897.661, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 7, "held_sec": 1.842, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -70.66, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 9.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 213, "t": "2026-11-05T17:04:57.777", "t_unix": 1793865897.777, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 8, "held_sec": 1.958, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -65.47, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -50.47, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865897.8012888, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 214, "t": "2026-11-05T17:04:57.894", "t_unix": 1793865897.894, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 9, "held_sec": 2.075, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -59.32, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 215, "t": "2026-11-05T17:04:58.076", "t_unix": 1793865898.076, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 10, "held_sec": 2.257, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.25, -58.71, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 8.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 216, "t": "2026-11-05T17:04:58.177", "t_unix": 1793865898.177, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 11, "held_sec": 2.358, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -54.22, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -39.22, -26.98], "sent": true, "reached": null, "no_check": true, "t_send": 1793865898.20273, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 217, "t": "2026-11-05T17:04:58.344", "t_unix": 1793865898.345, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 12, "held_sec": 2.525, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -49.57, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 10.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 218, "t": "2026-11-05T17:04:58.445", "t_unix": 1793865898.445, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 13, "held_sec": 2.626, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -47.81, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 8.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 219, "t": "2026-11-05T17:04:58.546", "t_unix": 1793865898.546, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 14, "held_sec": 2.727, "accepted": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -45.35, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 6.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 220, "t": "2026-11-05T17:04:58.660", "t_unix": 1793865898.661, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 33, "hold_n": 15, "held_sec": 2.841, "accepted": true, "released_during_job": true, "measured_before": [-61.17, 1.14, -0.26, -3.16, -40.86, -26.89], "start_source": "hold", "cmd_gap_deg": 2.37, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -25.86, -26.98], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 221, "t": "2026-11-05T17:04:58.694", "t_unix": 1793865898.694, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 33, "halt_joint": 4, "measured_at_request": [-61.17, 1.14, -0.26, -3.16, -45.35, -26.89], "t_halt": 1793865898.70105, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.99, 2.02, 0.43, -3.16, -37.08, -26.89], "moved_after_request_deg": [0.18, 0.88, 0.69, 0.0, 8.27, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 222, "t": "2026-11-05T17:04:59.587", "t_unix": 1793865899.588, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 223, "t": "2026-11-05T17:05:02.938", "t_unix": 1793865902.938, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 34, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 2.1, 0.7, -3.16, -37.0, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -27.98], "sent": true, "timeout_sec": 8.0, "t_send": 1793865902.992507, "measured_before_send": [-61.17, 2.1, 0.7, -3.16, -37.0, -26.89], "resends": [], "reached": false, "settled": true, "reached_angles": [-61.08, 1.58, 0.26, -3.16, -38.05, -27.24], "reach_err": 2.89, "elapsed_sec": 0.41, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 224, "t": "2026-11-05T17:05:03.541", "t_unix": 1793865903.542, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 1, "held_sec": 0.604, "accepted": true, "measured_before": [-61.08, 1.58, 0.26, -3.16, -38.05, -27.24], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 0.74, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -42.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793865903.565255, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 225, "t": "2026-11-05T17:05:03.641", "t_unix": 1793865903.642, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 2, "held_sec": 0.704, "accepted": true, "measured_before": [-61.08, 1.58, 0.26, -3.16, -38.05, -31.55], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 10.69, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.69, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 226, "t": "2026-11-05T17:05:03.840", "t_unix": 1793865903.841, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 3, "held_sec": 0.903, "accepted": true, "measured_before": [-61.08, 1.58, 0.26, -3.16, -38.05, -39.46], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 2.78, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -54.46], "sent": true, "reached": null, "no_check": true, "t_send": 1793865903.986239, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 227, "t": "2026-11-05T17:05:04.125", "t_unix": 1793865904.126, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 4, "held_sec": 1.188, "accepted": true, "measured_before": [-61.08, 1.58, 0.26, -3.16, -38.05, -41.66], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 12.8, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.8, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 228, "t": "2026-11-05T17:05:04.240", "t_unix": 1793865904.241, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 5, "held_sec": 1.303, "accepted": true, "measured_before": [-61.08, 1.58, 0.26, -3.16, -38.05, -49.92], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 4.54, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -64.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865904.389069, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 230, "t": "2026-11-05T17:05:05.973", "t_unix": 1793865905.973, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 35, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 231, "t": "2026-11-05T17:05:07.932", "t_unix": 1793865907.933, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 36, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 232, "t": "2026-11-05T17:05:09.412", "t_unix": 1793865909.413, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 37, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 233, "t": "2026-11-05T17:05:11.692", "t_unix": 1793865911.692, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 38, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 229, "t": "2026-11-05T17:05:04.561", "t_unix": 1793865904.561, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -15.0, "hold_id": 34, "hold_n": 6, "held_sec": 1.623, "accepted": true, "released_during_job": true, "measured_before": [-61.08, 1.58, 0.26, -2.98, -39.11, -64.59], "start_source": "hold", "cmd_gap_deg": 2.89, "hold_lead_deg": 0.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -79.59], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 234, "t": "2026-11-05T17:05:11.827", "t_unix": 1793865911.827, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 34, "halt_joint": 5, "measured_at_request": [-61.08, 1.58, 0.26, -3.16, -38.05, -49.92], "t_halt": 1793865911.827944, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.9, 2.72, 1.14, -2.98, -37.52, -64.59], "moved_after_request_deg": [0.18, 1.14, 0.88, 0.18, 0.53, -14.67], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 235, "t": "2026-11-05T17:05:13.236", "t_unix": 1793865913.237, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 1.0, "hold_id": 39, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 2.72, 1.23, -3.07, -37.44, -64.59], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.86, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -63.59], "sent": true, "timeout_sec": 8.0, "t_send": 1793865913.276542, "measured_before_send": [-61.17, 2.72, 1.23, -3.07, -37.44, -64.59], "resends": [], "reached": false, "settled": true, "reached_angles": [-60.9, 1.49, 0.0, -3.16, -37.52, -64.24], "reach_err": 2.63, "elapsed_sec": 0.31, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 236, "t": "2026-11-05T17:05:13.730", "t_unix": 1793865913.731, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 1, "held_sec": 0.494, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -64.24], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 0.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -49.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793865913.749675, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 237, "t": "2026-11-05T17:05:13.831", "t_unix": 1793865913.831, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 2, "held_sec": 0.595, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -60.11], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 238, "t": "2026-11-05T17:05:14.031", "t_unix": 1793865914.031, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 3, "held_sec": 0.795, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -51.24], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 2.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -36.24], "sent": true, "reached": null, "no_check": true, "t_send": 1793865914.200968, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 239, "t": "2026-11-05T17:05:14.286", "t_unix": 1793865914.286, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 4, "held_sec": 1.05, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -49.92], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 240, "t": "2026-11-05T17:05:14.386", "t_unix": 1793865914.387, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 5, "held_sec": 1.15, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -48.16], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 241, "t": "2026-11-05T17:05:14.487", "t_unix": 1793865914.487, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 6, "held_sec": 1.251, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -45.17], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 8.93, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.93, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 242, "t": "2026-11-05T17:05:14.587", "t_unix": 1793865914.588, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 7, "held_sec": 1.352, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -40.16], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 3.92, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -25.16], "sent": true, "reached": null, "no_check": true, "t_send": 1793865914.651677, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 243, "t": "2026-11-05T17:05:14.802", "t_unix": 1793865914.803, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": 15.0, "hold_id": 39, "hold_n": 8, "held_sec": 1.567, "accepted": true, "released_during_job": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -36.38], "start_source": "hold", "cmd_gap_deg": 2.63, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 244, "t": "2026-11-05T17:05:14.837", "t_unix": 1793865914.837, "button": null, "button_name": null, "kind": "halt", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 39, "halt_joint": 5, "measured_at_request": [-60.9, 1.49, 0.0, -3.16, -37.52, -40.16], "t_halt": 1793865914.8372312, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.9, 1.49, 0.0, -3.16, -37.52, -31.64], "moved_after_request_deg": [0.0, 0.0, 0.0, 0.0, 0.0, 8.52], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 246, "t": "2026-11-05T17:05:16.478", "t_unix": 1793865916.478, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 41, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 245, "t": "2026-11-05T17:05:15.756", "t_unix": 1793865915.757, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 5, "step_deg": 1.0, "execute": true, "joint": 5, "delta": -1.0, "hold_id": 40, "hold_n": 0, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -3.16, -37.52, -25.92], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 5.72, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -2.63, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865915.817143, "measured_before_send": [-60.9, 1.49, 0.0, -3.16, -37.52, -25.92], "resends": [0.4, 0.73], "reached": false, "not_moved": true, "reached_angles": [-60.9, 1.49, 0.0, -3.16, -38.23, -25.75], "reach_err": 2.63, "elapsed_sec": 1.04, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 247, "t": "2026-11-05T17:05:18.268", "t_unix": 1793865918.269, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 248, "t": "2026-11-05T17:05:19.091", "t_unix": 1793865919.091, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 249, "t": "2026-11-05T17:05:20.132", "t_unix": 1793865920.132, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 42, "hold_n": 0, "accepted": true, "measured_before": [-60.9, 1.49, 0.0, -2.98, -38.32, -25.57], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -3.63, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865920.176699, "measured_before_send": [-60.9, 1.49, 0.0, -2.98, -38.32, -25.48], "resends": [], "reached": false, "settled": true, "reached_angles": [-61.08, 1.49, -2.02, -2.98, -40.07, -25.75], "reach_err": 2.99, "elapsed_sec": 0.62, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 250, "t": "2026-11-05T17:05:20.852", "t_unix": 1793865920.853, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 1, "held_sec": 0.721, "accepted": true, "measured_before": [-61.08, 1.49, -2.02, -2.98, -40.07, -25.75], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 1.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -17.02, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865920.873569, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 251, "t": "2026-11-05T17:05:20.954", "t_unix": 1793865920.955, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 2, "held_sec": 0.823, "accepted": true, "measured_before": [-61.08, 1.49, -3.25, -2.98, -40.07, -25.83], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 252, "t": "2026-11-05T17:05:21.123", "t_unix": 1793865921.123, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 3, "held_sec": 0.991, "accepted": true, "measured_before": [-61.17, 1.49, -5.36, -2.98, -40.07, -25.83], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 253, "t": "2026-11-05T17:05:21.224", "t_unix": 1793865921.224, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 4, "held_sec": 1.092, "accepted": true, "measured_before": [-61.17, 1.49, -9.58, -2.98, -40.07, -25.83], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 7.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 254, "t": "2026-11-05T17:05:21.340", "t_unix": 1793865921.34, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 5, "held_sec": 1.208, "accepted": true, "measured_before": [-61.17, 1.49, -14.5, -2.98, -40.07, -25.83], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -29.5, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865921.385984, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 255, "t": "2026-11-05T17:05:21.522", "t_unix": 1793865921.523, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 6, "held_sec": 1.391, "accepted": true, "measured_before": [-61.17, 1.49, -15.82, -2.98, -40.25, -25.83], "start_source": "mixed", "cmd_gap_deg": 3.17, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 256, "t": "2026-11-05T17:05:21.624", "t_unix": 1793865921.624, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 7, "held_sec": 1.492, "accepted": true, "measured_before": [-61.17, 1.49, -18.98, -2.98, -40.25, -25.92], "start_source": "mixed", "cmd_gap_deg": 3.17, "hold_lead_deg": 10.52, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.52, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 257, "t": "2026-11-05T17:05:21.738", "t_unix": 1793865921.739, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 8, "held_sec": 1.607, "accepted": true, "measured_before": [-61.17, 1.49, -23.99, -2.98, -40.25, -25.92], "start_source": "mixed", "cmd_gap_deg": 3.17, "hold_lead_deg": 5.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 258, "t": "2026-11-05T17:05:21.854", "t_unix": 1793865921.855, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 9, "held_sec": 1.722, "accepted": true, "measured_before": [-61.17, 1.4, -28.12, -2.98, -40.34, -25.92], "start_source": "mixed", "cmd_gap_deg": 3.26, "hold_lead_deg": 1.38, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -43.12, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865921.877741, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 259, "t": "2026-11-05T17:05:21.956", "t_unix": 1793865921.956, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 10, "held_sec": 1.824, "accepted": true, "measured_before": [-61.17, 1.14, -30.32, -2.9, -40.69, -25.92], "start_source": "mixed", "cmd_gap_deg": 3.61, "hold_lead_deg": 12.8, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.8, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 260, "t": "2026-11-05T17:05:22.124", "t_unix": 1793865922.125, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 11, "held_sec": 1.993, "accepted": true, "measured_before": [-61.17, 1.14, -32.34, -2.9, -40.69, -25.92], "start_source": "mixed", "cmd_gap_deg": 3.61, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 261, "t": "2026-11-05T17:05:22.226", "t_unix": 1793865922.227, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 12, "held_sec": 2.095, "accepted": true, "measured_before": [-61.17, 1.14, -36.91, -2.9, -40.69, -26.01], "start_source": "mixed", "cmd_gap_deg": 3.61, "hold_lead_deg": 6.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 262, "t": "2026-11-05T17:05:22.343", "t_unix": 1793865922.344, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 13, "held_sec": 2.211, "accepted": true, "measured_before": [-61.17, 1.14, -41.13, -2.9, -40.69, -26.01], "start_source": "mixed", "cmd_gap_deg": 3.61, "hold_lead_deg": 1.99, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -56.13, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865922.367311, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 263, "t": "2026-11-05T17:05:22.460", "t_unix": 1793865922.461, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 14, "held_sec": 2.328, "accepted": true, "measured_before": [-61.17, 0.87, -42.27, -2.9, -41.04, -26.01], "start_source": "mixed", "cmd_gap_deg": 3.96, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 264, "t": "2026-11-05T17:05:22.563", "t_unix": 1793865922.563, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 15, "held_sec": 2.431, "accepted": true, "measured_before": [-61.17, 0.87, -44.03, -2.9, -41.04, -26.01], "start_source": "mixed", "cmd_gap_deg": 3.96, "hold_lead_deg": 12.1, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.1, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 265, "t": "2026-11-05T17:05:22.677", "t_unix": 1793865922.678, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 42, "hold_n": 16, "held_sec": 2.546, "accepted": true, "released_during_job": true, "measured_before": [-61.17, 0.61, -55.54, -2.81, -41.66, -26.1], "start_source": "mixed", "cmd_gap_deg": 4.58, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -70.54, -2.69, -37.08, -26.92], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 266, "t": "2026-11-05T17:05:22.980", "t_unix": 1793865922.98, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 42, "halt_joint": 2, "measured_at_request": [-61.17, 0.87, -44.03, -2.9, -41.04, -26.01], "t_halt": 1793865922.981011, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.17, 0.7, -55.54, -2.81, -41.66, -26.1], "moved_after_request_deg": [0.0, -0.17, -11.51, 0.09, -0.62, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 267, "t": "2026-11-05T17:05:23.278", "t_unix": 1793865923.279, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 43, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 0.96, -55.54, -2.81, -41.66, -26.1], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -54.54, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865923.325718, "measured_before_send": [-61.17, 1.05, -55.54, -2.81, -41.66, -26.1], "resends": [], "reached": true, "reached_angles": [-61.17, 0.61, -54.93, -2.81, -40.42, -26.1], "reach_err": 3.34, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 268, "t": "2026-11-05T17:05:23.680", "t_unix": 1793865923.681, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 1, "held_sec": 0.402, "accepted": true, "measured_before": [-61.08, 0.61, -54.14, -2.9, -40.07, -26.1], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 0.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -39.14, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865923.702071, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 269, "t": "2026-11-05T17:05:23.832", "t_unix": 1793865923.832, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 2, "held_sec": 0.553, "accepted": true, "measured_before": [-61.08, 0.61, -53.78, -2.9, -40.07, -26.19], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 14.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 270, "t": "2026-11-05T17:05:23.933", "t_unix": 1793865923.934, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 3, "held_sec": 0.655, "accepted": true, "measured_before": [-61.08, 0.61, -51.15, -2.9, -40.07, -26.19], "start_source": "hold", "cmd_gap_deg": 2.99, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 271, "t": "2026-11-05T17:05:24.035", "t_unix": 1793865924.036, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 4, "held_sec": 0.757, "accepted": true, "measured_before": [-61.08, 0.61, -46.75, -2.9, -39.99, -26.19], "start_source": "hold", "cmd_gap_deg": 2.91, "hold_lead_deg": 7.61, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.61, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 272, "t": "2026-11-05T17:05:24.138", "t_unix": 1793865924.138, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 5, "held_sec": 0.86, "accepted": true, "measured_before": [-61.08, 0.61, -42.36, -2.9, -39.63, -26.19], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -27.36, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865924.1588988, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 273, "t": "2026-11-05T17:05:24.323", "t_unix": 1793865924.323, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 6, "held_sec": 1.044, "accepted": true, "measured_before": [-61.17, 0.7, -38.05, -2.9, -38.23, -26.19], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 10.69, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.69, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 274, "t": "2026-11-05T17:05:24.440", "t_unix": 1793865924.44, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 7, "held_sec": 1.161, "accepted": true, "measured_before": [-61.17, 0.7, -36.12, -2.9, -38.23, -26.19], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 8.76, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.76, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 275, "t": "2026-11-05T17:05:24.540", "t_unix": 1793865924.54, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 8, "held_sec": 1.262, "accepted": true, "measured_before": [-61.08, 0.7, -36.12, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 8.76, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.76, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 276, "t": "2026-11-05T17:05:24.642", "t_unix": 1793865924.642, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 9, "held_sec": 1.364, "accepted": true, "measured_before": [-61.17, 0.7, -36.12, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 8.76, "command": [-60.97, 1.31, -27.36, -2.69, -37.08, -26.92], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865924.706555, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 277, "t": "2026-11-05T17:05:24.760", "t_unix": 1793865924.761, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 10, "held_sec": 1.482, "accepted": true, "measured_before": [-61.08, 0.7, -26.36, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 1.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, -11.36, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865924.784611, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 278, "t": "2026-11-05T17:05:24.861", "t_unix": 1793865924.861, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 11, "held_sec": 1.583, "accepted": true, "measured_before": [-61.17, 0.7, -26.36, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 279, "t": "2026-11-05T17:05:24.962", "t_unix": 1793865924.962, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 12, "held_sec": 1.684, "accepted": true, "measured_before": [-61.17, 0.7, -25.4, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 14.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 280, "t": "2026-11-05T17:05:25.077", "t_unix": 1793865925.078, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 13, "held_sec": 1.799, "accepted": true, "measured_before": [-61.08, 0.7, -21.44, -2.9, -38.23, -26.27], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 10.08, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.08, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 281, "t": "2026-11-05T17:05:25.178", "t_unix": 1793865925.178, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 14, "held_sec": 1.9, "accepted": true, "measured_before": [-61.17, 0.7, -16.61, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 5.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 282, "t": "2026-11-05T17:05:25.293", "t_unix": 1793865925.294, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 15, "held_sec": 2.015, "accepted": true, "measured_before": [-61.17, 0.7, -11.77, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 0.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, 3.23, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865925.329356, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 283, "t": "2026-11-05T17:05:25.396", "t_unix": 1793865925.396, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 16, "held_sec": 2.117, "accepted": true, "measured_before": [-61.17, 0.7, -10.37, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 13.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 284, "t": "2026-11-05T17:05:25.496", "t_unix": 1793865925.496, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 17, "held_sec": 2.217, "accepted": true, "measured_before": [-61.17, 0.7, -9.93, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 13.16, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.16, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 285, "t": "2026-11-05T17:05:25.598", "t_unix": 1793865925.598, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 18, "held_sec": 2.319, "accepted": true, "measured_before": [-61.17, 0.7, -6.76, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 286, "t": "2026-11-05T17:05:25.699", "t_unix": 1793865925.7, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 19, "held_sec": 2.421, "accepted": true, "measured_before": [-61.17, 0.7, -2.37, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 5.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 287, "t": "2026-11-05T17:05:25.801", "t_unix": 1793865925.802, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 43, "hold_n": 20, "held_sec": 2.523, "accepted": true, "released_during_job": true, "measured_before": [-61.17, 0.7, 1.75, -2.9, -38.23, -26.36], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 1.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 1.31, 16.75, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865925.839232, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 288, "t": "2026-11-05T17:05:25.886", "t_unix": 1793865925.886, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 43, "halt_joint": 2, "measured_at_request": [-61.17, 0.7, -2.37, -2.9, -38.23, -26.36], "t_halt": 1793865925.88875, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.99, 1.58, 5.0, -2.9, -36.82, -26.36], "moved_after_request_deg": [0.18, 0.88, 7.37, 0.0, 1.41, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 289, "t": "2026-11-05T17:05:26.927", "t_unix": 1793865926.927, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 290, "t": "2026-11-05T17:05:27.275", "t_unix": 1793865927.275, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 291, "t": "2026-11-05T17:05:27.460", "t_unix": 1793865927.46, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 292, "t": "2026-11-05T17:05:27.680", "t_unix": 1793865927.68, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 293, "t": "2026-11-05T17:05:29.417", "t_unix": 1793865929.417, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 44, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 1.66, 5.0, -2.9, -36.82, -26.36], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 0.31, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865929.45648, "measured_before_send": [-61.17, 1.66, 5.0, -2.9, -36.82, -26.36], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [-61.17, 1.66, 5.0, -2.9, -37.79, -26.36], "reach_err": 1.35, "elapsed_sec": 0.99, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 294, "t": "2026-11-05T17:05:30.509", "t_unix": 1793865930.509, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 1, "held_sec": 1.092, "accepted": true, "measured_before": [-61.17, 1.66, 5.0, -2.9, -37.79, -26.36], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 1.35, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -13.34, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865930.523668, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 295, "t": "2026-11-05T17:05:30.660", "t_unix": 1793865930.66, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 2, "held_sec": 1.243, "accepted": true, "measured_before": [-61.17, 0.87, 5.0, -2.9, -37.79, -26.36], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 296, "t": "2026-11-05T17:05:30.775", "t_unix": 1793865930.776, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 3, "held_sec": 1.359, "accepted": true, "measured_before": [-61.17, 0.87, 5.0, -2.9, -37.79, -26.36], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 14.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 297, "t": "2026-11-05T17:05:30.876", "t_unix": 1793865930.877, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 4, "held_sec": 1.46, "accepted": true, "measured_before": [-61.08, -7.47, 5.0, -2.9, -38.32, -26.36], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 5.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 298, "t": "2026-11-05T17:05:30.978", "t_unix": 1793865930.979, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 5, "held_sec": 1.562, "accepted": true, "measured_before": [-61.17, -11.77, 5.0, -2.9, -38.32, -26.36], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 1.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -26.77, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865931.007073, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 299, "t": "2026-11-05T17:05:31.161", "t_unix": 1793865931.162, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 6, "held_sec": 1.745, "accepted": true, "measured_before": [-60.99, -13.88, 5.0, -2.9, -38.67, -26.36], "start_source": "hold", "cmd_gap_deg": 1.59, "hold_lead_deg": 12.89, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.89, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 300, "t": "2026-11-05T17:05:31.262", "t_unix": 1793865931.262, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 7, "held_sec": 1.845, "accepted": true, "measured_before": [-61.17, -18.28, 5.0, -2.9, -38.67, -26.36], "start_source": "hold", "cmd_gap_deg": 1.59, "hold_lead_deg": 8.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 301, "t": "2026-11-05T17:05:31.363", "t_unix": 1793865931.364, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 8, "held_sec": 1.947, "accepted": true, "measured_before": [-61.17, -22.76, 5.0, -2.9, -38.67, -26.36], "start_source": "hold", "cmd_gap_deg": 1.59, "hold_lead_deg": 4.01, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -37.76, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865931.384676, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 302, "t": "2026-11-05T17:05:31.483", "t_unix": 1793865931.483, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 9, "held_sec": 2.067, "accepted": true, "measured_before": [-61.17, -26.1, 5.0, -2.9, -39.37, -26.36], "start_source": "hold", "cmd_gap_deg": 2.29, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 303, "t": "2026-11-05T17:05:31.583", "t_unix": 1793865931.584, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 44, "hold_n": 10, "held_sec": 2.167, "accepted": true, "measured_before": [-61.17, -26.89, 5.0, -2.9, -39.55, -26.36], "start_source": "hold", "cmd_gap_deg": 2.47, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 304, "t": "2026-11-05T17:05:31.652", "t_unix": 1793865931.652, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 44, "halt_joint": 1, "measured_at_request": [-61.17, -26.89, 5.0, -2.9, -39.55, -26.36], "t_halt": 1793865931.652498, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.08, -31.81, 5.0, -2.98, -40.6, -26.36], "moved_after_request_deg": [0.09, -4.92, 0.0, -0.08, -1.05, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 305, "t": "2026-11-05T17:05:32.024", "t_unix": 1793865932.025, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 45, "hold_n": 0, "accepted": true, "measured_before": [-60.99, -31.37, 5.0, -2.98, -40.6, -26.36], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -30.81, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865932.064498, "measured_before_send": [-60.99, -31.37, 5.0, -2.98, -40.6, -26.36], "resends": [0.34, 0.69], "reached": false, "not_moved": true, "reached_angles": [-60.99, -31.37, 5.0, -2.98, -40.34, -26.45], "reach_err": 3.26, "elapsed_sec": 1.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 306, "t": "2026-11-05T17:05:33.161", "t_unix": 1793865933.161, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 45, "hold_n": 1, "held_sec": 1.136, "accepted": true, "measured_before": [-60.99, -31.37, 5.0, -2.98, -40.34, -26.45], "start_source": "mixed", "cmd_gap_deg": 3.26, "hold_lead_deg": 0.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -16.37, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865933.190936, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 307, "t": "2026-11-05T17:05:33.328", "t_unix": 1793865933.328, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 45, "hold_n": 2, "held_sec": 1.303, "accepted": true, "measured_before": [-60.99, -29.97, 5.0, -2.98, -40.34, -26.45], "start_source": "mixed", "cmd_gap_deg": 3.26, "hold_lead_deg": 13.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 308, "t": "2026-11-05T17:05:33.443", "t_unix": 1793865933.444, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 45, "hold_n": 3, "held_sec": 1.419, "accepted": true, "measured_before": [-60.99, -25.4, 5.0, -2.98, -40.16, -26.45], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 9.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 310, "t": "2026-11-05T17:05:33.628", "t_unix": 1793865933.628, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 46, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 309, "t": "2026-11-05T17:05:33.544", "t_unix": 1793865933.544, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 45, "hold_n": 4, "held_sec": 1.52, "accepted": true, "released_during_job": true, "measured_before": [-60.99, -20.65, 5.0, -2.98, -40.16, -26.45], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -5.65, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865933.568491, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 311, "t": "2026-11-05T17:05:33.695", "t_unix": 1793865933.695, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 45, "halt_joint": 1, "measured_at_request": [-60.99, -25.4, 5.0, -2.98, -40.16, -26.45], "t_halt": 1793865933.695383, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-61.08, -10.1, 5.0, -2.98, -40.07, -26.45], "moved_after_request_deg": [-0.09, 15.3, 0.0, 0.0, 0.09, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 312, "t": "2026-11-05T17:05:35.652", "t_unix": 1793865935.653, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 47, "hold_n": 0, "accepted": true, "measured_before": [-60.99, -4.92, 5.0, -3.07, -39.81, -26.54], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 5.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, -3.92, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865935.700008, "measured_before_send": [-60.99, -4.92, 5.0, -3.07, -39.81, -26.54], "resends": [], "reached": true, "reached_angles": [-61.08, -4.04, 5.0, -3.07, -39.81, -26.54], "reach_err": 2.73, "elapsed_sec": 0.1, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 313, "t": "2026-11-05T17:05:36.057", "t_unix": 1793865936.057, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 1, "held_sec": 0.405, "accepted": true, "measured_before": [-61.08, -3.16, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 0.76, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 11.84, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865936.072932, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 314, "t": "2026-11-05T17:05:36.158", "t_unix": 1793865936.158, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 2, "held_sec": 0.507, "accepted": true, "measured_before": [-61.08, 0.7, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 315, "t": "2026-11-05T17:05:36.342", "t_unix": 1793865936.342, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 3, "held_sec": 0.691, "accepted": true, "measured_before": [-60.99, 2.63, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 9.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 316, "t": "2026-11-05T17:05:36.443", "t_unix": 1793865936.444, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 4, "held_sec": 0.792, "accepted": true, "measured_before": [-61.08, 7.38, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 4.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 22.38, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865936.468822, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 317, "t": "2026-11-05T17:05:36.607", "t_unix": 1793865936.607, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 5, "held_sec": 0.955, "accepted": true, "measured_before": [-61.17, 12.65, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 318, "t": "2026-11-05T17:05:36.707", "t_unix": 1793865936.707, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 6, "held_sec": 1.056, "accepted": true, "measured_before": [-61.17, 13.53, 5.0, -2.98, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 319, "t": "2026-11-05T17:05:36.807", "t_unix": 1793865936.808, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 7, "held_sec": 1.156, "accepted": true, "measured_before": [-60.99, 16.25, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 6.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 320, "t": "2026-11-05T17:05:36.907", "t_unix": 1793865936.908, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 8, "held_sec": 1.256, "accepted": true, "measured_before": [-60.99, 20.56, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 1.82, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.97, 35.56, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865936.938795, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 321, "t": "2026-11-05T17:05:37.009", "t_unix": 1793865937.009, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 47, "hold_n": 9, "held_sec": 1.358, "accepted": true, "released_during_job": true, "measured_before": [-61.17, 23.37, 5.0, -3.07, -39.63, -26.54], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 322, "t": "2026-11-05T17:05:37.042", "t_unix": 1793865937.043, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 47, "halt_joint": 1, "measured_at_request": [-60.99, 20.56, 5.0, -3.07, -39.63, -26.54], "t_halt": 1793865937.043365, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-60.9, 24.43, 5.8, -3.07, -38.05, -26.63], "moved_after_request_deg": [0.09, 3.87, 0.8, 0.0, 1.58, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 323, "t": "2026-11-05T17:05:37.577", "t_unix": 1793865937.578, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 48, "hold_n": 0, "accepted": true, "measured_before": [-61.17, 24.43, 5.88, -3.07, -38.05, -26.63], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.97, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-61.97, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865937.621442, "measured_before_send": [-61.17, 24.43, 5.88, -3.07, -38.05, -26.63], "resends": [], "reached": true, "reached_angles": [-61.61, 24.43, 5.88, -3.16, -38.05, -26.63], "reach_err": 0.97, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 324, "t": "2026-11-05T17:05:37.993", "t_unix": 1793865937.994, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 1, "held_sec": 0.417, "accepted": true, "measured_before": [-62.31, 24.43, 5.88, -2.98, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 0.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-77.31, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865938.012226, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 325, "t": "2026-11-05T17:05:38.175", "t_unix": 1793865938.176, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 2, "held_sec": 0.598, "accepted": true, "measured_before": [-62.31, 24.43, 5.88, -2.98, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 326, "t": "2026-11-05T17:05:38.290", "t_unix": 1793865938.291, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 3, "held_sec": 0.714, "accepted": true, "measured_before": [-66.7, 24.43, 5.88, -3.42, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.61, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.61, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 327, "t": "2026-11-05T17:05:38.394", "t_unix": 1793865938.394, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 4, "held_sec": 0.817, "accepted": true, "measured_before": [-71.89, 24.43, 5.88, -3.42, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 5.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 328, "t": "2026-11-05T17:05:38.511", "t_unix": 1793865938.511, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 5, "held_sec": 0.934, "accepted": true, "measured_before": [-75.49, 24.43, 5.88, -3.07, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 1.82, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-90.49, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865938.540752, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 329, "t": "2026-11-05T17:05:38.627", "t_unix": 1793865938.628, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 6, "held_sec": 1.051, "accepted": true, "measured_before": [-77.95, 24.43, 5.88, -2.54, -38.05, -26.63], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 330, "t": "2026-11-05T17:05:38.744", "t_unix": 1793865938.745, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 7, "held_sec": 1.167, "accepted": true, "measured_before": [-78.22, 24.43, 5.88, -3.42, -38.05, -26.8], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 331, "t": "2026-11-05T17:05:38.860", "t_unix": 1793865938.861, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 8, "held_sec": 1.284, "accepted": true, "measured_before": [-83.23, 24.43, 5.88, -3.33, -38.05, -26.8], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 7.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 332, "t": "2026-11-05T17:05:38.961", "t_unix": 1793865938.961, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 9, "held_sec": 1.384, "accepted": true, "measured_before": [-87.27, 24.43, 5.88, -3.33, -38.05, -26.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-102.27, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865939.0197, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 333, "t": "2026-11-05T17:05:39.077", "t_unix": 1793865939.078, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 10, "held_sec": 1.5, "accepted": true, "measured_before": [-91.49, 24.43, 5.88, -3.42, -38.05, -26.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 334, "t": "2026-11-05T17:05:39.261", "t_unix": 1793865939.261, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 48, "hold_n": 11, "held_sec": 1.684, "accepted": true, "released_during_job": true, "measured_before": [-98.78, 24.43, 5.88, -3.25, -38.05, -26.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 3.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-113.78, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 335, "t": "2026-11-05T17:05:39.411", "t_unix": 1793865939.411, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 48, "halt_joint": 0, "measured_at_request": [-91.49, 24.43, 5.88, -3.42, -38.05, -26.89], "t_halt": 1793865939.411351, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-101.51, 25.4, 6.5, -2.46, -36.82, -26.89], "moved_after_request_deg": [-10.02, 0.97, 0.62, 0.96, 1.23, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 336, "t": "2026-11-05T17:05:39.678", "t_unix": 1793865939.679, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 49, "hold_n": 0, "accepted": true, "measured_before": [-100.54, 25.57, 6.85, -3.16, -36.47, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.85, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-100.51, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865939.7165031, "measured_before_send": [-100.54, 25.57, 6.85, -3.16, -36.47, -26.89], "resends": [], "reached": true, "reached_angles": [-100.54, 25.57, 6.85, -3.16, -36.47, -26.89], "reach_err": 1.85, "elapsed_sec": 0.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 337, "t": "2026-11-05T17:05:40.090", "t_unix": 1793865940.09, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 1, "held_sec": 0.412, "accepted": true, "measured_before": [-100.63, 24.25, 5.44, -3.25, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.56, "hold_lead_deg": 0.12, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-85.63, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865940.1027992, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 338, "t": "2026-11-05T17:05:40.256", "t_unix": 1793865940.257, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 2, "held_sec": 0.578, "accepted": true, "measured_before": [-100.19, 24.25, 5.44, -2.81, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 14.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 339, "t": "2026-11-05T17:05:40.374", "t_unix": 1793865940.375, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 3, "held_sec": 0.696, "accepted": true, "measured_before": [-95.97, 24.25, 5.44, -2.54, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 340, "t": "2026-11-05T17:05:40.475", "t_unix": 1793865940.475, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 4, "held_sec": 0.797, "accepted": true, "measured_before": [-91.58, 24.25, 5.44, -2.63, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 5.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 341, "t": "2026-11-05T17:05:40.577", "t_unix": 1793865940.577, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 5, "held_sec": 0.899, "accepted": true, "measured_before": [-87.18, 24.25, 5.44, -2.63, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 1.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-72.18, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865940.607407, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 342, "t": "2026-11-05T17:05:40.677", "t_unix": 1793865940.678, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 6, "held_sec": 0.999, "accepted": true, "measured_before": [-85.25, 24.25, 5.44, -3.25, -36.65, -26.89], "start_source": "hold", "cmd_gap_deg": 0.56, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 343, "t": "2026-11-05T17:05:40.777", "t_unix": 1793865940.778, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 7, "held_sec": 1.099, "accepted": true, "measured_before": [-84.81, 24.25, 5.44, -2.46, -36.65, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 12.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 344, "t": "2026-11-05T17:05:40.878", "t_unix": 1793865940.879, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 8, "held_sec": 1.2, "accepted": true, "measured_before": [-80.33, 24.25, 5.44, -2.28, -36.65, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 8.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 345, "t": "2026-11-05T17:05:40.995", "t_unix": 1793865940.996, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 9, "held_sec": 1.317, "accepted": true, "measured_before": [-75.32, 24.25, 5.44, -2.46, -36.73, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 3.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-60.32, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865941.0284858, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 346, "t": "2026-11-05T17:05:41.095", "t_unix": 1793865941.096, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 10, "held_sec": 1.417, "accepted": true, "measured_before": [-72.33, 24.25, 5.44, -2.72, -36.73, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 347, "t": "2026-11-05T17:05:41.196", "t_unix": 1793865941.197, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 11, "held_sec": 1.518, "accepted": true, "measured_before": [-71.89, 24.25, 5.44, -2.81, -36.82, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 348, "t": "2026-11-05T17:05:41.298", "t_unix": 1793865941.299, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 12, "held_sec": 1.62, "accepted": true, "measured_before": [-68.99, 24.25, 5.44, -1.84, -37.0, -26.8], "start_source": "hold", "cmd_gap_deg": 0.85, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 349, "t": "2026-11-05T17:05:41.398", "t_unix": 1793865941.399, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 13, "held_sec": 1.72, "accepted": true, "measured_before": [-64.77, 24.25, 5.44, -2.02, -37.0, -26.8], "start_source": "hold", "cmd_gap_deg": 0.67, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-49.77, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865941.43052, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 350, "t": "2026-11-05T17:05:41.498", "t_unix": 1793865941.499, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 14, "held_sec": 1.82, "accepted": true, "measured_before": [-61.08, 24.25, 5.44, -2.63, -37.0, -26.8], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 351, "t": "2026-11-05T17:05:41.599", "t_unix": 1793865941.6, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 15, "held_sec": 1.921, "accepted": true, "measured_before": [-60.2, 24.25, 5.44, -2.72, -37.0, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 352, "t": "2026-11-05T17:05:41.715", "t_unix": 1793865941.715, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 16, "held_sec": 2.037, "accepted": true, "measured_before": [-58.18, 24.25, 5.44, -1.84, -37.0, -26.8], "start_source": "hold", "cmd_gap_deg": 0.85, "hold_lead_deg": 8.41, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.41, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 353, "t": "2026-11-05T17:05:41.816", "t_unix": 1793865941.816, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 17, "held_sec": 2.137, "accepted": true, "measured_before": [-53.61, 24.25, 5.44, -2.02, -37.0, -26.8], "start_source": "hold", "cmd_gap_deg": 0.67, "hold_lead_deg": 3.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-38.61, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865941.837228, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 354, "t": "2026-11-05T17:05:41.933", "t_unix": 1793865941.933, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 18, "held_sec": 2.255, "accepted": true, "measured_before": [-49.92, 24.25, 5.44, -2.81, -37.0, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 355, "t": "2026-11-05T17:05:42.034", "t_unix": 1793865942.034, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 19, "held_sec": 2.356, "accepted": true, "measured_before": [-49.74, 24.25, 5.44, -2.9, -37.0, -26.89], "start_source": "hold", "cmd_gap_deg": 0.44, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 356, "t": "2026-11-05T17:05:42.150", "t_unix": 1793865942.15, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 20, "held_sec": 2.471, "accepted": true, "measured_before": [-40.25, 24.25, 5.44, -2.1, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-25.25, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865942.309062, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 357, "t": "2026-11-05T17:05:42.368", "t_unix": 1793865942.368, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 21, "held_sec": 2.689, "accepted": true, "measured_before": [-38.23, 24.25, 5.44, -2.72, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 358, "t": "2026-11-05T17:05:42.469", "t_unix": 1793865942.469, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 22, "held_sec": 2.791, "accepted": true, "measured_before": [-33.83, 24.25, 5.44, -1.93, -37.96, -26.8], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 359, "t": "2026-11-05T17:05:42.638", "t_unix": 1793865942.638, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 23, "held_sec": 2.959, "accepted": true, "measured_before": [-31.46, 24.25, 5.44, -2.02, -37.96, -26.8], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 6.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 360, "t": "2026-11-05T17:05:42.739", "t_unix": 1793865942.739, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 24, "held_sec": 3.06, "accepted": true, "measured_before": [-27.5, 24.25, 5.44, -2.81, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.25, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-12.5, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865942.760743, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 361, "t": "2026-11-05T17:05:42.839", "t_unix": 1793865942.839, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 25, "held_sec": 3.161, "accepted": true, "measured_before": [-25.57, 24.25, 5.44, -2.81, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 362, "t": "2026-11-05T17:05:42.941", "t_unix": 1793865942.941, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 26, "held_sec": 3.262, "accepted": true, "measured_before": [-23.81, 24.25, 5.44, -2.81, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 363, "t": "2026-11-05T17:05:43.042", "t_unix": 1793865943.043, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 27, "held_sec": 3.364, "accepted": true, "measured_before": [-22.23, 24.25, 5.44, -2.02, -37.96, -26.8], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 364, "t": "2026-11-05T17:05:43.143", "t_unix": 1793865943.143, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 28, "held_sec": 3.464, "accepted": true, "measured_before": [-16.96, 24.25, 5.44, -2.1, -37.96, -26.8], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-1.96, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865943.174624, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 365, "t": "2026-11-05T17:05:43.244", "t_unix": 1793865943.244, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 29, "held_sec": 3.566, "accepted": true, "measured_before": [-13.18, 24.25, 5.44, -2.98, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 366, "t": "2026-11-05T17:05:43.346", "t_unix": 1793865943.346, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 30, "held_sec": 3.667, "accepted": true, "measured_before": [-12.39, 24.25, 5.44, -2.98, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 367, "t": "2026-11-05T17:05:43.446", "t_unix": 1793865943.447, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 31, "held_sec": 3.768, "accepted": true, "measured_before": [-10.81, 24.25, 5.44, -2.98, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 368, "t": "2026-11-05T17:05:43.563", "t_unix": 1793865943.564, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 32, "held_sec": 3.885, "accepted": true, "measured_before": [-5.97, 24.25, 5.44, -2.98, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.01, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [9.03, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865943.627367, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 369, "t": "2026-11-05T17:05:43.681", "t_unix": 1793865943.682, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 33, "held_sec": 4.003, "accepted": true, "measured_before": [-1.75, 24.25, 5.44, -3.16, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 370, "t": "2026-11-05T17:05:43.782", "t_unix": 1793865943.782, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 34, "held_sec": 4.103, "accepted": true, "measured_before": [-1.84, 24.25, 5.44, -3.33, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.87, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.87, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 371, "t": "2026-11-05T17:05:43.883", "t_unix": 1793865943.883, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 35, "held_sec": 4.205, "accepted": true, "measured_before": [1.4, 24.25, 5.44, -2.28, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 372, "t": "2026-11-05T17:05:43.983", "t_unix": 1793865943.984, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 36, "held_sec": 4.305, "accepted": true, "measured_before": [5.8, 24.25, 5.44, -2.54, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [20.8, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865944.045772, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 373, "t": "2026-11-05T17:05:44.100", "t_unix": 1793865944.1, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 37, "held_sec": 4.422, "accepted": true, "measured_before": [8.96, 24.25, 5.44, -2.9, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 374, "t": "2026-11-05T17:05:44.201", "t_unix": 1793865944.201, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 38, "held_sec": 4.522, "accepted": true, "measured_before": [9.14, 24.25, 5.44, -2.9, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 375, "t": "2026-11-05T17:05:44.316", "t_unix": 1793865944.316, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 39, "held_sec": 4.638, "accepted": true, "measured_before": [12.74, 24.25, 5.44, -2.1, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 8.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 376, "t": "2026-11-05T17:05:44.417", "t_unix": 1793865944.418, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 40, "held_sec": 4.739, "accepted": true, "measured_before": [16.96, 24.25, 5.44, -2.28, -37.96, -26.89], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [31.96, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865944.4667351, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 377, "t": "2026-11-05T17:05:44.603", "t_unix": 1793865944.603, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 41, "held_sec": 4.925, "accepted": true, "measured_before": [21.26, 24.25, 5.44, -2.28, -38.05, -26.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 378, "t": "2026-11-05T17:05:44.704", "t_unix": 1793865944.705, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 42, "held_sec": 5.026, "accepted": true, "measured_before": [21.97, 24.25, 5.44, -2.28, -38.05, -26.89], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 379, "t": "2026-11-05T17:05:44.804", "t_unix": 1793865944.805, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 43, "held_sec": 5.126, "accepted": true, "measured_before": [26.36, 24.25, 5.44, -2.28, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 5.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 380, "t": "2026-11-05T17:05:44.920", "t_unix": 1793865944.921, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 44, "held_sec": 5.242, "accepted": true, "measured_before": [31.02, 24.25, 5.44, -2.54, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 0.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [46.02, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865944.946102, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 381, "t": "2026-11-05T17:05:45.102", "t_unix": 1793865945.103, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 45, "held_sec": 5.424, "accepted": true, "measured_before": [32.34, 24.25, 5.44, -2.72, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 382, "t": "2026-11-05T17:05:45.218", "t_unix": 1793865945.219, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 46, "held_sec": 5.54, "accepted": true, "measured_before": [37.0, 24.25, 5.44, -1.93, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 9.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 383, "t": "2026-11-05T17:05:45.334", "t_unix": 1793865945.335, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 47, "held_sec": 5.656, "accepted": true, "measured_before": [42.01, 24.25, 5.44, -2.37, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 4.01, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [57.01, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865945.3606222, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 384, "t": "2026-11-05T17:05:45.453", "t_unix": 1793865945.454, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 48, "held_sec": 5.775, "accepted": true, "measured_before": [46.66, 24.25, 5.44, -2.72, -38.32, -26.89], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 10.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 385, "t": "2026-11-05T17:05:45.621", "t_unix": 1793865945.621, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 49, "held_sec": 5.942, "accepted": true, "measured_before": [47.28, 24.25, 5.44, -1.93, -38.32, -26.8], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 386, "t": "2026-11-05T17:05:45.722", "t_unix": 1793865945.722, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 49, "hold_n": 50, "held_sec": 6.043, "accepted": true, "measured_before": [51.76, 24.25, 5.44, -2.28, -38.58, -26.89], "start_source": "hold", "cmd_gap_deg": 1.5, "hold_lead_deg": 5.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 387, "t": "2026-11-05T17:05:45.789", "t_unix": 1793865945.79, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 49, "halt_joint": 0, "measured_at_request": [51.76, 24.25, 5.44, -2.28, -38.58, -26.89], "t_halt": 1793865945.7901719, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [55.89, 25.4, 6.32, -3.16, -37.08, -26.89], "moved_after_request_deg": [4.13, 1.15, 0.88, -0.88, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 388, "t": "2026-11-05T17:05:46.978", "t_unix": 1793865946.979, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 50, "hold_n": 0, "accepted": true, "measured_before": [55.45, 25.4, 6.41, -3.16, -37.0, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [54.89, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865947.012414, "measured_before_send": [55.45, 25.4, 6.41, -3.16, -37.0, -26.89], "resends": [0.34, 0.67], "reached": false, "not_moved": true, "reached_angles": [55.45, 24.25, 5.53, -3.16, -37.0, -26.89], "reach_err": 0.56, "elapsed_sec": 0.98, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 389, "t": "2026-11-05T17:05:48.218", "t_unix": 1793865948.219, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 51, "hold_n": 0, "accepted": true, "measured_before": [55.45, 24.25, 5.53, -3.16, -37.0, -26.89], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.56, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [53.89, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865948.2556531, "measured_before_send": [55.45, 24.25, 5.53, -3.16, -37.0, -26.89], "resends": [], "reached": true, "reached_angles": [53.61, 24.25, 5.53, -3.25, -37.0, -26.89], "reach_err": 0.56, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 390, "t": "2026-11-05T17:05:48.622", "t_unix": 1793865948.622, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 1, "held_sec": 0.405, "accepted": true, "measured_before": [54.05, 24.25, 5.53, -2.81, -37.0, -26.89], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 0.16, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [39.05, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865948.6360462, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 391, "t": "2026-11-05T17:05:48.736", "t_unix": 1793865948.737, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 2, "held_sec": 0.52, "accepted": true, "measured_before": [53.96, 24.25, 5.53, -2.81, -37.0, -26.89], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 392, "t": "2026-11-05T17:05:48.837", "t_unix": 1793865948.838, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 3, "held_sec": 0.621, "accepted": true, "measured_before": [52.03, 24.25, 5.53, -2.81, -37.35, -26.89], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 393, "t": "2026-11-05T17:05:48.938", "t_unix": 1793865948.939, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 4, "held_sec": 0.722, "accepted": true, "measured_before": [48.25, 24.25, 5.53, -2.81, -37.61, -26.89], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 9.2, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.2, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 394, "t": "2026-11-05T17:05:49.038", "t_unix": 1793865949.039, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 5, "held_sec": 0.822, "accepted": true, "measured_before": [44.03, 24.25, 5.53, -2.81, -37.61, -26.89], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [29.03, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865949.097089, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 395, "t": "2026-11-05T17:05:49.157", "t_unix": 1793865949.157, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 6, "held_sec": 0.941, "accepted": true, "measured_before": [29.17, 24.25, 5.53, -2.46, -37.88, -26.98], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 0.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [14.17, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865949.6732318, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 396, "t": "2026-11-05T17:05:49.806", "t_unix": 1793865949.806, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 7, "held_sec": 1.59, "accepted": true, "measured_before": [29.17, 24.25, 5.53, -2.72, -37.88, -26.98], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 397, "t": "2026-11-05T17:05:49.906", "t_unix": 1793865949.907, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 8, "held_sec": 1.69, "accepted": true, "measured_before": [26.19, 24.25, 5.53, -3.25, -37.88, -26.98], "start_source": "hold", "cmd_gap_deg": 0.8, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 398, "t": "2026-11-05T17:05:50.007", "t_unix": 1793865950.008, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 9, "held_sec": 1.791, "accepted": true, "measured_before": [21.7, 24.25, 5.53, -3.16, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 399, "t": "2026-11-05T17:05:50.122", "t_unix": 1793865950.123, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 10, "held_sec": 1.906, "accepted": true, "measured_before": [17.22, 24.25, 5.53, -3.16, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 3.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [2.22, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865950.1789, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 400, "t": "2026-11-05T17:05:50.306", "t_unix": 1793865950.307, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 11, "held_sec": 2.09, "accepted": true, "measured_before": [13.97, 24.25, 5.53, -2.37, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 401, "t": "2026-11-05T17:05:50.408", "t_unix": 1793865950.408, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 12, "held_sec": 2.191, "accepted": true, "measured_before": [11.33, 24.25, 5.53, -3.25, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 402, "t": "2026-11-05T17:05:50.508", "t_unix": 1793865950.509, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 13, "held_sec": 2.292, "accepted": true, "measured_before": [6.5, 24.25, 5.53, -2.81, -38.05, -26.98], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-8.5, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865950.54227, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 403, "t": "2026-11-05T17:05:50.610", "t_unix": 1793865950.61, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 14, "held_sec": 2.394, "accepted": true, "measured_before": [3.42, 24.25, 5.53, -2.54, -38.05, -26.98], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 404, "t": "2026-11-05T17:05:50.726", "t_unix": 1793865950.726, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 15, "held_sec": 2.509, "accepted": true, "measured_before": [2.1, 24.25, 5.53, -2.28, -38.05, -26.98], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 405, "t": "2026-11-05T17:05:50.842", "t_unix": 1793865950.843, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 16, "held_sec": 2.626, "accepted": true, "measured_before": [2.19, 24.25, 5.53, -2.46, -38.05, -26.98], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.69, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.69, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 406, "t": "2026-11-05T17:05:50.959", "t_unix": 1793865950.959, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 17, "held_sec": 2.743, "accepted": true, "measured_before": [2.19, 24.25, 5.53, -2.54, -38.05, -26.98], "start_source": "hold", "cmd_gap_deg": 0.97, "hold_lead_deg": 10.69, "command": [-8.5, 24.43, 5.0, -2.69, -37.08, -26.92], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865950.9795818, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 407, "t": "2026-11-05T17:05:51.061", "t_unix": 1793865951.061, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 18, "held_sec": 2.844, "accepted": true, "measured_before": [2.1, 24.25, 5.53, -2.54, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 10.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 408, "t": "2026-11-05T17:05:51.162", "t_unix": 1793865951.162, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 19, "held_sec": 2.946, "accepted": true, "measured_before": [1.84, 24.25, 5.53, -2.54, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 409, "t": "2026-11-05T17:05:51.263", "t_unix": 1793865951.263, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 20, "held_sec": 3.047, "accepted": true, "measured_before": [-2.46, 24.25, 5.53, -2.54, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 6.04, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.04, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 410, "t": "2026-11-05T17:05:51.379", "t_unix": 1793865951.379, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 21, "held_sec": 3.162, "accepted": true, "measured_before": [-7.73, 24.25, 5.53, -2.46, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 0.77, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-22.73, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865951.3980281, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 411, "t": "2026-11-05T17:05:51.482", "t_unix": 1793865951.483, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 22, "held_sec": 3.266, "accepted": true, "measured_before": [-9.58, 24.25, 5.53, -3.07, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 412, "t": "2026-11-05T17:05:51.650", "t_unix": 1793865951.651, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 23, "held_sec": 3.434, "accepted": true, "measured_before": [-11.42, 24.25, 5.53, -3.16, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 413, "t": "2026-11-05T17:05:51.752", "t_unix": 1793865951.752, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 24, "held_sec": 3.536, "accepted": true, "measured_before": [-16.08, 24.25, 5.53, -2.9, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 6.65, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.65, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 414, "t": "2026-11-05T17:05:51.869", "t_unix": 1793865951.87, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 25, "held_sec": 3.653, "accepted": true, "measured_before": [-20.47, 24.25, 5.53, -2.9, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 2.26, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.47, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865951.892697, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 415, "t": "2026-11-05T17:05:52.051", "t_unix": 1793865952.051, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 26, "held_sec": 3.835, "accepted": true, "measured_before": [-23.29, 24.25, 5.53, -2.1, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 12.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 416, "t": "2026-11-05T17:05:52.151", "t_unix": 1793865952.152, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 27, "held_sec": 3.935, "accepted": true, "measured_before": [-26.36, 24.25, 5.53, -3.16, -38.14, -26.98], "start_source": "hold", "cmd_gap_deg": 1.06, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 417, "t": "2026-11-05T17:05:52.265", "t_unix": 1793865952.266, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 51, "hold_n": 28, "held_sec": 4.049, "accepted": true, "measured_before": [-36.12, 24.25, 5.53, -2.1, -38.23, -26.89], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 0.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-51.12, 24.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865952.5221372, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 418, "t": "2026-11-05T17:05:52.585", "t_unix": 1793865952.585, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 51, "halt_joint": 0, "measured_at_request": [-36.12, 24.25, 5.53, -2.1, -38.23, -26.89], "t_halt": 1793865952.5862122, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-35.41, 25.4, 6.32, -2.46, -36.82, -26.98], "moved_after_request_deg": [0.71, 1.15, 0.79, -0.36, 1.41, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 419, "t": "2026-11-05T17:05:53.945", "t_unix": 1793865953.946, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 52, "hold_n": 0, "accepted": true, "measured_before": [-35.77, 25.4, 6.5, -2.46, -36.65, -26.98], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.5, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 23.43, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865953.990195, "measured_before_send": [-35.77, 25.4, 6.5, -2.46, -36.65, -26.98], "resends": [0.34, 0.68], "reached": false, "not_moved": true, "reached_angles": [-35.77, 25.4, 5.62, -2.46, -37.0, -26.98], "reach_err": 1.97, "elapsed_sec": 0.99, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 420, "t": "2026-11-05T17:05:55.032", "t_unix": 1793865955.033, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 1, "held_sec": 1.088, "accepted": true, "measured_before": [-35.77, 25.4, 5.62, -2.46, -37.0, -26.98], "start_source": "hold", "cmd_gap_deg": 0.62, "hold_lead_deg": 1.97, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 10.4, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865955.0484211, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 421, "t": "2026-11-05T17:05:55.133", "t_unix": 1793865955.134, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 2, "held_sec": 1.188, "accepted": true, "measured_before": [-35.77, 25.22, 5.62, -2.46, -37.0, -26.98], "start_source": "hold", "cmd_gap_deg": 0.62, "hold_lead_deg": 14.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 422, "t": "2026-11-05T17:05:55.235", "t_unix": 1793865955.235, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 3, "held_sec": 1.29, "accepted": true, "measured_before": [-35.77, 22.32, 5.62, -2.46, -37.0, -26.98], "start_source": "hold", "cmd_gap_deg": 0.62, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 423, "t": "2026-11-05T17:05:55.336", "t_unix": 1793865955.336, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 4, "held_sec": 1.391, "accepted": true, "measured_before": [-35.77, 17.75, 5.62, -2.46, -37.0, -26.98], "start_source": "hold", "cmd_gap_deg": 0.62, "hold_lead_deg": 7.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 424, "t": "2026-11-05T17:05:55.452", "t_unix": 1793865955.453, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 5, "held_sec": 1.507, "accepted": true, "measured_before": [-35.77, 11.86, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 1.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, -3.14, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865955.6368299, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 425, "t": "2026-11-05T17:05:55.687", "t_unix": 1793865955.687, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 6, "held_sec": 1.742, "accepted": true, "measured_before": [-35.77, 11.86, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 426, "t": "2026-11-05T17:05:55.802", "t_unix": 1793865955.803, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 7, "held_sec": 1.857, "accepted": true, "measured_before": [-35.77, 10.28, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 427, "t": "2026-11-05T17:05:55.903", "t_unix": 1793865955.904, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 8, "held_sec": 1.958, "accepted": true, "measured_before": [-35.77, 6.59, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 428, "t": "2026-11-05T17:05:56.003", "t_unix": 1793865956.004, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 9, "held_sec": 2.059, "accepted": true, "measured_before": [-35.77, 1.84, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, -13.16, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865956.032293, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 429, "t": "2026-11-05T17:05:56.119", "t_unix": 1793865956.12, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 10, "held_sec": 2.174, "accepted": true, "measured_before": [-35.77, -2.02, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 11.14, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.14, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 430, "t": "2026-11-05T17:05:56.220", "t_unix": 1793865956.22, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 11, "held_sec": 2.275, "accepted": true, "measured_before": [-35.77, -2.1, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 11.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 431, "t": "2026-11-05T17:05:56.321", "t_unix": 1793865956.321, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 12, "held_sec": 2.376, "accepted": true, "measured_before": [-35.77, -2.1, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 11.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 432, "t": "2026-11-05T17:05:56.423", "t_unix": 1793865956.423, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 13, "held_sec": 2.478, "accepted": true, "measured_before": [-35.77, -2.1, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 11.06, "command": [-35.41, -13.16, 5.0, -2.69, -37.08, -26.92], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865956.443667, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 433, "t": "2026-11-05T17:05:56.590", "t_unix": 1793865956.591, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 14, "held_sec": 2.645, "accepted": true, "measured_before": [-35.77, -7.91, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 5.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 434, "t": "2026-11-05T17:05:56.759", "t_unix": 1793865956.76, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 15, "held_sec": 2.814, "accepted": true, "measured_before": [-35.77, -10.1, 5.62, -2.46, -38.32, -26.98], "start_source": "hold", "cmd_gap_deg": 1.24, "hold_lead_deg": 3.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, -25.1, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865956.785898, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 435, "t": "2026-11-05T17:05:56.944", "t_unix": 1793865956.944, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 16, "held_sec": 2.999, "accepted": true, "measured_before": [-35.77, -12.48, 5.62, -2.54, -38.4, -26.98], "start_source": "hold", "cmd_gap_deg": 1.32, "hold_lead_deg": 12.62, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.62, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 436, "t": "2026-11-05T17:05:57.059", "t_unix": 1793865957.06, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 52, "hold_n": 17, "held_sec": 3.114, "accepted": true, "released_during_job": true, "measured_before": [-35.77, -15.82, 5.62, -2.54, -38.4, -26.98], "start_source": "hold", "cmd_gap_deg": 1.32, "hold_lead_deg": 9.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 437, "t": "2026-11-05T17:05:57.126", "t_unix": 1793865957.126, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 52, "halt_joint": 1, "measured_at_request": [-35.77, -12.48, 5.62, -2.54, -38.4, -26.98], "t_halt": 1793865957.126745, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-35.59, -20.3, 6.06, -2.54, -38.23, -26.98], "moved_after_request_deg": [0.18, -7.82, 0.44, 0.0, 0.17, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 438, "t": "2026-11-05T17:05:57.426", "t_unix": 1793865957.427, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 53, "hold_n": 0, "accepted": true, "measured_before": [-35.59, -19.51, 6.5, -2.54, -37.08, -26.98], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.5, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, -19.3, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865957.459548, "measured_before_send": [-35.59, -19.51, 6.5, -2.54, -37.08, -26.98], "resends": [], "reached": true, "reached_angles": [-35.68, -18.8, 5.09, -2.63, -37.96, -26.98], "reach_err": 0.88, "elapsed_sec": 0.2, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 439, "t": "2026-11-05T17:05:57.827", "t_unix": 1793865957.828, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 1, "held_sec": 0.401, "accepted": true, "measured_before": [-35.59, -18.8, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.5, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, -3.8, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865957.852101, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 440, "t": "2026-11-05T17:05:58.010", "t_unix": 1793865958.01, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 2, "held_sec": 0.584, "accepted": true, "measured_before": [-35.59, -17.66, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 441, "t": "2026-11-05T17:05:58.126", "t_unix": 1793865958.127, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 3, "held_sec": 0.7, "accepted": true, "measured_before": [-35.59, -13.0, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.2, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.2, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 442, "t": "2026-11-05T17:05:58.227", "t_unix": 1793865958.228, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 4, "held_sec": 0.801, "accepted": true, "measured_before": [-35.59, -8.43, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 4.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 6.57, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865958.25824, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 443, "t": "2026-11-05T17:05:58.343", "t_unix": 1793865958.344, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 5, "held_sec": 0.917, "accepted": true, "measured_before": [-35.59, -4.13, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 444, "t": "2026-11-05T17:05:58.460", "t_unix": 1793865958.46, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 6, "held_sec": 1.034, "accepted": true, "measured_before": [-35.59, -3.07, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.64, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.64, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 445, "t": "2026-11-05T17:05:58.577", "t_unix": 1793865958.578, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 7, "held_sec": 1.151, "accepted": true, "measured_before": [-35.59, -3.07, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.64, "command": [-35.41, 6.57, 5.0, -2.69, -37.08, -26.92], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865958.596359, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 446, "t": "2026-11-05T17:05:58.693", "t_unix": 1793865958.693, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 8, "held_sec": 1.266, "accepted": true, "measured_before": [-35.59, -2.9, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 447, "t": "2026-11-05T17:05:58.794", "t_unix": 1793865958.794, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 9, "held_sec": 1.368, "accepted": true, "measured_before": [-35.59, -0.52, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 448, "t": "2026-11-05T17:05:58.894", "t_unix": 1793865958.895, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 10, "held_sec": 1.468, "accepted": true, "measured_before": [-35.59, 4.13, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.44, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 19.13, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865958.926523, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 449, "t": "2026-11-05T17:05:59.012", "t_unix": 1793865959.012, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 11, "held_sec": 1.586, "accepted": true, "measured_before": [-35.59, 7.29, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 450, "t": "2026-11-05T17:05:59.128", "t_unix": 1793865959.128, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 12, "held_sec": 1.701, "accepted": true, "measured_before": [-35.68, 8.34, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 10.79, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.79, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 451, "t": "2026-11-05T17:05:59.243", "t_unix": 1793865959.244, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 13, "held_sec": 1.817, "accepted": true, "measured_before": [-35.68, 12.12, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 452, "t": "2026-11-05T17:05:59.344", "t_unix": 1793865959.345, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 14, "held_sec": 1.918, "accepted": true, "measured_before": [-35.77, 16.96, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 31.96, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865959.375154, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 453, "t": "2026-11-05T17:05:59.528", "t_unix": 1793865959.529, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 15, "held_sec": 2.102, "accepted": true, "measured_before": [-35.77, 20.39, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 454, "t": "2026-11-05T17:05:59.630", "t_unix": 1793865959.63, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 16, "held_sec": 2.203, "accepted": true, "measured_before": [-35.77, 22.93, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 9.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 455, "t": "2026-11-05T17:05:59.731", "t_unix": 1793865959.731, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 17, "held_sec": 2.304, "accepted": true, "measured_before": [-35.77, 26.63, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 5.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 456, "t": "2026-11-05T17:05:59.831", "t_unix": 1793865959.832, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 18, "held_sec": 2.405, "accepted": true, "measured_before": [-35.77, 31.02, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 0.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 46.02, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865959.897386, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 457, "t": "2026-11-05T17:05:59.949", "t_unix": 1793865959.95, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 19, "held_sec": 2.523, "accepted": true, "measured_before": [-35.85, 33.04, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 458, "t": "2026-11-05T17:06:00.050", "t_unix": 1793865960.051, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 20, "held_sec": 2.624, "accepted": true, "measured_before": [-35.85, 34.71, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 459, "t": "2026-11-05T17:06:00.167", "t_unix": 1793865960.168, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 21, "held_sec": 2.741, "accepted": true, "measured_before": [-35.85, 38.67, 5.09, -2.63, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 7.35, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.35, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 460, "t": "2026-11-05T17:06:00.269", "t_unix": 1793865960.269, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 53, "hold_n": 22, "held_sec": 2.842, "accepted": true, "released_during_job": true, "measured_before": [-35.85, 43.41, 5.09, -2.54, -37.96, -26.98], "start_source": "hold", "cmd_gap_deg": 0.88, "hold_lead_deg": 2.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-35.41, 58.41, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865960.293843, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 461, "t": "2026-11-05T17:06:00.369", "t_unix": 1793865960.369, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 53, "halt_joint": 1, "measured_at_request": [-35.85, 38.67, 5.09, -2.63, -37.96, -26.98], "t_halt": 1793865960.369544, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-35.94, 48.07, 5.71, -2.46, -36.65, -26.98], "moved_after_request_deg": [-0.09, 9.4, 0.62, 0.17, 1.31, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 462, "t": "2026-11-05T17:06:01.435", "t_unix": 1793865961.436, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 54, "hold_n": 0, "accepted": true, "measured_before": [-35.94, 48.25, 5.8, -2.46, -36.38, -26.98], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 0.8, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-34.41, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865961.4808378, "measured_before_send": [-35.94, 48.25, 5.8, -2.46, -36.38, -26.98], "resends": [0.34, 0.69], "reached": false, "not_moved": true, "reached_angles": [-35.94, 48.25, 5.8, -2.46, -36.38, -26.98], "reach_err": 1.53, "elapsed_sec": 1.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 463, "t": "2026-11-05T17:06:02.676", "t_unix": 1793865962.677, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 55, "hold_n": 0, "accepted": true, "measured_before": [-35.94, 48.25, 5.8, -2.46, -36.38, -26.98], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.53, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-33.41, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865962.7248561, "measured_before_send": [-35.94, 48.25, 5.8, -2.46, -36.38, -26.98], "resends": [], "reached": true, "reached_angles": [-33.22, 48.25, 5.71, -2.1, -37.44, -26.98], "reach_err": 0.71, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 464, "t": "2026-11-05T17:06:03.076", "t_unix": 1793865963.077, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 1, "held_sec": 0.4, "accepted": true, "measured_before": [-33.75, 48.25, 5.53, -2.46, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 0.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-18.75, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865963.1087449, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 465, "t": "2026-11-05T17:06:03.244", "t_unix": 1793865963.244, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 2, "held_sec": 0.568, "accepted": true, "measured_before": [-33.13, 48.25, 5.53, -2.63, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 14.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 466, "t": "2026-11-05T17:06:03.344", "t_unix": 1793865963.345, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 3, "held_sec": 0.668, "accepted": true, "measured_before": [-29.88, 48.25, 5.53, -2.63, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 467, "t": "2026-11-05T17:06:03.446", "t_unix": 1793865963.446, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 4, "held_sec": 0.769, "accepted": true, "measured_before": [-25.66, 48.25, 5.53, -2.63, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 6.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 468, "t": "2026-11-05T17:06:03.547", "t_unix": 1793865963.547, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 5, "held_sec": 0.87, "accepted": true, "measured_before": [-21.79, 48.25, 5.53, -2.63, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 3.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-6.79, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865963.608806, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 469, "t": "2026-11-05T17:06:03.664", "t_unix": 1793865963.664, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 6, "held_sec": 0.988, "accepted": true, "measured_before": [-18.1, 48.25, 5.53, -2.37, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 470, "t": "2026-11-05T17:06:03.778", "t_unix": 1793865963.779, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 7, "held_sec": 1.102, "accepted": true, "measured_before": [-18.01, 48.25, 5.53, -2.72, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.22, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.22, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 471, "t": "2026-11-05T17:06:03.881", "t_unix": 1793865963.882, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 8, "held_sec": 1.205, "accepted": true, "measured_before": [-13.53, 48.25, 5.53, -2.02, -37.44, -26.98], "start_source": "hold", "cmd_gap_deg": 0.67, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 472, "t": "2026-11-05T17:06:03.982", "t_unix": 1793865963.983, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 9, "held_sec": 1.306, "accepted": true, "measured_before": [-9.31, 48.25, 5.53, -2.9, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [5.69, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865964.0471091, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 473, "t": "2026-11-05T17:06:04.202", "t_unix": 1793865964.203, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 10, "held_sec": 1.526, "accepted": true, "measured_before": [-5.88, 48.25, 5.53, -3.25, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.56, "hold_lead_deg": 11.57, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.57, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 474, "t": "2026-11-05T17:06:04.302", "t_unix": 1793865964.303, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 11, "held_sec": 1.626, "accepted": true, "measured_before": [-2.98, 48.25, 5.53, -1.93, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.76, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 475, "t": "2026-11-05T17:06:04.403", "t_unix": 1793865964.403, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 12, "held_sec": 1.726, "accepted": true, "measured_before": [2.28, 48.25, 5.53, -2.63, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 3.41, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [17.28, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865964.434041, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 476, "t": "2026-11-05T17:06:04.503", "t_unix": 1793865964.504, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 13, "held_sec": 1.827, "accepted": true, "measured_before": [5.09, 48.25, 5.53, -2.81, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 477, "t": "2026-11-05T17:06:04.604", "t_unix": 1793865964.605, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 14, "held_sec": 1.928, "accepted": true, "measured_before": [5.88, 48.25, 5.53, -2.98, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 478, "t": "2026-11-05T17:06:04.706", "t_unix": 1793865964.706, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 15, "held_sec": 2.029, "accepted": true, "measured_before": [5.53, 48.25, 5.53, -2.63, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 479, "t": "2026-11-05T17:06:04.807", "t_unix": 1793865964.808, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 16, "held_sec": 2.131, "accepted": true, "measured_before": [5.53, 48.25, 5.53, -2.63, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.75, "command": [17.28, 48.07, 5.0, -2.69, -37.08, -26.92], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793865964.8284009, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 480, "t": "2026-11-05T17:06:04.907", "t_unix": 1793865964.908, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 17, "held_sec": 2.231, "accepted": true, "measured_before": [5.53, 48.25, 5.53, -2.63, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 481, "t": "2026-11-05T17:06:05.009", "t_unix": 1793865965.009, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 18, "held_sec": 2.333, "accepted": true, "measured_before": [7.11, 48.25, 5.53, -2.63, -37.61, -26.98], "start_source": "hold", "cmd_gap_deg": 0.53, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 482, "t": "2026-11-05T17:06:05.109", "t_unix": 1793865965.11, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 19, "held_sec": 2.433, "accepted": true, "measured_before": [10.72, 48.25, 5.53, -2.63, -37.79, -26.98], "start_source": "hold", "cmd_gap_deg": 0.71, "hold_lead_deg": 6.56, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.56, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 483, "t": "2026-11-05T17:06:05.210", "t_unix": 1793865965.211, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 20, "held_sec": 2.534, "accepted": true, "measured_before": [14.94, 48.25, 5.53, -2.63, -38.23, -26.98], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 2.34, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [29.94, 48.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865965.2763321, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 484, "t": "2026-11-05T17:06:05.377", "t_unix": 1793865965.378, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 55, "hold_n": 21, "held_sec": 2.701, "accepted": true, "released_during_job": true, "measured_before": [17.57, 48.25, 5.53, -2.63, -38.23, -26.98], "start_source": "hold", "cmd_gap_deg": 1.15, "hold_lead_deg": 12.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 485, "t": "2026-11-05T17:06:05.446", "t_unix": 1793865965.446, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 55, "halt_joint": 0, "measured_at_request": [14.94, 48.25, 5.53, -2.63, -38.23, -26.98], "t_halt": 1793865965.44666, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [19.86, 49.39, 6.15, -2.9, -36.82, -27.07], "moved_after_request_deg": [4.92, 1.14, 0.62, -0.27, 1.41, -0.09], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 486, "t": "2026-11-05T17:06:06.069", "t_unix": 1793865966.07, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 56, "hold_n": 0, "accepted": true, "measured_before": [18.98, 49.39, 6.32, -2.19, -36.65, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 1.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -37.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865966.112121, "measured_before_send": [18.98, 49.39, 6.32, -2.19, -36.65, -27.07], "resends": [0.32, 0.68], "reached": false, "not_moved": true, "reached_angles": [18.98, 49.39, 6.32, -2.19, -36.65, -27.07], "reach_err": 2.32, "elapsed_sec": 0.98, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 487, "t": "2026-11-05T17:06:07.448", "t_unix": 1793865967.449, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 488, "t": "2026-11-05T17:06:07.834", "t_unix": 1793865967.834, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 489, "t": "2026-11-05T17:06:08.321", "t_unix": 1793865968.321, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 490, "t": "2026-11-05T17:06:08.890", "t_unix": 1793865968.89, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 57, "hold_n": 0, "accepted": true, "measured_before": [18.98, 49.39, 6.32, -2.19, -36.65, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.32, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -38.08, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865968.9544792, "measured_before_send": [18.98, 49.39, 6.32, -2.19, -36.65, -27.07], "resends": [0.33, 0.72], "reached": false, "not_moved": true, "reached_angles": [22.67, 49.39, 5.27, -2.81, -36.91, -27.07], "reach_err": 2.81, "elapsed_sec": 1.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 491, "t": "2026-11-05T17:06:10.027", "t_unix": 1793865970.028, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 57, "hold_n": 1, "held_sec": 1.138, "accepted": true, "measured_before": [22.67, 49.39, 5.27, -2.81, -36.91, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 1.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -51.91, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865970.048619, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 492, "t": "2026-11-05T17:06:10.143", "t_unix": 1793865970.144, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 57, "hold_n": 2, "held_sec": 1.254, "accepted": true, "released_during_job": true, "measured_before": [22.67, 49.39, 5.27, -2.81, -36.91, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 494, "t": "2026-11-05T17:06:10.360", "t_unix": 1793865970.36, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 58, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 493, "t": "2026-11-05T17:06:10.209", "t_unix": 1793865970.21, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 57, "halt_joint": 4, "measured_at_request": [22.67, 49.39, 5.27, -2.81, -36.91, -27.07], "t_halt": 1793865970.2111459, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [22.67, 50.53, 5.71, -2.72, -37.88, -27.07], "moved_after_request_deg": [0.0, 1.14, 0.44, 0.09, -0.97, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 495, "t": "2026-11-05T17:06:11.361", "t_unix": 1793865971.361, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 59, "hold_n": 0, "accepted": true, "measured_before": [22.67, 50.71, 5.97, -2.81, -37.7, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -38.88, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865971.4100952, "measured_before_send": [22.67, 50.71, 5.97, -2.81, -37.7, -27.07], "resends": [], "reached": false, "settled": true, "reached_angles": [22.67, 49.3, 5.18, -2.81, -38.14, -27.07], "reach_err": 2.81, "elapsed_sec": 0.58, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 496, "t": "2026-11-05T17:06:12.047", "t_unix": 1793865972.047, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 1, "held_sec": 0.686, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -38.14, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 0.74, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -53.14, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865972.069129, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 497, "t": "2026-11-05T17:06:12.148", "t_unix": 1793865972.148, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 2, "held_sec": 0.787, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -38.14, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 498, "t": "2026-11-05T17:06:12.248", "t_unix": 1793865972.249, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 3, "held_sec": 0.888, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -38.84, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 14.3, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.3, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 499, "t": "2026-11-05T17:06:12.349", "t_unix": 1793865972.35, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 4, "held_sec": 0.989, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -43.15, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 9.99, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.99, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 500, "t": "2026-11-05T17:06:12.451", "t_unix": 1793865972.452, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 5, "held_sec": 1.091, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -47.72, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 5.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 501, "t": "2026-11-05T17:06:12.567", "t_unix": 1793865972.568, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 6, "held_sec": 1.207, "accepted": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -50.71, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -65.71, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865972.5936902, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 502, "t": "2026-11-05T17:06:12.669", "t_unix": 1793865972.67, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 59, "hold_n": 7, "held_sec": 1.309, "accepted": true, "released_during_job": true, "measured_before": [22.67, 49.3, 5.18, -2.81, -63.28, -27.07], "start_source": "hold", "cmd_gap_deg": 2.81, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [19.86, 47.07, 5.0, -2.69, -78.28, -26.92], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 503, "t": "2026-11-05T17:06:13.186", "t_unix": 1793865973.187, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 59, "halt_joint": 4, "measured_at_request": [22.67, 49.3, 5.18, -2.81, -50.71, -27.07], "t_halt": 1793865973.187196, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [22.67, 50.53, 5.8, -2.72, -61.61, -27.07], "moved_after_request_deg": [0.0, 1.23, 0.62, 0.09, -10.9, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 504, "t": "2026-11-05T17:06:14.645", "t_unix": 1793865974.646, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 1.0, "hold_id": 60, "hold_n": 0, "accepted": true, "measured_before": [22.67, 50.53, 5.88, -2.72, -61.61, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [20.86, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865974.708189, "measured_before_send": [22.67, 50.53, 5.88, -2.72, -61.61, -27.07], "resends": [], "reached": true, "reached_angles": [20.74, 49.3, 5.27, -3.16, -63.54, -27.07], "reach_err": 2.23, "elapsed_sec": 0.09, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 505, "t": "2026-11-05T17:06:15.060", "t_unix": 1793865975.061, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 1, "held_sec": 0.416, "accepted": true, "measured_before": [20.91, 49.3, 5.27, -2.37, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 0.05, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [35.91, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865975.073632, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 506, "t": "2026-11-05T17:06:15.210", "t_unix": 1793865975.21, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 2, "held_sec": 0.566, "accepted": true, "measured_before": [21.0, 49.3, 5.27, -2.54, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 507, "t": "2026-11-05T17:06:15.310", "t_unix": 1793865975.311, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 3, "held_sec": 0.666, "accepted": true, "measured_before": [24.08, 49.3, 5.27, -1.84, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 508, "t": "2026-11-05T17:06:15.412", "t_unix": 1793865975.412, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 4, "held_sec": 0.767, "accepted": true, "measured_before": [28.65, 49.3, 5.27, -2.28, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 7.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 509, "t": "2026-11-05T17:06:15.513", "t_unix": 1793865975.513, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 5, "held_sec": 0.869, "accepted": true, "measured_before": [32.95, 49.3, 5.27, -2.28, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [47.95, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865975.535399, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 510, "t": "2026-11-05T17:06:15.614", "t_unix": 1793865975.614, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 6, "held_sec": 0.969, "accepted": true, "measured_before": [37.0, 49.3, 5.27, -2.37, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 10.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 511, "t": "2026-11-05T17:06:15.798", "t_unix": 1793865975.799, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 60, "hold_n": 7, "held_sec": 1.154, "accepted": true, "released_during_job": true, "measured_before": [44.73, 49.3, 5.27, -2.54, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 3.22, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [59.73, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865975.957809, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 512, "t": "2026-11-05T17:06:15.998", "t_unix": 1793865975.999, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 60, "halt_joint": 0, "measured_at_request": [37.0, 49.3, 5.27, -2.37, -63.54, -27.07], "t_halt": 1793865976.002877, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [48.25, 49.3, 5.27, -3.16, -63.54, -27.07], "moved_after_request_deg": [11.25, 0.0, 0.0, -0.79, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 513, "t": "2026-11-05T17:06:16.331", "t_unix": 1793865976.332, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -1.0, "hold_id": 61, "hold_n": 0, "accepted": true, "measured_before": [48.25, 49.3, 5.27, -2.9, -63.54, -27.07], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.23, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [47.25, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "timeout_sec": 8.0, "t_send": 1793865976.375745, "measured_before_send": [48.25, 49.3, 5.27, -2.9, -63.54, -27.07], "resends": [], "reached": true, "reached_angles": [47.37, 49.3, 5.27, -2.98, -63.54, -27.07], "reach_err": 2.23, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 514, "t": "2026-11-05T17:06:16.734", "t_unix": 1793865976.735, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 1, "held_sec": 0.403, "accepted": true, "measured_before": [47.19, 49.3, 5.27, -2.9, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 0.06, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [32.19, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865976.7565172, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 515, "t": "2026-11-05T17:06:16.835", "t_unix": 1793865976.835, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 2, "held_sec": 0.503, "accepted": true, "measured_before": [47.19, 49.3, 5.27, -2.9, -63.54, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 516, "t": "2026-11-05T17:06:16.951", "t_unix": 1793865976.951, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 3, "held_sec": 0.619, "accepted": true, "measured_before": [45.61, 49.3, 5.27, -3.6, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 517, "t": "2026-11-05T17:06:17.052", "t_unix": 1793865977.053, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 4, "held_sec": 0.721, "accepted": true, "measured_before": [41.13, 49.3, 5.27, -3.6, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 8.94, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.94, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 518, "t": "2026-11-05T17:06:17.169", "t_unix": 1793865977.17, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 5, "held_sec": 0.838, "accepted": true, "measured_before": [36.38, 49.3, 5.27, -3.25, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 4.19, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [21.38, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865977.1954648, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 519, "t": "2026-11-05T17:06:17.286", "t_unix": 1793865977.286, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 6, "held_sec": 0.955, "accepted": true, "measured_before": [32.87, 49.3, 5.27, -2.81, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 520, "t": "2026-11-05T17:06:17.403", "t_unix": 1793865977.404, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 7, "held_sec": 1.072, "accepted": true, "measured_before": [31.55, 49.3, 5.27, -2.28, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 521, "t": "2026-11-05T17:06:17.518", "t_unix": 1793865977.519, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 8, "held_sec": 1.187, "accepted": true, "measured_before": [28.12, 49.3, 5.27, -3.51, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 6.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 522, "t": "2026-11-05T17:06:17.635", "t_unix": 1793865977.635, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 9, "held_sec": 1.303, "accepted": true, "measured_before": [22.67, 49.3, 5.27, -3.51, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 1.29, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [7.67, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865977.696256, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 523, "t": "2026-11-05T17:06:17.752", "t_unix": 1793865977.753, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 10, "held_sec": 1.421, "accepted": true, "measured_before": [21.53, 49.3, 5.27, -1.93, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 13.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 524, "t": "2026-11-05T17:06:17.852", "t_unix": 1793865977.853, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 11, "held_sec": 1.521, "accepted": true, "measured_before": [21.26, 49.3, 5.27, -2.72, -63.8, -27.07], "start_source": "hold", "cmd_gap_deg": 2.23, "hold_lead_deg": 13.59, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.59, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 525, "t": "2026-11-05T17:06:17.969", "t_unix": 1793865977.969, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 12, "held_sec": 1.637, "accepted": true, "measured_before": [16.43, 49.3, 5.27, -3.25, -64.33, -27.07], "start_source": "hold", "cmd_gap_deg": 2.72, "hold_lead_deg": 8.76, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.76, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 526, "t": "2026-11-05T17:06:18.070", "t_unix": 1793865978.071, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 13, "held_sec": 1.739, "accepted": true, "measured_before": [11.95, 49.3, 5.27, -3.16, -64.51, -27.07], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 4.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-3.05, 47.07, 5.0, -2.69, -61.61, -26.92], "sent": true, "reached": null, "no_check": true, "t_send": 1793865978.137218, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 527, "t": "2026-11-05T17:06:18.188", "t_unix": 1793865978.188, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 14, "held_sec": 1.857, "accepted": true, "measured_before": [8.26, 49.3, 5.27, -2.54, -64.51, -27.07], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 528, "t": "2026-11-05T17:06:18.291", "t_unix": 1793865978.292, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 15, "held_sec": 1.96, "accepted": true, "measured_before": [7.55, 49.3, 5.27, -2.19, -64.51, -27.07], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 10.6, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.6, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 529, "t": "2026-11-05T17:06:18.391", "t_unix": 1793865978.392, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 61, "hold_n": 16, "held_sec": 2.06, "accepted": true, "released_during_job": true, "measured_before": [5.27, 49.3, 5.27, -3.42, -64.51, -27.07], "start_source": "hold", "cmd_gap_deg": 2.9, "hold_lead_deg": 8.32, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.32, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 530, "t": "2026-11-05T17:06:18.425", "t_unix": 1793865978.425, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 61, "halt_joint": 0, "measured_at_request": [7.55, 49.3, 5.27, -2.19, -64.51, -27.07], "t_halt": 1793865978.42532, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [0.87, 50.44, 5.88, -1.84, -62.92, -27.07], "moved_after_request_deg": [-6.68, 1.14, 0.61, 0.35, 1.59, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 532, "t": "2026-11-05T17:07:05.595", "t_unix": 1793866025.595, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 62, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 533, "t": "2026-11-05T17:07:06.990", "t_unix": 1793866026.991, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 63, "hold_n": 0, "accepted": false, "reason": "busy", "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 531, "t": "2026-11-05T17:06:57.985", "t_unix": 1793866017.985, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 4, "step_deg": 1.0, "execute": true, "held_sec": 1.01, "accepted": true, "measured_before": [2.19, 50.53, 5.97, -4.04, -25.22, -27.77], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 9.58, "t_send": 1793866018.028655, "measured_before_send": [2.19, 50.53, 5.97, -4.04, -25.22, -27.77], "resends": [], "reached": false, "reached_angles": [-0.61, 1.49, 2.28, -0.26, 27.15, -29.61], "reach_err": 27.15, "elapsed_sec": 9.6, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 534, "t": "2026-11-05T17:07:08.997", "t_unix": 1793866028.998, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 64, "hold_n": 0, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.26, 27.33, -29.61], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 27.33, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, 26.33, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793866029.039335, "measured_before_send": [-0.61, 1.49, 2.28, -0.26, 27.33, -29.61], "resends": [], "reached": true, "reached_angles": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "reach_err": 2.28, "elapsed_sec": 0.81, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 535, "t": "2026-11-05T17:07:10.240", "t_unix": 1793866030.24, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -1.0, "hold_id": 65, "hold_n": 0, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 2.28, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, 25.33, -30.0], "sent": true, "timeout_sec": 8.0, "t_send": 1793866030.283036, "measured_before_send": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "resends": [0.34, 0.67], "reached": false, "not_moved": true, "reached_angles": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "reach_err": 2.28, "elapsed_sec": 1.01, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 536, "t": "2026-11-05T17:07:11.447", "t_unix": 1793866031.448, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 1, "held_sec": 1.208, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 0.68, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, 11.01, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793866031.46841, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 537, "t": "2026-11-05T17:07:11.565", "t_unix": 1793866031.565, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 2, "held_sec": 1.326, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 26.01, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 538, "t": "2026-11-05T17:07:11.666", "t_unix": 1793866031.667, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 3, "held_sec": 1.427, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 16.87, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 5.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 539, "t": "2026-11-05T17:07:11.851", "t_unix": 1793866031.851, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 4, "held_sec": 1.612, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 12.56, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 1.55, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -2.44, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793866032.216702, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 540, "t": "2026-11-05T17:07:12.321", "t_unix": 1793866032.321, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 5, "held_sec": 2.081, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 12.48, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 14.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 541, "t": "2026-11-05T17:07:12.422", "t_unix": 1793866032.422, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 6, "held_sec": 2.183, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, 9.4, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 11.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 542, "t": "2026-11-05T17:07:12.522", "t_unix": 1793866032.523, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 7, "held_sec": 2.283, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -0.79, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 1.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -15.79, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793866032.8154109, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 543, "t": "2026-11-05T17:07:12.907", "t_unix": 1793866032.907, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 8, "held_sec": 2.668, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -0.79, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 544, "t": "2026-11-05T17:07:13.008", "t_unix": 1793866033.009, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 9, "held_sec": 2.769, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -2.72, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 545, "t": "2026-11-05T17:07:13.124", "t_unix": 1793866033.124, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 10, "held_sec": 2.885, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -8.08, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 7.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 546, "t": "2026-11-05T17:07:13.224", "t_unix": 1793866033.225, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 11, "held_sec": 2.985, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -12.91, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 2.88, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [0.0, 0.0, 0.0, 0.0, -27.91, -30.0], "sent": true, "reached": null, "no_check": true, "t_send": 1793866033.2581928, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 547, "t": "2026-11-05T17:07:13.325", "t_unix": 1793866033.326, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 65, "hold_n": 12, "held_sec": 3.086, "accepted": true, "measured_before": [-0.61, 1.49, 2.28, -0.17, -14.06, -29.7], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 13.85, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.85, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 548, "t": "2026-11-05T17:07:13.426", "t_unix": 1793866033.427, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 65, "halt_joint": 4, "measured_at_request": [-0.61, 1.49, 2.28, -0.17, -14.06, -29.7], "t_halt": 1793866033.427485, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-0.61, 2.28, 3.07, -0.17, -14.58, -29.7], "moved_after_request_deg": [0.0, 0.79, 0.79, 0.0, -0.52, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 549, "t": "2026-11-05T17:07:15.150", "t_unix": 1793866035.151, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 4, "step_deg": 1.0, "execute": true, "held_sec": 1.006, "accepted": true, "measured_before": [-0.61, 2.54, 3.25, -0.17, -14.23, -29.61], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 8.0, "t_send": 1793866035.1980329, "measured_before_send": [-0.61, 2.54, 3.25, -0.17, -14.23, -29.61], "resends": [], "reached": true, "reached_angles": [-0.61, 1.49, 1.84, -0.17, 0.52, -29.61], "reach_err": 1.84, "elapsed_sec": 0.73, "grip_state": "unknown", "stopped": false, "stop_reason": null}
```

### 17:11 の記録 runs/experiments/gamepad_teleop/teleop_20261105_171125/meta.json

```json
{
  "run_stem": "teleop_20261105_171125",
  "started_at": "2026-11-05T17:11:26",
  "execute": true,
  "argv": [
    "tools/gamepad_teleop.py",
    "--execute"
  ],
  "controllers": [
    {
      "name": "PS4 Controller",
      "guid": "03008fe54c050000cc09000000016800",
      "instance_id": 0,
      "axes": 6,
      "buttons": 16,
      "hats": 0,
      "connected_at": "2026-11-05T17:11:31"
    }
  ],
  "python": "3.12.12 | packaged by conda-forge | (main, Oct 22 2025, 23:34:53) [Clang 19.1.7 ]",
  "pygame": "2.6.1",
  "sdl": "2.28.4",
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "start_pose": [
    -0.26,
    1.49,
    1.84,
    -0.26,
    -0.26,
    -29.7
  ],
  "guards": {
    "J1_MAX_DEG": 90.87,
    "range": "physical_limits (no base window. 2026-11-03)",
    "J4_SAFE": [
      -90.0,
      60.0
    ],
    "JOINT_LIMITS": [
      [
        -156.0,
        161.0
      ],
      [
        -79.0,
        123.0
      ],
      [
        -177.0,
        177.0
      ],
      [
        -156.0,
        162.0
      ],
      [
        -118.0,
        118.0
      ],
      [
        -177.0,
        178.0
      ]
    ],
    "window": {
      "lo": [
        -156.0,
        -79.0,
        -177.0,
        -156.0,
        -90.0,
        -177.0
      ],
      "hi": [
        161.0,
        90.87,
        177.0,
        162.0,
        60.0,
        178.0
      ]
    },
    "home_bypasses_range_check": true
  },
  "motion": {
    "speed": 20,
    "step_fine_deg": 1.0,
    "step_coarse_deg": 2.0,
    "reach_tol_deg": 3.0,
    "reach_timeout_min_sec": 8.0,
    "poll_sec": 0.3,
    "gripper_sleep_sec": 0.8,
    "grip_close_value": 20,
    "send_wait": 0.0,
    "home": [
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      -30.0
    ],
    "home_hold_sec": 1.0,
    "trigger_stop_above": 0.0,
    "hold_start_sec": 0.4,
    "hold_interval_sec": 0.1,
    "hold_ahead_deg": 15.0,
    "hold_stall_sec": 1.5,
    "ignored_check_sec": 0.5,
    "ignored_max_resends": 3,
    "j0_left_sign": -1.0,
    "up_sign": -1.0,
    "select_order": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "button_map": {
    "0": "cross",
    "1": "circle",
    "2": "square",
    "3": "triangle",
    "4": "share",
    "5": "home",
    "6": "options",
    "7": "l3",
    "8": "r3",
    "9": "l1",
    "10": "r1",
    "11": "dpad_up",
    "12": "dpad_down",
    "13": "dpad_left",
    "14": "dpad_right",
    "15": "touchpad"
  },
  "git": {
    "commit": "452a3b608873debb2dcb9f1d9a3f2e2a16169d83",
    "script_status": "clean"
  },
  "script_copy": "gamepad_teleop.py",
  "script_sha256": "65479edb0f19729c826a5306aef4bd92231cfd8a9e5436ac8b4a7a8ecab65fbe"
}
```

### 17:11 の記録 runs/experiments/gamepad_teleop/teleop_20261105_171125/log.jsonl（235行）

```json
{"seq": 1, "t": "2026-11-05T17:11:34.044", "t_unix": 1793866294.044, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 1, "held_sec": 0.407, "accepted": true, "measured_before": [-0.26, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.0, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-15.26, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866294.0647411, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 2, "t": "2026-11-05T17:11:34.146", "t_unix": 1793866294.146, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 2, "held_sec": 0.509, "accepted": true, "measured_before": [-0.26, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 3, "t": "2026-11-05T17:11:34.263", "t_unix": 1793866294.263, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 3, "held_sec": 0.626, "accepted": true, "measured_before": [-8.08, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 7.18, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.18, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 4, "t": "2026-11-05T17:11:34.446", "t_unix": 1793866294.446, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 4, "held_sec": 0.809, "accepted": true, "measured_before": [-9.4, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 5.86, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.86, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 5, "t": "2026-11-05T17:11:34.546", "t_unix": 1793866294.547, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 5, "held_sec": 0.909, "accepted": true, "measured_before": [-14.67, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.59, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.67, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866294.577536, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 6, "t": "2026-11-05T17:11:34.731", "t_unix": 1793866294.732, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 6, "held_sec": 1.094, "accepted": true, "measured_before": [-15.64, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 14.03, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.03, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 7, "t": "2026-11-05T17:11:34.833", "t_unix": 1793866294.833, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 7, "held_sec": 1.196, "accepted": true, "measured_before": [-19.77, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 9.9, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.9, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 8, "t": "2026-11-05T17:11:34.936", "t_unix": 1793866294.937, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 8, "held_sec": 1.299, "accepted": true, "measured_before": [-23.29, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 6.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 9, "t": "2026-11-05T17:11:35.037", "t_unix": 1793866295.037, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 9, "held_sec": 1.4, "accepted": true, "measured_before": [-28.74, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 0.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-43.74, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866295.06577, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 10, "t": "2026-11-05T17:11:35.156", "t_unix": 1793866295.157, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 10, "held_sec": 1.519, "accepted": true, "measured_before": [-29.26, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 14.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 11, "t": "2026-11-05T17:11:35.257", "t_unix": 1793866295.257, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 11, "held_sec": 1.62, "accepted": true, "measured_before": [-30.76, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 12, "t": "2026-11-05T17:11:35.358", "t_unix": 1793866295.358, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 12, "held_sec": 1.721, "accepted": true, "measured_before": [-34.36, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 9.38, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.38, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 13, "t": "2026-11-05T17:11:35.460", "t_unix": 1793866295.461, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 13, "held_sec": 1.823, "accepted": true, "measured_before": [-38.84, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 4.9, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-53.84, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866295.524389, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 14, "t": "2026-11-05T17:11:35.576", "t_unix": 1793866295.577, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 14, "held_sec": 1.939, "accepted": true, "measured_before": [-43.33, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 10.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 15, "t": "2026-11-05T17:11:35.678", "t_unix": 1793866295.679, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 15, "held_sec": 2.041, "accepted": true, "measured_before": [-43.76, 1.49, 1.84, -0.26, -0.26, -29.7], "start_source": "hold", "cmd_gap_deg": 0.0, "hold_lead_deg": 10.08, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.08, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 16, "t": "2026-11-05T17:11:35.794", "t_unix": 1793866295.795, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 16, "held_sec": 2.157, "accepted": true, "measured_before": [-46.75, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 7.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 17, "t": "2026-11-05T17:11:35.894", "t_unix": 1793866295.895, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 17, "held_sec": 2.257, "accepted": true, "measured_before": [-50.71, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 3.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-65.71, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866295.925659, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 18, "t": "2026-11-05T17:11:35.995", "t_unix": 1793866295.995, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 18, "held_sec": 2.357, "accepted": true, "measured_before": [-53.52, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 19, "t": "2026-11-05T17:11:36.095", "t_unix": 1793866296.095, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 19, "held_sec": 2.458, "accepted": true, "measured_before": [-54.66, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 11.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 20, "t": "2026-11-05T17:11:36.196", "t_unix": 1793866296.197, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 20, "held_sec": 2.559, "accepted": true, "measured_before": [-56.6, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 21, "t": "2026-11-05T17:11:36.296", "t_unix": 1793866296.297, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 21, "held_sec": 2.659, "accepted": true, "measured_before": [-61.78, 1.49, 1.84, -0.26, -0.26, -29.88], "start_source": "hold", "cmd_gap_deg": 0.18, "hold_lead_deg": 3.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-76.78, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866296.360428, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 22, "t": "2026-11-05T17:11:36.414", "t_unix": 1793866296.415, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 22, "held_sec": 2.777, "accepted": true, "measured_before": [-64.59, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 12.19, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.19, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 23, "t": "2026-11-05T17:11:36.515", "t_unix": 1793866296.516, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 23, "held_sec": 2.878, "accepted": true, "measured_before": [-66.44, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 24, "t": "2026-11-05T17:11:36.631", "t_unix": 1793866296.632, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 24, "held_sec": 2.994, "accepted": true, "measured_before": [-68.11, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 25, "t": "2026-11-05T17:11:36.732", "t_unix": 1793866296.733, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 25, "held_sec": 3.095, "accepted": true, "measured_before": [-73.38, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 3.4, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-88.38, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866296.766453, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 26, "t": "2026-11-05T17:11:36.867", "t_unix": 1793866296.868, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 26, "held_sec": 3.23, "accepted": true, "measured_before": [-76.46, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 27, "t": "2026-11-05T17:11:36.968", "t_unix": 1793866296.969, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 27, "held_sec": 3.331, "accepted": true, "measured_before": [-76.64, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 11.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 28, "t": "2026-11-05T17:11:37.070", "t_unix": 1793866297.071, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 1, "hold_n": 28, "held_sec": 3.433, "accepted": true, "released_during_job": true, "measured_before": [-80.15, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 8.23, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.23, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 29, "t": "2026-11-05T17:11:37.103", "t_unix": 1793866297.104, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 1, "halt_joint": 0, "measured_at_request": [-76.64, 1.49, 1.84, -0.26, -0.26, -29.97], "t_halt": 1793866297.104032, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-86.48, 1.49, 1.84, -0.26, -0.26, -29.97], "moved_after_request_deg": [-9.84, 0.0, 0.0, 0.0, 0.0, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 30, "t": "2026-11-05T17:11:38.476", "t_unix": 1793866298.477, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 1, "held_sec": 0.403, "accepted": true, "measured_before": [-86.3, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 0.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-71.3, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866298.4966779, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 31, "t": "2026-11-05T17:11:38.643", "t_unix": 1793866298.644, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 2, "held_sec": 0.57, "accepted": true, "measured_before": [-86.3, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 32, "t": "2026-11-05T17:11:38.758", "t_unix": 1793866298.759, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 3, "held_sec": 0.685, "accepted": true, "measured_before": [-82.61, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 33, "t": "2026-11-05T17:11:38.874", "t_unix": 1793866298.875, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 4, "held_sec": 0.801, "accepted": true, "measured_before": [-78.31, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 7.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 34, "t": "2026-11-05T17:11:38.991", "t_unix": 1793866298.992, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 5, "held_sec": 0.918, "accepted": true, "measured_before": [-72.94, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 1.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-57.94, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866299.0240362, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 35, "t": "2026-11-05T17:11:39.106", "t_unix": 1793866299.107, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 6, "held_sec": 1.033, "accepted": true, "measured_before": [-68.11, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 36, "t": "2026-11-05T17:11:39.289", "t_unix": 1793866299.289, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 7, "held_sec": 1.215, "accepted": true, "measured_before": [-57.74, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 0.2, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-42.74, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866299.61444, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 37, "t": "2026-11-05T17:11:39.705", "t_unix": 1793866299.706, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 8, "held_sec": 1.632, "accepted": true, "measured_before": [-58.27, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 15.53, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.53, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 38, "t": "2026-11-05T17:11:39.807", "t_unix": 1793866299.807, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 9, "held_sec": 1.733, "accepted": true, "measured_before": [-56.68, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 13.94, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.94, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 39, "t": "2026-11-05T17:11:39.908", "t_unix": 1793866299.909, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 10, "held_sec": 1.835, "accepted": true, "measured_before": [-53.26, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 10.52, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.52, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 40, "t": "2026-11-05T17:11:40.009", "t_unix": 1793866300.01, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 11, "held_sec": 1.936, "accepted": true, "measured_before": [-48.25, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 5.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 41, "t": "2026-11-05T17:11:40.111", "t_unix": 1793866300.111, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 12, "held_sec": 2.038, "accepted": true, "measured_before": [-44.2, 1.49, 1.84, -0.26, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 1.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.2, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866300.16956, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 42, "t": "2026-11-05T17:11:40.229", "t_unix": 1793866300.229, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 2, "hold_n": 13, "held_sec": 2.155, "accepted": true, "released_during_job": true, "measured_before": [-29.35, 1.49, 1.84, -0.35, -0.26, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 0.15, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-14.35, 1.49, 1.84, -0.26, -0.26, -29.7], "sent": false, "why": "halted_before_send", "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 43, "t": "2026-11-05T17:11:40.765", "t_unix": 1793866300.766, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 2, "halt_joint": 0, "measured_at_request": [-44.2, 1.49, 1.84, -0.26, -0.26, -29.97], "t_halt": 1793866300.765835, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.09, 2.46, 2.72, -0.35, 1.23, -29.97], "moved_after_request_deg": [15.11, 0.97, 0.88, -0.09, 1.49, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 44, "t": "2026-11-05T17:11:41.118", "t_unix": 1793866301.118, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 45, "t": "2026-11-05T17:11:42.985", "t_unix": 1793866302.986, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 1, "held_sec": 0.403, "accepted": true, "measured_before": [-29.0, 2.46, 2.81, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 0.97, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -12.19, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866303.002211, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 46, "t": "2026-11-05T17:11:43.087", "t_unix": 1793866303.087, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 2, "held_sec": 0.504, "accepted": true, "measured_before": [-29.0, 2.19, 2.81, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 47, "t": "2026-11-05T17:11:43.189", "t_unix": 1793866303.189, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 3, "held_sec": 0.607, "accepted": true, "measured_before": [-29.0, 1.58, 0.79, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 12.98, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.98, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 48, "t": "2026-11-05T17:11:43.290", "t_unix": 1793866303.29, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 4, "held_sec": 0.707, "accepted": true, "measured_before": [-29.0, 1.58, -3.51, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 49, "t": "2026-11-05T17:11:43.391", "t_unix": 1793866303.392, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 5, "held_sec": 0.809, "accepted": true, "measured_before": [-29.0, 1.58, -3.51, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 8.68, "command": [-29.09, 1.49, -12.19, -0.26, -0.26, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866303.4573078, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 50, "t": "2026-11-05T17:11:43.509", "t_unix": 1793866303.51, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 6, "held_sec": 0.927, "accepted": true, "measured_before": [-29.0, 1.58, -10.54, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 1.65, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -25.54, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866303.533775, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 51, "t": "2026-11-05T17:11:43.609", "t_unix": 1793866303.61, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 7, "held_sec": 1.027, "accepted": true, "measured_before": [-29.0, 1.49, -10.63, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 52, "t": "2026-11-05T17:11:43.711", "t_unix": 1793866303.711, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 8, "held_sec": 1.128, "accepted": true, "measured_before": [-29.0, 1.49, -11.77, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 53, "t": "2026-11-05T17:11:43.812", "t_unix": 1793866303.813, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 9, "held_sec": 1.23, "accepted": true, "measured_before": [-29.0, 1.49, -11.77, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 54, "t": "2026-11-05T17:11:43.913", "t_unix": 1793866303.914, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 10, "held_sec": 1.331, "accepted": true, "measured_before": [-29.0, 1.49, -11.77, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 13.77, "command": [-29.09, 1.49, -25.54, -0.26, -0.26, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866303.976088, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 55, "t": "2026-11-05T17:11:44.030", "t_unix": 1793866304.03, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 11, "held_sec": 1.447, "accepted": true, "measured_before": [-29.0, 1.49, -23.81, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 1.73, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -38.81, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866304.049985, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 56, "t": "2026-11-05T17:11:44.183", "t_unix": 1793866304.184, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 12, "held_sec": 1.601, "accepted": true, "measured_before": [-29.0, 1.49, -24.34, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 57, "t": "2026-11-05T17:11:44.285", "t_unix": 1793866304.285, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 13, "held_sec": 1.702, "accepted": true, "measured_before": [-29.0, 1.49, -27.15, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 58, "t": "2026-11-05T17:11:44.388", "t_unix": 1793866304.389, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 14, "held_sec": 1.806, "accepted": true, "measured_before": [-29.0, 1.49, -31.64, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 7.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 59, "t": "2026-11-05T17:11:44.489", "t_unix": 1793866304.49, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 15, "held_sec": 1.907, "accepted": true, "measured_before": [-29.0, 1.49, -35.85, -0.35, 1.31, -29.97], "start_source": "hold", "cmd_gap_deg": 1.57, "hold_lead_deg": 2.96, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -50.85, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866304.514522, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 60, "t": "2026-11-05T17:11:44.590", "t_unix": 1793866304.591, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 16, "held_sec": 2.008, "accepted": true, "measured_before": [-29.0, 1.31, -37.79, -0.35, 1.23, -29.97], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 13.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 61, "t": "2026-11-05T17:11:44.708", "t_unix": 1793866304.708, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 17, "held_sec": 2.125, "accepted": true, "measured_before": [-29.0, 1.31, -39.11, -0.35, 1.23, -29.97], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 11.74, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.74, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 62, "t": "2026-11-05T17:11:44.811", "t_unix": 1793866304.811, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -15.0, "hold_id": 3, "hold_n": 18, "held_sec": 2.228, "accepted": true, "measured_before": [-29.0, 1.31, -43.59, -0.35, 1.23, -29.97], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 7.26, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.26, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 63, "t": "2026-11-05T17:11:44.896", "t_unix": 1793866304.896, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 3, "halt_joint": 2, "measured_at_request": [-29.0, 1.31, -43.59, -0.35, 1.23, -29.97], "t_halt": 1793866304.897255, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.0, 1.49, -47.63, -0.35, 1.84, -29.97], "moved_after_request_deg": [0.0, 0.18, -4.04, 0.0, 0.61, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 64, "t": "2026-11-05T17:11:45.689", "t_unix": 1793866305.69, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 1, "held_sec": 0.406, "accepted": true, "measured_before": [-29.0, 1.93, -47.02, -0.35, 2.46, -29.97], "start_source": "hold", "cmd_gap_deg": 2.72, "hold_lead_deg": 0.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -32.02, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866305.7081118, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 65, "t": "2026-11-05T17:11:45.791", "t_unix": 1793866305.791, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 2, "held_sec": 0.507, "accepted": true, "measured_before": [-29.0, 1.66, -47.02, -0.35, 2.46, -29.97], "start_source": "hold", "cmd_gap_deg": 2.72, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 66, "t": "2026-11-05T17:11:45.907", "t_unix": 1793866305.907, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 3, "held_sec": 0.624, "accepted": true, "measured_before": [-29.0, 0.79, -43.94, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 67, "t": "2026-11-05T17:11:46.091", "t_unix": 1793866306.091, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 4, "held_sec": 0.808, "accepted": true, "measured_before": [-29.0, 0.79, -41.39, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 9.37, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.37, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 68, "t": "2026-11-05T17:11:46.191", "t_unix": 1793866306.192, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 5, "held_sec": 0.908, "accepted": true, "measured_before": [-29.0, 0.79, -36.65, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 4.63, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -21.65, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866306.221492, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 69, "t": "2026-11-05T17:11:46.293", "t_unix": 1793866306.294, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 6, "held_sec": 1.01, "accepted": true, "measured_before": [-29.0, 0.79, -32.43, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 70, "t": "2026-11-05T17:11:46.396", "t_unix": 1793866306.397, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 7, "held_sec": 1.113, "accepted": true, "measured_before": [-29.0, 0.79, -30.76, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 71, "t": "2026-11-05T17:11:46.497", "t_unix": 1793866306.497, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 8, "held_sec": 1.214, "accepted": true, "measured_before": [-29.0, 0.79, -29.44, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 7.79, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.79, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 72, "t": "2026-11-05T17:11:46.600", "t_unix": 1793866306.6, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 9, "held_sec": 1.317, "accepted": true, "measured_before": [-29.0, 0.79, -25.4, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -10.4, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866306.630523, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 73, "t": "2026-11-05T17:11:46.715", "t_unix": 1793866306.716, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 10, "held_sec": 1.432, "accepted": true, "measured_before": [-29.0, 0.79, -23.55, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 13.15, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.15, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 74, "t": "2026-11-05T17:11:46.831", "t_unix": 1793866306.832, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 11, "held_sec": 1.548, "accepted": true, "measured_before": [-29.0, 0.79, -20.21, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 9.81, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.81, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 75, "t": "2026-11-05T17:11:46.945", "t_unix": 1793866306.946, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 12, "held_sec": 1.662, "accepted": true, "measured_before": [-29.0, 0.79, -11.51, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 1.11, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, 3.49, -0.26, -0.26, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866307.111727, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 76, "t": "2026-11-05T17:11:47.164", "t_unix": 1793866307.165, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 15.0, "hold_id": 4, "hold_n": 13, "held_sec": 1.881, "accepted": true, "measured_before": [-29.0, 0.79, -8.34, -0.35, 1.66, -29.97], "start_source": "hold", "cmd_gap_deg": 1.92, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 77, "t": "2026-11-05T17:11:47.334", "t_unix": 1793866307.334, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 4, "halt_joint": 2, "measured_at_request": [-29.0, 0.79, -8.34, -0.35, 1.66, -29.97], "t_halt": 1793866307.334673, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.0, 1.75, -4.74, -0.35, 3.16, -29.97], "moved_after_request_deg": [0.0, 0.96, 3.6, 0.0, 1.5, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 78, "t": "2026-11-05T17:11:48.272", "t_unix": 1793866308.273, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 3, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 79, "t": "2026-11-05T17:11:48.693", "t_unix": 1793866308.694, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 80, "t": "2026-11-05T17:11:49.496", "t_unix": 1793866309.497, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 1, "held_sec": 0.4, "accepted": true, "measured_before": [-29.09, 1.75, -4.74, -0.35, 3.25, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 3.51, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 18.25, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866309.526401, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 81, "t": "2026-11-05T17:11:49.596", "t_unix": 1793866309.597, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 2, "held_sec": 0.501, "accepted": true, "measured_before": [-29.09, 1.75, -4.74, -0.35, 3.16, -29.97], "start_source": "hold", "cmd_gap_deg": 0.27, "hold_lead_deg": 15.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 82, "t": "2026-11-05T17:11:49.697", "t_unix": 1793866309.698, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 3, "held_sec": 0.602, "accepted": true, "measured_before": [-29.09, 1.49, -3.25, -0.35, 2.54, -29.97], "start_source": "hold", "cmd_gap_deg": 1.49, "hold_lead_deg": 15.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 83, "t": "2026-11-05T17:11:49.799", "t_unix": 1793866309.799, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 4, "held_sec": 0.703, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 5.62, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 12.63, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.63, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 84, "t": "2026-11-05T17:11:49.914", "t_unix": 1793866309.915, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 5, "held_sec": 0.819, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 10.81, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 7.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 85, "t": "2026-11-05T17:11:50.016", "t_unix": 1793866310.016, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 6, "held_sec": 0.92, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 15.11, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 3.14, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 30.11, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866310.051081, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 86, "t": "2026-11-05T17:11:50.132", "t_unix": 1793866310.133, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 7, "held_sec": 1.037, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 18.28, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 11.83, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.83, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 87, "t": "2026-11-05T17:11:50.233", "t_unix": 1793866310.234, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 8, "held_sec": 1.138, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 18.98, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 88, "t": "2026-11-05T17:11:50.334", "t_unix": 1793866310.335, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 9, "held_sec": 1.239, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 21.0, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 9.11, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.11, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 89, "t": "2026-11-05T17:11:50.450", "t_unix": 1793866310.45, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 10, "held_sec": 1.354, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 26.63, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 3.48, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 41.63, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866310.512179, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 90, "t": "2026-11-05T17:11:50.569", "t_unix": 1793866310.57, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 11, "held_sec": 1.474, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 29.88, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 11.75, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.75, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 91, "t": "2026-11-05T17:11:50.684", "t_unix": 1793866310.684, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 12, "held_sec": 1.588, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 31.2, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 10.43, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.43, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 92, "t": "2026-11-05T17:11:50.787", "t_unix": 1793866310.788, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 13, "held_sec": 1.692, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 34.18, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 7.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 93, "t": "2026-11-05T17:11:50.904", "t_unix": 1793866310.905, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 14, "held_sec": 1.809, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 39.02, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 2.61, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 54.02, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866310.935574, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 94, "t": "2026-11-05T17:11:51.005", "t_unix": 1793866311.006, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 15, "held_sec": 1.91, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 41.3, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 12.72, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.72, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 95, "t": "2026-11-05T17:11:51.121", "t_unix": 1793866311.122, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 16, "held_sec": 2.025, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 42.71, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 11.31, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.31, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 96, "t": "2026-11-05T17:11:51.222", "t_unix": 1793866311.223, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 17, "held_sec": 2.127, "accepted": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 46.05, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 7.97, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.97, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 97, "t": "2026-11-05T17:11:51.338", "t_unix": 1793866311.338, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": 15.0, "hold_id": 5, "hold_n": 18, "held_sec": 2.242, "accepted": true, "released_during_job": true, "measured_before": [-29.09, 1.49, -2.46, -0.35, 53.52, -29.97], "start_source": "hold", "cmd_gap_deg": 2.28, "hold_lead_deg": 0.5, "clip": [{"joint": 4, "want": 68.52, "cmd": 60.0, "limit": "J4_SAFE", "bound": 60.0}], "refused": [], "limit_ja": "j4 を +68.52° → +60.00° に切った（J4_SAFE +60.00°）", "limit_ascii": "j4 clipped +68.52->+60.00 (J4_SAFE +60.00)", "command": [-29.09, 1.49, -4.74, -0.26, 60.0, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866311.546308, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 98, "t": "2026-11-05T17:11:51.622", "t_unix": 1793866311.623, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 5, "halt_joint": 4, "measured_at_request": [-29.09, 1.49, -2.46, -0.35, 46.05, -29.97], "t_halt": 1793866311.628459, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.09, 2.28, -1.75, -0.35, 54.75, -29.97], "moved_after_request_deg": [0.0, 0.79, 0.71, 0.0, 8.7, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 99, "t": "2026-11-05T17:11:52.288", "t_unix": 1793866312.289, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 1, "held_sec": 0.417, "accepted": true, "measured_before": [-29.09, 2.28, -1.58, -0.35, 54.93, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.16, "hold_lead_deg": 0.18, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 39.93, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866312.307217, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 100, "t": "2026-11-05T17:11:52.406", "t_unix": 1793866312.406, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 2, "held_sec": 0.534, "accepted": true, "measured_before": [-29.09, 1.93, -1.58, -0.35, 55.1, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.16, "hold_lead_deg": 15.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 101, "t": "2026-11-05T17:11:52.506", "t_unix": 1793866312.507, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 3, "held_sec": 0.634, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 54.4, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 14.47, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.47, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 102, "t": "2026-11-05T17:11:52.608", "t_unix": 1793866312.609, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 4, "held_sec": 0.736, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 49.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 9.81, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.81, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 103, "t": "2026-11-05T17:11:52.709", "t_unix": 1793866312.71, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 5, "held_sec": 0.837, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 45.7, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 5.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 104, "t": "2026-11-05T17:11:52.810", "t_unix": 1793866312.811, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 6, "held_sec": 0.938, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 42.36, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 2.43, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 27.36, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866312.841869, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 105, "t": "2026-11-05T17:11:52.910", "t_unix": 1793866312.911, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 7, "held_sec": 1.039, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 42.01, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 14.65, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.65, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 106, "t": "2026-11-05T17:11:53.012", "t_unix": 1793866313.013, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 8, "held_sec": 1.14, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 39.63, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 12.27, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.27, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 107, "t": "2026-11-05T17:11:53.113", "t_unix": 1793866313.113, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 9, "held_sec": 1.241, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 35.06, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 7.7, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.7, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 108, "t": "2026-11-05T17:11:53.214", "t_unix": 1793866313.214, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 10, "held_sec": 1.342, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 30.93, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 3.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 15.93, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866313.2492642, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 109, "t": "2026-11-05T17:11:53.316", "t_unix": 1793866313.317, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 11, "held_sec": 1.444, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 27.42, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 11.49, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.49, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 110, "t": "2026-11-05T17:11:53.484", "t_unix": 1793866313.484, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 12, "held_sec": 1.612, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 20.91, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 4.98, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, 5.91, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866313.6315572, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 111, "t": "2026-11-05T17:11:53.787", "t_unix": 1793866313.788, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 13, "held_sec": 1.915, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 18.63, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 12.72, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.72, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 112, "t": "2026-11-05T17:11:53.888", "t_unix": 1793866313.889, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 14, "held_sec": 2.017, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 15.73, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 9.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 113, "t": "2026-11-05T17:11:53.990", "t_unix": 1793866313.991, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 15, "held_sec": 2.119, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 11.42, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 5.51, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.51, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 114, "t": "2026-11-05T17:11:54.093", "t_unix": 1793866314.093, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 16, "held_sec": 2.221, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 8.7, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 2.79, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, -6.3, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866314.127017, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 115, "t": "2026-11-05T17:11:54.194", "t_unix": 1793866314.194, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 17, "held_sec": 2.322, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 8.7, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 15.0, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.0, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 116, "t": "2026-11-05T17:11:54.295", "t_unix": 1793866314.296, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 18, "held_sec": 2.423, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 6.76, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 13.06, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.06, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 117, "t": "2026-11-05T17:11:54.396", "t_unix": 1793866314.397, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 19, "held_sec": 2.525, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 2.54, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 8.84, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.84, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 118, "t": "2026-11-05T17:11:54.497", "t_unix": 1793866314.497, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 20, "held_sec": 2.625, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, 2.54, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 8.84, "command": [-29.09, 1.49, -4.74, -0.26, -6.3, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866314.560643, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 119, "t": "2026-11-05T17:11:54.613", "t_unix": 1793866314.614, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 21, "held_sec": 2.742, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -3.33, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 2.97, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, -18.33, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866314.635069, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 120, "t": "2026-11-05T17:11:54.800", "t_unix": 1793866314.8, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 22, "held_sec": 2.928, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -15.64, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 2.69, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, -30.64, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866315.112708, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 121, "t": "2026-11-05T17:11:55.170", "t_unix": 1793866315.171, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 23, "held_sec": 3.298, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -15.82, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 14.82, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.82, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 122, "t": "2026-11-05T17:11:55.270", "t_unix": 1793866315.271, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 24, "held_sec": 3.399, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -17.31, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 13.33, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.33, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 123, "t": "2026-11-05T17:11:55.371", "t_unix": 1793866315.372, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 25, "held_sec": 3.499, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -21.62, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 9.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 124, "t": "2026-11-05T17:11:55.473", "t_unix": 1793866315.473, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 26, "held_sec": 3.601, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -26.19, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 4.45, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, -41.19, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866315.501866, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 125, "t": "2026-11-05T17:11:55.574", "t_unix": 1793866315.574, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 27, "held_sec": 3.702, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -28.12, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 13.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 126, "t": "2026-11-05T17:11:55.675", "t_unix": 1793866315.675, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 28, "held_sec": 3.803, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -28.91, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 127, "t": "2026-11-05T17:11:55.791", "t_unix": 1793866315.791, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 29, "held_sec": 3.919, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -32.25, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 8.94, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.94, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 128, "t": "2026-11-05T17:11:55.891", "t_unix": 1793866315.892, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 30, "held_sec": 4.019, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -37.61, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 3.58, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 1.49, -4.74, -0.26, -52.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866315.921396, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 129, "t": "2026-11-05T17:11:56.007", "t_unix": 1793866316.007, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 4, "step_deg": 1.0, "execute": true, "joint": 4, "delta": -15.0, "hold_id": 6, "hold_n": 31, "held_sec": 4.135, "accepted": true, "measured_before": [-29.09, 1.23, -1.66, -0.35, -38.84, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 13.77, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.77, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 130, "t": "2026-11-05T17:11:56.075", "t_unix": 1793866316.075, "button": null, "button_name": null, "kind": "halt", "selected_joint": 4, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 6, "halt_joint": 4, "measured_at_request": [-29.09, 1.23, -1.66, -0.35, -38.84, -29.97], "t_halt": 1793866316.0765388, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.09, 2.19, -0.79, -0.35, -37.61, -29.97], "moved_after_request_deg": [0.0, 0.96, 0.87, 0.0, 1.23, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 131, "t": "2026-11-05T17:11:56.884", "t_unix": 1793866316.884, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 5, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 132, "t": "2026-11-05T17:11:57.384", "t_unix": 1793866317.385, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 133, "t": "2026-11-05T17:11:59.150", "t_unix": 1793866319.151, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 1, "held_sec": 0.407, "accepted": true, "measured_before": [-29.09, 2.19, -0.61, -0.35, -37.44, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 0.7, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, -12.81, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866319.168604, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 134, "t": "2026-11-05T17:11:59.251", "t_unix": 1793866319.251, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 2, "held_sec": 0.508, "accepted": true, "measured_before": [-29.09, -2.37, -1.49, -0.35, -39.11, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.25, "hold_lead_deg": 10.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 135, "t": "2026-11-05T17:11:59.420", "t_unix": 1793866319.421, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 3, "held_sec": 0.678, "accepted": true, "measured_before": [-29.09, -4.13, -1.49, -0.35, -39.19, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.25, "hold_lead_deg": 8.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 136, "t": "2026-11-05T17:11:59.523", "t_unix": 1793866319.523, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 4, "held_sec": 0.78, "accepted": true, "measured_before": [-29.09, -8.87, -1.49, -0.35, -39.19, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.25, "hold_lead_deg": 3.94, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, -23.87, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866319.5531478, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 137, "t": "2026-11-05T17:11:59.623", "t_unix": 1793866319.624, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 5, "held_sec": 0.881, "accepted": true, "measured_before": [-29.09, -11.86, -1.66, -0.35, -39.72, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 138, "t": "2026-11-05T17:11:59.725", "t_unix": 1793866319.726, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 6, "held_sec": 0.983, "accepted": true, "measured_before": [-29.09, -11.95, -1.66, -0.35, -40.16, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 139, "t": "2026-11-05T17:11:59.826", "t_unix": 1793866319.827, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 7, "held_sec": 1.084, "accepted": true, "measured_before": [-29.09, -11.95, -1.66, -0.35, -40.16, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 140, "t": "2026-11-05T17:11:59.927", "t_unix": 1793866319.928, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 8, "held_sec": 1.185, "accepted": true, "measured_before": [-29.09, -11.95, -1.66, -0.35, -40.16, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 11.92, "command": [-29.09, -23.87, -4.74, -0.26, -37.61, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866319.9469109, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 141, "t": "2026-11-05T17:12:00.028", "t_unix": 1793866320.028, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 9, "held_sec": 1.285, "accepted": true, "measured_before": [-29.09, -16.25, -1.66, -0.35, -40.16, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 7.62, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.62, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 142, "t": "2026-11-05T17:12:00.228", "t_unix": 1793866320.229, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 10, "held_sec": 1.486, "accepted": true, "measured_before": [-29.09, -18.63, -1.66, -0.35, -40.16, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 5.24, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.24, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 143, "t": "2026-11-05T17:12:00.345", "t_unix": 1793866320.346, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 11, "held_sec": 1.603, "accepted": true, "measured_before": [-29.09, -23.2, -1.66, -0.35, -40.25, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.08, "hold_lead_deg": 0.67, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, -38.2, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866320.407613, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 144, "t": "2026-11-05T17:12:00.464", "t_unix": 1793866320.465, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -15.0, "hold_id": 7, "hold_n": 12, "held_sec": 1.722, "accepted": true, "measured_before": [-29.09, -23.29, -1.66, -0.35, -40.78, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.17, "hold_lead_deg": 14.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 14.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 145, "t": "2026-11-05T17:12:00.550", "t_unix": 1793866320.551, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 7, "halt_joint": 1, "measured_at_request": [-29.09, -23.29, -1.66, -0.35, -40.78, -29.97], "t_halt": 1793866320.551184, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.09, -27.33, -1.75, -0.35, -41.13, -29.97], "moved_after_request_deg": [0.0, -4.04, -0.09, 0.0, -0.35, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 146, "t": "2026-11-05T17:12:01.444", "t_unix": 1793866321.444, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 1, "held_sec": 0.405, "accepted": true, "measured_before": [-29.09, -26.98, -1.75, -0.35, -41.13, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.52, "hold_lead_deg": 0.35, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, -11.98, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866321.460119, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 147, "t": "2026-11-05T17:12:01.559", "t_unix": 1793866321.56, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 2, "held_sec": 0.52, "accepted": true, "measured_before": [-29.09, -27.07, -1.75, -0.35, -41.13, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.52, "hold_lead_deg": 15.09, "sent": false, "why": "lead_ok", "hold_remaining_deg": 15.09, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 148, "t": "2026-11-05T17:12:01.661", "t_unix": 1793866321.662, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 3, "held_sec": 0.623, "accepted": true, "measured_before": [-29.09, -25.66, -1.75, -0.35, -41.39, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.78, "hold_lead_deg": 13.68, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.68, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 149, "t": "2026-11-05T17:12:01.763", "t_unix": 1793866321.763, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 4, "held_sec": 0.724, "accepted": true, "measured_before": [-29.09, -20.56, -1.75, -0.43, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 8.58, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.58, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 150, "t": "2026-11-05T17:12:01.879", "t_unix": 1793866321.879, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 5, "held_sec": 0.84, "accepted": true, "measured_before": [-29.09, -15.02, -1.75, -0.43, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 3.04, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, -0.02, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866321.912749, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 151, "t": "2026-11-05T17:12:01.981", "t_unix": 1793866321.981, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 6, "held_sec": 0.942, "accepted": true, "measured_before": [-29.09, -12.04, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 12.02, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.02, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 152, "t": "2026-11-05T17:12:02.082", "t_unix": 1793866322.082, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 7, "held_sec": 1.043, "accepted": true, "measured_before": [-29.09, -11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 153, "t": "2026-11-05T17:12:02.198", "t_unix": 1793866322.198, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 8, "held_sec": 1.159, "accepted": true, "measured_before": [-29.09, -11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 154, "t": "2026-11-05T17:12:02.299", "t_unix": 1793866322.3, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 9, "held_sec": 1.26, "accepted": true, "measured_before": [-29.09, -11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.4, "command": [-29.09, -0.02, -4.74, -0.26, -37.61, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866322.319524, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 155, "t": "2026-11-05T17:12:02.400", "t_unix": 1793866322.4, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 10, "held_sec": 1.361, "accepted": true, "measured_before": [-29.09, -11.25, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.23, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.23, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 156, "t": "2026-11-05T17:12:02.502", "t_unix": 1793866322.502, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 11, "held_sec": 1.463, "accepted": true, "measured_before": [-29.09, -9.75, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 157, "t": "2026-11-05T17:12:02.616", "t_unix": 1793866322.617, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 12, "held_sec": 1.577, "accepted": true, "measured_before": [-29.09, -4.48, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 4.46, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 10.52, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866322.64813, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 158, "t": "2026-11-05T17:12:02.718", "t_unix": 1793866322.719, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 13, "held_sec": 1.679, "accepted": true, "measured_before": [-29.09, -0.87, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.39, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.39, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 159, "t": "2026-11-05T17:12:02.820", "t_unix": 1793866322.821, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 14, "held_sec": 1.781, "accepted": true, "measured_before": [-29.09, 0.79, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.73, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.73, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 160, "t": "2026-11-05T17:12:02.920", "t_unix": 1793866322.921, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 15, "held_sec": 1.881, "accepted": true, "measured_before": [-29.09, 2.1, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 8.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 161, "t": "2026-11-05T17:12:03.022", "t_unix": 1793866323.022, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 16, "held_sec": 1.983, "accepted": true, "measured_before": [-29.09, 5.88, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 4.64, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 20.88, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866323.053319, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 162, "t": "2026-11-05T17:12:03.123", "t_unix": 1793866323.123, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 17, "held_sec": 2.084, "accepted": true, "measured_before": [-29.09, 10.1, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 10.78, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.78, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 163, "t": "2026-11-05T17:12:03.239", "t_unix": 1793866323.24, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 18, "held_sec": 2.2, "accepted": true, "measured_before": [-29.09, 11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.46, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.46, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 164, "t": "2026-11-05T17:12:03.340", "t_unix": 1793866323.341, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 19, "held_sec": 2.302, "accepted": true, "measured_before": [-29.09, 11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.46, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.46, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 165, "t": "2026-11-05T17:12:03.456", "t_unix": 1793866323.456, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 20, "held_sec": 2.417, "accepted": true, "measured_before": [-29.09, 11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.46, "command": [-29.09, 20.88, -4.74, -0.26, -37.61, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866323.4774468, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 166, "t": "2026-11-05T17:12:03.558", "t_unix": 1793866323.558, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 21, "held_sec": 2.519, "accepted": true, "measured_before": [-29.09, 11.42, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 9.46, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.46, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 167, "t": "2026-11-05T17:12:03.659", "t_unix": 1793866323.659, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 22, "held_sec": 2.62, "accepted": true, "measured_before": [-29.09, 13.44, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 7.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 168, "t": "2026-11-05T17:12:03.759", "t_unix": 1793866323.759, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 23, "held_sec": 2.72, "accepted": true, "measured_before": [-29.09, 17.31, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 3.57, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 32.31, -4.74, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866323.789401, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 169, "t": "2026-11-05T17:12:03.860", "t_unix": 1793866323.86, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 24, "held_sec": 2.821, "accepted": true, "measured_before": [-29.09, 21.26, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 11.05, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.05, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 170, "t": "2026-11-05T17:12:03.960", "t_unix": 1793866323.96, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 15.0, "hold_id": 8, "hold_n": 25, "held_sec": 2.921, "accepted": true, "released_during_job": true, "measured_before": [-29.09, 21.97, -1.75, -0.35, -41.48, -29.97], "start_source": "mixed", "cmd_gap_deg": 3.87, "hold_lead_deg": 10.34, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.34, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 171, "t": "2026-11-05T17:12:03.993", "t_unix": 1793866323.993, "button": null, "button_name": null, "kind": "halt", "selected_joint": 1, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 8, "halt_joint": 1, "measured_at_request": [-29.09, 21.26, -1.75, -0.35, -41.48, -29.97], "t_halt": 1793866323.993245, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-29.17, 23.37, -0.79, -0.35, -39.72, -29.97], "moved_after_request_deg": [-0.08, 2.11, 0.96, 0.0, 1.76, 0.0], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 172, "t": "2026-11-05T17:12:04.827", "t_unix": 1793866324.828, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 9, "hold_n": 0, "accepted": true, "measured_before": [-29.17, 23.46, -0.61, -0.35, -39.55, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 24.37, -4.74, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866324.863523, "measured_before_send": [-29.17, 23.46, -0.61, -0.35, -39.55, -29.97], "resends": [], "reached": false, "settled": true, "reached_angles": [-29.17, 25.48, -1.66, -0.35, -39.55, -29.97], "reach_err": 3.08, "elapsed_sec": 0.59, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 173, "t": "2026-11-05T17:12:05.501", "t_unix": 1793866325.502, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 10, "hold_n": 0, "accepted": true, "measured_before": [-29.17, 25.48, -1.66, -0.35, -39.55, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 25.37, -4.74, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866325.546955, "measured_before_send": [-29.17, 25.48, -1.66, -0.35, -39.55, -29.97], "resends": [], "reached": true, "reached_angles": [-29.17, 25.48, -1.66, -0.35, -39.55, -29.97], "reach_err": 3.08, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 174, "t": "2026-11-05T17:12:06.040", "t_unix": 1793866326.041, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": 1.0, "hold_id": 11, "hold_n": 0, "accepted": true, "measured_before": [-29.17, 26.45, -1.66, -0.35, -39.55, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 26.37, -4.74, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866326.10059, "measured_before_send": [-29.17, 26.45, -1.66, -0.35, -39.55, -29.97], "resends": [], "reached": true, "reached_angles": [-29.17, 26.45, -1.66, -0.35, -39.55, -29.97], "reach_err": 3.08, "elapsed_sec": 0.03, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 175, "t": "2026-11-05T17:12:07.605", "t_unix": 1793866327.605, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 177, "t": "2026-11-05T17:12:11.011", "t_unix": 1793866331.012, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 1, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 176, "t": "2026-11-05T17:12:08.339", "t_unix": 1793866328.339, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 1, "step_deg": 2.0, "execute": true, "joint": 1, "delta": 2.0, "hold_id": 12, "hold_n": 0, "accepted": true, "measured_before": [-29.17, 27.59, -1.66, -0.35, -39.55, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.08, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 28.37, -4.74, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866328.395565, "measured_before_send": [-29.17, 27.59, -1.66, -0.35, -39.55, -29.97], "resends": [7.1, 7.44], "reached": false, "not_moved": true, "reached_angles": [-29.17, 27.59, -1.66, -0.35, -41.39, -29.97], "reach_err": 3.78, "elapsed_sec": 7.75, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 179, "t": "2026-11-05T17:12:16.544", "t_unix": 1793866336.544, "button": 3, "button_name": "triangle", "kind": "select_joint", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 178, "t": "2026-11-05T17:12:16.291", "t_unix": 1793866336.291, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 1, "step_deg": 1.0, "execute": true, "joint": 1, "delta": -1.0, "hold_id": 16, "hold_n": 0, "accepted": true, "measured_before": [-29.17, 27.59, -1.66, -0.35, -41.39, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 3.78, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, -4.74, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866336.33352, "measured_before_send": [-29.17, 27.59, -1.66, -0.35, -41.39, -29.97], "resends": [], "reached": false, "settled": true, "reached_angles": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.3, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 180, "t": "2026-11-05T17:12:18.946", "t_unix": 1793866338.947, "button": 11, "button_name": "dpad_up", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": -1.0, "hold_id": 17, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "start_source": "measured", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, -2.66, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866338.992312, "measured_before_send": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "resends": [0.35, 0.67], "reached": false, "not_moved": true, "reached_angles": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 1.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 181, "t": "2026-11-05T17:12:20.052", "t_unix": 1793866340.052, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 18, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, -1.66, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866340.0907981, "measured_before_send": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 182, "t": "2026-11-05T17:12:20.972", "t_unix": 1793866340.972, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 19, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, -0.66, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866341.0109508, "measured_before_send": [-29.26, 28.47, -1.66, -0.35, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, -0.17, -0.35, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 183, "t": "2026-11-05T17:12:22.098", "t_unix": 1793866342.098, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 20, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 0.26, -0.35, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 0.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866342.122114, "measured_before_send": [-29.26, 28.47, 0.26, -0.35, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, 0.61, -0.35, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 184, "t": "2026-11-05T17:12:22.934", "t_unix": 1793866342.935, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 2, "delta": 1.0, "hold_id": 21, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 1.14, -0.26, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 1.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866342.958208, "measured_before_send": [-29.26, 28.47, 1.14, -0.26, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, 1.14, -0.26, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.02, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 185, "t": "2026-11-05T17:12:23.287", "t_unix": 1793866343.288, "button": 10, "button_name": "r1", "kind": "modifier", "selected_joint": 2, "step_deg": 2.0, "execute": true, "accepted": true, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 186, "t": "2026-11-05T17:12:24.081", "t_unix": 1793866344.082, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": 2.0, "hold_id": 22, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 2.19, -0.26, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 3.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866344.396653, "measured_before_send": [-29.26, 28.47, 2.19, -0.26, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, 3.77, -0.26, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 187, "t": "2026-11-05T17:12:24.993", "t_unix": 1793866344.994, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": 2.0, "hold_id": 23, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 4.21, -0.26, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 5.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866345.046895, "measured_before_send": [-29.26, 28.47, 4.21, -0.26, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, 5.71, -0.26, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.17, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 188, "t": "2026-11-05T17:12:26.188", "t_unix": 1793866346.188, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": 2.0, "hold_id": 24, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 6.15, -0.26, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 7.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866346.23129, "measured_before_send": [-29.26, 28.47, 6.15, -0.26, -41.74, -29.97], "resends": [], "reached": true, "reached_angles": [-29.26, 28.47, 7.64, -0.26, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.16, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 189, "t": "2026-11-05T17:12:27.228", "t_unix": 1793866347.228, "button": 12, "button_name": "dpad_down", "kind": "move", "selected_joint": 2, "step_deg": 2.0, "execute": true, "joint": 2, "delta": 2.0, "hold_id": 25, "hold_n": 0, "accepted": true, "measured_before": [-29.26, 28.47, 8.26, -0.26, -41.74, -29.97], "start_source": "command", "others_from_measured": [], "cmd_gap_deg": 4.13, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-29.09, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "timeout_sec": 8.0, "t_send": 1793866347.258462, "measured_before_send": [-29.26, 28.47, 8.26, -0.26, -41.74, -29.97], "resends": [], "reached": false, "settled": true, "reached_angles": [-29.26, 28.47, 10.28, -0.26, -41.74, -29.97], "reach_err": 4.13, "elapsed_sec": 0.6, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 190, "t": "2026-11-05T17:12:29.209", "t_unix": 1793866349.209, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 1, "held_sec": 0.417, "accepted": true, "measured_before": [-29.26, 28.47, 10.28, -0.17, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 0.17, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-44.26, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866349.2381902, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 191, "t": "2026-11-05T17:12:29.323", "t_unix": 1793866349.323, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 2, "held_sec": 0.533, "accepted": true, "measured_before": [-31.81, 28.47, 10.28, -0.35, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 12.45, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.45, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 192, "t": "2026-11-05T17:12:29.508", "t_unix": 1793866349.508, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 3, "held_sec": 0.718, "accepted": true, "measured_before": [-34.01, 28.47, 10.28, -0.26, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 10.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 193, "t": "2026-11-05T17:12:29.608", "t_unix": 1793866349.609, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 4, "held_sec": 0.819, "accepted": true, "measured_before": [-38.14, 28.47, 10.28, 0.35, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 6.12, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.12, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 194, "t": "2026-11-05T17:12:29.710", "t_unix": 1793866349.711, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 5, "held_sec": 0.921, "accepted": true, "measured_before": [-42.01, 28.47, 10.28, -0.08, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 2.25, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-57.01, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866349.741657, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 195, "t": "2026-11-05T17:12:29.810", "t_unix": 1793866349.811, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 6, "held_sec": 1.021, "accepted": true, "measured_before": [-45.0, 28.47, 10.28, 1.31, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 196, "t": "2026-11-05T17:12:29.911", "t_unix": 1793866349.911, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 7, "held_sec": 1.121, "accepted": true, "measured_before": [-44.73, 28.47, 10.28, 0.43, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 197, "t": "2026-11-05T17:12:30.012", "t_unix": 1793866350.012, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 8, "held_sec": 1.222, "accepted": true, "measured_before": [-49.3, 28.47, 10.28, -0.08, -41.74, -30.05], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 7.71, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.71, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 198, "t": "2026-11-05T17:12:30.113", "t_unix": 1793866350.114, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 9, "held_sec": 1.324, "accepted": true, "measured_before": [-53.52, 28.47, 10.28, 0.96, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 3.49, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-68.52, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866350.162142, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 199, "t": "2026-11-05T17:12:30.230", "t_unix": 1793866350.231, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 10, "held_sec": 1.441, "accepted": true, "measured_before": [-56.6, 28.47, 10.28, 0.7, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 200, "t": "2026-11-05T17:12:30.345", "t_unix": 1793866350.346, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 11, "held_sec": 1.556, "accepted": true, "measured_before": [-62.31, 28.47, 10.28, -0.08, -41.74, -30.05], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 6.21, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.21, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 201, "t": "2026-11-05T17:12:30.527", "t_unix": 1793866350.528, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 12, "held_sec": 1.738, "accepted": true, "measured_before": [-64.68, 28.47, 10.28, -0.08, -41.74, -30.05], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 3.84, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-79.68, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866350.542619, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 202, "t": "2026-11-05T17:12:30.628", "t_unix": 1793866350.628, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 13, "held_sec": 1.838, "accepted": true, "measured_before": [-67.76, 28.47, 10.28, 1.05, -41.74, -29.97], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 11.92, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.92, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 203, "t": "2026-11-05T17:12:30.743", "t_unix": 1793866350.744, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 14, "held_sec": 1.954, "accepted": true, "measured_before": [-72.77, 28.47, 10.28, 0.17, -41.74, -30.05], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 6.91, "sent": false, "why": "lead_ok", "hold_remaining_deg": 6.91, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 204, "t": "2026-11-05T17:12:30.928", "t_unix": 1793866350.929, "button": 13, "button_name": "dpad_left", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": -15.0, "hold_id": 26, "hold_n": 15, "held_sec": 2.139, "accepted": true, "measured_before": [-74.61, 28.47, 10.28, 0.17, -41.74, -30.05], "start_source": "mixed", "cmd_gap_deg": 4.13, "hold_lead_deg": 5.07, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.07, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 205, "t": "2026-11-05T17:12:30.979", "t_unix": 1793866350.979, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 26, "halt_joint": 0, "measured_at_request": [-74.61, 28.47, 10.28, 0.17, -41.74, -30.05], "t_halt": 1793866350.9792151, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-78.48, 29.61, 10.63, 1.14, -40.34, -29.88], "moved_after_request_deg": [-3.87, 1.14, 0.35, 0.97, 1.4, 0.17], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 206, "t": "2026-11-05T17:12:31.620", "t_unix": 1793866351.62, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 1, "held_sec": 0.404, "accepted": true, "measured_before": [-77.78, 29.61, 10.98, 0.35, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 0.7, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-62.78, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866351.6376462, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 207, "t": "2026-11-05T17:12:31.788", "t_unix": 1793866351.789, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 2, "held_sec": 0.573, "accepted": true, "measured_before": [-74.44, 29.53, 10.98, 0.79, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.66, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.66, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 208, "t": "2026-11-05T17:12:31.986", "t_unix": 1793866351.987, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 3, "held_sec": 0.77, "accepted": true, "measured_before": [-71.45, 29.53, 10.98, 0.79, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 209, "t": "2026-11-05T17:12:32.102", "t_unix": 1793866352.103, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 4, "held_sec": 0.887, "accepted": true, "measured_before": [-66.88, 29.53, 10.98, -0.08, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 4.1, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-51.88, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866352.129087, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 210, "t": "2026-11-05T17:12:32.220", "t_unix": 1793866352.22, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 5, "held_sec": 1.004, "accepted": true, "measured_before": [-62.4, 29.53, 10.98, 0.35, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 10.52, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.52, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 211, "t": "2026-11-05T17:12:32.321", "t_unix": 1793866352.321, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 6, "held_sec": 1.105, "accepted": true, "measured_before": [-62.05, 29.53, 10.98, -0.52, -40.16, -30.05], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 212, "t": "2026-11-05T17:12:32.437", "t_unix": 1793866352.437, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 7, "held_sec": 1.221, "accepted": true, "measured_before": [-59.32, 29.53, 10.98, 0.7, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 7.44, "sent": false, "why": "lead_ok", "hold_remaining_deg": 7.44, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 213, "t": "2026-11-05T17:12:32.538", "t_unix": 1793866352.538, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 8, "held_sec": 1.322, "accepted": true, "measured_before": [-54.4, 29.53, 10.98, 0.7, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 2.52, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-39.4, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866352.559881, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 214, "t": "2026-11-05T17:12:32.656", "t_unix": 1793866352.656, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 9, "held_sec": 1.44, "accepted": true, "measured_before": [-51.94, 29.53, 10.98, -0.17, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.54, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.54, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 215, "t": "2026-11-05T17:12:32.772", "t_unix": 1793866352.773, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 10, "held_sec": 1.556, "accepted": true, "measured_before": [-45.35, 29.53, 10.98, 0.7, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 5.95, "sent": false, "why": "lead_ok", "hold_remaining_deg": 5.95, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 216, "t": "2026-11-05T17:12:33.034", "t_unix": 1793866353.034, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 11, "held_sec": 1.818, "accepted": true, "measured_before": [-40.42, 29.53, 10.98, 0.61, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 1.02, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-25.42, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866353.066821, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 217, "t": "2026-11-05T17:12:33.136", "t_unix": 1793866353.137, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 12, "held_sec": 1.92, "accepted": true, "measured_before": [-38.84, 29.53, 10.98, -0.35, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 13.42, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.42, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 218, "t": "2026-11-05T17:12:33.237", "t_unix": 1793866353.237, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 13, "held_sec": 2.021, "accepted": true, "measured_before": [-38.67, 29.53, 10.98, 0.26, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 13.25, "sent": false, "why": "lead_ok", "hold_remaining_deg": 13.25, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 219, "t": "2026-11-05T17:12:33.354", "t_unix": 1793866353.354, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 14, "held_sec": 2.138, "accepted": true, "measured_before": [-33.83, 29.53, 10.98, 0.7, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 8.41, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.41, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 220, "t": "2026-11-05T17:12:33.454", "t_unix": 1793866353.454, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 15, "held_sec": 2.238, "accepted": true, "measured_before": [-29.35, 29.53, 10.98, 0.08, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 3.93, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-14.35, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866353.484853, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 221, "t": "2026-11-05T17:12:33.554", "t_unix": 1793866353.555, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 16, "held_sec": 2.338, "accepted": true, "measured_before": [-26.36, 29.53, 10.98, 0.0, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.01, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.01, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 222, "t": "2026-11-05T17:12:33.654", "t_unix": 1793866353.655, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 17, "held_sec": 2.439, "accepted": true, "measured_before": [-24.52, 29.53, 10.98, -0.17, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 10.17, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.17, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 223, "t": "2026-11-05T17:12:33.757", "t_unix": 1793866353.757, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 18, "held_sec": 2.541, "accepted": true, "measured_before": [-23.64, 29.53, 10.98, 0.87, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 9.29, "sent": false, "why": "lead_ok", "hold_remaining_deg": 9.29, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 224, "t": "2026-11-05T17:12:33.857", "t_unix": 1793866353.858, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 19, "held_sec": 2.641, "accepted": true, "measured_before": [-18.1, 29.53, 10.98, 0.43, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 3.75, "clip": [], "refused": [], "limit_ja": "", "limit_ascii": "", "command": [-3.1, 27.37, 9.34, -0.26, -37.61, -29.7], "sent": true, "reached": null, "no_check": true, "t_send": 1793866353.890197, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 225, "t": "2026-11-05T17:12:33.959", "t_unix": 1793866353.96, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 20, "held_sec": 2.744, "accepted": true, "measured_before": [-15.38, 29.53, 10.98, -0.43, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 12.28, "sent": false, "why": "lead_ok", "hold_remaining_deg": 12.28, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 226, "t": "2026-11-05T17:12:34.060", "t_unix": 1793866354.06, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 21, "held_sec": 2.844, "accepted": true, "measured_before": [-14.23, 29.53, 10.98, -0.43, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.13, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.13, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 227, "t": "2026-11-05T17:12:34.177", "t_unix": 1793866354.177, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 22, "held_sec": 2.961, "accepted": true, "measured_before": [-14.06, 29.53, 10.98, -0.52, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 10.96, "sent": false, "why": "lead_ok", "hold_remaining_deg": 10.96, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 228, "t": "2026-11-05T17:12:34.277", "t_unix": 1793866354.278, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 23, "held_sec": 3.061, "accepted": true, "measured_before": [-14.58, 29.53, 10.98, -0.35, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.48, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.48, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 229, "t": "2026-11-05T17:12:34.378", "t_unix": 1793866354.379, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 24, "held_sec": 3.162, "accepted": true, "measured_before": [-14.67, 29.53, 10.98, -0.26, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.57, "command": [-3.1, 27.37, 9.34, -0.26, -37.61, -29.7], "hold_resend": true, "sent": true, "reached": null, "no_check": true, "t_send": 1793866354.389787, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 230, "t": "2026-11-05T17:12:34.496", "t_unix": 1793866354.497, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 25, "held_sec": 3.281, "accepted": true, "measured_before": [-14.5, 29.53, 10.98, -0.17, -40.16, -29.97], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 11.4, "sent": false, "why": "lead_ok", "hold_remaining_deg": 11.4, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 231, "t": "2026-11-05T17:12:34.598", "t_unix": 1793866354.599, "button": 14, "button_name": "dpad_right", "kind": "move", "selected_joint": 2, "step_deg": 1.0, "execute": true, "joint": 0, "delta": 15.0, "hold_id": 27, "hold_n": 26, "held_sec": 3.383, "accepted": true, "released_during_job": true, "measured_before": [-11.77, 29.53, 10.98, 0.35, -40.16, -29.88], "start_source": "hold", "cmd_gap_deg": 2.55, "hold_lead_deg": 8.67, "sent": false, "why": "lead_ok", "hold_remaining_deg": 8.67, "reached": null, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 232, "t": "2026-11-05T17:12:34.633", "t_unix": 1793866354.633, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "release", "hold_id": 27, "halt_joint": 0, "measured_at_request": [-14.5, 29.53, 10.98, -0.17, -40.16, -29.97], "t_halt": 1793866354.6358888, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-7.55, 30.58, 11.42, -0.79, -38.93, -30.05], "moved_after_request_deg": [6.95, 1.05, 0.44, -0.62, 1.23, -0.08], "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 233, "t": "2026-11-05T17:13:15.248", "t_unix": 1793866395.249, "button": 5, "button_name": "home", "kind": "home", "selected_joint": 2, "step_deg": 1.0, "execute": true, "held_sec": 1.013, "accepted": true, "measured_before": [-9.22, 30.67, 11.86, 0.52, -40.42, -29.88], "command": [0.0, 0.0, 0.0, 0.0, 0.0, -30.0], "range_check": "skipped_for_home", "sent": true, "timeout_sec": 8.06, "t_send": 1793866395.286102, "measured_before_send": [-9.22, 30.67, 11.86, 0.52, -40.42, -29.88], "resends": [], "reached": true, "reached_angles": [-0.52, 1.49, 1.84, -0.35, -0.08, -29.88], "reach_err": 1.84, "elapsed_sec": 1.07, "grip_state": "unknown", "stopped": false, "stop_reason": null}
{"seq": 234, "t": "2026-11-05T17:15:51.867", "t_unix": 1793866551.868, "button": null, "button_name": null, "kind": "controller_lost", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "reason": "controller_disconnected", "already_stopped": false, "busy": false, "send_committed_before_stop": null, "triggers": [-1.0, -1.0], "grip_state": "unknown", "stopped": true, "stop_reason": "controller_disconnected"}
{"seq": 235, "t": "2026-11-05T17:15:51.868", "t_unix": 1793866551.869, "button": null, "button_name": null, "kind": "halt", "selected_joint": 2, "step_deg": 1.0, "execute": true, "accepted": true, "halt_reason": "controller_disconnected", "hold_id": null, "halt_joint": null, "measured_at_request": [-0.52, 1.49, 1.84, -0.35, -0.08, -29.88], "t_halt": 1793866551.875256, "halt": "stop", "halt_result": {"jog_stop": null, "stop": null}, "measured_after_halt": [-0.61, 2.54, 2.63, -0.26, 1.4, -29.88], "moved_after_request_deg": [-0.09, 1.05, 0.79, 0.09, 1.48, 0.0], "grip_state": "unknown", "stopped": true, "stop_reason": "controller_disconnected"}
```

### diag/jog_probe_20261105_153401/console.txt

```text
jog_probe 20261105_153401 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153401)
--- デーモンの状態 (止める前)
mode=systemd
pid=502
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=502
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.17, 92.63, 1.49, 0.61, -96.06, -29.35]
HOME から離れています。HOME [0,0,0,0,0,-30] へ送ります  (Enter で進む / q と Enter で終わる)

根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 19.3 ms / 空で返った割合 0.0

A_step_10deg を始めます  (Enter で進む / q と Enter で終わる)

  [A_step_10deg] travel_deg=9.32  mean_speed=4.96  median_speed=0.0  max_speed=30.97  speed_cv=None  stall_ratio=None  arrive_sec=0.4
        0.1 秒ごとの速さ (°/秒): 31.0 -3.4 -0.9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
  始めの角度へ戻した: 着いた j0=1.23

B_stream を始めます  (Enter で進む / q と Enter で終わる)

  [B_stream] travel_deg=12.39  mean_speed=12.38  median_speed=28.91  max_speed=73.27  speed_cv=1.09  stall_ratio=0.4  overshoot_deg=0.09  stop_latency_sec=0.1  n_sends=7
        0.1 秒ごとの速さ (°/秒): 28.9 -13.2 73.3 -8.3 33.8
  始めの角度へ戻した: 着いた j0=-0.08

C_stream_fresh を始めます  (Enter で進む / q と Enter で終わる)

  [C_stream_fresh] travel_deg=7.91  mean_speed=8.67  median_speed=-11.71  max_speed=-2.32  speed_cv=None  stall_ratio=None  overshoot_deg=2.9  stop_latency_sec=0.26  n_sends=8
        0.1 秒ごとの速さ (°/秒): -6.1 -2.3 -31.0 -11.7 -16.5
  始めの角度へ戻した: 着いた j0=-1.58

D_jog_speed10 を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから -25.8° 離れたので止めます
  [D_jog_speed10] travel_deg=-2.37  mean_speed=-8.78  overshoot_deg=-23.38  stop_latency_sec=0.28  jog_moved=True
  始めの角度へ戻した: 着いた j0=-1.4

D_jog_speed30 を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 26.7° 離れたので止めます
  守り: j0 が始めから 31.5° 離れたので止めます
  [D_jog_speed30] travel_deg=-27.06  mean_speed=-45.1  median_speed=-59.41  max_speed=-54.33  speed_cv=None  stall_ratio=None  overshoot_deg=-4.74  stop_latency_sec=0.0  jog_moved=True
        0.1 秒ごとの速さ (°/秒): -54.3 -64.5
  始めの角度へ戻した: 着いた j0=0.08
結果: /tmp/jog_probe_20261105_153401.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153401/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=19339
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=19339
checker=no
デーモンは戻った (5555 LISTEN)
```

### diag/jog_probe_20261105_153952_stop/console.txt

```text
jog_probe 20261105_153952 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153952_stop)
--- デーモンの状態 (止める前)
mode=systemd
pid=19339
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=19339
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.43, 2.98, 3.51, 0.26, 0.7, -29.61]
根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 18.1 ms / 空で返った割合 0.0

E_jog5_jogstop を始めます  (Enter で進む / q と Enter で終わる)

  [E_jog5_jogstop] travel_deg=11.15  mean_speed=12.68  median_speed=15.89  max_speed=24.27  speed_cv=0.57  stall_ratio=0.0  overshoot_deg=1.76  stop_latency_sec=0.16  read_fails=1  end_from_start_deg=12.91  guard=False
        0.1 秒ごとの速さ (°/秒): 7.6 24.3 4.4 24.3 6.6 24.1
  始めの角度へ戻した: 着いた j0=-0.87

E_jog5_stop を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから -25.2° 離れたので止めます
  [E_jog5_stop] travel_deg=0.61  mean_speed=4.38  overshoot_deg=24.26  stop_latency_sec=1.06  read_fails=9  end_from_start_deg=-25.23  guard=False
  始めの角度へ戻した: 着いた j0=-0.7

E_jog5_hold を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.0° 離れたので止めます
  [E_jog5_hold] travel_deg=10.71  mean_speed=13.09  median_speed=14.38  max_speed=37.86  speed_cv=1.18  stall_ratio=0.5  overshoot_deg=14.59  stop_latency_sec=0.95  read_fails=4  end_from_start_deg=25.03  guard=False
        0.1 秒ごとの速さ (°/秒): 0.0 28.8 0.0 37.9
  始めの角度へ戻した: 着いた j0=0.0

E_jog10_stop を始めます  (Enter で進む / q と Enter で終わる)

  [E_jog10_stop] travel_deg=17.13  mean_speed=17.51  median_speed=25.01  max_speed=43.28  speed_cv=0.37  stall_ratio=0.0  overshoot_deg=3.52  stop_latency_sec=0.12  read_fails=3  end_from_start_deg=-20.22  guard=False
        0.1 秒ごとの速さ (°/秒): 43.3 25.0 22.2 35.0 17.5
  始めの角度へ戻した: 着いた j0=-0.79

E_jog10_hold を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.8° 離れたので止めます
  [E_jog10_hold] travel_deg=18.98  mean_speed=20.61  median_speed=16.17  max_speed=36.81  speed_cv=0.71  stall_ratio=0.0  overshoot_deg=7.21  stop_latency_sec=0.0  read_fails=3  end_from_start_deg=25.83  guard=False
        0.1 秒ごとの速さ (°/秒): 8.8 33.6 36.8 16.2 11.7
  始めの角度へ戻した: 着かない j0=25.22

F_far10_stop を始めます  (Enter で進む / q と Enter で終わる)

  守り: j0 が始めから 25.6° 離れたので止めます
  守り: j0 が始めから 25.6° 離れたので止めます
  [F_far10_stop] read_fails=0  end_from_start_deg=25.65  guard=True
  始めの角度へ戻した: 着かない j0=-0.61

F_far10_hold を始めます  (Enter で進む / q と Enter で終わる)

  [F_far10_hold] travel_deg=18.8  mean_speed=18.31  median_speed=23.5  max_speed=35.21  speed_cv=0.33  stall_ratio=0.0  overshoot_deg=0.53  stop_latency_sec=0.33  read_fails=0  end_from_start_deg=19.15  guard=False
        0.1 秒ごとの速さ (°/秒): 22.0 23.5 14.7 33.6 35.2
  始めの角度へ戻した: 着いた j0=-1.05

F_far20_hold を始めます  (Enter で進む / q と Enter で終わる)

  [F_far20_hold] travel_deg=19.95  mean_speed=21.18  median_speed=32.27  max_speed=57.26  speed_cv=0.83  stall_ratio=0.4  overshoot_deg=-0.0  stop_latency_sec=0.0  read_fails=1  end_from_start_deg=-20.31  guard=False
        0.1 秒ごとの速さ (°/秒): 54.2 57.3 32.3 -10.9 6.1
  始めの角度へ戻した: 着いた j0=-0.61
結果: /tmp/jog_probe_20261105_153952.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_153952_stop/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=4995
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=4995
checker=no
デーモンは戻った (5555 LISTEN)
```

### diag/jog_probe_20261105_154332_hold/console.txt

```text
jog_probe 20261105_154332 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_154332_hold)
--- デーモンの状態 (止める前)
mode=systemd
pid=4995
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=4995
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.96, 5.53, 6.41, 0.0, -0.08, -29.53]
HOME から離れています。HOME [0,0,0,0,0,-30] へ送ります  (Enter で進む / q と Enter で終わる)

根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 12.6 ms / 最大 21.4 ms / 空で返った割合 0.0

G_far5_hold_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far5_hold_0.5s] travel_deg=3.94  mean_speed=10.54  overshoot_deg=15.56  stop_latency_sec=1.48  read_fails=3  end_from_start_deg=19.5  guard=False
  始めの角度へ戻した: 着いた j0=0.17

G_far10_hold_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far10_hold_0.5s] travel_deg=6.76  mean_speed=22.87  overshoot_deg=1.59  stop_latency_sec=0.21  read_fails=9  end_from_start_deg=-9.41  guard=False
  始めの角度へ戻した: 着いた j0=0.52

G_far20_hold_0.4s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far20_hold_0.4s] read_fails=4  end_from_start_deg=19.5  guard=False

  始めの角度へ戻した: 着かない j0=0.26

G_far10_stop_0.5s を始めます  (Enter で進む / q と Enter で終わる)

  [G_far10_stop_0.5s] travel_deg=7.55  mean_speed=15.73  median_speed=23.5  max_speed=23.5  speed_cv=0.0  stall_ratio=0.0  overshoot_deg=3.25  stop_latency_sec=0.24  read_fails=0  end_from_start_deg=-10.37  guard=False
        0.1 秒ごとの速さ (°/秒): 23.5
  始めの角度へ戻した: 着かない j0=0.17

H_jog10_jogstop_1 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_1] travel_deg=17.05  mean_speed=18.72  median_speed=17.92  max_speed=36.8  speed_cv=0.53  stall_ratio=0.0  overshoot_deg=3.34  stop_latency_sec=0.08  read_fails=1  end_from_start_deg=20.73  guard=False
        0.1 秒ごとの速さ (°/秒): 19.7 11.7 16.2 36.8
  始めの角度へ戻した: 着かない j0=-0.61

H_jog10_jogstop_2 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_2] travel_deg=17.49  mean_speed=17.14  median_speed=20.57  max_speed=38.16  speed_cv=0.46  stall_ratio=0.0  overshoot_deg=3.78  stop_latency_sec=0.14  read_fails=0  end_from_start_deg=-21.71  guard=False
        0.1 秒ごとの速さ (°/秒): 38.2 17.7 10.2 20.6 26.3
  始めの角度へ戻した: 着かない j0=0.26

H_jog10_jogstop_3 を始めます  (Enter で進む / q と Enter で終わる)

  [H_jog10_jogstop_3] travel_deg=18.19  mean_speed=17.71  median_speed=22.5  max_speed=42.54  speed_cv=0.57  stall_ratio=0.0  overshoot_deg=3.08  stop_latency_sec=0.07  read_fails=3  end_from_start_deg=21.7  guard=False
        0.1 秒ごとの速さ (°/秒): 34.0 9.9 42.5 11.0 22.5
  始めの角度へ戻した: 着かない j0=-0.43
結果: /tmp/jog_probe_20261105_154332.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_154332_hold/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=17242
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=17242
checker=no
デーモンは戻った (5555 LISTEN)
```

### diag/jog_probe_20261105_162617_small/console.txt

```text
jog_probe 20261105_162617 (結果: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_162617_small)
--- デーモンの状態 (止める前)
mode=systemd
pid=26153
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=26153
checker=no
--- デーモンの状態 (止めたあと)
mode=none
pid=なし
listen=no
serial_users=(なし)
checker=no
pymycobot 2.9.6 (/usr/local/lib/python2.7/dist-packages/pymycobot/__init__.py)
始めの角度: [-0.43, 1.66, 0.7, 0.26, -0.26, -30.14]
根元 j0 だけを、始めの角度から 25° 以内で動かします。毎回始めの角度へ戻します。

0. 読み取りの速さ (動かさない)
  読み取り 1 回: 中央 16.0 ms / 最大 18.5 ms / 空で返った割合 0.0

腕を少し前に倒した姿勢 [0.0, 40.0, -20.0, 0.0, -30.0, -30.0] へ動かします  (Enter で進む / q と Enter で終わる)

  着いた角度: [-0.43, 41.13, -18.19, 0.26, -28.91, -30.14]  (指令との差 j1 +1.13°)

S1 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S1 1.0°] 動いた 5/6  動いた量: 0.86 0.86 0.86 0.86 0.86 -0.0

S1 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S1 2.0°] 動いた 6/6  動いた量: 2.2 2.37 1.93 2.27 2.18 2.36

S2 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S2 1.0°] 動いた 5/6  動いた量: 1.05 0.96 0.0 1.06 0.8 0.88

S2 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S2 2.0°] 動いた 6/6  動いた量: 2.18 2.36 2.01 2.27 2.1 2.28

S3 1.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S3 1.0°] 動いた 6/6  動いた量: 0.79 0.79 0.79 0.79 0.79 0.79

S3 2.0° を始めます  (Enter で進む / q と Enter で終わる)

  [S3 2.0°] 動いた 6/6  動いた量: 2.19 2.19 2.19 2.19 2.19 2.19

HOME へ戻します  (Enter で進む / q と Enter で終わる)

結果: /tmp/jog_probe_20261105_162617.json
Connection to 192.168.2.1 closed.
--- jog_probe_pi.py の終了コード: 0
結果の JSON: /Volumes/KIOXIA/r2r2r-data/diag/jog_probe_20261105_162617_small/result.json
--- デーモンを戻す (systemctl start)
mode=systemd
pid=6649
listen=yes
daemon_pythonpath=/usr/local/lib/python2.7/dist-packages
serial_users=6649
checker=no
デーモンは戻った (5555 LISTEN)
```
