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

[geometry] Documentation to inform user-facing decisions discoverable #13314

Closed
5 tasks done
SeanCurtis-TRI opened this issue May 14, 2020 · 4 comments
Closed
5 tasks done
Assignees
Labels
component: geometry general Geometry infrastructure or topics that defy categorization into other geometry components priority: high type: documentation unused team: dynamics

Comments

@SeanCurtis-TRI
Copy link
Contributor

SeanCurtis-TRI commented May 14, 2020

Problem

There are, ultimately, design issues in the API that affect end users decisions. Many of these have been documented in the code. In some case, they've been included in the documentation for private or internal APIs. As such, the information is not discoverable through doxygen. This is part of a larger trend.

Examples:

Solution

We need to scrub through the geometry code and distill the documentation into a better user guide. Through the use of tags and anchors, documentation for internal APIs can call back to that documentation so that it doesn't get duplicated.

Complexity

There are several issues that makes this harder than one might think at first. Taking parsing as an example:

  • It makes sense that the function that does the parsing work should document what tags it is looking for and what it does if it finds/doesn't find them. That's simple function documentation. This serves the developer and its spatial locality increases the odds that it gets maintained along with the code (and will inform the user tests).
  • The parsing code is internal so none of that good documentation gets put in rendered doxygen.
  • Creating a standalone doxygen module is discoverable. It is also the ideal medium to put several disparate concepts into clear relationship. However, it is far removed from any implementation (see the first item in this point). This documentation serves the user by being discoverable and holistic.
  • We don't really want to copy-and-paste the function documentation into the module documentation for all of the normal brittleness reasons.

So, the goal would be to document behavior once such that it serves both developer and user without introducing entropy (needlessly).

@DamrongGuoy
Copy link
Contributor

Thank you for explanation. It took me a while to understand. It is indeed tricky to maintain the balance of users and developers.

@rpoyner-tri
Copy link
Contributor

As a warmup, I searched for @anchor tags that are defined within a namespace internal block. Here are the results:

  • sdf_contact_material

    • ref in multibody_plant.h
  • urdf_contact_material

    • ref in multibody_plant.h
  • point_contact_data_accessors

    • harmless; defined, never used.
  • forward_dynamics_notation

    • harmless; defined, never used.
  • internal_forward_dynamics

    • all refs are internal also, so harmless?
  • abi_and_bias_force

    • all refs are internal also, so harmless?
  • abi_computing_accelerations

    • all refs are internal also, so harmless?
  • map_decision_variable_to_sdpa

    • all refs are internal also, so harmless?

So, the broken-link problems are covered by #14107. Next is to try to discover the full set of drake: extensions to SDF/URDF and their documentation.

@rpoyner-tri
Copy link
Contributor

Here are all of the potential element/attribute names found, within
multibody/parsing.

  • drake:acceleration

    • sdf element; urdf attribute
    • within joint/limit
    • not obviously documented anywhere?
  • drake:accepting_renderer

    • sdf element where name is contents
    • urdf element where name is an attribute
    • within visual element
    • multiple instances allowed
    • documentation at detail_urdf_geometry.h and detail_scene_graph.h
  • drake:linear_bushing_rpy

    • sdf, urdf element, assorted sub-parts
      • drake:bushing_force_damping
      • drake:bushing_force_stiffness
      • drake:bushing_frameA, drake:bushing_frameC
      • drake:bushing_torque_damping
      • drake:bushing_torque_stiffness
    • documented in detail_common.h
  • drake:capsule

  • drake:ellipsoid

  • drake:half_space

    • sdf: not used or parsed?
    • urdf: some examples, but not used or parsed?
  • drake:collision_filter_group

    • element: equivalent layout in sdf, urdf, different idiomatic spellings
    • urdf: within robot
    • sdf: within model
    • various sub-parts
      • drake:ignored_collision_filter_group
      • drake:member
    • not documented?
  • drake:declare_convex

    • sdf, urdf: empty element
    • within mesh
    • not documented?
  • drake:diffuse_map

    • sdf: element, contents is a locator for a texture
    • within material
    • urdf: not parsed?
    • not documented
  • drake:gear_ratio

    • sdf: element, float value in contents, within joint
    • urdf: element float value attribute, within transmission/actuator
    • not documented?
  • drake:rotor_inertia

    • sdf: element, float value in contents, within joint
    • urdf: element float value attribute, within transmission/actuator
    • not documented?
  • drake:joint

    • sdf, urdf element
    • assorted attributes and subelements
      • drake:child
      • drake:damping
      • drake:parent
    • not documented?
  • drake:proximity_properties

    • sdf, urdf element
    • assorted sub-parts
      • drake:compliant_hydroelastic
      • drake:hunt_crossley_dissipation
      • drake:hydroelastic_modulus
      • drake:mesh_resolution_hint
      • drake:mu_dynamic
      • drake:mu_static
      • drake:point_contact_stiffness
      • drake:rigid_hydroelastic
    • within collision
    • documented here
      • multibody/parsing/detail_common.h
      • multibody/parsing/detail_scene_graph.h
      • multibody/parsing/detail_urdf_geometry.h
  • drake:elastic_modulus

    • deprecated in favor of drake:hydroelastic_modulus
  • drake:soft_hydroelastic

    • deprecated in favor of drake:compliant_hydroelastic

