askuric HF Staff commited on
Commit
90ad8e4
·
1 Parent(s): 7bac9b2

added the visualisation of the current robot state

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. remote_control_space/app.py +105 -19
  3. remote_control_space/dist/assets/index-BQQO6wv3.js +0 -0
  4. remote_control_space/dist/assets/kinematics_data.json +272 -0
  5. remote_control_space/dist/assets/reachy_mini_rust_kinematics_bg-l105NonK.wasm +3 -0
  6. remote_control_space/dist/assets/urdf/assets/5w_speaker.part +13 -0
  7. remote_control_space/dist/assets/urdf/assets/5w_speaker.stl +3 -0
  8. remote_control_space/dist/assets/urdf/assets/antenna.part +13 -0
  9. remote_control_space/dist/assets/urdf/assets/antenna.stl +3 -0
  10. remote_control_space/dist/assets/urdf/assets/antenna_body_3dprint.part +13 -0
  11. remote_control_space/dist/assets/urdf/assets/antenna_body_3dprint.stl +3 -0
  12. remote_control_space/dist/assets/urdf/assets/antenna_holder_l_3dprint.part +13 -0
  13. remote_control_space/dist/assets/urdf/assets/antenna_holder_l_3dprint.stl +3 -0
  14. remote_control_space/dist/assets/urdf/assets/antenna_holder_r_3dprint.part +13 -0
  15. remote_control_space/dist/assets/urdf/assets/antenna_holder_r_3dprint.stl +3 -0
  16. remote_control_space/dist/assets/urdf/assets/antenna_interface_3dprint.part +13 -0
  17. remote_control_space/dist/assets/urdf/assets/antenna_interface_3dprint.stl +3 -0
  18. remote_control_space/dist/assets/urdf/assets/arducam.part +13 -0
  19. remote_control_space/dist/assets/urdf/assets/arducam.stl +3 -0
  20. remote_control_space/dist/assets/urdf/assets/arm.part +13 -0
  21. remote_control_space/dist/assets/urdf/assets/arm.stl +3 -0
  22. remote_control_space/dist/assets/urdf/assets/b3b_eh.part +13 -0
  23. remote_control_space/dist/assets/urdf/assets/b3b_eh.stl +3 -0
  24. remote_control_space/dist/assets/urdf/assets/b3b_eh_1.part +13 -0
  25. remote_control_space/dist/assets/urdf/assets/b3b_eh_1.stl +3 -0
  26. remote_control_space/dist/assets/urdf/assets/ball.part +13 -0
  27. remote_control_space/dist/assets/urdf/assets/ball.stl +3 -0
  28. remote_control_space/dist/assets/urdf/assets/bearing_85x110x13.part +13 -0
  29. remote_control_space/dist/assets/urdf/assets/bearing_85x110x13.stl +3 -0
  30. remote_control_space/dist/assets/urdf/assets/big_lens.part +13 -0
  31. remote_control_space/dist/assets/urdf/assets/big_lens.stl +3 -0
  32. remote_control_space/dist/assets/urdf/assets/big_lens_d40.part +13 -0
  33. remote_control_space/dist/assets/urdf/assets/big_lens_d40.stl +3 -0
  34. remote_control_space/dist/assets/urdf/assets/body_down_3dprint.part +13 -0
  35. remote_control_space/dist/assets/urdf/assets/body_down_3dprint.stl +3 -0
  36. remote_control_space/dist/assets/urdf/assets/body_foot_3dprint.part +13 -0
  37. remote_control_space/dist/assets/urdf/assets/body_foot_3dprint.stl +3 -0
  38. remote_control_space/dist/assets/urdf/assets/body_top_3dprint.part +13 -0
  39. remote_control_space/dist/assets/urdf/assets/body_top_3dprint.stl +3 -0
  40. remote_control_space/dist/assets/urdf/assets/body_turning_3dprint.part +13 -0
  41. remote_control_space/dist/assets/urdf/assets/body_turning_3dprint.stl +3 -0
  42. remote_control_space/dist/assets/urdf/assets/bottom_body.part +13 -0
  43. remote_control_space/dist/assets/urdf/assets/bottom_body.stl +3 -0
  44. remote_control_space/dist/assets/urdf/assets/bts2_m2_6x8.part +13 -0
  45. remote_control_space/dist/assets/urdf/assets/bts2_m2_6x8.stl +3 -0
  46. remote_control_space/dist/assets/urdf/assets/dc15_a01_case_b_dummy.part +13 -0
  47. remote_control_space/dist/assets/urdf/assets/dc15_a01_case_b_dummy.stl +3 -0
  48. remote_control_space/dist/assets/urdf/assets/dc15_a01_case_f_dummy.part +13 -0
  49. remote_control_space/dist/assets/urdf/assets/dc15_a01_case_f_dummy.stl +3 -0
  50. remote_control_space/dist/assets/urdf/assets/dc15_a01_case_m_dummy.part +13 -0
