Skip to content

RSDK-14748: build and serve the typed KinematicModel from referenceframe - #6655

Open
JohnN193 wants to merge 7 commits into
mainfrom
RSDK-14748-typed-model
Open

JohnN193 wants to merge 7 commits into
mainfrom
RSDK-14748-typed-model

Conversation

@JohnN193

@JohnN193 JohnN193 commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

First rdk piece of RSDK-14233, the Enhanced Arm Kinematics API, for ticket RSDK-14748. Builds on the api change in viamrobotics/api#899, in api v0.1.597, follows #6654, and replaces the referenceframe part of the prototype in #6494.

Changes

  • ModelToProto and ModelFromProto convert a model to and from commonpb.KinematicModel, with ModelConfigToProto and ModelConfigFromProto underneath for the configuration alone. Links keep whichever orientation representation the file used. DH parameters expand into the joint and link each one stands for, named the way ParseConfig already names them.
  • The message carries the limits the model enforces, read from its frames, so an override made with NewModelWithLimitOverrides or an input_range_override shows up on the wire. A revolute joint with no position bound goes out as JOINT_TYPE_CONTINUOUS and comes back as the unbounded revolute joint the URDF reader has always built.
  • A mesh keeps its bytes, its content type and the path it was read from in original_file_source_path_diagnostic.
  • A link's collision geometries all reach the message, and the wire carries the same labels the Go model gives them, <link>_collision_<i> for several unlabelled ones. The frames and LinkConfig side of that merged as RSDK-14771: carry several collision geometries per link #6654, and main is merged in here, so this PR holds only the list handling in model_proto.go.
  • SimpleModel holds visual geometries per link as spatialmath.GeometryConfig and the component properties as a plain KinematicProperties struct, with accessors. No proto type on the model, the converters in model_proto.go are the only place the message appears. Nothing in RDK reads them, they ride the message for viewers and SDKs, and they survive a limit override.
  • KinematicModelToProtobuf fills model. The deprecated bytes keep replaying the file the model was read from, and a model that never had a file, one built from a configuration in code or read from the message, gets them written as an SVA file so old clients still have something to parse. KinematicModelFromProtobuf prefers model and falls back to the bytes.

Notes

  • A client that predates model sees no change in what it gets, since the bytes still replay the file. The scope's line that the bytes are derived from the model is read here as precedence for readers. Always deriving them from the model is a one line change if reviewers want it, with the side effect that a URDF backed component would hand old clients SVA JSON instead of the URDF and the mesh map.
  • Converting a model built from frames with no configuration is RSDK-14772 and follows this PR.
  • Builds against api v0.1.597, which carries the proto. Main is merged in, and the deprecation annotations on the fields rdk still serves are the ones the navigation refactor added on main.
  • TestParseJSONFile fails for xarm6 on main at 2176b91 without any of these changes.

Testing

  • Every checked in kinematics file, SVA, DH and URDF, round trips through the message with the same limits, forward kinematics and geometry at random inputs.
  • A response with both encodings, with only the model and with only the bytes all parse to the same model. A model built from a configuration in code serves both. A model built from frames serves what it did before.
  • An overridden limit reaches the message while the bytes still replay the file. Continuous joints, mesh paths, visual geometry and properties each round trip.
  • go build ./..., go test over referenceframe, spatialmath, the arm, gantry and gripper components and the frame system service, and golangci-lint run ./....

🤖 Generated with Claude Code

JohnN193 and others added 4 commits October 12, 2026 14:13
ModelToProto and ModelFromProto convert a model to and from
commonpb.KinematicModel, with the configuration level pair underneath. DH
parameters expand into links and joints, orientations keep the representation
the file used, and the message carries the limits the model enforces rather
than the ones its file declared. SimpleModel holds visual geometries and
properties for the message, since the SVA schema has no place for them.

GetKinematics fills model and keeps replaying the file for the deprecated
bytes, writing an SVA file from the model only when there is no file to
replay. Readers prefer model and fall back to the bytes.

