-
Notifications
You must be signed in to change notification settings - Fork 49
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
Initial closed-loop mechanism implementation #149
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…bian, to be used for constraint Jacobian as well
Adds maximal_coordinates, which takes a mechanism and turns it into a height-one tree with floating joints at the tree edges, while the joints of the input mechanism become non-tree edges in the maximal-coordinates-mechanism. Also fixes a bug in the constraint bias computation. Test asserts that doing dynamics for a random Mechanism and for a maximal-coordinates version of that Mechanism results in the same spatial accelerations.
tkoolen
changed the title
Closed loop solve
Initial closed-loop mechanism implementation
Feb 2, 2017
tkoolen
force-pushed
the
closed-loop-solve
branch
from
February 2, 2017 23:06
f225e20
to
cdfd98c
Compare
Codecov Report
@@ Coverage Diff @@
## master #149 +/- ##
=========================================
Coverage ? 91.56%
=========================================
Files ? 16
Lines ? 1695
Branches ? 0
=========================================
Hits ? 1552
Misses ? 143
Partials ? 0
Continue to review full report at Codecov.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Initial support for closed-loop mechanisms (see #85).
The
attach!
function now figures out whether the predecessor and successor are already part of theMechanism
, and if so, creates aNonTreeEdge
instead of adding a new vertex and edge to the tree.Also adds a
maximal_coordinates
function that takes aMechanism
and creates an equivalentMechanism
with allRigidBody
s attached directly to the world using aQuaternionFloating
joint, while adding all of the joints of the inputMechanism
asNonTreeEdge
s (i.e. loop constraints). A test verifies that doing dynamics for a randomMechanism
and its correspondingmaximal_coordinates
version gives the same result.For now,
Mechanism
manipulation functions likesubmechanism
,reattach!
, etc. don't supportMechanism
s withNonTreeEdge
s (they throw an error when such edges are present).Long-term, I'd like to switch to a proper graph structure for the
Joint
/RigidBody
graph in aMechanism
(perhapsGraph
fromGraphs.jl
).Still need to implement constraint projection in the integrator.
Also fix some minor type issues.