1function J_geometric_body = calculateGeometricJacobian(g_joints_home, num_joints, bodyTwists)
 2%#codegen
 3
 4J_manipulator = calculateManipulatorJacobian(num_joints,g_joints_home,bodyTwists);
 5
 6g_be = g_joints_home(:,:,end);  % Transformation from base frame to end-effector frame
 7Ad_be_inv = calculateAdjointInverse(g_be);
 8
 9J_geometric_body = [Ad_be_inv, Ad_be_inv * J_manipulator];
10
11end