二连杆机械臂逆运动学的推导与应用
本例通过MATLAB®和Symbolic Math Toolbox™推导并应用于双连杆机械臂的逆运动学。
实例对关节参数和末端执行器位置进行了符符化定义,计算并可视化了运动学正解和逆解,得到了系统的雅可比矩阵,可用于机械臂的运动仿真。金宝搏官方网站
步骤1:定义几何参数
将机器人的连杆长度、关节角度和末端执行器位置定义为符号变量。
信谊l1l2theta_1theta_2XE叶
为机器人的链接长度指定值。
L1 = 1;L2 = 0.5;
步骤2:定义末端执行器的X坐标和Y坐标
定义末端执行器的X和Y坐标为关节角的函数
.
XE_RHS = L_1*cos(theta) + L_2*cos(theta +theta)
XE_RHS =
YE_RHS = l1 *sin(theta_1) + l2 *sin(theta_1+theta_2)
YE_RHS =
将符号表达式转换为MATLAB函数。
XE_MLF = matlabFunction“var”,[L_1 L_2 theta_1 theta_2]);YE_MLF = matlabFunction(YE_RHS,“var”,[L_1 L_2 theta_1 theta_2]);
步骤3:计算和可视化正运动学
正运动学将关节角度转换为末端执行器位置:
.给定特定的关节角值,使用正运动学计算末端执行器的位置。
指定关节角度的输入值为
而且
.
T1_degs_row = linspace(0,90,100);T2_degs_row = linspace(-180,180,100);[tt1_degs,tt2_degs] = meshgrid(t1_degs_row,t2_degs_row);
将角度单位从角度转换为弧度。
Tt1_rads = deg2rad(tt1_degs);Tt2_rads = deg2rad(tt2_degs);
用MATLAB函数计算X坐标和Y坐标XE_MLF而且YE_MLF,分别。
X_mat = XE_MLF(L1,L2,tt1_rads,tt2_rads);Y_mat = YE_MLF(L1,L2,tt1_rads,tt2_rads);
使用辅助函数可视化X和Y坐标plot_XY_given_theta_2dof.
plot_XY_given_theta_2dof (tt1_degs、tt2_degs X_mat、Y_mat (L1 + L2))
步骤4:求逆运动学
逆运动学将末端执行器位置转换为关节角:
.由正运动学方程求逆运动学。
定义正运动学方程。
Xe_eq = xe == xe_rhs;Ye_eq = ye = ye_rhs;
解出
而且
.
S = solve([XE_EQ YE_EQ], [theta_1 theta_2])
S =带字段的结构:Theta_1: [2x1 sym] theta_2: [2x1 sym]
结构年代的多个解决方案金宝搏官方网站
而且
.给出对的解金宝搏官方网站
.
简化(S.theta_1)
ans =
给出对的解金宝搏官方网站
.
简化(S.theta_2)
ans =
本例通过MATLAB®和Symbolic Math Toolbox™推导并应用于双连杆机械臂的逆运动学。 实例对关节参数和末端执行器位置进行了符符化定义,计算并可视化了运动学正解和逆解,得到了系统的雅可比矩阵,可用于机械臂的运动仿真。金宝搏官方网站
将机器人的连杆长度、关节角度和末端执行器位置定义为符号变量。 为机器人的链接长度指定值。 定义末端执行器的X和Y坐标为关节角的函数 将符号表达式转换为MATLAB函数。 正运动学将关节角度转换为末端执行器位置: 指定关节角度的输入值为 将角度单位从角度转换为弧度。 用MATLAB函数计算X坐标和Y坐标 使用辅助函数可视化X和Y坐标 逆运动学将末端执行器位置转换为关节角: 定义正运动学方程。 解出 结构
给出对的解金宝搏官方网站
步骤1:定义几何参数
信谊
L1 = 1;L2 = 0.5;
步骤2:定义末端执行器的X坐标和Y坐标
XE_RHS = L_1*cos(theta) + L_2*cos(theta +theta)
XE_RHS =
YE_RHS = l1 *sin(theta_1) + l2 *sin(theta_1+theta_2)
YE_RHS =
XE_MLF = matlabFunction
步骤3:计算和可视化正运动学
T1_degs_row = linspace(0,90,100);T2_degs_row = linspace(-180,180,100);[tt1_degs,tt2_degs] = meshgrid(t1_degs_row,t2_degs_row);
Tt1_rads = deg2rad(tt1_degs);Tt2_rads = deg2rad(tt2_degs);
X_mat = XE_MLF(L1,L2,tt1_rads,tt2_rads);Y_mat = YE_MLF(L1,L2,tt1_rads,tt2_rads);
plot_XY_given_theta_2dof (tt1_degs、tt2_degs X_mat、Y_mat (L1 + L2))
步骤4:
Xe_eq = xe == xe_rhs;Ye_eq = ye = ye_rhs;
S = solve([XE_EQ YE_EQ], [theta_1 theta_2])
S =
简化(S.theta_1)
ans =
简化(S.theta_2)
ans =
将解转换为稍后可以使用的金宝搏官方网站MATLAB函数。的函数 利用逆运动学进行计算 定义X和Y坐标的网格点。 计算角度 将角度单位从弧度转换为角度。 一些输入坐标,如(X,Y) =(1.5,1.5)超出了末端执行器的工作空间。逆运动学解可以产生一些需要修正的虚theta值金宝搏官方网站。修正虚的theta值。 想象角度 系统雅可比矩阵的定义是:
TH1_MLF{1} = matlabFunction(S.theta_1(1),
步骤5:计算和可视化逆运动学
[xmat,ymat] = meshgrid(0:0.01:1.5,0:0.01:1.5);
tmp_th1_mat = TH1_MLF{1}(L1,L2,xmat,ymat);tmp_th2_mat = TH2_MLF{1}(L1,L2,xmat,ymat);
Tmp_th1_mat = rad2deg(Tmp_th1_mat);Tmp_th2_mat = rad2deg(Tmp_th2_mat);
th1_mat = NaN(大小(tmp_th1_mat));th2_mat = NaN(size(tmp_th2_mat));Tf_mat = imag(tmp_th1_mat) == 0;Th1_mat (tf_mat) = real(tmp_th1_mat(tf_mat));Tf_mat = imag(tmp_th2_mat) == 0;Th2_mat (tf_mat) = real(tmp_th2_mat(tf_mat));
plot_theta_given_XY_2dof (xmat ymat、th1_mat th2_mat)
步骤6:计算系统雅可比矩阵
the_J =雅可比矩阵([XE_RHS YE_RHS],[theta_1 theta_2])
the_J =