Skip to content

motion: add cable twist constraint, auto-enabled for arms carrying cameras - #6667

Open
Eliot Horowitz (erh) wants to merge 3 commits into
mainfrom
motionplan-cable-constraint
Open

Eliot Horowitz (erh) wants to merge 3 commits into
mainfrom
motionplan-cable-constraint

Conversation

@erh

@erh Eliot Horowitz (erh) commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds a planner constraint that keeps cables routed through an arm from winding up. It can be set in the builtin motion service config, per request through extra, or in PlannerOptions. It needs no proto changes.

Motion service config (the defaults for every Move):

{
  "cable_constraint": true,
  "max_cable_twist_degs": 180,
  "cable_twist_reference_degs": { "arm": [0, 0, 0, 0, 0, 90] }
}

A Move request's extra takes the same keys, plus cable_constraint_frames to limit the constraint to specific arms. Each key the request sets overrides the config.

The constraint can turn on by itself. If the config leaves cable_constraint unset, any arm that has a camera mounted downstream of it in the frame system, and no input_range_override of its own, is assumed to carry the camera's cable. The constraint then applies to those arms only. Setting "cable_constraint": false in the config, or in a request's extra, turns this off. A debug log names the arms it picked.

  • Every rotational joint of each constrained referenceframe.Model must stay within max_cable_twist_degs (default 180) of its reference (default all zeros). Translational DoF and non-model frames are skipped.
  • Why per joint and not a sum: a dressed cable fails at an individual joint's clamp or loop. A signed sum lets opposite wind-ups cancel out. A sum of absolute deltas is too strict to have a useful default. A per-joint band is also a box in joint space, so straight joint-space segments between valid states stay valid.
  • Why 180° by default: for joints that can turn 360°, every pose still has an equivalent within half a turn of the reference. So the default only rules out reaching a pose the long way around and never makes a pose unreachable.
  • A joint that starts beyond its band gets the band stretched to include the start, so a plan may hold or unwind that twist but never add to it.
  • The check runs first inside the topological constraint because it needs no FK. Violations wrap motionplan.ErrCableConstraintViolated.

Behavior change

Robots that have a camera mounted on an arm get the constraint without any config change. Joint-space goals more than 180° from zero on those arms will now fail. To keep the old behavior, set "cable_constraint": false in the config.

Files

  • motionplan/cable_constraint.go (new): CableConstraint (with an optional Frames filter), the check, and ConstraintChecker.AddCableConstraint.
  • motionplan/armplanning/planner_options.go and context.go: the options, the default limit, and the code that adds the check to each segment's checker.
  • services/motion/builtin/builtin.go: the config fields, validation, the camera-on-arm detection, and how config and request values are combined.
  • Tests: motionplan/cable_constraint_test.go and services/motion/builtin/cable_constraint_test.go.

Testing

  • Unit tests cover the default band, a custom limit and reference, a start beyond the band, invalid references and frames, the frame filter, how config values combine with extra, the camera-on-arm detection (a wrist camera, a fixed camera, and an arm with no camera), turning the detection off, and config validation.

🤖 Generated with Claude Code

https://claude.ai/code/session_015iYkQevDA4SgAxzmmu8QbN

When cable_constraint is set, every rotational joint of each arm model
must stay within max_cable_twist_degs (default 180) of
cable_twist_reference_degs (default all zeros). A joint that starts
beyond its band may hold or unwind that twist but not add to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015iYkQevDA4SgAxzmmu8QbN
cable_constraint, max_cable_twist_degs and cable_twist_reference_degs
on the builtin motion service config act as defaults; a Move request's
extra overrides each one it sets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015iYkQevDA4SgAxzmmu8QbN
@viambot viambot added safe to test This pull request is marked safe to test from a trusted zone and removed safe to test This pull request is marked safe to test from a trusted zone labels Oct 17, 2026
When the builtin motion service config leaves cable_constraint unset,
any arm with a camera mounted downstream of it in the frame system, and
no input_range_override of its own, gets the cable constraint. Setting
cable_constraint to false in the config or a request's extra turns the
guess off. Adds cable_constraint_frames to scope the constraint to
specific arms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015iYkQevDA4SgAxzmmu8QbN
@viambot viambot added safe to test This pull request is marked safe to test from a trusted zone and removed safe to test This pull request is marked safe to test from a trusted zone labels Oct 17, 2026
@erh Eliot Horowitz (erh) changed the title motionplan: add opt-in cable twist constraint motion: add cable twist constraint, auto-enabled for arms carrying cameras Oct 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Availability

