5_机械臂工具位姿计算理论及代码实现验证

1、机械臂工具位姿计算理论

 机器人的首要功能之一是能够计算它所持的夹具(或未夹持夹具)相对于规范坐标系的位姿,也就是说需要计算工具坐标系{T}相对于工作台坐标系{S}的变换矩阵。只要通过运动学方程计算出028722af7088624a37460aa93c3dfbab.png,就可以应用第二章所述的笛卡尔变换计算{T}相对于{S}的变换矩阵。求解一个简单的变换方程,得出:

21a45c10d90397e1818452385b5c6c20.png

方程3-18在某些机器人系统中称为WHERE函数,用它可计算手臂的位置。对于图3-28的情况,WHERE的输出是轴销相对于工作台顶角处的位姿。

方程3-18是广义运动学方程。根据连杆的几何形状,由基座(可看成一个固定连杆)的广义变换矩阵(34be847a5daeeda6d4e2717d8480984f.png)和另一端的执行器坐标变换矩阵(0ea63446cef342e9d463c04405b877f2.png)可以计算运动学方程。这些附加的变换可以包括工具的偏距和转角,且适用于任意固定坐标系。

1402561b2cf076be22e45d8376f5b330.png

2、AUBOPE  I5机械臂仅添加工具位置数据    

217b4f17940f6e5014402e9a835301d9.png

I5机械臂正解计算结果:

df006fc780bd19fbc6f78ab3b10c2985.png

b80004e38d8dfc8b2acd8d88edac7329.png

39bfd2dd8eb4b71d071d2bb46ebc7233.png

3、只有工具位置的计算

   以mm为单位。

   根据笔记《3_机械臂位姿变换计算过程代码》,如果已知工具点相对于腕部坐标系{W}(法兰中心)的位姿,通过pos_trans可直接计算出工具点相对于基坐标系{B}的位姿,本次不使用该方法。而是根据正解的计算结果和工具点相对于腕部坐标系{W}(法兰中心)的位姿去计算。 

以之前i5机械臂正解计算为基础,新添加代码如下:  

    

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;

    

计算结果如下:  

8ae2740f0da70de34510c8853a587a39.png

4、工具有位置和姿态变换的计算

2ba6e14af53e5dbd6efea2d6056098c9.png

e6f7812a7c18c520abb9145dc36fc7c5.png

4f0519f59a879db73ad25220f0353a29.png

如需完整工程,可在公众号后台留言“机械臂带工具位姿计算”。    

欢迎关注:

d862951ac46f743b32d3d719cfe3a637.png

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值