dfki-ric / phobos

An add-on for Blender allowing to create URDF, SDF and SMURF robot models in a WYSIWYG environment.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[pre_v2.0.0] Export models don't works

brothermechanic opened this issue · comments

Describe the bug
Export models don't works

To Reproduce
Steps to reproduce the behavior:

  1. Select objects for export
  2. Export model bpy.ops.phobos.export_model() ("Create Links")
  3. See error
Error: Python: Traceback (most recent call last):
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 141, in invoke
    return self.execute(context)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 254, in execute
    self.exportModel(root, exportpath)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 156, in exportModel
    robot = deriveRobot(root)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 700, in deriveRobot
    xml_robot = xmlrobot.XMLRobot(
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/xmlrobot.py", line 75, in __init__
    self.link_entities()
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/xmlrobot.py", line 102, in link_entities
    entity.link_with_robot(self, check_linkage_later=True)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/representation.py", line 1615, in link_with_robot
    super(Joint, self).link_with_robot(robot, check_linkage_later=True)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/base.py", line 130, in link_with_robot
    self._attr_set_name(attribute, getattr(self, "_" + attribute), no_check=True)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/base.py", line 89, in _attr_set_name
    setattr(self, "_" + attribute, self._converter(attribute, new_value))
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/base.py", line 75, in _converter
    raise AssertionError(f"{str(type(self))}, can not convert {new_value} to value type {vtype} for variable {varname}")
AssertionError: <class 'phobos.io.representation.Joint'>, can not convert grip_rotator_link_joint_motor to value type motors for variable motor

Expected behavior
In Phobos v1 it works

Desktop:

  • OS: Gentoo
  • Version: ~amd64

Thanks for the report, could you please post a screenshot that shows the joint in the link tree and the custom properties of grip_rotator_link

Please also test the commit bc5c524 ;)

Thanks for the report, could you please post a screenshot that shows the joint in the link tree and the custom properties of grip_rotator_link
Screenshot_20230504_143503

Please also test the commit bc5c524 ;)

Error message has changed:

Python: Traceback (most recent call last):
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 141, in invoke
    return self.execute(context)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 254, in execute
    self.exportModel(root, exportpath)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 156, in exportModel
    robot = deriveRobot(root)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 704, in deriveRobot
    links=[deriveLink(obj) for obj in objectlist if obj.phobostype == 'link'],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 704, in <listcomp>
    links=[deriveLink(obj) for obj in objectlist if obj.phobostype == 'link'],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/utils/validation.py", line 802, in validation_wrapper
    return function(obj, *args, logging=logging, **kwargs)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 360, in deriveLink
    visuals.append(deriveVisual(part, logging=logging))
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 189, in deriveVisual
    material = deriveMaterial(obj.active_material, logging=logging)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 50, in deriveMaterial
    if "No material defined." in errors:
TypeError: argument of type 'NoneType' is not iterable

Thank you I know where the error comes from and will tackle it tomorrow.

Sorry to bother again, but unfortunately I can't see the custom properties section at the end of the bottom right panel. I want to check what information is in there.

56d64f4 should take care of this:

Python: Traceback (most recent call last):
...
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 50, in deriveMaterial
    if "No material defined." in errors:
TypeError: argument of type 'NoneType' is not iterable

@hwiedPro new error message

Error: Python: Traceback (most recent call last):
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 141, in invoke
    return self.execute(context)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 254, in execute
    self.exportModel(root, exportpath)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 156, in exportModel
    robot = deriveRobot(root)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 706, in deriveRobot
    motors=[deriveMotor(obj) for obj in objectlist if obj.phobostype == 'link' and any([k.startswith("motor") for k in obj.keys()])],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 706, in <listcomp>
    motors=[deriveMotor(obj) for obj in objectlist if obj.phobostype == 'link' and any([k.startswith("motor") for k in obj.keys()])],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 558, in deriveMotor
    return representation.Motor(
TypeError: phobos.io.representation.Motor() got multiple values for keyword argument 'name'

Thanks for reporting I'll fix this asap.

Ok, please try again ;)

Python: Traceback (most recent call last):
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 141, in invoke
    return self.execute(context)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 254, in execute
    self.exportModel(root, exportpath)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/operators/io.py", line 156, in exportModel
    robot = deriveRobot(root)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 707, in deriveRobot
    links=[deriveLink(obj) for obj in objectlist if obj.phobostype == 'link'],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 707, in <listcomp>
    links=[deriveLink(obj) for obj in objectlist if obj.phobostype == 'link'],
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/utils/validation.py", line 802, in validation_wrapper
    return function(obj, *args, logging=logging, **kwargs)
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/blender/io/blender2phobos.py", line 383, in deriveLink
    inertial = representation.Inertial(
  File "/home/bm/.config/blender/3.5/scripts/addons/phobos/io/representation.py", line 1406, in __init__
    assert self.origin.relative_to is not None
AssertionError

That's the same issue as in #281, see #281 (comment)

Let me know if this works for you now.

I consider this as solved, please reopen if not.