{"action":"created","issue":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/814","labels_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/814/labels{/name}","comments_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/814/comments","events_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/814/events","html_url":"https://github.com/RobotLocomotion/drake/pull/814","id":59136027,"number":814,"title":"Centroidal momentum matrix / center of mass cleanup","user":{"login":"tkoolen","id":2585880,"avatar_url":"https://avatars.githubusercontent.com/u/2585880?v=3","gravatar_id":"","url":"https://api.github.com/users/tkoolen","html_url":"https://github.com/tkoolen","followers_url":"https://api.github.com/users/tkoolen/followers","following_url":"https://api.github.com/users/tkoolen/following{/other_user}","gists_url":"https://api.github.com/users/tkoolen/gists{/gist_id}","starred_url":"https://api.github.com/users/tkoolen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkoolen/subscriptions","organizations_url":"https://api.github.com/users/tkoolen/orgs","repos_url":"https://api.github.com/users/tkoolen/repos","events_url":"https://api.github.com/users/tkoolen/events{/privacy}","received_events_url":"https://api.github.com/users/tkoolen/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/RobotLocomotion/drake/labels/waiting%20for%20code%20update","name":"waiting for code update","color":"eb6420"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":20,"created_at":"2015-02-26T20:14:11Z","updated_at":"2015-03-13T18:20:24Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RobotLocomotion/drake/pulls/814","html_url":"https://github.com/RobotLocomotion/drake/pull/814","diff_url":"https://github.com/RobotLocomotion/drake/pull/814.diff","patch_url":"https://github.com/RobotLocomotion/drake/pull/814.patch"},"body":"A bunch of cleanup (and some new features):\r\n* extracted out a worldMomentumMatrix method (CMM minus the transformation from world frame to CoM frame)\r\n* noticed that computing a CMM is currently faster than computing a CoM Jacobian (old method simply did num_bodies forwardKin calls). The CoM Jacobian is just the bottom three rows of the CMM (or actually even of the world momentum matrix), divided by the total mass. Changed CoM Jacobian method so that it calls the worldMomentumMatrix method.\r\n* added robotnum option to all CoM/CMM related methods (including the *DotTimesV methods)\r\n* computing the gradient of a CMM requires the gradient of the CoM (i.e. the CoM Jacobian in terms of qdot) due to the transformation from world frame to centroidal frame. But this is again just the bottom rows of the CMM divided by total mass. We were doing double work by computing it explicitly again. Fixed.\r\n* the transformation from world frame to centroidal frame in centroidalMomentumMatrix is just a translation. New implementation exploits this fact, instead of treating it as a general transformation.\r\n* added in_terms_of_qdot option to getCOM. This also allowed me to enable testing of centerOfMassJacobianDotTimesV for a quat parameterized robot.\r\n* added totalMass method, both in C++ and Matlab.\r\n* moved pointAcceleration method, which was used in my old Matlab getCOM implementation, into its own file.\r\n* modified Matlab code to match updated C++ code\r\n"},"comment":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/comments/79213972","html_url":"https://github.com/RobotLocomotion/drake/pull/814#issuecomment-79213972","issue_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/814","id":79213972,"user":{"login":"RobotLocomotionBuild","id":8457190,"avatar_url":"https://avatars.githubusercontent.com/u/8457190?v=3","gravatar_id":"","url":"https://api.github.com/users/RobotLocomotionBuild","html_url":"https://github.com/RobotLocomotionBuild","followers_url":"https://api.github.com/users/RobotLocomotionBuild/followers","following_url":"https://api.github.com/users/RobotLocomotionBuild/following{/other_user}","gists_url":"https://api.github.com/users/RobotLocomotionBuild/gists{/gist_id}","starred_url":"https://api.github.com/users/RobotLocomotionBuild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobotLocomotionBuild/subscriptions","organizations_url":"https://api.github.com/users/RobotLocomotionBuild/orgs","repos_url":"https://api.github.com/users/RobotLocomotionBuild/repos","events_url":"https://api.github.com/users/RobotLocomotionBuild/events{/privacy}","received_events_url":"https://api.github.com/users/RobotLocomotionBuild/received_events","type":"User","site_admin":false},"created_at":"2015-03-13T18:20:23Z","updated_at":"2015-03-13T18:20:23Z","body":"Site: drake006\nBuild Name: master-pull-tkoolen-cmm-com-cleanup-into-RobotLocomotion-master\nBuild Server Directory: /tmp/drake-master-4583/drake\nPull Request: https://github.com/RobotLocomotion/drake/pull/814\nCDash: http://kobol.csail.mit.edu/cd/viewTest.php?onlyfailed&buildid=11786\n\nMost recent commits to drake included in this build:\n```\ne0b0756 Merge branch 'cmm-com-cleanup' of https://github.com/tkoolen/drake\n4c055dc Revert change to getCOM.\n21375e3 Got rid of robotnum logic that is already handled in isBodyPartOfRobot.\nef0de57 Merge pull request #852 from hongkai-dai/lcmgl_polygon\n0fc0152 Merge pull request #847 from RussTedrake/joint_limits\n```\n\n373 tests run:\n 360 passed\n 0 cancelled (with missing dependencies )\n 3 timed out\n 10 failed\n  3 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/18\\\">known issue #18</a>: Singularities in the euler-angle floating base joint cause infrequent errors on unit tests with random initial conditions\n  4 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/374\\\">known issue #374</a>: failing imu unit tests\n  1 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/466\\\">known issue #466</a>: implement Jdot*v for drakeFunction.kinematic methods\n  1 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/585\\\">known issue #585</a>: testIndividualCentersOfPressure fails on win64\n  1 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/822\\\">known issue #822</a>: testURDF fails now that it is parsing every urdf in drake\n  0 unknown\n\nexamples/Atlas/runDRCDoorTask (timed out)\n\nexamples/Atlas/test/testRunningPlanner (timed out)\n\nexamples/Atlas/test/testSplitWalking (timed out)\n\n"}}