RobotLocomotion/drake — pull request #29 by hongkai-dai (2014-02-14 18:16:26+00:00)
Title: Ik cherry pick7

Include all the commits I made back from Nov 16th.

This topic branch add the following features to drake
1. Add a new type of constraint, the SingleTimeLinearPostureConstraint. This constraint specifies lb<=A*q<=ub. Also inverseKin,inverseKinPointwise,inverseKinTraj support this constraint type, but not the approximateIK.
2. All IK functions now have a separate C++ interface, so they do not need to be called through MATLAB. Also they have the C++ test files, built in pod-build/bin
3. All constraints can be constructed from the same function, constructRigidBodyConstraint. Each non-abstract constraint has a unique constraint type.
4. I add constness to the methods in RigidBodyConstraint.
5. URDFRigidBodyManipulator now add joint limits and masses to its field. But URDFRigidBodyManipular and RigidBodyManipulator in MATLAB are not exactly the same for the same URDF file. The former one sort the link and joint names, so the link/joint index are different from the MATLAB counterpart.
6. Add findLinkInd method in C++ RigidBodyManipulator. But I am not handling the regular expressions, as does in the MATLAB counterpart.
7. Changed the definition of 'tol' in the WorldQuatConstraint. Previously it was sin(theta/2)^2, where theta is the allowable angle to rotate. This definition is quite unnatural. Now tol = theta.

Currently I fail sometimes in the util/test/testOrientation. Because rotmat2quat was changed. Will work on this next. The testOrientation file needs to be modified. Will solve this later