Skip to content

Commit e11fa5c

Browse files
Merge pull request #887 from dimensionalOS/release_planner
Release planner Former-commit-id: a353120 [formerly 487bcff] Former-commit-id: fd23cb3
1 parent cac4f35 commit e11fa5c

37 files changed

+1452
-350
lines changed
Lines changed: 141 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
"configById": {
33
"3D!3ezwzdr": {
44
"cameraState": {
5-
"perspective": true,
6-
"distance": 11.974738784563408,
7-
"phi": 46.81551198543342,
8-
"thetaOffset": 71.81370622323534,
5+
"perspective": false,
6+
"distance": 10.26684166532264,
7+
"phi": 29.073691502600532,
8+
"thetaOffset": 93.32472375597958,
99
"targetOffset": [
10-
0.7911075559165568,
11-
1.8116053369121197,
12-
3.4025317970075274e-16
10+
3.280168913303102,
11+
-1.418093876569801,
12+
-2.6619087209849424e-16
1313
],
1414
"target": [
1515
0,
@@ -29,7 +29,8 @@
2929
"followMode": "follow-pose",
3030
"scene": {
3131
"transforms": {
32-
"labelSize": 0.1
32+
"labelSize": 0.1,
33+
"axisSize": 0.51
3334
}
3435
},
3536
"transforms": {
@@ -49,10 +50,10 @@
4950
"visible": false
5051
},
5152
"frame:map": {
52-
"visible": true
53+
"visible": false
5354
},
5455
"frame:world": {
55-
"visible": true
56+
"visible": false
5657
}
5758
},
5859
"topics": {
@@ -63,7 +64,7 @@
6364
"colorMap": "turbo",
6465
"pointSize": 2.85,
6566
"decayTime": 6,
66-
"pointShape": "cube"
67+
"pointShape": "circle"
6768
},
6869
"/detectorDB/scene_update": {
6970
"visible": true
@@ -86,7 +87,9 @@
8687
"visible": false
8788
},
8889
"/camera_info": {
89-
"visible": true
90+
"visible": true,
91+
"distance": 1,
92+
"color": "#c4bcffff"
9093
},
9194
"/detectorDB/pointcloud/0": {
9295
"visible": true,
@@ -121,19 +124,21 @@
121124
"colorField": "z",
122125
"colorMode": "colormap",
123126
"colorMap": "turbo",
124-
"pointSize": 3.66,
125-
"pointShape": "cube",
127+
"pointSize": 4,
128+
"pointShape": "circle",
126129
"explicitAlpha": 1,
127130
"cubeSize": 0.05,
128131
"cubeOutline": false,
129-
"flatColor": "#ed8080ff"
132+
"flatColor": "#ed8080ff",
133+
"minValue": -0.1,
134+
"decayTime": 0
130135
},
131136
"/global_costmap": {
132-
"visible": false,
137+
"visible": true,
133138
"colorMode": "custom",
134-
"unknownColor": "#80808000",
135-
"minColor": "#282975ff",
136-
"maxColor": "#ff0000ff",
139+
"unknownColor": "#ff000000",
140+
"minColor": "#484981ff",
141+
"maxColor": "#000000ff",
137142
"frameLocked": false,
138143
"drawBehind": false
139144
},
@@ -203,6 +208,18 @@
203208
"maxColor": "#ff2222ff",
204209
"minColor": "#00006bff",
205210
"unknownColor": "#80808000"
211+
},
212+
"/debug_navigation": {
213+
"visible": false,
214+
"cameraInfoTopic": "/camera_info"
215+
},
216+
"/path": {
217+
"visible": true,
218+
"lineWidth": 0.03,
219+
"gradient": [
220+
"#ff6b6bff",
221+
"#ff0000ff"
222+
]
206223
}
207224
},
208225
"layers": {
@@ -228,6 +245,31 @@
228245
"frameId": "world",
229246
"divisions": 25,
230247
"lineWidth": 1
248+
},
249+
"aac2d29a-9580-442f-8067-104830c336c8": {
250+
"displayMode": "auto",
251+
"fallbackColor": "#ffffff",
252+
"showAxis": false,
253+
"axisScale": 1,
254+
"showOutlines": true,
255+
"opacity": 1,
256+
"visible": true,
257+
"frameLocked": true,
258+
"instanceId": "aac2d29a-9580-442f-8067-104830c336c8",
259+
"label": "URDF",
260+
"layerId": "foxglove.Urdf",
261+
"sourceType": "filePath",
262+
"url": "",
263+
"filePath": "/home/lesh/coding/dimos/dimos/robot/unitree/go2/go2.urdf",
264+
"parameter": "",
265+
"topic": "",
266+
"framePrefix": "",
267+
"order": 2,
268+
"links": {
269+
"base_link": {
270+
"visible": true
271+
}
272+
}
231273
}
232274
},
233275
"publish": {
@@ -240,7 +282,67 @@
240282
"poseEstimateThetaDeviation": 0.26179939
241283
},
242284
"imageMode": {},
243-
"followTf": "world"
285+
"followTf": "map"
286+
},
287+
"command-center-extension.command-center!3xr2po0": {},
288+
"Plot!3cog9zw": {
289+
"paths": [
290+
{
291+
"timestampMethod": "receiveTime",
292+
"value": "/metrics/_calculate_costmap.data",
293+
"enabled": true,
294+
"color": "#4e98e2",
295+
"id": "a1ff9a80-7a45-48ff-bdb1-232bda7bd492"
296+
},
297+
{
298+
"timestampMethod": "receiveTime",
299+
"value": "/metrics/get_global_pointcloud.data",
300+
"enabled": true,
301+
"color": "#f5774d",
302+
"id": "5fe70fbd-33f9-4b15-849f-c7c49988af95"
303+
},
304+
{
305+
"timestampMethod": "receiveTime",
306+
"value": "/metrics/add_frame.data",
307+
"enabled": true,
308+
"color": "#f7df71",
309+
"id": "bb4a56f8-78ae-45cb-850e-48c462dab40f"
310+
}
311+
],
312+
"showXAxisLabels": true,
313+
"showYAxisLabels": true,
314+
"showLegend": true,
315+
"legendDisplay": "floating",
316+
"showPlotValuesInLegend": false,
317+
"isSynced": true,
318+
"xAxisVal": "timestamp",
319+
"sidebarDimension": 240
320+
},
321+
"Plot!47kna9v": {
322+
"paths": [
323+
{
324+
"timestampMethod": "publishTime",
325+
"value": "/global_map.header.stamp.sec",
326+
"enabled": true,
327+
"color": "#4e98e2",
328+
"id": "19f95865-4d9e-4d38-b9d7-d227319d8ebd"
329+
},
330+
{
331+
"timestampMethod": "publishTime",
332+
"value": "/global_costmap.header.stamp.sec",
333+
"enabled": true,
334+
"color": "#f5774d",
335+
"id": "86ddc0e2-8e9c-4d52-bd5a-d02cb0357efe"
336+
}
337+
],
338+
"showXAxisLabels": true,
339+
"showYAxisLabels": true,
340+
"showLegend": true,
341+
"legendDisplay": "floating",
342+
"showPlotValuesInLegend": false,
343+
"isSynced": true,
344+
"xAxisVal": "timestamp",
345+
"sidebarDimension": 240
244346
},
245347
"Image!3mnp456": {
246348
"cameraState": {
@@ -308,7 +410,7 @@
308410
"visible": false
309411
},
310412
"/global_costmap": {
311-
"visible": true,
413+
"visible": false,
312414
"minColor": "#ffffff00",
313415
"maxColor": "#ff0000ff",
314416
"unknownColor": "#80808000"
@@ -351,7 +453,8 @@
351453
"colorMode": "colormap",
352454
"colorMap": "turbo",
353455
"pointShape": "cube",
354-
"pointSize": 5
456+
"pointSize": 5,
457+
"cubeSize": 0.03
355458
},
356459
"/detected/pointcloud/1": {
357460
"visible": false,
@@ -480,7 +583,21 @@
480583
"layout": {
481584
"direction": "row",
482585
"first": "3D!3ezwzdr",
483-
"second": "Image!3mnp456",
484-
"splitPercentage": 70.55232558139535
586+
"second": {
587+
"first": "command-center-extension.command-center!3xr2po0",
588+
"second": {
589+
"first": {
590+
"first": "Plot!3cog9zw",
591+
"second": "Plot!47kna9v",
592+
"direction": "row"
593+
},
594+
"second": "Image!3mnp456",
595+
"direction": "column",
596+
"splitPercentage": 38.08411214953271
597+
},
598+
"direction": "column",
599+
"splitPercentage": 50.116550116550115
600+
},
601+
"splitPercentage": 63.706720977596746
485602
}
486603
}

data/.lfs/big_office.ply.tar.gz

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:7eabc682f75e1725a07df51bb009d3950190318d119d54d0ad8c6b7104f175e3
3+
size 2355227
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:6d8e7d096f1108d45ebdad760c4655de1e1d50105ca59c5188e79cb1a7c0d4a9
3+
size 133051
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:dded2e28694de9ec84a91a686b27654b83c604f44f4d3e336d5cd481e88d3249
3+
size 28146
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:7569eb465fb29b3a2f76ae289b094d0a5579dce99c9a99741c7e9e4e741a00b6
3-
size 2832
2+
oid sha256:6c9dac221a594c87d0baa60b8c678c63a0c215325080b34ee60df5cc1e1c331d
3+
size 3311
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:68adb344ae040c3f94d61dd058beb39cc2811c4ae8328f678bc2ba761c504eb5
3+
size 2331189

dimos/e2e_tests/conftest.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Copyright 2025 Dimensional Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
from collections.abc import Callable, Iterator
16+
17+
import pytest
18+
19+
from dimos.core.transport import pLCMTransport
20+
from dimos.e2e_tests.dimos_cli_call import DimosCliCall
21+
from dimos.e2e_tests.lcm_spy import LcmSpy
22+
from dimos.msgs.geometry_msgs import PoseStamped, Quaternion
23+
from dimos.msgs.geometry_msgs.Vector3 import make_vector3
24+
from dimos.msgs.std_msgs.Bool import Bool
25+
26+
27+
def _pose(x: float, y: float, theta: float) -> PoseStamped:
28+
return PoseStamped(
29+
position=make_vector3(x, y, 0),
30+
orientation=Quaternion.from_euler(make_vector3(0, 0, theta)),
31+
frame_id="map",
32+
)
33+
34+
35+
@pytest.fixture
36+
def lcm_spy() -> Iterator[LcmSpy]:
37+
lcm_spy = LcmSpy()
38+
lcm_spy.start()
39+
yield lcm_spy
40+
lcm_spy.stop()
41+
42+
43+
@pytest.fixture
44+
def follow_points(lcm_spy: LcmSpy):
45+
def fun(*, points: list[tuple[float, float, float]], fail_message: str) -> None:
46+
topic = "/goal_reached#std_msgs.Bool"
47+
lcm_spy.save_topic(topic)
48+
49+
for x, y, theta in points:
50+
lcm_spy.publish("/goal_request#geometry_msgs.PoseStamped", _pose(x, y, theta))
51+
lcm_spy.wait_for_message_result(
52+
topic,
53+
Bool,
54+
predicate=lambda v: bool(v),
55+
fail_message=fail_message,
56+
timeout=60.0,
57+
)
58+
59+
yield fun
60+
61+
62+
@pytest.fixture
63+
def start_blueprint() -> Iterator[Callable[[str], DimosCliCall]]:
64+
dimos_robot_call = DimosCliCall()
65+
66+
def set_name_and_start(demo_name: str) -> DimosCliCall:
67+
dimos_robot_call.demo_name = demo_name
68+
dimos_robot_call.start()
69+
return dimos_robot_call
70+
71+
yield set_name_and_start
72+
73+
dimos_robot_call.stop()
74+
75+
76+
@pytest.fixture
77+
def human_input():
78+
transport = pLCMTransport("/human_input")
79+
transport.lcm.start()
80+
81+
def send_human_input(message: str) -> None:
82+
transport.publish(message)
83+
84+
yield send_human_input
85+
86+
transport.lcm.stop()

0 commit comments

Comments
 (0)