Reversed weld joints are allowed in Drake as of #22122. That means it's OK if the child body of the weld is closer to World (or is World) in the tree structure than the parent body is. This gets us closer to solving #17429 but the addition of a weld is likely to require reversal of some of the other joints. For most robots the only such reversals will be revolute and occasionally prismatic joints. These are the easiest to reverse of the remaining joints since they just require flipping the reaction forces (already done in general in #22122) and negating the q and v.
Proposal
Add revolute and prismatic joints to the list of permitted reversed joints and implement the coordinate sign change in the corresponding mobilizers. Add unit tests for the coordinates; shouldn't need to test reaction flip as long as the same, already-tested code is used as for welds.
Per f2f discussion, consider whether it is sufficient to flip the axis while leaving the q and v signs alone. That would have the advantage of eliminating any conditionals or extra multiplies by a "sign" factor.
Background
Reversed weld joints are allowed in Drake as of #22122. That means it's OK if the child body of the weld is closer to World (or is World) in the tree structure than the parent body is. This gets us closer to solving #17429 but the addition of a weld is likely to require reversal of some of the other joints. For most robots the only such reversals will be revolute and occasionally prismatic joints. These are the easiest to reverse of the remaining joints since they just require flipping the reaction forces (already done in general in #22122) and negating the q and v.
Proposal
Add revolute and prismatic joints to the list of permitted reversed joints and implement the coordinate sign change in the corresponding mobilizers. Add unit tests for the coordinates; shouldn't need to test reaction flip as long as the same, already-tested code is used as for welds.
Per f2f discussion, consider whether it is sufficient to flip the axis while leaving the q and v signs alone. That would have the advantage of eliminating any conditionals or extra multiplies by a "sign" factor.