RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.35k stars 1.27k forks source link

GeometryProperties with aggregate values cannot be set in pydrake #22169

Open SeanCurtis-TRI opened 1 week ago

SeanCurtis-TRI commented 1 week ago

What happened?

Using the ("renderer", "accepting") property as a concrete example. The property is consumed by GeometryState and is used to determine if a geometry should be registered with a particular RenderEngine instance. The expected type of the property is std::set<string>.

Intuitively, one would expect in python, that to set the property, we could simply do:

properties = PerceptionProperties()
properties.AddProperty("rendererer", "accepting", set("A", "B"))

However, when GeometryState goes to extract the property, it does not find a property of type std::set<std::string>. Instead, it finds an instance of type drake:pydrake:Object.

There aren't too many properties of this type (this is the only one that immediately leaps to mind). Most other property values are instances of known primitive or C++ types bound in pydrake. So, the problem doesn't come up much. But it does prevent at least this one property from being set in python.

Version

No response

What operating system are you using?

No response

What installation option are you using?

No response

Relevant log output

No response