Main Content


Geometric Jacobian for robot configuration



jacobian = geometricJacobian(robot,configuration,endeffectorname) computes the geometric Jacobian relative to the base for the specified end-effector name and configuration for the robot model.


collapse all

Calculate the geometric Jacobian for a specific end effector and configuration of a robot.

Load a Puma robot, which is specified as a RigidBodyTree object.

load exampleRobots.mat puma1

Calculate the geometric Jacobian of body 'L6' on the Puma robot for a random configuration.

geoJacob = geometricJacobian(puma1,randomConfiguration(puma1),'L6')
geoJacob = 6×6

         0   -0.7795   -0.7795   -0.4592    0.5643   -0.6612
    0.0000    0.6264    0.6264   -0.5714   -0.7789   -0.2282
    1.0000    0.0000    0.0000    0.6801   -0.2734   -0.7146
    0.4544    0.3107    0.1746   -0.0000         0         0
   -0.5577    0.3866    0.2173   -0.0000         0         0
         0    0.7036    0.3304    0.0000         0         0

Input Arguments

collapse all

Robot model, specified as a rigidBodyTree object.

Robot configuration, specified as a vector of joint positions or a structure with joint names and positions for all the bodies in the robot model. You can generate a configuration using homeConfiguration(robot), randomConfiguration(robot), or by specifying your own joint positions in a structure. To use the vector form of configuration, set the DataFormat property for the robot to either "row" or "column" .

End-effector name, specified as a string scalar or character vector. An end effector can be any body in the robot model.

Data Types: char | string

Output Arguments

collapse all

Geometric Jacobian of the end effector with the specified configuration, returned as a 6-by-n matrix, where n is the number of degrees of freedom for the end effector. The Jacobian maps the joint-space velocity to the end-effector velocity, relative to the base coordinate frame. The end-effector velocity equals:

ω is the angular velocity, υ is the linear velocity, and is the joint-space velocity.


[1] Featherstone, Roy. Rigid Body Dynamics Algorithms. Springer US, 2008. (Crossref), doi:10.1007/978-1-4899-7560-7.

Extended Capabilities

Introduced in R2016b