go.mod points go.viam.com/api at the api branch until viamrobotics/api#899
merges and tags.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Visual geometries are held as spatialmath.GeometryConfig and the component properties as a
plain struct, so Go callers never touch the KinematicModel message. The converters in
model_proto.go are the only place the proto appears. A geometry whose center is the identity
no longer comes back with an orientation config after a round trip.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Static and translational frames hold a list of geometries. LinkConfig gains a geometries
field for the ones beyond the first, while the first stays in geometry so a reader that
predates the field still sees one. An unlabelled geometry is named after its link when it is
the only one, as before, and <link>_collision_<i> otherwise, on the model and on the wire.
A label written in a file is kept rather than replaced with the link id, so the wire and the
Go model agree.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@viambot viambot added the safe to test This pull request is marked safe to test from a trusted zone label Oct 14, 2026
Main moved api to v0.1.597 and annotated the deprecated kinematics fields on its own in the
navigation refactor, so those annotations are main's now and the api replace comes off.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@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 15, 2026
@JohnN193
JohnN193 marked this pull request as ready for review October 15, 2026 21:13

@npmenard Nicolas Menard (npmenard) left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this sits on 6654, can you turn 6654 and 6655 in a stack? will be easier to review. Github has supports for stacked PRs

Main now carries the geometry work from #6654 with its review fixes, so the older copy of it
on this branch gives way to main's and only the typed model remains here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@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 22, 2026
@JohnN193

Copy link
Copy Markdown
Member Author

If this sits on 6654, can you turn 6654 and 6655 in a stack? will be easier to review. Github has supports for stacked PRs

i'll make sure to do stacked prs going forward!

@npmenard Nicolas Menard (npmenard) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM just a couple of nits.

Comment thread referenceframe/model.go
// property was never set, since neither value is meaningful at zero, and a zero property is left
// off the wire.
type KinematicProperties struct {
// OperatingFreqHz is the rate the component expects to be driven at.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit maybe maximum?

Comment thread referenceframe/model.go
return &commonpb.GetKinematicsResponse{Format: commonpb.KinematicsFileFormat_KINEMATICS_FILE_FORMAT_UNSPECIFIED}
}
pb, err := ModelToProto(model)
if err != nil {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is particular about this error path if we are call fileKinematicsResponse either way? would a comment or log message give more context?

Comment thread referenceframe/model_proto.go Outdated
if err != nil {
return nil, err
}
pb, err := ModelConfigToProto(sva)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this also call svaConfig i assume this is fine

The tool speed property says maximum, KinematicModelToProtobuf builds the file response once
and says why a model that cannot be written as a message sends it alone, and ModelToProto
expands DH parameters once rather than having ModelConfigToProto do it again.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@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 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Availability

Scene / Ordered Sequence # viamrobotics:main viamrobotics:RSDK-14748-typed-model 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:RSDK-14748-typed-model Percent Improvement Probability of Improvement Health
Scene 1 1.31±0.00 1.31±0.00 0% 61% ➖
Scene 2 0.91±0.01 0.90±0.00 0% 62% ➖
Scene 3 6.13±0.00 6.13±0.00 -0% 50% ➖
Scene 4 1.91±0.35 1.87±0.31 2% 54% ➖
Scene 5 6.50±1.28 6.73±1.07 -4% 44% ➖
Scene 6 6.88±1.13 6.49±0.96 6% 60% ➖
Scene 7 1.69±0.00 1.69±0.00 -0% 50% ➖
Scene 8 0.91±0.01 0.90±0.00 0% 62% ➖
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) 134.62±0.00 135.93±0.00 -1% 0% ➖
Ordered Sequence 1 (warm) 134.29±3.65 135.82±2.14 -1% 36% ➖

Performance