.gitattributes CHANGED
@@ -34,3 +34,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  *.png filter=lfs diff=lfs merge=lfs -text
 
 
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  *.png filter=lfs diff=lfs merge=lfs -text
37
+ *.stl filter=lfs diff=lfs merge=lfs -text
remote_control_space/app.py CHANGED
@@ -15,6 +15,8 @@ import gradio as gr
15
  import numpy as np
16
  from fastapi import FastAPI, WebSocket, WebSocketDisconnect
17
  from fastapi.responses import StreamingResponse
 
 
18
  import uvicorn
19
  from fastrtc import WebRTC, StreamHandler, get_cloudflare_turn_credentials
20
  from huggingface_hub import get_token
@@ -133,6 +135,11 @@ class GlobalState:
133
  duration=0.2,
134
  )
135
 
 
 
 
 
 
136
  # --- Connection management ---
137
 
138
  def set_robot_connection(self, ws: WebSocket, loop: asyncio.AbstractEventLoop) -> None:
@@ -249,6 +256,13 @@ class GlobalState:
249
  def get_connection_status(self) -> str:
250
  return "✅ Robot Connected" if self.robot_ws else "🔴 Waiting for Robot..."
251
 
 
 
 
 
 
 
 
252
  def get_latency_display(self) -> str:
253
  """Get formatted latency statistics for display."""
254
  video_stats = self.get_video_latency_stats()
@@ -461,6 +475,14 @@ def webrtc_video_generator():
461
 
462
  app = FastAPI()
463
 
 
 
 
 
 
 
 
 
464
 
465
  @app.websocket("/robot")
466
  async def robot_endpoint(ws: WebSocket):
@@ -480,6 +502,46 @@ async def robot_endpoint(ws: WebSocket):
480
  state.clear_robot_connection()
481
 
482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
483
  @app.get("/video_feed")
484
  def video_feed():