Scene / Ordered Sequence # viamrobotics:main viamrobotics:motionplan-cable-constraint Percent Improvement Health
Scene 1 100% 100% 0% ➖
Scene 2 100% 100% 0% ➖
Scene 3 100% 100% 0% ➖
Scene 4 100% 100% 0% ➖
Scene 5 100% 100% 0% ➖
Scene 6 100% 100% 0% ➖
Scene 7 100% 100% 0% ➖
Scene 8 100% 100% 0% ➖
Scene 9 100% 100% 0% ➖
Scene 10 100% 100% 0% ➖
Scene 11 0% 0% NaN% ➖
Scene 12 100% 100% 0% ➖
Ordered Sequence 1 (cold) 100% 100% 0% ➖
Ordered Sequence 1 (warm) 100% 100% 0% ➖

Quality

Scene / Ordered Sequence # viamrobotics:main viamrobotics:motionplan-cable-constraint Percent Improvement Probability of Improvement Health
Scene 1 1.31±0.00 1.31±0.00 0% 59% ➖
Scene 2 0.90±0.00 0.91±0.01 -0% 38% ➖
Scene 3 6.13±0.00 6.13±0.00 -0% 50% ➖
Scene 4 1.98±0.21 1.93±0.33 2% 55% ➖
Scene 5 6.57±1.04 7.06±1.26 -7% 38% ➖
Scene 6 7.05±1.47 6.98±1.28 1% 51% ➖
Scene 7 1.52±0.00 1.52±0.00 0% 100% ➖
Scene 8 0.90±0.00 0.90±0.00 0% 61% ➖
Scene 9 4.84±0.90 4.84±0.90 -0% 50% ➖
Scene 10 12.69±0.07 12.69±0.07 -0% 50% ➖
Scene 11 NaN±NaN NaN±NaN NaN% NaN% ➖
Scene 12 0.81±0.00 0.81±0.00 -0% 50% ➖
Ordered Sequence 1 (cold) 135.76±0.00 139.36±0.00 -3% 0% ➖
Ordered Sequence 1 (warm) 138.24±2.75 129.31±1.41 6% 100% ✅

Performance

Scene / Ordered Sequence # viamrobotics:main viamrobotics:motionplan-cable-constraint Percent Improvement Probability of Improvement Health
Scene 1 0.00±0.00 0.00±0.00 5% 63% ➖
Scene 2 0.02±0.00 0.02±0.00 3% 56% ➖
Scene 3 0.01±0.00 0.01±0.00 13% 71% ➖
Scene 4 0.09±0.04 0.08±0.03 8% 55% ➖
Scene 5 0.49±0.09 0.42±0.15 13% 65% ➖
Scene 6 0.50±0.15 0.45±0.12 11% 61% ➖
Scene 7 0.11±0.01 0.10±0.01 9% 77% ➖
Scene 8 0.02±0.00 0.02±0.00 -14% 18% ➖
Scene 9 0.15±0.04 0.14±0.04 6% 57% ➖
Scene 10 0.31±0.05 0.31±0.06 1% 52% ➖
Scene 11 NaN±NaN NaN±NaN NaN% NaN% ➖
Scene 12 0.10±0.00 0.11±0.01 -7% 20% ➖
Ordered Sequence 1 (cold) 15.48±0.00 15.73±0.00 -2% 0% ➖
Ordered Sequence 1 (warm) 13.57±0.51 12.90±0.66 5% 79% ➖

