From adf26dca789e73b137fafbe63b1fb5c7e0a4acaf Mon Sep 17 00:00:00 2001 From: DVIDIA Date: Mon, 9 Nov 2026 23:00:14 -0500 Subject: [PATCH] Add Godot desktop workstation with native physics parity evidence --- .gitattributes | 3 + benchmarks/godot-workstation-v01/README.md | 70 + .../godot-workstation-v01/cpu-parity.json | 373 + .../development-timing-summary.json | 102 + .../headless-client.json | 22 + .../godot-workstation-v01/integrity.json | 37 + benchmarks/godot-workstation-v01/tests.log | 24 + .../windowed-final-parity.json | 27 + .../godot-workstation-v01/windowed-final.json | 20967 ++++++++++++++++ .../godot-workstation-v01/windowed-final.png | Bin 0 -> 148900 bytes docs/godot-simulation-roadmap.md | 126 + docs/godot-workstation-v01.md | 91 + integrations/godot/.gitignore | 1 + integrations/godot/README.md | 29 + integrations/godot/main.gd | 800 + integrations/godot/main.gd.uid | 1 + integrations/godot/main.tscn | 6 + integrations/godot/project.godot | 22 + integrations/godot/tests/test_coordinates.gd | 31 + scripts/benchmark-godot-bridge.py | 123 + scripts/verify-godot-client.py | 95 + src/dvidia_training/godot_bridge.py | 290 + tests/test_godot_bridge.py | 270 + 23 files changed, 23510 insertions(+) create mode 100644 benchmarks/godot-workstation-v01/README.md create mode 100644 benchmarks/godot-workstation-v01/cpu-parity.json create mode 100644 benchmarks/godot-workstation-v01/development-timing-summary.json create mode 100644 benchmarks/godot-workstation-v01/headless-client.json create mode 100644 benchmarks/godot-workstation-v01/integrity.json create mode 100644 benchmarks/godot-workstation-v01/tests.log create mode 100644 benchmarks/godot-workstation-v01/windowed-final-parity.json create mode 100644 benchmarks/godot-workstation-v01/windowed-final.json create mode 100644 benchmarks/godot-workstation-v01/windowed-final.png create mode 100644 docs/godot-simulation-roadmap.md create mode 100644 docs/godot-workstation-v01.md create mode 100644 integrations/godot/.gitignore create mode 100644 integrations/godot/README.md create mode 100644 integrations/godot/main.gd create mode 100644 integrations/godot/main.gd.uid create mode 100644 integrations/godot/main.tscn create mode 100644 integrations/godot/project.godot create mode 100644 integrations/godot/tests/test_coordinates.gd create mode 100644 scripts/benchmark-godot-bridge.py create mode 100644 scripts/verify-godot-client.py create mode 100644 src/dvidia_training/godot_bridge.py create mode 100644 tests/test_godot_bridge.py diff --git a/.gitattributes b/.gitattributes index 622b09c..54931a4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -19,6 +19,9 @@ src/dvidia_training/camera_action_reference_export.py text eol=lf src/dvidia_training/camera_action_reference_model.py text eol=lf src/dvidia_training/piper_encoder_kinematics.py text eol=lf scripts/benchmark-piper-encoder-kinematics.py text eol=lf +src/dvidia_training/godot_bridge.py text eol=lf +scripts/benchmark-godot-bridge.py text eol=lf +scripts/verify-godot-client.py text eol=lf src/dvidia_training/camera_action_study.py text eol=lf src/dvidia_training/piper_rgbd_tracker.py text eol=lf src/dvidia_training/action_demonstration.py text eol=lf diff --git a/benchmarks/godot-workstation-v01/README.md b/benchmarks/godot-workstation-v01/README.md new file mode 100644 index 0000000..487350e --- /dev/null +++ b/benchmarks/godot-workstation-v01/README.md @@ -0,0 +1,70 @@ +# Godot workstation v0.1: integration and timing + +**Result: native-state parity passed. Physical accuracy and learned-task success +were not evaluated.** Godot displays the pinned PiPER workstation while the +unchanged MuJoCo implementation owns all dynamics. The shoe is an authored rigid +proxy, and the renderer uses solid colors rather than imported GLB textures. + +Hardware: Apple M5, 10 logical processors, macOS 26.5.2 arm64. Python 3.12.9, +NumPy 2.5.3, MuJoCo 3.15.0, Godot 4.7.2 OpenGL compatibility renderer. Shared host; +these short development measurements are not isolated hardware qualification. + +## Native CPU comparison + +Three paired repetitions of six authored target-tracking segments were run. +Each repetition contains 600 control intervals and 12 simulated seconds. Both +paths preserve ten 2 ms native ticks per 20 ms control interval. + +| Path | Simulated seconds / wall second | Per-interval p95 | +|---|---:|---:| +| Direct native Python call | 58.63–59.81 | 0.353–0.374 ms | +| Encode request → bridge → encode/decode response | 49.71–50.15 | 0.426–0.444 ms | + +All **1,800 paired returned states matched exactly**, including contacts. The +six runs advanced 36,000 native ticks with zero solver warnings. These timing +numbers exclude socket transport, camera rendering, Godot, model learning, and +initialization. The whole benchmark process peaked at 875,184,128 bytes RSS; +this includes retained comparison traces and is not a minimum RAM requirement. +The JSON path measures its additional serialization and validation work; it is +not a physics speedup. Source digests and exact timings are in `cpu-parity.json`. + +## Actual windowed Godot execution + +The final client sent 100 commands across three bounded target/jaw settings. +It advanced exactly 2.00 simulated seconds in **2.264 seconds** after the handshake. +This viewer deliberately paces commands around 50 Hz. Its wall time must not be +compared with unpaced CPU throughput as a rendering slowdown ratio. + +- 100 accepted commands, zero protocol errors, zero hidden retries. +- Godot process frame interval p50 8.00 ms, p95 10.91 ms; this is **not GPU time**. +- Socket request-to-parsed-response latency p50 6.109 ms, p95 16.826 ms. +- Independent native replay checked 101 states and 12,387 numeric values; + maximum absolute discrepancy was 5.11e-15, below the declared 1e-9 tolerance. +- The receipt pins the exact client script, project, model and scene integrity. + +Two earlier windowed development runs took 2.441 and 2.062 seconds respectively. +Their summaries remain in `development-timing-summary.json`; the latest run is +reported above rather than selecting the fastest. Lighting and command pacing +were corrected between the first and second runs. Shared-host variation and +changes between these runs prevent a controlled speedup claim. + +The initial sandboxed headless client could not open a localhost connection and +advanced zero ticks (`headless-client.json`). Scoped local graphics/network access +enabled the subsequent real windowed runs. The external native UI automation +could not attach to the Godot application, so manual mouse/button interaction was +not independently verified. Automated windowed stepping and actual screenshots +were verified; server reset and no-step keepalive behavior are covered by unit tests. + +## Verification and limits + +19 focused Python tests passed: 16 bridge tests, plus unchanged actuator/mass/ +inertia contracts, deterministic reset, and native gravity/support-force checks. +Seven Godot coordinate assertions passed. Independent read-only code review +checked protocol authority, frame conversion, clock and digest validation. + +These are numerical/integration checks against our existing simulator. They do +not measure agreement with physical hardware, validate shoe deformation, prove +successful grasp/placement, or change the existing learned-skill qualification. +The next useful gate is a calibrated rigid-object contact suite followed by a +matched learned-control benchmark. See `docs/godot-simulation-roadmap.md` and +`docs/godot-workstation-v01.md` for scope and reproduction commands. diff --git a/benchmarks/godot-workstation-v01/cpu-parity.json b/benchmarks/godot-workstation-v01/cpu-parity.json new file mode 100644 index 0000000..ee5ca0f --- /dev/null +++ b/benchmarks/godot-workstation-v01/cpu-parity.json @@ -0,0 +1,373 @@ +{ + "schema": "dvidia.godot-bridge-benchmark/v1", + "scope": "Compare the unchanged workstation with the local JSON bridge, without a viewer.\n\nFixed workload: three paired repetitions of the six authored tracking segments.\nThis tests integration parity and CPU request overhead, not a learned task,\nphysical fidelity, socket round-trip latency, or desktop rendering performance.", + "protocol": { + "schema": "dvidia.live-workstation-protocol/v1", + "scope": "Live native PiPER position tracking with authored IK, pinned upstream mechanics and a free synthetic rigid shoe. No learned shoe manipulation policy, calibrated shoe contact, deformation or hardware qualification.", + "timestep": 0.002, + "control_dt": 0.02, + "orientation_wxyz": [ + 0.25881904510252074, + 0.0, + 0.9659258262890683, + 0.0 + ], + "actions": [ + { + "name": "home", + "target": [ + 0.36, + -0.06, + 0.27 + ], + "jaw": 0.035, + "control_steps": 100 + }, + { + "name": "above_shoe", + "target": [ + 0.32, + -0.145, + 0.18 + ], + "jaw": 0.035, + "control_steps": 100 + }, + { + "name": "inspect_front", + "target": [ + 0.42, + -0.02, + 0.2 + ], + "jaw": 0.035, + "control_steps": 100 + }, + { + "name": "inspect_side", + "target": [ + 0.32, + 0.12, + 0.18 + ], + "jaw": 0.035, + "control_steps": 100 + }, + { + "name": "close_clear", + "target": [ + 0.36, + -0.06, + 0.27 + ], + "jaw": 0.0, + "control_steps": 100 + }, + { + "name": "open_clear", + "target": [ + 0.36, + -0.06, + 0.27 + ], + "jaw": 0.035, + "control_steps": 100 + } + ], + "acceptance": { + "settled_position_error_m": 0.005, + "settled_orientation_error_rad": 0.05235987755982989, + "solver_warnings": 0, + "unintended_moving_arm_contacts": 0, + "native_browser_position_tolerance_m": 0.001, + "scope": "Declared target values require measured native and browser results; no automatic qualification." + } + }, + "compiled_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "source_sha256": { + "godot_bridge.py": "8f4ed06195ef4b7730778fb26441a549a298075dfc9e20b075f32728ce676d90", + "workstation.py": "2a6aa6686b5b273efcfb21156952df8ceca88d991674cd17df92f2dccc11b701", + "reference_sim.py": "c1201d22eb13dd07a236ee63cc4ba68e129f6067e8db61ed41af2d820eb5e3b8" + }, + "benchmark_sha256": "63727ceb53b2eda3512b622b55e663b8c0a84b6e3fe5808829d717a965819015", + "host": { + "platform": "macOS-26.5.2-arm64-arm-64bit", + "machine": "arm64", + "python": "3.12.9", + "numpy": "2.5.3", + "mujoco": "3.15.0", + "whole_process_peak_rss_bytes": 875184128 + }, + "compile_seconds": 0.34206087500206195, + "runs": [ + { + "repeat": 0, + "mode": "direct", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.2032662080018781, + "real_time_factor": 59.035882638642036, + "initialize_seconds_excluded_from_loop": 0.005195583013119176, + "request_timing": { + "p50_ms": 0.333521, + "p95_ms": 0.36767115, + "maximum_ms": 0.667125 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ] + }, + { + "repeat": 0, + "mode": "json_bridge", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.24140012499992736, + "real_time_factor": 49.7099991145584, + "initialize_seconds_excluded_from_loop": 0.005137458996614441, + "request_timing": { + "p50_ms": 0.395209, + "p95_ms": 0.4438705499999999, + "maximum_ms": 0.678041 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ], + "paired_full_state_exactly_equal": true + }, + { + "repeat": 1, + "mode": "json_bridge", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.23989154197624885, + "real_time_factor": 50.022605637295754, + "initialize_seconds_excluded_from_loop": 0.00525637500686571, + "request_timing": { + "p50_ms": 0.390438, + "p95_ms": 0.4257351, + "maximum_ms": 2.915 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ] + }, + { + "repeat": 1, + "mode": "direct", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.20062504199449904, + "real_time_factor": 59.81307159217794, + "initialize_seconds_excluded_from_loop": 0.004778332979185507, + "request_timing": { + "p50_ms": 0.3311455, + "p95_ms": 0.35307115, + "maximum_ms": 0.5665 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ], + "paired_full_state_exactly_equal": true + }, + { + "repeat": 2, + "mode": "direct", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.20469041698379442, + "real_time_factor": 58.62511873699847, + "initialize_seconds_excluded_from_loop": 0.004863542009843513, + "request_timing": { + "p50_ms": 0.33458350000000003, + "p95_ms": 0.37387465, + "maximum_ms": 0.677333 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ] + }, + { + "repeat": 2, + "mode": "json_bridge", + "intervals": 600, + "native_ticks": 6000, + "simulation_seconds": 12.000000000000677, + "wall_seconds_including_trace_collection": 0.23928616699413396, + "real_time_factor": 50.14915885336094, + "initialize_seconds_excluded_from_loop": 0.0051525000017136335, + "request_timing": { + "p50_ms": 0.390958, + "p95_ms": 0.4277319, + "maximum_ms": 1.1285 + }, + "solver_warnings": 0, + "trace_sha256": "83d4eb2753c0dcedf5cb994d43bb2023fef5fc4ed6eb16afcd0dcc526e2e4799", + "segment_final_errors": [ + { + "segment": "home", + "position_error_m": 1.4600452745701265e-13 + }, + { + "segment": "above_shoe", + "position_error_m": 0.0017960872925379468 + }, + { + "segment": "inspect_front", + "position_error_m": 0.0005472440642881675 + }, + { + "segment": "inspect_side", + "position_error_m": 0.0005083878653221141 + }, + { + "segment": "close_clear", + "position_error_m": 0.0036028216238433376 + }, + { + "segment": "open_clear", + "position_error_m": 0.0004214418136099801 + } + ], + "paired_full_state_exactly_equal": true + } + ], + "paired_state_comparisons": 1800, + "total_native_ticks": 36000, + "all_paired_states_exactly_equal": true, + "physical_accuracy_validated": false, + "learned_skill_evaluated": false, + "rendering_evaluated": false, + "socket_latency_evaluated": false, + "physical_robot_ready": false +} diff --git a/benchmarks/godot-workstation-v01/development-timing-summary.json b/benchmarks/godot-workstation-v01/development-timing-summary.json new file mode 100644 index 0000000..62fdeed --- /dev/null +++ b/benchmarks/godot-workstation-v01/development-timing-summary.json @@ -0,0 +1,102 @@ +[ + { + "local_receipt": "windowed-client.json", + "sha256": "562497bf37d2f3075f099b14de77fc1ee83cddd7b32ff210b0828272774a0cc1", + "applied_sim_time_seconds": 2.0, + "errors": [], + "expected_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "godot": "4.7.2-stable (official)", + "initial_sim_time_seconds": 0.0, + "interactive_wall_seconds": 2.440725, + "native_compute_total_ms": 58.8603350915946, + "ok": true, + "physics_authority": "MuJoCo only", + "process_frame_interval_ms": { + "p50": 8.33333333333333, + "p95": 8.705, + "samples": 289 + }, + "render_process_frames": 291, + "requested_steps": 100, + "reset_responses": 0, + "rpc_roundtrip_ms": { + "p50": 8.129, + "p95": 12.611, + "samples": 100 + }, + "scene_integrity_sha256": "2940da9f2e9884e9f39bafa1c696db5580162ad026192c3d02f95dd06f524f46", + "schema": "dvidia.godot-client-smoke/v1", + "step_responses": 100, + "timing_scope": "Startup-inclusive wall time; ready-to-completion interactive wall; Godot process delta intervals (not GPU render time); socket request-to-parsed-response latency; native compute excludes IPC and rendering. Samples capped at 10000 per series.", + "trace_limit": 256, + "wall_seconds": 3.299003 + }, + { + "local_receipt": "windowed-client-v2.json", + "sha256": "2abb5dc0c7622d4429c248c514411996d35500aa73a8d0d3c2e56fd527de6022", + "applied_sim_time_seconds": 2.0, + "errors": [], + "expected_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "godot": "4.7.2-stable (official)", + "initial_sim_time_seconds": 0.0, + "interactive_wall_seconds": 2.061568, + "native_compute_total_ms": 75.2027550188359, + "ok": true, + "physics_authority": "MuJoCo only", + "process_frame_interval_ms": { + "p50": 8.33333333333333, + "p95": 9.97699999999992, + "samples": 244 + }, + "render_process_frames": 246, + "requested_steps": 100, + "reset_responses": 0, + "rpc_roundtrip_ms": { + "p50": 3.263, + "p95": 13.76, + "samples": 100 + }, + "scene_integrity_sha256": "2940da9f2e9884e9f39bafa1c696db5580162ad026192c3d02f95dd06f524f46", + "schema": "dvidia.godot-client-smoke/v1", + "step_responses": 100, + "timing_scope": "Startup-inclusive wall time; ready-to-completion interactive wall; Godot process delta intervals (not GPU render time); socket request-to-parsed-response latency; native compute excludes IPC and rendering. Samples capped at 10000 per series.", + "trace_limit": 256, + "wall_seconds": 2.855998 + }, + { + "local_receipt": "windowed-final.json", + "sha256": "77edb523d21b6c97f7f030346ff9bdc645c36e7cc8084393b3b0aee137d884b5", + "applied_sim_time_seconds": 2.0, + "client_script_sha256": "fc0f06d2e2c73a1962c45c3a6b5a0a98e63398599fdfa1ad6345aaf35abaecd2", + "errors": [], + "expected_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "godot": "4.7.2-stable (official)", + "initial_sim_time_seconds": 0.0, + "interactive_wall_seconds": 2.263779, + "logical_processors": 10, + "native_compute_total_ms": 94.1997528425418, + "ok": true, + "physics_authority": "MuJoCo only", + "process_frame_interval_ms": { + "p50": 8.0, + "p95": 10.91, + "samples": 269 + }, + "processor": "Apple M5", + "project_sha256": "369076b092166013c770a7a3e576a421d83c5b3d10a782500bf69a973a554dad", + "render_process_frames": 271, + "requested_steps": 100, + "reset_responses": 0, + "rpc_roundtrip_ms": { + "p50": 6.109, + "p95": 16.826, + "samples": 100 + }, + "scene_integrity_sha256": "2940da9f2e9884e9f39bafa1c696db5580162ad026192c3d02f95dd06f524f46", + "schema": "dvidia.godot-client-smoke/v1", + "step_responses": 100, + "timing_scope": "Startup-inclusive wall time; ready-to-completion interactive wall; Godot process delta intervals (not GPU render time); socket request-to-parsed-response latency; native compute excludes IPC and rendering. Samples capped at 10000 per series.", + "trace_limit": 256, + "wall_seconds": 3.330206 + } +] diff --git a/benchmarks/godot-workstation-v01/headless-client.json b/benchmarks/godot-workstation-v01/headless-client.json new file mode 100644 index 0000000..3e55e97 --- /dev/null +++ b/benchmarks/godot-workstation-v01/headless-client.json @@ -0,0 +1,22 @@ +{ + "applied_sim_time_seconds": 0.0, + "errors": [ + "Cannot connect to local MuJoCo (1)." + ], + "expected_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "godot": "4.7.2-stable (official)", + "initial_sim_time_seconds": 0.0, + "initial_state": {}, + "native_compute_total_ms": 0.0, + "ok": false, + "physics_authority": "MuJoCo only", + "render_process_frames": 0, + "requested_steps": 100, + "reset_responses": 0, + "scene_integrity_sha256": "2940da9f2e9884e9f39bafa1c696db5580162ad026192c3d02f95dd06f524f46", + "schema": "dvidia.godot-client-smoke/v1", + "step_responses": 0, + "trace": [], + "trace_limit": 256, + "wall_seconds": 0.375454 +} diff --git a/benchmarks/godot-workstation-v01/integrity.json b/benchmarks/godot-workstation-v01/integrity.json new file mode 100644 index 0000000..2f64134 --- /dev/null +++ b/benchmarks/godot-workstation-v01/integrity.json @@ -0,0 +1,37 @@ +{ + "schema": "dvidia.godot-prototype-evidence/v1", + "files": { + "README.md": { + "bytes": 4118, + "sha256": "4de97513e376b23708a8561f9c04e8f4add5aeff659bd795c366439d6a2d40a8" + }, + "cpu-parity.json": { + "bytes": 11110, + "sha256": "8e98afc75af154e9f989f7fb8efb74311d17d3006f4804e8f21944fb190b1a7b" + }, + "development-timing-summary.json": { + "bytes": 4141, + "sha256": "afb5ff2fe8f42c3b1e17ab3a33425e2afbf95f563ca5994adb436a4e8c6d07b5" + }, + "headless-client.json": { + "bytes": 685, + "sha256": "0dcb6fe3b6618f314f916f2c627f061ae0891a37147f8b1f5d5edbd4b55681a0" + }, + "tests.log": { + "bytes": 3416, + "sha256": "bae152d78c373a1499bb66cba209e8b9f1309db1f86932a595242d9e2c19e5f4" + }, + "windowed-final-parity.json": { + "bytes": 1337, + "sha256": "043259d09230f8994fbb10a98284c05ba0ad099db15b751bb0fd92dbeeee3a35" + }, + "windowed-final.json": { + "bytes": 486857, + "sha256": "77edb523d21b6c97f7f030346ff9bdc645c36e7cc8084393b3b0aee137d884b5" + }, + "windowed-final.png": { + "bytes": 148900, + "sha256": "4e8532a9a9ac9331911736296ad9c67469beb1a6f1b3ff1c1e7fa02955e25a3f" + } + } +} diff --git a/benchmarks/godot-workstation-v01/tests.log b/benchmarks/godot-workstation-v01/tests.log new file mode 100644 index 0000000..ab1bebd --- /dev/null +++ b/benchmarks/godot-workstation-v01/tests.log @@ -0,0 +1,24 @@ +test_output_refuses_symlink_ancestor_and_existing_directory_before_native_access (tests.test_godot_bridge.ExportTests.test_output_refuses_symlink_ancestor_and_existing_directory_before_native_access) ... ok +test_prepare_exports_geometry_hash_and_notices_without_initialize_or_dynamics (tests.test_godot_bridge.ExportTests.test_prepare_exports_geometry_hash_and_notices_without_initialize_or_dynamics) ... ok +test_server_binds_loopback_sets_idle_timeout_and_once_exits (tests.test_godot_bridge.ExportTests.test_server_binds_loopback_sets_idle_timeout_and_once_exits) ... ok +test_server_port_validation_and_fixed_loopback_host (tests.test_godot_bridge.ExportTests.test_server_port_validation_and_fixed_loopback_host) ... ok +test_bad_target_jaw_sequence_or_unknown_control_is_rejected_before_ticks (tests.test_godot_bridge.ProtocolTests.test_bad_target_jaw_sequence_or_unknown_control_is_rejected_before_ticks) ... ok +test_duplicate_and_skipped_sequences_do_not_replay_commands (tests.test_godot_bridge.ProtocolTests.test_duplicate_and_skipped_sequences_do_not_replay_commands) ... ok +test_each_step_is_exactly_ten_ticks_using_persistent_controller_state (tests.test_godot_bridge.ProtocolTests.test_each_step_is_exactly_ten_ticks_using_persistent_controller_state) ... ok +test_hello_requires_matching_schema_and_model_and_never_steps (tests.test_godot_bridge.ProtocolTests.test_hello_requires_matching_schema_and_model_and_never_steps) ... ok +test_invalid_json_and_duplicate_keys_are_rejected (tests.test_godot_bridge.ProtocolTests.test_invalid_json_and_duplicate_keys_are_rejected) ... ok +test_native_exception_faults_session_and_does_not_claim_rejected_before_dynamics (tests.test_godot_bridge.ProtocolTests.test_native_exception_faults_session_and_does_not_claim_rejected_before_dynamics) ... ok +test_ping_has_no_control_authority (tests.test_godot_bridge.ProtocolTests.test_ping_has_no_control_authority) ... ok +test_reset_reinitializes_without_ticks_and_sequence_remains_monotonic (tests.test_godot_bridge.ProtocolTests.test_reset_reinitializes_without_ticks_and_sequence_remains_monotonic) ... ok +test_chunked_and_combined_frames_preserve_one_command_one_interval (tests.test_godot_bridge.SocketTests.test_chunked_and_combined_frames_preserve_one_command_one_interval) ... ok +test_incomplete_command_disconnected_before_newline_never_ticks (tests.test_godot_bridge.SocketTests.test_incomplete_command_disconnected_before_newline_never_ticks) ... ok +test_malformed_line_can_be_followed_by_valid_handshake (tests.test_godot_bridge.SocketTests.test_malformed_line_can_be_followed_by_valid_handshake) ... ok +test_oversize_frame_is_bounded_and_closes_without_ticks (tests.test_godot_bridge.SocketTests.test_oversize_frame_is_bounded_and_closes_without_ticks) ... ok +test_upstream_actuators_mass_inertia_and_joint_contracts_are_unchanged (tests.test_workstation.NativeWorkstationTests.test_upstream_actuators_mass_inertia_and_joint_contracts_are_unchanged) ... ok +test_reset_is_deterministic_and_has_no_hidden_settling_or_attachment (tests.test_workstation.NativeWorkstationTests.test_reset_is_deterministic_and_has_no_hidden_settling_or_attachment) ... ok +test_shoe_settles_with_gravity_and_true_support_force (tests.test_workstation.NativeWorkstationTests.test_shoe_settles_with_gravity_and_true_support_force) ... ok + +---------------------------------------------------------------------- +Ran 19 tests in 4.413s + +OK diff --git a/benchmarks/godot-workstation-v01/windowed-final-parity.json b/benchmarks/godot-workstation-v01/windowed-final-parity.json new file mode 100644 index 0000000..ad4dac2 --- /dev/null +++ b/benchmarks/godot-workstation-v01/windowed-final-parity.json @@ -0,0 +1,27 @@ +{ + "schema": "dvidia.godot-client-parity/v1", + "passed": true, + "scope": "Independently replay a complete Godot smoke trace in the native workstation.\n\nThis checks received-state parity, not whether pixels or physical hardware are\naccurate. Godot JSON output rounds doubles, so numerical tolerance is explicit.", + "receipt_sha256": "77edb523d21b6c97f7f030346ff9bdc645c36e7cc8084393b3b0aee137d884b5", + "verifier_sha256": "8c206554a95c9bd1e1e13220c84de5e3c81f77e4f76f47b73e690ec8515ad023", + "workstation_sha256": "2a6aa6686b5b273efcfb21156952df8ceca88d991674cd17df92f2dccc11b701", + "model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "tolerance_absolute": 1e-09, + "received_states_checked": 101, + "numeric_scalars_checked": 12387, + "maximum_absolute_error_by_field": { + "time": 1.5543122344752192e-15, + "qpos": 4.884981308350689e-15, + "ctrl": 5.10702591327572e-15, + "body_positions": 5.551115123125783e-16, + "body_quaternions": 5.551115123125783e-16, + "tcp_position": 4.996003610813204e-16, + "tcp_quaternion": 5.551115123125783e-16, + "shoe_position": 4.996003610813204e-16, + "position_error_m": 5.551115123125783e-17, + "contacts": 3.9968028886505635e-15 + }, + "native_ticks_replayed": 1000, + "physical_accuracy_validated": false, + "pixels_validated": false +} diff --git a/benchmarks/godot-workstation-v01/windowed-final.json b/benchmarks/godot-workstation-v01/windowed-final.json new file mode 100644 index 0000000..e0c327c --- /dev/null +++ b/benchmarks/godot-workstation-v01/windowed-final.json @@ -0,0 +1,20967 @@ +{ + "applied_sim_time_seconds": 2.0, + "client_script_sha256": "fc0f06d2e2c73a1962c45c3a6b5a0a98e63398599fdfa1ad6345aaf35abaecd2", + "errors": [], + "expected_model_sha256": "2d5439574717644e1ea301f225cd13e9cc8a1042476628ed6ab7014c42e43e32", + "godot": "4.7.2-stable (official)", + "initial_sim_time_seconds": 0.0, + "initial_state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921790592, + -0.0032366123160528, + 0.407697219259878 + ], + [ + 0.254171566396938, + -0.0613690849667649, + 0.452576386923991 + ], + [ + 0.254171566396938, + -0.0613690849667649, + 0.452576386923991 + ], + [ + 0.299985, + -0.06, + 0.373949029216246 + ], + [ + 0.367500075870596, + -0.094999999999685, + 0.257009491282792 + ], + [ + 0.367500072621887, + -0.0250000000003151, + 0.257009489407149 + ], + [ + 0.32, + -0.145, + 0.012 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389759, + 0.0, + 0.0, + -0.785717559069357 + ], + [ + 0.422660213031542, + -0.543907766700968, + -0.451847697042228, + -0.566883007612798 + ], + [ + -0.0496342733420541, + -0.11730664125875, + -0.697309939637024, + -0.705361211656699 + ], + [ + -0.0399656666430445, + -0.66269578658252, + 0.122507852927559, + -0.737718690224554 + ], + [ + 0.700899927567349, + -0.653736720591014, + -0.0934732082667994, + -0.269500187427213 + ], + [ + -0.258819045102521, + 0.0000000000000000310600715275844, + -0.965925826289068, + 0.00000000000000028809271817397 + ], + [ + 0.683014145876203, + -0.683011257905187, + -0.18301310842174, + -0.183012295361778 + ], + [ + -0.683014155683793, + -0.683011248097546, + 0.183013071819319, + -0.183012331964393 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ] + ], + "contacts": [], + "ctrl": [ + -0.236909978466379, + 1.51825894351698, + -1.52279357026797, + 0.128680437902653, + 1.1542398586462, + -0.258438877833999, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000000135973995551052, + "qpos": [ + -0.236909978466379, + 1.51825894351698, + -1.52279357026797, + 0.128680437902653, + 1.1542398586462, + -0.258438877833999, + 0.035, + -0.035, + 0.32, + -0.145, + 0.012, + 1.0, + 0.0, + 0.0, + 0.0 + ], + "shoe_position": [ + 0.32, + -0.145, + 0.012 + ], + "tcp_position": [ + 0.36, + -0.0600000000000001, + 0.27 + ], + "tcp_quaternion": [ + 0.258819045102521, + -0.0000000000000000310600715275844, + 0.965925826289068, + -0.00000000000000028809271817397 + ], + "time": 0.0 + }, + "interactive_wall_seconds": 2.263779, + "logical_processors": 10, + "native_compute_total_ms": 94.1997528425418, + "ok": true, + "physics_authority": "MuJoCo only", + "process_frame_interval_ms": { + "p50": 8.0, + "p95": 10.91, + "samples": 269 + }, + "processor": "Apple M5", + "project_sha256": "369076b092166013c770a7a3e576a421d83c5b3d10a782500bf69a973a554dad", + "render_process_frames": 271, + "requested_steps": 100, + "reset_responses": 0, + "rpc_roundtrip_ms": { + "p50": 6.109, + "p95": 16.826, + "samples": 100 + }, + "scene_integrity_sha256": "2940da9f2e9884e9f39bafa1c696db5580162ad026192c3d02f95dd06f524f46", + "schema": "dvidia.godot-client-smoke/v1", + "step_responses": 100, + "timing_scope": "Startup-inclusive wall time; ready-to-completion interactive wall; Godot process delta intervals (not GPU render time); socket request-to-parsed-response latency; native compute excludes IPC and rendering. Samples capped at 10000 per series.", + "trace": [ + { + "compute_ms": 0.770082988310605, + "request": { + "jaw": 0.035, + "sequence": 1, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.225, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.013409592179041, + -0.00323661231604846, + 0.407697219259879 + ], + [ + 0.254171566396923, + -0.061369084966762, + 0.452576386923977 + ], + [ + 0.254171566396923, + -0.061369084966762, + 0.452576386923977 + ], + [ + 0.299984999999994, + -0.0599999999999988, + 0.373949029216238 + ], + [ + 0.367500075870603, + -0.0949999999996846, + 0.257009491282792 + ], + [ + 0.367500072621896, + -0.0250000000003163, + 0.257009489407149 + ], + [ + 0.32, + -0.145, + 0.0098418 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389757, + 0.0, + 0.0, + -0.785717559069358 + ], + [ + 0.422660213031522, + -0.543907766700954, + -0.451847697042245, + -0.566883007612813 + ], + [ + -0.049634273342034, + -0.117306641258773, + -0.697309939637021, + -0.7053612116567 + ], + [ + -0.0399656666430376, + -0.66269578658254, + 0.12250785292757, + -0.737718690224534 + ], + [ + 0.700899927567338, + -0.653736720591001, + -0.0934732082668344, + -0.269500187427261 + ], + [ + -0.258819045102579, + -0.0000000000000130632340355267, + -0.965925826289052, + 0.00000000000000649088478637157 + ], + [ + 0.683014145876188, + -0.683011257905181, + -0.183013108421772, + -0.183012295361829 + ], + [ + -0.683014155683786, + -0.683011248097531, + 0.183013071819369, + -0.183012331964425 + ], + [ + 1.0, + 0.00000000000000000025183850287544, + 0.0, + 0.0 + ] + ], + "contacts": [], + "ctrl": [ + -0.236909978466378, + 1.51825894351698, + -1.52279357026797, + 0.128680437902651, + 1.1542398586462, + -0.258438877833998, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000000650173988524182, + "qpos": [ + -0.236909978466382, + 1.51825894351691, + -1.52279357026784, + 0.128680437902672, + 1.15423985864602, + -0.258438877833995, + 0.0349999999999983, + -0.0350000000000002, + 0.32, + -0.145, + 0.0098418, + 1.0, + 0.00000000000000000025183850287544, + 0.0, + 0.0 + ], + "shoe_position": [ + 0.32, + -0.145, + 0.0098418 + ], + "tcp_position": [ + 0.360000000000006, + -0.0600000000000011, + 0.269999999999999 + ], + "tcp_quaternion": [ + 0.258819045102579, + 0.0000000000000130632340355267, + 0.965925826289052, + -0.00000000000000649088478637157 + ], + "time": 0.02 + } + }, + { + "compute_ms": 0.792000006185845, + "request": { + "jaw": 0.035, + "sequence": 2, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 28.481, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921794655, + -0.00323661231614969, + 0.407697219259858 + ], + [ + 0.254171566397287, + -0.0613690849668272, + 0.452576386924322 + ], + [ + 0.254171566397287, + -0.0613690849668272, + 0.452576386924322 + ], + [ + 0.299985000000142, + -0.0600000000000229, + 0.373949029216457 + ], + [ + 0.367500075870453, + -0.0949999999996509, + 0.257009491282821 + ], + [ + 0.367500072621699, + -0.0250000000003208, + 0.257009489407187 + ], + [ + 0.32, + -0.145, + 0.0037596 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389791, + 0.0, + 0.0, + -0.785717559069332 + ], + [ + 0.422660213031981, + -0.543907766701281, + -0.451847697041851, + -0.566883007612471 + ], + [ + -0.0496342733425253, + -0.117306641258228, + -0.697309939637113, + -0.705361211656666 + ], + [ + -0.039965666643189, + -0.662695786582034, + 0.122507852927303, + -0.737718690225025 + ], + [ + 0.700899927567604, + -0.653736720591281, + -0.0934732082660384, + -0.269500187426165 + ], + [ + -0.258819045101251, + 0.000000000000290930937860658, + -0.965925826289409, + -0.000000000000144540666180075 + ], + [ + 0.683014145876546, + -0.683011257905326, + -0.183013108421048, + -0.183012295360675 + ], + [ + -0.683014155683931, + -0.683011248097889, + 0.183013071818215, + -0.183012331963701 + ], + [ + 1.0, + 0.00000000000000000096156519279714, + 0.0, + 0.0 + ] + ], + "contacts": [], + "ctrl": [ + -0.236909978466379, + 1.51825894351698, + -1.52279357026797, + 0.128680437902653, + 1.1542398586462, + -0.258438877834, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000014466618251442, + "qpos": [ + -0.236909978466297, + 1.51825894351844, + -1.52279357027085, + 0.128680437902249, + 1.15423985865025, + -0.258438877834086, + 0.035000000000001, + -0.0349999999999591, + 0.32, + -0.145, + 0.0037596, + 1.0, + 0.00000000000000000096156519279714, + 0.0, + 0.0 + ], + "shoe_position": [ + 0.32, + -0.145, + 0.0037596 + ], + "tcp_position": [ + 0.359999999999868, + -0.0599999999999713, + 0.270000000000053 + ], + "tcp_quaternion": [ + 0.258819045101251, + -0.000000000000290930937860658, + 0.965925826289409, + 0.000000000000144540666180075 + ], + "time": 0.04 + } + }, + { + "compute_ms": 1.28712499281392, + "request": { + "jaw": 0.035, + "sequence": 3, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 14.15, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921793087, + -0.00323661231611195, + 0.407697219259865 + ], + [ + 0.254171566397149, + -0.0613690849667949, + 0.452576386924226 + ], + [ + 0.254171566397149, + -0.0613690849667949, + 0.452576386924226 + ], + [ + 0.299985000000089, + -0.0600000000000048, + 0.373949029216411 + ], + [ + 0.367500075870519, + -0.0949999999996376, + 0.257009491282851 + ], + [ + 0.367500072621782, + -0.0250000000003219, + 0.257009489407213 + ], + [ + 0.319999991591938, + -0.145000018960901, + -0.00313018544243126 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389789, + 0.0, + 0.0, + -0.785717559069334 + ], + [ + 0.422660213031819, + -0.543907766701154, + -0.451847697042004, + -0.566883007612591 + ], + [ + -0.0496342733423798, + -0.117306641258375, + -0.697309939637088, + -0.705361211656676 + ], + [ + -0.0399656666431211, + -0.662695786582175, + 0.122507852927388, + -0.737718690224888 + ], + [ + 0.700899927567505, + -0.653736720591168, + -0.093473208266371, + -0.269500187426581 + ], + [ + -0.258819045101778, + 0.000000000000182636308990461, + -0.965925826289267, + -0.0000000000000937699113079184 + ], + [ + 0.68301414587641, + -0.683011257905262, + -0.183013108421344, + -0.183012295361124 + ], + [ + -0.683014155683867, + -0.683011248097753, + 0.183013071818664, + -0.183012331963997 + ], + [ + 0.999999999914483, + -0.0000119522730227575, + 0.00000530817367065634, + -0.000000000107595135342671 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 2.43541911497835 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 2.21925002696755 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 2.04406504315558 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 2.26023413116639 + } + ], + "ctrl": [ + -0.236909978466379, + 1.518258943517, + -1.52279357026803, + 0.128680437902649, + 1.15423985864626, + -0.258438877833994, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000105653231208984, + "qpos": [ + -0.236909978466302, + 1.51825894351788, + -1.52279357026987, + 0.128680437902417, + 1.15423985864874, + -0.258438877834024, + 0.0349999999999851, + -0.0349999999999607, + 0.319999991591938, + -0.145000018960901, + -0.00313018544243126, + 0.999999999914483, + -0.0000119522730227575, + 0.00000530817367065634, + -0.000000000107595135342671 + ], + "shoe_position": [ + 0.319999991591938, + -0.145000018960901, + -0.00313018544243126 + ], + "tcp_position": [ + 0.359999999999929, + -0.0599999999999717, + 0.270000000000073 + ], + "tcp_quaternion": [ + 0.258819045101778, + -0.000000000000182636308990461, + 0.965925826289267, + 0.0000000000000937699113079184 + ], + "time": 0.06 + } + }, + { + "compute_ms": 1.17408399819396, + "request": { + "jaw": 0.035, + "sequence": 4, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.286, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921786494, + -0.00323661231595461, + 0.407697219259898 + ], + [ + 0.254171566396581, + -0.0613690849666935, + 0.452576386923693 + ], + [ + 0.254171566396581, + -0.0613690849666935, + 0.452576386923693 + ], + [ + 0.299984999999856, + -0.0599999999999664, + 0.373949029216071 + ], + [ + 0.367500075870745, + -0.0949999999996879, + 0.257009491282803 + ], + [ + 0.367500072622079, + -0.0250000000003383, + 0.257009489407152 + ], + [ + 0.319999973688965, + -0.145000059763388, + -0.00286821125119665 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389737, + 0.0, + 0.0, + -0.785717559069374 + ], + [ + 0.422660213031107, + -0.543907766700646, + -0.451847697042616, + -0.566883007613122 + ], + [ + -0.0496342733416201, + -0.117306641259218, + -0.697309939636946, + -0.705361211656729 + ], + [ + -0.0399656666428876, + -0.662695786582958, + 0.122507852927801, + -0.737718690224129 + ], + [ + 0.700899927567095, + -0.653736720590737, + -0.0934732082675952, + -0.269500187428269 + ], + [ + -0.258819045103822, + -0.000000000000289386233632036, + -0.96592582628872, + 0.0000000000001372006028077 + ], + [ + 0.68301414587586, + -0.683011257905038, + -0.183013108422455, + -0.183012295362903 + ], + [ + -0.683014155683643, + -0.683011248097203, + 0.183013071820443, + -0.183012331965108 + ], + [ + 0.999999999523856, + -0.0000282272561562597, + 0.0000124703746036433, + -0.000000000038881791492098 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.892580360638862 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.81316436014104 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.748451181127857 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.827867181625681 + } + ], + "ctrl": [ + -0.236909978466379, + 1.518258943517, + -1.522793570268, + 0.12868043790265, + 1.15423985864624, + -0.258438877833996, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000137096547333954, + "qpos": [ + -0.236909978466434, + 1.5182589435155, + -1.5227935702652, + 0.128680437903069, + 1.15423985864223, + -0.258438877833878, + 0.0349999999999806, + -0.0349999999999991, + 0.319999973688965, + -0.145000059763388, + -0.00286821125119665, + 0.999999999523856, + -0.0000282272561562597, + 0.0000124703746036433, + -0.000000000038881791492098 + ], + "shoe_position": [ + 0.319999973688965, + -0.145000059763388, + -0.00286821125119665 + ], + "tcp_position": [ + 0.360000000000135, + -0.0600000000000162, + 0.269999999999987 + ], + "tcp_quaternion": [ + 0.258819045103822, + 0.000000000000289386233632036, + 0.96592582628872, + -0.0000000000001372006028077 + ], + "time": 0.0800000000000001 + } + }, + { + "compute_ms": 1.24750001123175, + "request": { + "jaw": 0.035, + "sequence": 5, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.819, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921782282, + -0.00323661231585454, + 0.407697219259919 + ], + [ + 0.254171566396224, + -0.0613690849666378, + 0.452576386923315 + ], + [ + 0.254171566396224, + -0.0613690849666378, + 0.452576386923315 + ], + [ + 0.299984999999705, + -0.0599999999999518, + 0.373949029215813 + ], + [ + 0.367500075870877, + -0.0949999999997403, + 0.257009491282727 + ], + [ + 0.367500072622259, + -0.0250000000003792, + 0.257009489407067 + ], + [ + 0.319999975205376, + -0.145000056525841, + -0.00167876539927015 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389692, + 0.0, + 0.0, + -0.78571755906941 + ], + [ + 0.422660213030643, + -0.543907766700328, + -0.451847697042998, + -0.566883007613468 + ], + [ + -0.0496342733410926, + -0.117306641259819, + -0.697309939636845, + -0.705361211656766 + ], + [ + -0.0399656666427499, + -0.66269578658351, + 0.122507852928082, + -0.737718690223593 + ], + [ + 0.700899927566836, + -0.65373672059047, + -0.0934732082683341, + -0.269500187429334 + ], + [ + -0.258819045105087, + -0.000000000000595465268339224, + -0.96592582628838, + 0.000000000000288439181371238 + ], + [ + 0.683014145875513, + -0.683011257904905, + -0.183013108423134, + -0.183012295364014 + ], + [ + -0.68301415568351, + -0.683011248096856, + 0.183013071821555, + -0.183012331965787 + ], + [ + 0.999999999568271, + -0.0000268889573281391, + 0.0000118508284702396, + 0.000000000018484996307081 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.703852399510874 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.641397438905956 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.590791127420143 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.653246088025061 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351695, + -1.52279357026791, + 0.128680437902657, + 1.15423985864615, + -0.258438877834004, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000286752688696415, + "qpos": [ + -0.236909978466548, + 1.51825894351398, + -1.52279357026207, + 0.128680437903477, + 1.15423985863799, + -0.258438877833817, + 0.0349999999999867, + -0.0350000000000045, + 0.319999975205376, + -0.145000056525841, + -0.00167876539927015, + 0.999999999568271, + -0.0000268889573281391, + 0.0000118508284702396, + 0.000000000018484996307081 + ], + "shoe_position": [ + 0.319999975205376, + -0.145000056525841, + -0.00167876539927015 + ], + "tcp_position": [ + 0.360000000000257, + -0.0600000000000557, + 0.269999999999886 + ], + "tcp_quaternion": [ + 0.258819045105087, + 0.000000000000595465268339224, + 0.96592582628838, + -0.000000000000288439181371238 + ], + "time": 0.1 + } + }, + { + "compute_ms": 1.24725000932813, + "request": { + "jaw": 0.035, + "sequence": 6, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.109, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921777464, + -0.00323661231574002, + 0.407697219259943 + ], + [ + 0.254171566395816, + -0.0613690849665745, + 0.452576386922876 + ], + [ + 0.254171566395816, + -0.0613690849665745, + 0.452576386922876 + ], + [ + 0.299984999999537, + -0.0599999999999362, + 0.373949029215514 + ], + [ + 0.367500075871039, + -0.0949999999997936, + 0.257009491282639 + ], + [ + 0.367500072622475, + -0.0250000000004512, + 0.257009489406967 + ], + [ + 0.319999978219996, + -0.14500004970441, + -0.00089010668531857 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389641, + 0.0, + 0.0, + -0.78571755906945 + ], + [ + 0.422660213030113, + -0.543907766699965, + -0.451847697043436, + -0.566883007613863 + ], + [ + -0.0496342733404798, + -0.117306641260516, + -0.697309939636728, + -0.70536121165681 + ], + [ + -0.0399656666425885, + -0.662695786584152, + 0.122507852928409, + -0.737718690222972 + ], + [ + 0.700899927566536, + -0.653736720590159, + -0.0934732082691935, + -0.269500187430572 + ], + [ + -0.258819045106559, + -0.000000000000947446287322534, + -0.965925826287986, + 0.000000000000463746821853587 + ], + [ + 0.68301414587511, + -0.68301125790475, + -0.183013108423926, + -0.183012295365304 + ], + [ + -0.683014155683355, + -0.683011248096453, + 0.183013071822844, + -0.183012331966578 + ], + [ + 0.999999999692487, + -0.000022694052352132, + 0.0000100002700481349, + -0.0000000000043228045686236 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.724700148722602 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.660372949365706 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.608464062803996 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.672650215691242 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351692, + -1.52279357026785, + 0.128680437902662, + 1.1542398586461, + -0.25843887783401, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000047851404793371, + "qpos": [ + -0.236909978466679, + 1.51825894351224, + -1.52279357025846, + 0.128680437903954, + 1.15423985863308, + -0.258438877833754, + 0.0349999999999853, + -0.0349999999999872, + 0.319999978219996, + -0.14500004970441, + -0.00089010668531857, + 0.999999999692487, + -0.000022694052352132, + 0.0000100002700481349, + -0.0000000000043228045686236 + ], + "shoe_position": [ + 0.319999978219996, + -0.14500004970441, + -0.00089010668531857 + ], + "tcp_position": [ + 0.360000000000407, + -0.0600000000001026, + 0.26999999999977 + ], + "tcp_quaternion": [ + 0.258819045106559, + 0.000000000000947446287322534, + 0.965925826287986, + -0.000000000000463746821853587 + ], + "time": 0.12 + } + }, + { + "compute_ms": 1.10495800618082, + "request": { + "jaw": 0.035, + "sequence": 7, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 13.793, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921774638, + -0.00323661231567327, + 0.407697219259957 + ], + [ + 0.254171566395581, + -0.0613690849665449, + 0.452576386922584 + ], + [ + 0.254171566395581, + -0.0613690849665449, + 0.452576386922584 + ], + [ + 0.299984999999443, + -0.0599999999999361, + 0.373949029215303 + ], + [ + 0.367500075871136, + -0.0949999999998379, + 0.257009491282551 + ], + [ + 0.367500072622605, + -0.0250000000005118, + 0.257009489406873 + ], + [ + 0.319999979143341, + -0.145000047593655, + -0.00047089969056744 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389601, + 0.0, + 0.0, + -0.785717559069481 + ], + [ + 0.422660213029796, + -0.543907766699757, + -0.451847697043686, + -0.5668830076141 + ], + [ + -0.0496342733400788, + -0.117306641260982, + -0.697309939636649, + -0.705361211656838 + ], + [ + -0.0399656666425004, + -0.662695786584578, + 0.122507852928617, + -0.737718690222559 + ], + [ + 0.700899927566355, + -0.653736720589979, + -0.0934732082696803, + -0.269500187431309 + ], + [ + -0.258819045107417, + -0.00000000000115974491377584, + -0.965925826287756, + 0.000000000000574242856411324 + ], + [ + 0.68301414587487, + -0.683011257904666, + -0.183013108424383, + -0.183012295366061 + ], + [ + -0.683014155683271, + -0.683011248096213, + 0.183013071823601, + -0.183012331967035 + ], + [ + 0.999999999744665, + -0.000020675883203433, + 0.00000912016102254308, + -0.0000000000387874069216377 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.755038844205061 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.687757220628697 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.634182753788012 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.700643982805176 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351689, + -1.52279357026778, + 0.128680437902668, + 1.15423985864603, + -0.258438877834017, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000615907135545966, + "qpos": [ + -0.236909978466779, + 1.51825894351122, + -1.52279357025621, + 0.128680437904231, + 1.15423985863006, + -0.258438877833745, + 0.034999999999986, + -0.0349999999999702, + 0.319999979143341, + -0.145000047593655, + -0.00047089969056744, + 0.999999999744665, + -0.000020675883203433, + 0.00000912016102254308, + -0.0000000000387874069216377 + ], + "shoe_position": [ + 0.319999979143341, + -0.145000047593655, + -0.00047089969056744 + ], + "tcp_position": [ + 0.360000000000497, + -0.0600000000001414, + 0.269999999999665 + ], + "tcp_quaternion": [ + 0.258819045107417, + 0.00000000000115974491377584, + 0.965925826287756, + -0.000000000000574242856411324 + ], + "time": 0.14 + } + }, + { + "compute_ms": 0.884749984834343, + "request": { + "jaw": 0.035, + "sequence": 8, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.472, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921772887, + -0.00323661231563207, + 0.407697219259966 + ], + [ + 0.254171566395441, + -0.0613690849665322, + 0.452576386922372 + ], + [ + 0.254171566395441, + -0.0613690849665322, + 0.452576386922372 + ], + [ + 0.299984999999391, + -0.0599999999999436, + 0.373949029215142 + ], + [ + 0.367500075871204, + -0.0949999999998773, + 0.257009491282469 + ], + [ + 0.367500072622694, + -0.0250000000005597, + 0.257009489406785 + ], + [ + 0.319999978533233, + -0.145000048961191, + -0.00027411815176362 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.61858541638957, + 0.0, + 0.0, + -0.785717559069506 + ], + [ + 0.422660213029594, + -0.543907766699632, + -0.451847697043836, + -0.56688300761425 + ], + [ + -0.0496342733397926, + -0.11730664126132, + -0.697309939636592, + -0.705361211656858 + ], + [ + -0.0399656666424503, + -0.662695786584886, + 0.12250785292876, + -0.737718690222261 + ], + [ + 0.700899927566237, + -0.653736720589868, + -0.0934732082699766, + -0.269500187431784 + ], + [ + -0.258819045107957, + -0.00000000000129718869535448, + -0.965925826287612, + 0.000000000000651806679853329 + ], + [ + 0.683014145874713, + -0.683011257904618, + -0.183013108424667, + -0.183012295366539 + ], + [ + -0.683014155683224, + -0.683011248096056, + 0.18301307182408, + -0.183012331967319 + ], + [ + 0.99999999966491, + -0.0000236805503741275, + 0.000010460046997144, + -0.0000000000669904946928956 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.779004484712179 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.709690782320164 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.654093246421538 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.722896606893088 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351686, + -1.52279357026774, + 0.128680437902671, + 1.15423985864599, + -0.258438877834021, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000727397267748568, + "qpos": [ + -0.236909978466858, + 1.51825894351058, + -1.52279357025468, + 0.128680437904402, + 1.15423985862806, + -0.258438877833762, + 0.0349999999999881, + -0.0349999999999597, + 0.319999978533233, + -0.145000048961191, + -0.00027411815176362, + 0.99999999966491, + -0.0000236805503741275, + 0.000010460046997144, + -0.0000000000669904946928956 + ], + "shoe_position": [ + 0.319999978533233, + -0.145000048961191, + -0.00027411815176362 + ], + "tcp_position": [ + 0.360000000000561, + -0.0600000000001753, + 0.269999999999571 + ], + "tcp_quaternion": [ + 0.258819045107957, + 0.00000000000129718869535448, + 0.965925826287612, + -0.000000000000651806679853329 + ], + "time": 0.16 + } + }, + { + "compute_ms": 0.731999985873699, + "request": { + "jaw": 0.035, + "sequence": 9, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.211, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921779157, + -0.00323661231578216, + 0.407697219259935 + ], + [ + 0.254171566395988, + -0.0613690849666393, + 0.452576386922821 + ], + [ + 0.254171566395988, + -0.0613690849666393, + 0.452576386922821 + ], + [ + 0.299984999999622, + -0.0599999999999942, + 0.373949029215408 + ], + [ + 0.367500075871, + -0.0949999999998522, + 0.257009491282459 + ], + [ + 0.367500072622423, + -0.0250000000005685, + 0.257009489406786 + ], + [ + 0.319999977850444, + -0.14500005051048, + -0.00018560741773546 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389607, + 0.0, + 0.0, + -0.785717559069477 + ], + [ + 0.422660213030263, + -0.543907766700123, + -0.451847697043246, + -0.566883007613752 + ], + [ + -0.0496342733404438, + -0.117306641260611, + -0.697309939636712, + -0.705361211656812 + ], + [ + -0.039965666642682, + -0.662695786584226, + 0.122507852928391, + -0.737718690222903 + ], + [ + 0.700899927566615, + -0.653736720590281, + -0.0934732082687978, + -0.269500187430206 + ], + [ + -0.258819045106021, + -0.000000000000859418047396221, + -0.96592582628813, + 0.000000000000448879532465654 + ], + [ + 0.683014145875223, + -0.683011257904842, + -0.183013108423608, + -0.183012295364861 + ], + [ + -0.683014155683447, + -0.683011248096566, + 0.183013071822402, + -0.18301233196626 + ], + [ + 0.999999999498026, + -0.0000289846153688824, + 0.0000128000382424534, + -0.0000000000440255866055562 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.790874072336489 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.720493003936428 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.663892364067503 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.733822810296942 + } + ], + "ctrl": [ + -0.236909978466382, + 1.51825894351685, + -1.52279357026771, + 0.128680437902674, + 1.15423985864597, + -0.258438877834025, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000571585172726724, + "qpos": [ + -0.236909978466765, + 1.51825894351285, + -1.52279357025889, + 0.128680437903777, + 1.154239858634, + -0.258438877833941, + 0.0349999999999958, + -0.0349999999999179, + 0.319999977850444, + -0.14500005051048, + -0.00018560741773546, + 0.999999999498026, + -0.0000289846153688824, + 0.0000128000382424534, + -0.0000000000440255866055562 + ], + "shoe_position": [ + 0.319999977850444, + -0.14500005051048, + -0.00018560741773546 + ], + "tcp_position": [ + 0.360000000000376, + -0.0600000000001517, + 0.269999999999597 + ], + "tcp_quaternion": [ + 0.258819045106021, + 0.000000000000859418047396221, + 0.96592582628813, + -0.000000000000448879532465654 + ], + "time": 0.18 + } + }, + { + "compute_ms": 0.653958995826542, + "request": { + "jaw": 0.035, + "sequence": 10, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.236, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921786055, + -0.0032366123159467, + 0.4076972192599 + ], + [ + 0.254171566396585, + -0.0613690849667448, + 0.452576386923365 + ], + [ + 0.254171566396585, + -0.0613690849667448, + 0.452576386923365 + ], + [ + 0.299984999999879, + -0.0600000000000363, + 0.373949029215755 + ], + [ + 0.36750007587079, + -0.094999999999799, + 0.257009491282507 + ], + [ + 0.367500072622139, + -0.0250000000005476, + 0.257009489406848 + ], + [ + 0.319999977506339, + -0.145000051295894, + -0.0001449766853654 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389663, + 0.0, + 0.0, + -0.785717559069433 + ], + [ + 0.422660213031009, + -0.543907766700653, + -0.451847697042607, + -0.566883007613195 + ], + [ + -0.0496342733412162, + -0.117306641259748, + -0.697309939636857, + -0.705361211656758 + ], + [ + -0.0399656666429217, + -0.662695786583429, + 0.122507852927963, + -0.737718690223678 + ], + [ + 0.700899927567029, + -0.653736720590725, + -0.0934732082675559, + -0.269500187428485 + ], + [ + -0.25881904510394, + -0.00000000000037133473452305, + -0.965925826288688, + 0.000000000000220014087935744 + ], + [ + 0.683014145875779, + -0.683011257905074, + -0.183013108422482, + -0.183012295363045 + ], + [ + -0.683014155683679, + -0.683011248097122, + 0.183013071820585, + -0.183012331965134 + ], + [ + 0.999999999329792, + -0.0000334955834305781, + 0.0000147804904165049, + 0.0000000000108259228875565 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.79596401184993 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.725129606429863 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.668130160879401 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.738525758358819 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351689, + -1.52279357026779, + 0.128680437902668, + 1.15423985864604, + -0.258438877834017, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000381414575263911, + "qpos": [ + -0.236909978466622, + 1.51825894351534, + -1.52279357026371, + 0.128680437903099, + 1.15423985864064, + -0.258438877834093, + 0.0349999999999944, + -0.0349999999998871, + 0.319999977506339, + -0.145000051295894, + -0.0001449766853654, + 0.999999999329792, + -0.0000334955834305781, + 0.0000147804904165049, + 0.0000000000108259228875565 + ], + "shoe_position": [ + 0.319999977506339, + -0.145000051295894, + -0.0001449766853654 + ], + "tcp_position": [ + 0.360000000000184, + -0.0600000000001104, + 0.269999999999685 + ], + "tcp_quaternion": [ + 0.25881904510394, + 0.00000000000037133473452305, + 0.965925826288688, + -0.000000000000220014087935744 + ], + "time": 0.2 + } + }, + { + "compute_ms": 0.621207989752293, + "request": { + "jaw": 0.035, + "sequence": 11, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.664, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921790425, + -0.00323661231605048, + 0.407697219259879 + ], + [ + 0.254171566396959, + -0.0613690849668032, + 0.452576386923736 + ], + [ + 0.254171566396959, + -0.0613690849668032, + 0.452576386923736 + ], + [ + 0.299985000000045, + -0.0600000000000546, + 0.373949029216004 + ], + [ + 0.36750007587067, + -0.0949999999997508, + 0.257009491282575 + ], + [ + 0.367500072621971, + -0.0250000000005094, + 0.257009489406923 + ], + [ + 0.319999977362165, + -0.145000051625384, + -0.00012580624067256 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.61858541638971, + 0.0, + 0.0, + -0.785717559069396 + ], + [ + 0.42266021303149, + -0.543907766700983, + -0.451847697042211, + -0.566883007612837 + ], + [ + -0.049634273341733, + -0.117306641259154, + -0.697309939636957, + -0.705361211656721 + ], + [ + -0.0399656666430647, + -0.662695786582887, + 0.122507852927675, + -0.737718690224204 + ], + [ + 0.700899927567284, + -0.653736720591001, + -0.0934732082668119, + -0.26950018742741 + ], + [ + -0.258819045102663, + -0.0000000000000595567910767891, + -0.96592582628903, + 0.0000000000000767628421910059 + ], + [ + 0.683014145876122, + -0.683011257905215, + -0.183013108421799, + -0.183012295361921 + ], + [ + -0.68301415568382, + -0.683011248097465, + 0.183013071819462, + -0.183012331964451 + ], + [ + 0.999999999201933, + -0.0000365546213866387, + 0.0000161213015759638, + 0.0000000000635531010219754 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.798175938991946 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.727148627383276 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.669996199790539 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.740583477705936 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351694, + -1.52279357026789, + 0.12868043790266, + 1.15423985864613, + -0.258438877834009, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000248428501894792, + "qpos": [ + -0.236909978466502, + 1.51825894351692, + -1.52279357026687, + 0.12868043790267, + 1.15423985864486, + -0.258438877834159, + 0.0349999999999871, + -0.0349999999998844, + 0.319999977362165, + -0.145000051625384, + -0.00012580624067256, + 0.999999999201933, + -0.0000365546213866387, + 0.0000161213015759638, + 0.0000000000635531010219754 + ], + "shoe_position": [ + 0.319999977362165, + -0.145000051625384, + -0.00012580624067256 + ], + "tcp_position": [ + 0.360000000000075, + -0.0600000000000761, + 0.269999999999776 + ], + "tcp_quaternion": [ + 0.258819045102663, + 0.0000000000000595567910767891, + 0.96592582628903, + -0.0000000000000767628421910059 + ], + "time": 0.22 + } + }, + { + "compute_ms": 0.70637502358295, + "request": { + "jaw": 0.035, + "sequence": 12, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 13.84, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921794504, + -0.00323661231614732, + 0.407697219259858 + ], + [ + 0.254171566397307, + -0.0613690849668552, + 0.452576386924095 + ], + [ + 0.254171566397307, + -0.0613690849668552, + 0.452576386924095 + ], + [ + 0.299985000000195, + -0.0600000000000685, + 0.37394902921625 + ], + [ + 0.367500075870551, + -0.094999999999707, + 0.257009491282647 + ], + [ + 0.367500072621807, + -0.0250000000004578, + 0.257009489407003 + ], + [ + 0.319999977302701, + -0.145000051760798, + -0.00011657938647395 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389757, + 0.0, + 0.0, + -0.785717559069359 + ], + [ + 0.422660213031941, + -0.543907766701288, + -0.451847697041843, + -0.5668830076125 + ], + [ + -0.0496342733422317, + -0.117306641258578, + -0.697309939637054, + -0.705361211656686 + ], + [ + -0.0399656666431993, + -0.662695786582362, + 0.122507852927397, + -0.737718690224714 + ], + [ + 0.700899927567526, + -0.653736720591262, + -0.0934732082661122, + -0.26950018742639 + ], + [ + -0.258819045101456, + 0.000000000000233851499731469, + -0.965925826289354, + -0.000000000000060234917207357 + ], + [ + 0.683014145876448, + -0.683011257905346, + -0.183013108421152, + -0.18301229536086 + ], + [ + -0.683014155683952, + -0.683011248097791, + 0.1830130718184, + -0.183012331963805 + ], + [ + 0.999999999117836, + -0.0000384340171535085, + 0.0000169456488647593, + 0.000000000101920966974517 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.799176756133333 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728063667632774 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.670852164288071 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.741520809972892 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351697, + -1.52279357026795, + 0.128680437902655, + 1.15423985864619, + -0.258438877834003, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000139267046200057, + "qpos": [ + -0.236909978466383, + 1.51825894351839, + -1.52279357026988, + 0.128680437902262, + 1.15423985864889, + -0.258438877834206, + 0.0349999999999856, + -0.0349999999998937, + 0.319999977302701, + -0.145000051760798, + -0.00011657938647395, + 0.999999999117836, + -0.0000384340171535085, + 0.0000169456488647593, + 0.000000000101920966974517 + ], + "shoe_position": [ + 0.319999977302701, + -0.145000051760798, + -0.00011657938647395 + ], + "tcp_position": [ + 0.359999999999966, + -0.06000000000004, + 0.269999999999871 + ], + "tcp_quaternion": [ + 0.258819045101456, + -0.000000000000233851499731469, + 0.965925826289354, + 0.000000000000060234917207357 + ], + "time": 0.24 + } + }, + { + "compute_ms": 0.635874981526285, + "request": { + "jaw": 0.035, + "sequence": 13, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 11.438, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921797823, + -0.00323661231622591, + 0.407697219259842 + ], + [ + 0.254171566397588, + -0.0613690849668939, + 0.452576386924404 + ], + [ + 0.254171566397588, + -0.0613690849668939, + 0.452576386924404 + ], + [ + 0.299985000000314, + -0.0600000000000754, + 0.373949029216465 + ], + [ + 0.367500075870449, + -0.0949999999996669, + 0.257009491282721 + ], + [ + 0.367500072621669, + -0.0250000000004017, + 0.257009489407084 + ], + [ + 0.319999977277003, + -0.145000051818905, + -0.00011208465487973 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389799, + 0.0, + 0.0, + -0.785717559069325 + ], + [ + 0.422660213032312, + -0.543907766701535, + -0.451847697041546, + -0.566883007612224 + ], + [ + -0.049634273342657, + -0.117306641258082, + -0.697309939637137, + -0.705361211656656 + ], + [ + -0.0399656666433071, + -0.662695786581912, + 0.122507852927162, + -0.737718690225152 + ], + [ + 0.700899927567726, + -0.653736720591475, + -0.0934732082655454, + -0.269500187425549 + ], + [ + -0.258819045100467, + 0.000000000000475878894411547, + -0.965925826289618, + -0.000000000000175927567027624 + ], + [ + 0.683014145876717, + -0.683011257905452, + -0.183013108420624, + -0.183012295359989 + ], + [ + -0.683014155684057, + -0.68301124809806, + 0.18301307181753, + -0.183012331963277 + ], + [ + 0.999999999066756, + -0.0000395316094960786, + 0.0000174281650658696, + 0.000000000126485226156657 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.799645385998936 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728492543604608 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671258061331339 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.741962204486676 + } + ], + "ctrl": [ + -0.236909978466379, + 1.518258943517, + -1.52279357026801, + 0.128680437902651, + 1.15423985864624, + -0.258438877833997, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000132854954220954, + "qpos": [ + -0.236909978466275, + 1.51825894351959, + -1.52279357027239, + 0.128680437901926, + 1.15423985865225, + -0.258438877834231, + 0.0349999999999858, + -0.0349999999999095, + 0.319999977277003, + -0.145000051818905, + -0.00011208465487973, + 0.999999999066756, + -0.0000395316094960786, + 0.0000174281650658696, + 0.000000000126485226156657 + ], + "shoe_position": [ + 0.319999977277003, + -0.145000051818905, + -0.00011208465487973 + ], + "tcp_position": [ + 0.359999999999872, + -0.060000000000005, + 0.269999999999963 + ], + "tcp_quaternion": [ + 0.258819045100467, + -0.000000000000475878894411547, + 0.965925826289618, + 0.000000000000175927567027624 + ], + "time": 0.26 + } + }, + { + "compute_ms": 0.697291980031878, + "request": { + "jaw": 0.035, + "sequence": 14, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.614, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921793593, + -0.00323661231612424, + 0.407697219259863 + ], + [ + 0.254171566397218, + -0.0613690849668138, + 0.452576386924114 + ], + [ + 0.254171566397218, + -0.0613690849668138, + 0.452576386924114 + ], + [ + 0.299985000000167, + -0.0600000000000351, + 0.373949029216304 + ], + [ + 0.36750007587061, + -0.0949999999996733, + 0.257009491282755 + ], + [ + 0.367500072621875, + -0.0250000000003692, + 0.257009489407109 + ], + [ + 0.319999977265223, + -0.145000051845312, + -0.00010988037708905 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389786, + 0.0, + 0.0, + -0.785717559069336 + ], + [ + 0.422660213031869, + -0.543907766701197, + -0.451847697041952, + -0.566883007612555 + ], + [ + -0.0496342733422262, + -0.117306641258532, + -0.697309939637061, + -0.705361211656687 + ], + [ + -0.0399656666431422, + -0.66269578658234, + 0.122507852927397, + -0.737718690224737 + ], + [ + 0.700899927567457, + -0.65373672059119, + -0.0934732082663944, + -0.269500187426645 + ], + [ + -0.258819045101833, + 0.000000000000179456951577058, + -0.965925826289253, + -0.0000000000000298712069253372 + ], + [ + 0.683014145876355, + -0.683011257905297, + -0.183013108421381, + -0.183012295361165 + ], + [ + -0.683014155683902, + -0.683011248097698, + 0.183013071818705, + -0.183012331964033 + ], + [ + 0.999999999037136, + -0.0000401540153568369, + 0.0000177026557726485, + 0.000000000141182848880005 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.799869804924864 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728698007663632 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671454664614431 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742174558632711 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351702, + -1.52279357026806, + 0.128680437902646, + 1.15423985864628, + -0.258438877833992, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0000000000000378398600167904, + "qpos": [ + -0.23690997846631, + 1.51825894351806, + -1.52279357026961, + 0.128680437902346, + 1.15423985864816, + -0.258438877834081, + 0.0349999999999736, + -0.0349999999999606, + 0.319999977265223, + -0.145000051845312, + -0.00010988037708905, + 0.999999999037136, + -0.0000401540153568369, + 0.0000177026557726485, + 0.000000000141182848880005 + ], + "shoe_position": [ + 0.319999977265223, + -0.145000051845312, + -0.00010988037708905 + ], + "tcp_position": [ + 0.360000000000019, + -0.060000000000017, + 0.269999999999972 + ], + "tcp_quaternion": [ + 0.258819045101833, + -0.000000000000179456951577058, + 0.965925826289253, + 0.0000000000000298712069253372 + ], + "time": 0.28 + } + }, + { + "compute_ms": 0.643125007627532, + "request": { + "jaw": 0.035, + "sequence": 15, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 7.306, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.013409592178821, + -0.00323661231599574, + 0.40769721925989 + ], + [ + 0.254171566396755, + -0.06136908496673, + 0.45257638692368 + ], + [ + 0.254171566396755, + -0.06136908496673, + 0.45257638692368 + ], + [ + 0.299984999999973, + -0.0600000000000026, + 0.373949029216026 + ], + [ + 0.367500075870783, + -0.0949999999997245, + 0.257009491282712 + ], + [ + 0.367500072622107, + -0.0250000000003867, + 0.257009489407055 + ], + [ + 0.31999997725956, + -0.145000051857901, + -0.00010879548827287 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389745, + 0.0, + 0.0, + -0.785717559069368 + ], + [ + 0.422660213031288, + -0.543907766700782, + -0.451847697042453, + -0.566883007612987 + ], + [ + -0.0496342733416073, + -0.117306641259216, + -0.697309939636946, + -0.70536121165673 + ], + [ + -0.0399656666429562, + -0.662695786582978, + 0.122507852927727, + -0.73771869022412 + ], + [ + 0.700899927567125, + -0.653736720590846, + -0.0934732082673787, + -0.269500187428002 + ], + [ + -0.258819045103475, + -0.000000000000204979517674509, + -0.965925826288812, + 0.000000000000158262677084066 + ], + [ + 0.68301414587591, + -0.683011257905118, + -0.18301310842227, + -0.183012295362598 + ], + [ + -0.683014155683724, + -0.683011248097253, + 0.183013071820139, + -0.183012331964923 + ], + [ + 0.999999999020446, + -0.0000405002879919886, + 0.000017855936258336, + 0.000000000149639091665203 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.799978688411803 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728797699809641 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671551056276406 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742277989809903 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351699, + -1.522793570268, + 0.128680437902651, + 1.15423985864623, + -0.258438877833996, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000021147049210284, + "qpos": [ + -0.236909978466414, + 1.51825894351612, + -1.52279357026581, + 0.128680437902863, + 1.1542398586429, + -0.258438877833953, + 0.0349999999999814, + -0.0349999999999866, + 0.31999997725956, + -0.145000051857901, + -0.00010879548827287, + 0.999999999020446, + -0.0000405002879919886, + 0.000017855936258336, + 0.000000000149639091665203 + ], + "shoe_position": [ + 0.31999997725956, + -0.145000051857901, + -0.00010879548827287 + ], + "tcp_position": [ + 0.360000000000178, + -0.060000000000052, + 0.269999999999898 + ], + "tcp_quaternion": [ + 0.258819045103475, + 0.000000000000204979517674509, + 0.965925826288812, + -0.000000000000158262677084066 + ], + "time": 0.3 + } + }, + { + "compute_ms": 0.670791981974617, + "request": { + "jaw": 0.035, + "sequence": 16, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.858, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921783227, + -0.00323661231587711, + 0.407697219259914 + ], + [ + 0.25417156639633, + -0.0613690849666592, + 0.452576386923251 + ], + [ + 0.25417156639633, + -0.0613690849666592, + 0.452576386923251 + ], + [ + 0.299984999999793, + -0.0599999999999795, + 0.373949029215739 + ], + [ + 0.367500075870939, + -0.0949999999997718, + 0.257009491282641 + ], + [ + 0.367500072622318, + -0.0250000000004657, + 0.257009489406973 + ], + [ + 0.31999997725675, + -0.145000051864096, + -0.0001082605309953 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389698, + 0.0, + 0.0, + -0.785717559069405 + ], + [ + 0.422660213030745, + -0.543907766700402, + -0.45184769704291, + -0.566883007613393 + ], + [ + -0.0496342733410026, + -0.117306641259897, + -0.697309939636832, + -0.705361211656773 + ], + [ + -0.0399656666427883, + -0.662695786583607, + 0.122507852928049, + -0.73771869022351 + ], + [ + 0.700899927566821, + -0.653736720590528, + -0.0934732082682638, + -0.269500187429256 + ], + [ + -0.258819045104976, + -0.000000000000563987771815956, + -0.96592582628841, + 0.00000000000033237177077936 + ], + [ + 0.683014145875503, + -0.683011257904957, + -0.183013108423078, + -0.183012295363913 + ], + [ + -0.683014155683562, + -0.683011248096846, + 0.183013071821454, + -0.18301233196573 + ], + [ + 0.999999999011219, + -0.0000406903413693242, + 0.0000179404035248699, + 0.000000000154386357730381 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800031894682538 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728846407831271 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671598627023623 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742328706526299 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351696, + -1.52279357026792, + 0.128680437902656, + 1.15423985864616, + -0.258438877834003, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000390440830497541, + "qpos": [ + -0.236909978466533, + 1.51825894351432, + -1.52279357026217, + 0.128680437903346, + 1.15423985863796, + -0.258438877833863, + 0.0349999999999813, + -0.0349999999999549, + 0.31999997725675, + -0.145000051864096, + -0.0001082605309953, + 0.999999999011219, + -0.0000406903413693242, + 0.0000179404035248699, + 0.000000000154386357730381 + ], + "shoe_position": [ + 0.31999997725675, + -0.145000051864096, + -0.0001082605309953 + ], + "tcp_position": [ + 0.360000000000321, + -0.0600000000000916, + 0.269999999999798 + ], + "tcp_quaternion": [ + 0.258819045104976, + 0.000000000000563987771815956, + 0.96592582628841, + -0.00000000000033237177077936 + ], + "time": 0.32 + } + }, + { + "compute_ms": 0.621666986262426, + "request": { + "jaw": 0.035, + "sequence": 17, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.17, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.01340959217792, + -0.00323661231578147, + 0.407697219259935 + ], + [ + 0.254171566395989, + -0.0613690849666074, + 0.452576386922881 + ], + [ + 0.254171566395989, + -0.0613690849666074, + 0.452576386922881 + ], + [ + 0.29998499999965, + -0.0599999999999673, + 0.373949029215483 + ], + [ + 0.367500075871067, + -0.0949999999998166, + 0.257009491282558 + ], + [ + 0.367500072622491, + -0.0250000000005275, + 0.257009489406882 + ], + [ + 0.319999977255332, + -0.145000051867202, + -0.00010799648660486 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389654, + 0.0, + 0.0, + -0.78571755906944 + ], + [ + 0.4226602130303, + -0.543907766700099, + -0.451847697043274, + -0.566883007613724 + ], + [ + -0.0496342733404865, + -0.117306641260486, + -0.697309939636733, + -0.705361211656809 + ], + [ + -0.0399656666426569, + -0.662695786584148, + 0.122507852928323, + -0.737718690222986 + ], + [ + 0.700899927566573, + -0.653736720590273, + -0.0934732082689669, + -0.269500187430278 + ], + [ + -0.258819045106187, + -0.00000000000085869462789612, + -0.965925826288086, + 0.000000000000477666097063718 + ], + [ + 0.683014145875171, + -0.68301125790483, + -0.183013108423725, + -0.183012295364977 + ], + [ + -0.683014155683436, + -0.683011248096514, + 0.183013071822518, + -0.183012331966378 + ], + [ + 0.999999999006185, + -0.0000407935812653698, + 0.0000179864797825888, + 0.000000000157007576061746 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80005799210955 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728870293211043 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671622184951757 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74235366284922 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351692, + -1.52279357026785, + 0.128680437902661, + 1.1542398586461, + -0.25843887783401, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000551862835509862, + "qpos": [ + -0.236909978466646, + 1.51825894351286, + -1.52279357025914, + 0.128680437903737, + 1.15423985863388, + -0.25843887783381, + 0.0349999999999797, + -0.0349999999999395, + 0.319999977255332, + -0.145000051867202, + -0.00010799648660486, + 0.999999999006185, + -0.0000407935812653698, + 0.0000179864797825888, + 0.000000000157007576061746 + ], + "shoe_position": [ + 0.319999977255332, + -0.145000051867202, + -0.00010799648660486 + ], + "tcp_position": [ + 0.360000000000439, + -0.0600000000001314, + 0.269999999999692 + ], + "tcp_quaternion": [ + 0.258819045106187, + 0.00000000000085869462789612, + 0.965925826288086, + -0.000000000000477666097063718 + ], + "time": 0.34 + } + }, + { + "compute_ms": 0.802875001681969, + "request": { + "jaw": 0.035, + "sequence": 18, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.753, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921776121, + -0.00323661231570858, + 0.40769721925995 + ], + [ + 0.254171566395731, + -0.0613690849665718, + 0.452576386922578 + ], + [ + 0.254171566395731, + -0.0613690849665718, + 0.452576386922578 + ], + [ + 0.299984999999545, + -0.059999999999963, + 0.373949029215269 + ], + [ + 0.36750007587117, + -0.0949999999998585, + 0.257009491282478 + ], + [ + 0.36750007262263, + -0.025000000000574, + 0.257009489406794 + ], + [ + 0.319999977254609, + -0.145000051868775, + -0.00010786609286318 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389615, + 0.0, + 0.0, + -0.78571755906947 + ], + [ + 0.422660213029958, + -0.54390776669987, + -0.45184769704355, + -0.56688300761398 + ], + [ + -0.0496342733400684, + -0.117306641260968, + -0.697309939636651, + -0.705361211656839 + ], + [ + -0.039965666642558, + -0.66269578658459, + 0.122507852928542, + -0.737718690222558 + ], + [ + 0.700899927566379, + -0.653736720590076, + -0.0934732082695023, + -0.269500187431073 + ], + [ + -0.25881904510712, + -0.00000000000108746681920129, + -0.965925826287836, + 0.000000000000593534214885636 + ], + [ + 0.683014145874912, + -0.683011257904736, + -0.183013108424223, + -0.183012295365799 + ], + [ + -0.683014155683341, + -0.683011248096255, + 0.18301307182334, + -0.183012331966876 + ], + [ + 0.999999999003466, + -0.0000408492010054254, + 0.0000180114095159242, + 0.000000000158437628293713 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800070817706514 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728882028396308 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671633872086232 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742365965554643 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351689, + -1.5227935702678, + 0.128680437902666, + 1.15423985864605, + -0.258438877834015, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000069225358600452, + "qpos": [ + -0.236909978466744, + 1.51825894351175, + -1.52279357025675, + 0.12868043790404, + 1.15423985863066, + -0.258438877833787, + 0.0349999999999798, + -0.0349999999999348, + 0.319999977254609, + -0.145000051868775, + -0.00010786609286318, + 0.999999999003466, + -0.0000408492010054254, + 0.0000180114095159242, + 0.000000000158437628293713 + ], + "shoe_position": [ + 0.319999977254609, + -0.145000051868775, + -0.00010786609286318 + ], + "tcp_position": [ + 0.360000000000535, + -0.0600000000001681, + 0.269999999999594 + ], + "tcp_quaternion": [ + 0.25881904510712, + 0.00000000000108746681920129, + 0.965925826287836, + -0.000000000000593534214885636 + ], + "time": 0.36 + } + }, + { + "compute_ms": 0.552707992028445, + "request": { + "jaw": 0.035, + "sequence": 19, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.773, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921775862, + -0.00323661231570298, + 0.407697219259951 + ], + [ + 0.254171566395718, + -0.0613690849665815, + 0.452576386922492 + ], + [ + 0.254171566395718, + -0.0613690849665815, + 0.452576386922492 + ], + [ + 0.299984999999542, + -0.059999999999978, + 0.373949029215189 + ], + [ + 0.36750007587118, + -0.0949999999998884, + 0.257009491282408 + ], + [ + 0.367500072622644, + -0.0250000000006038, + 0.257009489406722 + ], + [ + 0.319999977254239, + -0.145000051869575, + -0.00010780168254848 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389596, + 0.0, + 0.0, + -0.785717559069485 + ], + [ + 0.422660213029917, + -0.54390776669986, + -0.451847697043562, + -0.566883007614009 + ], + [ + -0.0496342733399613, + -0.117306641261108, + -0.697309939636628, + -0.705361211656846 + ], + [ + -0.039965666642562, + -0.662695786584714, + 0.122507852928588, + -0.737718690222438 + ], + [ + 0.700899927566357, + -0.653736720590065, + -0.0934732082695123, + -0.269500187431152 + ], + [ + -0.258819045107181, + -0.00000000000111713496927851, + -0.965925826287819, + 0.00000000000061545616803641 + ], + [ + 0.683014145874885, + -0.683011257904739, + -0.183013108424246, + -0.183012295365864 + ], + [ + -0.683014155683345, + -0.683011248096228, + 0.183013071823404, + -0.183012331966898 + ], + [ + 0.999999999002008, + -0.0000408789613798793, + 0.0000180248066644642, + 0.000000000159210689774272 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800077127132282 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728887799690374 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671639675415794 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742372036070524 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351687, + -1.52279357026775, + 0.12868043790267, + 1.154239858646, + -0.25843887783402, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000749485319091468, + "qpos": [ + -0.236909978466793, + 1.51825894351166, + -1.5227935702563, + 0.128680437904061, + 1.15423985863018, + -0.258438877833832, + 0.0349999999999869, + -0.0349999999999278, + 0.319999977254239, + -0.145000051869575, + -0.00010780168254848, + 0.999999999002008, + -0.0000408789613798793, + 0.0000180248066644642, + 0.000000000159210689774272 + ], + "shoe_position": [ + 0.319999977254239, + -0.145000051869575, + -0.00010780168254848 + ], + "tcp_position": [ + 0.360000000000545, + -0.0600000000001901, + 0.269999999999522 + ], + "tcp_quaternion": [ + 0.258819045107181, + 0.00000000000111713496927851, + 0.965925826287819, + -0.00000000000061545616803641 + ], + "time": 0.38 + } + }, + { + "compute_ms": 0.649250025162473, + "request": { + "jaw": 0.035, + "sequence": 20, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 17.105, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.013409592178283, + -0.00323661231586962, + 0.407697219259916 + ], + [ + 0.254171566396323, + -0.0613690849666962, + 0.452576386923015 + ], + [ + 0.254171566396323, + -0.0613690849666962, + 0.452576386923015 + ], + [ + 0.299984999999796, + -0.0600000000000283, + 0.373949029215508 + ], + [ + 0.36750007587095, + -0.0949999999998506, + 0.25700949128242 + ], + [ + 0.367500072622339, + -0.0250000000005959, + 0.257009489406747 + ], + [ + 0.319999977254049, + -0.145000051869982, + -0.00010776986103712 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389642, + 0.0, + 0.0, + -0.785717559069449 + ], + [ + 0.422660213030664, + -0.543907766700402, + -0.451847697042909, + -0.566883007613453 + ], + [ + -0.0496342733407142, + -0.117306641260281, + -0.697309939636767, + -0.705361211656793 + ], + [ + -0.0399656666428142, + -0.662695786583945, + 0.12250785292817, + -0.737718690223185 + ], + [ + 0.700899927566782, + -0.653736720590522, + -0.0934732082682105, + -0.26950018742939 + ], + [ + -0.25881904510503, + -0.000000000000626729006717581, + -0.965925826288396, + 0.000000000000382235674618712 + ], + [ + 0.683014145875458, + -0.683011257904982, + -0.183013108423072, + -0.183012295363996 + ], + [ + -0.683014155683587, + -0.6830112480968, + 0.183013071821536, + -0.183012331965724 + ], + [ + 0.999999999001232, + -0.0000408947932154871, + 0.0000180319649397399, + 0.000000000159625537983101 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800080232566969 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728890639412782 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671642558467287 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742375032868761 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351687, + -1.52279357026774, + 0.128680437902671, + 1.154239858646, + -0.258438877834021, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000564617329862405, + "qpos": [ + -0.236909978466675, + 1.51825894351418, + -1.52279357026107, + 0.12868043790337, + 1.15423985863689, + -0.258438877834014, + 0.0349999999999939, + -0.0349999999998909, + 0.319999977254049, + -0.145000051869982, + -0.00010776986103712, + 0.999999999001232, + -0.0000408947932154871, + 0.0000180319649397399, + 0.000000000159625537983101 + ], + "shoe_position": [ + 0.319999977254049, + -0.145000051869982, + -0.00010776986103712 + ], + "tcp_position": [ + 0.360000000000336, + -0.0600000000001558, + 0.269999999999574 + ], + "tcp_quaternion": [ + 0.25881904510503, + 0.000000000000626729006717581, + 0.965925826288396, + -0.000000000000382235674618712 + ], + "time": 0.4 + } + }, + { + "compute_ms": 0.659291981719434, + "request": { + "jaw": 0.035, + "sequence": 21, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.007, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921788529, + -0.00323661231600531, + 0.407697219259888 + ], + [ + 0.254171566396814, + -0.0613690849667793, + 0.452576386923481 + ], + [ + 0.254171566396814, + -0.0613690849667793, + 0.452576386923481 + ], + [ + 0.299985000000008, + -0.0600000000000583, + 0.373949029215812 + ], + [ + 0.367500075870781, + -0.094999999999797, + 0.25700949128248 + ], + [ + 0.367500072622109, + -0.0250000000005645, + 0.257009489406819 + ], + [ + 0.319999977253951, + -0.14500005187019, + -0.00010775413835396 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389694, + 0.0, + 0.0, + -0.785717559069409 + ], + [ + 0.422660213031284, + -0.543907766700838, + -0.451847697042385, + -0.56688300761299 + ], + [ + -0.0496342733413714, + -0.117306641259541, + -0.697309939636892, + -0.705361211656747 + ], + [ + -0.0399656666430062, + -0.662695786583263, + 0.122507852927809, + -0.737718690223848 + ], + [ + 0.700899927567124, + -0.653736720590884, + -0.0934732082672024, + -0.269500187427973 + ], + [ + -0.258819045103328, + -0.000000000000221347235535791, + -0.965925826288852, + 0.000000000000189825253296283 + ], + [ + 0.683014145875916, + -0.683011257905169, + -0.183013108422154, + -0.183012295362505 + ], + [ + -0.683014155683774, + -0.683011248097259, + 0.183013071820046, + -0.183012331964807 + ], + [ + 0.99999999900082, + -0.000040903173496631, + 0.0000180357707938844, + 0.000000000159846812622102 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008176142642 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728892037046065 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671643991103739 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742376512643552 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351691, + -1.52279357026784, + 0.128680437902663, + 1.15423985864608, + -0.258438877834012, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000397154640169434, + "qpos": [ + -0.236909978466544, + 1.51825894351623, + -1.52279357026512, + 0.128680437902818, + 1.1542398586424, + -0.258438877834126, + 0.0349999999999887, + -0.0349999999998738, + 0.319999977253951, + -0.14500005187019, + -0.00010775413835396, + 0.99999999900082, + -0.000040903173496631, + 0.0000180357707938844, + 0.000000000159846812622102 + ], + "shoe_position": [ + 0.319999977253951, + -0.14500005187019, + -0.00010775413835396 + ], + "tcp_position": [ + 0.360000000000182, + -0.0600000000001161, + 0.269999999999667 + ], + "tcp_quaternion": [ + 0.258819045103328, + 0.000000000000221347235535791, + 0.965925826288852, + -0.000000000000189825253296283 + ], + "time": 0.42 + } + }, + { + "compute_ms": 0.58562497724779, + "request": { + "jaw": 0.035, + "sequence": 22, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.974, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921793003, + -0.00323661231611159, + 0.407697219259866 + ], + [ + 0.254171566397196, + -0.0613690849668386, + 0.45257638692387 + ], + [ + 0.254171566397196, + -0.0613690849668386, + 0.45257638692387 + ], + [ + 0.299985000000174, + -0.0600000000000755, + 0.373949029216076 + ], + [ + 0.367500075870651, + -0.094999999999748, + 0.257009491282554 + ], + [ + 0.367500072621929, + -0.025000000000516, + 0.257009489406902 + ], + [ + 0.319999977253901, + -0.145000051870296, + -0.00010774636944759 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389742, + 0.0, + 0.0, + -0.785717559069371 + ], + [ + 0.422660213031777, + -0.543907766701175, + -0.451847697041979, + -0.566883007612623 + ], + [ + -0.0496342733419134, + -0.117306641258919, + -0.697309939636996, + -0.705361211656709 + ], + [ + -0.0399656666431528, + -0.662695786582694, + 0.122507852927512, + -0.7377186902244 + ], + [ + 0.700899927567391, + -0.653736720591167, + -0.0934732082664308, + -0.269500187426858 + ], + [ + -0.258819045102004, + 0.000000000000100103801732444, + -0.965925826289207, + 0.0000000000000374826196860277 + ], + [ + 0.683014145876275, + -0.683011257905312, + -0.183013108421445, + -0.183012295361342 + ], + [ + -0.683014155683917, + -0.683011248097618, + 0.183013071818882, + -0.183012331964098 + ], + [ + 0.999999999000603, + -0.0000409075902150867, + 0.0000180377855403264, + 0.000000000159964233675969 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800082514211531 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728892725020626 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671644703101839 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377243427575 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351695, + -1.52279357026792, + 0.128680437902657, + 1.15423985864616, + -0.258438877834006, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000254954988847379, + "qpos": [ + -0.236909978466422, + 1.51825894351785, + -1.5227935702684, + 0.12868043790238, + 1.1542398586468, + -0.25843887783419, + 0.0349999999999848, + -0.0349999999998773, + 0.319999977253901, + -0.145000051870296, + -0.00010774636944759, + 0.999999999000603, + -0.0000409075902150867, + 0.0000180377855403264, + 0.000000000159964233675969 + ], + "shoe_position": [ + 0.319999977253901, + -0.145000051870296, + -0.00010774636944759 + ], + "tcp_position": [ + 0.360000000000062, + -0.0600000000000779, + 0.269999999999765 + ], + "tcp_quaternion": [ + 0.258819045102004, + -0.000000000000100103801732444, + 0.965925826289207, + -0.0000000000000374826196860277 + ], + "time": 0.44 + } + }, + { + "compute_ms": 0.569083000300452, + "request": { + "jaw": 0.035, + "sequence": 23, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 7.457, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921797191, + -0.00323661231621097, + 0.407697219259845 + ], + [ + 0.254171566397552, + -0.0613690849668913, + 0.452576386924248 + ], + [ + 0.254171566397552, + -0.0613690849668913, + 0.452576386924248 + ], + [ + 0.299985000000325, + -0.0600000000000879, + 0.373949029216335 + ], + [ + 0.367500075870521, + -0.0949999999997011, + 0.257009491282634 + ], + [ + 0.367500072621753, + -0.0250000000004567, + 0.257009489406991 + ], + [ + 0.319999977253876, + -0.14500005187035, + -0.00010774253048428 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.61858541638979, + 0.0, + 0.0, + -0.785717559069332 + ], + [ + 0.42266021303224, + -0.543907766701489, + -0.451847697041602, + -0.566883007612277 + ], + [ + -0.0496342733424378, + -0.117306641258315, + -0.697309939637098, + -0.705361211656672 + ], + [ + -0.0399656666432902, + -0.662695786582142, + 0.122507852927225, + -0.737718690224936 + ], + [ + 0.700899927567645, + -0.653736720591436, + -0.0934732082657046, + -0.269500187425799 + ], + [ + -0.258819045100751, + 0.000000000000403637307021533, + -0.965925826289543, + -0.000000000000109265430006134 + ], + [ + 0.683014145876616, + -0.683011257905445, + -0.183013108420774, + -0.183012295360241 + ], + [ + -0.683014155684051, + -0.683011248097959, + 0.183013071817782, + -0.183012331963427 + ], + [ + 0.999999999000489, + -0.0000409099091156751, + 0.0000180388480651222, + 0.000000000160026269246632 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800082884897003 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893063698505 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164505698199 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377604348554 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351698, + -1.52279357026798, + 0.128680437902653, + 1.15423985864621, + -0.258438877833999, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000147558664871895, + "qpos": [ + -0.236909978466298, + 1.51825894351936, + -1.52279357027152, + 0.128680437901964, + 1.154239858651, + -0.258438877834237, + 0.0349999999999849, + -0.0349999999998895, + 0.319999977253876, + -0.14500005187035, + -0.00010774253048428, + 0.999999999000489, + -0.0000409099091156751, + 0.0000180388480651222, + 0.000000000160026269246632 + ], + "shoe_position": [ + 0.319999977253876, + -0.14500005187035, + -0.00010774253048428 + ], + "tcp_position": [ + 0.359999999999944, + -0.0600000000000375, + 0.269999999999869 + ], + "tcp_quaternion": [ + 0.258819045100751, + -0.000000000000403637307021532, + 0.965925826289543, + 0.000000000000109265430006134 + ], + "time": 0.46 + } + }, + { + "compute_ms": 0.597250007558614, + "request": { + "jaw": 0.035, + "sequence": 24, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.154, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921799828, + -0.00323661231627333, + 0.407697219259832 + ], + [ + 0.254171566397772, + -0.0613690849669188, + 0.452576386924512 + ], + [ + 0.254171566397772, + -0.0613690849669188, + 0.452576386924512 + ], + [ + 0.299985000000417, + -0.060000000000089, + 0.373949029216525 + ], + [ + 0.367500075870438, + -0.0949999999996627, + 0.25700949128271 + ], + [ + 0.36750007262164, + -0.0250000000003977, + 0.257009489407073 + ], + [ + 0.319999977253863, + -0.145000051870378, + -0.00010774063340412 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389828, + 0.0, + 0.0, + -0.785717559069303 + ], + [ + 0.422660213032537, + -0.543907766701682, + -0.451847697041369, + -0.566883007612056 + ], + [ + -0.0496342733427985, + -0.117306641257891, + -0.697309939637169, + -0.705361211656647 + ], + [ + -0.0399656666433724, + -0.662695786581758, + 0.122507852927031, + -0.737718690225309 + ], + [ + 0.700899927567808, + -0.653736720591604, + -0.0934732082652605, + -0.269500187425124 + ], + [ + -0.258819045099965, + 0.000000000000598972556404624, + -0.965925826289754, + -0.000000000000206316511470989 + ], + [ + 0.683014145876834, + -0.683011257905526, + -0.183013108420356, + -0.183012295359547 + ], + [ + -0.683014155684131, + -0.683011248098177, + 0.183013071817088, + -0.183012331963009 + ], + [ + 0.99999999900043, + -0.0000409111224882169, + 0.0000180394065294874, + 0.00000000016005891745774 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083067436828 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893230432213 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645232877894 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377782607771 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351701, + -1.52279357026804, + 0.128680437902647, + 1.15423985864627, + -0.258438877833993, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000139332757545082, + "qpos": [ + -0.236909978466202, + 1.51825894352031, + -1.52279357027359, + 0.1286804379017, + 1.15423985865375, + -0.258438877834242, + 0.0349999999999844, + -0.0349999999999107, + 0.319999977253863, + -0.145000051870378, + -0.00010774063340412, + 0.99999999900043, + -0.0000409111224882169, + 0.0000180394065294874, + 0.00000000016005891745774 + ], + "shoe_position": [ + 0.319999977253863, + -0.145000051870378, + -0.00010774063340412 + ], + "tcp_position": [ + 0.359999999999866, + -0.060000000000004, + 0.269999999999961 + ], + "tcp_quaternion": [ + 0.258819045099965, + -0.000000000000598972556404624, + 0.965925826289753, + 0.000000000000206316511470989 + ], + "time": 0.48 + } + }, + { + "compute_ms": 0.567750015761703, + "request": { + "jaw": 0.035, + "sequence": 25, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.578, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921794452, + -0.00323661231614441, + 0.407697219259859 + ], + [ + 0.254171566397303, + -0.0613690849668229, + 0.452576386924128 + ], + [ + 0.254171566397303, + -0.0613690849668229, + 0.452576386924128 + ], + [ + 0.299985000000225, + -0.060000000000043, + 0.373949029216303 + ], + [ + 0.36750007587063, + -0.0949999999996815, + 0.257009491282732 + ], + [ + 0.36750007262189, + -0.0250000000003673, + 0.257009489407084 + ], + [ + 0.319999977253856, + -0.145000051870392, + -0.00010773969589934 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389803, + 0.0, + 0.0, + -0.785717559069323 + ], + [ + 0.422660213031969, + -0.543907766701258, + -0.45184769704188, + -0.56688300761248 + ], + [ + -0.0496342733422378, + -0.117306641258491, + -0.697309939637068, + -0.705361211656686 + ], + [ + -0.0399656666431687, + -0.662695786582322, + 0.12250785292734, + -0.737718690224761 + ], + [ + 0.700899927567473, + -0.653736720591245, + -0.0934732082663061, + -0.269500187426501 + ], + [ + -0.258819045101666, + 0.000000000000221714600691946, + -0.965925826289297, + -0.0000000000000245785072976201 + ], + [ + 0.683014145876383, + -0.683011257905332, + -0.183013108421293, + -0.183012295361017 + ], + [ + -0.683014155683937, + -0.683011248097726, + 0.183013071818558, + -0.183012331963945 + ], + [ + 0.999999999000398, + -0.0000409117554736978, + 0.0000180396991783074, + 0.0000000001600760411951 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083157328712 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893312519445 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645320310055 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377870652263 + } + ], + "ctrl": [ + -0.236909978466378, + 1.51825894351703, + -1.52279357026808, + 0.128680437902644, + 1.1542398586463, + -0.258438877833989, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0000000000000687893608749595, + "qpos": [ + -0.236909978466267, + 1.51825894351837, + -1.52279357026999, + 0.128680437902235, + 1.15423985864857, + -0.258438877834074, + 0.0349999999999754, + -0.0349999999999688, + 0.319999977253856, + -0.145000051870392, + -0.00010773969589934, + 0.999999999000398, + -0.0000409117554736978, + 0.0000180396991783074, + 0.0000000001600760411951 + ], + "shoe_position": [ + 0.319999977253856, + -0.145000051870392, + -0.00010773969589934 + ], + "tcp_position": [ + 0.360000000000041, + -0.0600000000000235, + 0.26999999999995 + ], + "tcp_quaternion": [ + 0.258819045101666, + -0.000000000000221714600691946, + 0.965925826289297, + 0.0000000000000245785072976201 + ], + "time": 0.5 + } + }, + { + "compute_ms": 0.623708998318762, + "request": { + "jaw": 0.035, + "sequence": 26, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.981, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921788796, + -0.00323661231600944, + 0.407697219259887 + ], + [ + 0.254171566396816, + -0.061369084966736, + 0.452576386923674 + ], + [ + 0.254171566396816, + -0.061369084966736, + 0.452576386923674 + ], + [ + 0.299985000000019, + -0.0600000000000096, + 0.37394902921601 + ], + [ + 0.367500075870808, + -0.0949999999997338, + 0.257009491282685 + ], + [ + 0.367500072622129, + -0.0250000000003643, + 0.257009489407026 + ], + [ + 0.319999977253853, + -0.145000051870399, + -0.00010773923258401 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389758, + 0.0, + 0.0, + -0.785717559069358 + ], + [ + 0.422660213031357, + -0.543907766700822, + -0.451847697042404, + -0.566883007612936 + ], + [ + -0.0496342733415904, + -0.11730664125921, + -0.697309939636947, + -0.705361211656732 + ], + [ + -0.0399656666429746, + -0.66269578658299, + 0.12250785292769, + -0.737718690224114 + ], + [ + 0.700899927567127, + -0.653736720590884, + -0.0934732082673318, + -0.269500187427921 + ], + [ + -0.258819045103382, + -0.000000000000181501124827453, + -0.965925826288838, + 0.000000000000170847176924998 + ], + [ + 0.683014145875919, + -0.683011257905145, + -0.183013108422221, + -0.183012295362516 + ], + [ + -0.68301415568375, + -0.683011248097262, + 0.183013071820056, + -0.183012331964874 + ], + [ + 0.999999999000382, + -0.000040912084791138, + 0.000018039852120142, + 0.000000000160084995270463 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083201596807 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893352934233 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645363771041 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377914139265 + } + ], + "ctrl": [ + -0.236909978466378, + 1.518258943517, + -1.52279357026801, + 0.128680437902649, + 1.15423985864624, + -0.258438877833995, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000248762612552606, + "qpos": [ + -0.236909978466381, + 1.51825894351633, + -1.522793570266, + 0.128680437902779, + 1.15423985864306, + -0.258438877833944, + 0.034999999999982, + -0.0350000000000176, + 0.319999977253853, + -0.145000051870399, + -0.00010773923258401, + 0.999999999000382, + -0.000040912084791138, + 0.000018039852120142, + 0.000000000160084995270463 + ], + "shoe_position": [ + 0.319999977253853, + -0.145000051870399, + -0.00010773923258401 + ], + "tcp_position": [ + 0.360000000000204, + -0.0600000000000605, + 0.269999999999871 + ], + "tcp_quaternion": [ + 0.258819045103382, + 0.000000000000181501124827453, + 0.965925826288837, + -0.000000000000170847176924998 + ], + "time": 0.52 + } + }, + { + "compute_ms": 0.676208001095802, + "request": { + "jaw": 0.035, + "sequence": 27, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.889, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921783536, + -0.00323661231588429, + 0.407697219259913 + ], + [ + 0.254171566396366, + -0.061369084966662, + 0.452576386923224 + ], + [ + 0.254171566396366, + -0.061369084966662, + 0.452576386923224 + ], + [ + 0.299984999999827, + -0.0599999999999859, + 0.37394902921571 + ], + [ + 0.367500075870971, + -0.0949999999997844, + 0.257009491282612 + ], + [ + 0.36750007262235, + -0.0250000000004118, + 0.257009489406941 + ], + [ + 0.319999977253851, + -0.145000051870403, + -0.00010773900360541 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389707, + 0.0, + 0.0, + -0.785717559069398 + ], + [ + 0.422660213030783, + -0.543907766700422, + -0.451847697042885, + -0.566883007613364 + ], + [ + -0.0496342733409579, + -0.117306641259925, + -0.697309939636827, + -0.705361211656776 + ], + [ + -0.0399656666427985, + -0.662695786583649, + 0.122507852928031, + -0.737718690223475 + ], + [ + 0.700899927566807, + -0.653736720590549, + -0.093473208268263, + -0.269500187429243 + ], + [ + -0.258819045104964, + -0.000000000000560264133241212, + -0.965925826288414, + 0.000000000000353819725161559 + ], + [ + 0.68301414587549, + -0.683011257904975, + -0.183013108423071, + -0.183012295363902 + ], + [ + -0.68301415568358, + -0.683011248096833, + 0.183013071821442, + -0.183012331965724 + ], + [ + 0.999999999000374, + -0.0000409122557027408, + 0.0000180399318549639, + 0.000000000160089664702358 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083223397336 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893372832535 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645385375296 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377935618666 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351696, + -1.52279357026793, + 0.128680437902655, + 1.15423985864617, + -0.258438877834002, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000435072178573105, + "qpos": [ + -0.23690997846651, + 1.51825894351443, + -1.52279357026218, + 0.12868043790329, + 1.15423985863787, + -0.258438877833851, + 0.0349999999999821, + -0.0350000000000206, + 0.319999977253851, + -0.145000051870403, + -0.00010773900360541, + 0.999999999000374, + -0.0000409122557027408, + 0.0000180399318549639, + 0.000000000160089664702358 + ], + "shoe_position": [ + 0.319999977253851, + -0.145000051870403, + -0.00010773900360541 + ], + "tcp_position": [ + 0.360000000000353, + -0.0600000000001027, + 0.269999999999768 + ], + "tcp_quaternion": [ + 0.258819045104964, + 0.000000000000560264133241212, + 0.965925826288414, + -0.000000000000353819725161559 + ], + "time": 0.54 + } + }, + { + "compute_ms": 0.738125003408641, + "request": { + "jaw": 0.035, + "sequence": 28, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.22, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921780212, + -0.00323661231580542, + 0.40769721925993 + ], + [ + 0.254171566396086, + -0.0613690849666218, + 0.452576386922912 + ], + [ + 0.254171566396086, + -0.0613690849666218, + 0.452576386922912 + ], + [ + 0.299984999999708, + -0.0599999999999781, + 0.373949029215492 + ], + [ + 0.367500075871071, + -0.094999999999827, + 0.257009491282534 + ], + [ + 0.367500072622488, + -0.0250000000004783, + 0.257009489406856 + ], + [ + 0.31999997725385, + -0.145000051870405, + -0.00010773889043626 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389667, + 0.0, + 0.0, + -0.78571755906943 + ], + [ + 0.422660213030413, + -0.543907766700174, + -0.451847697043184, + -0.56688300761364 + ], + [ + -0.0496342733405263, + -0.117306641260424, + -0.697309939636743, + -0.705361211656806 + ], + [ + -0.0399656666426923, + -0.662695786584105, + 0.122507852928261, + -0.737718690223033 + ], + [ + 0.700899927566605, + -0.653736720590339, + -0.0934732082688292, + -0.26950018743008 + ], + [ + -0.258819045105948, + -0.000000000000803695988660536, + -0.96592582628815, + 0.000000000000472060715103934 + ], + [ + 0.68301414587522, + -0.683011257904872, + -0.183013108423596, + -0.18301229536477 + ], + [ + -0.683014155683477, + -0.683011248096563, + 0.183013071822311, + -0.183012331966248 + ], + [ + 0.999999999000369, + -0.0000409123442067239, + 0.0000180399733322414, + 0.000000000160092093802641 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083234133484 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889338262974 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645396114934 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377946228037 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351692, + -1.52279357026785, + 0.128680437902661, + 1.1542398586461, + -0.258438877834009, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000570536778105986, + "qpos": [ + -0.236909978466613, + 1.51825894351323, + -1.52279357025965, + 0.128680437903615, + 1.15423985863451, + -0.258438877833818, + 0.0349999999999846, + -0.0349999999999942, + 0.31999997725385, + -0.145000051870405, + -0.00010773889043626, + 0.999999999000369, + -0.0000409123442067239, + 0.0000180399733322414, + 0.000000000160092093802641 + ], + "shoe_position": [ + 0.31999997725385, + -0.145000051870405, + -0.00010773889043626 + ], + "tcp_position": [ + 0.360000000000446, + -0.0600000000001375, + 0.269999999999671 + ], + "tcp_quaternion": [ + 0.258819045105948, + 0.000000000000803695988660536, + 0.96592582628815, + -0.000000000000472060715103934 + ], + "time": 0.56 + } + }, + { + "compute_ms": 0.938374985707924, + "request": { + "jaw": 0.035, + "sequence": 29, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.3, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921776363, + -0.00323661231571405, + 0.407697219259949 + ], + [ + 0.254171566395761, + -0.0613690849665737, + 0.452576386922552 + ], + [ + 0.254171566395761, + -0.0613690849665737, + 0.452576386922552 + ], + [ + 0.299984999999575, + -0.0599999999999682, + 0.373949029215243 + ], + [ + 0.367500075871201, + -0.0949999999998709, + 0.257009491282455 + ], + [ + 0.367500072622661, + -0.0250000000005384, + 0.257009489406768 + ], + [ + 0.31999997725385, + -0.145000051870405, + -0.00010773883450222 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389622, + 0.0, + 0.0, + -0.785717559069465 + ], + [ + 0.422660213029987, + -0.543907766699886, + -0.451847697043531, + -0.566883007613957 + ], + [ + -0.049634273340027, + -0.117306641260996, + -0.697309939636647, + -0.705361211656841 + ], + [ + -0.0399656666425642, + -0.66269578658463, + 0.122507852928529, + -0.737718690222524 + ], + [ + 0.700899927566365, + -0.65373672059009, + -0.0934732082695111, + -0.269500187431073 + ], + [ + -0.258819045107124, + -0.0000000000010864549048065, + -0.965925826287835, + 0.00000000000061272508504282 + ], + [ + 0.683014145874898, + -0.683011257904748, + -0.183013108424227, + -0.183012295365801 + ], + [ + -0.683014155683354, + -0.683011248096241, + 0.183013071823342, + -0.183012331966879 + ], + [ + 0.999999999000368, + -0.0000409123899444049, + 0.0000180399948649272, + 0.000000000160093354643093 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083239420792 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893387453643 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645401453814 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377951468399 + } + ], + "ctrl": [ + -0.23690997846638, + 1.5182589435169, + -1.5227935702678, + 0.128680437902665, + 1.15423985864605, + -0.258438877834014, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000073311640959883, + "qpos": [ + -0.236909978466725, + 1.51825894351184, + -1.52279357025674, + 0.128680437904, + 1.15423985863054, + -0.258438877833777, + 0.0349999999999819, + -0.0349999999999806, + 0.31999997725385, + -0.145000051870405, + -0.00010773883450222, + 0.999999999000368, + -0.0000409123899444049, + 0.0000180399948649272, + 0.000000000160093354643093 + ], + "shoe_position": [ + 0.31999997725385, + -0.145000051870405, + -0.00010773883450222 + ], + "tcp_position": [ + 0.360000000000566, + -0.0600000000001778, + 0.269999999999569 + ], + "tcp_quaternion": [ + 0.258819045107124, + 0.0000000000010864549048065, + 0.965925826287835, + -0.00000000000061272508504282 + ], + "time": 0.58 + } + }, + { + "compute_ms": 1.13937497371808, + "request": { + "jaw": 0.035, + "sequence": 30, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.312, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921778414, + -0.00323661231576375, + 0.407697219259938 + ], + [ + 0.254171566395946, + -0.0613690849666202, + 0.452576386922655 + ], + [ + 0.254171566395946, + -0.0613690849666202, + 0.452576386922655 + ], + [ + 0.299984999999651, + -0.0599999999999973, + 0.373949029215282 + ], + [ + 0.367500075871125, + -0.0949999999998852, + 0.257009491282398 + ], + [ + 0.367500072622564, + -0.0250000000005706, + 0.257009489406715 + ], + [ + 0.319999977253849, + -0.145000051870406, + -0.00010773880685578 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.61858541638962, + 0.0, + 0.0, + -0.785717559069467 + ], + [ + 0.422660213030196, + -0.543907766700055, + -0.451847697043328, + -0.566883007613802 + ], + [ + -0.0496342733401895, + -0.11730664126084, + -0.697309939636673, + -0.70536121165683 + ], + [ + -0.0399656666426518, + -0.662695786584477, + 0.122507852928431, + -0.737718690222673 + ], + [ + 0.700899927566491, + -0.653736720590232, + -0.09347320826908, + -0.269500187430551 + ], + [ + -0.258819045106454, + -0.000000000000949901071433902, + -0.965925826288014, + 0.000000000000550477492919594 + ], + [ + 0.683014145875069, + -0.683011257904831, + -0.18301310842385, + -0.183012295365231 + ], + [ + -0.683014155683437, + -0.683011248096412, + 0.183013071822772, + -0.183012331966502 + ], + [ + 0.999999999000366, + -0.0000409124135372483, + 0.00001804000602293, + 0.000000000160094007766644 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083242024697 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893389828868 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645404107932 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377954056829 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351687, + -1.52279357026775, + 0.12868043790267, + 1.154239858646, + -0.25843887783402, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000712008357134017, + "qpos": [ + -0.236909978466732, + 1.51825894351258, + -1.52279357025793, + 0.128680437903791, + 1.15423985863239, + -0.258438877833877, + 0.0349999999999929, + -0.0349999999999517, + 0.319999977253849, + -0.145000051870406, + -0.00010773880685578, + 0.999999999000366, + -0.0000409124135372483, + 0.00001804000602293, + 0.000000000160094007766644 + ], + "shoe_position": [ + 0.319999977253849, + -0.145000051870406, + -0.00010773880685578 + ], + "tcp_position": [ + 0.360000000000497, + -0.0600000000001839, + 0.269999999999525 + ], + "tcp_quaternion": [ + 0.258819045106454, + 0.000000000000949901071433902, + 0.965925826288014, + -0.000000000000550477492919594 + ], + "time": 0.6 + } + }, + { + "compute_ms": 0.953666982240975, + "request": { + "jaw": 0.035, + "sequence": 31, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 11.496, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921785585, + -0.00323661231593505, + 0.407697219259903 + ], + [ + 0.254171566396566, + -0.0613690849667349, + 0.45257638692321 + ], + [ + 0.254171566396566, + -0.0613690849667349, + 0.45257638692321 + ], + [ + 0.299984999999911, + -0.0600000000000449, + 0.373949029215629 + ], + [ + 0.367500075870891, + -0.094999999999836, + 0.25700949128243 + ], + [ + 0.367500072622253, + -0.0250000000005656, + 0.257009489406761 + ], + [ + 0.319999977253849, + -0.145000051870406, + -0.00010773879319053 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389671, + 0.0, + 0.0, + -0.785717559069426 + ], + [ + 0.422660213030967, + -0.54390776670061, + -0.451847697042659, + -0.566883007613227 + ], + [ + -0.0496342733409852, + -0.117306641259962, + -0.697309939636821, + -0.705361211656774 + ], + [ + -0.0399656666429062, + -0.662695786583661, + 0.122507852927995, + -0.737718690223464 + ], + [ + 0.700899927566929, + -0.653736720590698, + -0.093473208267754, + -0.26950018742874 + ], + [ + -0.258819045104252, + -0.000000000000442201956084979, + -0.965925826288605, + 0.000000000000306561164594117 + ], + [ + 0.683014145875659, + -0.683011257905076, + -0.183013108422652, + -0.183012295363315 + ], + [ + -0.683014155683681, + -0.683011248097002, + 0.183013071820856, + -0.183012331965304 + ], + [ + 0.999999999000366, + -0.0000409124256864251, + 0.0000180400117951171, + 0.000000000160094345469646 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008324330709 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893390998427 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645405427408 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377955335375 + } + ], + "ctrl": [ + -0.236909978466381, + 1.51825894351688, + -1.52279357026777, + 0.128680437902668, + 1.15423985864603, + -0.258438877834018, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000512640339224557, + "qpos": [ + -0.236909978466601, + 1.51825894351517, + -1.52279357026291, + 0.128680437903089, + 1.15423985863933, + -0.258438877834054, + 0.0349999999999953, + -0.0349999999999052, + 0.319999977253849, + -0.145000051870406, + -0.00010773879319053, + 0.999999999000366, + -0.0000409124256864251, + 0.0000180400117951171, + 0.000000000160094345469646 + ], + "shoe_position": [ + 0.319999977253849, + -0.145000051870406, + -0.00010773879319053 + ], + "tcp_position": [ + 0.360000000000284, + -0.0600000000001435, + 0.269999999999598 + ], + "tcp_quaternion": [ + 0.258819045104252, + 0.000000000000442201956084979, + 0.965925826288605, + -0.000000000000306561164594117 + ], + "time": 0.62 + } + }, + { + "compute_ms": 1.01529201492667, + "request": { + "jaw": 0.035, + "sequence": 32, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.943, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.013409592179029, + -0.00323661231604702, + 0.407697219259879 + ], + [ + 0.25417156639697, + -0.0613690849668007, + 0.452576386923607 + ], + [ + 0.25417156639697, + -0.0613690849668007, + 0.452576386923607 + ], + [ + 0.299985000000087, + -0.0600000000000665, + 0.373949029215895 + ], + [ + 0.367500075870756, + -0.0949999999997835, + 0.257009491282496 + ], + [ + 0.367500072622066, + -0.025000000000538, + 0.257009489406837 + ], + [ + 0.3199999772538, + -0.145000051870471, + -0.00010773878609364 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389717, + 0.0, + 0.0, + -0.78571755906939 + ], + [ + 0.422660213031482, + -0.543907766700968, + -0.451847697042229, + -0.566883007612843 + ], + [ + -0.049634273341543, + -0.117306641259329, + -0.697309939636927, + -0.705361211656735 + ], + [ + -0.0399656666430608, + -0.662695786583079, + 0.122507852927692, + -0.737718690224029 + ], + [ + 0.700899927567211, + -0.653736720590993, + -0.0934732082669356, + -0.269500187427574 + ], + [ + -0.258819045102859, + -0.000000000000105779837480458, + -0.965925826288978, + 0.000000000000146023263512015 + ], + [ + 0.683014145876036, + -0.683011257905227, + -0.183013108421905, + -0.183012295362092 + ], + [ + -0.683014155683832, + -0.683011248097379, + 0.183013071819633, + -0.183012331964557 + ], + [ + 0.999999999000366, + -0.0000409124328043708, + 0.0000180400154408676, + 0.000000000160091907269549 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083243736729 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893391302279 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540576316 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377955699221 + } + ], + "ctrl": [ + -0.23690997846638, + 1.51825894351693, + -1.52279357026787, + 0.12868043790266, + 1.15423985864612, + -0.258438877834009, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000364472464581732, + "qpos": [ + -0.236909978466484, + 1.51825894351687, + -1.52279357026631, + 0.128680437902636, + 1.15423985864391, + -0.258438877834137, + 0.0349999999999865, + -0.034999999999889, + 0.3199999772538, + -0.145000051870471, + -0.00010773878609364, + 0.999999999000366, + -0.0000409124328043708, + 0.0000180400154408676, + 0.000000000160091907269549 + ], + "shoe_position": [ + 0.3199999772538, + -0.145000051870471, + -0.00010773878609364 + ], + "tcp_position": [ + 0.36000000000016, + -0.0600000000001069, + 0.26999999999969 + ], + "tcp_quaternion": [ + 0.258819045102859, + 0.000000000000105779837480458, + 0.965925826288978, + -0.000000000000146023263512015 + ], + "time": 0.64 + } + }, + { + "compute_ms": 0.772416999097914, + "request": { + "jaw": 0.035, + "sequence": 33, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.224, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134095921795601, + -0.00323661231617328, + 0.407697219259853 + ], + [ + 0.254171566397423, + -0.061369084966873, + 0.452576386924069 + ], + [ + 0.254171566397423, + -0.061369084966873, + 0.452576386924069 + ], + [ + 0.299985000000279, + -0.060000000000088, + 0.373949029216204 + ], + [ + 0.36750007587059, + -0.0949999999997292, + 0.257009491282577 + ], + [ + 0.367500072621842, + -0.0250000000004878, + 0.257009489406929 + ], + [ + 0.319999977253607, + -0.1450000518708, + -0.0001077387824627 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389772, + 0.0, + 0.0, + -0.785717559069347 + ], + [ + 0.422660213032064, + -0.54390776670137, + -0.451847697041745, + -0.566883007612409 + ], + [ + -0.0496342733421885, + -0.117306641258594, + -0.697309939637051, + -0.70536121165669 + ], + [ + -0.0399656666432382, + -0.662695786582404, + 0.122507852927341, + -0.737718690224684 + ], + [ + 0.700899927567534, + -0.653736720591333, + -0.0934732082659989, + -0.269500187426234 + ], + [ + -0.258819045101261, + 0.000000000000277206018401804, + -0.965925826289406, + -0.000000000000039124300659497 + ], + [ + 0.68301414587647, + -0.683011257905399, + -0.183013108421045, + -0.183012295360691 + ], + [ + -0.683014155684004, + -0.683011248097813, + 0.183013071818232, + -0.183012331963698 + ], + [ + 0.999999999000366, + -0.0000409124386706141, + 0.0000180400182182914, + 0.000000000160110868992471 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244149817 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893391575464 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406012315 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956004772 + } + ], + "ctrl": [ + -0.236909978466379, + 1.51825894351696, + -1.52279357026794, + 0.128680437902655, + 1.15423985864618, + -0.258438877834003, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.000000000000207813621994814, + "qpos": [ + -0.236909978466346, + 1.51825894351879, + -1.52279357027019, + 0.128680437902115, + 1.15423985864919, + -0.258438877834219, + 0.0349999999999858, + -0.0349999999998856, + 0.319999977253607, + -0.1450000518708, + -0.0001077387824627, + 0.999999999000366, + -0.0000409124386706141, + 0.0000180400182182914, + 0.000000000160110868992471 + ], + "shoe_position": [ + 0.319999977253607, + -0.1450000518708, + -0.0001077387824627 + ], + "tcp_position": [ + 0.360000000000008, + -0.0600000000000617, + 0.269999999999802 + ], + "tcp_quaternion": [ + 0.258819045101261, + -0.000000000000277206018401804, + 0.965925826289406, + 0.000000000000039124300659497 + ], + "time": 0.66 + } + }, + { + "compute_ms": 0.81887497799471, + "request": { + "jaw": 0.035, + "sequence": 34, + "target": [ + 0.36, + -0.06, + 0.27 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 13.728, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.013409592179885, + -0.00323661231625013, + 0.407697219259837 + ], + [ + 0.254171566397696, + -0.06136908496691, + 0.45257638692438 + ], + [ + 0.254171566397696, + -0.06136908496691, + 0.45257638692438 + ], + [ + 0.299985000000395, + -0.060000000000093, + 0.373949029216424 + ], + [ + 0.36750007587049, + -0.0949999999996842, + 0.257009491282658 + ], + [ + 0.367500072621705, + -0.0250000000004319, + 0.257009489407018 + ], + [ + 0.319999977253461, + -0.145000051871059, + -0.00010773878086435 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.618585416389814, + 0.0, + 0.0, + -0.785717559069314 + ], + [ + 0.422660213032427, + -0.54390776670161, + -0.451847697041455, + -0.566883007612138 + ], + [ + -0.049634273342617, + -0.117306641258096, + -0.697309939637135, + -0.705361211656659 + ], + [ + -0.0399656666433406, + -0.66269578658195, + 0.122507852927111, + -0.737718690225124 + ], + [ + 0.700899927567733, + -0.653736720591539, + -0.0934732082654478, + -0.269500187425411 + ], + [ + -0.258819045100297, + 0.000000000000515583602169362, + -0.965925826289664, + -0.000000000000156489497265906 + ], + [ + 0.683014145876735, + -0.683011257905498, + -0.183013108420532, + -0.183012295359841 + ], + [ + -0.683014155684103, + -0.683011248098078, + 0.183013071817381, + -0.183012331963185 + ], + [ + 0.999999999000365, + -0.0000409124409932909, + 0.0000180400191908025, + 0.000000000160128635223741 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244420282 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893391968392 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406557722 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956398074 + } + ], + "ctrl": [ + -0.236909978466379, + 1.518258943517, + -1.52279357026801, + 0.128680437902649, + 1.15423985864624, + -0.258438877833995, + 0.035 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00000000000013144378077744, + "qpos": [ + -0.236909978466238, + 1.51825894351996, + -1.52279357027269, + 0.128680437901795, + 1.15423985865251, + -0.258438877834241, + 0.0349999999999831, + -0.0349999999998993, + 0.319999977253461, + -0.145000051871059, + -0.00010773878086435, + 0.999999999000365, + -0.0000409124409932909, + 0.0000180400191908025, + 0.000000000160128635223741 + ], + "shoe_position": [ + 0.319999977253461, + -0.145000051871059, + -0.00010773878086435 + ], + "tcp_position": [ + 0.359999999999916, + -0.0600000000000247, + 0.269999999999902 + ], + "tcp_quaternion": [ + 0.258819045100297, + -0.000000000000515583602169362, + 0.965925826289664, + 0.000000000000156489497265906 + ], + "time": 0.68 + } + }, + { + "compute_ms": 1.32737500825897, + "request": { + "jaw": 0.025, + "sequence": 35, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.491, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0134613517338132, + -0.00323221159000747, + 0.407694826601637 + ], + [ + 0.254330012146142, + -0.061088073018406, + 0.452358458625333 + ], + [ + 0.254330012146142, + -0.061088073018406, + 0.452358458625333 + ], + [ + 0.300086890979128, + -0.0597926277814518, + 0.373696928425676 + ], + [ + 0.367552753755262, + -0.0948950045110234, + 0.256761975070478 + ], + [ + 0.367486985520675, + -0.0250019171759754, + 0.256658275272236 + ], + [ + 0.319999977253109, + -0.145000051871998, + -0.00010773878012471 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.619051444032466, + 0.0, + 0.0, + -0.785350437474455 + ], + [ + 0.423045500295219, + -0.543678748899564, + -0.452123233195337, + -0.566595538881103 + ], + [ + -0.0489088989843212, + -0.117196333362073, + -0.69732848747666, + -0.705411879401064 + ], + [ + -0.0401155654382611, + -0.663184119589993, + 0.121630435694017, + -0.737416844156748 + ], + [ + 0.700572591025842, + -0.654311572619624, + -0.0937455728363292, + -0.268860890076932 + ], + [ + -0.258479550454247, + 0.0006462275530578, + -0.966016330265922, + 0.00059501805098013 + ], + [ + 0.682657401575657, + -0.683495995917815, + -0.183229999850583, + -0.182315284035764 + ], + [ + -0.683498892182878, + -0.682654501740433, + 0.182316061413504, + -0.183229226350403 + ], + [ + 0.999999999000365, + -0.0000409124468187315, + 0.0000180400203640472, + 0.00000000016037939734039 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244564704 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889339205229 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540659436 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956431515 + } + ], + "ctrl": [ + -0.206909978466379, + 1.548258943517, + -1.49279357026801, + 0.0986804379026495, + 1.12423985864625, + -0.228438877833995, + 0.034 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.040357914455084, + "qpos": [ + -0.235723454063706, + 1.51843208225051, + -1.52209656164482, + 0.127044342534972, + 1.15369723307098, + -0.258406594818924, + 0.0349923108025961, + -0.0349008844056744, + 0.319999977253109, + -0.145000051871998, + -0.00010773878012471, + 0.999999999000365, + -0.0000409124468187315, + 0.0000180400203640472, + 0.00000000016037939734039 + ], + "shoe_position": [ + 0.319999977253109, + -0.145000051871998, + -0.00010773878012471 + ], + "tcp_position": [ + 0.360028877041163, + -0.0598905147782793, + 0.269705824839482 + ], + "tcp_quaternion": [ + 0.258479550454247, + -0.0006462275530578, + 0.966016330265922, + -0.00059501805098013 + ], + "time": 0.700000000000001 + } + }, + { + "compute_ms": 0.896209006896242, + "request": { + "jaw": 0.025, + "sequence": 36, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.215, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0136466925093648, + -0.00319094008386241, + 0.40768646817321 + ], + [ + 0.255097208679839, + -0.0596686600063889, + 0.450950398754747 + ], + [ + 0.255097208679839, + -0.0596686600063889, + 0.450950398754747 + ], + [ + 0.300662270420221, + -0.0586187109708099, + 0.372173947781961 + ], + [ + 0.367961131046186, + -0.0939565224282825, + 0.255252989834499 + ], + [ + 0.367679528992924, + -0.0245247639040498, + 0.254808161858482 + ], + [ + 0.319999977252994, + -0.145000051872409, + -0.00010773877989912 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.621385952032217, + 0.0, + 0.0, + -0.783504625778952 + ], + [ + 0.424899446159385, + -0.542466906148825, + -0.453576515852972, + -0.56520656458807 + ], + [ + -0.044816841804132, + -0.117090119407932, + -0.697346329980331, + -0.705683676083487 + ], + [ + -0.0401656356142205, + -0.665971671466772, + 0.117905344990586, + -0.735504441959469 + ], + [ + 0.699391562660362, + -0.656468223298615, + -0.0952833824224544, + -0.266124014160301 + ], + [ + -0.257337309712902, + 0.00278386605752009, + -0.966314201473275, + 0.00257354824426437 + ], + [ + 0.68146899960559, + -0.685105657243751, + -0.183933847407195, + -0.179996057643358 + ], + [ + -0.685108548466835, + -0.681466092941159, + 0.179996838007292, + -0.183933083746658 + ], + [ + 0.999999999000365, + -0.0000409124465839198, + 0.0000180400198802246, + 0.00000000016058347399303 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244643103 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392100345 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406575895 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956454175 + } + ], + "ctrl": [ + -0.176909978466379, + 1.55149500131963, + -1.46279357026802, + 0.0769768709865763, + 1.09423985864625, + -0.198438877833995, + 0.0329999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0386630287062548, + "qpos": [ + -0.229771326728613, + 1.51903213996727, + -1.51704911917714, + 0.120674447191962, + 1.14895212053166, + -0.256443025927992, + 0.0348606816521935, + -0.0345730728444401, + 0.319999977252994, + -0.145000051872409, + -0.00010773877989912, + 0.999999999000365, + -0.0000409124465839198, + 0.0000180400198802246, + 0.00000000016058347399303 + ], + "shoe_position": [ + 0.319999977252994, + -0.145000051872409, + -0.00010773877989912 + ], + "tcp_position": [ + 0.360359397697849, + -0.0590437284661706, + 0.26804290891781 + ], + "tcp_quaternion": [ + 0.257337309712902, + -0.00278386605752009, + 0.966314201473276, + -0.00257354824426437 + ], + "time": 0.720000000000001 + } + }, + { + "compute_ms": 0.880249979672953, + "request": { + "jaw": 0.025, + "sequence": 37, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.137, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0140786017851163, + -0.00312727518248981, + 0.40766614234522 + ], + [ + 0.256604920441605, + -0.0570194945518654, + 0.44811939618684 + ], + [ + 0.256604920441605, + -0.0570194945518654, + 0.44811939618684 + ], + [ + 0.301787650008257, + -0.0560449433007312, + 0.369122069200317 + ], + [ + 0.368711374383438, + -0.0911775396280798, + 0.252019260514446 + ], + [ + 0.36808394685638, + -0.0224313866905722, + 0.251314710406695 + ], + [ + 0.319999977252788, + -0.14500005187331, + -0.00010773877979111 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.62573255860033, + 0.0, + 0.0, + -0.780037669031109 + ], + [ + 0.428437566550038, + -0.540262898979215, + -0.456199517740401, + -0.562529333962845 + ], + [ + -0.036895087645047, + -0.117161258532171, + -0.697334381411929, + -0.706142161683938 + ], + [ + -0.0386135462021499, + -0.671140274887247, + 0.112403995914488, + -0.731741120326322 + ], + [ + 0.698755816406103, + -0.658887506024481, + -0.0976314049102792, + -0.260913150720167 + ], + [ + -0.255064131240033, + 0.00571904053932041, + -0.966899794853705, + 0.00379054639071012 + ], + [ + 0.681022531705212, + -0.686380282784537, + -0.184401941449732, + -0.176313194923159 + ], + [ + -0.686383172113405, + -0.681019619633006, + 0.176313977273082, + -0.18440119341426 + ], + [ + 0.999999999000365, + -0.0000409124492223767, + 0.000018040019809096, + 0.000000000161144006911726 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244586826 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392109003 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406730943 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956525909 + } + ], + "ctrl": [ + -0.146909978466379, + 1.55253668472325, + -1.45896171330553, + 0.0769010773502466, + 1.06423985864625, + -0.168438877833995, + 0.0319999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0348596917661799, + "qpos": [ + -0.218651460293619, + 1.5204616968028, + -1.50715477972742, + 0.113224545685322, + 1.14074093540634, + -0.251215658147513, + 0.0345399990770099, + -0.0342126270542754, + 0.319999977252788, + -0.14500005187331, + -0.00010773877979111, + 0.999999999000365, + -0.0000409124492223767, + 0.000018040019809096, + 0.000000000161144006911726 + ], + "shoe_position": [ + 0.319999977252788, + -0.14500005187331, + -0.00010773877979111 + ], + "tcp_position": [ + 0.360996800866485, + -0.0565746012231259, + 0.264713272553996 + ], + "tcp_quaternion": [ + 0.255064131240033, + -0.00571904053932041, + 0.966899794853705, + -0.00379054639071012 + ], + "time": 0.740000000000001 + } + }, + { + "compute_ms": 0.868999981321394, + "request": { + "jaw": 0.025, + "sequence": 38, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 17.765, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0152432366802733, + -0.00312995767877938, + 0.407606125331902 + ], + [ + 0.259132762241493, + -0.0532272600986844, + 0.444592770324004 + ], + [ + 0.259132762241493, + -0.0532272600986844, + 0.444592770324004 + ], + [ + 0.303710303960251, + -0.0519822760634501, + 0.365256150397804 + ], + [ + 0.370034684428965, + -0.0862891707913096, + 0.247693861259086 + ], + [ + 0.368868665015488, + -0.0183505965337139, + 0.246927647572954 + ], + [ + 0.319999977252696, + -0.145000051873966, + -0.00010773877977002 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.631978831665463, + 0.0, + 0.0, + -0.774985649110199 + ], + [ + 0.434061063691005, + -0.537501323548445, + -0.459450026862193, + -0.558201570212261 + ], + [ + -0.0262973331507003, + -0.116418802013818, + -0.69745871744331, + -0.706616197287581 + ], + [ + -0.0348781762518547, + -0.677394194871094, + 0.105614248394813, + -0.727163150958769 + ], + [ + 0.699385651362124, + -0.660846229552338, + -0.100547862059534, + -0.253045646061127 + ], + [ + -0.25148791257844, + 0.00972224523328004, + -0.967805984866291, + 0.00329900463044557 + ], + [ + 0.682010877933955, + -0.686673481135355, + -0.184703854826033, + -0.17095373262264 + ], + [ + -0.68667637465742, + -0.682007964617804, + 0.170954516253522, + -0.18470312952884 + ], + [ + 0.999999999000365, + -0.0000409124495164298, + 0.0000180400193378794, + 0.000000000161902083643062 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244649823 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.7288933921615 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406673046 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956484285 + } + ], + "ctrl": [ + -0.12848160612328, + 1.55436568137632, + -1.46107452308925, + 0.0771350158631804, + 1.04507037020467, + -0.15316369526667, + 0.0309999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0291683132607112, + "qpos": [ + -0.202584204200117, + 1.52446509255189, + -1.4972201425598, + 0.106742427263375, + 1.13299056140591, + -0.243380375673666, + 0.0341121431950636, + -0.0338407563525156, + 0.319999977252696, + -0.145000051873966, + -0.00010773877977002, + 0.999999999000365, + -0.0000409124495164298, + 0.0000180400193378794, + 0.000000000161902083643062 + ], + "shoe_position": [ + 0.319999977252696, + -0.145000051873966, + -0.00010773877977002 + ], + "tcp_position": [ + 0.362146568730367, + -0.052161785553483, + 0.260411638686127 + ], + "tcp_quaternion": [ + 0.25148791257844, + -0.00972224523328004, + 0.967805984866291, + -0.00329900463044557 + ], + "time": 0.760000000000001 + } + }, + { + "compute_ms": 0.845542002934963, + "request": { + "jaw": 0.025, + "sequence": 39, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.13, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0170640545262688, + -0.00318535778086486, + 0.407502145888098 + ], + [ + 0.262319538625005, + -0.0489838563315082, + 0.440850269463514 + ], + [ + 0.262319538625005, + -0.0489838563315082, + 0.440850269463514 + ], + [ + 0.306194665736626, + -0.0471590622340944, + 0.361134211986421 + ], + [ + 0.371854582320255, + -0.0800849468170678, + 0.242955557361968 + ], + [ + 0.369997979615227, + -0.0130505920724261, + 0.242309817853847 + ], + [ + 0.31999997725263, + -0.145000051874475, + -0.00010773877977298 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.638920421988263, + 0.0, + 0.0, + -0.769272834803322 + ], + [ + 0.4408102685274, + -0.534812870274988, + -0.462576689629113, + -0.552887246335817 + ], + [ + -0.0147840812694797, + -0.115239247995952, + -0.69765458195394, + -0.706950798104803 + ], + [ + -0.0295320417671374, + -0.683747099686709, + 0.0989753592724396, + -0.72237223121876 + ], + [ + 0.701212514412907, + -0.661804392442047, + -0.103491251897307, + -0.244142410399891 + ], + [ + -0.247385855214474, + 0.0146045305175473, + -0.968806176899188, + 0.00124013311537779 + ], + [ + 0.684173960909993, + -0.685924876935589, + -0.185255545860788, + -0.164600841861302 + ], + [ + -0.685927779634848, + -0.684171050769883, + 0.164601627832868, + -0.185254847516633 + ], + [ + 0.999999999000365, + -0.0000409124482909426, + 0.0000180400189408572, + 0.000000000162526490717192 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244565614 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392105937 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406762131 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956561591 + } + ], + "ctrl": [ + -0.129692965873424, + 1.55646328332012, + -1.46359091835729, + 0.0777987281364722, + 1.04594837401075, + -0.153489525341649, + 0.0299999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0226989549691481, + "qpos": [ + -0.184603940812845, + 1.53078215526878, + -1.48893890014988, + 0.102899686312459, + 1.12627471843458, + -0.235800416344547, + 0.0335915695084482, + -0.0334715997368841, + 0.31999997725263, + -0.145000051874475, + -0.00010773877977298, + 0.999999999000365, + -0.0000409124482909426, + 0.0000180400189408572, + 0.000000000162526490717192 + ], + "shoe_position": [ + 0.31999997725263, + -0.145000051874475, + -0.00010773877977298 + ], + "tcp_position": [ + 0.363733940441084, + -0.0465801561878193, + 0.255796195894061 + ], + "tcp_quaternion": [ + 0.247385855214474, + -0.0146045305175473, + 0.968806176899188, + -0.00124013311537779 + ], + "time": 0.780000000000001 + } + }, + { + "compute_ms": 1.06812501326203, + "request": { + "jaw": 0.025, + "sequence": 40, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.562, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0192099238852189, + -0.0032581241564972, + 0.407364489568063 + ], + [ + 0.265625299245228, + -0.0450664029217339, + 0.437220525957281 + ], + [ + 0.265625299245228, + -0.0450664029217339, + 0.437220525957281 + ], + [ + 0.308767928964618, + -0.0425858448634866, + 0.357123292516511 + ], + [ + 0.373694871116858, + -0.0739606078044331, + 0.238281255230811 + ], + [ + 0.371188051051221, + -0.00795257772165693, + 0.237837921015747 + ], + [ + 0.319999977252561, + -0.145000051875505, + -0.00010773877976253 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.645262798334005, + 0.0, + 0.0, + -0.763960680327311 + ], + [ + 0.447418179481241, + -0.532708715425001, + -0.46499830592191, + -0.547553625382658 + ], + [ + -0.00399106039946396, + -0.11434535228356, + -0.697801648329343, + -0.707094103664348 + ], + [ + -0.0241167050345846, + -0.689628403883043, + 0.0933041945425154, + -0.717722353265365 + ], + [ + 0.703426758297156, + -0.662180713256736, + -0.105744164632088, + -0.235638855770048 + ], + [ + -0.243146387923455, + 0.0192246133094454, + -0.969798122941616, + -0.0013597874089114 + ], + [ + 0.686713791697256, + -0.68478786171983, + -0.185524668441208, + -0.158336193378966 + ], + [ + -0.684790775194693, + -0.686710886381072, + 0.158336980492379, + -0.185523996675714 + ], + [ + 0.999999999000364, + -0.0000409124512429281, + 0.0000180400187426462, + 0.000000000164798971506518 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244640701 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392163765 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406696859 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956493889 + } + ], + "ctrl": [ + -0.130987088613108, + 1.5582183911324, + -1.46583465369685, + 0.0785756772314179, + 1.04664990417119, + -0.154303627857724, + 0.0289999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0170699571643795, + "qpos": [ + -0.168057628440404, + 1.53825469462721, + -1.48242743061978, + 0.1008938559334, + 1.12078446719144, + -0.229306995445775, + 0.0330177931171356, + -0.0330393089049404, + 0.319999977252561, + -0.145000051875505, + -0.00010773877976253, + 0.999999999000364, + -0.0000409124512429281, + 0.0000180400187426462, + 0.000000000164798971506518 + ], + "shoe_position": [ + 0.319999977252561, + -0.145000051875505, + -0.00010773877976253 + ], + "tcp_position": [ + 0.365368500183831, + -0.04114713778169, + 0.251286123433095 + ], + "tcp_quaternion": [ + 0.243146387923455, + -0.0192246133094454, + 0.969798122941616, + 0.0013597874089114 + ], + "time": 0.800000000000001 + } + }, + { + "compute_ms": 0.826000003144145, + "request": { + "jaw": 0.025, + "sequence": 41, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.167, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0213531995985562, + -0.00332548450666127, + 0.407210804677972 + ], + [ + 0.268661884528638, + -0.0418538291406568, + 0.433928463892765 + ], + [ + 0.268661884528638, + -0.0418538291406568, + 0.433928463892765 + ], + [ + 0.311120712421153, + -0.0388132651448533, + 0.353485879543236 + ], + [ + 0.375298595247255, + -0.0687209300063274, + 0.234033714855507 + ], + [ + 0.372306614406947, + -0.00390341804814651, + 0.233790674480803 + ], + [ + 0.319999977252543, + -0.145000051875793, + -0.00010773877978166 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.650411356330452, + 0.0, + 0.0, + -0.759582166428611 + ], + [ + 0.45314184447067, + -0.531302507746911, + -0.46660437767111, + -0.542826370757463 + ], + [ + 0.00522417956102253, + -0.114007017871321, + -0.697857005321354, + -0.707086068274517 + ], + [ + -0.0196035098256916, + -0.694755163443072, + 0.08876963269993, + -0.713478042817033 + ], + [ + 0.705377792822544, + -0.662412455189695, + -0.107211170653644, + -0.228380545339204 + ], + [ + -0.239207938121154, + 0.0228398228071789, + -0.970692650391762, + -0.00369909575162691 + ], + [ + 0.689000456754579, + -0.683766242359494, + -0.185296091760674, + -0.152994950177385 + ], + [ + -0.683769165535868, + -0.68899755577274, + 0.152995736321078, + -0.185295442656166 + ], + [ + 0.999999999000364, + -0.000040912447807947, + 0.000018040018449738, + 0.000000000165445918159946 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244550892 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392096317 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406772984 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956579742 + } + ], + "ctrl": [ + -0.1320488022856, + 1.55932957898952, + -1.46743609307944, + 0.0791711901827281, + 1.04722804632041, + -0.155109950437683, + 0.0279999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0134405676631838, + "qpos": [ + -0.154540349529895, + 1.54573417809178, + -1.47735931183433, + 0.0996166849114629, + 1.1161846662448, + -0.2237631790426, + 0.0323875084179181, + -0.032499476983603, + 0.319999977252543, + -0.145000051875793, + -0.00010773877978166, + 0.999999999000364, + -0.000040912447807947, + 0.000018040018449738, + 0.000000000165445918159946 + ], + "shoe_position": [ + 0.319999977252543, + -0.145000051875793, + -0.00010773877978166 + ], + "tcp_position": [ + 0.366841735377132, + -0.0366397254205448, + 0.247195502623187 + ], + "tcp_quaternion": [ + 0.239207938121154, + -0.0228398228071789, + 0.970692650391762, + 0.00369909575162691 + ], + "time": 0.820000000000001 + } + }, + { + "compute_ms": 0.783625000622123, + "request": { + "jaw": 0.025, + "sequence": 42, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.38, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0232618120720324, + -0.00338577290252418, + 0.407060247336684 + ], + [ + 0.271207972951826, + -0.0394866503508724, + 0.431128488826893 + ], + [ + 0.271207972951826, + -0.0394866503508724, + 0.431128488826893 + ], + [ + 0.313091877348246, + -0.0360429228880373, + 0.350401258192347 + ], + [ + 0.376573025769287, + -0.064657359423297, + 0.230446309713816 + ], + [ + 0.373302088167437, + -0.00118978214406859, + 0.23036849777562 + ], + [ + 0.319999977252519, + -0.14500005187684, + -0.00010773877977308 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.65418770461541, + 0.0, + 0.0, + -0.756332233300962 + ], + [ + 0.457642021070006, + -0.530534099132763, + -0.46747788146327, + -0.539037828497185 + ], + [ + 0.0124869848504474, + -0.114221608648515, + -0.697821914328968, + -0.706995102677059 + ], + [ + -0.0163243507383858, + -0.698969839738705, + 0.085411964113321, + -0.709844683782955 + ], + [ + 0.706819040641112, + -0.662659687586375, + -0.107996093449441, + -0.222768548127344 + ], + [ + -0.235897924469626, + 0.0251604103628882, + -0.971436614832906, + -0.00547962984853443 + ], + [ + 0.690785545253818, + -0.683033273033301, + -0.184596453460765, + -0.149013515385379 + ], + [ + -0.683036203783175, + -0.690782647381689, + 0.149014298560792, + -0.184595821248068 + ], + [ + 0.999999999000364, + -0.0000409124504592543, + 0.0000180400183386767, + 0.000000000169476773959738 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244607001 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392139733 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406725673 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956526317 + } + ], + "ctrl": [ + -0.132770396379636, + 1.55986642875463, + -1.46840341254127, + 0.079473189614099, + 1.04771126454585, + -0.155644648970402, + 0.0269999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0121100237982777, + "qpos": [ + -0.144575827855159, + 1.55240816113012, + -1.47345375846215, + 0.0986043366336465, + 1.11225988419361, + -0.219011857270632, + 0.0316969183085195, + -0.0318549381022924, + 0.319999977252519, + -0.14500005187684, + -0.00010773877977308, + 0.999999999000364, + -0.0000409124504592543, + 0.0000180400183386767, + 0.000000000169476773959738 + ], + "shoe_position": [ + 0.319999977252519, + -0.14500005187684, + -0.00010773877977308 + ], + "tcp_position": [ + 0.368070901418675, + -0.0333402309869764, + 0.243737284570739 + ], + "tcp_quaternion": [ + 0.235897924469626, + -0.0251604103628882, + 0.971436614832906, + 0.00547962984853443 + ], + "time": 0.840000000000001 + } + }, + { + "compute_ms": 0.968125008512288, + "request": { + "jaw": 0.025, + "sequence": 43, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.157, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0248024553504624, + -0.00344300089212336, + 0.406929187350376 + ], + [ + 0.273171486674248, + -0.037932222470847, + 0.428910319490876 + ], + [ + 0.273171486674248, + -0.037932222470847, + 0.428910319490876 + ], + [ + 0.314626008944928, + -0.0342448329661234, + 0.347972490176024 + ], + [ + 0.377524235675962, + -0.0617514527683608, + 0.227646418551572 + ], + [ + 0.374167678622547, + 0.00023187021832465, + 0.227690032271541 + ], + [ + 0.319999977252516, + -0.145000051877006, + -0.0001077387797929 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.656681271900241, + 0.0, + 0.0, + -0.754168222040336 + ], + [ + 0.460868674456368, + -0.530252577822024, + -0.467797182241512, + -0.536281702936834 + ], + [ + 0.0177642390674359, + -0.114822825639777, + -0.697723239337846, + -0.706882190899131 + ], + [ + -0.0142496771017298, + -0.702215866697199, + 0.0831272125879928, + -0.706950981178008 + ], + [ + 0.707711597843653, + -0.662953284016673, + -0.108316332993708, + -0.218871673580406 + ], + [ + -0.233417090433175, + 0.02621681239549, + -0.972000423209318, + -0.00665717075314796 + ], + [ + 0.692016864245232, + -0.682599295921732, + -0.183589222658643, + -0.146512313922576 + ], + [ + -0.682602231895655, + -0.692013968214302, + 0.146513092824692, + -0.183588601057659 + ], + [ + 0.999999999000364, + -0.0000409124463830332, + 0.00001804001817707, + 0.000000000170122614793112 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244360112 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893391920724 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406970627 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956778931 + } + ], + "ctrl": [ + -0.133184190272806, + 1.56003064722779, + -1.46890166993568, + 0.0795339301045311, + 1.04808824812217, + -0.155888421418422, + 0.0259999999999999 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.012244577498813, + "qpos": [ + -0.13797254611274, + 1.5578074278692, + -1.47052649730662, + 0.0976795586061578, + 1.1088718944975, + -0.214897864425852, + 0.0309520307504983, + -0.0311221241446796, + 0.319999977252516, + -0.145000051877006, + -0.0001077387797929, + 0.999999999000364, + -0.0000409124463830332, + 0.00001804001817707, + 0.000000000170122614793112 + ], + "shoe_position": [ + 0.319999977252516, + -0.145000051877006, + -0.0001077387797929 + ], + "tcp_position": [ + 0.369049286777049, + -0.031222423586418, + 0.24103244729428 + ], + "tcp_quaternion": [ + 0.233417090433175, + -0.02621681239549, + 0.972000423209318, + 0.00665717075314796 + ], + "time": 0.860000000000001 + } + }, + { + "compute_ms": 1.10954200499691, + "request": { + "jaw": 0.025, + "sequence": 44, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.858, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0259243982375263, + -0.00349803726229876, + 0.406828273410761 + ], + [ + 0.274549505447222, + -0.0370564854041919, + 0.427303598054714 + ], + [ + 0.274549505447222, + -0.0370564854041919, + 0.427303598054714 + ], + [ + 0.315735478333638, + -0.0332631608901015, + 0.346233672689137 + ], + [ + 0.378208624047228, + -0.0598232308798768, + 0.225674604396464 + ], + [ + 0.374919152977512, + 0.00056798127048124, + 0.225796232684087 + ], + [ + 0.319999977252527, + -0.145000051878054, + -0.00010773877978361 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.65811872881424, + 0.0, + 0.0, + -0.752914164286958 + ], + [ + 0.462945219105149, + -0.530282228405233, + -0.467763570874839, + -0.534490153424444 + ], + [ + 0.0212343857545912, + -0.115586210298816, + -0.697597181752305, + -0.706786460581713 + ], + [ + -0.0131848858725538, + -0.704515781523484, + 0.0817102241318504, + -0.704845452309374 + ], + [ + 0.708103211850101, + -0.663279671233909, + -0.10842483667417, + -0.216550164829278 + ], + [ + -0.231853482239256, + 0.0262292122582869, + -0.972369720212104, + -0.00728823795407201 + ], + [ + 0.692724228194065, + -0.682414194909109, + -0.182492350383617, + -0.145397910270243 + ], + [ + -0.682417133884126, + -0.692721332948446, + 0.145398684518733, + -0.182491733510658 + ], + [ + 0.999999999000364, + -0.0000409124489298216, + 0.0000180400181248119, + 0.000000000176829700090234 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244582913 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392123515 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406742293 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956550729 + } + ], + "ctrl": [ + -0.133374188174979, + 1.5600180711953, + -1.46911705219138, + 0.0794471793760786, + 1.0483546667876, + -0.15591492166253, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0127427791831092, + "qpos": [ + -0.134157342667626, + 1.56174940269972, + -1.46846485498765, + 0.0967642250660531, + 1.10591049289968, + -0.21129747181489, + 0.0301609804768435, + -0.0303198753240977, + 0.319999977252527, + -0.145000051878054, + -0.00010773877978361, + 0.999999999000364, + -0.0000409124489298216, + 0.0000180400181248119, + 0.000000000176829700090234 + ], + "shoe_position": [ + 0.319999977252527, + -0.145000051878054, + -0.00010773877978361 + ], + "tcp_position": [ + 0.369810467521669, + -0.0301020037346436, + 0.239121098591822 + ], + "tcp_quaternion": [ + 0.231853482239256, + -0.0262292122582869, + 0.972369720212104, + 0.00728823795407201 + ], + "time": 0.880000000000001 + } + }, + { + "compute_ms": 0.914832984562963, + "request": { + "jaw": 0.025, + "sequence": 45, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.842, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0266368724611675, + -0.00354729000942821, + 0.406761683874121 + ], + [ + 0.27539481695494, + -0.0366855392595295, + 0.426285868463279 + ], + [ + 0.27539481695494, + -0.0366855392595295, + 0.426285868463279 + ], + [ + 0.316471220672791, + -0.0328939280095718, + 0.345160291645685 + ], + [ + 0.378701650824382, + -0.0586661472489642, + 0.224500824848017 + ], + [ + 0.375579480234555, + 0.00012073762269585, + 0.224662078758303 + ], + [ + 0.319999977252558, + -0.145000051878876, + -0.00010773877978152 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658769816951075, + 0.0, + 0.0, + -0.752344554226484 + ], + [ + 0.464077695679781, + -0.530464886070779, + -0.467556418676843, + -0.533507162437904 + ], + [ + 0.023185319958238, + -0.116304839063254, + -0.697477730404685, + -0.70672515233182 + ], + [ + -0.0128801636389353, + -0.70595024010951, + 0.080923211812772, + -0.703505361503283 + ], + [ + 0.70807635205453, + -0.663611608060946, + -0.108547012997833, + -0.215557554442344 + ], + [ + -0.231203095157608, + 0.0254907345920252, + -0.972542840929332, + -0.00746818563008327 + ], + [ + 0.69297388526522, + -0.682409366992324, + -0.181510274841047, + -0.14546020180341 + ], + [ + -0.682412307026547, + -0.692970990040083, + 0.145460971885303, + -0.181509657703816 + ], + [ + 0.999999999000364, + -0.0000409124496942928, + 0.000018040018073067, + 0.000000000184781136692448 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244648919 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392185419 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406676883 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795648409 + } + ], + "ctrl": [ + -0.133421785202131, + 1.55996303810231, + -1.46919054241513, + 0.0792883651094318, + 1.04851816278841, + -0.155806853843371, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0130049940704038, + "qpos": [ + -0.13242717339314, + 1.56426072779366, + -1.46718553736698, + 0.0958288419571892, + 1.10327508200918, + -0.208119954724852, + 0.0293667516383533, + -0.0295032049183807, + 0.319999977252558, + -0.145000051878876, + -0.00010773877978152, + 0.999999999000364, + -0.0000409124496942928, + 0.000018040018073067, + 0.000000000184781136692448 + ], + "shoe_position": [ + 0.319999977252558, + -0.145000051878876, + -0.00010773877978152 + ], + "tcp_position": [ + 0.370404191455547, + -0.0297355384803908, + 0.237976057086081 + ], + "tcp_quaternion": [ + 0.231203095157608, + -0.0254907345920252, + 0.972542840929332, + 0.00746818563008327 + ], + "time": 0.900000000000001 + } + }, + { + "compute_ms": 0.979249976808205, + "request": { + "jaw": 0.025, + "sequence": 46, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.386, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.026987262750452, + -0.00358189863018252, + 0.406728139470588 + ], + [ + 0.275794570170463, + -0.0366154573848125, + 0.425795390620367 + ], + [ + 0.275794570170463, + -0.0366154573848125, + 0.425795390620367 + ], + [ + 0.31690549385068, + -0.0329091700886461, + 0.344683357845399 + ], + [ + 0.379083897555553, + -0.0581053084378372, + 0.224045503272546 + ], + [ + 0.376171319082434, + -0.00075765062979673, + 0.22420823526415 + ], + [ + 0.319999977252584, + -0.145000051879522, + -0.00010773877978627 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.6589351040429, + 0.0, + 0.0, + -0.752199793047015 + ], + [ + 0.464525575423546, + -0.530652040732842, + -0.467343997143507, + -0.533117238304506 + ], + [ + 0.023983933087582, + -0.116786493805392, + -0.697397243229885, + -0.706698500743882 + ], + [ + -0.013098322967764, + -0.706648194734807, + 0.0804543810028026, + -0.70285407830568 + ], + [ + 0.707690210550413, + -0.663964572775508, + -0.108900127923265, + -0.21556060430525 + ], + [ + -0.231389221067468, + 0.0243523915078178, + -0.97252938840071, + -0.00725107568440397 + ], + [ + 0.692810853299683, + -0.682553374903903, + -0.180836957602241, + -0.146396744235051 + ], + [ + -0.682556314246438, + -0.692807957463573, + 0.146397511460292, + -0.180836336491602 + ], + [ + 0.999999999000364, + -0.0000409124487077292, + 0.0000180400180348933, + 0.000000000191269803707457 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244567591 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392109483 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406756065 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956566563 + } + ], + "ctrl": [ + -0.133386118349091, + 1.5599348053639, + -1.46920499205745, + 0.079100884863178, + 1.04859234974464, + -0.155626155452605, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0128623639222983, + "qpos": [ + -0.131987739111368, + 1.56550090900589, + -1.4666050716953, + 0.094734932378811, + 1.10085805922585, + -0.20527762133461, + 0.028659335197965, + -0.0287624677273231, + 0.319999977252584, + -0.145000051879522, + -0.00010773877978627, + 0.999999999000364, + -0.0000409124487077292, + 0.0000180400180348933, + 0.000000000191269803707457 + ], + "shoe_position": [ + 0.319999977252584, + -0.145000051879522, + -0.00010773877978627 + ], + "tcp_position": [ + 0.370884482012079, + -0.0298635852580861, + 0.237519025392332 + ], + "tcp_quaternion": [ + 0.231389221067468, + -0.0243523915078178, + 0.97252938840071, + 0.00725107568440397 + ], + "time": 0.920000000000001 + } + }, + { + "compute_ms": 0.961458979872987, + "request": { + "jaw": 0.025, + "sequence": 47, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 7.685, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0270686089344971, + -0.0035914835532546, + 0.406720269160027 + ], + [ + 0.275885106074853, + -0.0366150918752767, + 0.425684560346273 + ], + [ + 0.275885106074853, + -0.0366150918752767, + 0.425684560346273 + ], + [ + 0.317143749122618, + -0.0330380185833699, + 0.344641760587309 + ], + [ + 0.379442433643941, + -0.0578252399813746, + 0.224123542760915 + ], + [ + 0.376729703406543, + -0.00171570541269478, + 0.22425758286083 + ], + [ + 0.319999977252637, + -0.145000051880302, + -0.00010773877978679 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658951696996184, + 0.0, + 0.0, + -0.752185257118118 + ], + [ + 0.464614274373176, + -0.530709179433485, + -0.467279110238236, + -0.533039938511823 + ], + [ + 0.0241444685385084, + -0.116914146614537, + -0.697375854415246, + -0.706693034236926 + ], + [ + -0.0135206250849922, + -0.706843510412424, + 0.0800119986119101, + -0.702700166901417 + ], + [ + 0.707072074814716, + -0.664311402740853, + -0.109648784427899, + -0.216140198202874 + ], + [ + -0.232245152297895, + 0.0232142640370853, + -0.972356638177459, + -0.0067716594401909 + ], + [ + 0.692349702433424, + -0.682770221542915, + -0.180637417705829, + -0.147806757082207 + ], + [ + -0.68277315892895, + -0.692346805677315, + 0.147807523460858, + -0.180636790613011 + ], + [ + 0.999999999000364, + -0.0000409124487035514, + 0.0000180400180115011, + 0.000000000202609473986384 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008324461645 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392157697 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406705943 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956517282 + } + ], + "ctrl": [ + -0.133305657816334, + 1.55995567283869, + -1.46919767146548, + 0.0788966071220449, + 1.04859494895837, + -0.15540830436784, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0124084165343455, + "qpos": [ + -0.131943620211671, + 1.56578957011782, + -1.46648352480243, + 0.0934811455969582, + 1.09844005444472, + -0.202732446102191, + 0.0280542371509905, + -0.0281209953065611, + 0.319999977252637, + -0.145000051880302, + -0.00010773877978679, + 0.999999999000364, + -0.0000409124487035514, + 0.0000180400180115011, + 0.000000000202609473986384 + ], + "shoe_position": [ + 0.319999977252637, + -0.145000051880302, + -0.00010773877978679 + ], + "tcp_position": [ + 0.371317589141087, + -0.0301630916404907, + 0.237571079480264 + ], + "tcp_quaternion": [ + 0.232245152297895, + -0.0232142640370853, + 0.972356638177459, + 0.0067716594401909 + ], + "time": 0.940000000000001 + } + }, + { + "compute_ms": 1.0681249841582, + "request": { + "jaw": 0.025, + "sequence": 48, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.5, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0270447677468838, + -0.00358908151454126, + 0.406722573136857 + ], + [ + 0.27585843125259, + -0.0366193263948097, + 0.425712467081236 + ], + [ + 0.27585843125259, + -0.0366193263948097, + 0.425712467081236 + ], + [ + 0.31731079393633, + -0.033170655848882, + 0.344763008950552 + ], + [ + 0.379810169040675, + -0.057640648402365, + 0.224401966777127 + ], + [ + 0.377272066525144, + -0.00256955904947875, + 0.224503330454203 + ], + [ + 0.319999977252666, + -0.145000051880721, + -0.00010773877979616 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658941280387601, + 0.0, + 0.0, + -0.752194382457852 + ], + [ + 0.464584393953025, + -0.530695927884979, + -0.467294160167127, + -0.533065981746444 + ], + [ + 0.0240986391583217, + -0.11688823647548, + -0.697380197721194, + -0.706694598529462 + ], + [ + -0.0139290878488209, + -0.706851992476992, + 0.0796174008323535, + -0.702728475819578 + ], + [ + 0.706429183763491, + -0.664583400121616, + -0.110567932428615, + -0.216936499760876 + ], + [ + -0.233379525925924, + 0.0221746491547074, + -0.972112636464228, + -0.00626927747226729 + ], + [ + 0.691821929856889, + -0.682952925133899, + -0.180704425504298, + -0.1493439989531 + ], + [ + -0.682955860280782, + -0.691819032325638, + 0.149344765616028, + -0.180703791889512 + ], + [ + 0.999999999000364, + -0.000040912446543837, + 0.0000180400179892726, + 0.000000000208847021357132 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244554782 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889339210521 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406760179 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956579702 + } + ], + "ctrl": [ + -0.133207082983201, + 1.56001203623901, + -1.46917346561015, + 0.0786752107632699, + 1.04854304069713, + -0.155178039097771, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0118480723648487, + "qpos": [ + -0.131971316966688, + 1.56570515636084, + -1.46650111510033, + 0.0923483293392468, + 1.09597863503791, + -0.200470336406765, + 0.0275427021101332, + -0.0275869371190751, + 0.319999977252666, + -0.145000051880721, + -0.00010773877979616, + 0.999999999000364, + -0.000040912446543837, + 0.0000180400179892726, + 0.000000000208847021357132 + ], + "shoe_position": [ + 0.319999977252666, + -0.145000051880721, + -0.00010773877979616 + ], + "tcp_position": [ + 0.371740117998256, + -0.0304652869654027, + 0.237817552939714 + ], + "tcp_quaternion": [ + 0.233379525925924, + -0.0221746491547074, + 0.972112636464228, + 0.00626927747226729 + ], + "time": 0.960000000000001 + } + }, + { + "compute_ms": 1.35725000291131, + "request": { + "jaw": 0.025, + "sequence": 49, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.443, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0269807836531874, + -0.00358164185500651, + 0.40672875890731 + ], + [ + 0.275787955026171, + -0.0366207473525798, + 0.425788173307942 + ], + [ + 0.275787955026171, + -0.0366207473525798, + 0.425788173307942 + ], + [ + 0.317440680789158, + -0.0332895549219671, + 0.344936704145325 + ], + [ + 0.380162688565561, + -0.0575100021061868, + 0.224738066347003 + ], + [ + 0.377774545408347, + -0.00330007529026111, + 0.224809522587212 + ], + [ + 0.31999997725277, + -0.145000051881756, + -0.00010773877979018 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658926837956679, + 0.0, + 0.0, + -0.752207034147124 + ], + [ + 0.464513650963064, + -0.530651858991395, + -0.467344203504202, + -0.533127628311425 + ], + [ + 0.0239871997696767, + -0.116805045076292, + -0.697394136371052, + -0.706698389871669 + ], + [ + -0.0142920530039423, + -0.706793011238356, + 0.0792706021539099, + -0.702819712386972 + ], + [ + 0.705824681331962, + -0.664797533418952, + -0.111502449101061, + -0.21776813960535 + ], + [ + -0.234558473611896, + 0.0212418821343839, + -0.971852568654253, + -0.00580428293383363 + ], + [ + 0.691309233656273, + -0.683097831340842, + -0.18087850467621, + -0.150837206368695 + ], + [ + -0.683100764312538, + -0.691306335510242, + 0.150837973770165, + -0.180877864726277 + ], + [ + 0.999999999000364, + -0.0000409124480520429, + 0.0000180400179905004, + 0.000000000229860818801532 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244606976 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392150751 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406713302 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956527542 + } + ], + "ctrl": [ + -0.133108926842175, + 1.5600754563243, + -1.46913902240529, + 0.0784616394341537, + 1.04846695114491, + -0.154960858187169, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0112838648260422, + "qpos": [ + -0.132009717438165, + 1.56547815291621, + -1.46655109236789, + 0.0913594055622909, + 1.0936259221721, + -0.198458635003504, + 0.0271156943776851, + -0.0271468571581082, + 0.31999997725277, + -0.145000051881756, + -0.00010773877979018, + 0.999999999000364, + -0.0000409124480520429, + 0.0000180400179905004, + 0.000000000229860818801532 + ], + "shoe_position": [ + 0.31999997725277, + -0.145000051881756, + -0.00010773877979018 + ], + "tcp_position": [ + 0.372134261451322, + -0.0307393085448768, + 0.238122335365804 + ], + "tcp_quaternion": [ + 0.234558473611896, + -0.0212418821343839, + 0.971852568654253, + 0.00580428293383363 + ], + "time": 0.980000000000001 + } + }, + { + "compute_ms": 1.1246670037508, + "request": { + "jaw": 0.025, + "sequence": 50, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.666, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0268950470866854, + -0.00357128813959594, + 0.406737029340953 + ], + [ + 0.275694155036244, + -0.0366188629023668, + 0.425886806932428 + ], + [ + 0.275694155036244, + -0.0366188629023668, + 0.425886806932428 + ], + [ + 0.317537969633905, + -0.0333935640773269, + 0.345129769470323 + ], + [ + 0.380479595720113, + -0.0574188301838147, + 0.225086406771844 + ], + [ + 0.378219687713241, + -0.00392204437741171, + 0.22513119015481 + ], + [ + 0.319999977252799, + -0.145000051882048, + -0.00010773877980164 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658912665859424, + 0.0, + 0.0, + -0.752219448545455 + ], + [ + 0.464422471689458, + -0.530589541730004, + -0.467414952913088, + -0.533207059021029 + ], + [ + 0.0238466683276803, + -0.116692641346743, + -0.697412953317846, + -0.706703145889184 + ], + [ + -0.0146147425065898, + -0.706700285476082, + 0.0789613348100776, + -0.70294112371841 + ], + [ + 0.7052710720081, + -0.664974816726092, + -0.112390134737116, + -0.218562727203013 + ], + [ + -0.235686261170383, + 0.0204142573016059, + -0.971599852777429, + -0.00538242298866168 + ], + [ + 0.690832236766145, + -0.683217435307481, + -0.181090754695356, + -0.152219891277123 + ], + [ + -0.683220366255448, + -0.690829338112682, + 0.152220659579082, + -0.181090108879185 + ], + [ + 0.999999999000364, + -0.000040912445347473, + 0.000018040017975026, + 0.000000000235835094803104 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244549193 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392104251 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406761057 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795658545 + } + ], + "ctrl": [ + -0.133019099723492, + 1.56013505430935, + -1.46910297521887, + 0.0782683279286409, + 1.04838779279201, + -0.154766510196684, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0107538118372946, + "qpos": [ + -0.132047398501129, + 1.56517380525418, + -1.46660677494566, + 0.0904863812718638, + 1.09148435825789, + -0.196674402048765, + 0.0267607748800867, + -0.0267837419392729, + 0.319999977252799, + -0.145000051882048, + -0.00010773877980164, + 0.999999999000364, + -0.000040912445347473, + 0.000018040017975026, + 0.000000000235835094803104 + ], + "shoe_position": [ + 0.319999977252799, + -0.145000051882048, + -0.00010773877980164 + ], + "tcp_position": [ + 0.372483588642297, + -0.0309831404953199, + 0.238441580292983 + ], + "tcp_quaternion": [ + 0.235686261170383, + -0.0204142573016059, + 0.971599852777429, + 0.00538242298866168 + ], + "time": 1.0 + } + }, + { + "compute_ms": 1.07575001311488, + "request": { + "jaw": 0.025, + "sequence": 51, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.363, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.02680274271386, + -0.00355998350448843, + 0.406745905655857 + ], + [ + 0.275593385556548, + -0.0366153080016616, + 0.425992044289583 + ], + [ + 0.275593385556548, + -0.0366153080016616, + 0.425992044289583 + ], + [ + 0.317610904485959, + -0.0334868459314428, + 0.345321434397616 + ], + [ + 0.380755587492961, + -0.057363040670067, + 0.22542044120547 + ], + [ + 0.378605336580308, + -0.00445795032268956, + 0.225440328587496 + ], + [ + 0.319999977252934, + -0.145000051883083, + -0.00010773877979663 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658899482330769, + 0.0, + 0.0, + -0.752230996559065 + ], + [ + 0.464325746340559, + -0.530521136146728, + -0.467492592563331, + -0.533291291214551 + ], + [ + 0.0236986169586874, + -0.116570980748269, + -0.697433298923551, + -0.706708126141369 + ], + [ + -0.0149124983140102, + -0.706596431335259, + 0.0786747223570677, + -0.703071396573882 + ], + [ + 0.704763616731872, + -0.665138115390077, + -0.11320086317837, + -0.219283142448342 + ], + [ + -0.236713281297684, + 0.0196872640543816, + -0.971367244908331, + -0.00499095286844979 + ], + [ + 0.690390947220525, + -0.683329768851869, + -0.181302908355993, + -0.153460165575489 + ], + [ + -0.683332697927601, + -0.690388048090475, + 0.153460934777528, + -0.181302257277779 + ], + [ + 0.999999999000364, + -0.0000409124465857415, + 0.0000180400179857369, + 0.000000000262785849427873 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244589823 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392139279 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406725019 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956545051 + } + ], + "ctrl": [ + -0.132939810010571, + 1.560188181748, + -1.4690696365215, + 0.0780982421145686, + 1.04831432030915, + -0.154596739321348, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0102729110647943, + "qpos": [ + -0.132082450579307, + 1.56484608002993, + -1.46666298784484, + 0.0896824909016513, + 1.08959036919402, + -0.195095880539129, + 0.0264658385849318, + -0.0264829343867808, + 0.319999977252934, + -0.145000051883083, + -0.00010773877979663, + 0.999999999000364, + -0.0000409124465857415, + 0.0000180400179857369, + 0.000000000262785849427873 + ], + "shoe_position": [ + 0.319999977252934, + -0.145000051883083, + -0.00010773877979663 + ], + "tcp_position": [ + 0.37278563944542, + -0.0312042870316109, + 0.238748738799626 + ], + "tcp_quaternion": [ + 0.236713281297684, + -0.0196872640543816, + 0.971367244908331, + 0.00499095286844979 + ], + "time": 1.02 + } + }, + { + "compute_ms": 1.08404201455414, + "request": { + "jaw": 0.025, + "sequence": 52, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 16.826, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.02671555817906, + -0.00354925619198941, + 0.40675426200793 + ], + [ + 0.275498167881722, + -0.0366114884130158, + 0.426092157604295 + ], + [ + 0.275498167881722, + -0.0366114884130158, + 0.426092157604295 + ], + [ + 0.317668712687975, + -0.0335720412938529, + 0.34549803012466 + ], + [ + 0.380993652880137, + -0.0573367449496865, + 0.225723936729433 + ], + [ + 0.378937206737343, + -0.00492318000220382, + 0.225720156053098 + ], + [ + 0.319999977252962, + -0.145000051883302, + -0.00010773877980759 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658887634036302, + 0.0, + 0.0, + -0.752241374635857 + ], + [ + 0.46423479678222, + -0.530456135674626, + -0.46756634622815, + -0.53337046548958 + ], + [ + 0.023558297545701, + -0.116454471933631, + -0.697452762534251, + -0.706712817640057 + ], + [ + -0.0151919473644164, + -0.706497084288735, + 0.0784047641514653, + -0.703195397869714 + ], + [ + 0.704299923128842, + -0.665297668609367, + -0.113921845641554, + -0.219914627774667 + ], + [ + -0.237618989184855, + 0.0190529557019763, + -0.971160549588951, + -0.0046246924084472 + ], + [ + 0.68998580653781, + -0.683442599333456, + -0.181494819106606, + -0.154549121091505 + ], + [ + -0.68344552669032, + -0.689982906929064, + 0.154549891107744, + -0.181494163408341 + ], + [ + 0.999999999000364, + -0.0000409124439892387, + 0.000018040017971333, + 0.000000000268495891478775 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244546495 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.7288933921068 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406758497 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795658819 + } + ], + "ctrl": [ + -0.1328713659972, + 1.56023447878893, + -1.46904097932671, + 0.0779508878620522, + 1.04825050196958, + -0.154450045667188, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00984615613962141, + "qpos": [ + -0.132113952106869, + 1.56453651914461, + -1.46671903122876, + 0.0889270332509528, + 1.0879408832133, + -0.193703004896204, + 0.0262204442428639, + -0.0262334476583595, + 0.319999977252962, + -0.145000051883302, + -0.00010773877980759, + 0.999999999000364, + -0.0000409124439892387, + 0.000018040017971333, + 0.000000000268495891478775 + ], + "shoe_position": [ + 0.319999977252962, + -0.145000051883302, + -0.00010773877980759 + ], + "tcp_position": [ + 0.373045291149205, + -0.03140702107905, + 0.239027620407234 + ], + "tcp_quaternion": [ + 0.237618989184855, + -0.0190529557019763, + 0.971160549588951, + 0.0046246924084472 + ], + "time": 1.04 + } + }, + { + "compute_ms": 1.01183299557306, + "request": { + "jaw": 0.025, + "sequence": 53, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.54, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0266411514153505, + -0.00354012205745869, + 0.406761371689458 + ], + [ + 0.27541669822351, + -0.0366084588809985, + 0.426179525721857 + ], + [ + 0.27541669822351, + -0.0366084588809985, + 0.426179525721857 + ], + [ + 0.317719022050635, + -0.0336507147208898, + 0.345651446019443 + ], + [ + 0.381199384804557, + -0.0573339334713583, + 0.225988076824193 + ], + [ + 0.37922329002871, + -0.00532878636492166, + 0.225961838593163 + ], + [ + 0.319999977253133, + -0.145000051884399, + -0.00010773877980194 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658877169753792, + 0.0, + 0.0, + -0.752250540164135 + ], + [ + 0.464156920801049, + -0.530400876576824, + -0.467629030457409, + -0.533438237167612 + ], + [ + 0.0234354639866204, + -0.116352651111624, + -0.697469756031971, + -0.706716901614594 + ], + [ + -0.0154549639588456, + -0.706412115901663, + 0.0781503027704359, + -0.703303346197966 + ], + [ + 0.703878821019387, + -0.665456550525591, + -0.114550259552886, + -0.220455035595256 + ], + [ + -0.238399356545993, + 0.0185011447762925, + -0.970981519620086, + -0.00428287248142014 + ], + [ + 0.6896175102843, + -0.683557710023297, + -0.181656434900399, + -0.155491113045945 + ], + [ + -0.683560635817611, + -0.689614610187184, + 0.155491883747853, + -0.181655775205598 + ], + [ + 0.999999999000364, + -0.0000409124453653159, + 0.0000180400179893745, + 0.000000000302523806186794 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244580278 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392134399 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406730047 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956554796 + } + ], + "ctrl": [ + -0.132813075180766, + 1.56027419956635, + -1.46901733971003, + 0.0778244810406333, + 1.04819719084947, + -0.15432410405191, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00947329347460011, + "qpos": [ + -0.132141773545874, + 1.56427234453657, + -1.46677465362243, + 0.0882138897711915, + 1.08651548825128, + -0.192475742765472, + 0.0260161973467335, + -0.0260264867175878, + 0.319999977253133, + -0.145000051884399, + -0.00010773877980194, + 0.999999999000364, + -0.0000409124453653159, + 0.0000180400179893745, + 0.000000000302523806186794 + ], + "shoe_position": [ + 0.319999977253133, + -0.145000051884399, + -0.00010773877980194 + ], + "tcp_position": [ + 0.373269417726917, + -0.031593580316136, + 0.239269480262791 + ], + "tcp_quaternion": [ + 0.238399356545993, + -0.0185011447762925, + 0.970981519620086, + 0.00428287248142014 + ], + "time": 1.06 + } + }, + { + "compute_ms": 1.07312499312684, + "request": { + "jaw": 0.025, + "sequence": 54, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 8.726, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0265827659039795, + -0.0035330245222491, + 0.406766935654279 + ], + [ + 0.275352450998223, + -0.0366067899115287, + 0.426250829440841 + ], + [ + 0.275352450998223, + -0.0366067899115287, + 0.426250829440841 + ], + [ + 0.317766441289403, + -0.0337239518016163, + 0.345778789922375 + ], + [ + 0.381378047661833, + -0.0573496214774161, + 0.226210615194331 + ], + [ + 0.379470924773342, + -0.00568393756072851, + 0.226163116258811 + ], + [ + 0.31999997725316, + -0.145000051884574, + -0.00010773877981189 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658867946567212, + 0.0, + 0.0, + -0.752258618419427 + ], + [ + 0.464095098348677, + -0.5303581484969, + -0.46767748964745, + -0.533492024016041 + ], + [ + 0.0233342359695155, + -0.116269850015086, + -0.697483563947904, + -0.706720251182686 + ], + [ + -0.0157025822009314, + -0.706345858050955, + 0.0779108907067549, + -0.703390965847418 + ], + [ + 0.703497922198382, + -0.665615368766846, + -0.115090385808878, + -0.220909613684644 + ], + [ + -0.239060685359519, + 0.0180217170067628, + -0.97082927876509, + -0.0039645837132924 + ], + [ + 0.689284795842667, + -0.683675124356083, + -0.181785060064334, + -0.156297749485508 + ], + [ + -0.683678048738807, + -0.689281895247406, + 0.156298520733119, + -0.181784396947262 + ], + [ + 0.999999999000364, + -0.0000409124430101116, + 0.0000180400179725734, + 0.000000000307974670634338 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244545797 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392109886 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406755439 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956588867 + } + ], + "ctrl": [ + -0.132763822426054, + 1.56030789930147, + -1.46899836746501, + 0.0777167229885036, + 1.04815380197918, + -0.154216366056788, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00915079498550008, + "qpos": [ + -0.132166294996014, + 1.56406508906725, + -1.466829350047, + 0.0875401566032939, + 1.08528822450381, + -0.191395111165371, + 0.0258462110752324, + -0.0258546812622105, + 0.31999997725316, + -0.145000051884574, + -0.00010773877981189, + 0.999999999000364, + -0.0000409124430101116, + 0.0000180400179725734, + 0.000000000307974670634338 + ], + "shoe_position": [ + 0.31999997725316, + -0.145000051884574, + -0.00010773877981189 + ], + "tcp_position": [ + 0.373464121623557, + -0.0317657300567052, + 0.239471994876187 + ], + "tcp_quaternion": [ + 0.239060685359519, + -0.0180217170067628, + 0.97082927876509, + 0.0039645837132924 + ], + "time": 1.08 + } + }, + { + "compute_ms": 0.98337500821799, + "request": { + "jaw": 0.025, + "sequence": 55, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.331, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0265343044718465, + -0.00352717391903248, + 0.40677154403911 + ], + [ + 0.275298922113727, + -0.0366058187637985, + 0.426311773329542 + ], + [ + 0.275298922113727, + -0.0366058187637985, + 0.426311773329542 + ], + [ + 0.317808202785217, + -0.0337919334679273, + 0.34588758804561 + ], + [ + 0.381531332129058, + -0.0573795546226113, + 0.226401809338978 + ], + [ + 0.379683998315362, + -0.00599619139653218, + 0.226334199956418 + ], + [ + 0.319999977253323, + -0.145000051885505, + -0.00010773877980855 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658859695713178, + 0.0, + 0.0, + -0.752265844874495 + ], + [ + 0.464043363077112, + -0.530323055020581, + -0.467717283531021, + -0.533537025129544 + ], + [ + 0.0232471610329285, + -0.116199212785442, + -0.697495335431029, + -0.706723120821662 + ], + [ + -0.0159360815867233, + -0.70629127871876, + 0.0776850793664499, + -0.703465492652844 + ], + [ + 0.703151561492512, + -0.665772491637804, + -0.115558260103329, + -0.221294282508439 + ], + [ + -0.23962501377516, + 0.017601205552589, + -0.970699025596165, + -0.00366770268766065 + ], + [ + 0.688982766604437, + -0.683792948702856, + -0.181886755482204, + -0.156994136216953 + ], + [ + -0.683795871804177, + -0.688979865509292, + 0.156994907896015, + -0.181886089410612 + ], + [ + 0.999999999000364, + -0.0000409124438320403, + 0.0000180400179881677, + 0.000000000340435457756411 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244571563 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392131674 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406732915 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956563555 + } + ], + "ctrl": [ + -0.13272237470635, + 1.56033633703239, + -1.46898347469181, + 0.0776251365209598, + 1.0481191474642, + -0.154124293954889, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00887068209370344, + "qpos": [ + -0.132188231107351, + 1.56389308379877, + -1.46688182798104, + 0.0869032998842148, + 1.08423282397935, + -0.190434370701617, + 0.0257047475490811, + -0.0257118570618673, + 0.319999977253323, + -0.145000051885505, + -0.00010773877980855, + 0.999999999000364, + -0.0000409124438320403, + 0.0000180400179881677, + 0.000000000340435457756411 + ], + "shoe_position": [ + 0.319999977253323, + -0.145000051885505, + -0.00010773877980855 + ], + "tcp_position": [ + 0.373631565871766, + -0.0319247649009135, + 0.239645097886307 + ], + "tcp_quaternion": [ + 0.23962501377516, + -0.017601205552589, + 0.970699025596165, + 0.00366770268766065 + ], + "time": 1.1 + } + }, + { + "compute_ms": 1.10912500531413, + "request": { + "jaw": 0.025, + "sequence": 56, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 15.416, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0264903877058285, + -0.00352187156350915, + 0.406775712942255 + ], + [ + 0.275250346069347, + -0.0366049427991764, + 0.426367696215941 + ], + [ + 0.275250346069347, + -0.0366049427991764, + 0.426367696215941 + ], + [ + 0.317841748059063, + -0.0338546875750935, + 0.345984768644205 + ], + [ + 0.381659623983316, + -0.0574199510738119, + 0.226570442539111 + ], + [ + 0.379866539820839, + -0.0062714696106276, + 0.226484884313175 + ], + [ + 0.319999977253349, + -0.145000051885654, + -0.00010773877981648 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658852198322061, + 0.0, + 0.0, + -0.752272411275455 + ], + [ + 0.463996461976328, + -0.530291263101299, + -0.467753328452539, + -0.533577813700542 + ], + [ + 0.0231672435181026, + -0.116134241398268, + -0.697506156227204, + -0.70672574512874 + ], + [ + -0.0161561981866097, + -0.706241695018595, + 0.0774719289155114, + -0.703533755911915 + ], + [ + 0.702835201381481, + -0.665926087787918, + -0.115967620446366, + -0.221622734191551 + ], + [ + -0.240111256933831, + 0.0172081641158392, + -0.970586900357782, + -0.00339591450009513 + ], + [ + 0.688711299055289, + -0.683905848049456, + -0.181952660363446, + -0.157615884174138 + ], + [ + -0.683908769999037, + -0.688708397481155, + 0.157616656132806, + -0.181951991653999 + ], + [ + 0.999999999000364, + -0.0000409124419709503, + 0.0000180400179709121, + 0.000000000345635266934201 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244546619 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392114722 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406750609 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956588049 + } + ], + "ctrl": [ + -0.132687090524918, + 1.56036065301924, + -1.46897186384906, + 0.0775464551096621, + 1.04809134162093, + -0.154044848625961, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00862605429304152, + "qpos": [ + -0.132208163843754, + 1.56373721127393, + -1.46693218587764, + 0.0863022047062494, + 1.08332849968382, + -0.189529651803937, + 0.0255869887565603, + -0.0255929841533642, + 0.319999977253349, + -0.145000051885654, + -0.00010773877981648, + 0.999999999000364, + -0.0000409124419709503, + 0.0000180400179709121, + 0.000000000345635266934201 + ], + "shoe_position": [ + 0.319999977253349, + -0.145000051885654, + -0.00010773877981648 + ], + "tcp_position": [ + 0.373773424240303, + -0.0320715449303136, + 0.239797816047074 + ], + "tcp_quaternion": [ + 0.240111256933831, + -0.0172081641158392, + 0.970586900357782, + 0.00339591450009513 + ], + "time": 1.12 + } + }, + { + "compute_ms": 1.15854101022705, + "request": { + "jaw": 0.025, + "sequence": 57, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.307, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0264494198452581, + -0.00351690472406414, + 0.406779595896201 + ], + [ + 0.275205004269819, + -0.0366039233711129, + 0.42642038790276 + ], + [ + 0.275205004269819, + -0.0366039233711129, + 0.42642038790276 + ], + [ + 0.317868780951821, + -0.0339127169098968, + 0.346073850707549 + ], + [ + 0.381768740196706, + -0.0574684340373974, + 0.226722527235016 + ], + [ + 0.380026301143465, + -0.00651537728053803, + 0.226621333612069 + ], + [ + 0.319999977253504, + -0.145000051886478, + -0.00010773877981355 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658845468699997, + 0.0, + 0.0, + -0.752278305132802 + ], + [ + 0.463952892500466, + -0.530261437576341, + -0.467787139433602, + -0.533615698363955 + ], + [ + 0.0230921931614709, + -0.116072649134501, + -0.697516408497247, + -0.706728201372347 + ], + [ + -0.0163635844017474, + -0.706194909556533, + 0.0772705444500283, + -0.703598071190053 + ], + [ + 0.70254366702201, + -0.666074374779947, + -0.116333062237946, + -0.221909760531419 + ], + [ + -0.240539764732411, + 0.0168277662830079, + -0.970488297934629, + -0.00314824337477892 + ], + [ + 0.688466446903713, + -0.684011256074355, + -0.181986680453268, + -0.158187866756459 + ], + [ + -0.684014176985115, + -0.688463544882373, + 0.158188638859456, + -0.181986009317103 + ], + [ + 0.999999999000364, + -0.0000409124426909608, + 0.0000180400179853453, + 0.000000000376588392908061 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244567679 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392132244 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406732419 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956567465 + } + ], + "ctrl": [ + -0.132655857020029, + 1.56038186386367, + -1.46896318575249, + 0.0774765607128896, + 1.04806914299676, + -0.153974079392036, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00840845933239717, + "qpos": [ + -0.132226055223526, + 1.56359179777846, + -1.46698126954677, + 0.0857351035050232, + 1.08253880502757, + -0.188651711624708, + 0.0254889174181274, + -0.0254940241105653, + 0.319999977253504, + -0.145000051886478, + -0.00010773877981355, + 0.999999999000364, + -0.0000409124426909608, + 0.0000180400179853453, + 0.000000000376588392908061 + ], + "shoe_position": [ + 0.319999977253504, + -0.145000051886478, + -0.00010773877981355 + ], + "tcp_position": [ + 0.373895915984449, + -0.0322075514538086, + 0.23993595242987 + ], + "tcp_quaternion": [ + 0.240539764732411, + -0.0168277662830079, + 0.970488297934629, + 0.00314824337477892 + ], + "time": 1.14 + } + }, + { + "compute_ms": 1.01195898605511, + "request": { + "jaw": 0.025, + "sequence": 58, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.191, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0264109393825372, + -0.00351221043744931, + 0.406783237938351 + ], + [ + 0.275162394584341, + -0.0366026734413189, + 0.426470469566352 + ], + [ + 0.275162394584341, + -0.0366026734413189, + 0.426470469566352 + ], + [ + 0.31789443755457, + -0.033967095090363, + 0.346158373948093 + ], + [ + 0.38187174135061, + -0.05752451328262, + 0.226866253326999 + ], + [ + 0.380177228721438, + -0.00673400843005021, + 0.22675110631214 + ], + [ + 0.319999977253529, + -0.14500005188661, + -0.00010773877981977 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658839534656244, + 0.0, + 0.0, + -0.752283502127983 + ], + [ + 0.463912237009458, + -0.530233177565585, + -0.467819171698535, + -0.533651043616407 + ], + [ + 0.0230212250190236, + -0.116013609835039, + -0.697526230569893, + -0.706730516674229 + ], + [ + -0.0165588962074145, + -0.706150206778345, + 0.0770801344597373, + -0.7036592508416 + ], + [ + 0.702268557732144, + -0.666213964823653, + -0.116678412378059, + -0.222180048563541 + ], + [ + -0.240944304870874, + 0.0164560368932243, + -0.970395034628367, + -0.00291848739431059 + ], + [ + 0.68823803797973, + -0.684107771469105, + -0.18200988231444, + -0.158736772152107 + ], + [ + -0.684110691410807, + -0.688235135548912, + 0.158737544353537, + -0.182009208849465 + ], + [ + 0.999999999000364, + -0.0000409124412395605, + 0.0000180400179684333, + 0.000000000381546683452886 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244547794 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392118719 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406746601 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956586884 + } + ], + "ctrl": [ + -0.132627341414527, + 1.56040072344319, + -1.46895664996927, + 0.0774127797255157, + 1.0480509850979, + -0.153909382880868, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00820343742574299, + "qpos": [ + -0.132241831361734, + 1.56345520154568, + -1.46702973259172, + 0.0852000921601308, + 1.08179507602499, + -0.187795261774075, + 0.0254072309467441, + -0.0254116633260641, + 0.319999977253529, + -0.14500005188661, + -0.00010773877981977, + 0.999999999000364, + -0.0000409124412395605, + 0.0000180400179684333, + 0.000000000381546683452886 + ], + "shoe_position": [ + 0.319999977253529, + -0.14500005188661, + -0.00010773877981977 + ], + "tcp_position": [ + 0.374011614622177, + -0.0323353894948245, + 0.240066899857041 + ], + "tcp_quaternion": [ + 0.240944304870874, + -0.0164560368932243, + 0.970395034628367, + 0.00291848739431059 + ], + "time": 1.16 + } + }, + { + "compute_ms": 1.10437499824911, + "request": { + "jaw": 0.025, + "sequence": 59, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.26, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0263745234826287, + -0.00350774026425857, + 0.406786679999789 + ], + [ + 0.27512206459482, + -0.0366012109039971, + 0.426518260971813 + ], + [ + 0.27512206459482, + -0.0366012109039971, + 0.426518260971813 + ], + [ + 0.317920286804382, + -0.0340183472351316, + 0.346239699305457 + ], + [ + 0.381972964515329, + -0.0575867468213288, + 0.227004679036219 + ], + [ + 0.38032412418403, + -0.00693142687220674, + 0.226876962757221 + ], + [ + 0.319999977253723, + -0.145000051887594, + -0.0001077387798144 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658834291842847, + 0.0, + 0.0, + -0.752288093679499 + ], + [ + 0.463874021829332, + -0.530206197449521, + -0.467849749584329, + -0.533684262342333 + ], + [ + 0.0229538485828591, + -0.115956832980547, + -0.697535671406934, + -0.706732708196837 + ], + [ + -0.0167428148545361, + -0.706107260550094, + 0.0769001679928032, + -0.703717684097726 + ], + [ + 0.702006511030998, + -0.666344006852587, + -0.117012223462669, + -0.222442492707771 + ], + [ + -0.241336959103858, + 0.0160917195960276, + -0.970304188309866, + -0.00270386376840561 + ], + [ + 0.688022038295722, + -0.684195295715075, + -0.182029920683563, + -0.159272031809411 + ], + [ + -0.684198214740366, + -0.688019135493571, + 0.159272804095852, + -0.182029244947672 + ], + [ + 0.999999999000364, + -0.0000409124425145837, + 0.0000180400179903787, + 0.000000000420170230612817 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244568171 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392133344 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406731316 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956566998 + } + ], + "ctrl": [ + -0.132600377706313, + 1.56041806374036, + -1.46895072550611, + 0.0773527323534668, + 1.04803428845165, + -0.153848462613409, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0080057851291935, + "qpos": [ + -0.132255769717107, + 1.56332592275121, + -1.46707718594516, + 0.0846955218528416, + 1.08107286254905, + -0.18695880296008, + 0.0253392009889234, + -0.0253431078089224, + 0.319999977253723, + -0.145000051887594, + -0.0001077387798144, + 0.999999999000364, + -0.0000409124425145837, + 0.0000180400179903787, + 0.000000000420170230612817 + ], + "shoe_position": [ + 0.319999977253723, + -0.145000051887594, + -0.0001077387798144 + ], + "tcp_position": [ + 0.374124754984291, + -0.0324562535261523, + 0.240193395645886 + ], + "tcp_quaternion": [ + 0.241336959103858, + -0.0160917195960276, + 0.970304188309866, + 0.00270386376840561 + ], + "time": 1.18 + } + }, + { + "compute_ms": 0.983000005362555, + "request": { + "jaw": 0.025, + "sequence": 60, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 17.353, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0263399218572445, + -0.00350346703241479, + 0.406789946459185 + ], + [ + 0.275083744938994, + -0.0365995612066281, + 0.426563952757527 + ], + [ + 0.275083744938994, + -0.0365995612066281, + 0.426563952757527 + ], + [ + 0.317946511692997, + -0.0340667251779394, + 0.346318239849648 + ], + [ + 0.382073121627265, + -0.0576534462098421, + 0.227138621296451 + ], + [ + 0.380467985570183, + -0.00711055221796641, + 0.226999579263552 + ], + [ + 0.319999977253747, + -0.145000051887715, + -0.00010773877982043 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658829658352842, + 0.0, + 0.0, + -0.752292151543984 + ], + [ + 0.463837952555703, + -0.530180340889216, + -0.46787905075414, + -0.53371561132211 + ], + [ + 0.0228897529223231, + -0.115902163658245, + -0.697544757316215, + -0.706734787039067 + ], + [ + -0.0169160072683016, + -0.706065903833281, + 0.0767301011779245, + -0.703773599757348 + ], + [ + 0.701756335286294, + -0.666464794984429, + -0.117336502224284, + -0.222699052933963 + ], + [ + -0.241720393474354, + 0.0157344573994351, + -0.970215137286564, + -0.00250311984562731 + ], + [ + 0.687817122491239, + -0.684274274970432, + -0.182048428310763, + -0.159795783333425 + ], + [ + -0.684277193126338, + -0.68781421935401, + 0.159796555698382, + -0.182047750352782 + ], + [ + 0.999999999000364, + -0.0000409124410989149, + 0.0000180400179703794, + 0.000000000424897073799354 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244547876 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392119357 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406745994 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956586749 + } + ], + "ctrl": [ + -0.132574551315933, + 1.56043421310222, + -1.46894488804268, + 0.0772955525199417, + 1.04801816073296, + -0.153790475004423, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00781423933635008, + "qpos": [ + -0.132268088076383, + 1.56320307424564, + -1.46712340467484, + 0.0842197165686112, + 1.08036695576737, + -0.186141665529546, + 0.0252825457826566, + -0.0252860208132898, + 0.319999977253747, + -0.145000051887715, + -0.00010773877982043, + 0.999999999000364, + -0.0000409124410989149, + 0.0000180400179703794, + 0.000000000424897073799354 + ], + "shoe_position": [ + 0.319999977253747, + -0.145000051887715, + -0.00010773877982043 + ], + "tcp_position": [ + 0.374236116458673, + -0.0325706943040915, + 0.240316149365788 + ], + "tcp_quaternion": [ + 0.241720393474354, + -0.0157344573994351, + 0.970215137286564, + 0.00250311984562731 + ], + "time": 1.2 + } + }, + { + "compute_ms": 0.985374994343147, + "request": { + "jaw": 0.025, + "sequence": 61, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.203, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0263069924706951, + -0.00349937587053538, + 0.406793051344925 + ], + [ + 0.27504728091794, + -0.0365977436459392, + 0.426607673465607 + ], + [ + 0.27504728091794, + -0.0365977436459392, + 0.426607673465607 + ], + [ + 0.317973082994734, + -0.0341124115376434, + 0.346394176392949 + ], + [ + 0.382172263212488, + -0.0577231354233649, + 0.227268393358938 + ], + [ + 0.380609077067537, + -0.00727374071154065, + 0.227119166237155 + ], + [ + 0.319999977253931, + -0.14500005188863, + -0.00010773877981592 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658825580953461, + 0.0, + 0.0, + -0.75229572236012 + ], + [ + 0.463803857486069, + -0.530155523472239, + -0.467907171276394, + -0.533745240523082 + ], + [ + 0.0228287268945914, + -0.115849492259155, + -0.697553507010965, + -0.706736760914821 + ], + [ + -0.017079104976268, + -0.706026042780925, + 0.0765693790670684, + -0.703827152984026 + ], + [ + 0.701517305438331, + -0.666576848654384, + -0.117651907208889, + -0.222950227043268 + ], + [ + -0.242095314675747, + 0.0153841184650212, + -0.970127737322519, + -0.00231533768475233 + ], + [ + 0.687622539494755, + -0.684345256329035, + -0.182065811681118, + -0.160308619654802 + ], + [ + -0.684348173659394, + -0.687619636056379, + 0.160309392093506, + -0.182065131547355 + ], + [ + 0.999999999000364, + -0.0000409124421625305, + 0.0000180400179889635, + 0.000000000461712906548241 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244565995 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392132588 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406732129 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956569122 + } + ], + "ctrl": [ + -0.132549746517167, + 1.56044929837165, + -1.46893904164944, + 0.0772409676150811, + 1.04800241964335, + -0.153735146330979, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00762833902803358, + "qpos": [ + -0.132278927986638, + 1.56308615276937, + -1.46716834157229, + 0.0837710215632208, + 1.07967604475664, + -0.185343382586955, + 0.0252353599664807, + -0.0252384673749538, + 0.319999977253931, + -0.14500005188863, + -0.00010773877981592, + 0.999999999000364, + -0.0000409124421625305, + 0.0000180400179889635, + 0.000000000461712906548241 + ], + "shoe_position": [ + 0.319999977253931, + -0.14500005188863, + -0.00010773877981592 + ], + "tcp_position": [ + 0.374345835159608, + -0.0326791101874541, + 0.24043541384545 + ], + "tcp_quaternion": [ + 0.242095314675747, + -0.0153841184650212, + 0.970127737322519, + 0.00231533768475233 + ], + "time": 1.22 + } + }, + { + "compute_ms": 1.00333301816136, + "request": { + "jaw": 0.025, + "sequence": 62, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.959, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0262756361559584, + -0.00349545667509247, + 0.406796004558261 + ], + [ + 0.275012563501445, + -0.0365957741768781, + 0.426649524447873 + ], + [ + 0.275012563501445, + -0.0365957741768781, + 0.426649524447873 + ], + [ + 0.317999946924166, + -0.0341555658143064, + 0.346467626728592 + ], + [ + 0.382270331580193, + -0.0577946047466222, + 0.227394184752156 + ], + [ + 0.380747513090021, + -0.00742296237709754, + 0.227235825126067 + ], + [ + 0.319999977253954, + -0.145000051888741, + -0.00010773877982148 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658822019008745, + 0.0, + 0.0, + -0.752298841730625 + ], + [ + 0.463771614361476, + -0.530131688480358, + -0.467934175786472, + -0.533773256835288 + ], + [ + 0.0227706036550851, + -0.115798729528077, + -0.697561935773221, + -0.706738635995785 + ], + [ + -0.0172327018435103, + -0.705987613230076, + 0.0764174644949243, + -0.703878466123975 + ], + [ + 0.701288819999952, + -0.66668070966767, + -0.117958804850936, + -0.223196197678694 + ], + [ + -0.242462010995953, + 0.0150406204435159, + -0.970041944772091, + -0.00213970634729303 + ], + [ + 0.687437685025184, + -0.68440878235015, + -0.18208221641578, + -0.160810802853286 + ], + [ + -0.684411698896237, + -0.687434781317292, + 0.160811575361584, + -0.182081534151433 + ], + [ + 0.999999999000364, + -0.0000409124408602851, + 0.0000180400179684765, + 0.000000000466218516028064 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244548043 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392120456 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.6716454067449 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956586572 + } + ], + "ctrl": [ + -0.132525910099322, + 1.56046340178164, + -1.46893317691881, + 0.0771888287984772, + 1.0479870275724, + -0.1536823223836, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00744780043319082, + "qpos": [ + -0.132288397500355, + 1.5629748070479, + -1.46721200953815, + 0.0833478549410262, + 1.07899961612597, + -0.184563535317451, + 0.0251960576431403, + -0.025198846950223, + 0.319999977253954, + -0.145000051888741, + -0.00010773877982148, + 0.999999999000364, + -0.0000409124408602851, + 0.0000180400179684765, + 0.000000000466218516028064 + ], + "shoe_position": [ + 0.319999977253954, + -0.145000051888741, + -0.00010773877982148 + ], + "tcp_position": [ + 0.374453930052977, + -0.0327818503146919, + 0.240551331501568 + ], + "tcp_quaternion": [ + 0.242462010995953, + -0.0150406204435159, + 0.970041944772091, + 0.00213970634729303 + ], + "time": 1.24 + } + }, + { + "compute_ms": 0.890625000465661, + "request": { + "jaw": 0.025, + "sequence": 63, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.162, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0262457703361752, + -0.00349170114339558, + 0.406798814371354 + ], + [ + 0.274979501476444, + -0.0365936671555211, + 0.426689594526302 + ], + [ + 0.274979501476444, + -0.0365936671555211, + 0.426689594526302 + ], + [ + 0.318027051411123, + -0.0341963353008872, + 0.346538688624684 + ], + [ + 0.382367261611878, + -0.0578668830697368, + 0.227516149065332 + ], + [ + 0.380883370924607, + -0.00755988641325543, + 0.227349630656481 + ], + [ + 0.31999997725413, + -0.1450000518896, + -0.00010773877981735 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658818937171553, + 0.0, + 0.0, + -0.75230154062327 + ], + [ + 0.463741120329603, + -0.530108789644107, + -0.467960117042104, + -0.533799750201745 + ], + [ + 0.0227152366672929, + -0.115749796439202, + -0.697570057144287, + -0.706740417708757 + ], + [ + -0.0173773560647011, + -0.705950562542264, + 0.0762738482373519, + -0.703927646010247 + ], + [ + 0.701070329120021, + -0.66677689851513, + -0.118257488996049, + -0.223437077340441 + ], + [ + -0.242820677192425, + 0.0147038888874457, + -0.969957737160883, + -0.00197547491444948 + ], + [ + 0.687262012212045, + -0.684465368122919, + -0.18209772758714, + -0.161302523285311 + ], + [ + -0.684468283923689, + -0.68725910826408, + 0.161303295859413, + -0.1820970432366 + ], + [ + 0.999999999000364, + -0.0000409124418374142, + 0.0000180400179853542, + 0.000000000501308672220955 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244564712 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392132613 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406732146 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956570389 + } + ], + "ctrl": [ + -0.132503002786307, + 1.56047659229495, + -1.46892730172522, + 0.0771390168005878, + 1.04797197672409, + -0.153631877982837, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00727238912051269, + "qpos": [ + -0.132296590605259, + 1.56286874461556, + -1.46725443686825, + 0.0829487223767464, + 1.07833732518377, + -0.183801720172819, + 0.0251633199754245, + -0.0251658323380516, + 0.31999997725413, + -0.1450000518896, + -0.00010773877981735, + 0.999999999000364, + -0.0000409124418374142, + 0.0000180400179853542, + 0.000000000501308672220955 + ], + "shoe_position": [ + 0.31999997725413, + -0.1450000518896, + -0.00010773877981735 + ], + "tcp_position": [ + 0.374560400597199, + -0.0328792376043972, + 0.240664014677308 + ], + "tcp_quaternion": [ + 0.242820677192425, + -0.0147038888874457, + 0.969957737160883, + 0.00197547491444948 + ], + "time": 1.26 + } + }, + { + "compute_ms": 0.953084003413096, + "request": { + "jaw": 0.025, + "sequence": 64, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.423, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0262173201970752, + -0.00348810177985131, + 0.406801488268926 + ], + [ + 0.274948012042052, + -0.0365914359339344, + 0.426727965584359 + ], + [ + 0.274948012042052, + -0.0365914359339344, + 0.426727965584359 + ], + [ + 0.318054348453388, + -0.0342348579885043, + 0.34660745152067 + ], + [ + 0.382462997362455, + -0.0579391989035888, + 0.227634425731384 + ], + [ + 0.381016713847179, + -0.0076859367581627, + 0.227460650565057 + ], + [ + 0.319999977254152, + -0.145000051889705, + -0.00010773877982243 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.65881630290972, + 0.0, + 0.0, + -0.752303847537927 + ], + [ + 0.463712281843016, + -0.5300867853621, + -0.467985042479432, + -0.533824802409876 + ], + [ + 0.0226624906915448, + -0.115702619890588, + -0.697577883644869, + -0.706742111038854 + ], + [ + -0.0175135925015169, + -0.705914842820389, + 0.0761380506568596, + -0.703974790745897 + ], + [ + 0.700861317864037, + -0.666865906108536, + -0.11854822833081, + -0.223672962048505 + ], + [ + -0.243171484902206, + 0.0143738481193295, + -0.969875096057928, + -0.00182194053762644 + ], + [ + 0.687095011034691, + -0.684515497604775, + -0.182112413049214, + -0.161783955828498 + ], + [ + -0.684518412697019, + -0.687092106874047, + 0.161784728464901, + -0.182111726656128 + ], + [ + 0.999999999000364, + -0.0000409124406523576, + 0.0000180400179654515, + 0.000000000505603088851746 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244548361 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392121583 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406743763 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956586261 + } + ], + "ctrl": [ + -0.132480989145284, + 1.5604889323054, + -1.46892142698112, + 0.077091422688574, + 1.04795726533127, + -0.153583698508256, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00710189227560067, + "qpos": [ + -0.132303593801854, + 1.56276770051591, + -1.46729565487851, + 0.082572217349918, + 1.07768886743688, + -0.183057542526326, + 0.0251360497669547, + -0.0251383203446379, + 0.319999977254152, + -0.145000051889705, + -0.00010773877982243, + 0.999999999000364, + -0.0000409124406523576, + 0.0000180400179654515, + 0.000000000505603088851746 + ], + "shoe_position": [ + 0.319999977254152, + -0.145000051889705, + -0.00010773877982243 + ], + "tcp_position": [ + 0.374665244595689, + -0.0329715747078487, + 0.240773565390951 + ], + "tcp_quaternion": [ + 0.243171484902206, + -0.0143738481193295, + 0.969875096057928, + 0.00182194053762644 + ], + "time": 1.28 + } + }, + { + "compute_ms": 0.880459003383294, + "request": { + "jaw": 0.025, + "sequence": 65, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.538, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0261902158270052, + -0.00348465157473595, + 0.406804033224226 + ], + [ + 0.274918017747171, + -0.0365890930417332, + 0.426764714653496 + ], + [ + 0.274918017747171, + -0.0365890930417332, + 0.426764714653496 + ], + [ + 0.318081793719626, + -0.034271263616313, + 0.346673999943211 + ], + [ + 0.382557493375661, + -0.0580109449995818, + 0.227749146006503 + ], + [ + 0.381147596964337, + -0.00780233346995778, + 0.227568950413509 + ], + [ + 0.319999977254319, + -0.145000051890517, + -0.00010773877981849 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658814085719554, + 0.0, + 0.0, + -0.752305789195795 + ], + [ + 0.46368501139885, + -0.530065636819559, + -0.468008996348442, + -0.533848489933285 + ], + [ + 0.022612238497458, + -0.115657130918565, + -0.697585427075198, + -0.70674372064429 + ], + [ + -0.0176419048028205, + -0.705880408542964, + 0.0760096207608954, + -0.704019992316931 + ], + [ + 0.700661301146397, + -0.666948193411714, + -0.118831277410302, + -0.223903943443892 + ], + [ + -0.243514598441073, + 0.0140504195357129, + -0.969794003324264, + -0.00167844369890274 + ], + [ + 0.686936202318305, + -0.68455962432015, + -0.182126333410117, + -0.162255272252541 + ], + [ + -0.684562538738624, + -0.686933297970449, + 0.162256044947999, + -0.182125645017404 + ], + [ + 0.999999999000364, + -0.0000409124415812205, + 0.0000180400179813418, + 0.000000000539047009039824 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244563877 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889339213281 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406731966 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956571207 + } + ], + "ctrl": [ + -0.132459835440238, + 1.56050047934664, + -1.46891556363975, + 0.0770459437039024, + 1.04794289259821, + -0.153537675899974, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0069361118121554, + "qpos": [ + -0.132309488194955, + 1.5626714271603, + -1.46733569497635, + 0.0822170172552136, + 1.07705395193465, + -0.1823306154884, + 0.0251133336721228, + -0.0251153926716787, + 0.319999977254319, + -0.145000051890517, + -0.00010773877981849, + 0.999999999000364, + -0.0000409124415812205, + 0.0000180400179813418, + 0.000000000539047009039824 + ], + "shoe_position": [ + 0.319999977254319, + -0.145000051890517, + -0.00010773877981849 + ], + "tcp_position": [ + 0.374768461312957, + -0.0330591462054312, + 0.24088008051234 + ], + "tcp_quaternion": [ + 0.243514598441073, + -0.0140504195357129, + 0.969794003324264, + 0.00167844369890274 + ], + "time": 1.3 + } + }, + { + "compute_ms": 0.900665996596217, + "request": { + "jaw": 0.025, + "sequence": 66, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.682, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0261643912216327, + -0.00348134389431184, + 0.406806455798121 + ], + [ + 0.274889445420332, + -0.0365866502535661, + 0.426799914746336 + ], + [ + 0.274889445420332, + -0.0365866502535661, + 0.426799914746336 + ], + [ + 0.318109346125049, + -0.034305674274482, + 0.346738414611082 + ], + [ + 0.382650713486237, + -0.0580816486933699, + 0.227860434901887 + ], + [ + 0.381276069492406, + -0.00791012554282413, + 0.227674594692237 + ], + [ + 0.31999997725434, + -0.145000051890616, + -0.00010773877982316 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658812256847993, + 0.0, + 0.0, + -0.752307390783086 + ], + [ + 0.463659226403092, + -0.530045307336902, + -0.468032020453868, + -0.533870884925641 + ], + [ + 0.0225643595699592, + -0.115613263936396, + -0.697592698644398, + -0.706745250905302 + ], + [ + -0.0177627573271362, + -0.705847215774362, + 0.0758881346401687, + -0.70406333767393 + ], + [ + 0.700469821280408, + -0.667024192794182, + -0.119106879667446, + -0.224130111583757 + ], + [ + -0.243850178481779, + 0.0137335215502851, + -0.969714440325886, + -0.00154436514041598 + ], + [ + 0.686785135006122, + -0.684598172975207, + -0.182139544592761, + -0.162716643860339 + ], + [ + -0.684601086752757, + -0.686782230494719, + 0.162717416611843, + -0.182138854242612 + ], + [ + 0.999999999000364, + -0.0000409124404908137, + 0.0000180400179622912, + 0.000000000543139955249091 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244508225 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392086152 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540678646 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956625735 + } + ], + "ctrl": [ + -0.132439509151123, + 1.56051128673185, + -1.46890972204443, + 0.0770024821871957, + 1.047928857585, + -0.153493707611108, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00677486204029665, + "qpos": [ + -0.132314350232815, + 1.56257969079839, + -1.46737458805461, + 0.0818818786352132, + 1.07643229554272, + -0.181620559639732, + 0.0250944110866534, + -0.0250962844453314, + 0.31999997725434, + -0.145000051890616, + -0.00010773877982316, + 0.999999999000364, + -0.0000409124404908137, + 0.0000180400179622912, + 0.000000000543139955249091 + ], + "shoe_position": [ + 0.31999997725434, + -0.145000051890616, + -0.00010773877982316 + ], + "tcp_position": [ + 0.374870051901529, + -0.0331422199174262, + 0.240983653234986 + ], + "tcp_quaternion": [ + 0.243850178481779, + -0.0137335215502851, + 0.969714440325886, + 0.00154436514041598 + ], + "time": 1.32 + } + }, + { + "compute_ms": 0.881500018294901, + "request": { + "jaw": 0.025, + "sequence": 67, + "target": [ + 0.38, + -0.035, + 0.245 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.305, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0261397838551333, + -0.00347817243569611, + 0.406808762184177 + ], + [ + 0.274862225707446, + -0.0365841186296591, + 0.426833635258061 + ], + [ + 0.274862225707446, + -0.0365841186296591, + 0.426833635258061 + ], + [ + 0.318136967546483, + -0.0343382048841282, + 0.346800772867276 + ], + [ + 0.382742629415239, + -0.0581509474147668, + 0.227968411990216 + ], + [ + 0.381402176123863, + -0.00801021776381312, + 0.227777646987901 + ], + [ + 0.319999977254548, + -0.145000051891617, + -0.00010773877981729 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658810789159137, + 0.0, + 0.0, + -0.752308676068218 + ], + [ + 0.463634848673035, + -0.530025762098339, + -0.468054154465138, + -0.53389205565913 + ], + [ + 0.022518739482835, + -0.115570956363967, + -0.697599709034571, + -0.706746705950657 + ], + [ + -0.0178765869191491, + -0.705815221906952, + 0.0757731938343812, + -0.704104909271835 + ], + [ + 0.700286446201781, + -0.667094309700794, + -0.119375268549627, + -0.224351555576521 + ], + [ + -0.244178382930573, + 0.0134230698758522, + -0.969636387824627, + -0.00141912329538038 + ], + [ + 0.686641384265729, + -0.684631541197234, + -0.182152098654029, + -0.163168241908395 + ], + [ + -0.6846344543649, + -0.686638479612757, + 0.163169014713157, + -0.182151406387911 + ], + [ + 0.999999999000364, + -0.0000409124418596442, + 0.0000180400179857451, + 0.000000000584540574352122 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244564698 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392132503 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540673227 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956570382 + } + ], + "ctrl": [ + -0.132419978850766, + 1.5605214039375, + -1.46890391178555, + 0.0769609451604522, + 1.04791515895218, + -0.153451696182171, + 0.025 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.00661796842792697, + "qpos": [ + -0.13231825206236, + 1.56249226999769, + -1.4674123643892, + 0.081565632420516, + 1.07582362158585, + -0.180927002911564, + 0.0250786484810001, + -0.0250803584498372, + 0.319999977254548, + -0.145000051891617, + -0.00010773877981729, + 0.999999999000364, + -0.0000409124418596442, + 0.0000180400179857451, + 0.000000000584540574352122 + ], + "shoe_position": [ + 0.319999977254548, + -0.145000051891617, + -0.00010773877981729 + ], + "tcp_position": [ + 0.374970019350697, + -0.0332210479649608, + 0.241084373557436 + ], + "tcp_quaternion": [ + 0.244178382930573, + -0.0134230698758522, + 0.969636387824627, + 0.00141912329538038 + ], + "time": 1.34 + } + }, + { + "compute_ms": 0.950582994846627, + "request": { + "jaw": 0.01, + "sequence": 68, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 8.473, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0264632141780606, + -0.0035488330724075, + 0.406777912380774 + ], + [ + 0.275136770643206, + -0.0369077280893894, + 0.426989263998663 + ], + [ + 0.275136770643206, + -0.0369077280893894, + 0.426989263998663 + ], + [ + 0.318462864440686, + -0.0346204764958827, + 0.346985360664825 + ], + [ + 0.383101162632825, + -0.0582970689902193, + 0.22815945404083 + ], + [ + 0.381841718618146, + -0.00822021955034658, + 0.228036760178828 + ], + [ + 0.319999977254567, + -0.145000051891711, + -0.00010773877982251 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.658425122563578, + 0.0, + 0.0, + -0.752646236938136 + ], + [ + 0.463671564264876, + -0.530537416559919, + -0.467474116534731, + -0.533860169419075 + ], + [ + 0.0218938708003681, + -0.115669262729848, + -0.697583415556544, + -0.706766339338099 + ], + [ + -0.0178444655055186, + -0.705472705492234, + 0.0765073197435531, + -0.7043695527789 + ], + [ + 0.700490994172351, + -0.666713251604432, + -0.119133462389681, + -0.224973388109625 + ], + [ + -0.244482815792095, + 0.0124899550765933, + -0.969571346300793, + -0.00188632898020205 + ], + [ + 0.686925756484653, + -0.684255185006928, + -0.181707555256589, + -0.16404332120448 + ], + [ + -0.684258099381087, + -0.686922853428423, + 0.164044092123197, + -0.181706859277827 + ], + [ + 0.999999999000364, + -0.0000409124406356365, + 0.0000180400179637956, + 0.000000000588441395097587 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244510004 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392087191 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406785086 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956623921 + } + ], + "ctrl": [ + -0.162419978850766, + 1.5905214039375, + -1.49890391178554, + 0.106960945160452, + 1.07791515895218, + -0.183451696182171, + 0.024 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.06007905127509, + "qpos": [ + -0.133343310245256, + 1.56365487167041, + -1.46931817919097, + 0.0827008987721175, + 1.07610092184556, + -0.180280010218522, + 0.0250031430530645, + -0.025089691792637, + 0.319999977254567, + -0.145000051891711, + -0.00010773877982251, + 0.999999999000364, + -0.0000409124406356365, + 0.0000180400179637956, + 0.000000000588441395097587 + ], + "shoe_position": [ + 0.319999977254567, + -0.145000051891711, + -0.00010773877982251 + ], + "tcp_position": [ + 0.375361879084822, + -0.0334483811656535, + 0.241305044498269 + ], + "tcp_quaternion": [ + 0.244482815792095, + -0.0124899550765933, + 0.969571346300793, + 0.00188632898020205 + ], + "time": 1.36 + } + }, + { + "compute_ms": 1.26441600150429, + "request": { + "jaw": 0.01, + "sequence": 69, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.808, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0282387258451296, + -0.00394174859982989, + 0.406601545229604 + ], + [ + 0.276670499770726, + -0.0386294951794163, + 0.427536354457576 + ], + [ + 0.276670499770726, + -0.0386294951794163, + 0.427536354457576 + ], + [ + 0.319905971274305, + -0.0360709401803275, + 0.347491652743909 + ], + [ + 0.384267385753215, + -0.0591646177943774, + 0.228438827034683 + ], + [ + 0.383268208063709, + -0.00925017444366487, + 0.228625639287579 + ], + [ + 0.319999977254765, + -0.145000051892662, + -0.00010773877981746 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.656398603846593, + 0.0, + 0.0, + -0.754414258128943 + ], + [ + 0.463941078681806, + -0.533278686108603, + -0.464344530432181, + -0.53362596967498 + ], + [ + 0.0189738618827585, + -0.116539391235683, + -0.697438578148941, + -0.706850756924865 + ], + [ + -0.0177029460578527, + -0.704021786044515, + 0.0803527733366233, + -0.705395890470505 + ], + [ + 0.702030003489755, + -0.665017636449094, + -0.116336915427076, + -0.22665202297961 + ], + [ + -0.243901090950883, + 0.00924870082351573, + -0.969746673280924, + -0.004255470200336 + ], + [ + 0.688724963985281, + -0.682703920314848, + -0.179004304852194, + -0.165923898262408 + ], + [ + -0.682706842322415, + -0.688722067510497, + 0.165924657712182, + -0.17900360089484 + ], + [ + 0.999999999000364, + -0.0000409124418119279, + 0.0000180400179838011, + 0.000000000627898209022356 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244563358 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392131405 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406733419 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956571672 + } + ], + "ctrl": [ + -0.192419978850766, + 1.61560161829686, + -1.52890391178554, + 0.124420138027406, + 1.10791515895218, + -0.213451696182171, + 0.023 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0586191044170053, + "qpos": [ + -0.138722039240376, + 1.57004350384397, + -1.47859058788745, + 0.0885542745711624, + 1.08109988114471, + -0.180115638260751, + 0.0248224815039565, + -0.0251023110337135, + 0.319999977254765, + -0.145000051892662, + -0.00010773877981746, + 0.999999999000364, + -0.0000409124418119279, + 0.0000180400179838011, + 0.000000000627898209022356 + ], + "shoe_position": [ + 0.319999977254765, + -0.145000051892662, + -0.00010773877981746 + ], + "tcp_position": [ + 0.376676059606375, + -0.0345387581207687, + 0.241746627381458 + ], + "tcp_quaternion": [ + 0.243901090950883, + -0.00924870082351573, + 0.969746673280924, + 0.004255470200336 + ], + "time": 1.38 + } + }, + { + "compute_ms": 1.10354099888355, + "request": { + "jaw": 0.01, + "sequence": 70, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.531, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0312204599497976, + -0.0046853024892174, + 0.406277479332734 + ], + [ + 0.279186187813065, + -0.0419069121719332, + 0.428354659267404 + ], + [ + 0.279186187813065, + -0.0419069121719332, + 0.428354659267404 + ], + [ + 0.322316908420895, + -0.0392007779353144, + 0.348258315720444 + ], + [ + 0.386311961365884, + -0.0618240761823707, + 0.228969619588751 + ], + [ + 0.385695818015498, + -0.0123656655248278, + 0.229448812757145 + ], + [ + 0.319999977254784, + -0.145000051892752, + -0.00010773877982269 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.652517746222218, + 0.0, + 0.0, + -0.757773442966351 + ], + [ + 0.464080265586681, + -0.538136920095049, + -0.458705412253458, + -0.53350492696225 + ], + [ + 0.0137354294366555, + -0.118530272105671, + -0.697102987079065, + -0.706971949923185 + ], + [ + -0.0189955736360287, + -0.701716943324719, + 0.0861339992584551, + -0.70697484665651 + ], + [ + 0.703359403160869, + -0.663281536630142, + -0.111770071379807, + -0.229892592952657 + ], + [ + -0.243169497154707, + 0.0048633987445661, + -0.969951720321668, + -0.00621315147213528 + ], + [ + 0.690254241308938, + -0.681464617590263, + -0.175386118601817, + -0.168507467874182 + ], + [ + -0.681467546086018, + -0.690251350092058, + 0.168508211973264, + -0.175385403683334 + ], + [ + 0.999999999000364, + -0.0000409124405888808, + 0.0000180400179615917, + 0.000000000631615881314582 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244513228 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392090272 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406781414 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956620752 + } + ], + "ctrl": [ + -0.222419978850766, + 1.61954085292764, + -1.55890391178554, + 0.12505880721175, + 1.13791515895218, + -0.243451696182171, + 0.022 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0554798221650017, + "qpos": [ + -0.148987561440786, + 1.58083074987236, + -1.49393286439026, + 0.0952774723790385, + 1.08830076571652, + -0.182463928645219, + 0.0245732455033591, + -0.0248913240746232, + 0.319999977254784, + -0.145000051892752, + -0.00010773877982269, + 0.999999999000364, + -0.0000409124405888808, + 0.0000180400179615917, + 0.000000000631615881314582 + ], + "shoe_position": [ + 0.319999977254784, + -0.145000051892752, + -0.00010773877982269 + ], + "tcp_position": [ + 0.378930847583053, + -0.0374701644653963, + 0.242432667744345 + ], + "tcp_quaternion": [ + 0.243169497154707, + -0.0048633987445661, + 0.969951720321668, + 0.00621315147213528 + ], + "time": 1.4 + } + }, + { + "compute_ms": 1.06470799073577, + "request": { + "jaw": 0.01, + "sequence": 71, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.854, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0346793593361103, + -0.00574600717468542, + 0.405855307380974 + ], + [ + 0.281901896093072, + -0.0467162756773881, + 0.429568314661137 + ], + [ + 0.281901896093072, + -0.0467162756773881, + 0.429568314661137 + ], + [ + 0.325025390945714, + -0.0441371338090312, + 0.349463890993233 + ], + [ + 0.388742638642678, + -0.0665669150392874, + 0.23006701800182 + ], + [ + 0.388604016848509, + -0.0178964467170865, + 0.230714102698222 + ], + [ + 0.319999977254972, + -0.145000051893657, + -0.00010773877981808 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.646726838825222, + 0.0, + 0.0, + -0.762721702813769 + ], + [ + 0.463391724738866, + -0.544480729106496, + -0.451157107482147, + -0.534103088779254 + ], + [ + 0.0060429083141925, + -0.121564455322422, + -0.696580277643692, + -0.707079545213342 + ], + [ + -0.0223259953794454, + -0.698471078492238, + 0.0932791701873519, + -0.709181710740883 + ], + [ + 0.703760816254366, + -0.661959324154238, + -0.106075672656131, + -0.235113841236118 + ], + [ + -0.242966831309253, + -0.00023378316049254, + -0.970010776371514, + -0.00679396438814783 + ], + [ + 0.690706696311546, + -0.681095678904999, + -0.171638567672082, + -0.171968421330208 + ], + [ + -0.681098609320362, + -0.690703806659937, + 0.171969149529739, + -0.171637838070045 + ], + [ + 0.999999999000364, + -0.0000409124416694479, + 0.0000180400179798143, + 0.000000000669219958501588 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244562499 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392131144 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406733715 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956572519 + } + ], + "ctrl": [ + -0.240600532744276, + 1.62706720798343, + -1.58890391178554, + 0.127376340570001, + 1.16791515895218, + -0.26219282596851, + 0.021 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0505472799422552, + "qpos": [ + -0.164221755154389, + 1.59348519243311, + -1.5131131276797, + 0.101294410573243, + 1.09638815774363, + -0.187924838850044, + 0.0241964335541739, + -0.0244785335372495, + 0.319999977254972, + -0.145000051893657, + -0.00010773877981808, + 0.999999999000364, + -0.0000409124416694479, + 0.0000180400179798143, + 0.000000000669219958501588 + ], + "shoe_position": [ + 0.319999977254972, + -0.145000051893657, + -0.00010773877981808 + ], + "tcp_position": [ + 0.381603219784161, + -0.0425687216959075, + 0.243616405112033 + ], + "tcp_quaternion": [ + 0.242966831309253, + 0.00023378316049254, + 0.970010776371514, + 0.00679396438814783 + ], + "time": 1.42 + } + }, + { + "compute_ms": 0.964875012869015, + "request": { + "jaw": 0.01, + "sequence": 72, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.017, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0382746408884829, + -0.00706642022127026, + 0.405361323566302 + ], + [ + 0.28448575702446, + -0.0525302028644087, + 0.431303240512699 + ], + [ + 0.28448575702446, + -0.0525302028644087, + 0.431303240512699 + ], + [ + 0.327691735830049, + -0.0503349864091286, + 0.351231829307353 + ], + [ + 0.391220669586705, + -0.0728401074671398, + 0.231846270327639 + ], + [ + 0.391634673523682, + -0.0252326252686256, + 0.232548645182903 + ], + [ + 0.31999997725499, + -0.145000051893742, + -0.00010773877982312 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.639695104048562, + 0.0, + 0.0, + -0.768628762053763 + ], + [ + 0.462047034682715, + -0.551563922638567, + -0.442469478318626, + -0.535266791180725 + ], + [ + -0.00359684086632909, + -0.12486101332273, + -0.695996930562212, + -0.70709621886684 + ], + [ + -0.0273291364115742, + -0.694223205367441, + 0.100837068729302, + -0.712137026844157 + ], + [ + 0.703174730134518, + -0.661187482458524, + -0.0999692795674137, + -0.241624822986337 + ], + [ + -0.243285400619997, + -0.00601152666488943, + -0.969916959043481, + -0.00609655248236239 + ], + [ + 0.690147213763669, + -0.681522486026365, + -0.167778357709562, + -0.176279173639347 + ], + [ + -0.68152541406804, + -0.690144322301274, + 0.17627988546135, + -0.167777609818579 + ], + [ + 0.999999999000364, + -0.0000409124404951493, + 0.000018040017958365, + 0.000000000672763063362963 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244515576 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392092753 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406778521 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795661847 + } + ], + "ctrl": [ + -0.250269611428778, + 1.63770279582205, + -1.61890391178554, + 0.131532160541072, + 1.19055135805371, + -0.270464611687396, + 0.02 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0444018302293937, + "qpos": [ + -0.182589034276928, + 1.60682263343282, + -1.53534892407363, + 0.105888712690347, + 1.10561861221354, + -0.194512741917669, + 0.023710536143634, + -0.0239039269009053, + 0.31999997725499, + -0.145000051893742, + -0.00010773877982312, + 0.999999999000364, + -0.0000409124404951493, + 0.000018040017958365, + 0.000000000672763063362963 + ], + "shoe_position": [ + 0.31999997725499, + -0.145000051893742, + -0.00010773877982312 + ], + "tcp_position": [ + 0.384346684556022, + -0.0492665674580296, + 0.24541937179028 + ], + "tcp_quaternion": [ + 0.243285400619997, + 0.00601152666488943, + 0.969916959043481, + 0.00609655248236239 + ], + "time": 1.44 + } + }, + { + "compute_ms": 0.98787501337938, + "request": { + "jaw": 0.01, + "sequence": 73, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.424, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0418242116253261, + -0.00855433526590824, + 0.404816177935332 + ], + [ + 0.286820172398468, + -0.0586701532236217, + 0.433543104176652 + ], + [ + 0.286820172398468, + -0.0586701532236217, + 0.433543104176652 + ], + [ + 0.330237384770911, + -0.0570067171964872, + 0.353573202822206 + ], + [ + 0.393767536166554, + -0.0797044397510097, + 0.234339523909979 + ], + [ + 0.394733205620204, + -0.0333691734835121, + 0.235023394759984 + ], + [ + 0.31999997725517, + -0.145000051894603, + -0.00010773877981877 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.632295693362832, + 0.0, + 0.0, + -0.774727149488654 + ], + [ + 0.460487993961219, + -0.558688852397601, + -0.433438307267196, + -0.536608616607647 + ], + [ + -0.0143111342850151, + -0.127660423180473, + -0.69548890455088, + -0.706960530323636 + ], + [ + -0.0330828208575762, + -0.689105344016948, + 0.108092829024657, + -0.715789977664423 + ], + [ + 0.701887893194859, + -0.660694151715379, + -0.0943879225695668, + -0.248852452968782 + ], + [ + -0.244406303889057, + -0.0119052640925562, + -0.969588878481956, + -0.00460760569926022 + ], + [ + 0.688862383238415, + -0.682343345262137, + -0.164403464798077, + -0.181239280780838 + ], + [ + -0.682346267852729, + -0.688859488293419, + 0.181239978284332, + -0.164402695863164 + ], + [ + 0.999999999000364, + -0.0000409124415148836, + 0.0000180400179755308, + 0.000000000708601223336659 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244561891 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392131173 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406733701 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956573119 + } + ], + "ctrl": [ + -0.259862268563689, + 1.64914394745969, + -1.64890391178554, + 0.135662158883535, + 1.2, + -0.278200909367158, + 0.019 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0378197103639682, + "qpos": [ + -0.201766345063277, + 1.62018195600616, + -1.55983831466494, + 0.109409274245877, + 1.11523963286707, + -0.201202345486078, + 0.0231259493964382, + -0.0232244238162099, + 0.31999997725517, + -0.145000051894603, + -0.00010773877981877, + 0.999999999000364, + -0.0000409124415148836, + 0.0000180400179755308, + 0.000000000708601223336659 + ], + "shoe_position": [ + 0.31999997725517, + -0.145000051894603, + -0.00010773877981877 + ], + "tcp_position": [ + 0.387138443802897, + -0.0566327609350887, + 0.247888149301128 + ], + "tcp_quaternion": [ + 0.244406303889057, + 0.0119052640925562, + 0.969588878481956, + 0.00460760569926022 + ], + "time": 1.46 + } + }, + { + "compute_ms": 0.916207995032892, + "request": { + "jaw": 0.01, + "sequence": 74, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 7.326, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.045102488115103, + -0.0100583782794925, + 0.404260367041312 + ], + [ + 0.288785594477329, + -0.0644086356623678, + 0.43626732709801 + ], + [ + 0.288785594477329, + -0.0644086356623678, + 0.43626732709801 + ], + [ + 0.33264792301367, + -0.0634023760645335, + 0.356529694519397 + ], + [ + 0.396559615221322, + -0.0864097255812903, + 0.237684571652035 + ], + [ + 0.398014392994823, + -0.0415169632236141, + 0.23827060960656 + ], + [ + 0.319999977255187, + -0.145000051894684, + -0.00010773877982357 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.625426072996267, + 0.0, + 0.0, + -0.780283427490593 + ], + [ + 0.459100166331254, + -0.56516446742345, + -0.424960144910047, + -0.537796464542688 + ], + [ + -0.0251953481730307, + -0.129240255802926, + -0.695197062910938, + -0.706656348185198 + ], + [ + -0.0389307310006166, + -0.683354363872845, + 0.114093740601573, + -0.720065156715167 + ], + [ + 0.699829512645892, + -0.660483039327234, + -0.0906134502486404, + -0.256495634709268 + ], + [ + -0.247004614987169, + -0.0173051736333865, + -0.968856988603354, + -0.00232094269651053 + ], + [ + 0.686727946411888, + -0.683442740560798, + -0.162422447481218, + -0.186894881004989 + ], + [ + -0.683445654095728, + -0.68672504680257, + 0.186895570103684, + -0.162421654551633 + ], + [ + 0.999999999000364, + -0.0000409124403976294, + 0.0000180400179550635, + 0.000000000711977941176485 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244517435 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392094817 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406776074 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956616596 + } + ], + "ctrl": [ + -0.258588629221833, + 1.6520414955156, + -1.67890391178554, + 0.135359579583166, + 1.2, + -0.276003320857626, + 0.018 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0313030247430178, + "qpos": [ + -0.2194371590855, + 1.63268590370419, + -1.585469039903, + 0.11142553118591, + 1.12342621035131, + -0.206969989136811, + 0.0224739652051014, + -0.0224461854067734, + 0.319999977255187, + -0.145000051894684, + -0.00010773877982357, + 0.999999999000364, + -0.0000409124403976294, + 0.0000180400179550635, + 0.000000000711977941176485 + ], + "shoe_position": [ + 0.319999977255187, + -0.145000051894684, + -0.00010773877982357 + ], + "tcp_position": [ + 0.390106838975725, + -0.0638886887000507, + 0.251147355503384 + ], + "tcp_quaternion": [ + 0.247004614987169, + 0.0173051736333865, + 0.968856988603354, + 0.00232094269651053 + ], + "time": 1.48 + } + }, + { + "compute_ms": 1.04754100902937, + "request": { + "jaw": 0.01, + "sequence": 75, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.662, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0479482731546382, + -0.0114356628196302, + 0.403736510260714 + ], + [ + 0.290296977184201, + -0.0692415146577721, + 0.43958956374934 + ], + [ + 0.290296977184201, + -0.0692415146577721, + 0.43958956374934 + ], + [ + 0.334878261833268, + -0.0689121279444205, + 0.360245962648293 + ], + [ + 0.39964532174725, + -0.0921869995064433, + 0.242052504745561 + ], + [ + 0.401466215268353, + -0.0488520079082555, + 0.242498656172769 + ], + [ + 0.319999977255358, + -0.145000051895505, + -0.00010773877981945 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.619672748601953, + 0.0, + 0.0, + -0.784860296256665 + ], + [ + 0.458095499376615, + -0.57057293799111, + -0.417670351392331, + -0.538652497860067 + ], + [ + -0.0358357775310941, + -0.12899103389944, + -0.695243348169224, + -0.706196712714483 + ], + [ + -0.044084052283953, + -0.676923665759336, + 0.118589703547303, + -0.72509822043757 + ], + [ + 0.697360913846709, + -0.6602186848993, + -0.0892399066937538, + -0.264263661902298 + ], + [ + -0.251341018915877, + -0.0216137479075011, + -0.967657195804857, + 0.0002991969264381 + ], + [ + 0.684026848423009, + -0.684447083325699, + -0.162442138913796, + -0.193007803646745 + ], + [ + -0.684449985400826, + -0.684023944552649, + 0.193008492828929, + -0.162441320049266 + ], + [ + 0.999999999000364, + -0.0000409124413674104, + 0.0000180400179713971, + 0.000000000746132999584188 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008324456138 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392131265 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406733621 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956573628 + } + ], + "ctrl": [ + -0.257882408515261, + 1.65452814807673, + -1.70890391178554, + 0.135546987186385, + 1.2, + -0.274731222099939, + 0.017 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0251263441718032, + "qpos": [ + -0.234140725010299, + 1.6436562070294, + -1.61185986731628, + 0.112709733201008, + 1.13001968047535, + -0.211766300072246, + 0.0217499279714551, + -0.0216255973989663, + 0.319999977255358, + -0.145000051895505, + -0.00010773877981945, + 0.999999999000364, + -0.0000409124413674104, + 0.0000180400179713971, + 0.000000000746132999584188 + ], + "shoe_position": [ + 0.319999977255358, + -0.145000051895505, + -0.00010773877981945 + ], + "tcp_position": [ + 0.393262169071098, + -0.0702857372162276, + 0.255381128346165 + ], + "tcp_quaternion": [ + 0.251341018915877, + 0.0216137479075011, + 0.967657195804857, + -0.0002991969264381 + ], + "time": 1.5 + } + }, + { + "compute_ms": 0.997082999674603, + "request": { + "jaw": 0.01, + "sequence": 76, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.121, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0502077511831514, + -0.0125732594966012, + 0.403292515673826 + ], + [ + 0.291245187152526, + -0.0729403626954387, + 0.443499724090855 + ], + [ + 0.291245187152526, + -0.0729403626954387, + 0.443499724090855 + ], + [ + 0.336833220839491, + -0.0732585594541941, + 0.364730209634887 + ], + [ + 0.402959816463177, + -0.0967088763473417, + 0.247468066922059 + ], + [ + 0.405008316854412, + -0.0549940788025214, + 0.247751673761494 + ], + [ + 0.319999977255422, + -0.14500005189581, + -0.00010773877982135 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.615247732723839, + 0.0, + 0.0, + -0.788333829908482 + ], + [ + 0.457431653255555, + -0.574728965481771, + -0.411932781211029, + -0.539216359729459 + ], + [ + -0.0459833576962864, + -0.126818418307917, + -0.695642931954231, + -0.705608624391011 + ], + [ + -0.0481905281040435, + -0.669904382975277, + 0.121597067551614, + -0.730835100302671 + ], + [ + 0.694662687866564, + -0.659724980296624, + -0.090436419206248, + -0.272080786789092 + ], + [ + -0.257508638796936, + -0.0245781003792102, + -0.965958587562038, + 0.00303727539925369 + ], + [ + 0.680889638658906, + -0.685182106602225, + -0.164707204634799, + -0.199465078398384 + ], + [ + -0.685184995367286, + -0.680886731670133, + 0.199465777190374, + -0.164706358374342 + ], + [ + 0.999999999000364, + -0.0000409124409238102, + 0.0000180400179628573, + 0.000000000758837010199002 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244570128 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392140916 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406722464 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956565092 + } + ], + "ctrl": [ + -0.257679927676621, + 1.65661355076771, + -1.71894666032694, + 0.136031689529, + 1.2, + -0.274166009830611, + 0.016 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0194451931249791, + "qpos": [ + -0.245391731189136, + 1.65244366290729, + -1.63814647159871, + 0.113718498873035, + 1.13467806638055, + -0.21576125730164, + 0.0209744890968238, + -0.0207915392148196, + 0.319999977255422, + -0.14500005189581, + -0.00010773877982135, + 0.999999999000364, + -0.0000409124409238102, + 0.0000180400179628573, + 0.000000000758837010199002 + ], + "shoe_position": [ + 0.319999977255422, + -0.14500005189581, + -0.00010773877982135 + ], + "tcp_position": [ + 0.396528468255165, + -0.0754822245341353, + 0.260620970613589 + ], + "tcp_quaternion": [ + 0.257508638796936, + 0.0245781003792102, + 0.965958587562038, + -0.00303727539925369 + ], + "time": 1.52 + } + }, + { + "compute_ms": 1.03124999441206, + "request": { + "jaw": 0.01, + "sequence": 77, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.05, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0515341911157961, + -0.0133425855424653, + 0.403016074597661 + ], + [ + 0.291367109398715, + -0.0754423131666618, + 0.447554231641923 + ], + [ + 0.291367109398715, + -0.0754423131666618, + 0.447554231641923 + ], + [ + 0.338139345705561, + -0.0763420152715549, + 0.369486601222978 + ], + [ + 0.405954096161579, + -0.0998347521862102, + 0.253345170501717 + ], + [ + 0.408114556510264, + -0.0597803451607522, + 0.253467686533791 + ], + [ + 0.319999977255585, + -0.145000051896592, + -0.0001077387798181 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.612103134866843, + 0.0, + 0.0, + -0.790777941198529 + ], + [ + 0.456703424256344, + -0.577441598217466, + -0.408121551315363, + -0.539833291185835 + ], + [ + -0.0549479162567299, + -0.123516282107313, + -0.696236833307738, + -0.704967181150331 + ], + [ + -0.0511650296114297, + -0.663046155125713, + 0.123406418246512, + -0.736561465088581 + ], + [ + 0.69195099957751, + -0.658994180103782, + -0.0935693648651479, + -0.279598388285344 + ], + [ + -0.264836405849368, + -0.026381739102801, + -0.96391576403645, + 0.00566408163139079 + ], + [ + 0.677587712562905, + -0.685595051911579, + -0.168613366844897, + -0.205921949047101 + ], + [ + -0.685597926667746, + -0.677584803822183, + 0.205922664411481, + -0.168612493190212 + ], + [ + 0.999999999000364, + -0.0000409124416765268, + 0.0000180400179753673, + 0.000000000791387869602452 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244561858 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392130513 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406734382 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956573133 + } + ], + "ctrl": [ + -0.257834921136198, + 1.65832587584014, + -1.7213336790012, + 0.136660323861535, + 1.2, + -0.274073489256914, + 0.0150000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0150209318774649, + "qpos": [ + -0.253357205851148, + 1.65770961808739, + -1.66086760044433, + 0.114664595919362, + 1.13673791020671, + -0.218958361986856, + 0.0201607786942744, + -0.01995203872468, + 0.319999977255585, + -0.145000051896592, + -0.0001077387798181, + 0.999999999000364, + -0.0000409124416765268, + 0.0000180400179753673, + 0.000000000791387869602452 + ], + "shoe_position": [ + 0.319999977255585, + -0.145000051896592, + -0.0001077387798181 + ], + "tcp_position": [ + 0.399385987498676, + -0.0793299322730659, + 0.266301708331344 + ], + "tcp_quaternion": [ + 0.264836405849368, + 0.026381739102801, + 0.96391576403645, + -0.00566408163139079 + ], + "time": 1.54 + } + }, + { + "compute_ms": 1.20270799379796, + "request": { + "jaw": 0.01, + "sequence": 78, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.685, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0520231943122395, + -0.013756042888647, + 0.402905623404741 + ], + [ + 0.290802264256784, + -0.0768994398288922, + 0.451457857908059 + ], + [ + 0.290802264256784, + -0.0768994398288922, + 0.451457857908059 + ], + [ + 0.338704671030198, + -0.0782479764026375, + 0.374085076216603 + ], + [ + 0.408186390000656, + -0.10155926341233, + 0.259041059359704 + ], + [ + 0.410353731950316, + -0.0631929191254786, + 0.259028090161465 + ], + [ + 0.319999977255646, + -0.145000051896883, + -0.00010773877982073 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.610060764676608, + 0.0, + 0.0, + -0.792354632347279 + ], + [ + 0.45586703277486, + -0.578911957381426, + -0.406033182881408, + -0.540539775066595 + ], + [ + -0.0624833180271732, + -0.119661890434597, + -0.696909629706477, + -0.704339289666788 + ], + [ + -0.0530782180450119, + -0.656753915020154, + 0.124336496365901, + -0.741887749963779 + ], + [ + 0.689641752490974, + -0.658125821667392, + -0.0973972925819044, + -0.285969270155925 + ], + [ + -0.271883121550384, + -0.0271021464276688, + -0.961916650512985, + 0.00783577315350655 + ], + [ + 0.674638508171178, + -0.685717089388081, + -0.173086753969204, + -0.211414124916265 + ], + [ + -0.685719951631827, + -0.674635598912721, + 0.211414859259578, + -0.17308585701314 + ], + [ + 0.999999999000364, + -0.0000409124410588822, + 0.0000180400179635977, + 0.000000000803495210842647 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008324456845 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392138804 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406724709 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956566697 + } + ], + "ctrl": [ + -0.258173772332497, + 1.65954612763238, + -1.72319087987243, + 0.137293581938107, + 1.2, + -0.274249421844389, + 0.0140000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0124505555250509, + "qpos": [ + -0.258517529354858, + 1.65977326567232, + -1.67915826678886, + 0.115685197000138, + 1.13813170471299, + -0.221687239072008, + 0.0193165254497746, + -0.0191109896050745, + 0.319999977255646, + -0.145000051896883, + -0.00010773877982073, + 0.999999999000364, + -0.0000409124410588822, + 0.0000180400179635977, + 0.000000000803495210842647 + ], + "shoe_position": [ + 0.319999977255646, + -0.145000051896883, + -0.00010773877982073 + ], + "tcp_position": [ + 0.401436318504249, + -0.0818263052022407, + 0.271815154596445 + ], + "tcp_quaternion": [ + 0.271883121550384, + 0.0271021464276688, + 0.961916650512985, + -0.00783577315350655 + ], + "time": 1.56 + } + }, + { + "compute_ms": 0.958999997237697, + "request": { + "jaw": 0.01, + "sequence": 79, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.55, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0520513764993708, + -0.0139240436736567, + 0.402892076858733 + ], + [ + 0.289953918287439, + -0.0775694282273569, + 0.454964122447401 + ], + [ + 0.289953918287439, + -0.0775694282273569, + 0.454964122447401 + ], + [ + 0.338849971092836, + -0.0792103602245167, + 0.378221110814533 + ], + [ + 0.409843887946418, + -0.102087391226187, + 0.264159849150763 + ], + [ + 0.411932742037453, + -0.0654308142324646, + 0.264046388990259 + ], + [ + 0.319999977255802, + -0.145000051897628, + -0.00010773877981815 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608918891336896, + 0.0, + 0.0, + -0.793232490366504 + ], + [ + 0.45515608497523, + -0.579547137656077, + -0.405126048575808, + -0.541138557404683 + ], + [ + -0.0685214084174221, + -0.115690766154171, + -0.697579849642076, + -0.703777533449664 + ], + [ + -0.0540217173829243, + -0.651265571889246, + 0.124695069848107, + -0.746582847699 + ], + [ + 0.687912769241148, + -0.657132516560817, + -0.101313354761981, + -0.291012854939942 + ], + [ + -0.278110558911619, + -0.0269038557478244, + -0.96012618829671, + 0.00940223987126731 + ], + [ + 0.672264800500226, + -0.685558705801756, + -0.177630438821223, + -0.215677365785084 + ], + [ + -0.685561557974711, + -0.672261891913754, + 0.215678119405588, + -0.177629523777712 + ], + [ + 0.999999999000364, + -0.0000409124416578251, + 0.0000180400179733038, + 0.000000000834517265110825 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244560733 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392129512 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406735427 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956574216 + } + ], + "ctrl": [ + -0.258520888194595, + 1.660328755681, + -1.72461451570289, + 0.13779380599901, + 1.2, + -0.274442542816348, + 0.0130000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0118082813453973, + "qpos": [ + -0.261398161080363, + 1.6600248433587, + -1.69368135036543, + 0.116946466619297, + 1.13934539379581, + -0.224194443585956, + 0.0184484186961384, + -0.0182678014462263, + 0.319999977255802, + -0.145000051897628, + -0.00010773877981815, + 0.999999999000364, + -0.0000409124416578251, + 0.0000180400179733038, + 0.000000000834517265110825 + ], + "shoe_position": [ + 0.319999977255802, + -0.145000051897628, + -0.00010773877981815 + ], + "tcp_position": [ + 0.402890363032739, + -0.0831736507406114, + 0.276779889269894 + ], + "tcp_quaternion": [ + 0.278110558911619, + 0.0269038557478244, + 0.96012618829671, + -0.00940223987126731 + ], + "time": 1.58 + } + }, + { + "compute_ms": 1.02362499455921, + "request": { + "jaw": 0.01, + "sequence": 80, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 11.645, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0518298633887418, + -0.0139277566795343, + 0.402932996145471 + ], + [ + 0.28904660814803, + -0.0776778830345091, + 0.457923810756018 + ], + [ + 0.28904660814803, + -0.0776778830345091, + 0.457923810756018 + ], + [ + 0.338761218295435, + -0.0794661700377911, + 0.381711829809875 + ], + [ + 0.411039443751069, + -0.101677917240871, + 0.268468510911814 + ], + [ + 0.412992769570261, + -0.066758169641662, + 0.268290042738706 + ], + [ + 0.319999977255859, + -0.145000051897905, + -0.00010773877982094 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608469218542624, + 0.0, + 0.0, + -0.793577475793087 + ], + [ + 0.454643298074615, + -0.579622601077876, + -0.405018074065489, + -0.541569452162728 + ], + [ + -0.0730947128743592, + -0.111945345916409, + -0.698190689946275, + -0.703317256257668 + ], + [ + -0.0541851516426353, + -0.646731228522707, + 0.124693858006656, + -0.750502584386217 + ], + [ + 0.686780543833141, + -0.65608609313783, + -0.104935628893575, + -0.294740626300657 + ], + [ + -0.283256893073012, + -0.0260674672552865, + -0.958633720275866, + 0.0103638809126518 + ], + [ + 0.670529482430962, + -0.68518335820777, + -0.181860868998189, + -0.21872494863004 + ], + [ + -0.685186203018393, + -0.670526575436971, + 0.218725720198719, + -0.181859941024836 + ], + [ + 0.999999999000364, + -0.0000409124410038656, + 0.0000180400179608485, + 0.000000000846055982088748 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244566954 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889339213763 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406726027 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956568149 + } + ], + "ctrl": [ + -0.258796821705644, + 1.66078428367281, + -1.72568447214938, + 0.138147877107, + 1.2, + -0.274551730792012, + 0.0120000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.01241774529146, + "qpos": [ + -0.262531687568914, + 1.65926390944706, + -1.70478754461029, + 0.118398552725857, + 1.14050200420857, + -0.226453601568723, + 0.0175622276957771, + -0.0174125647276126, + 0.319999977255859, + -0.145000051897905, + -0.00010773877982094, + 0.999999999000364, + -0.0000409124410038656, + 0.0000180400179608485, + 0.000000000846055982088748 + ], + "shoe_position": [ + 0.319999977255859, + -0.145000051897905, + -0.00010773877982094 + ], + "tcp_position": [ + 0.403882162240149, + -0.0836237584953147, + 0.280968700922752 + ], + "tcp_quaternion": [ + 0.283256893073012, + 0.0260674672552865, + 0.958633720275866, + -0.0103638809126518 + ], + "time": 1.6 + } + }, + { + "compute_ms": 1.03945797309279, + "request": { + "jaw": 0.01, + "sequence": 81, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.546, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0514827736681255, + -0.0138441255200423, + 0.403001185140388 + ], + [ + 0.288177707808136, + -0.0774983625354785, + 0.460303004993153 + ], + [ + 0.288177707808136, + -0.0774983625354785, + 0.460303004993153 + ], + [ + 0.338534304276516, + -0.0793149148908247, + 0.38451435279567 + ], + [ + 0.411849637553022, + -0.100665782198766, + 0.271910847797907 + ], + [ + 0.413641627545987, + -0.0675077877036681, + 0.271702412849094 + ], + [ + 0.319999977256008, + -0.145000051898616, + -0.00010773877981866 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608399875213261, + 0.0, + 0.0, + -0.793630639429003 + ], + [ + 0.454250662425128, + -0.579399745364862, + -0.405336816821682, + -0.541898824215676 + ], + [ + -0.0764673792847666, + -0.108717244215423, + -0.698700623164316, + -0.702958562011531 + ], + [ + -0.0538175626037963, + -0.643125563941773, + 0.124637849526002, + -0.753630271038456 + ], + [ + 0.686195817365694, + -0.65499826888367, + -0.107972970467631, + -0.297412853854065 + ], + [ + -0.287297492387397, + -0.0249509461149756, + -0.957455858939892, + 0.0107647265433926 + ], + [ + 0.669413166766059, + -0.684633927556976, + -0.1855075081993, + -0.220792576414681 + ], + [ + -0.684636767631476, + -0.669410262103116, + 0.220793363454728, + -0.185506571453709 + ], + [ + 0.999999999000364, + -0.0000409124415380691, + 0.000018040017969362, + 0.000000000875621093890547 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244560043 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392129326 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406735636 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956574893 + } + ], + "ctrl": [ + -0.258984606428107, + 1.66101691467361, + -1.72645547697521, + 0.138384044492939, + 1.2, + -0.274569117389486, + 0.0110000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0134711125983351, + "qpos": [ + -0.262706443049696, + 1.65798911392257, + -1.71293116131875, + 0.120139957867073, + 1.14164511577416, + -0.228529162776126, + 0.0166561394673585, + -0.0165508970191994, + 0.319999977256008, + -0.145000051898616, + -0.00010773877981866, + 0.999999999000364, + -0.0000409124415380691, + 0.000018040017969362, + 0.000000000875621093890547 + ], + "shoe_position": [ + 0.319999977256008, + -0.145000051898616, + -0.00010773877981866 + ], + "tcp_position": [ + 0.4045042511771, + -0.0835099861366016, + 0.284326686972092 + ], + "tcp_quaternion": [ + 0.287297492387397, + 0.0249509461149756, + 0.957455858939892, + -0.0107647265433926 + ], + "time": 1.62 + } + }, + { + "compute_ms": 0.97908399766311, + "request": { + "jaw": 0.01, + "sequence": 82, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 5.765, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0511241812453312, + -0.0137436502452178, + 0.403071829440113 + ], + [ + 0.287423051453223, + -0.0772726998111347, + 0.462120589763468 + ], + [ + 0.287423051453223, + -0.0772726998111347, + 0.462120589763468 + ], + [ + 0.338252996785517, + -0.079054790663836, + 0.386647764972298 + ], + [ + 0.412353968944267, + -0.0994409798412528, + 0.274512587172907 + ], + [ + 0.413986722500451, + -0.0680713492572861, + 0.274297683581391 + ], + [ + 0.319999977256063, + -0.14500005189888, + -0.00010773877982141 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608429107842516, + 0.0, + 0.0, + -0.793608228743856 + ], + [ + 0.453910235105305, + -0.579115171485466, + -0.405743290955451, + -0.542184007940705 + ], + [ + -0.0789482221157353, + -0.10619877657306, + -0.699087848452815, + -0.702684266384814 + ], + [ + -0.0532765909878005, + -0.640368729502568, + 0.124676126816824, + -0.756006189478592 + ], + [ + 0.685971219322237, + -0.653992439457421, + -0.110249462792737, + -0.299303243129787 + ], + [ + -0.290277691216989, + -0.0238838124209456, + -0.956583126396976, + 0.0108234827372679 + ], + [ + 0.668754503466027, + -0.684058360794325, + -0.188369407324413, + -0.222145311689306 + ], + [ + -0.684061198074358, + -0.668751601245014, + 0.222146110871355, + -0.188368464839624 + ], + [ + 0.999999999000364, + -0.000040912440899279, + 0.0000180400179572177, + 0.000000000886617891191569 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244566002 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.72889339213716 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406726601 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956569093 + } + ], + "ctrl": [ + -0.259103351682267, + 1.66111471601236, + -1.72698560294512, + 0.138528349520065, + 1.2, + -0.274517162459457, + 0.0100000000000001 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.014545626888862, + "qpos": [ + -0.26263277391309, + 1.65665935143762, + -1.71873472837621, + 0.121936811382854, + 1.14279010161898, + -0.230400618452191, + 0.0157394393294191, + -0.0156733891124958, + 0.319999977256063, + -0.14500005189888, + -0.00010773877982141, + 0.999999999000364, + -0.000040912440899279, + 0.0000180400179572177, + 0.000000000886617891191569 + ], + "shoe_position": [ + 0.319999977256063, + -0.14500005189888, + -0.00010773877982141 + ], + "tcp_position": [ + 0.404849538245127, + -0.0832045875855284, + 0.286873616260685 + ], + "tcp_quaternion": [ + 0.290277691216989, + 0.0238838124209456, + 0.956583126396976, + -0.0108234827372679 + ], + "time": 1.64 + } + }, + { + "compute_ms": 0.919667014386505, + "request": { + "jaw": 0.01, + "sequence": 83, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 2.328, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0508430249804896, + -0.0136613803225735, + 0.403127030067638 + ], + [ + 0.286855747102495, + -0.077082482774579, + 0.463423058596333 + ], + [ + 0.286855747102495, + -0.077082482774579, + 0.463423058596333 + ], + [ + 0.337991091529481, + -0.0787976310128662, + 0.388155261437759 + ], + [ + 0.412621523953832, + -0.0981948019279184, + 0.276317882025676 + ], + [ + 0.414107300964125, + -0.0685788987816624, + 0.276109458379818 + ], + [ + 0.319999977256204, + -0.145000051899556, + -0.00010773877981929 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608477731403716, + 0.0, + 0.0, + -0.793570948552042 + ], + [ + 0.453659950745812, + -0.578878088524021, + -0.406081467967668, + -0.542393444917347 + ], + [ + -0.0806969445619545, + -0.10437273233227, + -0.699362804805557, + -0.702485589274517 + ], + [ + -0.0527390407141393, + -0.638377192380704, + 0.124779449080106, + -0.757709207361206 + ], + [ + 0.68599971810035, + -0.653175331989478, + -0.111728130935751, + -0.300471624624155 + ], + [ + -0.292197009888827, + -0.0229381335704205, + -0.956023296961927, + 0.0106866789219808 + ], + [ + 0.668455378082446, + -0.683565767352, + -0.190395267953, + -0.222833774725089 + ], + [ + -0.683568603362955, + -0.668452477951333, + 0.222834582502134, + -0.19039432254729 + ], + [ + 0.999999999000364, + -0.0000409124413992939, + 0.0000180400179651658, + 0.000000000914794462445397 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.80008324455957 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392129423 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406735552 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956575366 + } + ], + "ctrl": [ + -0.259176837484437, + 1.66113709904147, + -1.72732765601045, + 0.138602071548479, + 1.2, + -0.274437636847333, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0153758149076458, + "qpos": [ + -0.262510233088763, + 1.6556137438304, + -1.7227896264604, + 0.123541429608009, + 1.14413727168424, + -0.232057123493861, + 0.014846993160429, + -0.014806888422337, + 0.319999977256204, + -0.145000051899556, + -0.00010773877981929, + 0.999999999000364, + -0.0000409124413992939, + 0.0000180400179651658, + 0.000000000914794462445397 + ], + "shoe_position": [ + 0.319999977256204, + -0.145000051899556, + -0.00010773877981929 + ], + "tcp_position": [ + 0.40499232155953, + -0.0828592464969352, + 0.288648782482266 + ], + "tcp_quaternion": [ + 0.292197009888827, + 0.0229381335704205, + 0.956023296961927, + -0.0106866789219808 + ], + "time": 1.66 + } + }, + { + "compute_ms": 0.966333987889811, + "request": { + "jaw": 0.01, + "sequence": 84, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.316, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0506805772112802, + -0.0136107475537341, + 0.403158930110322 + ], + [ + 0.286508578295032, + -0.0769497303270578, + 0.464258680208688 + ], + [ + 0.286508578295032, + -0.0769497303270578, + 0.464258680208688 + ], + [ + 0.337794184618079, + -0.0785751267850157, + 0.389091192937382 + ], + [ + 0.412713063038115, + -0.0970521786768648, + 0.277392946533933 + ], + [ + 0.41407200004527, + -0.068992442779159, + 0.277198476952825 + ], + [ + 0.319999977256257, + -0.145000051899808, + -0.00010773877982192 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608528696799462, + 0.0, + 0.0, + -0.793531867773153 + ], + [ + 0.453530180723323, + -0.578728741625119, + -0.406294282038287, + -0.542501958681321 + ], + [ + -0.0818073459015756, + -0.10317718200103, + -0.699540184059734, + -0.702357144305189 + ], + [ + -0.0522475929270819, + -0.637073088924078, + 0.12493270498785, + -0.758814791386198 + ], + [ + 0.686239400558326, + -0.652562545879943, + -0.112459805401319, + -0.300982393181285 + ], + [ + -0.2931318982525, + -0.0221148038848439, + -0.955759584521493, + 0.0104039546002349 + ], + [ + 0.668468820659676, + -0.68317937818557, + -0.191638516026124, + -0.222912655995897 + ], + [ + -0.68318221425356, + -0.668465922167875, + 0.222913469047597, + -0.191637570285738 + ], + [ + 0.999999999000364, + -0.0000409124407881085, + 0.0000180400179535698, + 0.000000000925274779074611 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244565259 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392136907 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540672692 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956569826 + } + ], + "ctrl": [ + -0.259212116409773, + 1.66113627545436, + -1.72753503299351, + 0.138615131207064, + 1.2, + -0.274344199149897, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0158367127451022, + "qpos": [ + -0.262381784206423, + 1.6550068339962, + -1.72547280369576, + 0.124903940715569, + 1.14573679763325, + -0.233519254085303, + 0.0140577748234675, + -0.014035521652215, + 0.319999977256257, + -0.145000051899808, + -0.00010773877982192, + 0.999999999000364, + -0.0000409124407881085, + 0.0000180400179535698, + 0.000000000925274779074611 + ], + "shoe_position": [ + 0.319999977256257, + -0.145000051899808, + -0.00010773877982192 + ], + "tcp_position": [ + 0.404995030198838, + -0.0825184084634451, + 0.28971464750117 + ], + "tcp_quaternion": [ + 0.2931318982525, + 0.0221148038848439, + 0.955759584521493, + -0.0104039546002349 + ], + "time": 1.68 + } + }, + { + "compute_ms": 1.07449997449294, + "request": { + "jaw": 0.01, + "sequence": 85, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.781, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.050633478423536, + -0.0135912692381939, + 0.403168391756151 + ], + [ + 0.286367797217798, + -0.0768732978289948, + 0.46468723517862 + ], + [ + 0.286367797217798, + -0.0768732978289948, + 0.46468723517862 + ], + [ + 0.337675165981027, + -0.0783940362567358, + 0.389532410067531 + ], + [ + 0.412680990084242, + -0.0960473929338836, + 0.27784164008304 + ], + [ + 0.41393339151278, + -0.0693137402959658, + 0.277665234586002 + ], + [ + 0.319999977256391, + -0.145000051900452, + -0.00010773877981991 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608578604840281, + 0.0, + 0.0, + -0.793493592747072 + ], + [ + 0.453515370367975, + -0.578666535280729, + -0.406382874819052, + -0.54251433975518 + ], + [ + -0.0823659988993301, + -0.102532704819563, + -0.699634936550759, + -0.702291849750028 + ], + [ + -0.0518111243796821, + -0.63636980025783, + 0.125124810120033, + -0.759402967206969 + ], + [ + 0.686640597808446, + -0.652134742610908, + -0.112567744251881, + -0.300954265421025 + ], + [ + -0.293249863702945, + -0.0214075700347266, + -0.955743636875121, + 0.0100166838889229 + ], + [ + 0.668731385096442, + -0.682894259182403, + -0.192222019170513, + -0.22249597908439 + ], + [ + -0.682897096364363, + -0.668728487814297, + 0.22249679461169, + -0.192221075197933 + ], + [ + 0.999999999000364, + -0.0000409124412628347, + 0.0000180400179611341, + 0.00000000095212798780352 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244559175 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392129582 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406735397 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956575762 + } + ], + "ctrl": [ + -0.259214719185572, + 1.66114635562938, + -1.72765060452215, + 0.138576762537741, + 1.2, + -0.274240338114298, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0159183239647661, + "qpos": [ + -0.262255994061163, + 1.65482644428273, + -1.72700907265247, + 0.126028429411481, + 1.14746744052628, + -0.234803848445832, + 0.013387550637596, + -0.013376003155115, + 0.319999977256391, + -0.145000051900452, + -0.00010773877981991, + 0.999999999000364, + -0.0000409124412628347, + 0.0000180400179611341, + 0.00000000095212798780352 + ], + "shoe_position": [ + 0.319999977256391, + -0.145000051900452, + -0.00010773877981991 + ], + "tcp_position": [ + 0.404905711429343, + -0.0821992630579062, + 0.290170571780824 + ], + "tcp_quaternion": [ + 0.293249863702945, + 0.0214075700347266, + 0.955743636875121, + -0.0100166838889229 + ], + "time": 1.7 + } + }, + { + "compute_ms": 0.950000016018748, + "request": { + "jaw": 0.01, + "sequence": 86, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 12.413, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0506412779763243, + -0.0135868253909992, + 0.40316719761014 + ], + [ + 0.286351942522645, + -0.0768320738893299, + 0.46481436670586 + ], + [ + 0.286351942522645, + -0.0768320738893299, + 0.46481436670586 + ], + [ + 0.337586109343201, + -0.0782409777054157, + 0.389607441409778 + ], + [ + 0.412528618631032, + -0.0951674365270923, + 0.277827678979809 + ], + [ + 0.413692127278046, + -0.0695501735075881, + 0.277670912928639 + ], + [ + 0.319999977256489, + -0.145000051900919, + -0.00010773877981979 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608626381344969, + 0.0, + 0.0, + -0.793456947748854 + ], + [ + 0.453554213188626, + -0.578646693554783, + -0.406411126863078, + -0.542481866700489 + ], + [ + -0.0825083387375998, + -0.102306644012443, + -0.699668028847189, + -0.70227514126499 + ], + [ + -0.0514320966048223, + -0.636124118023663, + 0.125336742680159, + -0.759599596393901 + ], + [ + 0.687145699871812, + -0.651858503078563, + -0.112215363355055, + -0.300531181974428 + ], + [ + -0.292764683480254, + -0.0208015272834183, + -0.955910342487397, + 0.00956836950643379 + ], + [ + 0.669166269480602, + -0.682695130768139, + -0.192307480258908, + -0.221724367743733 + ], + [ + -0.68269796979516, + -0.669163373043283, + 0.22172518363362, + -0.192306539559998 + ], + [ + 0.999999999000364, + -0.0000409124412922467, + 0.0000180400179609651, + 0.000000000971561075611424 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244576054 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392145286 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406718181 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.7423779565594 + } + ], + "ctrl": [ + -0.25919237943765, + 1.66118001955538, + -1.72770541338614, + 0.138500754864998, + 1.2, + -0.274131776591846, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0156722603811987, + "qpos": [ + -0.262135570636603, + 1.6548492206976, + -1.7275576353936, + 0.126936540478795, + 1.14925647976748, + -0.235928308891698, + 0.0128251472059997, + -0.012819004029492, + 0.319999977256489, + -0.145000051900919, + -0.00010773877981979, + 0.999999999000364, + -0.0000409124412922467, + 0.0000180400179609651, + 0.000000000971561075611424 + ], + "shoe_position": [ + 0.319999977256489, + -0.145000051900919, + -0.00010773877981979 + ], + "tcp_position": [ + 0.404720749325405, + -0.0818986413142856, + 0.290175240833786 + ], + "tcp_quaternion": [ + 0.292764683480254, + 0.0208015272834183, + 0.955910342487397, + -0.00956836950643379 + ], + "time": 1.72 + } + }, + { + "compute_ms": 1.04358402313665, + "request": { + "jaw": 0.01, + "sequence": 87, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 6.843, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0506830092911468, + -0.0135917183781997, + 0.403159413971263 + ], + [ + 0.28640253036119, + -0.0768100225901805, + 0.464800355682686 + ], + [ + 0.28640253036119, + -0.0768100225901805, + 0.464800355682686 + ], + [ + 0.337498607007492, + -0.0780992430330206, + 0.38949739867398 + ], + [ + 0.412274733269633, + -0.094378829357663, + 0.277563227095383 + ], + [ + 0.413362447002343, + -0.0696959493219359, + 0.277427050649269 + ], + [ + 0.319999977256617, + -0.145000051901534, + -0.00010773877981864 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608672415818069, + 0.0, + 0.0, + -0.793421634581636 + ], + [ + 0.453625933552239, + -0.578653268140975, + -0.406401765830033, + -0.54242189521521 + ], + [ + -0.0824586333403022, + -0.102274976638156, + -0.699672658572325, + -0.702280979229574 + ], + [ + -0.0510911057352149, + -0.636091984037192, + 0.125549894762113, + -0.759614317060707 + ], + [ + 0.687731179416043, + -0.651678040432663, + -0.111558122440573, + -0.299827186549848 + ], + [ + -0.291868049046563, + -0.0202536349505587, + -0.956201167583782, + 0.00906417831104356 + ], + [ + 0.669728430578228, + -0.682544256932764, + -0.192060880202797, + -0.220702933598657 + ], + [ + -0.682547098344834, + -0.669725534781007, + 0.220703748442318, + -0.192059943837469 + ], + [ + 0.999999999000364, + -0.0000409124415552551, + 0.0000180400179647501, + 0.000000000997152996950228 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244559352 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392128608 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406736391 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956575558 + } + ], + "ctrl": [ + -0.259152959100085, + 1.6612340292751, + -1.72771856673727, + 0.138401526486944, + 1.2, + -0.2740230600727, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0152192245285472, + "qpos": [ + -0.262019532841148, + 1.65499761322684, + -1.72768051096929, + 0.12771684506446, + 1.15135238628565, + -0.236935128271166, + 0.0123546631310677, + -0.0123525469918475, + 0.319999977256617, + -0.145000051901534, + -0.00010773877981864, + 0.999999999000364, + -0.0000409124415552551, + 0.0000180400179647501, + 0.000000000997152996950228 + ], + "shoe_position": [ + 0.319999977256617, + -0.145000051901534, + -0.00010773877981864 + ], + "tcp_position": [ + 0.404451577879516, + -0.0815989737798276, + 0.289937102992871 + ], + "tcp_quaternion": [ + 0.291868049046563, + 0.0202536349505587, + 0.956201167583782, + -0.00906417831104356 + ], + "time": 1.74 + } + }, + { + "compute_ms": 1.24870799481869, + "request": { + "jaw": 0.01, + "sequence": 88, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.748, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0507590568457826, + -0.0136058755013778, + 0.403144958505356 + ], + [ + 0.286500453133141, + -0.0768010733106257, + 0.464725908046076 + ], + [ + 0.286500453133141, + -0.0768010733106257, + 0.464725908046076 + ], + [ + 0.337428698145772, + -0.0779685029590372, + 0.389307359663072 + ], + [ + 0.411988969204071, + -0.093675870526015, + 0.277190223879439 + ], + [ + 0.413011335058163, + -0.0697728437873125, + 0.27707401104957 + ], + [ + 0.31999997725671, + -0.145000051901979, + -0.00010773877981931 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608717901713229, + 0.0, + 0.0, + -0.793386738062746 + ], + [ + 0.453731680209381, + -0.578685903829364, + -0.406355293689146, + -0.542333442057903 + ], + [ + -0.0823320557024309, + -0.102320858078727, + -0.699665950294877, + -0.702295829835129 + ], + [ + -0.0507754172938601, + -0.636146844760432, + 0.125754999957569, + -0.759555612766868 + ], + [ + 0.688345728838387, + -0.651547399188765, + -0.110765650653951, + -0.298993502998834 + ], + [ + -0.290784590055701, + -0.0197404308430742, + -0.95654676134825, + 0.00853996079862002 + ], + [ + 0.670343479773337, + -0.682417949534334, + -0.191657646729242, + -0.219573923153316 + ], + [ + -0.682420793555839, + -0.670340584511988, + 0.219574736286212, + -0.191656715153905 + ], + [ + 0.999999999000364, + -0.0000409124413959153, + 0.0000180400179610984, + 0.00000000101567335864046 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.8000832445741 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392143028 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406720569 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956561273 + } + ], + "ctrl": [ + -0.259102400776746, + 1.66130370791566, + -1.72770940945466, + 0.138287942009339, + 1.2, + -0.273910624869803, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0146879036712634, + "qpos": [ + -0.261904872757596, + 1.65527289049847, + -1.72770997636819, + 0.128419360729295, + 1.15361307644115, + -0.237863112343908, + 0.0119621464065766, + -0.0119630165948089, + 0.31999997725671, + -0.145000051901979, + -0.00010773877981931, + 0.999999999000364, + -0.0000409124413959153, + 0.0000180400179610984, + 0.00000000101567335864046 + ], + "shoe_position": [ + 0.31999997725671, + -0.145000051901979, + -0.00010773877981931 + ], + "tcp_position": [ + 0.404160691061224, + -0.0813075178883382, + 0.28959330347823 + ], + "tcp_quaternion": [ + 0.290784590055701, + 0.0197404308430742, + 0.95654676134825, + -0.00853996079862002 + ], + "time": 1.76 + } + }, + { + "compute_ms": 0.961334008025006, + "request": { + "jaw": 0.01, + "sequence": 89, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.337, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0508644885238907, + -0.0136279301978306, + 0.403124762921321 + ], + [ + 0.286635203659788, + -0.076802209345861, + 0.464614864843779 + ], + [ + 0.286635203659788, + -0.076802209345861, + 0.464614864843779 + ], + [ + 0.337390351281233, + -0.0778519811192876, + 0.389077990130834 + ], + [ + 0.411722600092034, + -0.0930585346672816, + 0.276774979352301 + ], + [ + 0.41268814725772, + -0.0698061226988494, + 0.276676681683213 + ], + [ + 0.319999977256832, + -0.145000051902565, + -0.0001077387798187 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608763076832224, + 0.0, + 0.0, + -0.793352075869071 + ], + [ + 0.453866651240483, + -0.578740762686341, + -0.406277158606329, + -0.542220492873286 + ], + [ + -0.0821613632139228, + -0.102411228970958, + -0.699652728273576, + -0.702315819553305 + ], + [ + -0.0504802829937402, + -0.636252570609517, + 0.125950535087774, + -0.759454323927882 + ], + [ + 0.688945890341587, + -0.651441220011252, + -0.109950919686667, + -0.298142067329897 + ], + [ + -0.289670465180102, + -0.0192467965328147, + -0.956899183868548, + 0.00803332666309706 + ], + [ + 0.670950924340529, + -0.682308904136423, + -0.191218891247465, + -0.218437066664141 + ], + [ + -0.6823117507351, + -0.670948029541815, + 0.218437877935564, + -0.191217964495408 + ], + [ + 0.999999999000364, + -0.000040912441534959, + 0.0000180400179626183, + 0.00000000104006329492529 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244558378 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392127756 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406737279 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956576497 + } + ], + "ctrl": [ + -0.259048314461066, + 1.66137929459957, + -1.72769307792652, + 0.138171926837179, + 1.2, + -0.273799913527482, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0141528321980981, + "qpos": [ + -0.261790991081328, + 1.65565680252727, + -1.72772167845429, + 0.129061517850244, + 1.15579871827528, + -0.238754373049207, + 0.0116350540578644, + -0.0116376038505128, + 0.319999977256832, + -0.145000051902565, + -0.0001077387798187, + 0.999999999000364, + -0.000040912441534959, + 0.0000180400179626183, + 0.00000000104006329492529 + ], + "shoe_position": [ + 0.319999977256832, + -0.145000051902565, + -0.0001077387798187 + ], + "tcp_position": [ + 0.403894368950483, + -0.0810357317938346, + 0.289206671597982 + ], + "tcp_quaternion": [ + 0.289670465180102, + 0.0192467965328147, + 0.956899183868547, + -0.00803332666309706 + ], + "time": 1.78 + } + }, + { + "compute_ms": 0.94787499983795, + "request": { + "jaw": 0.01, + "sequence": 90, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.859, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0509867806565537, + -0.0136545667733855, + 0.403101232558002 + ], + [ + 0.28679063099454, + -0.0768093674035359, + 0.464484191261103 + ], + [ + 0.28679063099454, + -0.0768093674035359, + 0.464484191261103 + ], + [ + 0.337380888151993, + -0.0777492419487183, + 0.388835338071962 + ], + [ + 0.411493600150182, + -0.0925208942169673, + 0.27635723246288 + ], + [ + 0.412409579695447, + -0.0698114499613873, + 0.276274345311461 + ], + [ + 0.319999977256921, + -0.145000051902988, + -0.00010773877981961 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608807585493769, + 0.0, + 0.0, + -0.793317921041273 + ], + [ + 0.454018055409296, + -0.578808625671592, + -0.406180470786279, + -0.542093723780641 + ], + [ + -0.0819678243480716, + -0.102525523924149, + -0.699635988885705, + -0.702338433927436 + ], + [ + -0.0502044877878621, + -0.636386342473399, + 0.126134797934787, + -0.759329931761707 + ], + [ + 0.689507358146178, + -0.651346673523356, + -0.109175864294489, + -0.297334398628695 + ], + [ + -0.288611274361547, + -0.018770492527437, + -0.957232459724476, + 0.00756432227705947 + ], + [ + 0.671518221947484, + -0.682212928339869, + -0.190806725741162, + -0.217351308738566 + ], + [ + -0.682215777345387, + -0.671515327555957, + 0.217352118261328, + -0.190805803595591 + ], + [ + 0.999999999000364, + -0.0000409124413205313, + 0.0000180400179579453, + 0.00000000105771383795261 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244572398 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392141728 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540672198 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956562904 + } + ], + "ctrl": [ + -0.258995603307952, + 1.66145314155636, + -1.72767692870382, + 0.13806085260261, + 1.2, + -0.273696312021984, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0136505706856703, + "qpos": [ + -0.261678784607088, + 1.65610312112078, + -1.72772906757055, + 0.129650870465434, + 1.15778585776452, + -0.23961955656575, + 0.0113624870998575, + -0.0113655736888198, + 0.319999977256921, + -0.145000051902988, + -0.00010773877981961, + 0.999999999000364, + -0.0000409124413205313, + 0.0000180400179579453, + 0.00000000105771383795261 + ], + "shoe_position": [ + 0.319999977256921, + -0.145000051902988, + -0.00010773877981961 + ], + "tcp_position": [ + 0.403667718279204, + -0.080787967181311, + 0.288815224091588 + ], + "tcp_quaternion": [ + 0.288611274361547, + 0.018770492527437, + 0.957232459724476, + -0.00756432227705947 + ], + "time": 1.8 + } + }, + { + "compute_ms": 1.00458299857564, + "request": { + "jaw": 0.01, + "sequence": 91, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 9.927, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0511137302494927, + -0.0136825521241062, + 0.403076728457316 + ], + [ + 0.286951701994258, + -0.0768187363195484, + 0.464347648350478 + ], + [ + 0.286951701994258, + -0.0768187363195484, + 0.464347648350478 + ], + [ + 0.337391596044454, + -0.0776579572365618, + 0.388597273640465 + ], + [ + 0.411303208037911, + -0.0920536974904542, + 0.27596093483703 + ], + [ + 0.412175771152572, + -0.0697974041024885, + 0.275890964734862 + ], + [ + 0.319999977257038, + -0.145000051903547, + -0.00010773877981919 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608851143850534, + 0.0, + 0.0, + -0.793284491611866 + ], + [ + 0.454173477460321, + -0.578880480489144, + -0.40607805814727, + -0.541963515720015 + ], + [ + -0.0817680940091634, + -0.102647650055443, + -0.699618081483101, + -0.702361715074297 + ], + [ + -0.0499473679501958, + -0.63653035710158, + 0.126306190419235, + -0.759197675961118 + ], + [ + 0.690019841122093, + -0.651257464198368, + -0.108469810087193, + -0.296598439785852 + ], + [ + -0.287646801039605, + -0.0183109776431681, + -0.957534872309643, + 0.00714102656405104 + ], + [ + 0.672031375034529, + -0.682127449944899, + -0.190449664083433, + -0.216344397781355 + ], + [ + -0.682130301127543, + -0.672028481005651, + 0.216345205789241, + -0.190448746209829 + ], + [ + 0.999999999000364, + -0.0000409124414199028, + 0.0000180400179587449, + 0.00000000108095829454929 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244557824 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392127682 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406737369 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956577042 + } + ], + "ctrl": [ + -0.258946846298103, + 1.66152107069346, + -1.72766342016136, + 0.137958705222644, + 1.2, + -0.273602521710099, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0131963893028747, + "qpos": [ + -0.261568969176564, + 1.65656678850757, + -1.72773380171163, + 0.130192534516282, + 1.15953669580728, + -0.240460781880133, + 0.0111352990755321, + -0.0111382021666256, + 0.319999977257038, + -0.145000051903547, + -0.00010773877981919, + 0.999999999000364, + -0.0000409124414199028, + 0.0000180400179587449, + 0.00000000108095829454929 + ], + "shoe_position": [ + 0.319999977257038, + -0.145000051903547, + -0.00010773877981919 + ], + "tcp_position": [ + 0.403480374203711, + -0.08056385379364, + 0.288442243479139 + ], + "tcp_quaternion": [ + 0.287646801039605, + 0.0183109776431681, + 0.957534872309643, + -0.00714102656405104 + ], + "time": 1.82 + } + }, + { + "compute_ms": 0.912666990188882, + "request": { + "jaw": 0.01, + "sequence": 92, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.327, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0512354799330183, + -0.0137092682447331, + 0.403053175372513 + ], + [ + 0.287106368961295, + -0.076827206038583, + 0.46421608842987 + ], + [ + 0.287106368961295, + -0.076827206038583, + 0.46421608842987 + ], + [ + 0.337412972302085, + -0.077575323951225, + 0.388376175111412 + ], + [ + 0.411146205656548, + -0.0916470450612298, + 0.275600630255477 + ], + [ + 0.411980525157654, + -0.0697688151551477, + 0.275541264311615 + ], + [ + 0.319999977257122, + -0.145000051903951, + -0.00010773877982014 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608893604045378, + 0.0, + 0.0, + -0.793251901323048 + ], + [ + 0.454322948213164, + -0.578949008249422, + -0.405980351552893, + -0.541838221913976 + ], + [ + -0.0815751455816514, + -0.102764945231628, + -0.699600861943109, + -0.702384151033701 + ], + [ + -0.0497081677935431, + -0.636670676614159, + 0.126463515444637, + -0.759069513849464 + ], + [ + 0.690480544298485, + -0.651170449763886, + -0.107844854788385, + -0.295944505938592 + ], + [ + -0.286792727085658, + -0.0178671407947011, + -0.957802133320044, + 0.00676538085896086 + ], + [ + 0.672485978577917, + -0.682050809403355, + -0.190159580709569, + -0.215426636869004 + ], + [ + -0.68205366251472, + -0.672483084874194, + 0.215427443646179, + -0.190158666729698 + ], + [ + 0.999999999000364, + -0.0000409124412001971, + 0.0000180400179540283, + 0.00000000109777986539821 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244571212 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392141089 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406722717 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956564074 + } + ], + "ctrl": [ + -0.25890297663273, + 1.66158143311682, + -1.72765296411865, + 0.137866846824996, + 1.2, + -0.273519044711755, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0127949261433108, + "qpos": [ + -0.261461917879103, + 1.65701139069692, + -1.72773603645744, + 0.130690907304083, + 1.16105521792451, + -0.241278914152198, + 0.0109459175938906, + -0.0109482952756608, + 0.319999977257122, + -0.145000051903951, + -0.00010773877982014, + 0.999999999000364, + -0.0000409124412001971, + 0.0000180400179540283, + 0.00000000109777986539821 + ], + "shoe_position": [ + 0.319999977257122, + -0.145000051903951, + -0.00010773877982014 + ], + "tcp_position": [ + 0.403326200365188, + -0.0803609951357213, + 0.288102114146708 + ], + "tcp_quaternion": [ + 0.286792727085658, + 0.0178671407947011, + 0.957802133320044, + -0.00676538085896086 + ], + "time": 1.84 + } + }, + { + "compute_ms": 1.10787499579601, + "request": { + "jaw": 0.01, + "sequence": 93, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.404, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0513449094828297, + -0.0137328217807629, + 0.40303197915977 + ], + [ + 0.287245936838153, + -0.0768325009044665, + 0.464097420148834 + ], + [ + 0.287245936838153, + -0.0768325009044665, + 0.464097420148834 + ], + [ + 0.337436928573151, + -0.0774987920840359, + 0.388180183127382 + ], + [ + 0.411015840000585, + -0.0912917182202606, + 0.275284680279525 + ], + [ + 0.411816245353203, + -0.0697287442886089, + 0.275233837125686 + ], + [ + 0.319999977257233, + -0.145000051904482, + -0.00010773877981979 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608934905991752, + 0.0, + 0.0, + -0.793220196581514 + ], + [ + 0.45445930294708, + -0.579008901648126, + -0.405894927059, + -0.541723861358215 + ], + [ + -0.0813983834399568, + -0.10286815007838, + -0.699585694321612, + -0.702404657710469 + ], + [ + -0.0494859656791547, + -0.636797120037619, + 0.126606117792014, + -0.758954187056261 + ], + [ + 0.690890392809036, + -0.651084045360771, + -0.107304128428903, + -0.295374093351029 + ], + [ + -0.286052435680093, + -0.0174375895436907, + -0.958033667832372, + 0.00643628868567002 + ], + [ + 0.672882401368583, + -0.681981824856627, + -0.189939852494954, + -0.214599433661579 + ], + [ + -0.681984679649872, + -0.672879507957532, + 0.214600239506533, + -0.189938942024613 + ], + [ + 0.999999999000364, + -0.000040912441287063, + 0.0000180400179546592, + 0.00000000111993262546738 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244557466 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392127863 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406737194 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956577404 + } + ], + "ctrl": [ + -0.258864081490559, + 1.66163392139136, + -1.72764529770178, + 0.137785248126486, + 1.2, + -0.273445307012031, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0124455976381736, + "qpos": [ + -0.2613577825554, + 1.65741061271767, + -1.72773608073544, + 0.131150015881251, + 1.16236190912258, + -0.242074692251489, + 0.0107880638159874, + -0.0107898201984443, + 0.319999977257233, + -0.145000051904482, + -0.00010773877981979, + 0.999999999000364, + -0.000040912441287063, + 0.0000180400179546592, + 0.00000000111993262546738 + ], + "shoe_position": [ + 0.319999977257233, + -0.145000051904482, + -0.00010773877981979 + ], + "tcp_position": [ + 0.403197916099806, + -0.0801764804311585, + 0.287803276397622 + ], + "tcp_quaternion": [ + 0.286052435680093, + 0.0174375895436907, + 0.958033667832372, + -0.00643628868567002 + ], + "time": 1.86 + } + }, + { + "compute_ms": 1.04070900124498, + "request": { + "jaw": 0.01, + "sequence": 94, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 13.403, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.051437535207903, + -0.013752021082985, + 0.403014037797873 + ], + [ + 0.287364925187622, + -0.0768331732915781, + 0.463996717219116 + ], + [ + 0.287364925187622, + -0.0768331732915781, + 0.463996717219116 + ], + [ + 0.33745753906403, + -0.0774263570419834, + 0.388013925481004 + ], + [ + 0.410905887717318, + -0.0909796715556756, + 0.275016925297327 + ], + [ + 0.411675998826319, + -0.0696794442042916, + 0.274972761109338 + ], + [ + 0.319999977257314, + -0.145000051904867, + -0.00010773877982072 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.608975034990523, + 0.0, + 0.0, + -0.793189388959718 + ], + [ + 0.454578050119916, + -0.579056809705968, + -0.405826577657436, + -0.541624220607956 + ], + [ + -0.0812438227939242, + -0.102951302301484, + -0.699573462442958, + -0.702422551786195 + ], + [ + -0.0492797148012098, + -0.63690309708272, + 0.126733904425821, + -0.75885734634682 + ], + [ + 0.691252174290569, + -0.650997513314444, + -0.106845769235505, + -0.294884131131949 + ], + [ + -0.285422693380378, + -0.0170209962752838, + -0.958230836243281, + 0.00615111874294913 + ], + [ + 0.673223465961296, + -0.681919597633395, + -0.189789131809148, + -0.213859563007356 + ], + [ + -0.681922453873657, + -0.673220572814251, + 0.213860368212863, + -0.189788224477815 + ], + [ + 0.999999999000364, + -0.0000409124410749155, + 0.0000180400179501361, + 0.00000000113596414341191 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244570236 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392140663 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406723224 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795656505 + } + ], + "ctrl": [ + -0.258829875795508, + 1.66167887664267, + -1.72764001910165, + 0.137713259153954, + 1.2, + -0.273380344092685, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0121452394278407, + "qpos": [ + -0.261256600618204, + 1.65774787590938, + -1.72773444143441, + 0.131573555393586, + 1.16348187175306, + -0.242848853754064, + 0.0106565095047296, + -0.0106576807643032, + 0.319999977257314, + -0.145000051904867, + -0.00010773877982072, + 0.999999999000364, + -0.0000409124410749155, + 0.0000180400179501361, + 0.00000000113596414341191 + ], + "shoe_position": [ + 0.319999977257314, + -0.145000051904867, + -0.00010773877982072 + ], + "tcp_position": [ + 0.403089013549664, + -0.0800075710460701, + 0.287549763756005 + ], + "tcp_quaternion": [ + 0.285422693380378, + 0.0170209962752838, + 0.958230836243281, + -0.00615111874294913 + ], + "time": 1.88 + } + }, + { + "compute_ms": 1.39645897434093, + "request": { + "jaw": 0.01, + "sequence": 95, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 11.762, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0515112043223351, + -0.0137662962659747, + 0.402999793557746 + ], + [ + 0.287460694648485, + -0.0768285208311468, + 0.463916508371678 + ], + [ + 0.287460694648485, + -0.0768285208311468, + 0.463916508371678 + ], + [ + 0.337471098633686, + -0.077356621550924, + 0.387879102609009 + ], + [ + 0.41081136123196, + -0.0907041232665364, + 0.274797716155851 + ], + [ + 0.411554209352334, + -0.069622782145363, + 0.274758615209371 + ], + [ + 0.319999977257419, + -0.145000051905374, + -0.00010773877982039 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609013997114368, + 0.0, + 0.0, + -0.793159474077427 + ], + [ + 0.454677046696938, + -0.579091119355118, + -0.405777618264039, + -0.541541118666857 + ], + [ + -0.0811144551448136, + -0.103011414912975, + -0.699564613454417, + -0.702437502676615 + ], + [ + -0.0490882964993797, + -0.636985234667099, + 0.126847290738285, + -0.75878186245801 + ], + [ + 0.691569641815779, + -0.65091063690409, + -0.10646488115685, + -0.29446901766428 + ], + [ + -0.284896406913952, + -0.0166162598579112, + -0.958396082662632, + 0.00590643486180154 + ], + [ + 0.673513330339738, + -0.681863426232943, + -0.189703181556441, + -0.213201230596614 + ], + [ + -0.681866283702996, + -0.673510437431005, + 0.213202035437471, + -0.189702277018178 + ], + [ + 0.999999999000364, + -0.0000409124411563041, + 0.0000180400179507264, + 0.00000000115707646015188 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244557174 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392128099 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406736962 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956577702 + } + ], + "ctrl": [ + -0.258799926245903, + 1.66171693787889, + -1.72763675496458, + 0.137649978293681, + 1.2, + -0.273323109223525, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0118894586561299, + "qpos": [ + -0.261158357098776, + 1.65801521490319, + -1.7277316807854, + 0.131964877458141, + 1.16443984472061, + -0.243602124992348, + 0.010546890437993, + -0.0105475708182051, + 0.319999977257419, + -0.145000051905374, + -0.00010773877982039, + 0.999999999000364, + -0.0000409124411563041, + 0.0000180400179507264, + 0.00000000115707646015188 + ], + "shoe_position": [ + 0.319999977257419, + -0.145000051905374, + -0.00010773877982039 + ], + "tcp_position": [ + 0.402994385159814, + -0.0798519532512706, + 0.287342178334789 + ], + "tcp_quaternion": [ + 0.284896406913952, + 0.0166162598579112, + 0.958396082662632, + -0.00590643486180154 + ], + "time": 1.9 + } + }, + { + "compute_ms": 0.974416005192324, + "request": { + "jaw": 0.01, + "sequence": 96, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.233, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.051566879176384, + -0.0137759078950785, + 0.402989072661193 + ], + [ + 0.287534394557362, + -0.076818840827855, + 0.463855915754631 + ], + [ + 0.287534394557362, + -0.076818840827855, + 0.463855915754631 + ], + [ + 0.337476609158542, + -0.077288886312543, + 0.387773324248939 + ], + [ + 0.410728326840533, + -0.0904592490778034, + 0.274622279830011 + ], + [ + 0.411446444167846, + -0.0695601815542239, + 0.274586889887369 + ], + [ + 0.319999977257543, + -0.145000051905967, + -0.00010773877981869 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609051815487977, + 0.0, + 0.0, + -0.793130434449971 + ], + [ + 0.454757278580306, + -0.579112543960708, + -0.405747041181273, + -0.541473745973186 + ], + [ + -0.0810092443838115, + -0.103049481678213, + -0.69955900703647, + -0.702449643977676 + ], + [ + -0.0489103594401144, + -0.637044423471898, + 0.126947509172302, + -0.758726900259734 + ], + [ + 0.691848499688128, + -0.650823946701587, + -0.106151322068913, + -0.294118582721456 + ], + [ + -0.284459707334372, + -0.0162225710618363, + -0.95853380035297, + 0.00569707576575466 + ], + [ + 0.673758750582336, + -0.681812767572804, + -0.189672767100753, + -0.212614057411044 + ], + [ + -0.681815626084088, + -0.673755857888527, + 0.212614862122868, + -0.189671865053656 + ], + [ + 0.999999999000364, + -0.0000409124415540804, + 0.0000180400179571089, + 0.00000000118175931661708 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244578594 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392146802 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406716801 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956556955 + } + ], + "ctrl": [ + -0.258773750951522, + 1.66174886438758, + -1.72763518586293, + 0.137594419394787, + 1.2, + -0.27327259407468, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0116717488953953, + "qpos": [ + -0.261062994016911, + 1.65821617973275, + -1.72772845222055, + 0.132327274903798, + 1.16526369192023, + -0.244335117721039, + 0.0104555522182194, + -0.0104558793039608, + 0.319999977257543, + -0.145000051905967, + -0.00010773877981869, + 0.999999999000364, + -0.0000409124415540804, + 0.0000180400179571089, + 0.00000000118175931661708 + ], + "shoe_position": [ + 0.319999977257543, + -0.145000051905967, + -0.00010773877981869 + ], + "tcp_position": [ + 0.402910201012422, + -0.0797076126432592, + 0.287176128860414 + ], + "tcp_quaternion": [ + 0.284459707334372, + 0.0162225710618363, + 0.95853380035297, + -0.00569707576575466 + ], + "time": 1.92 + } + }, + { + "compute_ms": 0.960500008659437, + "request": { + "jaw": 0.01, + "sequence": 97, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 3.595, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0516127788463755, + -0.0137830562486933, + 0.402980263404763 + ], + [ + 0.287596007604638, + -0.0768068022309555, + 0.463806043162929 + ], + [ + 0.287596007604638, + -0.0768068022309555, + 0.463806043162929 + ], + [ + 0.337477064661135, + -0.0772233095607988, + 0.387683029948654 + ], + [ + 0.41064966396205, + -0.0902384471937219, + 0.274469855993529 + ], + [ + 0.411345059928137, + -0.0694910661976944, + 0.274437364934301 + ], + [ + 0.319999977257644, + -0.14500005190645, + -0.00010773877981919 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609088495996212, + 0.0, + 0.0, + -0.793102265817639 + ], + [ + 0.454826981323769, + -0.579127246890491, + -0.405726055250388, + -0.54141519840129 + ], + [ + -0.0809177082019078, + -0.10307593319582, + -0.699555110049102, + -0.702460194245447 + ], + [ + -0.048743867985683, + -0.63709156521527, + 0.127037930878577, + -0.758682896198037 + ], + [ + 0.692103887157464, + -0.650741272300705, + -0.105872230408845, + -0.293801083616526 + ], + [ + -0.284068182789524, + -0.015838937771753, + -0.958657414805752, + 0.00550968373616255 + ], + [ + 0.673978665279498, + -0.681767669534558, + -0.189667185984153, + -0.212065938062521 + ], + [ + -0.681770528978861, + -0.673975772777023, + 0.212066742750672, + -0.18966628626253 + ], + [ + 0.999999999000364, + -0.000040912441430227, + 0.0000180400179540077, + 0.00000000120187999646848 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244557116 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392126974 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.67164540673811 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.74237795657772 + } + ], + "ctrl": [ + -0.258750753465996, + 1.66177564109646, + -1.72763494964265, + 0.137545387654962, + 1.2, + -0.273227721148718, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0114742192118469, + "qpos": [ + -0.26097049684869, + 1.6583811521554, + -1.72772530385777, + 0.132664417496756, + 1.1660202545261, + -0.245048191396194, + 0.0103794537719297, + -0.0103796032736266, + 0.319999977257644, + -0.14500005190645, + -0.00010773877981919, + 0.999999999000364, + -0.000040912441430227, + 0.0000180400179540077, + 0.00000000120187999646848 + ], + "shoe_position": [ + 0.319999977257644, + -0.14500005190645, + -0.00010773877981919 + ], + "tcp_position": [ + 0.402830231398163, + -0.0795713934199358, + 0.287031894835171 + ], + "tcp_quaternion": [ + 0.284068182789524, + 0.015838937771753, + 0.958657414805752, + -0.00550968373616255 + ], + "time": 1.94 + } + }, + { + "compute_ms": 0.960916018811986, + "request": { + "jaw": 0.01, + "sequence": 98, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 4.726, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0516543617826224, + -0.0137891995339357, + 0.402972292130924 + ], + [ + 0.287652174433196, + -0.0767941687945232, + 0.463760930613925 + ], + [ + 0.287652174433196, + -0.0767941687945232, + 0.463760930613925 + ], + [ + 0.337474765508349, + -0.0771601627151481, + 0.38759937903271 + ], + [ + 0.410571420904237, + -0.0900372689149507, + 0.27432716961184 + ], + [ + 0.411245715204915, + -0.0694161088881877, + 0.274297077029213 + ], + [ + 0.319999977257762, + -0.145000051907015, + -0.00010773877981832 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609124055718399, + 0.0, + 0.0, + -0.793074955313285 + ], + [ + 0.454891631330433, + -0.579139313439898, + -0.405708831094867, + -0.541360881247932 + ], + [ + -0.0808328043683546, + -0.103097753344458, + -0.699551894612062, + -0.702469969278365 + ], + [ + -0.0485877790446764, + -0.637134027000107, + 0.127120530234456, + -0.758643414364774 + ], + [ + 0.692344906101132, + -0.650665211493375, + -0.105607231239464, + -0.293496893097746 + ], + [ + -0.283694289643118, + -0.0154644513619298, + -0.958775220487707, + 0.00533641702919371 + ], + [ + 0.674184484456319, + -0.681728452216891, + -0.189667604367683, + -0.211536753803572 + ], + [ + -0.681731312534412, + -0.674181592120227, + 0.211537558493502, + -0.1896667068912 + ], + [ + 0.999999999000364, + -0.0000409124416305423, + 0.0000180400179567574, + 0.00000000122540355982123 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244576524 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392144534 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406719185 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956558937 + } + ], + "ctrl": [ + -0.258729599309273, + 1.66179945776741, + -1.72763510861496, + 0.137500415257706, + 1.2, + -0.273186508546419, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0112859568531443, + "qpos": [ + -0.26088082282814, + 1.65853030870306, + -1.72772240331179, + 0.13297789312933, + 1.16674928042606, + -0.245742259578057, + 0.0103160845960089, + -0.0103161188545314, + 0.319999977257762, + -0.145000051907015, + -0.00010773877981832, + 0.999999999000364, + -0.0000409124416305423, + 0.0000180400179567574, + 0.00000000122540355982123 + ], + "shoe_position": [ + 0.319999977257762, + -0.145000051907015, + -0.00010773877981832 + ], + "tcp_position": [ + 0.402751047782271, + -0.079441597161035, + 0.286896832245826 + ], + "tcp_quaternion": [ + 0.283694289643118, + 0.0154644513619298, + 0.958775220487707, + -0.00533641702919371 + ], + "time": 1.96 + } + }, + { + "compute_ms": 1.01295800413936, + "request": { + "jaw": 0.01, + "sequence": 99, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.861, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0516935604029582, + -0.0137948504839015, + 0.40296477883654 + ], + [ + 0.287705253215313, + -0.0767815462698861, + 0.46371845613932 + ], + [ + 0.287705253215313, + -0.0767815462698861, + 0.46371845613932 + ], + [ + 0.33747089023379, + -0.0770995912331701, + 0.3875194621053 + ], + [ + 0.410493150278073, + -0.0898530474644761, + 0.274190087587962 + ], + [ + 0.411147709254369, + -0.0693369535095163, + 0.274161998518854 + ], + [ + 0.319999977257858, + -0.145000051907476, + -0.00010773877981925 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609158527658882, + 0.0, + 0.0, + -0.793048477824945 + ], + [ + 0.454953184961097, + -0.579150175387028, + -0.405693325492514, + -0.541309153343774 + ], + [ + -0.0807519986073381, + -0.103117408148256, + -0.699548997666915, + -0.702479262840492 + ], + [ + -0.0484414837758838, + -0.637174405631508, + 0.127196165499205, + -0.758606179081098 + ], + [ + 0.692574276694894, + -0.650596222636972, + -0.10535066124741, + -0.293200723951667 + ], + [ + -0.283330515370444, + -0.0150987411695599, + -0.958889497153478, + 0.00517487427514231 + ], + [ + 0.674379518167522, + -0.681695029617797, + -0.189668972180627, + -0.211020930389563 + ], + [ + -0.681697890762776, + -0.674376625973228, + 0.211021735085301, + -0.189668076892598 + ], + [ + 0.999999999000364, + -0.000040912441407604, + 0.000018040017951848, + 0.00000000124457922342861 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244556279 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392126262 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406738854 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956578531 + } + ], + "ctrl": [ + -0.258709481662086, + 1.66182162034965, + -1.72763511578581, + 0.137458017101834, + 1.2, + -0.273147787191584, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0111040074413857, + "qpos": [ + -0.26079388901263, + 1.65867078907149, + -1.72771975719439, + 0.13326882254511, + 1.16746007629636, + -0.246418088856623, + 0.0102633121815049, + -0.0102632400771082, + 0.319999977257858, + -0.145000051907476, + -0.00010773877981925, + 0.999999999000364, + -0.000040912441407604, + 0.000018040017951848, + 0.00000000124457922342861 + ], + "shoe_position": [ + 0.319999977257858, + -0.145000051907476, + -0.00010773877981925 + ], + "tcp_position": [ + 0.402672271622958, + -0.0793177616472223, + 0.286766990746239 + ], + "tcp_quaternion": [ + 0.283330515370444, + 0.0150987411695599, + 0.958889497153478, + -0.00517487427514231 + ], + "time": 1.98 + } + }, + { + "compute_ms": 0.96524998662062, + "request": { + "jaw": 0.01, + "sequence": 100, + "target": [ + 0.395, + -0.075, + 0.28 + ], + "type": "step" + }, + "rpc_roundtrip_ms": 10.152, + "state": { + "body_positions": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0, + 0.0, + 0.123 + ], + [ + 0.0517310605129588, + -0.0138001889833241, + 0.402957588999172 + ], + [ + 0.287756088288904, + -0.0767691384789497, + 0.463677848870004 + ], + [ + 0.287756088288904, + -0.0767691384789497, + 0.463677848870004 + ], + [ + 0.337465944738745, + -0.0770415831203673, + 0.387442277002906 + ], + [ + 0.41041495086847, + -0.0896836714589596, + 0.274057234210002 + ], + [ + 0.411050950544689, + -0.0692550491888129, + 0.274030808858981 + ], + [ + 0.319999977257971, + -0.145000051908014, + -0.0001077387798187 + ] + ], + "body_quaternions": [ + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 1.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.609191941069917, + 0.0, + 0.0, + -0.793022811106633 + ], + [ + 0.455012348143542, + -0.579160331488707, + -0.405678826696551, + -0.54125942304675 + ], + [ + -0.0806743499444182, + -0.103135783414665, + -0.699546288803996, + -0.70248818442807 + ], + [ + -0.0483044076756344, + -0.637213597884619, + 0.127265416594739, + -0.758570384742914 + ], + [ + 0.69279313933815, + -0.650534091000329, + -0.105100788497152, + -0.292911056106871 + ], + [ + -0.28297467555999, + -0.0147416075113652, + -0.95900092711404, + 0.00502392218406761 + ], + [ + 0.674565050236188, + -0.681667082844222, + -0.189669886004648, + -0.210516782013884 + ], + [ + -0.681669944776348, + -0.67456215816046, + 0.210517586713503, + -0.189668992855541 + ], + [ + 0.999999999000364, + -0.0000409124415391502, + 0.0000180400179533168, + 0.00000000126699799201884 + ] + ], + "contacts": [ + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.800083244574781 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.728893392143252 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.671645406720588 + }, + { + "geom1": 1.0, + "geom2": 98.0, + "normal_force_n": 0.742377956560631 + } + ], + "ctrl": [ + -0.258690171707644, + 1.66184252935881, + -1.72763485972899, + 0.137417726690394, + 1.2, + -0.273111183549101, + 0.01 + ], + "observation_origin": "privileged native simulator state", + "position_error_m": 0.0109274199472102, + "qpos": [ + -0.260709621902412, + 1.658805124953, + -1.72771729125532, + 0.133538497192737, + 1.16815503540874, + -0.247076251016051, + 0.0102193548237755, + -0.0102191823487126, + 0.319999977257971, + -0.145000051908014, + -0.0001077387798187, + 0.999999999000364, + -0.0000409124415391502, + 0.0000180400179533168, + 0.00000000126699799201884 + ], + "shoe_position": [ + 0.319999977257971, + -0.145000051908014, + -0.0001077387798187 + ], + "tcp_position": [ + 0.402593962399153, + -0.0791995899196328, + 0.286641060629888 + ], + "tcp_quaternion": [ + 0.28297467555999, + 0.0147416075113652, + 0.95900092711404, + -0.00502392218406761 + ], + "time": 2.0 + } + } + ], + "trace_limit": 256, + "wall_seconds": 3.330206 +} diff --git a/benchmarks/godot-workstation-v01/windowed-final.png b/benchmarks/godot-workstation-v01/windowed-final.png new file mode 100644 index 0000000000000000000000000000000000000000..f600e71a959f85374202d036fe867ef42ee26dcb GIT binary patch literal 148900 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 ie3V void: + PhysicsServer3D.set_active(false) + PhysicsServer2D.set_active(false) + started_us = Time.get_ticks_usec() + _parse_args() + _build_world() + _build_ui() + if not errors.is_empty(): + _fail(errors[0]) + return + if scene_dir.is_empty(): + _fail("Choose an exported scene: --scene /absolute/path --port 8430") + return + if not _load_scene(): + return + status_label.text = "Connecting to local MuJoCo…" + var result := peer.connect_to_host("127.0.0.1", port) + if result != OK: + _fail("Cannot connect to local MuJoCo (%s)." % result) + connected_us = Time.get_ticks_usec() + + +func _parse_args() -> void: + var args := OS.get_cmdline_user_args() + var index := 0 + while index < args.size(): + var flag := args[index] + if flag not in ["--scene", "--port", "--smoke-steps", "--smoke-output", "--screenshot"] or index + 1 >= args.size(): + errors.append("Unknown or incomplete argument: " + flag) + return + var value := args[index + 1] + match flag: + "--scene": scene_dir = value + "--port": port = int(value) + "--smoke-steps": smoke_steps = int(value) + "--smoke-output": smoke_output = value + "--screenshot": screenshot_path = value + index += 2 + if port < 1024 or port > 65535 or smoke_steps < 0 or smoke_steps > 100000: + errors.append("Port or smoke step count is outside bounds.") + if (not smoke_output.is_empty() and not smoke_output.is_absolute_path()) or (not screenshot_path.is_empty() and not screenshot_path.is_absolute_path()): + errors.append("Smoke output and screenshot paths must be absolute.") + if (not smoke_output.is_empty() and FileAccess.file_exists(smoke_output)) or (not screenshot_path.is_empty() and FileAccess.file_exists(screenshot_path)): + errors.append("Smoke output and screenshot paths must be fresh files.") + + +func _build_world() -> void: + var environment_node := WorldEnvironment.new() + var environment := Environment.new() + environment.background_mode = Environment.BG_COLOR + environment.background_color = Color("e9ebe2") + environment.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR + environment.ambient_light_color = Color("f1f5e9") + # Compatibility rendering is SDR. Keep the light budget below clipping; + # bright HDR-style lighting washes out native RGBA materials in this path. + environment.ambient_light_energy = 0.28 + environment.tonemap_mode = Environment.TONE_MAPPER_LINEAR + environment_node.environment = environment + add_child(environment_node) + var light := DirectionalLight3D.new() + light.rotation_degrees = Vector3(-52, -38, 0) + light.light_energy = 0.68 + light.shadow_enabled = true + light.directional_shadow_max_distance = 5.0 + add_child(light) + var fill := DirectionalLight3D.new() + fill.rotation_degrees = Vector3(-32, 130, 0) + fill.light_energy = 0.16 + add_child(fill) + camera = Camera3D.new() + camera.fov = 41 + camera.near = 0.005 + camera.far = 30 + add_child(camera) + camera.make_current() + _position_camera() + marker = MeshInstance3D.new() + var sphere := SphereMesh.new() + sphere.radius = 0.008 + sphere.height = 0.016 + marker.mesh = sphere + var material := StandardMaterial3D.new() + material.albedo_color = Color("73a27e") + material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + marker.material_override = material + add_child(marker) + marker.position = native_vector(target) + + +func _style(background: Color, border: Color = Color.TRANSPARENT) -> StyleBoxFlat: + var box := StyleBoxFlat.new() + box.bg_color = background + box.border_color = border + box.set_border_width_all(1) + box.set_corner_radius_all(8) + box.content_margin_left = 16 + box.content_margin_right = 16 + box.content_margin_top = 11 + box.content_margin_bottom = 11 + return box + + +func _label(text: String, size: int = 16, color: Color = INK) -> Label: + var label := Label.new() + label.text = text + label.add_theme_font_size_override("font_size", size) + label.add_theme_color_override("font_color", color) + return label + + +func _button(text: String, action: Callable) -> Button: + var button := Button.new() + button.text = text + button.custom_minimum_size.y = 42 + button.add_theme_font_size_override("font_size", 15) + button.add_theme_color_override("font_color", INK) + button.add_theme_color_override("font_hover_color", INK) + button.add_theme_stylebox_override("normal", _style(Color("eff1e9"), Color("d8ded1"))) + button.add_theme_stylebox_override("hover", _style(Color("e1e8dc"))) + button.add_theme_stylebox_override("pressed", _style(Color("d3dfcd"))) + button.pressed.connect(action) + return button + + +func _build_ui() -> void: + var layer := CanvasLayer.new() + add_child(layer) + var root := Control.new() + root.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + root.mouse_filter = Control.MOUSE_FILTER_IGNORE + layer.add_child(root) + var header := PanelContainer.new() + header.set_anchors_and_offsets_preset(Control.PRESET_TOP_WIDE) + header.offset_bottom = 72 + header.add_theme_stylebox_override("panel", _style(PAPER, Color("d9ded2"))) + root.add_child(header) + var top := HBoxContainer.new() + top.add_theme_constant_override("separation", 18) + header.add_child(top) + top.add_child(_label("DVIDIA", 23)) + top.add_child(_label("/ Manipulation lab", 16, MUTED)) + var spacer := Control.new() + spacer.size_flags_horizontal = Control.SIZE_EXPAND_FILL + top.add_child(spacer) + top.add_child(_label("PHYSICS MuJoCo · LOCAL COMPUTE", 13, GREEN)) + var panel := PanelContainer.new() + panel.set_anchors_and_offsets_preset(Control.PRESET_TOP_RIGHT) + panel.offset_left = -332 + panel.offset_right = -22 + panel.offset_top = 96 + panel.offset_bottom = 645 + panel.add_theme_stylebox_override("panel", _style(PAPER, Color("d9ded2"))) + root.add_child(panel) + var column := VBoxContainer.new() + column.add_theme_constant_override("separation", 15) + panel.add_child(column) + column.add_child(_label("PiPER workstation", 22)) + column.add_child(_label("Move the target. Watch the contact.", 14, MUTED)) + status_label = _label("Opening scene…", 14, GREEN) + status_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + status_label.custom_minimum_size = Vector2(270, 38) + column.add_child(status_label) + for index in range(4): + var row := HBoxContainer.new() + var names := ["Target X", "Target Y", "Target Z", "Gripper target"] + var caption := _label(names[index], 14) + caption.size_flags_horizontal = Control.SIZE_EXPAND_FILL + row.add_child(caption) + var value_label := _label("", 14, MUTED) + row.add_child(value_label) + value_labels.append(value_label) + column.add_child(row) + var slider := HSlider.new() + slider.custom_minimum_size.y = 18 + slider.step = 0.001 + slider.editable = false + slider.value_changed.connect(_slider_changed.bind(index)) + sliders.append(slider) + column.add_child(slider) + var buttons := HBoxContainer.new() + buttons.add_theme_constant_override("separation", 8) + pause_button = _button("Pause", _toggle_pause) + pause_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + buttons.add_child(pause_button) + buttons.add_child(_button("Home", _home)) + buttons.add_child(_button("Reset", _reset)) + column.add_child(buttons) + time_label = _label("Simulation 0.00 s", 15) + compute_label = _label("Native step — ms", 13, MUTED) + column.add_child(time_label) + column.add_child(compute_label) + var note := _label("Synthetic rigid shoe · Research prototype\nContact and material properties are uncalibrated.", 12, MUTED) + note.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + column.add_child(note) + var hints := _label("Drag empty space to orbit · Scroll to zoom\nGreen point: commanded target", 14, MUTED) + hints.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_LEFT) + hints.offset_left = 28 + hints.offset_top = -63 + hints.offset_bottom = -18 + root.add_child(hints) + + +static func native_vector(value: Array) -> Vector3: + return Vector3(float(value[0]), float(value[2]), -float(value[1])) + + +static func native_basis(value: Array) -> Basis: + # A proper coordinate rotation C: [x,y,z] -> [x,z,-y]. Both local + # mesh coordinates and every transform are mapped, so R' = C R C^-1. + return Basis(Quaternion(float(value[1]), float(value[3]), -float(value[2]), float(value[0]))) + + +func _valid_vector(value: Variant, length: int) -> bool: + if not value is Array or value.size() != length: + return false + for number in value: + if not (number is int or number is float) or not is_finite(float(number)): + return false + return true + + +func _valid_quaternion(value: Variant) -> bool: + if not _valid_vector(value, 4): + return false + var norm_squared := 0.0 + for number in value: + norm_squared += float(number) * float(number) + return absf(norm_squared - 1.0) < 0.00001 + + +func _load_scene() -> bool: + if not _verify_scene_files(): + return false + var decoded: Variant = JSON.parse_string(verified_files["scene.json"].get_string_from_utf8()) + if not decoded is Dictionary or decoded.get("schema") != "dvidia.asset-preview-model/v1" or not decoded.has("bridge") or not decoded.has("bodies") or not decoded.has("meshes") or not decoded.has("geoms"): + _fail("Scene metadata is incomplete.") + return false + scene_data = decoded + var bridge: Dictionary = scene_data.bridge + if bridge.get("schema") != SCHEMA or not str(bridge.get("model_sha256", "")).is_valid_hex_number(false) or str(bridge.get("model_sha256", "")).length() != 64: + _fail("Scene bridge identity is invalid.") + return false + if float(bridge.get("physics_dt", -1)) != 0.002 or float(bridge.get("control_dt", -1)) != 0.02 or scene_data.get("source", {}).get("compiled_model_sha256") != bridge.model_sha256: + _fail("Scene model source or pinned simulation clocks differ.") + return false + var info: Dictionary = scene_data.get("geometry_binary", {}) + if info.get("href") != "geometry.bin" or info.get("compression") != "none" or int(info.get("bytes", -1)) < 0 or int(info.get("bytes", MAX_FILE + 1)) > MAX_FILE: + _fail("Scene geometry framing is invalid.") + return false + var bytes: PackedByteArray = verified_files["geometry.bin"] + if bytes.size() != int(info.bytes): + _fail("Geometry file is missing or has changed size.") + return false + var hash := HashingContext.new() + hash.start(HashingContext.HASH_SHA256) + hash.update(bytes) + if hash.finish().hex_encode() != info.get("sha256"): + _fail("Geometry checksum does not match the exported scene.") + return false + if scene_data.bodies.size() < 1 or scene_data.bodies.size() > 128 or scene_data.meshes.size() > 128 or scene_data.geoms.size() > 512: + _fail("Scene inventory exceeds bounds.") + return false + for body in scene_data.bodies: + if int(body.id) != body_nodes.size(): + _fail("Body IDs must be contiguous native IDs.") + return false + var node := Node3D.new() + node.name = str(body.name) + add_child(node) + body_nodes.append(node) + for record in scene_data.meshes: + var mesh := _native_mesh(record, bytes) + if mesh == null: + return false + mesh_cache[int(record.id)] = mesh + for geom in scene_data.geoms: + if not _add_geom(geom): + return false + if not _valid_vector(bridge.get("home_target"), 3) or not bridge.get("bounds") is Array or bridge.bounds.size() != 3: + _fail("Target declaration is invalid.") + return false + target = bridge.home_target.duplicate() + jaw = float(bridge.gripper_initial) + for index in range(4): + if index < 3: + sliders[index].min_value = float(bridge.bounds[index][0]) + sliders[index].max_value = float(bridge.bounds[index][1]) + else: + sliders[index].min_value = 0 + sliders[index].max_value = 0.035 + _set_slider(index, float(target[index]) if index < 3 else jaw) + verified_files.clear() + return true + + +func _verify_scene_files() -> bool: + var seal_file := FileAccess.open(scene_dir.path_join("scene-integrity.json"), FileAccess.READ) + if seal_file == null or seal_file.get_length() > 65536: + _fail("Cannot read a bounded scene-integrity.json.") + return false + var seal_bytes := seal_file.get_buffer(seal_file.get_length()) + scene_integrity_sha256 = _sha256(seal_bytes) + var seal: Variant = JSON.parse_string(seal_bytes.get_string_from_utf8()) + if not seal is Dictionary or seal.get("schema") != "dvidia.godot-scene-integrity/v1" or not seal.get("files") is Dictionary: + _fail("Scene integrity manifest is invalid.") + return false + var expected := ["scene.json", "geometry.bin", "LICENSE", "licenses/agilex_piper/LICENSE", "licenses/agilex_piper/README.md", "README.md"] + if seal.files.size() != expected.size(): + _fail("Scene integrity inventory differs from the pinned PiPER export.") + return false + var total := 0 + for name in expected: + var record: Variant = seal.files.get(name) + if not record is Dictionary or not record.get("bytes") is float and not record.get("bytes") is int: + _fail("Scene integrity file record is invalid.") + return false + var size := int(record.bytes) + var limit := MAX_FILE if name == "geometry.bin" else (12 * 1024 * 1024 if name == "scene.json" else 65536) + var file := FileAccess.open(scene_dir.path_join(name), FileAccess.READ) + if size < 0 or size > limit or file == null or file.get_length() != size: + _fail("Missing or size-mismatched scene artifact: " + name) + return false + var payload := file.get_buffer(size) + if payload.size() != size or _sha256(payload) != record.get("sha256"): + _fail("Scene artifact checksum mismatch: " + name) + return false + total += size + if total > 96 * 1024 * 1024: + _fail("Scene artifact total exceeds bounds.") + return false + if name in ["scene.json", "geometry.bin"]: + verified_files[name] = payload + var metadata: Variant = JSON.parse_string(verified_files["scene.json"].get_string_from_utf8()) + if not metadata is Dictionary or not metadata.get("bridge") is Dictionary or metadata.bridge.get("model_sha256") != seal.get("model_sha256"): + _fail("Scene model identity differs from its integrity manifest.") + return false + return true + + +func _sha256(bytes: PackedByteArray) -> String: + var hash := HashingContext.new() + hash.start(HashingContext.HASH_SHA256) + hash.update(bytes) + return hash.finish().hex_encode() + + +func _native_mesh(record: Dictionary, bytes: PackedByteArray) -> ArrayMesh: + var count := int(record.vertex_count) + var indices := int(record.index_count) + var vertex_offset := int(record.position_byte_offset) + var index_offset := int(record.index_byte_offset) + if count < 1 or indices < 3 or indices % 3 != 0 or vertex_offset < 0 or index_offset < 0 or vertex_offset + count * 12 > bytes.size() or index_offset + indices * 4 > bytes.size(): + _fail("Native mesh byte range is invalid.") + return null + var points := PackedVector3Array() + points.resize(count) + for index in range(count): + var offset := vertex_offset + index * 12 + var value := [bytes.decode_float(offset), bytes.decode_float(offset + 4), bytes.decode_float(offset + 8)] + if not _valid_vector(value, 3): + _fail("Native mesh coordinate is nonfinite.") + return null + points[index] = native_vector(value) + var triangle_indices := PackedInt32Array() + triangle_indices.resize(indices) + for index in range(0, indices, 3): + # MuJoCo triangle winding is counterclockwise; Godot fronts are clockwise. + for corner in range(3): + var source_corner: int = [0, 2, 1][corner] + var vertex := int(bytes.decode_u32(index_offset + (index + source_corner) * 4)) + if vertex < 0 or vertex >= count: + _fail("Native triangle index is outside the mesh.") + return null + triangle_indices[index + corner] = vertex + var arrays := [] + arrays.resize(Mesh.ARRAY_MAX) + arrays[Mesh.ARRAY_VERTEX] = points + arrays[Mesh.ARRAY_INDEX] = triangle_indices + var mesh := ArrayMesh.new() + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) + var surface := SurfaceTool.new() + surface.create_from(mesh, 0) + surface.generate_normals() + return surface.commit() + + +func _add_geom(geom: Dictionary) -> bool: + if not _valid_vector(geom.get("position"), 3) or not _valid_quaternion(geom.get("quaternion_wxyz")) or not _valid_vector(geom.get("size"), 3) or not _valid_vector(geom.get("rgba"), 4): + _fail("Native geometry transform is invalid.") + return false + var body_id := int(geom.get("body_id", -1)) + if body_id < 0 or body_id >= body_nodes.size(): + _fail("Geometry references an unknown body.") + return false + if float(geom.rgba[3]) <= 0.0 or int(geom.group) > 2: + return true + var size: Array = geom.size + var mesh: Mesh + var scale_value := Vector3.ONE + match geom.type: + "mesh": mesh = mesh_cache.get(int(geom.mesh_id)) + "box": + var box := BoxMesh.new() + box.size = Vector3(2 * size[0], 2 * size[2], 2 * size[1]) + mesh = box + "sphere", "ellipsoid": + var sphere := SphereMesh.new() + sphere.radius = 1.0 if geom.type == "ellipsoid" else float(size[0]) + sphere.height = 2 * sphere.radius + if geom.type == "ellipsoid": + scale_value = Vector3(size[0], size[2], size[1]) + mesh = sphere + "capsule": + var capsule := CapsuleMesh.new() + capsule.radius = size[0] + capsule.height = 2 * (size[0] + size[1]) + mesh = capsule + "cylinder": + var cylinder := CylinderMesh.new() + cylinder.top_radius = size[0] + cylinder.bottom_radius = size[0] + cylinder.height = 2 * size[1] + mesh = cylinder + "plane": + var plane := PlaneMesh.new() + plane.size = Vector2(maxf(1, 2 * size[0]), maxf(1, 2 * size[1])) + mesh = plane + if mesh == null: + _fail("Unsupported or missing native geometry: " + str(geom.type)) + return false + var instance := MeshInstance3D.new() + instance.name = str(geom.name) + instance.mesh = mesh + var rgba: Array = geom.rgba + var material := StandardMaterial3D.new() + material.albedo_color = Color(rgba[0], rgba[1], rgba[2], rgba[3]).linear_to_srgb() + material.roughness = 0.7 + material.metallic = 0.12 if geom.type == "mesh" else 0.0 + material.cull_mode = BaseMaterial3D.CULL_DISABLED + if float(rgba[3]) < 1: + material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + instance.material_override = material + instance.transform = Transform3D(native_basis(geom.quaternion_wxyz).scaled_local(scale_value), native_vector(geom.position)) + body_nodes[body_id].add_child(instance) + return true + + +func _process(delta: float) -> void: + frame_count += 1 + if finished or not errors.is_empty(): + return + if connected and frame_intervals_ms.size() < 10000: + frame_intervals_ms.append(delta * 1000.0) + peer.poll() + var status := peer.get_status() + if status == StreamPeerTCP.STATUS_CONNECTED: + if not hello_sent: + hello_sent = true + _send({"type": "hello", "schema": SCHEMA, "model_sha256": scene_data.bridge.model_sha256}) + pending_kind = "hello" + var available := peer.get_available_bytes() + if available > 0: + if incoming.size() + available > MAX_PACKET: + _fail("Bridge packet exceeds bounds.") + return + var received := peer.get_data(available) + if received[0] != OK: + _fail("Local bridge read failed.") + return + incoming.append_array(received[1]) + while incoming.find(10) >= 0: + var end := incoming.find(10) + var message: Variant = JSON.parse_string(incoming.slice(0, end).get_string_from_utf8()) + incoming = incoming.slice(end + 1) + if not message is Dictionary: + _fail("Bridge returned invalid JSON.") + return + _receive(message) + if finished or not errors.is_empty(): + return + if connected and not pending: + if reset_requested: + reset_requested = false + _home() + pending_kind = "reset" + _send({"type": "reset", "sequence": sequence}) + elif paused and Time.get_ticks_usec() - last_request_us >= 5000000: + pending_kind = "ping" + _send({"type": "ping"}) + elif not paused and Time.get_ticks_usec() >= next_step_due_us: + if smoke_steps > 0: + _smoke_target() + # Preserve a 50 Hz deadline across render-frame quantization. There + # is never more than one outstanding step, and overdue responses + # discard the deadline rather than creating catch-up commands. + next_step_due_us += 20000 + pending_kind = "step" + _send({"type": "step", "sequence": sequence, "target": target, "jaw": jaw}) + elif status == StreamPeerTCP.STATUS_ERROR or hello_sent: + _fail("MuJoCo disconnected. Simulation stopped.") + return + if (pending and Time.get_ticks_usec() - last_request_us > 10000000) or (not hello_sent and Time.get_ticks_usec() - connected_us > 10000000): + _fail("Local MuJoCo response timed out. Simulation stopped.") + + +func _send(message: Dictionary) -> void: + pending_request = message.duplicate(true) + if peer.put_data((JSON.stringify(message) + "\n").to_utf8_buffer()) != OK: + _fail("Local bridge write failed.") + return + pending = true + last_request_us = Time.get_ticks_usec() + + +func _receive(message: Dictionary) -> void: + var received_us := Time.get_ticks_usec() + if message.get("type") == "error": + _fail("MuJoCo: " + str(message.get("message", "request rejected"))) + return + if pending and pending_kind == "ping" and message.get("type") == "pong" and message.get("model_sha256") == scene_data.bridge.model_sha256 and int(message.get("expected_sequence", -1)) == sequence: + pending = false + pending_kind = "" + return + if not pending or message.get("model_sha256") != scene_data.bridge.model_sha256: + _fail("Unsolicited response or model identity mismatch.") + return + var was_reset := pending_kind == "reset" + if pending_kind == "hello": + if message.get("type") != "ready" or message.get("schema") != SCHEMA or float(message.get("physics_dt", -1)) != float(scene_data.bridge.physics_dt) or float(message.get("control_dt", -1)) != float(scene_data.bridge.control_dt): + _fail("Local MuJoCo handshake differs from the scene.") + return + connected = true + ready_us = received_us + next_step_due_us = received_us + for slider in sliders: + slider.editable = true + else: + if message.get("type") != "state" or int(message.get("sequence", -1)) != sequence: + _fail("Bridge response sequence mismatch.") + return + sequence += 1 + if was_reset: + resets += 1 + else: + replies += 1 + last_compute_ms = float(message.get("compute_ms", 0)) + compute_total_ms += last_compute_ms + if rpc_roundtrip_ms.size() < 10000: + rpc_roundtrip_ms.append((received_us - last_request_us) / 1000.0) + var state: Variant = message.get("state") + if not state is Dictionary or not state.get("body_positions") is Array or not state.get("body_quaternions") is Array or state.body_positions.size() != body_nodes.size() or state.body_quaternions.size() != body_nodes.size(): + _fail("Native body state framing mismatch.") + return + for index in range(body_nodes.size()): + if not _valid_vector(state.body_positions[index], 3) or not _valid_quaternion(state.body_quaternions[index]): + _fail("Native body pose is nonfinite.") + return + body_nodes[index].transform = Transform3D(native_basis(state.body_quaternions[index]), native_vector(state.body_positions[index])) + var new_time := float(state.get("time", -1)) + if not is_finite(new_time) or new_time < 0: + _fail("Native simulation clock is invalid.") + return + if pending_kind == "hello": + initial_sim_time = new_time + initial_state = state.duplicate(true) + elif not was_reset and absf(new_time - state_time - float(scene_data.bridge.control_dt)) > 0.000001: + _fail("Native simulation did not advance exactly one control interval.") + return + state_time = new_time + if was_reset or (pending_kind == "step" and received_us > next_step_due_us): + next_step_due_us = received_us + 20000 + if smoke_steps > 0 and pending_kind != "hello" and smoke_trace.size() < 256: + smoke_trace.append({"request": pending_request.duplicate(true), "state": state.duplicate(true), "compute_ms": last_compute_ms, "rpc_roundtrip_ms": (received_us - last_request_us) / 1000.0}) + pending = false + pending_kind = "" + status_label.text = "Paused · MuJoCo connected" if paused else "Running · MuJoCo connected" + time_label.text = "Simulation %.2f s" % state_time + compute_label.text = "Native step %.2f ms · 20 ms simulated" % last_compute_ms + if smoke_steps > 0 and replies >= smoke_steps: + _finish_smoke() + + +func _slider_changed(value: float, index: int) -> void: + if index < 3: + target[index] = value + else: + jaw = value + value_labels[index].text = "%.0f mm" % (value * 1000) if index < 3 else "%.0f%% open" % (value / 0.035 * 100) + marker.position = native_vector(target) + + +func _set_slider(index: int, value: float) -> void: + sliders[index].set_value_no_signal(value) + _slider_changed(value, index) + + +func _toggle_pause() -> void: + if not connected: + return + paused = not paused + next_step_due_us = Time.get_ticks_usec() + 20000 + pause_button.text = "Resume" if paused else "Pause" + status_label.text = "Pausing after current step…" if paused and pending else ("Paused · MuJoCo connected" if paused else "Running · MuJoCo connected") + + +func _home() -> void: + if not connected: + return + for index in range(3): + _set_slider(index, scene_data.bridge.home_target[index]) + _set_slider(3, scene_data.bridge.gripper_initial) + + +func _reset() -> void: + if not connected: + return + reset_requested = true + status_label.text = "Resetting after current step…" + + +func _smoke_target() -> void: + # Bounded, deterministic movement and jaw changes verify more than a static + # connection. The trace preserves the exact transmitted action for replay. + var fraction := float(replies) / float(smoke_steps) + var offset := [0.0, 0.0, 0.0] + var opening := 0.035 + if fraction >= 0.333 and fraction < 0.666: + offset = [0.02, 0.025, -0.025] + opening = 0.025 + elif fraction >= 0.666: + offset = [0.035, -0.015, 0.01] + opening = 0.01 + for index in range(3): + _set_slider(index, float(scene_data.bridge.home_target[index]) + float(offset[index])) + _set_slider(3, opening) + + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT: + orbiting = event.pressed + elif event.pressed and event.button_index == MOUSE_BUTTON_WHEEL_UP: + camera_distance = maxf(0.45, camera_distance * 0.9) + elif event.pressed and event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + camera_distance = minf(4.5, camera_distance * 1.1) + _position_camera() + elif event is InputEventMouseMotion and orbiting: + camera_yaw -= event.relative.x * 0.006 + camera_pitch = clampf(camera_pitch + event.relative.y * 0.006, 0.08, 1.35) + _position_camera() + + +func _position_camera() -> void: + if camera == null: + return + camera.position = focus + camera_distance * Vector3(cos(camera_pitch) * sin(camera_yaw), sin(camera_pitch), cos(camera_pitch) * cos(camera_yaw)) + camera.look_at(focus) + # Shift the scene away from the overlaid controls without moving its geometry. + camera.h_offset = 0.17 + + +func _fail(message: String) -> void: + if errors.is_empty() or errors[-1] != message: + errors.append(message) + paused = true + if status_label != null: + status_label.text = message + status_label.add_theme_color_override("font_color", Color("a14d43")) + for slider in sliders: + slider.editable = false + peer.disconnect_from_host() + push_error(message) + if smoke_steps > 0 or not smoke_output.is_empty(): + _finish_smoke() + + +func _finish_smoke() -> void: + if finished: + return + finished = true + completed_us = Time.get_ticks_usec() + peer.disconnect_from_host() + if not screenshot_path.is_empty() and DisplayServer.get_name() != "headless": + await RenderingServer.frame_post_draw + if FileAccess.file_exists(screenshot_path): + errors.append("Existing screenshot was preserved.") + else: + var saved := get_viewport().get_texture().get_image().save_png(screenshot_path) + if saved != OK: + errors.append("Screenshot could not be written.") + var summary := { + "schema": "dvidia.godot-client-smoke/v1", "ok": errors.is_empty(), + "client_script_sha256": FileAccess.get_sha256("res://main.gd"), + "project_sha256": FileAccess.get_sha256("res://project.godot"), + "processor": OS.get_processor_name(), "logical_processors": OS.get_processor_count(), + "expected_model_sha256": scene_data.get("bridge", {}).get("model_sha256", ""), + "scene_integrity_sha256": scene_integrity_sha256, + "step_responses": replies, "reset_responses": resets, "requested_steps": smoke_steps, + "initial_sim_time_seconds": initial_sim_time, "applied_sim_time_seconds": state_time, + "initial_state": initial_state, "trace": smoke_trace, "trace_limit": 256, + "wall_seconds": (Time.get_ticks_usec() - started_us) / 1000000.0, + "interactive_wall_seconds": (completed_us - ready_us) / 1000000.0 if ready_us > 0 else 0.0, + "process_frame_interval_ms": _distribution(frame_intervals_ms), + "rpc_roundtrip_ms": _distribution(rpc_roundtrip_ms), + "timing_scope": "Startup-inclusive wall time; ready-to-completion interactive wall; Godot process delta intervals (not GPU render time); socket request-to-parsed-response latency; native compute excludes IPC and rendering. Samples capped at 10000 per series.", + "native_compute_total_ms": compute_total_ms, "render_process_frames": frame_count, + "physics_authority": "MuJoCo only", "godot": Engine.get_version_info().string, + "errors": errors, + } + if not smoke_output.is_empty(): + if FileAccess.file_exists(smoke_output): + push_error("Existing smoke output was preserved.") + get_tree().quit(1) + return + var output := FileAccess.open(smoke_output, FileAccess.WRITE) + if output == null: + push_error("Cannot write smoke output.") + get_tree().quit(1) + return + output.store_string(JSON.stringify(summary, " ") + "\n") + var compact := summary.duplicate() + compact.erase("initial_state") + compact.erase("trace") + print(JSON.stringify(compact)) + get_tree().quit(0 if errors.is_empty() else 1) + + +func _distribution(values: Array[float]) -> Dictionary: + if values.is_empty(): + return {"samples": 0, "p50": null, "p95": null} + var ordered := values.duplicate() + ordered.sort() + return {"samples": values.size(), "p50": ordered[int(floor((ordered.size() - 1) * 0.5))], "p95": ordered[int(ceil((ordered.size() - 1) * 0.95))]} diff --git a/integrations/godot/main.gd.uid b/integrations/godot/main.gd.uid new file mode 100644 index 0000000..3922a0d --- /dev/null +++ b/integrations/godot/main.gd.uid @@ -0,0 +1 @@ +uid://dq2utwumqlgmb diff --git a/integrations/godot/main.tscn b/integrations/godot/main.tscn new file mode 100644 index 0000000..4e4d6bb --- /dev/null +++ b/integrations/godot/main.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://main.gd" id="1"] + +[node name="DvidiaWorkstation" type="Node3D"] +script = ExtResource("1") diff --git a/integrations/godot/project.godot b/integrations/godot/project.godot new file mode 100644 index 0000000..19e7c79 --- /dev/null +++ b/integrations/godot/project.godot @@ -0,0 +1,22 @@ +; DVIDIA Godot workstation. Rendering and interface only; MuJoCo owns physics. +config_version=5 + +[application] +config/name="DVIDIA · Manipulation lab" +run/main_scene="res://main.tscn" + +[display] +window/size/viewport_width=1280 +window/size/viewport_height=800 +window/size/window_width_override=1280 +window/size/window_height_override=800 +window/stretch/mode="canvas_items" + +[rendering] +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" +textures/default_filters/use_nearest_mipmap_filter=false +environment/defaults/default_clear_color=Color(0.94, 0.94, 0.90, 1) + +[physics] +common/physics_ticks_per_second=50 diff --git a/integrations/godot/tests/test_coordinates.gd b/integrations/godot/tests/test_coordinates.gd new file mode 100644 index 0000000..1e3d878 --- /dev/null +++ b/integrations/godot/tests/test_coordinates.gd @@ -0,0 +1,31 @@ +extends SceneTree +## Run: godot --headless --path integrations/godot --script tests/test_coordinates.gd + +const Workstation = preload("res://main.gd") + + +func _init() -> void: + var checks := 0 + for pair in [ + [[1, 0, 0], Vector3.RIGHT], [[0, 1, 0], Vector3(0, 0, -1)], + [[0, 0, 1], Vector3.UP], [[0.3, -0.2, 0.7], Vector3(0.3, 0.7, 0.2)], + ]: + assert(Workstation.native_vector(pair[0]).is_equal_approx(pair[1])) + checks += 1 + var converted := Workstation.native_basis([cos(PI / 4), 0, 0, sin(PI / 4)]) + assert((converted * Vector3.RIGHT).is_equal_approx(Vector3(0, 0, -1))) + assert(is_equal_approx(converted.determinant(), 1.0)) + checks += 2 + # body(R * local + p) must equal C*body(R*local+p), with no double axis + # conversion and no parent-body transformation of an already-world pose. + var native_rotation := Basis(Quaternion(Vector3(0.3, 0.7, -0.2).normalized(), 0.81)) + var q := native_rotation.get_rotation_quaternion() + var mapped_rotation := Workstation.native_basis([q.w, q.x, q.y, q.z]) + var local := Vector3(0.12, -0.03, 0.08) + var position := Vector3(0.26, -0.14, 0.22) + var native_result := native_rotation * local + position + var godot_result := mapped_rotation * Workstation.native_vector([local.x, local.y, local.z]) + Workstation.native_vector([position.x, position.y, position.z]) + assert(godot_result.distance_to(Workstation.native_vector([native_result.x, native_result.y, native_result.z])) < 0.000001) + checks += 1 + print(JSON.stringify({"schema": "dvidia.godot-coordinates-test/v1", "passed": checks})) + quit(0) diff --git a/scripts/benchmark-godot-bridge.py b/scripts/benchmark-godot-bridge.py new file mode 100644 index 0000000..1a60394 --- /dev/null +++ b/scripts/benchmark-godot-bridge.py @@ -0,0 +1,123 @@ +"""Compare the unchanged workstation with the local JSON bridge, without a viewer. + +Fixed workload: three paired repetitions of the six authored tracking segments. +This tests integration parity and CPU request overhead, not a learned task, +physical fidelity, socket round-trip latency, or desktop rendering performance. +""" +from __future__ import annotations + +import argparse +from hashlib import sha256 +import json +from pathlib import Path +import platform +import resource +import sys +import time + +import numpy as np + +from dvidia_training import godot_bridge as bridge, reference_sim as sim, workstation as ws + + +def encoded(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), allow_nan=False).encode() + + +def timing(values): + return {"p50_ms": float(np.median(values)), "p95_ms": float(np.percentile(values, 95)), + "maximum_ms": float(max(values))} + + +def run(assets, output): + output = Path(output) + if output.exists() or output.is_symlink(): + raise ValueError("Benchmark output must be fresh") + start = time.perf_counter() + model = ws.build_model(assets) + model_sha = sim.model_digest(model) + compile_seconds = time.perf_counter() - start + mj, _ = sim._native_imports() + protocol = ws.protocol() + results, all_equal = [], True + for repeat in range(3): + traces = {} + for mode in (("direct", "json_bridge") if repeat % 2 == 0 else ("json_bridge", "direct")): + reset_start = time.perf_counter() + if mode == "direct": + data, controller = ws.initialize(model), {} + else: + session = bridge.Session(model, model_sha) + ready = session.process(encoded({"type": "hello", "schema": bridge.SCHEMA, + "model_sha256": model_sha})) + if ready["type"] != "ready": + raise AssertionError(ready) + data = session.data + reset_seconds = time.perf_counter() - reset_start + durations, trace, segment_errors = [], [], [] + sequence = 0 + wall = time.perf_counter() + for action in protocol["actions"]: + for _ in range(action["control_steps"]): + sequence += 1 + begin = time.perf_counter_ns() + if mode == "direct": + state = ws.run_control(model, data, controller, action["target"], action["jaw"], 10) + else: + response = session.process(encoded({"type": "step", "sequence": sequence, + "target": action["target"], "jaw": action["jaw"]})) + response = json.loads(encoded(response)) + if response["type"] != "state" or response["sequence"] != sequence: + raise AssertionError(response) + state = response["state"] + durations.append((time.perf_counter_ns() - begin) / 1e6) + trace.append(state) + segment_errors.append({"segment": action["name"], "position_error_m": state["position_error_m"]}) + seconds = time.perf_counter() - wall + if any(w.number for w in data.warning) or abs(data.time - 12.) > 1e-9: + raise AssertionError("Native warnings or clock drift") + traces[mode] = trace + results.append({"repeat": repeat, "mode": mode, "intervals": sequence, + "native_ticks": sequence * 10, "simulation_seconds": float(data.time), + "wall_seconds_including_trace_collection": seconds, + "real_time_factor": float(data.time) / seconds, + "initialize_seconds_excluded_from_loop": reset_seconds, + "request_timing": timing(durations), "solver_warnings": 0, + "trace_sha256": sha256(encoded(trace)).hexdigest(), + "segment_final_errors": segment_errors}) + exact = traces["direct"] == traces["json_bridge"] + all_equal = all_equal and exact + results[-1]["paired_full_state_exactly_equal"] = exact + if sim.model_digest(model) != model_sha: + raise AssertionError("Compiled model changed during benchmark") + source = Path(bridge.__file__).parent + peak_rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss + report = {"schema": "dvidia.godot-bridge-benchmark/v1", "scope": __doc__.strip(), + "protocol": protocol, "compiled_model_sha256": model_sha, + "source_sha256": {name: sha256((source / name).read_bytes()).hexdigest() + for name in ("godot_bridge.py", "workstation.py", "reference_sim.py")}, + "benchmark_sha256": sha256(Path(__file__).read_bytes()).hexdigest(), + "host": {"platform": platform.platform(), "machine": platform.machine(), + "python": platform.python_version(), "numpy": np.__version__, "mujoco": mj.__version__, + "whole_process_peak_rss_bytes": int(peak_rss if sys.platform == "darwin" else peak_rss * 1024)}, + "compile_seconds": compile_seconds, "runs": results, + "paired_state_comparisons": 1800, "total_native_ticks": 36000, + "all_paired_states_exactly_equal": all_equal, "physical_accuracy_validated": False, + "learned_skill_evaluated": False, "rendering_evaluated": False, + "socket_latency_evaluated": False, "physical_robot_ready": False} + output.parent.mkdir(parents=True, exist_ok=True) + with output.open("x") as stream: + json.dump(report, stream, indent=2, allow_nan=False) + stream.write("\n") + print(json.dumps({"output": str(output), "parity": all_equal, "native_ticks": 36000, + "real_time_factors": [round(row["real_time_factor"], 2) for row in results]})) + if not all_equal: + raise SystemExit(1) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--assets", required=True) + parser.add_argument("--output", required=True) + args = parser.parse_args() + run(args.assets, args.output) diff --git a/scripts/verify-godot-client.py b/scripts/verify-godot-client.py new file mode 100644 index 0000000..8d6294c --- /dev/null +++ b/scripts/verify-godot-client.py @@ -0,0 +1,95 @@ +"""Independently replay a complete Godot smoke trace in the native workstation. + +This checks received-state parity, not whether pixels or physical hardware are +accurate. Godot JSON output rounds doubles, so numerical tolerance is explicit. +""" +from __future__ import annotations + +import argparse +from hashlib import sha256 +import json +import math +from pathlib import Path + +from dvidia_training import reference_sim as sim, workstation as ws + + +TOLERANCE = 1e-9 + + +def run(assets, receipt, output): + receipt, output = Path(receipt), Path(output) + if output.exists() or output.is_symlink(): + raise ValueError("Verification output must be fresh") + if receipt.stat().st_size > 8 * 1024 * 1024: + raise ValueError("Smoke receipt exceeds bound") + raw = receipt.read_bytes() + result = json.loads(raw) + if (result.get("schema") != "dvidia.godot-client-smoke/v1" or result.get("ok") is not True + or result.get("errors") or not 1 <= result.get("step_responses", 0) <= 256 + or result.get("step_responses") != len(result.get("trace", [])) + or result.get("requested_steps") != result["step_responses"] + or result.get("reset_responses") != 0): + raise ValueError("Require a complete successful smoke receipt with no reset") + model = ws.build_model(assets) + if sim.model_digest(model) != result["expected_model_sha256"]: + raise ValueError("Native model mismatch") + data, control = ws.initialize(model), {} + errors = {} + scalars = 0 + + def compare(actual, reference, path): + nonlocal scalars + if type(reference) in (int, float): + if type(actual) not in (int, float) or not math.isfinite(actual): + raise AssertionError("Nonfinite/invalid numeric value: " + path) + error = abs(actual - reference) + errors[path.split(".")[0]] = max(errors.get(path.split(".")[0], 0.), error) + scalars += 1 + if error > TOLERANCE: + raise AssertionError(f"{path}: {error} exceeds tolerance") + elif isinstance(reference, dict): + if type(actual) is not dict or set(actual) != set(reference): + raise AssertionError("State fields differ at " + path) + for key in reference: + compare(actual[key], reference[key], path + "." + key if path else key) + elif isinstance(reference, list): + if type(actual) is not list or len(actual) != len(reference): + raise AssertionError("State shape differs at " + path) + for a, b in zip(actual, reference): + compare(a, b, path) + elif actual != reference: + raise AssertionError("State value differs at " + path) + + compare(result["initial_state"], ws.state(model, data, ws.HOME_TARGET), "") + for index, row in enumerate(result["trace"]): + command = row["request"] + if set(command) != {"type", "sequence", "target", "jaw"} or command["type"] != "step" or command["sequence"] != index + 1: + raise ValueError("Trace contains incomplete or reordered commands") + reference = ws.run_control(model, data, control, command["target"], command["jaw"], 10) + compare(row["state"], reference, "") + if abs(result["applied_sim_time_seconds"] - data.time) > TOLERANCE: + raise AssertionError("Final clock mismatch") + report = {"schema": "dvidia.godot-client-parity/v1", "passed": True, + "scope": __doc__.strip(), "receipt_sha256": sha256(raw).hexdigest(), + "verifier_sha256": sha256(Path(__file__).read_bytes()).hexdigest(), + "workstation_sha256": sha256(Path(ws.__file__).read_bytes()).hexdigest(), + "model_sha256": result["expected_model_sha256"], "tolerance_absolute": TOLERANCE, + "received_states_checked": len(result["trace"]) + 1, + "numeric_scalars_checked": scalars, "maximum_absolute_error_by_field": errors, + "native_ticks_replayed": len(result["trace"]) * 10, + "physical_accuracy_validated": False, "pixels_validated": False} + with output.open("x") as stream: + json.dump(report, stream, indent=2, allow_nan=False) + stream.write("\n") + print(json.dumps({"passed": True, "states": report["received_states_checked"], + "scalars": scalars, "maximum_absolute_error": max(errors.values())})) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--assets", required=True) + parser.add_argument("--receipt", required=True) + parser.add_argument("--output", required=True) + args = parser.parse_args() + run(args.assets, args.receipt, args.output) diff --git a/src/dvidia_training/godot_bridge.py b/src/dvidia_training/godot_bridge.py new file mode 100644 index 0000000..48549a0 --- /dev/null +++ b/src/dvidia_training/godot_bridge.py @@ -0,0 +1,290 @@ +"""Local desktop rendering bridge; MuJoCo alone advances the pinned workstation. + +This is an authored target-tracking research interface, not a learned policy or +a hardware interface. Requests advance a fixed amount of simulation time; wall +clock delays, rendering frames and disconnected clients never advance physics. +""" +from __future__ import annotations + +import argparse +from hashlib import sha256 +import json +import math +from pathlib import Path +import re +import socket +import time + +from . import asset_preview, reference_replay, reference_sim, workstation + +SCHEMA = "dvidia.godot-bridge/v1" +INTEGRITY_SCHEMA = "dvidia.godot-scene-integrity/v1" +HOST = "127.0.0.1" +DEFAULT_PORT = 8430 +MAX_REQUEST_BYTES = 16 * 1024 +IDLE_TIMEOUT_SECONDS = 30. +MAX_SEQUENCE = 2**53 - 1 +SUBSTEPS = 10 +SCOPE = ("Desktop Godot rendering of the pinned native PiPER workstation. " + "MuJoCo alone advances 10 x 2 ms physics ticks per accepted step. " + "Authored IK and synthetic rigid shoe; no learned policy, calibrated " + "contact, deformation, hardware control or real-time qualification.") +TIMING_SCOPE = "Offline request computation only; excludes network, rendering and client scheduling." + + +class ProtocolError(ValueError): + def __init__(self, message, code="invalid_request"): + super().__init__(message) + self.code = code + + +def _json(value): + return (json.dumps(value, separators=(",", ":"), allow_nan=False) + "\n").encode("utf-8") + + +def decode_request(payload): + """Accept one bounded, finite, unique-key UTF-8 JSON object.""" + if type(payload) is not bytes or not 0 < len(payload) <= MAX_REQUEST_BYTES: + raise ProtocolError("Request must contain 1 to 16384 bytes", "request_size") + + def unique(pairs): + result = {} + for key, value in pairs: + if key in result: + raise ValueError("Duplicate key") + result[key] = value + return result + + def nonfinite(_): + raise ValueError("Nonfinite value") + + try: + value = json.loads(payload.decode("utf-8"), object_pairs_hook=unique, parse_constant=nonfinite) + json.dumps(value, allow_nan=False) + except (ValueError, UnicodeError, RecursionError, OverflowError) as exc: + raise ProtocolError("Request requires finite UTF-8 JSON with unique keys", "invalid_json") from exc + if type(value) is not dict: + raise ProtocolError("Request must be a JSON object") + return value + + +def _fields(request, fields): + if set(request) != set(fields): + raise ProtocolError("Request fields do not match the command schema") + + +def _number(value, low, high, label): + if type(value) not in (int, float) or not low <= value <= high or not math.isfinite(value): + raise ProtocolError(label + " must be a bounded finite number") + return float(value) + + +class Session: + """One client, one initialized scene, strict command authority and sequence. + + ``backend`` is injectable for transport-only tests. Production always uses + the unchanged workstation module. Invalid inputs are checked before any + dynamics; a native failure faults the session because it may have partly + advanced a control interval. + """ + + def __init__(self, model, model_sha256, *, backend=workstation): + if type(model_sha256) is not str or not re.fullmatch(r"[0-9a-f]{64}", model_sha256): + raise ValueError("Expected native model SHA256 digest") + self.model, self.model_sha256, self.backend = model, model_sha256, backend + self.data = backend.initialize(model) + self.controller_state = {} + self.target = list(workstation.HOME_TARGET) + self.jaw = .035 + self.expected_sequence = 1 + self.ready = False + self.faulted = False + + def error(self, exc): + return {"type": "error", "code": exc.code, "message": str(exc), + "expected_sequence": self.expected_sequence} + + def process(self, payload): + try: + return self.handle(decode_request(payload)) + except ProtocolError as exc: + return self.error(exc) + + def handle(self, request): + if type(request) is not dict: + raise ProtocolError("Request must be a JSON object") + if self.faulted: + raise ProtocolError("Native simulation faulted; reconnect to initialize a new scene", "simulation_fault") + kind = request.get("type") + if not self.ready: + _fields(request, ("type", "schema", "model_sha256")) + if kind != "hello" or request["schema"] != SCHEMA: + raise ProtocolError("A matching bridge hello is required before commands", "handshake_required") + if request["model_sha256"] != self.model_sha256: + raise ProtocolError("Prepared scene and running native model differ", "model_mismatch") + self.ready = True + return {"type": "ready", "schema": SCHEMA, "model_sha256": self.model_sha256, + "state": self.backend.state(self.model, self.data, self.target), + "physics_dt": workstation.TIMESTEP, "control_dt": workstation.CONTROL_DT, + "scope": SCOPE, "timing_scope": TIMING_SCOPE} + if kind == "ping": + _fields(request, ("type",)) + return {"type": "pong", "model_sha256": self.model_sha256, + "expected_sequence": self.expected_sequence} + if kind not in ("step", "reset"): + raise ProtocolError("Only step, reset and ping are supported after hello") + _fields(request, ("type", "sequence", "target", "jaw") if kind == "step" else ("type", "sequence")) + sequence = request["sequence"] + if type(sequence) is not int or not 1 <= sequence <= MAX_SEQUENCE or sequence != self.expected_sequence: + raise ProtocolError("Sequence must equal the next accepted command number", "sequence_mismatch") + if kind == "step": + target = request["target"] + if type(target) is not list or len(target) != 3: + raise ProtocolError("Target requires three coordinates") + target = [_number(value, *bounds, "Target") for value, bounds in zip(target, workstation.BOUNDS)] + jaw = _number(request["jaw"], 0., .035, "Jaw") + else: + target, jaw = list(workstation.HOME_TARGET), .035 + started = time.perf_counter() + try: + if kind == "step": + state = self.backend.run_control(self.model, self.data, self.controller_state, target, jaw, SUBSTEPS) + else: + self.data = self.backend.initialize(self.model) + self.controller_state = {} + state = self.backend.state(self.model, self.data, target) + except Exception as exc: + self.faulted = True + raise ProtocolError("Native simulation failed; this interval may have partially advanced. Reconnect to reset.", + "simulation_fault") from exc + compute_ms = (time.perf_counter() - started) * 1000 + self.target, self.jaw = target, jaw + self.expected_sequence += 1 + return {"type": "state", "sequence": sequence, "model_sha256": self.model_sha256, + "state": state, "compute_ms": compute_ms, "timing_scope": TIMING_SCOPE} + + +def handle_connection(connection, session): + """Read bounded newline frames; a disconnect discards any unissued prefix.""" + buffer = bytearray() + try: + while True: + # At most one request plus a small receive chunk is held at a time. + chunk = connection.recv(min(4096, MAX_REQUEST_BYTES + 1 - len(buffer))) + if not chunk: + return + buffer.extend(chunk) + while b"\n" in buffer: + line, _, rest = buffer.partition(b"\n") + buffer = bytearray(rest) + response = session.process(bytes(line)) + connection.sendall(_json(response)) + if session.faulted: + return + if len(buffer) > MAX_REQUEST_BYTES: + connection.sendall(_json(session.error(ProtocolError("Request exceeds 16384 bytes", "request_size")))) + return + except (ConnectionError, OSError): + # No timer or free-running stepping thread exists after a client leaves. + return + + +def prepare(assets, output): + """Export a fresh local renderer scene without running physics.""" + destination = Path(output) + if destination.exists() or destination.is_symlink(): + raise ValueError("Godot scene output must be a fresh directory") + if any(parent.is_symlink() for parent in destination.absolute().parents): + raise ValueError("Godot scene output cannot traverse a symlink") + provenance, notices = asset_preview._licenses("piper", assets) + model = workstation.build_model(assets) + digest = reference_sim.model_digest(model) + mj, _ = reference_sim._native_imports() + source = {"robot": "piper", "assets": provenance, "mujoco": mj.__version__, + "compiled_model_sha256": digest} + scene, geometry = asset_preview._scene(model, source) + if reference_sim.model_digest(model) != digest: + raise ValueError("Geometry export changed the native model") + scene["scope"] = SCOPE + scene["bridge"] = {"schema": SCHEMA, "model_sha256": digest, + "home_target": list(workstation.HOME_TARGET), + "bounds": [list(pair) for pair in workstation.BOUNDS], + "gripper_initial": .035, "physics_dt": workstation.TIMESTEP, + "control_dt": workstation.CONTROL_DT, "scope": SCOPE} + scene["geometry_binary"] = {"href": "geometry.bin", "compression": "none", "bytes": len(geometry), + "sha256": sha256(geometry).hexdigest()} + files = {"scene.json": _json(scene), "geometry.bin": geometry, + "LICENSE": reference_replay.MIT_LICENSE.encode(), **notices} + files["README.md"] = ("# DVIDIA Godot workstation scene\n\n" + SCOPE + "\n\n" + "Prepared geometry only: no physics ticks or benchmark have run. Native positions are metres " + "in Z-up coordinates; quaternions are wxyz. Binary positions are little-endian Float32 and " + "indices are little-endian UInt32. The Godot renderer maps [x,y,z] to [x,z,-y]. " + "Run the bridge separately against the same pinned local robot assets. The hello digest " + "must match this compiled model. Upstream robot notices are retained under licenses/. " + "DVIDIA code and synthetic shoes use MIT; MuJoCo is an external Apache-2.0 runtime. " + "Hashes establish artifact consistency, not authenticity or physical qualification.\n").encode() + seal = {"schema": INTEGRITY_SCHEMA, "model_sha256": digest, + "scope": "Artifact consistency only; not authenticity or physical qualification", + "files": {name: {"bytes": len(value), "sha256": sha256(value).hexdigest()} + for name, value in files.items()}} + files["scene-integrity.json"] = _json(seal) + if any(len(value) > asset_preview.MAX_FILE_BYTES for value in files.values()) or sum(map(len, files.values())) > asset_preview.MAX_TOTAL_BYTES: + raise ValueError("Godot scene exceeds the bounded export size") + destination.mkdir(parents=True, exist_ok=False) + for name, value in files.items(): + path = destination / name + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("xb") as stream: + stream.write(value) + return {"schema": SCHEMA, "output": str(destination), "model_sha256": digest, + "file_count": len(files), "bytes": sum(map(len, files.values())), + "physics_steps": 0, "scope": SCOPE} + + +def serve(assets, port=DEFAULT_PORT, *, once=False): + """Serve one local TCP client at a time, with a new scene per connection.""" + if type(port) is not int or not 1 <= port <= 65535: + raise ValueError("Port must be an integer in [1,65535]") + model = workstation.build_model(assets) + digest = reference_sim.model_digest(model) + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as listener: + listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + listener.bind((HOST, port)) + listener.listen(1) + print(json.dumps({"schema": SCHEMA, "status": "listening", "host": HOST, "port": port, + "model_sha256": digest, "scope": SCOPE}), flush=True) + while True: + connection, _ = listener.accept() + with connection: + connection.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + connection.settimeout(IDLE_TIMEOUT_SECONDS) + handle_connection(connection, Session(model, digest)) + if once: + return + + +def main(argv=None): + parser = argparse.ArgumentParser(description=__doc__) + sub = parser.add_subparsers(dest="command", required=True) + export = sub.add_parser("prepare", help="Export a fresh local Godot scene without physics steps") + export.add_argument("--assets", required=True, type=Path) + export.add_argument("--output", required=True, type=Path) + server = sub.add_parser("serve", help="Serve fixed-step MuJoCo physics to one loopback client") + server.add_argument("--assets", required=True, type=Path) + server.add_argument("--port", type=int, default=DEFAULT_PORT) + server.add_argument("--once", action="store_true", help="Exit after the first client disconnects") + args = parser.parse_args(argv) + try: + if args.command == "prepare": + print(json.dumps(prepare(args.assets, args.output), indent=2)) + else: + serve(args.assets, args.port, once=args.once) + except KeyboardInterrupt: + return 0 + except (ValueError, OSError, RuntimeError) as exc: + parser.exit(2, str(exc) + "\n") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_godot_bridge.py b/tests/test_godot_bridge.py new file mode 100644 index 0000000..ac5c0c0 --- /dev/null +++ b/tests/test_godot_bridge.py @@ -0,0 +1,270 @@ +"""Transport and authority checks; fake backend tests never assert physical accuracy.""" +from copy import deepcopy +from hashlib import sha256 +import json +from pathlib import Path +import socket +import tempfile +import threading +from types import SimpleNamespace +import unittest +from unittest.mock import MagicMock, patch + +from dvidia_training import godot_bridge as bridge + + +DIGEST = "a" * 64 + + +class FakeBackend: + def __init__(self): + self.actions = [] + self.resets = 0 + + def initialize(self, model): + self.resets += 1 + return {"time": 0., "qpos": [0.] * 15} + + def state(self, model, data, target=None): + return deepcopy(data) + + def run_control(self, model, data, controller_state, target, jaw, substeps): + self.actions.append((id(controller_state), deepcopy(target), jaw, substeps)) + controller_state["native_steps"] = controller_state.get("native_steps", 0) + substeps + data["time"] = controller_state["native_steps"] * .002 + data["qpos"][0] += .001 + return self.state(model, data, target) + + +def hello(): + return {"type": "hello", "schema": bridge.SCHEMA, "model_sha256": DIGEST} + + +def step(sequence=1): + return {"type": "step", "sequence": sequence, "target": [.32, -.145, .18], "jaw": .035} + + +class ProtocolTests(unittest.TestCase): + def setUp(self): + self.backend = FakeBackend() + self.session = bridge.Session(object(), DIGEST, backend=self.backend) + + def request(self, value): + return self.session.process(json.dumps(value).encode()) + + def test_hello_requires_matching_schema_and_model_and_never_steps(self): + for value in (step(), {**hello(), "schema": "other"}, {**hello(), "model_sha256": "b" * 64}, + {**hello(), "render_fps": 60}): + self.assertEqual(self.request(value)["type"], "error") + self.assertFalse(self.session.ready) + reply = self.request(hello()) + self.assertEqual(reply["type"], "ready") + self.assertEqual(reply["state"]["time"], 0.) + self.assertEqual(reply["model_sha256"], DIGEST) + self.assertEqual(self.backend.actions, []) + + def test_each_step_is_exactly_ten_ticks_using_persistent_controller_state(self): + self.request(hello()) + first, second = self.request(step()), self.request(step(2)) + self.assertEqual(first["state"]["time"], .02) + self.assertEqual(second["state"]["time"], .04) + self.assertEqual(self.session.controller_state["native_steps"], 20) + self.assertEqual([row[3] for row in self.backend.actions], [10, 10]) + self.assertEqual(self.backend.actions[0][0], self.backend.actions[1][0]) + self.assertEqual(second["sequence"], 2) + self.assertGreaterEqual(second["compute_ms"], 0.) + self.assertIn("excludes network", second["timing_scope"]) + + def test_bad_target_jaw_sequence_or_unknown_control_is_rejected_before_ticks(self): + self.request(hello()) + requests = [{**step(), "target": value} for value in + (None, [True, 0, .2], [.6, 0, .2], [.3, -.25, .2], [.3, 0, .01], [.3, 0], + [10**1000, 0, .2], [float("nan"), 0, .2], [.3, 0, float("inf")])] + requests += [{**step(), "jaw": value} for value in (None, True, -.001, .036, float("nan"), 10**1000)] + requests += [{**step(), "sequence": value} for value in (None, True, 0, -1, 2, 1., 2**53)] + requests += [{**step(), "substeps": 100}, {**step(), "impulse": [0, 0, .1]}, + {**step(), "render_fps": 144}, {"type": "teleport", "qpos": [0] * 15}, + {"type": "camera", "position": [1, 2, 3]}, {"type": "hello", "schema": bridge.SCHEMA}] + for value in requests: + with self.subTest(value=value): + self.assertEqual(self.request(value)["type"], "error") + self.assertEqual(self.session.expected_sequence, 1) + self.assertEqual(self.session.data["time"], 0.) + self.assertEqual(self.backend.actions, []) + self.assertEqual(self.request(step())["type"], "state") + + def test_duplicate_and_skipped_sequences_do_not_replay_commands(self): + self.request(hello()) + self.request(step()) + for sequence in (1, 3): + self.assertEqual(self.request(step(sequence))["code"], "sequence_mismatch") + self.assertEqual(self.session.data["time"], .02) + self.assertEqual(len(self.backend.actions), 1) + self.assertEqual(self.request(step(2))["state"]["time"], .04) + + def test_reset_reinitializes_without_ticks_and_sequence_remains_monotonic(self): + self.request(hello()) + self.request(step()) + reset = self.request({"type": "reset", "sequence": 2}) + self.assertEqual(reset["state"]["time"], 0.) + self.assertEqual(self.session.controller_state, {}) + self.assertEqual(self.backend.resets, 2) + self.assertEqual(len(self.backend.actions), 1) + self.assertEqual(self.request(step(3))["state"]["time"], .02) + + def test_ping_has_no_control_authority(self): + self.request(hello()) + for _ in range(20): + self.assertEqual(self.request({"type": "ping"})["type"], "pong") + self.assertEqual(self.backend.actions, []) + self.assertEqual(self.session.expected_sequence, 1) + + def test_invalid_json_and_duplicate_keys_are_rejected(self): + self.request(hello()) + for value in (b"", b"{", b"[]", b"null", b"\xff", b'{"type":"ping","type":"step"}', + b'{"type":"step","sequence":1,"target":[0.3,0,1e400],"jaw":0}', + b" " * (bridge.MAX_REQUEST_BYTES + 1), b"[" * 1200): + with self.subTest(value=value[:60]): + self.assertEqual(self.session.process(value)["type"], "error") + self.assertEqual(self.backend.actions, []) + self.assertEqual(self.session.expected_sequence, 1) + + def test_native_exception_faults_session_and_does_not_claim_rejected_before_dynamics(self): + self.request(hello()) + + def broken(*args): + self.session.data["time"] = .006 + raise RuntimeError("solver failure") + + self.backend.run_control = broken + response = self.request(step()) + self.assertEqual(response["code"], "simulation_fault") + self.assertIn("partially advanced", response["message"]) + self.assertTrue(self.session.faulted) + self.assertEqual(self.request({"type": "reset", "sequence": 1})["code"], "simulation_fault") + self.assertEqual(self.session.data["time"], .006) + + +class SocketTests(unittest.TestCase): + def setUp(self): + self.backend = FakeBackend() + self.session = bridge.Session(object(), DIGEST, backend=self.backend) + self.server, self.client = socket.socketpair() + self.client.settimeout(2) + self.thread = threading.Thread(target=bridge.handle_connection, args=(self.server, self.session), daemon=True) + self.thread.start() + self.reader = self.client.makefile("rb") + + def tearDown(self): + self.reader.close() + self.client.close() + self.server.close() + self.thread.join(timeout=2) + self.assertFalse(self.thread.is_alive()) + + def read(self): + return json.loads(self.reader.readline()) + + def test_chunked_and_combined_frames_preserve_one_command_one_interval(self): + wire = bridge._json(hello()) + for piece in (wire[:2], wire[2:17], wire[17:]): + self.client.sendall(piece) + self.assertEqual(self.read()["type"], "ready") + self.client.sendall(bridge._json(step()) + bridge._json(step(2))) + self.assertEqual(self.read()["state"]["time"], .02) + self.assertEqual(self.read()["state"]["time"], .04) + self.assertEqual(len(self.backend.actions), 2) + + def test_incomplete_command_disconnected_before_newline_never_ticks(self): + self.client.sendall(bridge._json(hello())) + self.read() + self.client.sendall(bridge._json(step())[:-1]) + self.client.shutdown(socket.SHUT_WR) + self.thread.join(timeout=2) + self.assertFalse(self.thread.is_alive()) + self.assertEqual(self.backend.actions, []) + + def test_oversize_frame_is_bounded_and_closes_without_ticks(self): + self.client.sendall(b"x" * (bridge.MAX_REQUEST_BYTES + 1)) + self.assertEqual(self.read()["code"], "request_size") + self.thread.join(timeout=2) + self.assertFalse(self.thread.is_alive()) + self.assertEqual(self.backend.actions, []) + + def test_malformed_line_can_be_followed_by_valid_handshake(self): + self.client.sendall(b"{\n" + bridge._json(hello())) + self.assertEqual(self.read()["code"], "invalid_json") + self.assertEqual(self.read()["type"], "ready") + self.assertEqual(self.backend.actions, []) + + +class ExportTests(unittest.TestCase): + def test_prepare_exports_geometry_hash_and_notices_without_initialize_or_dynamics(self): + fake_model = object() + geometry = b"little endian geometry fixture" + with tempfile.TemporaryDirectory() as tmp: + destination = Path(tmp).resolve() / "scene" + with patch.object(bridge.asset_preview, "_licenses", return_value=({"commit": "pinned"}, {"licenses/piper/LICENSE": b"upstream"})), \ + patch.object(bridge.workstation, "build_model", return_value=fake_model), \ + patch.object(bridge.reference_sim, "model_digest", return_value=DIGEST), \ + patch.object(bridge.reference_sim, "_native_imports", return_value=(SimpleNamespace(__version__="fixture"), None)), \ + patch.object(bridge.asset_preview, "_scene", return_value=({"geoms": [], "bodies": [], "meshes": []}, geometry)), \ + patch.object(bridge.workstation, "initialize") as initialize, \ + patch.object(bridge.workstation, "run_control") as dynamics: + result = bridge.prepare(Path(tmp) / "assets", destination) + self.assertEqual(result["physics_steps"], 0) + initialize.assert_not_called() + dynamics.assert_not_called() + scene = json.loads((destination / "scene.json").read_text()) + self.assertEqual(scene["bridge"]["model_sha256"], DIGEST) + self.assertEqual(scene["bridge"]["physics_dt"], .002) + self.assertEqual(scene["bridge"]["control_dt"], .02) + self.assertEqual(scene["geometry_binary"]["sha256"], sha256(geometry).hexdigest()) + self.assertEqual((destination / "geometry.bin").read_bytes(), geometry) + self.assertEqual((destination / "licenses/piper/LICENSE").read_bytes(), b"upstream") + seal = json.loads((destination / "scene-integrity.json").read_text()) + for name, record in seal["files"].items(): + payload = (destination / name).read_bytes() + self.assertEqual(len(payload), record["bytes"]) + self.assertEqual(sha256(payload).hexdigest(), record["sha256"]) + with self.assertRaisesRegex(ValueError, "fresh directory"): + bridge.prepare("unused", destination) + + def test_output_refuses_symlink_ancestor_and_existing_directory_before_native_access(self): + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp).resolve() + (root / "existing").mkdir() + (root / "linked").symlink_to(root / "existing", target_is_directory=True) + with patch.object(bridge.workstation, "build_model") as build: + for path in (root / "existing", root / "linked", root / "linked/child"): + with self.subTest(path=path), self.assertRaises(ValueError): + bridge.prepare("unused", path) + build.assert_not_called() + + def test_server_port_validation_and_fixed_loopback_host(self): + self.assertEqual(bridge.HOST, "127.0.0.1") + for port in (0, -1, 65536, True, "8430"): + with self.assertRaises(ValueError): + bridge.serve("unused", port) + + def test_server_binds_loopback_sets_idle_timeout_and_once_exits(self): + listener, connection = MagicMock(), MagicMock() + listener.__enter__.return_value = listener + connection.__enter__.return_value = connection + listener.accept.return_value = (connection, ("127.0.0.1", 1234)) + connection.recv.return_value = b"" + backend = FakeBackend() + session = bridge.Session(object(), DIGEST, backend=backend) + with patch.object(bridge.socket, "socket", return_value=listener), \ + patch.object(bridge.workstation, "build_model"), \ + patch.object(bridge.reference_sim, "model_digest", return_value=DIGEST), \ + patch.object(bridge, "Session", return_value=session), patch("builtins.print"): + bridge.serve("unused", 8431, once=True) + listener.bind.assert_called_once_with(("127.0.0.1", 8431)) + connection.settimeout.assert_called_once_with(30.) + listener.accept.assert_called_once() + self.assertEqual(backend.actions, []) + + +if __name__ == "__main__": + unittest.main()