运动学移植的问题
码中一个SDH表定义的构型似乎有问题,但是对后面的计算并没有影响,后面的计算中并没有访问dh表中的d和a参数
如下图所示6dof_kinematics.cpp文件中tmp_DH_matrix定义的SDH构型
将上面的构型用matlab绘制出来如下图所示
`
% 清除环境
clear all; close all; clc;
% 注意:Link的参数顺序为 [theta d a alpha] L1 = Link([0 0.550 0.180 -pi/2]); L2 = Link([-pi/2 0 0.680 0 ]); L3 = Link([pi/2 0.165 0 pi/2]); % L3 = Link([pi/2 0 -0.165 pi/2]); % L3的DH参数应该定义成这样 L4 = Link([0 0.842 0 -pi/2]); L5 = Link([0 0 0 pi/2]); L6 = Link([0 0.12 0 0 ]); % 创建机器人模型,将所有链节按顺序组合 SDH_robot = SerialLink([L1 L2 L3 L4 L5 L6], 'name', 'SDHRobot'); view(3)
% SDH_robot.plot([0 0 0 0 0 0]);
% 设置机器人绘图参数(可选) SDH_robot.display
SDH_robot.teach([0 -pi/2 pi/2 0 0 0]);`
D_ELBOW参数和示意图中描述的不同
启用上面matlab代码中的注释,将L3定义为 L3 = Link([pi/2 0 -0.165 pi/2]);
虽然对后面的计算没有影响,应该定义为
float tmp_DH_matrix[6][4] = {
// theta d a alpha
{0.0f, armConfig.L_BASE, armConfig.D_BASE, -(float)M_PI_2},
{-(float)M_PI_2, 0.0f, armConfig.L_ARM, 0.0f},
{(float)M_PI_2, 0.0f, -armConfig.D_ELBOW, (float)M_PI_2},
{0.0f, armConfig.L_FOREARM, 0.0f, -(float)M_PI_2},
{0.0f, 0.0f, 0.0f, (float)M_PI_2},
{0.0f, armConfig.L_WRIST, 0.0f, 0.0f}
};Source: peng-zhihui/Dummy-Robot