Skip to content

Commit

Permalink
Merge pull request #329 from dfki-ric/327-nest-camera-definition-with…
Browse files Browse the repository at this point in the history
…in-link

327 nest camera definition within link
  • Loading branch information
hwiedPro authored Sep 26, 2023
2 parents 459e525 + 3114c38 commit 6594d13
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 4 deletions.
1 change: 1 addition & 0 deletions phobos/blender/io/blender2phobos.py
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,7 @@ def deriveSensor(obj, logging=False):
hud_height=240 if values.get('hud_height') is None else values.pop('hud_height'),
hud_width=0 if values.get('hud_width') is None else values.pop('hud_width'),
origin=deriveObjectPose(obj, effectiveparent=parent, logging=logging),
link=values.get("link", parent.get("link/name", parent.name)),
**values
)
else:
Expand Down
20 changes: 18 additions & 2 deletions phobos/data/xml_formats.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
"varname": "sensors_that_dont_belong_to_links_or_joints"
},
"transmission": {
"classname": "Transmission",
Expand All @@ -46,6 +46,10 @@
"collision": {
"classname": "Collision",
"varname": "collisions"
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
}
}
},
Expand Down Expand Up @@ -233,6 +237,10 @@
"dynamics": {
"classname": "JointDynamics",
"varname": "dynamics"
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
}
},
"attribute_children": {
Expand Down Expand Up @@ -625,7 +633,7 @@
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
"varname": "sensors_that_dont_belong_to_links_or_joints"
},
"plugin": {
"classname": "PluginFactory",
Expand Down Expand Up @@ -658,6 +666,10 @@
"collision": {
"classname": "Collision",
"varname": "collisions"
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
}
}
},
Expand Down Expand Up @@ -825,6 +837,10 @@
"mimic": {
"classname": "JointMimic",
"varname": "mimic"
},
"sensor": {
"classname": "SensorFactory",
"varname": "sensors"
}
},
"nested_children": {
Expand Down
2 changes: 1 addition & 1 deletion phobos/io/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from . import yaml_reflection
from . import sensor_representations
REGISTER_MODULE_TO_XML_FACTORY(sensor_representations)
#REGISTER_MODULE_TO_XML_FACTORY(sensor_representations) #happens in representation

from . import poses
REGISTER_MODULE_TO_XML_FACTORY(poses)
Expand Down
34 changes: 33 additions & 1 deletion phobos/io/representation.py
Original file line number Diff line number Diff line change
Expand Up @@ -1626,6 +1626,20 @@ def joint_relative_origin(self, value):
self.origin = _singular(value)
assert self.origin is None or self.origin.relative_to is not None

@property
def sensors(self):
assert self._related_robot_instance is not None
return [s for s in self._related_robot_instance.sensors if getattr(s, "link", None) == self.name]

@sensors.setter
def sensors(self, value):
value = _plural(value)
if self._related_robot_instance is None:
self._sensors = value
else:
for s in value:
if not any([existing.name == s.name and existing.equivalent(s) for existing in self._related_robot_instance.sensors]):
self._related_robot_instance.add_aggregate("sensor", s)

class JointDynamics(Representation):
def __init__(self, damping=None, friction=None, spring_stiffness=None, spring_reference=None, **kwargs):
Expand Down Expand Up @@ -1921,6 +1935,21 @@ def joint_dependencies(self, new_val):
for jd in self._joint_dependencies:
jd.link_with_robot(self._related_robot_instance)

@property
def sensors(self):
assert self._related_robot_instance is not None
return [s for s in self._related_robot_instance.sensors if getattr(s, "joint", None) == self.name]

@sensors.setter
def sensors(self, value):
value = _plural(value)
if self._related_robot_instance is None:
self._sensors = value
else:
for s in value:
if not any([existing.name == s.name and existing.equivalent(s) for existing in self._related_robot_instance.sensors]):
self._related_robot_instance.add_aggregate("sensor", s)


class Interface(Representation, SmurfBase):
_class_variables = ["name", "origin", "parent"]
Expand Down Expand Up @@ -2275,4 +2304,7 @@ def set_unique_name(self, value):
raise NotImplementedError

def stringable(self):
return self.GA_name is not None
return self.GA_name is not None


from .sensor_representations import *
11 changes: 11 additions & 0 deletions phobos/io/xmlrobot.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,17 @@ def collisions(self):
def visuals(self):
return self.get_all_visuals()

@property
def sensors_that_dont_belong_to_links_or_joints(self):
return [s for s in self.sensors if getattr(s, "link", None) is None and getattr(s, "joint", None) is None]

@sensors_that_dont_belong_to_links_or_joints.setter
def sensors_that_dont_belong_to_links_or_joints(self, value):
value = _plural(value)
for s in value:
if not any([existing.name == s.name and existing.equivalent(s) for existing in self.sensors]):
self.add_aggregate("sensor", s)

def annotate_as_human(self):
for link in self.links:
link.is_human = True
Expand Down

0 comments on commit 6594d13

Please sign in to comment.