1、机械臂工具位姿计算理论
机器人的首要功能之一是能够计算它所持的夹具(或未夹持夹具)相对于规范坐标系的位姿,也就是说需要计算工具坐标系{T}相对于工作台坐标系{S}的变换矩阵。只要通过运动学方程计算出
,就可以应用第二章所述的笛卡尔变换计算{T}相对于{S}的变换矩阵。求解一个简单的变换方程,得出:
方程3-18在某些机器人系统中称为WHERE函数,用它可计算手臂的位置。对于图3-28的情况,WHERE的输出是轴销相对于工作台顶角处的位姿。
方程3-18是广义运动学方程。根据连杆的几何形状,由基座(可看成一个固定连杆)的广义变换矩阵(
)和另一端的执行器坐标变换矩阵(
)可以计算运动学方程。这些附加的变换可以包括工具的偏距和转角,且适用于任意固定坐标系。
2、AUBOPE I5机械臂仅添加工具位置数据
I5机械臂正解计算结果:
3、只有工具位置的计算
以mm为单位。
double j[6] = {-4.670867*DEG_TO_ARC, 33.841753*DEG_TO_ARC, 146.829943*DEG_TO_ARC, 25.152904*DEG_TO_ARC, 90.289842*DEG_TO_ARC, -48.170107*DEG_TO_ARC};
Eigen::Vector3d euler_angle(10*DEG_TO_ARC, 20*DEG_TO_ARC, 30*DEG_TO_ARC);
// 使用Eigen库将欧拉角转换为旋转矩阵
Eigen::Matrix3d R;
R = Eigen::AngleAxisd(euler_angle[2], Eigen::Vector3d::UnitZ()) *
Eigen::AngleAxisd(euler_angle[1], Eigen::Vector3d::UnitY()) *
Eigen::AngleAxisd(euler_angle[0], Eigen::Vector3d::UnitX());
cout << "R is :\n" << R << std::endl;
Eigen::MatrixXd tool_pos(3,1);
tool_pos(0,0)= 10;
tool_pos(1,0)= 20;
tool_pos(2,0)= 30;
Eigen::MatrixXd homogeneous(1,4);
homogeneous(0,0)=0;
homogeneous(0,1)=0;
homogeneous(0,2)=0;
homogeneous(0,3)=1;
Eigen::Matrix <double, </double,3, 4> m3x4;
Eigen::Matrix <double, </double,4, 4> m4x4;
m3x4 << R, tool_pos;
cout << "m3x4 is :\n" << m3x4 << std::endl;
m4x4 << m3x4, homogeneous;
cout << "m4x4 is: \n" << m4x4 << std::endl;
Eigen::Matrix4d tool_pose;
tool_pose = T06*m4x4;
cout << "tool_pose is: \n" << tool_pose << std::endl;
4、工具有位置和姿态变换的计算