Source code for rofunc.utils.robolab.kinematics.jacobian
import numpy as np
[docs]def get_jacobian_from_model(file_path, end_link_name, joint_values):
"""
Get the Jacobian matrix J of the robot from the 3D model, \dot x= J \dot q
:param file_path:
:param joint_values:
:return:
"""
import kinpy as kp
if file_path.endswith('gluon.urdf'):
data = open(file_path)
xslt_content = data.read().encode()
chain = kp.build_serial_chain_from_urdf(xslt_content, end_link_name=end_link_name)
elif file_path.endswith('.urdf'):
chain = kp.build_serial_chain_from_urdf(open(file_path).read(), end_link_name=end_link_name)
elif file_path.endswith('.xml'):
chain = kp.build_serial_chain_from_mjcf(open(file_path).read(), end_link_name=end_link_name)
J = chain.jacobian(joint_values)
ret = chain.forward_kinematics(joint_values, end_only=False)
# viz = kp.Visualizer()
# viz.add_robot(ret, chain.visuals_map(), mesh_file_path="/home/ubuntu/Github/Manipulation/kinpy/examples/kuka_iiwa/", axes=True)
# viz.spin()
return J
if __name__ == '__main__':
urdf_path = "/home/hengyi/GitHub/Rofunc/rofunc/simulator/assets/urdf/gluon/gluon.urdf"
joint_values = [0.0, -np.pi / 4.0, 0.0, np.pi / 2.0, 0.0, np.pi / 4.0]
get_jacobian_from_model(urdf_path, end_link_name='6_Link', joint_values=joint_values)