Сгенерируйте крутящие моменты, чтобы сбалансировать силу конечной точки, действующую на корпус исполнительного элемента конца плоского робота. Чтобы вычислить объединенные крутящие моменты с помощью различных методов, используйте geometricJacobian
и inverseDynamics
возразите функциям для rigidBodyTree
модель робота.
twoJointRigidBodyTree
робот является 2D плоским роботом. Объединенные настройки выводятся как вектор-столбцы.
twoJointRobot = twoJointRigidBodyTree("column");
Сила конечной точки eeForce
вектор-столбец с комбинацией линейной силы и момент, действуя на корпус исполнительного элемента конца ("tool"
). Обратите внимание на то, что этот вектор описывается в основной координатной системе координат и показан ниже.
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);
Используя принцип виртуальной работы [1], найдите балансирующийся крутящий момент с помощью geometricJacobian
возразите функции и умножению транспонирования якобиана вектором силы конечной точки.
J = geometricJacobian(twoJointRobot,q,eeName);
jointTorques = J' * eeForce;
fprintf("Joint torques using geometric Jacobian (Nm): [%.3g, %.3g]",jointTorques);
Joint torques using geometric Jacobian (Nm): [1.41, 1.78]
Используя другой метод, вычислите балансирующийся крутящий момент путем вычисления обратной динамики с силой конечной точки, пространственно преобразованной к базовой системе координат.
Пространственно преобразование ключа от системы координат исполнительного элемента конца до базовой системы координат означает проявлять новый ключ в системе координат, которая, оказывается, располагает с базовой системой координат на пробеле, но является все еще зафиксированным корпусом в-конец-исполнительного-элемента; этот новый ключ оказывает то же влияние как исходный ключ, проявленный в ee начале координат. В рисунке ниже, и конечная точка линейная сила и момент соответственно, и и пространственно преобразованные силы и моменты, соответственно. В отрывке ниже, fbase_ee
пространственно преобразованный ключ.
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)
Joint torques using inverse dynamics (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);
Joint torques using inverse dynamics (Nm): [1.41, 1.78]
[1] Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Дифференциальная кинематика и помехи. Робототехника: Моделирование, Планируя и Управление, 105-160.
[2] Гарри Асада и Джон Леонард. 2.12 Введение в Робототехнику. Осень 2005 года. Глава 6 Массачусетский технологический институт: MIT OpenCourseWare, https://ocw.mit.edu. Лицензия: Creative Commons "SA NC".