Find the tangent space of the solution variety #28

Open
opened 2024-12-04 20:12:32 +00:00 by Vectornaut · 1 comment
Collaborator

During (or immediately thereafter in the "background" if doing it in combination slows user responsiveness) constraint solving, find the tangent space of the solution variety. Project all initial/short-range motions of the assembly onto the tangent space before re-solving exactly.

Testing

Manual

Implement some simple motion commands, like pushing a sphere along the standard unit directions. Note that the final outcome of such a motion should satisfy all constraints, which the initial projection might only approximately do. So perhaps a distinction needs to be made between the "approximate projected push" and the "final push position".

Automated

Build a simple assembly with a known tangent space and verify that projection works as expected. If there is a separate final recalculated position post-push, that should be tested too.

During (or immediately thereafter in the "background" if doing it in combination slows user responsiveness) constraint solving, find the tangent space of the solution variety. Project all initial/short-range motions of the assembly onto the tangent space before re-solving exactly. ### Testing #### Manual Implement some simple motion commands, like pushing a sphere along the standard unit directions. Note that the final outcome of such a motion should satisfy all constraints, which the initial projection might only approximately do. So perhaps a distinction needs to be made between the "approximate projected push" and the "final push position". #### Automated Build a simple assembly with a known tangent space and verify that projection works as expected. If there is a separate final recalculated position post-push, that should be tested too.
Vectornaut added the
enhancement
label 2024-12-04 20:12:32 +00:00
Owner

Some thought/care needs to be given to what the expected outcome is when the current configuration is (a) infinitesimally rigid or (b) rigid but not infinitesimally rigid (hope I got the implication in the right direction). I mean, in case there are no global position or orientation constraints, you can always translate/rotate the entire assembly. But perhaps that never happens in the "initial push" but only in the "exact re-solve"? Not clear to me. I guess in the case of (b), the initial push moves along the apparent direction of freedom and then the re-solve restores the starting configuration? But then does that scheme become frustrating for the user? And does it block the drag of the entire assembly like you might be able to do with an infinitesimally rigid one? These subtleties need working out at some point...

Some thought/care needs to be given to what the expected outcome is when the current configuration is (a) infinitesimally rigid or (b) rigid but not infinitesimally rigid (hope I got the implication in the right direction). I mean, in case there are no global position or orientation constraints, you can always translate/rotate the entire assembly. But perhaps that never happens in the "initial push" but only in the "exact re-solve"? Not clear to me. I guess in the case of (b), the initial push moves along the apparent direction of freedom and then the re-solve restores the starting configuration? But then does that scheme become frustrating for the user? And does it block the drag of the entire assembly like you might be able to do with an infinitesimally rigid one? These subtleties need working out at some point...
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: glen/dyna3#28
No description provided.