Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rviz: property visualization #72

Merged
merged 14 commits into from
Feb 9, 2019
Merged

Conversation

rhaschke
Copy link
Contributor

@rhaschke rhaschke commented Feb 9, 2019

First attempt to display mtc properties in rviz. For each stage, a separate rviz::PropertyTreeModel is maintained. It's possible to register custom rviz::Property factory functions with the PropertyFactory.
These custom properties might allow nice editing, e.g. using interactive markers to configure a StampedPose.
A generic creator function, creates an rviz::Property tree from serialized YAML. Streaming a ROS type, generates YAML-like text. Unfortunately it's not perfect YAML (in contract to Python). For example, sequences as in moveit_msgs/Constraints are not correctly handled.

An alternative implementation would have used ros-type-introspection. However, ros-type-introspection requires access to the full message description (as provided by ros topics). Otherwise one cannot ensure that the correct message description is used to decode the serialized, binary buffer.
The parser cannot (efficiently) handle ROS types in a recursive fashion. All message descriptions need to be self-contained. This could be handled by also publishing all used message descriptions in the TaskDescription msg.
Finally, ros-type-introspection cannot write back changes. It's a read-only inspection tool.
In contrast, any parsed rviz::Property tree can be serialized to YAML easily. Using Python, we can also parse YAML into a ROS msg type again... Later!

avoid decl expressions, explicit public typedef
To allow stages to display their properties in a custom fashion, e.g.
to show the end-effector marker for PoseStamped, we need to be able
to register stage-specific factories.
... to allow properties to display scene-specific lists or create rviz markers
- switch from ROS serialization/deserialization to YAML
- no native C++ deserialization for ROS msg types available
- drop Propert::print()
... creating a read-only rviz::Property from serialized mtc::Property value
... ensures display in document order
... including ones registered in PropertyFactory
@rhaschke rhaschke merged commit 9bd6d19 into moveit:master Feb 9, 2019
rhaschke added a commit that referenced this pull request Feb 9, 2019
@rhaschke rhaschke deleted the property-edit branch February 10, 2019 05:12
rhaschke added a commit that referenced this pull request Feb 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant