前言:
主要目的是:产生力矩以平衡作用在平面机器人末端执行器上的末端力
为了使用各种方法计算关节力矩,使用几何雅可比矩阵和逆动力学对象函数对rigidBodyTree机器人模型。
twoJointRigidBodyTree机器人是一种二维平面机器人。
关节构型输出为列向量。
twoJointRobot = twoJointRigidBodyTree("column");
问题描述:
机器人末端点力eeForce是作用在末端执行器上的线性力和力矩的组合的列向量。
请注意,这个向量在基本坐标系中表示,如下所示。
fx = 2; fy = 2;fz = 0;nx = 0;ny = 0;nz = 3;eeForce = [nx;ny;nz;fx;fy;fz];eeName = "tool";
为平衡力矩指定机器人的关节构型
q = [pi/3;pi/4];Tee = getTransform(twoJointRobot,q,eeName);
雅可比矩阵几何法
根据虚功原理,利用几何雅可比矩阵的目标函数,将雅可比矩阵的转置乘以端点力向量,求出平衡力矩。
J = geometricJacobian(twoJointRobot,q,eeName);jointTorques = J' * eeForce;fprintf("Joint torques using geometric Jacobian (Nm): [%.3g, %.3g]",jointTorques);
使用几何雅可比矩阵的关节力矩:[1.41,1.78]
空间变换力的逆动力学
使用另一种方法,通过计算与空间转换到基础框架的端点力的逆动力学来计算平衡力矩。
r = tform2trvec(Tee);fbase_ee = [cross(r,[fx fy fz])' + [nx;ny;nz]; fx;fy;fz];fext = -externalForce(twoJointRobot, eeName, fbase_ee);jointTorques2 = inverseDynamics(twoJointRobot, q, [], [], fext);fprintf("Joint torques using inverse dynamics (Nm): [%.3g, %.3g]",jointTorques2)
采用逆动力学的关节力矩(Nm): [1.41, 1.78]
末端执行器力逆动力学
坐标系(fee_ee)中表示末端执行器力,而不是将端点力在空间上转换到基坐标系中。将力矩和线性力向量转换到末端执行器的坐标系中。
然后,为externalForce函数指定该力和当前配置。从这个力矢量计算逆动力学。
eeLinearForce = Tee \ [fx;fy;fz;0];eeMoment = Tee \ [nx;ny;nz;0];fee_ee = [eeMoment(1:3); eeLinearForce(1:3)];fext = -externalForce(twoJointRobot,eeName,fee_ee,q);jointTorques3 = inverseDynamics(twoJointRobot, q, [], [], fext);fprintf("Joint torques using inverse dynamics (Nm): [%.3g, %.3g]",jointTorques3);
采用逆动力学的关节力矩(Nm): [1.41, 1.78]
如果觉得《计算力矩——计算关节力矩以平衡端点力和力矩》对你有帮助,请点赞、收藏,并留下你的观点哦!