Summary: nothing is documented in any renderable place, much is undocumented. Several language definition questions need resolving.

rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 26, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 27, 2022
Relevant to: RobotLocomotion#13314

This patch makes it possible to interrogate drake-extended model files
with standard XML tools, which is useful when composing and verifying
documentation.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 27, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 27, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit that referenced this issue Jan 27, 2022
* sdf, urdf: Add/canonicalize xmlns: declarations

Relevant to: #13314

This patch makes it possible to interrogate drake-extended model files
with standard XML tools, which is useful when composing and verifying
documentation.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 28, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 28, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 28, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 28, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 29, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 31, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Jan 31, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions, and all of the standard unsupported
tags. Give at least some hyperlinks to help discovery of the new documentation;
more links may be added later.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 1, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 2, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 2, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 3, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 3, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 3, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Relevant to: RobotLocomotion#13314, RobotLocomotion#16229, RobotLocomotion#14107, RobotLocomotion#12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Detour from: RobotLocomotion#13314, PR RobotLocomotion#16444

@amcastro gave a very nice theory lesson on dissipation in a recent PR
discussion. This patch puts that lesson in a (somewhat) reasonable
location.

Also, the patch fixes a bunch of long-festering typos.
rpoyner-tri added a commit that referenced this issue Feb 4, 2022
* [multibody] Document Parser file format details

Relevant to: #13314, #16229, #14107, #12610

Document all of the drake extensions. Give at least some hyperlinks to help
discovery of the new documentation; more links may be added later.

Space is indicated for a future effort to enumerate the standard tags Drake
does not support.

Also augment the URDF parsing to accept both //capsule and //drake:capsule.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Detour from: RobotLocomotion#13314, PR RobotLocomotion#16444

@amcastro gave a very nice theory lesson on dissipation in a recent PR
discussion. This patch puts that lesson in a (somewhat) reasonable
location.

Also, the patch fixes a bunch of long-festering typos.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Detour from: RobotLocomotion#13314, PR RobotLocomotion#16444

@amcastro gave a very nice theory lesson on dissipation in a recent PR
discussion. This patch puts that lesson in a (somewhat) reasonable
location.

Also, the patch fixes a bunch of long-festering typos.
rpoyner-tri added a commit to rpoyner-tri/drake that referenced this issue Feb 4, 2022
Detour from: RobotLocomotion#13314, PR RobotLocomotion#16444

@amcastro gave a very nice theory lesson on dissipation in a recent PR
discussion. This patch puts that lesson in a (somewhat) reasonable
location.

Also, the patch fixes a bunch of long-festering typos.
rpoyner-tri added a commit that referenced this issue Feb 4, 2022
* [doc] Document Hunt and Crossley-inspired dissipation model

Detour from: #13314, PR #16444

@amcastro gave a very nice theory lesson on dissipation in a recent PR
discussion. This patch puts that lesson in a (somewhat) reasonable
location.

Also, the patch fixes a bunch of long-festering typos.
@rpoyner-tri
Copy link
Contributor

Boxes are checked. Of course it's not all perfect, but I think good enough to declare victory here. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: geometry general Geometry infrastructure or topics that defy categorization into other geometry components priority: high type: documentation unused team: dynamics
Projects
Archived in project
Development

No branches or pull requests

4 participants