Ordered Sequence 1 plan-by-plan: cappuccina-5fb95a4c (98 plans replayed in recorded order)

Time moved (seconds, warm passes, by absolute change)

Plan viamrobotics:main viamrobotics:motionplan-cable-constraint Percent Improvement Probability of Improvement Health
025 brewing/move 1.34±0.03 1.02±0.32 24% 84% ✅
018 brewing/move 0.35±0.03 0.22±0.01 39% 100% ✅
078 grabbing_filter/move 1.01±0.02 0.95±0.01 6% 99% ✅
075 serving/carry 0.18±0.01 0.24±0.02 -28% 2% ❌
059 closing_fridge/close_door 0.14±0.01 0.12±0.00 10% 84% ✅
026 brewing/move 0.08±0.00 0.07±0.00 13% 100% ✅
048 adding_milk/pivot 0.07±0.00 0.06±0.00 15% 100% ✅
087 cleaning/move 0.13±0.00 0.12±0.00 7% 99% ✅
060 closing_fridge/close_door 0.13±0.00 0.12±0.00 6% 96% ✅
047 adding_milk/pivot 0.07±0.00 0.06±0.00 11% 98% ✅
044 adding_milk/move 0.11±0.00 0.10±0.00 6% 100% ✅

Joint travel moved (L2, warm passes, by absolute change)

Plan viamrobotics:main viamrobotics:motionplan-cable-constraint Percent Improvement Probability of Improvement Health
025 brewing/move 8.31±0.04 3.20±0.00 61% 100% ✅
031 opening_fridge/move 5.79±1.55 2.74±0.01 53% 98% ✅
075 serving/carry 3.78±0.00 4.08±0.04 -8% 0% ❌
All 98 plans (cold pass and warm passes)

Every plan solved every pass in both runs.
Cold columns are the single cold-start pass; the improvement statistics compare the warm passes.

Time (seconds)