Scene / Ordered Sequence # viamrobotics:main viamrobotics:RSDK-14748-typed-model Percent Improvement Probability of Improvement Health
Scene 1 0.01±0.00 0.01±0.00 4% 63% ➖
Scene 2 0.03±0.00 0.02±0.00 17% 89% ✅
Scene 3 0.01±0.00 0.01±0.00 -17% 23% ➖
Scene 4 0.14±0.07 0.14±0.05 -0% 50% ➖
Scene 5 0.74±0.22 0.66±0.16 10% 61% ➖
Scene 6 0.73±0.19 0.76±0.20 -4% 45% ➖
Scene 7 0.17±0.01 0.16±0.00 6% 92% ✅
Scene 8 0.02±0.00 0.02±0.00 1% 54% ➖
Scene 9 0.25±0.07 0.25±0.07 1% 51% ➖
Scene 10 0.49±0.06 0.51±0.05 -4% 39% ➖
Scene 11 NaN±NaN NaN±NaN NaN% NaN% ➖
Scene 12 0.18±0.02 0.18±0.00 4% 64% ➖
Ordered Sequence 1 (cold) 25.58±0.00 25.51±0.00 0% 100% ➖
Ordered Sequence 1 (warm) 21.26±1.01 22.48±1.67 -6% 27% ➖

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:RSDK-14748-typed-model Percent Improvement Probability of Improvement Health
025 brewing/move 1.78±0.23 2.05±0.10 -15% 15% ❌
018 brewing/move 0.35±0.03 0.57±0.10 -61% 2% ❌
031 opening_fridge/move 0.63±0.07 0.47±0.09 26% 93% ✅
051 adding_milk/move 0.18±0.00 0.19±0.00 -6% 0% ❌

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