485
  return StreamingResponse(
@@ -1537,6 +1599,23 @@ with gr.Blocks(
1537
  with gr.Row():
1538
  # Left column - Controls
1539
  with gr.Column(scale=1, min_width=280):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1540
  # Hidden pose state textbox - polls pose for JS gauges
1541
  pose_state = gr.Textbox(
1542
  value=get_pose_string,
@@ -1687,6 +1766,32 @@ with gr.Blocks(
1687
 
1688
  # Right column - Video
1689
  with gr.Column(scale=3, elem_id="video-column"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1690
  if USE_VIDEO_WEBRTC:
1691
  robot_video = WebRTC(
1692
  label="",
@@ -1702,25 +1807,6 @@ with gr.Blocks(
1702
  outputs=[robot_video],
1703
  trigger=listen_btn.click,
1704
  )
1705
- else:
1706
- html_code = """
1707
- <html>
1708
- <body>
1709
- <img src="/video_feed" style="width: 100%; max-width: 1080px; border-radius: 8px;">
1710
- </body>
1711
- </html>
1712
- """
1713
- gr.HTML(value=html_code, label="🎬 Robot Video")
1714
-
1715
- # Latency display below video
1716
- latency_box = gr.Textbox(
1717
- value=state.get_latency_display,
1718
- every=1,
1719
- show_label=False,
1720
- container=False,
1721
- elem_id="latency-box",
1722
- lines=2,
1723
- )
1724
 
1725
  # Load keyboard handler
1726
  demo.load(None, None, None, js=KEYBOARD_JS if USE_AUDIO_WEBRTC else APP_JS)
 
15
  import numpy as np
16
  from fastapi import FastAPI, WebSocket, WebSocketDisconnect
17
  from fastapi.responses import StreamingResponse
18
+ from fastapi.staticfiles import StaticFiles
19
+ import os
20
  import uvicorn
21
  from fastrtc import WebRTC, StreamHandler, get_cloudflare_turn_credentials
22
  from huggingface_hub import get_token
 
135
  duration=0.2,
136
  )
137
 
138
+ # Robot state (joint positions)
139
+ self.robot_state_lock = threading.Lock()
140
+ self.latest_robot_state: Optional[dict] = None
141
+ self.latest_robot_state_ts: float = 0.0
142
+
143
  # --- Connection management ---
144
 
145
  def set_robot_connection(self, ws: WebSocket, loop: asyncio.AbstractEventLoop) -> None:
 
256
  def get_connection_status(self) -> str:
257
  return "✅ Robot Connected" if self.robot_ws else "🔴 Waiting for Robot..."
258
 
259
+ # --- Robot state ---
260
+
261
+ def update_robot_state(self, data: dict) -> None:
262
+ with self.robot_state_lock:
263
+ self.latest_robot_state = data
264
+ self.latest_robot_state_ts = time.time()
265
+
266
  def get_latency_display(self) -> str:
267
  """Get formatted latency statistics for display."""
268
  video_stats = self.get_video_latency_stats()
 
475
 
476
  app = FastAPI()
477
 
478
+ viz_dir = os.path.join(os.path.dirname(__file__), "dist")
479
+ if os.path.exists(viz_dir):
480
+ app.mount(
481
+ "/viz",
482
+ StaticFiles(directory=viz_dir, html=True),
483
+ name="viz",
484
+ )
485
+
486
 
487
  @app.websocket("/robot")
488
  async def robot_endpoint(ws: WebSocket):
 
502
  state.clear_robot_connection()
503
 
504
 
505
+ @app.websocket("/robot_state")
506
+ async def robot_state_endpoint(ws: WebSocket):
507
+ """Endpoint for the Robot to publish joint state."""
508
+ await ws.accept()
509
+ print("[System] Robot State Connected")
510
+
511
+ try:
512
+ while True:
513
+ data = await ws.receive_json()
514
+ if isinstance(data, dict) and data.get("type") == "robot_state":
515
+ state.update_robot_state(data)
516
+ except (WebSocketDisconnect, Exception):
517
+ print("[System] Robot State Disconnected")
518
+
519
+
520
+ @app.websocket("/joint_states")
521
+ async def joint_states_endpoint(ws: WebSocket):
522
+ """Endpoint for the Browser to receive joint state."""
523
+ await ws.accept()
524
+ print("[System] Browser Joint State Connected")
525
+
526
+ try:
527
+ while True:
528
+ with state.robot_state_lock:
529
+ data = state.latest_robot_state
530
+
531
+ if data and (head_vals := data.get("head")):
532
+ payload = {
533
+ "body_yaw": head_vals[0],
534
+ "angles": head_vals[1:7],
535
+ "antennas": data.get("antennas"),
536
+ "timestamp": data.get("timestamp"),
537
+ }
538
+ await ws.send_json(payload)
539
+
540
+ await asyncio.sleep(0.03)
541
+ except (WebSocketDisconnect, Exception):
542
+ print("[System] Browser Joint State Disconnected")
543
+
544
+
545
  @app.get("/video_feed")
546
  def video_feed():
547
  return StreamingResponse(
 
1599
  with gr.Row():
1600
  # Left column - Controls
1601
  with gr.Column(scale=1, min_width=280):
1602
+ # Small visualization window
1603
+ if os.path.exists(viz_dir):
1604
+ gr.HTML(
1605
+ value="""
1606
+ <div style=\"border-radius: 8px; overflow: hidden;\">
1607
+ <iframe
1608
+ src=\"/viz/index.html\"
1609
+ style=\"width: 400px; height: 400px; border: none; border-radius: 8px;\"
1610
+ allow=\"autoplay; fullscreen\"
1611
+ ></iframe>
1612
+ </div>
1613
+ """,
1614
+ label="🤖 Reachy 3D",
1615
+ )
1616
+ else:
1617
+ gr.Markdown("❌ Visualization not available")
1618
+
1619
  # Hidden pose state textbox - polls pose for JS gauges
1620
  pose_state = gr.Textbox(
1621
  value=get_pose_string,
 
1766
 
1767
  # Right column - Video
1768
  with gr.Column(scale=3, elem_id="video-column"):
1769
+ with gr.Row():
1770
+ # Main video feed
1771
+ with gr.Column():
1772
+ gr.Markdown("### 🎬 Robot Camera Feed", elem_id="video-title")
1773
+ if USE_VIDEO_WEBRTC:
1774
+ pass
1775
+ else:
1776
+ html_code = """
1777
+ <html>
1778
+ <body>
1779
+ <img src="/video_feed" style="width: 100%; max-width: 1080px; border-radius: 8px;">
1780
+ </body>
1781
+ </html>
1782
+ """
1783
+ gr.HTML(value=html_code, label="")
1784
+
1785
+ # Latency display below
1786
+ latency_box = gr.Textbox(
1787
+ value=state.get_latency_display,
1788
+ every=1,
1789
+ show_label=False,
1790
+ container=False,
1791
+ elem_id="latency-box",
1792
+ lines=2,
1793
+ )
1794
+
1795
  if USE_VIDEO_WEBRTC:
1796
  robot_video = WebRTC(
1797
  label="",
 
1807
  outputs=[robot_video],
1808
  trigger=listen_btn.click,
1809
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1810
 
1811
  # Load keyboard handler
1812
  demo.load(None, None, None, js=KEYBOARD_JS if USE_AUDIO_WEBRTC else APP_JS)
remote_control_space/dist/assets/index-BQQO6wv3.js ADDED
The diff for this file is too large to render. See raw diff
 
remote_control_space/dist/assets/kinematics_data.json ADDED
@@ -0,0 +1,272 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "motor_arm_length": 0.04000000000000001,
3
+ "rod_length": 0.08499999999999995,
4
+ "head_z_offset": 0.177,
5
+ "passive_joint_kinematics": {
6
+ "t_xl330_in_platform_frame": [
7
+ [ 0.4822, -0.7068, -0.5177, 0.0206],
8
+ [ 0.1766, -0.5003, 0.8476, -0.0218],
9
+ [-0.8581, -0.5001, -0.1164, -0.0 ],
10
+ [ 0.0 , 0.0 , 0.0 , 1.0 ]
11
+ ],
12
+ "orientation_offset_in_servo_arm_frame": [
13
+ [-0.13754,-0.0882156, 2.10349],
14
+ [-3.14159, 5.37396e-16, -3.14159],
15
+ [0.373569, 0.0882156, -1.0381],
16
+ [-0.0860846, 0.0882156, 1.0381],
17
+ [0.123977, 0.0882156, -1.0381],
18
+ [3.0613, 0.0882156, 1.0381],
19
+ [3.14159, 2.10388e-17, 4.15523e-17]
20
+ ],
21
+ "stewart_rod_direction_in_passive_frame":[
22
+ [1, 0, 0],
23
+ [ 0.50606941, -0.85796418, -0.08826792],
24
+ [-1, 0, 0],
25
+ [-1, 0, 0],
26
+ [-1, 0, 0],
27
+ [-1, 0, 0]
28
+ ]
29
+ },
30
+ "motors": [
31
+ {
32
+ "name": "stewart_1",
33
+ "branch_frame": "closing_1_2",
34
+ "offset": 0,
35
+ "solution": 0,
36
+ "T_motor_world": [
37
+ [
38
+ 0.8660247915798898,
39
+ -0.5000010603626028,
40
+ -2.298079077119539e-06,
41
+ -0.009999848080267933
42
+ ],
43
+ [
44
+ 4.490195936008854e-06,
45
+ 3.1810770986818273e-06,
46
+ 0.999999999984859,
47
+ -0.07663346037245178
48
+ ],
49
+ [
50
+ -0.500001060347722,
51
+ -0.8660247915770963,
52
+ 4.999994360718464e-06,
53
+ 0.03666015757925319
54
+ ],
55
+ [
56
+ 0.0,
57
+ 0.0,
58
+ 0.0,
59
+ 1.0
60
+ ]
61
+ ],
62
+ "branch_position": [
63
+ 0.020648178337122566,
64
+ 0.021763723638894568,
65
+ 1.0345743467476964e-07
66
+ ],
67
+ "limits": [
68
+ -0.8377580409572196, 1.3962634015955222
69
+ ]
70
+ },
71
+ {
72
+ "name": "stewart_2",
73
+ "branch_frame": "closing_2_2",
74
+ "offset": 0,
75
+ "solution": 1,
76
+ "T_motor_world": [
77
+ [
78
+ -0.8660211183436269,
79
+ 0.5000074225224785,
80
+ 2.298069723064582e-06,
81
+ -0.01000055227585102
82
+ ],
83
+ [
84
+ -4.490219645842903e-06,
85
+ -3.181063409649239e-06,
86
+ -0.999999999984859,
87
+ 0.07663346037219607
88
+ ],
89
+ [
90
+ -0.5000074225075973,
91
+ -0.8660211183408337,
92
+ 5.00001124330122e-06,
93
+ 0.03666008712637943
94
+ ],
95
+ [
96
+ 0.0,
97
+ 0.0,
98
+ 0.0,
99
+ 1.0
100
+ ]
101
+ ],
102
+ "branch_position": [
103
+ 0.00852381571767217,
104
+ 0.028763668526131346,
105
+ 1.183437210727778e-07
106
+ ],
107
+ "limits": [
108
+ -1.396263401595614, 1.2217304763958803
109
+ ]
110
+ },
111
+ {
112
+ "name": "stewart_3",
113
+ "branch_frame": "closing_3_2",
114
+ "offset": 0,
115
+ "solution": 0,
116
+ "T_motor_world": [
117
+ [
118
+ 6.326794896519466e-06,
119
+ 0.9999999999799852,
120
+ -7.0550646912150425e-12,
121
+ -0.009999884140839245
122
+ ],
123
+ [
124
+ -1.0196153102346142e-06,
125
+ 1.3505961633338446e-11,
126
+ 0.9999999999994795,
127
+ -0.07663346037438698
128
+ ],
129
+ [
130
+ 0.9999999999794655,
131
+ -6.326794896940104e-06,
132
+ 1.0196153098685706e-06,
133
+ 0.036660683387545835
134
+ ],
135
+ [
136
+ 0.0,
137
+ 0.0,
138
+ 0.0,
139
+ 1.0
140
+ ]
141
+ ],
142
+ "branch_position": [
143
+ -0.029172011376922807,
144
+ 0.0069999429399361995,
145
+ 4.0290270064691214e-08
146
+ ],
147
+ "limits": [
148
+ -0.8377580409572173, 1.3962634015955244
149
+ ]
150
+ },
151
+ {
152
+ "name": "stewart_4",
153
+ "branch_frame": "closing_4_2",
154
+ "offset": 0,
155
+ "solution": 1,
156
+ "T_motor_world": [
157
+ [
158
+ -3.673205069955933e-06,
159
+ -0.9999999999932537,
160
+ -6.767968877969483e-14,
161
+ -0.010000000000897517
162
+ ],
163
+ [
164
+ 1.0196153102837198e-06,
165
+ -3.6775764393585005e-12,
166
+ -0.9999999999994795,
167
+ 0.0766334603742898
168
+ ],
169
+ [
170
+ 0.9999999999927336,
171
+ -3.673205070385213e-06,
172
+ 1.0196153102903487e-06,
173
+ 0.03666065685180194
174
+ ],
175
+ [
176
+ 0.0,
177
+ 0.0,
178
+ 0.0,
179
+ 1.0
180
+ ]
181
+ ],
182
+ "branch_position": [
183
+ -0.029172040355214434,
184
+ -0.0069999960097160766,
185
+ -3.1608172912367394e-08
186
+ ],
187
+ "limits": [
188
+ -1.3962634015953894, 0.8377580409573525
189
+ ]
190
+ },
191
+ {
192
+ "name": "stewart_5",
193
+ "branch_frame": "closing_5_2",
194
+ "offset": 0,
195
+ "solution": 0,
196
+ "T_motor_world": [
197
+ [
198
+ -0.8660284647694133,
199
+ -0.4999946981757419,
200
+ 2.298079429767357e-06,
201
+ -0.010000231529504576
202
+ ],
203
+ [
204
+ 4.490172883391843e-06,
205
+ -3.1811099293773187e-06,
206
+ 0.9999999999848591,
207
+ -0.07663346037246624
208
+ ],
209
+ [
210
+ -0.4999946981608617,
211
+ 0.8660284647666201,
212
+ 4.999994384073154e-06,
213
+ 0.03666016059492482
214
+ ],
215
+ [
216
+ 0.0,
217
+ 0.0,
218
+ 0.0,
219
+ 1.0
220
+ ]
221
+ ],
222
+ "branch_position": [
223
+ 0.008523809101930114,
224
+ -0.028763713010385224,
225
+ -1.4344916837716326e-07
226
+ ],
227
+ "limits": [
228
+ -1.2217304763962082, 1.396263401595286
229
+ ]
230
+ },
231
+ {
232
+ "name": "stewart_6",
233
+ "branch_frame": "passive_7_link_y",
234
+ "offset": 0,
235
+ "solution": 1,
236
+ "T_motor_world": [
237
+ [
238
+ 0.8660247915798897,
239
+ 0.5000010603626025,
240
+ -2.298069644866714e-06,
241
+ -0.009999527331574583
242
+ ],
243
+ [
244
+ -4.490196220318687e-06,
245
+ 3.1810964558725514e-06,
246
+ -0.9999999999848591,
247
+ 0.07663346037272492
248
+ ],
249
+ [
250
+ -0.500001060347722,
251
+ 0.8660247915770967,
252
+ 5.000011266610794e-06,
253
+ 0.036660231042625266
254
+ ],
255
+ [
256
+ 0.0,
257
+ 0.0,
258
+ 0.0,
259
+ 1.0
260
+ ]
261
+ ],
262
+ "branch_position": [
263
+ 0.020648186722822436,
264
+ -0.02176369606185343,
265
+ -8.957920105689965e-08
266
+ ],
267
+ "limits": [
268
+ -1.3962634015954123, 0.8377580409573296
269
+ ]
270
+ }
271
+ ]
272
+ }
remote_control_space/dist/assets/reachy_mini_rust_kinematics_bg-l105NonK.wasm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9500f879ae25f03b6939bc3e689f6b9ff3e733fc603e7b84c6cf69e9f17f8b33
3
+ size 209034
remote_control_space/dist/assets/urdf/assets/5w_speaker.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "48f0e86376312f8ca242a082",
6
+ "fullConfiguration": "default",
7
+ "id": "MUIOPFRAXdyRYA5/y",
8
+ "isStandardContent": false,
9
+ "name": "5W_SPEAKER <1>",
10
+ "partId": "JFD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/5w_speaker.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:89c220ac5fa6dd559fcd2f3faccb7197904ab6b882ccf5d2ad04b17a09d58b98
3
+ size 229884
remote_control_space/dist/assets/urdf/assets/antenna.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "d5df0bcac25cddb763b3a090",
6
+ "fullConfiguration": "default",
7
+ "id": "MT+KnYpqaZ58+3raS",
8
+ "isStandardContent": false,
9
+ "name": "antenna <2>",
10
+ "partId": "JFD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/antenna.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ebe995bfc23aa8f832e86065c364ddf5bf0c1341d6cd4da30790631c7e15a275
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/antenna_body_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "M6OWFp5hfkfES9FmB",
8
+ "isStandardContent": false,
9
+ "name": "Antenna_body_3DPrint <2>",
10
+ "partId": "JF/",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/antenna_body_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f760ace60b1a368ba7c51bcd01a152a85e66a587fb24d55886cb9d9ffb9008f
3
+ size 241784
remote_control_space/dist/assets/urdf/assets/antenna_holder_l_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MHVB1f7lyvjCWrFJe",
8
+ "isStandardContent": false,
9
+ "name": "Antenna_Holder-L_3DPrint <1>",
10
+ "partId": "KFDB",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/antenna_holder_l_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2163af81f112d0e1503f284213e831ff7692960cbcb7085ad6db8b63912fd466
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/antenna_holder_r_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MX6Uc6wQ4cFgySRks",
8
+ "isStandardContent": false,
9
+ "name": "Antenna_Holder-R_3DPrint <1>",
10
+ "partId": "JFv",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/antenna_holder_r_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f516056c535ac6bc8ec94983e48945bfca75ccf17d058263bfe67c4883d8932
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/antenna_interface_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MObKCzX1Fco0wvr0/",
8
+ "isStandardContent": false,
9
+ "name": "Antenna_interface_3DPrint <2>",
10
+ "partId": "JF7",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/antenna_interface_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:662384ed2de2c37fff6d5bab1ba0ccb76ee03f5d1680043d255e33e879b481bb
3
+ size 179984
remote_control_space/dist/assets/urdf/assets/arducam.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "ae2c63bc6f578a46d35cd365",
6
+ "fullConfiguration": "default",
7
+ "id": "MDupaBfND/yK9FERm",
8
+ "isStandardContent": false,
9
+ "name": "Arducam <1>",
10
+ "partId": "JGD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/arducam.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8916e1a5fe5ffd8c0c3eded5f173871be269a2c26a437db7f7039e6c8cc7a020
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/arm.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "e305b26a84339af20c593973",
4
+ "documentMicroversion": "7031fc46a026e2d553617dca",
5
+ "elementId": "f05b326e391ef37011cd1007",
6
+ "fullConfiguration": "default",
7
+ "id": "MHbJVGQ/2CguoKbZz",
8
+ "isStandardContent": false,
9
+ "name": "Arm <1>",
10
+ "partId": "JsD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/arm.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f1466fc2854bf4d3eb92b5f5f595e2c1a1dd90f8f9bbdcc581f88c541e72a47f
3
+ size 104784
remote_control_space/dist/assets/urdf/assets/b3b_eh.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "Md1pPF2974d9JOL2l",
8
+ "isStandardContent": false,
9
+ "name": "B3B-EH <1>",
10
+ "partId": "JFr",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/b3b_eh.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:388ed3ff01359dac77cad8f1a14c4babeb4e2b72b5c1c60333fa2682bf62ac17
3
+ size 9884
remote_control_space/dist/assets/urdf/assets/b3b_eh_1.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "MMuPyh0yjSzJko9Po",
8
+ "isStandardContent": false,
9
+ "name": "B3B-EH_1 <1>",
10
+ "partId": "JFT",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/b3b_eh_1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a741e87c71a9ff662a24ab5d6c7b8397afc6a7f7506910992814506d98d8e21f
3
+ size 9884
remote_control_space/dist/assets/urdf/assets/ball.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "e305b26a84339af20c593973",
4
+ "documentMicroversion": "4913859d0d2ce0a13b3adb26",
5
+ "elementId": "0aa833fd983f27ea7fb43256",
6
+ "fullConfiguration": "default",
7
+ "id": "Msm1EC3X/D1/s/Uus",
8
+ "isStandardContent": false,
9
+ "name": "Ball <13>",
10
+ "partId": "JSD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/ball.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fa04fda74ce21c562e6ad5645c619c425ce2644f29463cef38ad791c3e98b1c7
3
+ size 158484
remote_control_space/dist/assets/urdf/assets/bearing_85x110x13.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "d5ff0fe74f14f26be2deb5d4",
6
+ "fullConfiguration": "default",
7
+ "id": "MYk5LvI8gIvlMtfS7",
8
+ "isStandardContent": false,
9
+ "name": "Bearing_85x110x13 <1>",
10
+ "partId": "JGD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/bearing_85x110x13.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d6052d367e0a9f36063a3be16c77e34d8c5da3bb001346a317b75f19b9e60fe
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/big_lens.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "e305b26a84339af20c593973",
4
+ "documentMicroversion": "4913859d0d2ce0a13b3adb26",
5
+ "elementId": "1aa49f5cc5d823754d8b1fec",
6
+ "fullConfiguration": "default",
7
+ "id": "MpioSzVOUQtkaeTVH",
8
+ "isStandardContent": false,
9
+ "name": "big_lens <1>",
10
+ "partId": "J0D",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/big_lens.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:28b05e56f4c9fcf6458ef7ae0a49b016251afbb463199095922eaac0d597bbe5
3
+ size 266484
remote_control_space/dist/assets/urdf/assets/big_lens_d40.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "f67f6ec9755019fa8d4cde38",
6
+ "fullConfiguration": "default",
7
+ "id": "M6vM68+58boAYt2AP",
8
+ "isStandardContent": false,
9
+ "name": "Big Lens D40 <1>",
10
+ "partId": "JFD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/big_lens_d40.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4df711c8e29a677f62622d57c5cac01257ae9a44f46adb67fefb54b8fe52a6eb
3
+ size 151284
remote_control_space/dist/assets/urdf/assets/body_down_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "M40W4a7sQuI8QEDbK",
8
+ "isStandardContent": false,
9
+ "name": "BODY-DOWN_3DPrint <1>",
10
+ "partId": "JFP",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/body_down_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3d46f953d49182f85fa818a5d3935c688afffdf4d7a0119aa58f9292a8e3707
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/body_foot_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MFPx9mgqcSNR4iAYO",
8
+ "isStandardContent": false,
9
+ "name": "BODY-FOOT_3DPrint <1>",
10
+ "partId": "JFH",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/body_foot_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eab9440d4d6745c99445dba3887f4668b48780e8a10aa1efc05e3f9481b40caf
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/body_top_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MfqCGZgMWtuWpureN",
8
+ "isStandardContent": false,
9
+ "name": "BODY_TOP_3DPrint <1>",
10
+ "partId": "JFb",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/body_top_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b985a9288abfc9894335c609bf24943551ae185e855f40c9a9f89c6a7c0eb831
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/body_turning_3dprint.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "41e19b342cf83e0d866fde9b",
6
+ "fullConfiguration": "default",
7
+ "id": "MttvYsoT0rlrLKDwS",
8
+ "isStandardContent": false,
9
+ "name": "BODY-TURNING_3DPrint <1>",
10
+ "partId": "JFL",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/body_turning_3dprint.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0c9757573938050cb1c0a4c7fdf37d8bbb3f9cf28dc19444c3487c1c5765d264
3
+ size 314584
remote_control_space/dist/assets/urdf/assets/bottom_body.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "e305b26a84339af20c593973",
4
+ "documentMicroversion": "7031fc46a026e2d553617dca",
5
+ "elementId": "63ac215c84389096e60ba3ce",
6
+ "fullConfiguration": "default",
7
+ "id": "MgqLgbONW+9OAHLGG",
8
+ "isStandardContent": false,
9
+ "name": "bottom_body <1>",
10
+ "partId": "RcDD",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/bottom_body.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7b36963b7ae1cf06cc50aba61d5024df7f006274006671f378a0a52e29065eb
3
+ size 104884
remote_control_space/dist/assets/urdf/assets/bts2_m2_6x8.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "MHzA6RZ/kEAMV93SN",
8
+ "isStandardContent": false,
9
+ "name": "BTS2_M2_6X8 <1>",
10
+ "partId": "JFL",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/bts2_m2_6x8.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:303a706276ef0a3dcf8b6deeabf73969d2c48cb6628209bf0fed825b622deccb
3
+ size 269184
remote_control_space/dist/assets/urdf/assets/dc15_a01_case_b_dummy.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "M0s224h4t0HqzV/u4",
8
+ "isStandardContent": false,
9
+ "name": "DC15_A01_CASE_B_DUMMY <1>",
10
+ "partId": "JFf",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/dc15_a01_case_b_dummy.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0b108f9390168a9052b408b292e316112f28e11d5ca51e28a374f29ce9ef2790
3
+ size 248884
remote_control_space/dist/assets/urdf/assets/dc15_a01_case_f_dummy.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "MJyRwhvvOMia59Q6o",
8
+ "isStandardContent": false,
9
+ "name": "DC15_A01_CASE_F_DUMMY <1>",
10
+ "partId": "JFj",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }
remote_control_space/dist/assets/urdf/assets/dc15_a01_case_f_dummy.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6de99b6af2361d2fdb751bcb78768e7565bc5b40fbdd6cda3e2c92f277135d33
3
+ size 314484
remote_control_space/dist/assets/urdf/assets/dc15_a01_case_m_dummy.part ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "configuration": "default",
3
+ "documentId": "7836ed39be931c6ece17e007",
4
+ "documentMicroversion": "22df16c0b36fccefd62a3ccb",
5
+ "elementId": "2cfe27202252cfce42ed7ee4",
6
+ "fullConfiguration": "default",
7
+ "id": "M6qXbiravwBh/M2FZ",
8
+ "isStandardContent": false,
9
+ "name": "DC15_A01_CASE_M_DUMMY <1>",
10
+ "partId": "JFn",
11
+ "suppressed": false,
12
+ "type": "Part"
13
+ }