Plan viamrobotics:main (cold) viamrobotics:motionplan-cable-constraint (cold) viamrobotics:main (warm) viamrobotics:motionplan-cable-constraint (warm) Percent Improvement Probability of Improvement Health
000 grinding/move 0.24 0.25 0.02±0.00 0.03±0.00 -7% 30% ➖
001 grinding/move 0.02 0.02 0.02±0.00 0.02±0.00 1% 70% ➖
002 grinding/move 0.01 0.01 0.01±0.00 0.01±0.00 -0% 43% ➖
003 grinding/circular 0.03 0.03 0.03±0.00 0.04±0.01 -30% 15% ❌
004 tamping/move 0.20 0.19 0.23±0.01 0.22±0.01 4% 76% ➖
005 tamping/move 0.07 0.07 0.07±0.01 0.08±0.02 -17% 31% ➖
006 tamping/move 0.07 0.07 0.07±0.00 0.07±0.00 5% 76% ➖
007 locking_portafilter/move 0.64 0.71 0.69±0.02 0.67±0.03 3% 68% ➖
008 locking_portafilter/move 0.03 0.04 0.03±0.00 0.03±0.00 1% 75% ➖
009 locking_portafilter/pivot 0.08 0.08 0.07±0.00 0.06±0.00 2% 88% ➖
010 releasing_filter/move 0.25 0.25 0.18±0.00 0.17±0.00 3% 87% ➖
011 placing_cup/move 0.14 0.15 0.06±0.00 0.06±0.00 1% 63% ➖
012 placing_cup/move 0.08 0.08 0.04±0.00 0.04±0.00 3% 88% ➖
013 placing_cup/move 0.08 0.08 0.08±0.00 0.08±0.00 -1% 43% ➖
014 placing_cup/move 0.09 0.09 0.09±0.00 0.09±0.00 1% 63% ➖
015 placing_cup/move 0.71 0.63 0.72±0.11 0.82±0.06 -14% 22% ➖
016 placing_cup/move 0.11 0.11 0.11±0.00 0.11±0.00 2% 77% ➖
017 placing_cup/move 0.09 0.10 0.10±0.00 0.10±0.00 2% 76% ➖
018 brewing/move 0.26 0.20 0.35±0.03 0.22±0.01 39% 100% ✅
019 brewing/move 0.02 0.02 0.02±0.00 0.02±0.00 1% 65% ➖
020 brewing/move 0.02 0.02 0.02±0.00 0.02±0.00 2% 68% ➖
021 brewing/move 0.03 0.04 0.04±0.00 0.04±0.00 -1% 46% ➖
022 brewing/move 0.02 0.02 0.02±0.00 0.02±0.00 5% 87% ➖
023 brewing/move 0.07 0.07 0.06±0.00 0.06±0.00 2% 83% ➖
024 brewing/move 0.08 0.07 0.07±0.00 0.07±0.00 -2% 37% ➖
025 brewing/move 1.22 1.26 1.34±0.03 1.02±0.32 24% 84% ✅
026 brewing/move 0.07 0.07 0.08±0.00 0.07±0.00 13% 100% ✅
027 brewing/move 0.07 0.06 0.07±0.00 0.07±0.00 0% 51% ➖
028 brewing/carry 0.11 0.12 0.05±0.01 0.05±0.00 7% 72% ➖
029 brewing/move 0.08 0.08 0.08±0.00 0.08±0.00 -0% 41% ➖
030 brewing/move 0.18 0.19 0.19±0.00 0.19±0.01 -0% 46% ➖
031 opening_fridge/move 0.46 0.42 0.41±0.04 0.39±0.09 4% 57% ➖
032 opening_fridge/move 0.05 0.05 0.05±0.00 0.05±0.00 0% 56% ➖
033 opening_fridge/open_door 0.23 0.24 0.22±0.00 0.23±0.01 -2% 19% ➖
034 opening_fridge/open_door 0.12 0.12 0.13±0.00 0.13±0.00 1% 58% ➖
035 opening_fridge/open_door 0.12 0.12 0.13±0.00 0.12±0.00 3% 93% ➖
036 opening_fridge/open_door 0.13 0.12 0.12±0.00 0.12±0.01 -1% 45% ➖
037 opening_fridge/open_door 0.12 0.13 0.12±0.00 0.12±0.00 -4% 17% ➖
038 opening_fridge/open_door 0.11 0.17 0.12±0.00 0.13±0.00 -4% 22% ➖
039 opening_fridge/open_door 0.12 0.15 0.12±0.01 0.12±0.00 1% 57% ➖
040 opening_fridge/open_door 0.12 0.20 0.13±0.01 0.13±0.01 -2% 41% ➖
041 opening_fridge/move 0.06 0.06 0.06±0.00 0.06±0.00 -1% 39% ➖
042 adding_milk/move 0.35 0.35 0.13±0.01 0.12±0.01 8% 80% ➖
043 adding_milk/move 0.02 0.02 0.02±0.00 0.02±0.00 11% 100% ✅
044 adding_milk/move 0.12 0.11 0.11±0.00 0.10±0.00 6% 100% ✅
045 adding_milk/move 0.11 0.11 0.11±0.00 0.11±0.00 3% 82% ➖
046 adding_milk/move 1.08 0.92 0.46±0.12 0.44±0.09 4% 55% ➖
047 adding_milk/pivot 0.06 0.06 0.07±0.00 0.06±0.00 11% 98% ✅
048 adding_milk/pivot 0.06 0.06 0.07±0.00 0.06±0.00 15% 100% ✅
049 adding_milk/move 0.39 0.34 0.42±0.06 0.42±0.13 -1% 49% ➖
050 adding_milk/move 0.11 0.11 0.11±0.00 0.11±0.00 3% 92% ➖
051 adding_milk/move 0.11 0.10 0.10±0.00 0.10±0.00 1% 72% ➖
052 closing_fridge/move 0.37 0.35 0.31±0.04 0.27±0.04 11% 72% ➖
053 closing_fridge/move 0.06 0.05 0.06±0.00 0.05±0.00 2% 77% ➖
054 closing_fridge/close_door 0.13 0.13 0.13±0.00 0.12±0.00 3% 96% ➖
055 closing_fridge/close_door 0.14 0.12 0.13±0.01 0.12±0.00 6% 78% ➖
056 closing_fridge/close_door 0.13 0.12 0.13±0.00 0.13±0.00 1% 63% ➖
057 closing_fridge/close_door 0.13 0.12 0.13±0.00 0.13±0.00 3% 75% ➖
058 closing_fridge/close_door 0.12 0.18 0.13±0.01 0.13±0.01 3% 66% ➖
059 closing_fridge/close_door 0.13 0.13 0.14±0.01 0.12±0.00 10% 84% ✅
060 closing_fridge/close_door 0.12 0.13 0.13±0.00 0.12±0.00 6% 96% ✅
061 closing_fridge/close_door 0.15 0.12 0.13±0.01 0.12±0.00 4% 70% ➖
062 closing_fridge/move 0.05 0.05 0.05±0.00 0.05±0.00 -2% 26% ➖
063 serving/move 1.20 1.19 0.77±0.40 0.70±0.35 10% 56% ➖
064 serving/move 0.10 0.10 0.10±0.00 0.10±0.00 3% 84% ➖
065 serving/move 0.11 0.10 0.11±0.00 0.11±0.00 2% 87% ➖
066 serving/carry 0.04 0.05 0.05±0.01 0.05±0.01 7% 61% ➖
067 serving/pivot 0.06 0.06 0.05±0.00 0.06±0.00 -4% 24% ➖
068 serving/pivot 0.05 0.05 0.06±0.00 0.06±0.00 -2% 38% ➖
069 serving/carry 0.13 0.11 0.11±0.01 0.11±0.01 1% 53% ➖
070 serving/move 0.10 0.10 0.09±0.00 0.09±0.01 -5% 25% ➖
071 serving/move 0.08 0.08 0.08±0.00 0.08±0.00 -3% 26% ➖
072 serving/move 0.05 0.05 0.03±0.00 0.03±0.00 4% 59% ➖
073 serving/move 0.08 0.08 0.08±0.00 0.08±0.00 2% 78% ➖
074 serving/move 0.19 0.19 0.19±0.00 0.19±0.00 4% 100% ➖
075 serving/carry 0.54 0.92 0.18±0.01 0.24±0.02 -28% 2% ❌
076 serving/move 0.09 0.09 0.08±0.00 0.08±0.00 -1% 34% ➖
077 serving/move 0.08 0.07 0.08±0.01 0.07±0.00 9% 81% ➖
078 grabbing_filter/move 1.00 0.95 1.01±0.02 0.95±0.01 6% 99% ✅
079 grabbing_filter/move 0.07 0.07 0.07±0.00 0.07±0.00 4% 100% ➖
080 unlocking_portafilter/pivot 0.17 0.17 0.17±0.00 0.16±0.00 3% 94% ➖
081 unlocking_portafilter/move 0.02 0.02 0.02±0.00 0.02±0.00 2% 94% ➖
082 unlocking_portafilter/circular 0.02 0.02 0.02±0.00 0.02±0.00 -1% 11% ➖
083 unlocking_portafilter/move 0.02 0.02 0.02±0.00 0.02±0.00 2% 73% ➖
084 unlocking_portafilter/move 0.02 0.02 0.02±0.00 0.02±0.00 2% 85% ➖
085 unlocking_portafilter/circular 0.02 0.02 0.02±0.00 0.02±0.00 4% 96% ➖
086 unlocking_portafilter/move 0.03 0.03 0.03±0.00 0.03±0.00 7% 83% ➖
087 cleaning/move 0.15 0.19 0.13±0.00 0.12±0.00 7% 99% ✅
088 cleaning/move 0.03 0.03 0.03±0.00 0.03±0.00 3% 94% ➖
089 cleaning/move 0.04 0.04 0.04±0.00 0.04±0.00 1% 100% ➖
090 cleaning/circular 0.01 0.01 0.01±0.00 0.01±0.00 3% 86% ➖
091 cleaning/move 0.04 0.04 0.04±0.00 0.04±0.00 0% 56% ➖
092 cleaning/move 0.05 0.05 0.05±0.00 0.05±0.00 0% 53% ➖
093 cleaning/move 0.04 0.04 0.04±0.00 0.04±0.00 -3% 36% ➖
094 cleaning/circular 0.01 0.01 0.01±0.00 0.01±0.00 -5% 22% ➖
095 cleaning/move 0.04 0.04 0.04±0.00 0.04±0.00 -1% 46% ➖
096 cleaning/move 0.03 0.03 0.03±0.00 0.03±0.00 1% 66% ➖
097 finishing_up/move 0.02 0.02 0.02±0.00 0.02±0.00 0% 52% ➖

