{"action":"created","issue":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/969","labels_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/969/labels{/name}","comments_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/969/comments","events_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/969/events","html_url":"https://github.com/RobotLocomotion/drake/pull/969","id":67160036,"number":969,"title":"Direct Mex-to-Mex LCP invocation","user":{"login":"psiorx","id":3849600,"avatar_url":"https://avatars.githubusercontent.com/u/3849600?v=3","gravatar_id":"","url":"https://api.github.com/users/psiorx","html_url":"https://github.com/psiorx","followers_url":"https://api.github.com/users/psiorx/followers","following_url":"https://api.github.com/users/psiorx/following{/other_user}","gists_url":"https://api.github.com/users/psiorx/gists{/gist_id}","starred_url":"https://api.github.com/users/psiorx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psiorx/subscriptions","organizations_url":"https://api.github.com/users/psiorx/orgs","repos_url":"https://api.github.com/users/psiorx/repos","events_url":"https://api.github.com/users/psiorx/events{/privacy}","received_events_url":"https://api.github.com/users/psiorx/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-04-08T15:47:40Z","updated_at":"2015-04-08T23:23:06Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RobotLocomotion/drake/pulls/969","html_url":"https://github.com/RobotLocomotion/drake/pull/969","diff_url":"https://github.com/RobotLocomotion/drake/pull/969.diff","patch_url":"https://github.com/RobotLocomotion/drake/pull/969.patch"},"body":"This gets rid of the ```mexCallMATLAB``` call in ```solveLCPmex```.\r\n\r\nThere are also two new utility functions in ```drakeUtil.cpp```.  The first is a ```callMexStandalone()``` function which allows mex files to be called  directly from c++.  The second is a function to build a MATLAB sparse matrix in mex.\r\n\r\nIn order to build a MATLAB sparse matrix in mex on 64-bit machines, the mex file must be compiled with the ```-largeArrayDims``` flag.  Currently, this is not the case so I suspect this will be broken until https://github.com/RobotLocomotion/cmake/pull/9 is incorporated.\r\n\r\nGetting rid of the ```mexCallMATLAB``` function gives an additional 5-10% performance boost to solveLCPmex as there is now a more direct pathway to the path LCP solver.\r\n\r\nResolves #965"},"comment":{"url":"https://api.github.com/repos/RobotLocomotion/drake/issues/comments/91065626","html_url":"https://github.com/RobotLocomotion/drake/pull/969#issuecomment-91065626","issue_url":"https://api.github.com/repos/RobotLocomotion/drake/issues/969","id":91065626,"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-04-08T23:23:06Z","updated_at":"2015-04-08T23:23:06Z","body":"Site: drake006\nBuild Name: master-pull-psiorx-jc-dlopen-pathlcp-into-RobotLocomotion-master\nBuild Server Directory: /tmp/drake-master-18680/drake\nPull Request: https://github.com/RobotLocomotion/drake/pull/969\nCDash: http://kobol.csail.mit.edu/cd/viewTest.php?onlyfailed&buildid=12360\n\nMost recent commits to drake included in this build:\n```\n95de802 Merge branch 'jc-dlopen-pathlcp' of https://github.com/psiorx/drake\na4d3b5a updated cmake submodule, moved pathLCP mex logic from matlab to cmake\na694801 Merge pull request #964 from psiorx/jc-getDrakeMexPointer-safe\n23e2017 Merge pull request #961 from hongkai-dai/QP_use_new_kinsol\n9d1db33 moved eigenToMexSparse to drakeUtil, renamed setupLCPmex to solveLCPmex, cached lcp_mexfile in TSRBM\n```\n\n375 tests run:\n 363 passed\n 0 cancelled (with missing dependencies )\n 4 timed out\n 8 failed\n  1 <a href=\\\"https://github.com/RobotLocomotion/drake/issues/311\\\">known issue #311</a>: testFloatingBase test can fail to match tolerance\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\n  1 unknown\n\nexamples/Atlas/runDRCDoorTask (timed out)\n\nexamples/Atlas/test/testRunningPlanner (timed out)\n\nexamples/SimpleFourBar/runPassiveLCP (unknown issue)\n```\nerror_id = Drake:ValueCheck\nerror_message = Values don't match.  Expected \n[0;0;0]\n but got \n[-6.68309462418848;0;2.49780148918091]\nis_segfault = 0\n```\n```Matlab\n\n                            < M A T L A B (R) >\n                  Copyright 1984-2012 The MathWorks, Inc.\n                    R2012b (8.0.0.783) 64-bit (glnxa64)\n                              August 22, 2012\n\n \nTo get started, type one of these: helpwin, helpdesk, or demo.\nFor product information, visit www.mathworks.com.\n \nTo reproduce this test use rng(883444355,'twister')\n \n[Warning: Disabling autosave for simulink blocks (to avoid generating a lot of\n*.mdl.autosave files in your directory.  If you aren't a regular Simulink user\nand don't want this disabled, comment out this section in addpath_drake.\nTo disable this warning in the future, add\n   warning('off','Drake:DisablingSimulinkAutosave')\nto your matlab startup.m] \n[> In addpath_drake at 74\n  In addpath_drake at 4] \n[Warning: 3D loop joints do not properly enforce the joint axis constraint.\n(they perform more like a ball joint)] \n[> In WarningManager>WarningManager.warnOnce at 21\n  In RigidBodyLoop>RigidBodyLoop.parseURDFNode at 91\n  In RigidBodyManipulator.addRobotFromURDF>parseRobot at 109\n  In RigidBodyManipulator.addRobotFromURDF at 54\n  In PlanarRigidBodyManipulator.PlanarRigidBodyManipulator>PlanarRigidBodyManipulator.addRobotFromURDF at 90\n  In PlanarRigidBodyManipulator.PlanarRigidBodyManipulator>PlanarRigidBodyManipulator.PlanarRigidBodyManipulator at 78\n  In TimeSteppingRigidBodyManipulator>TimeSteppingRigidBodyManipulator.TimeSteppingRigidBodyManipulator at 35\n  In runPassiveLCP at 5\n  In fevalPackageSafe at 21] \n[Warning: still need to add time derivatives of position constraints] \n[> In WarningManager>WarningManager.warnOnce at 21\n  In Manipulator.Manipulator>Manipulator.updatePositionEqualityConstraint at 192\n  In Manipulator.Manipulator>Manipulator.addPositionEqualityConstraint at 169\n  In RigidBodyLoop>RigidBodyLoop.updateConstraints at 27\n  In RigidBodyManipulator.RigidBodyManipulator>RigidBodyManipulator.compile at 869\n  In RigidBodyManipulator.addRobotFromURDF at 59\n  In PlanarRigidBodyManipulator.PlanarRigidBodyManipulator>PlanarRigidBodyManipulator.addRobotFromURDF at 90\n  In PlanarRigidBodyManipulator.PlanarRigidBodyManipulator>PlanarRigidBodyManipulator.PlanarRigidBodyManipulator at 78\n  In TimeSteppingRigidBodyManipulator>TimeSteppingRigidBodyManipulator.TimeSteppingRigidBodyManipulator at 35\n  In runPassiveLCP at 5\n  In fevalPackageSafe at 21] \n Calling addpath_gurobi\n Calling addpath_snopt\nError using valuecheck (line 78)\nValues don't match.  Expected \n[0;0;0]\n but got \n[-6.68309462418848;0;2.49780148918091]\n\nError in runPassiveLCP (line 15)\n  valuecheck(positionConstraints(p,x(1:nq,i)),zeros(3,1),1e-2);  \n\nError in fevalPackageSafe (line 21)\n  feval(f);\n\n \n<test_name>examples/SimpleFourBar/runPassiveLCP</test_name> <error_id>Drake:ValueCheck</error_id> <error_message>Values don't match.  Expected \n[0;0;0]\n but got \n[-6.68309462418848;0;2.49780148918091]</error_message> \n\n\n```\n\nexamples/Pendulum/runTrajectorySwingUpAndBalance (timed out)\n\nexamples/Atlas/runDRCPracticeTerrain (timed out)\n\n"}}