How to set the maximum motion range of a joint in the chain?

How to set the maximum motion range of a joint in the chain?

Hi,
Using the ChainIkSolverPos_NR_JL solver for inverse kinematics, you can
send q_min and q_max directly as parameters to the solver, as seen in the
last line of this (Python, but similar in C++) code:

# FwdKin solver needed for kdl.ChainIkSolverPos_NR_JL
fk = kdl.ChainFkSolverPos_recursive(chain)
# InvKinVel solver needed for kdl.ChainIkSolverPos_NR_JL
ikv = kdl.ChainIkSolverVel_pinv(chain)
# InvKin solver
ik = kdl.ChainIkSolverPos_NR_JL(chain,q_min,q_max,fk,ikv)

Cheers,
Juan
________________________________________________________
http://roboticslab.uc3m.es/roboticslab/people/jg-victores

2016-01-23 13:47 GMT+01:00 <nishidreammqh [..] ...>:

> How to set the maximum motion range of a joint in the chain?
>
> I've searched for 2 days in the API documentation and got nothing:(
>
> //Definition of a kinematic chain & add segments to the chain
> KDL::Chain chain;
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[1],dh[0],dh[2],dh[3]),
>
> RigidBodyInertia(0,Vector::Zero(),RotationalInertia(0,0.35,0,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[5],dh[4],dh[6],dh[7]),
>
> RigidBodyInertia(17.4,Vector(-.3638,.006,.2275),RotationalInertia(0.13,0.524,0.539,0,0,0))));
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[9],dh[8],dh[10],dh[11]),
>
> RigidBodyInertia(4.8,Vector(-.0203,-.0141,.070),RotationalInertia(0.066,0.086,0.0125,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[13],dh[12],dh[14],dh[15]),
>
> RigidBodyInertia(0.82,Vector(0,.019,0),RotationalInertia(1.8e-3,1.3e-3,1.8e-3,0,0,0))));
> chain.addSegment(Segment());
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[17],dh[16],dh[18],dh[19]),
>
> RigidBodyInertia(0.34,Vector::Zero(),RotationalInertia(.3e-3,.4e-3,.3e-3,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[21],dh[20],dh[22],dh[23]),
>
> RigidBodyInertia(0.09,Vector(0,0,.032),RotationalInertia(.15e-3,0.15e-3,.04e-3,0,0,0))));
> chain.addSegment(Segment());
> --
> Orocos-Users mailing list
> Orocos-Users [..] ...
> http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
>

How to set the maximum motion range of a joint in the chain?

Hi,
Using the ChainIkSolverPos_NR_JL solver for inverse kinematics, you can
send q_min and q_max directly as parameters to the solver, as seen in the
last line of this (Python, but similar in C++) code:

# FwdKin solver needed for kdl.ChainIkSolverPos_NR_JL
fk = kdl.ChainFkSolverPos_recursive(chain)
# InvKinVel solver needed for kdl.ChainIkSolverPos_NR_JL
ikv = kdl.ChainIkSolverVel_pinv(chain)
# InvKin solver
ik = kdl.ChainIkSolverPos_NR_JL(chain,q_min,q_max,fk,ikv)

Cheers,
Juan
________________________________________________________
http://roboticslab.uc3m.es/roboticslab/people/jg-victores

2016-01-23 13:47 GMT+01:00 <nishidreammqh [..] ...>:

> How to set the maximum motion range of a joint in the chain?
>
> I've searched for 2 days in the API documentation and got nothing:(
>
> //Definition of a kinematic chain & add segments to the chain
> KDL::Chain chain;
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[1],dh[0],dh[2],dh[3]),
>
> RigidBodyInertia(0,Vector::Zero(),RotationalInertia(0,0.35,0,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[5],dh[4],dh[6],dh[7]),
>
> RigidBodyInertia(17.4,Vector(-.3638,.006,.2275),RotationalInertia(0.13,0.524,0.539,0,0,0))));
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[9],dh[8],dh[10],dh[11]),
>
> RigidBodyInertia(4.8,Vector(-.0203,-.0141,.070),RotationalInertia(0.066,0.086,0.0125,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[13],dh[12],dh[14],dh[15]),
>
> RigidBodyInertia(0.82,Vector(0,.019,0),RotationalInertia(1.8e-3,1.3e-3,1.8e-3,0,0,0))));
> chain.addSegment(Segment());
> chain.addSegment(Segment());
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[17],dh[16],dh[18],dh[19]),
>
> RigidBodyInertia(0.34,Vector::Zero(),RotationalInertia(.3e-3,.4e-3,.3e-3,0,0,0))));
> chain.addSegment(Segment(Joint(Joint::RotZ),
> Frame::DH(dh[21],dh[20],dh[22],dh[23]),
>
> RigidBodyInertia(0.09,Vector(0,0,.032),RotationalInertia(.15e-3,0.15e-3,.04e-3,0,0,0))));
> chain.addSegment(Segment());
> --
> Orocos-Users mailing list
> Orocos-Users [..] ...
> http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
>