Joint travel (L2)

Plan viamrobotics:main (cold) viamrobotics:motionplan-cable-constraint (cold) viamrobotics:main (warm) viamrobotics:motionplan-cable-constraint (warm) Percent Improvement Probability of Improvement Health
000 grinding/move 2.01 2.01 2.01±0.00 2.01±0.00 -0% 50% ➖
001 grinding/move 0.22 0.22 0.22±0.00 0.22±0.00 -0% 50% ➖
002 grinding/move 0.22 0.22 0.22±0.00 0.22±0.00 -0% 50% ➖
003 grinding/circular 0.21 0.21 0.21±0.00 0.21±0.00 -0% 50% ➖
004 tamping/move 1.44 1.44 1.44±0.09 1.44±0.09 -0% 50% ➖
005 tamping/move 0.46 0.46 0.46±0.00 0.46±0.00 0% 77% ➖
006 tamping/move 0.46 0.46 0.46±0.00 0.46±0.00 -0% 50% ➖
007 locking_portafilter/move 2.51 2.68 2.89±0.14 2.77±0.10 4% 76% ➖
008 locking_portafilter/move 0.14 0.14 0.14±0.00 0.14±0.00 -0% 50% ➖
009 locking_portafilter/pivot 2.86 2.86 2.86±0.00 2.86±0.00 -0% 50% ➖
010 releasing_filter/move 0.63 0.63 0.63±0.00 0.63±0.00 0% 76% ➖
011 placing_cup/move 3.28 3.28 3.28±0.00 3.28±0.00 -0% 50% ➖
012 placing_cup/move 3.78 3.78 3.78±0.00 3.78±0.00 0% 100% ➖
013 placing_cup/move 0.63 0.63 0.63±0.00 0.63±0.00 -0% 50% ➖
014 placing_cup/move 0.63 0.63 0.63±0.00 0.63±0.00 -0% 50% ➖
015 placing_cup/move 5.01 5.01 5.49±0.40 5.54±0.43 -1% 47% ➖
016 placing_cup/move 0.61 0.61 0.61±0.00 0.61±0.00 -0% 50% ➖
017 placing_cup/move 0.61 0.61 0.61±0.00 0.61±0.00 -0% 50% ➖
018 brewing/move 2.20 1.64 2.49±0.79 1.73±0.12 31% 83% ➖
019 brewing/move 0.15 0.15 0.15±0.00 0.15±0.00 -0% 50% ➖
020 brewing/move 0.15 0.15 0.15±0.00 0.15±0.00 -0% 50% ➖
021 brewing/move 3.83 3.83 3.83±0.00 3.83±0.00 -0% 50% ➖
022 brewing/move 1.08 1.08 1.08±0.00 1.08±0.00 0% 100% ➖
023 brewing/move 0.59 0.59 0.59±0.00 0.59±0.00 0% 73% ➖
024 brewing/move 0.59 0.59 0.59±0.00 0.59±0.00 -0% 50% ➖
025 brewing/move 8.37 8.37 8.31±0.04 3.20±0.00 61% 100% ✅
026 brewing/move 0.45 0.45 0.45±0.00 0.45±0.00 -0% 50% ➖
027 brewing/move 0.45 0.45 0.45±0.00 0.45±0.00 0% 92% ➖
028 brewing/carry 2.64 2.64 2.64±0.00 2.64±0.00 0% 50% ➖
029 brewing/move 0.76 0.76 0.76±0.00 0.76±0.00 -0% 50% ➖
030 brewing/move 0.76 0.76 0.76±0.00 0.76±0.00 -0% 50% ➖
031 opening_fridge/move 3.60 6.90 5.79±1.55 2.74±0.01 53% 98% ✅
032 opening_fridge/move 0.34 0.34 0.34±0.00 0.34±0.00 -0% 50% ➖
033 opening_fridge/open_door 0.61 0.61 0.63±0.02 0.63±0.02 -0% 50% ➖
034 opening_fridge/open_door 0.45 0.45 0.45±0.00 0.45±0.00 0% 83% ➖
035 opening_fridge/open_door 0.41 0.41 0.41±0.00 0.41±0.00 -0% 50% ➖
036 opening_fridge/open_door 0.32 0.32 0.32±0.00 0.32±0.00 -0% 50% ➖
037 opening_fridge/open_door 0.23 0.23 0.23±0.00 0.23±0.00 -0% 50% ➖
038 opening_fridge/open_door 0.24 0.24 0.24±0.00 0.24±0.00 -0% 50% ➖
039 opening_fridge/open_door 0.32 0.32 0.32±0.00 0.32±0.00 -0% 50% ➖
040 opening_fridge/open_door 0.40 0.40 0.40±0.00 0.40±0.00 0% 91% ➖
041 opening_fridge/move 0.44 0.44 0.44±0.00 0.44±0.00 0% 92% ➖
042 adding_milk/move 0.67 0.67 0.72±0.01 0.72±0.01 -0% 50% ➖
043 adding_milk/move 1.34 1.34 1.34±0.00 1.34±0.00 0% 76% ➖
044 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 0% 78% ➖
045 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 -0% 50% ➖
046 adding_milk/move 4.40 4.09 4.83±0.75 4.77±0.77 1% 52% ➖
047 adding_milk/pivot 3.14 3.14 3.14±0.00 3.14±0.00 -0% 50% ➖
048 adding_milk/pivot 3.14 3.14 3.14±0.00 3.14±0.00 -0% 50% ➖
049 adding_milk/move 4.21 4.76 4.26±0.20 4.24±0.19 0% 53% ➖
050 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 0% 59% ➖
051 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 -0% 50% ➖
052 closing_fridge/move 1.85 1.85 2.03±0.12 1.91±0.05 6% 80% ➖
053 closing_fridge/move 0.44 0.44 0.44±0.00 0.44±0.00 -0% 50% ➖
054 closing_fridge/close_door 0.40 0.40 0.40±0.00 0.40±0.00 -0% 50% ➖
055 closing_fridge/close_door 0.32 0.32 0.32±0.00 0.32±0.00 0% 83% ➖
056 closing_fridge/close_door 0.24 0.24 0.24±0.00 0.24±0.00 -0% 50% ➖
057 closing_fridge/close_door 0.23 0.23 0.23±0.00 0.23±0.00 -0% 31% ➖
058 closing_fridge/close_door 0.32 0.32 0.32±0.00 0.32±0.00 -0% 50% ➖
059 closing_fridge/close_door 0.41 0.41 0.41±0.00 0.41±0.00 -0% 18% ➖
060 closing_fridge/close_door 0.45 0.45 0.45±0.00 0.45±0.00 -0% 9% ➖
061 closing_fridge/close_door 0.55 0.55 0.55±0.00 0.55±0.00 -0% 27% ➖
062 closing_fridge/move 0.34 0.34 0.34±0.00 0.34±0.00 -0% 50% ➖
063 serving/move 5.20 5.54 4.28±0.19 4.28±0.19 -0% 49% ➖
064 serving/move 0.61 0.61 0.61±0.00 0.61±0.00 -0% 50% ➖
065 serving/move 0.61 0.61 0.61±0.00 0.61±0.00 -0% 50% ➖
066 serving/carry 1.84 1.84 1.83±0.02 1.84±0.00 -1% 20% ➖
067 serving/pivot 3.47 3.47 3.47±0.00 3.47±0.00 -0% 50% ➖
068 serving/pivot 3.47 3.47 3.47±0.00 3.47±0.00 -0% 50% ➖
069 serving/carry 6.45 6.12 6.13±0.03 6.06±0.05 1% 89% ➖
070 serving/move 0.80 0.80 0.80±0.00 0.80±0.00 -0% 6% ➖
071 serving/move 0.80 0.80 0.80±0.00 0.80±0.00 -0% 50% ➖
072 serving/move 2.73 2.73 2.73±0.00 2.73±0.00 -0% 50% ➖
073 serving/move 0.76 0.76 0.76±0.00 0.76±0.00 -0% 50% ➖
074 serving/move 0.76 0.76 0.76±0.00 0.76±0.00 -0% 50% ➖
075 serving/carry 4.04 4.48 3.78±0.00 4.08±0.04 -8% 0% ❌
076 serving/move 0.67 0.67 0.67±0.00 0.67±0.00 -0% 50% ➖
077 serving/move 0.67 0.67 0.67±0.00 0.67±0.00 -0% 50% ➖
078 grabbing_filter/move 6.43 6.43 6.43±0.00 6.43±0.00 -0% 50% ➖
079 grabbing_filter/move 0.63 0.63 0.63±0.00 0.63±0.00 -0% 50% ➖
080 unlocking_portafilter/pivot 2.41 2.41 2.41±0.00 2.41±0.00 -0% 50% ➖
081 unlocking_portafilter/move 0.04 0.04 0.04±0.00 0.04±0.00 -0% 50% ➖
082 unlocking_portafilter/circular 0.03 0.03 0.03±0.00 0.03±0.00 -0% 50% ➖
083 unlocking_portafilter/move 0.04 0.04 0.04±0.00 0.04±0.00 -0% 50% ➖
084 unlocking_portafilter/move 0.16 0.16 0.16±0.00 0.16±0.00 -0% 50% ➖
085 unlocking_portafilter/circular 0.03 0.03 0.03±0.00 0.03±0.00 -0% 50% ➖
086 unlocking_portafilter/move 0.24 0.24 0.24±0.00 0.24±0.00 -0% 50% ➖
087 cleaning/move 1.18 1.18 1.18±0.00 1.18±0.00 -0% 50% ➖
088 cleaning/move 3.27 3.27 3.27±0.00 3.27±0.00 -0% 50% ➖
089 cleaning/move 0.21 0.21 0.21±0.00 0.21±0.00 -0% 50% ➖
090 cleaning/circular 0.10 0.10 0.10±0.00 0.10±0.00 0% 60% ➖
091 cleaning/move 0.21 0.21 0.21±0.00 0.21±0.00 -0% 50% ➖
092 cleaning/move 0.47 0.47 0.47±0.00 0.47±0.00 -0% 50% ➖
093 cleaning/move 0.20 0.20 0.20±0.00 0.20±0.00 -0% 50% ➖
094 cleaning/circular 0.12 0.12 0.12±0.00 0.12±0.00 -0% 50% ➖
095 cleaning/move 0.20 0.20 0.20±0.00 0.20±0.00 -0% 50% ➖
096 cleaning/move 3.55 3.55 3.55±0.00 3.55±0.00 -0% 50% ➖
097 finishing_up/move 1.46 1.46 1.46±0.00 1.46±0.00 -0% 31% ➖

The above data was generated by running scenes defined in the motion-testing repository
The SHA1 for viamrobotics:main is: 710c139cc5492f8920d9ec60c779fb80a33f975d
The SHA1 for viamrobotics:motionplan-cable-constraint is: 710c139cc5492f8920d9ec60c779fb80a33f975d

  • 12 samples were taken for each scene, 1 cold + 3 warm passes for each ordered sequence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test This pull request is marked safe to test from a trusted zone

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants