Skip to content

Commit 7f1e218

Browse files
authored
Merge pull request #143 from LucaKro/prefixed_name_testcases
Uniqueness assumption fulfilled by UUID instead of PrefixedName now
2 parents 847f23b + a5834f6 commit 7f1e218

51 files changed

Lines changed: 2215 additions & 1533 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

examples/persistence_of_annotated_worlds.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ First, let's load a world from a URDF file.
3131
import logging
3232
import os
3333
34-
from sqlalchemy import create_engine, select
34+
from sqlalchemy import select
3535
from sqlalchemy.orm import Session
36-
36+
from krrood.ormatic.utils import create_engine
3737
from krrood.ormatic.dao import to_dao
3838
from semantic_digital_twin.adapters.urdf import URDFParser
3939
from semantic_digital_twin.orm.ormatic_interface import *

examples/semantic_annotations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ with world.modify_world():
7676
c2 = Connection6DoF.create_with_dofs(parent=root, child=apple_body_2, world=world)
7777
world.add_connection(c2)
7878
# Move it a bit so we can see both
79-
world.state[c2.x.name].position = 0.3
80-
world.state[c2.y.name].position = 0.2
79+
world.state[c2.x.id].position = 0.3
80+
world.state[c2.y.id].position = 0.2
8181
world.add_semantic_annotation(Apple(body=apple_body_2, name=PrefixedName("apple2")))
8282
8383
print(world.get_semantic_annotations_by_type(Apple))

examples/using_transformations.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,6 @@ camera_body = Body(
6363
collision=ShapeCollection([camera_shape]),
6464
)
6565
66-
# Connect base to the world root, and camera to the base.
67-
world_C_base = Connection6DoF.create_with_dofs(parent=root, child=base_body, world=world)
68-
base_C_camera = Connection6DoF.create_with_dofs(parent=base_body, child=camera_body, world=world)
6966
7067
# Place the base: put it slightly above the ground so the top sits at z≈0.05
7168
world_T_base = TransformationMatrix.from_xyz_rpy(z=0.025, reference_frame=root)
@@ -79,6 +76,10 @@ base_T_camera = TransformationMatrix.from_xyz_rpy(
7976
)
8077
8178
with world.modify_world():
79+
# Connect base to the world root, and camera to the base.
80+
world_C_base = Connection6DoF.create_with_dofs(parent=root, child=base_body, world=world)
81+
base_C_camera = Connection6DoF.create_with_dofs(parent=base_body, child=camera_body, world=world)
82+
8283
world.add_connection(world_C_base)
8384
world.add_connection(base_C_camera)
8485

