{"action":"created","issue":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/4148","repository_url":"https://api.github.com/repos/RobotLocomotion/drake","labels_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/4148/labels{/name}","comments_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/4148/comments","events_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/4148/events","html_url":"https://github.com/RobotLocomotion/drake/pull/4148","id":190119467,"number":4148,"title":"Faster forward dynamics computation through smart matrix factorizations","user":{"login":"edrumwri","id":2224335,"avatar_url":"https://avatars.githubusercontent.com/u/2224335?v=3","gravatar_id":"","url":"https://api.github.com/users/edrumwri","html_url":"https://github.com/edrumwri","followers_url":"https://api.github.com/users/edrumwri/followers","following_url":"https://api.github.com/users/edrumwri/following{/other_user}","gists_url":"https://api.github.com/users/edrumwri/gists{/gist_id}","starred_url":"https://api.github.com/users/edrumwri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edrumwri/subscriptions","organizations_url":"https://api.github.com/users/edrumwri/orgs","repos_url":"https://api.github.com/users/edrumwri/repos","events_url":"https://api.github.com/users/edrumwri/events{/privacy}","received_events_url":"https://api.github.com/users/edrumwri/received_events","type":"User","site_admin":false},"labels":[{"id":470891318,"url":"https://api.github.com/repos/RobotLocomotion/drake/labels/status:%20curate%20commits%20before%20merging","name":"status: curate commits before merging","color":"d93f0b","default":false}],"state":"open","locked":false,"assignee":{"login":"amcastro-tri","id":17601461,"avatar_url":"https://avatars.githubusercontent.com/u/17601461?v=3","gravatar_id":"","url":"https://api.github.com/users/amcastro-tri","html_url":"https://github.com/amcastro-tri","followers_url":"https://api.github.com/users/amcastro-tri/followers","following_url":"https://api.github.com/users/amcastro-tri/following{/other_user}","gists_url":"https://api.github.com/users/amcastro-tri/gists{/gist_id}","starred_url":"https://api.github.com/users/amcastro-tri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amcastro-tri/subscriptions","organizations_url":"https://api.github.com/users/amcastro-tri/orgs","repos_url":"https://api.github.com/users/amcastro-tri/repos","events_url":"https://api.github.com/users/amcastro-tri/events{/privacy}","received_events_url":"https://api.github.com/users/amcastro-tri/received_events","type":"User","site_admin":false},"assignees":[{"login":"david-german-tri","id":17437069,"avatar_url":"https://avatars.githubusercontent.com/u/17437069?v=3","gravatar_id":"","url":"https://api.github.com/users/david-german-tri","html_url":"https://github.com/david-german-tri","followers_url":"https://api.github.com/users/david-german-tri/followers","following_url":"https://api.github.com/users/david-german-tri/following{/other_user}","gists_url":"https://api.github.com/users/david-german-tri/gists{/gist_id}","starred_url":"https://api.github.com/users/david-german-tri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/david-german-tri/subscriptions","organizations_url":"https://api.github.com/users/david-german-tri/orgs","repos_url":"https://api.github.com/users/david-german-tri/repos","events_url":"https://api.github.com/users/david-german-tri/events{/privacy}","received_events_url":"https://api.github.com/users/david-german-tri/received_events","type":"User","site_admin":false},{"login":"amcastro-tri","id":17601461,"avatar_url":"https://avatars.githubusercontent.com/u/17601461?v=3","gravatar_id":"","url":"https://api.github.com/users/amcastro-tri","html_url":"https://github.com/amcastro-tri","followers_url":"https://api.github.com/users/amcastro-tri/followers","following_url":"https://api.github.com/users/amcastro-tri/following{/other_user}","gists_url":"https://api.github.com/users/amcastro-tri/gists{/gist_id}","starred_url":"https://api.github.com/users/amcastro-tri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amcastro-tri/subscriptions","organizations_url":"https://api.github.com/users/amcastro-tri/orgs","repos_url":"https://api.github.com/users/amcastro-tri/repos","events_url":"https://api.github.com/users/amcastro-tri/events{/privacy}","received_events_url":"https://api.github.com/users/amcastro-tri/received_events","type":"User","site_admin":false}],"milestone":null,"comments":25,"created_at":"2016-11-17T18:00:52Z","updated_at":"2016-11-29T01:48:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RobotLocomotion/drake/pulls/4148","html_url":"https://github.com/RobotLocomotion/drake/pull/4148","diff_url":"https://github.com/RobotLocomotion/drake/pull/4148.diff","patch_url":"https://github.com/RobotLocomotion/drake/pull/4148.patch"},"body":"This PR speeds forward dynamics calculation for multi-rigid bodies, both with and without kinematic loops. Without kinematic loops, a Cholesky factorization-based solve is used to exploit the symmetric, positive definite nature of the generalized inertia matrix. For bodies with kinematic loops, this code has sped the equality-constrained QP solver by no longer solving the full KKT subproblem directly. Instead, a Schur factorization type approach is used that combines a robust QR factorization (for computing constraint forces) and a fast Cholesky factorization (for computing forward dynamics).\r\n\r\nThis update has been tested on the Valkyrie simulation and results in an (admittedly paltry) 3.5% speedup. The speedup should be proportionally much greater once current other performance issues have been resolved.\r\n\r\n<!-- Reviewable:start -->\r\n---\r\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/robotlocomotion/drake/4148)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/comments/263452516","html_url":"https://github.com/RobotLocomotion/drake/pull/4148#issuecomment-263452516","issue_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/4148","id":263452516,"user":{"login":"edrumwri","id":2224335,"avatar_url":"https://avatars.githubusercontent.com/u/2224335?v=3","gravatar_id":"","url":"https://api.github.com/users/edrumwri","html_url":"https://github.com/edrumwri","followers_url":"https://api.github.com/users/edrumwri/followers","following_url":"https://api.github.com/users/edrumwri/following{/other_user}","gists_url":"https://api.github.com/users/edrumwri/gists{/gist_id}","starred_url":"https://api.github.com/users/edrumwri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edrumwri/subscriptions","organizations_url":"https://api.github.com/users/edrumwri/orgs","repos_url":"https://api.github.com/users/edrumwri/repos","events_url":"https://api.github.com/users/edrumwri/events{/privacy}","received_events_url":"https://api.github.com/users/edrumwri/received_events","type":"User","site_admin":false},"created_at":"2016-11-29T01:48:28Z","updated_at":"2016-11-29T01:48:28Z","body":"Ok, the \"solution\" to the questions of accuracy is to remove the path that currently does speed valkyrie (albeit only slightly) by reverting all changes to RigidBodyPlant. Forward dynamics for multibody systems with kinematic loops will be improved.\n\n---\n\nReview status: all files reviewed at latest revision, 4 unresolved discussions.\n\n---\n\n*[drake/solvers/equality_constrained_qp_solver.cc, line 71 at r5](https://reviewable.io:443/reviews/robotlocomotion/drake/4148#-KXhOXPbaj4fnSDYBVa2:-KXhfLK983Vg1DibMQQ_:brre5en) ([raw file](https://github.com/robotlocomotion/drake/blob/e46571ab33844560190992550c2327419a00fb35/drake/solvers/equality_constrained_qp_solver.cc#L71)):*\n<details><summary><i>Previously, sherm1 (Michael Sherman) wrote…</i></summary><blockquote>\n\nThis appears to have swapped block operations for elementwise operations. Couldn't that make this code run slower? Since this is intended as a performance improvement, how do we know that this is a net win?\n</blockquote></details>\n\nThis change was made by Hongkai in PR #4144 because it can't be assumed that the decision variables are stored contiguously (i.e., Reviewable does not show that this change was originally from that PR).\n\n---\n\n\n*Comments from [Reviewable](https://reviewable.io:443/reviews/robotlocomotion/drake/4148#-:-KXhkJQTbSlaCEuH8d6J:b-98vprj)*\n<!-- Sent from Reviewable.io -->\n"}}
{"actor":{"display_login":"edrumwri"}}