#! /usr/bin/env python
# Import the module
from urdf_parser_py.urdf import URDF
from pykdl_utils.kdl_parser import kdl_tree_from_urdf_model
from pykdl_utils.kdl_kinematics import KDLKinematics
robot = URDF.from_xml_file("robot.urdf")
tree = kdl_tree_from_urdf_model(robot)
print tree.getNrOfSegments()
chain = tree.getChain("link0", "link3")
print chain.getNrOfJoints()
# forwawrd kinematics
kdl_kin = KDLKinematics(robot, "link0", "link3")
q = [0, 0, 0]
pose = kdl_kin.forward(q) # forward kinematics (returns homogeneous 4x4 matrix)
print "forward ",pose
print " "
q_ik = kdl_kin.inverse(pose) # inverse kinematics
print "inverse ",q_ik
print " "
if q_ik is not None:
pose_sol = kdl_kin.forward(q_ik) # should equal pose
print "forward ",pose_sol
print " "
J = kdl_kin.jacobian(q)
print 'J:', J
参考:
https://blog.youkuaiyun.com/lordofrobots/article/details/77949111