Plan viamrobotics:main viamrobotics:RSDK-14748-typed-model Percent Improvement Probability of Improvement Health
015 placing_cup/move 5.75±0.06 5.34±0.31 7% 90% ✅
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:RSDK-14748-typed-model (cold) viamrobotics:main (warm) viamrobotics:RSDK-14748-typed-model (warm) Percent Improvement Probability of Improvement Health
000 grinding/move 0.40 0.40 0.04±0.00 0.04±0.00 1% 58% ➖
001 grinding/move 0.03 0.03 0.03±0.00 0.03±0.00 -4% 22% ➖
002 grinding/move 0.02 0.02 0.02±0.00 0.02±0.00 -0% 35% ➖
003 grinding/circular 0.05 0.05 0.05±0.00 0.05±0.00 -2% 15% ➖
004 tamping/move 0.33 0.32 0.37±0.02 0.37±0.01 -0% 49% ➖
005 tamping/move 0.13 0.12 0.12±0.00 0.12±0.00 -2% 0% ➖
006 tamping/move 0.13 0.11 0.12±0.00 0.12±0.00 -1% 23% ➖
007 locking_portafilter/move 1.06 1.06 1.13±0.05 1.14±0.05 -1% 47% ➖
008 locking_portafilter/move 0.06 0.06 0.06±0.00 0.06±0.00 -5% 21% ➖
009 locking_portafilter/pivot 0.11 0.11 0.11±0.00 0.11±0.00 0% 60% ➖
010 releasing_filter/move 0.41 0.41 0.30±0.00 0.31±0.00 -0% 46% ➖
011 placing_cup/move 0.21 0.22 0.10±0.00 0.10±0.00 -1% 33% ➖
012 placing_cup/move 0.13 0.13 0.07±0.00 0.06±0.00 2% 78% ➖
013 placing_cup/move 0.14 0.14 0.14±0.00 0.14±0.00 -0% 36% ➖
014 placing_cup/move 0.15 0.15 0.15±0.00 0.15±0.00 -1% 12% ➖
015 placing_cup/move 1.16 1.07 1.09±0.10 1.09±0.21 0% 50% ➖
016 placing_cup/move 0.20 0.19 0.19±0.00 0.19±0.00 -1% 17% ➖
017 placing_cup/move 0.17 0.17 0.17±0.00 0.18±0.00 -4% 1% ➖
018 brewing/move 0.34 0.43 0.35±0.03 0.57±0.10 -61% 2% ❌
019 brewing/move 0.04 0.04 0.04±0.00 0.04±0.00 -1% 23% ➖
020 brewing/move 0.04 0.04 0.04±0.00 0.04±0.00 -1% 24% ➖
021 brewing/move 0.06 0.05 0.05±0.00 0.05±0.00 1% 71% ➖
022 brewing/move 0.03 0.03 0.03±0.00 0.03±0.00 -3% 29% ➖
023 brewing/move 0.12 0.12 0.11±0.00 0.12±0.01 -2% 34% ➖
024 brewing/move 0.12 0.13 0.12±0.00 0.12±0.00 0% 62% ➖
025 brewing/move 3.05 2.19 1.78±0.23 2.05±0.10 -15% 15% ❌
026 brewing/move 0.12 0.12 0.12±0.00 0.12±0.00 -4% 17% ➖
027 brewing/move 0.12 0.12 0.12±0.00 0.12±0.00 -1% 41% ➖
028 brewing/carry 0.19 0.21 0.09±0.00 0.09±0.00 -0% 49% ➖
029 brewing/move 0.15 0.15 0.14±0.00 0.14±0.00 0% 61% ➖
030 brewing/move 0.32 0.31 0.31±0.00 0.32±0.00 -1% 9% ➖
031 opening_fridge/move 0.78 0.81 0.63±0.07 0.47±0.09 26% 93% ✅
032 opening_fridge/move 0.10 0.09 0.09±0.00 0.09±0.00 -1% 19% ➖
033 opening_fridge/open_door 0.31 0.31 0.31±0.00 0.31±0.00 -0% 49% ➖
034 opening_fridge/open_door 0.22 0.22 0.22±0.01 0.22±0.00 2% 78% ➖
035 opening_fridge/open_door 0.20 0.20 0.21±0.00 0.21±0.00 0% 65% ➖
036 opening_fridge/open_door 0.20 0.20 0.21±0.01 0.20±0.00 2% 74% ➖
037 opening_fridge/open_door 0.20 0.20 0.21±0.00 0.20±0.00 4% 99% ➖
038 opening_fridge/open_door 0.20 0.20 0.21±0.00 0.21±0.00 1% 69% ➖
039 opening_fridge/open_door 0.20 0.20 0.20±0.00 0.20±0.00 1% 91% ➖
040 opening_fridge/open_door 0.21 0.21 0.21±0.00 0.22±0.00 -1% 5% ➖
041 opening_fridge/move 0.10 0.11 0.10±0.00 0.10±0.00 0% 57% ➖
042 adding_milk/move 0.58 0.27 0.21±0.02 0.20±0.01 4% 62% ➖
043 adding_milk/move 0.03 0.03 0.03±0.00 0.03±0.00 -1% 40% ➖
044 adding_milk/move 0.19 0.19 0.18±0.00 0.18±0.00 1% 71% ➖
045 adding_milk/move 0.19 0.20 0.19±0.00 0.20±0.00 -2% 23% ➖
046 adding_milk/move 1.67 1.66 0.78±0.31 0.88±0.42 -12% 43% ➖
047 adding_milk/pivot 0.11 0.11 0.10±0.00 0.10±0.00 5% 82% ➖
048 adding_milk/pivot 0.10 0.10 0.10±0.00 0.10±0.00 3% 74% ➖
049 adding_milk/move 0.57 0.63 0.64±0.10 0.67±0.13 -5% 42% ➖
050 adding_milk/move 0.20 0.20 0.19±0.00 0.20±0.00 -2% 3% ➖
051 adding_milk/move 0.19 0.19 0.18±0.00 0.19±0.00 -6% 0% ❌
052 closing_fridge/move 0.41 0.60 0.41±0.01 0.49±0.10 -19% 22% ➖
053 closing_fridge/move 0.10 0.10 0.09±0.00 0.10±0.00 -4% 18% ➖
054 closing_fridge/close_door 0.22 0.22 0.21±0.00 0.21±0.00 1% 97% ➖
055 closing_fridge/close_door 0.22 0.22 0.21±0.00 0.21±0.00 -2% 1% ➖
056 closing_fridge/close_door 0.22 0.21 0.21±0.00 0.21±0.00 2% 100% ➖
057 closing_fridge/close_door 0.22 0.21 0.21±0.00 0.21±0.00 0% 58% ➖
058 closing_fridge/close_door 0.21 0.21 0.21±0.00 0.21±0.00 -0% 26% ➖
059 closing_fridge/close_door 0.22 0.22 0.22±0.00 0.21±0.00 2% 95% ➖
060 closing_fridge/close_door 0.22 0.21 0.21±0.00 0.21±0.00 1% 58% ➖
061 closing_fridge/close_door 0.22 0.21 0.21±0.00 0.21±0.00 1% 98% ➖
062 closing_fridge/move 0.10 0.09 0.09±0.00 0.09±0.00 -1% 8% ➖
063 serving/move 1.39 2.29 1.05±0.52 1.80±1.16 -71% 28% ➖
064 serving/move 0.18 0.18 0.19±0.01 0.18±0.00 5% 77% ➖
065 serving/move 0.21 0.19 0.20±0.01 0.20±0.01 3% 62% ➖
066 serving/carry 0.09 0.09 0.08±0.01 0.08±0.01 -0% 50% ➖
067 serving/pivot 0.09 0.09 0.09±0.00 0.09±0.00 -3% 28% ➖
068 serving/pivot 0.09 0.09 0.09±0.00 0.09±0.00 -3% 29% ➖
069 serving/carry 0.18 0.18 0.17±0.01 0.17±0.00 -2% 37% ➖
070 serving/move 0.16 0.16 0.15±0.00 0.16±0.00 -3% 1% ➖
071 serving/move 0.14 0.14 0.14±0.00 0.14±0.01 -4% 18% ➖
072 serving/move 0.09 0.08 0.05±0.00 0.05±0.01 4% 60% ➖
073 serving/move 0.14 0.15 0.14±0.01 0.13±0.00 6% 80% ➖
074 serving/move 0.32 0.33 0.33±0.00 0.32±0.00 1% 80% ➖
075 serving/carry 0.90 0.68 0.30±0.02 0.26±0.03 11% 82% ➖
076 serving/move 0.15 0.15 0.15±0.00 0.15±0.00 -1% 34% ➖
077 serving/move 0.13 0.14 0.13±0.00 0.14±0.00 -3% 9% ➖
078 grabbing_filter/move 1.46 1.56 1.59±0.03 1.57±0.04 1% 64% ➖
079 grabbing_filter/move 0.12 0.12 0.12±0.00 0.12±0.00 -5% 4% ➖
080 unlocking_portafilter/pivot 0.28 0.29 0.28±0.00 0.29±0.00 -1% 0% ➖
081 unlocking_portafilter/move 0.03 0.03 0.03±0.00 0.03±0.00 -1% 10% ➖
082 unlocking_portafilter/circular 0.03 0.03 0.03±0.00 0.03±0.00 -0% 38% ➖
083 unlocking_portafilter/move 0.03 0.03 0.03±0.00 0.03±0.00 -0% 30% ➖
084 unlocking_portafilter/move 0.03 0.03 0.03±0.00 0.03±0.00 -0% 49% ➖
085 unlocking_portafilter/circular 0.03 0.03 0.03±0.00 0.03±0.00 2% 95% ➖
086 unlocking_portafilter/move 0.04 0.04 0.04±0.00 0.04±0.00 1% 93% ➖
087 cleaning/move 0.25 0.31 0.22±0.02 0.20±0.01 7% 75% ➖
088 cleaning/move 0.05 0.05 0.05±0.00 0.05±0.00 1% 65% ➖
089 cleaning/move 0.07 0.07 0.07±0.00 0.07±0.00 -4% 18% ➖
090 cleaning/circular 0.02 0.03 0.02±0.00 0.03±0.00 -8% 23% ➖
091 cleaning/move 0.07 0.07 0.07±0.00 0.07±0.00 -5% 4% ➖
092 cleaning/move 0.10 0.09 0.08±0.00 0.08±0.00 -0% 23% ➖
093 cleaning/move 0.07 0.07 0.07±0.00 0.07±0.00 -0% 25% ➖
094 cleaning/circular 0.02 0.02 0.02±0.00 0.02±0.00 -1% 12% ➖
095 cleaning/move 0.07 0.07 0.07±0.00 0.07±0.00 -0% 33% ➖
096 cleaning/move 0.05 0.05 0.05±0.00 0.05±0.00 2% 83% ➖
097 finishing_up/move 0.04 0.03 0.04±0.00 0.03±0.00 4% 76% ➖