examples/world_state_manipulation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ We can close the drawer again as follows:
148148
```{code-cell} ipython3
149149
connection = the(entity(connection := let(type_=PrismaticConnection, domain=world.connections), in_("drawer", connection.child.name.name))).evaluate()
150150
with world.modify_world():
151-
world.state[connection.dof.name] = [0., 0., 0., 0.]
151+
world.state[connection.dof.id] = [0., 0., 0., 0.]
152152
rt = RayTracer(world)
153153
rt.update_scene()
154154
rt.scene.show("jupyter")

examples/world_structure_manipulation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ with world.modify_world():
6161
# from base -> link around the Z axis of the base frame.
6262
# We add the DoF first, then reference it from the connection so the
6363
# world's DoF set and the connection's DoFs match.
64-
joint = DegreeOfFreedom(name=PrefixedName("joint_z"))
65-
world.add_degree_of_freedom(joint)
64+
dof = DegreeOfFreedom(name=PrefixedName("joint_z"))
65+
world.add_degree_of_freedom(dof)
6666
c_base_link = RevoluteConnection(
6767
parent=base,
6868
child=link,
69-
dof_name=joint.name,
69+
dof_id=dof.id,
7070
axis=Vector3.Z(reference_frame=base),
7171
)
7272
world.add_connection(c_base_link)

scripts/generate_orm.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,27 @@
88
from __future__ import annotations
99

1010
import os
11+
import uuid
1112
from dataclasses import is_dataclass
1213

13-
import trimesh
14+
import sqlalchemy
1415
from krrood.class_diagrams import ClassDiagram
15-
from krrood.ormatic.dao import AlternativeMapping
1616
from krrood.ormatic.ormatic import ORMatic
1717
from krrood.ormatic.utils import classes_of_module
1818
from krrood.utils import recursive_subclasses
1919

20+
import semantic_digital_twin.adapters.procthor.procthor_semantic_annotations
2021
import semantic_digital_twin.orm.model
2122
import semantic_digital_twin.reasoning.predicates
2223
import semantic_digital_twin.robots.abstract_robot
2324
import semantic_digital_twin.semantic_annotations.semantic_annotations
2425
import semantic_digital_twin.world # ensure the module attribute exists on the package
25-
import semantic_digital_twin.adapters.procthor.procthor_semantic_annotations
2626
import semantic_digital_twin.world_description.degree_of_freedom
2727
import semantic_digital_twin.world_description.geometry
2828
import semantic_digital_twin.world_description.shape_collection
2929
import semantic_digital_twin.world_description.world_entity
3030
from semantic_digital_twin.datastructures.prefixed_name import PrefixedName
31+
from semantic_digital_twin.orm.model import * # type: ignore
3132
from semantic_digital_twin.reasoning.predicates import ContainsType
3233
from semantic_digital_twin.semantic_annotations.mixins import HasBody
3334
from semantic_digital_twin.spatial_computations.forward_kinematics import (
@@ -42,7 +43,6 @@
4243
FixedConnection,
4344
HasUpdateState,
4445
)
45-
from semantic_digital_twin.orm.model import * # type: ignore
4646

4747
all_classes = set(
4848
classes_of_module(semantic_digital_twin.world_description.world_entity)
@@ -75,6 +75,8 @@
7575
semantic_digital_twin.adapters.procthor.procthor_semantic_annotations
7676
)
7777
)
78+
all_classes |= set(classes_of_module(semantic_digital_twin.world_description.world_modification))
79+
all_classes |= set(classes_of_module(semantic_digital_twin.callbacks.callback))
7880

7981

8082
# remove classes that should not be mapped
@@ -110,7 +112,8 @@ def generate_orm():
110112

111113
instance = ORMatic(
112114
class_dependency_graph=class_diagram,
113-
type_mappings={trimesh.Trimesh: semantic_digital_twin.orm.model.TrimeshType},
115+
type_mappings={trimesh.Trimesh: semantic_digital_twin.orm.model.TrimeshType,
116+
uuid.UUID: sqlalchemy.UUID},
114117
alternative_mappings=alternative_mappings,
115118
)
116119

scripts/parse_procthor_files_and_save_to_database.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
import tqdm
99
from krrood.entity_query_language.symbol_graph import SymbolGraph
1010
from krrood.ormatic.dao import to_dao
11-
from krrood.ormatic.utils import drop_database
11+
from krrood.ormatic.utils import drop_database, create_engine
1212
from krrood.utils import recursive_subclasses
13-
from sqlalchemy import create_engine
1413
from sqlalchemy.orm import Session
1514
from typing_extensions import TYPE_CHECKING
1615

@@ -140,7 +139,7 @@ def parse_procthor_files_and_save_to_database(
140139
), "Please set the SEMANTIC_DIGITAL_TWIN_DATABASE_URI environment variable."
141140

142141
procthor_root = os.path.join(os.path.expanduser("~"), "ai2thor")
143-
# procthor_root = os.path.join(os.path.expanduser("~"), "work", "ai2thor")
142+
procthor_root = os.path.join(os.path.expanduser("~"), "work", "ai2thor")
144143

145144
files = []
146145
for root, dirs, filenames in os.walk(procthor_root):
@@ -176,7 +175,7 @@ def parse_procthor_files_and_save_to_database(
176175
dao_names = []
177176
daos = []
178177

179-
for fbx_file in tqdm.tqdm(fbx_files):
178+
for i, fbx_file in tqdm.tqdm(enumerate(fbx_files)):
180179
for dao in parse_fbx_file_to_world_mapping_daos(fbx_file):
181180
# Some item names (for example "bowl_19") were used for multiple items. For now the solution is to just
182181
# skip duplicate names.

scripts/parse_procthor_worlds_and_calculate_containment_ratio.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66
import tqdm
77
from krrood.entity_query_language.symbol_graph import SymbolGraph
88
from krrood.ormatic.dao import to_dao, ToDAOState
9-
from krrood.ormatic.utils import classes_of_module, drop_database
9+
from krrood.ormatic.utils import classes_of_module, drop_database, create_engine
1010
from krrood.utils import recursive_subclasses
11-
from sqlalchemy import create_engine
1211
from sqlalchemy.orm import Session
1312

1413
import semantic_digital_twin.adapters.procthor.procthor_semantic_annotations

src/semantic_digital_twin/adapters/mjcf.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ def parse_geom(self, mujoco_geom: mujoco.MjsGeom) -> Shape:
256256
)
257257
texture_file_path = os.path.join(texturedir, mujoco_texture.file)
258258
if os.path.isfile(texture_file_path):
259-
return FileMesh.from_spec(
259+
return FileMesh.from_file(
260260
file_path=filename,
261261
origin=origin_transform,
262262
color=color,
@@ -336,7 +336,7 @@ def parse_joint(
336336
parent_T_connection_expression=parent_body_to_joint_transform,
337337
connection_T_child_expression=joint_to_child_body_transform,
338338
axis=joint_axis,
339-
dof_name=dof.name,
339+
dof_id=dof.id,
340340
dynamics=joint_dynamics,
341341
)
342342
elif mujoco_joint.type == mujoco.mjtJoint.mjJNT_SLIDE:
@@ -347,7 +347,7 @@ def parse_joint(
347347
parent_T_connection_expression=parent_body_to_joint_transform,
348348
connection_T_child_expression=joint_to_child_body_transform,
349349
axis=joint_axis,
350-
dof_name=dof.name,
350+
dof_id=dof.id,
351351
dynamics=joint_dynamics,
352352
)
353353
else:

src/semantic_digital_twin/adapters/multi_sim.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from ..datastructures.prefixed_name import PrefixedName
2626
from ..spatial_types.spatial_types import TransformationMatrix, Point3, Quaternion
2727
from ..world import World
28-
from ..world_description.actuators import Actuator
2928
from ..world_description.connections import (
3029
RevoluteConnection,
3130
PrismaticConnection,
@@ -47,7 +46,7 @@
4746
Body,
4847
KinematicStructureEntity,
4948
Connection,
50-
WorldEntity,
49+
WorldEntity, Actuator,
5150
)
5251
from ..world_description.world_modification import (
5352
AddKinematicStructureEntityModification,

0 commit comments

Comments
 (0)