Joint travel (L2)

Plan viamrobotics:main (cold) viamrobotics:RSDK-14748-typed-model (cold) viamrobotics:main (warm) viamrobotics:RSDK-14748-typed-model (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% 76% ➖
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.87±0.21 2.77±0.10 3% 66% ➖
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% 0% ➖
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.76 5.01 5.75±0.06 5.34±0.31 7% 90% ✅
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 1.64 2.20 1.73±0.12 2.32±0.84 -34% 24% ➖
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% 0% ➖
023 brewing/move 0.59 0.59 0.59±0.00 0.59±0.00 -0% 29% ➖
024 brewing/move 0.59 0.59 0.59±0.00 0.59±0.00 -0% 50% ➖
025 brewing/move 4.34 8.37 6.83±2.09 8.25±0.12 -21% 25% ➖
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% 31% ➖
028 brewing/carry 2.64 2.64 2.64±0.01 2.64±0.01 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 6.92 3.04 4.55±1.76 4.33±1.81 5% 54% ➖
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% 24% ➖
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% 76% ➖
041 opening_fridge/move 0.44 0.44 0.44±0.00 0.44±0.00 -0% 31% ➖
042 adding_milk/move 0.67 0.76 0.70±0.03 0.72±0.01 -3% 22% ➖
043 adding_milk/move 1.34 1.34 1.34±0.00 1.34±0.00 -0% 50% ➖
044 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 0% 75% ➖
045 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 -0% 50% ➖
046 adding_milk/move 4.08 4.63 4.24±0.27 4.23±0.28 0% 51% ➖
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.76 4.21 4.24±0.23 4.23±0.23 0% 51% ➖
050 adding_milk/move 1.08 1.08 1.08±0.00 1.08±0.00 0% 100% ➖
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.04±0.11 2.07±0.09 -1% 44% ➖
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% 50% ➖
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% 76% ➖
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% 19% ➖
060 closing_fridge/close_door 0.45 0.45 0.45±0.00 0.45±0.00 0% 97% ➖
061 closing_fridge/close_door 0.55 0.55 0.55±0.00 0.55±0.00 -0% 50% ➖
062 closing_fridge/move 0.34 0.34 0.34±0.00 0.34±0.00 -0% 50% ➖
063 serving/move 4.27 5.80 4.07±0.13 4.46±0.53 -10% 24% ➖
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.82±0.02 1.82±0.02 -0% 50% ➖
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.12 6.12 6.10±0.02 6.03±0.03 1% 97% ➖
070 serving/move 0.80 0.80 0.80±0.00 0.80±0.00 -0% 50% ➖
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.01 3.91±0.02 3.86±0.03 1% 91% ➖
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.82 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.21±0.04 1.18±0.00 2% 76% ➖
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% 62% ➖
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:RSDK-14748-typed-model 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