IRB 1600-6/1.45 ABB机器人正解逆解计算

  • 一、参考文章
  • 二、改进DH参数获取
  • 三、fk推导
  • 四、ik推导
  • 五、测试验证
    • 关节空间验证
  • 附录-代码部分

一、参考文章

最近在项目中,需要通过笛卡尔空间已知点的位置求解机器人关节空间的状态,最终选择最优方式到达目标点。实验室正好有ABB机器人,型号为IRB 1600-6/1.45。
方法步骤:
1、获取机器人DH参数
2、fk、ik代码
3、robotstudio验证

abb dh参数获取:
dh参数1
dh参数2

参考视频:哔哩哔哩,强烈推荐
台大机器人运动学

fk-ik计算推导参考:
fk-ik2
fk_ik2

二、改进DH参数获取

在上文链接中,按照链接1、2所述,获取到的DH参数应为MDH,其获取结果如下图所示,但是通过最终验证,只有欧拉角计算正确,空间位置并不正确。

后续通过其他途径获取相关改进DH参数,见下述内容,如有需要,见私信。

三、fk推导

根据上述链接,建立相关坐标系,建立过程如下图所示;

以课程中示例所示,第i-1与第i杆之间坐标经历α(i-1),a(i-1),θ(i),d(i)。该方法为改进DH参数。其中:
α(i-1) 表示第i-1坐标系z轴经旋转后与第i坐标系z轴平行,逆时针为正;
a(i-1) 表示经过上述操作后的第i-1坐标系z轴与第i坐标系z轴异面直线距离;
θ(i)表示经过上述操作后的第i-1坐标系x轴经旋转后与第i坐标系x轴平行;
d(i) 表示经过上述操作后的i-1坐标系与第i坐标系之间偏移距离。

注意初始坐标系与末尾坐标系中参数,具体见推荐课程。
参考fk-ik2链接中图片,对ABB六轴机器人建立对应的坐标系,轻易可得:


可得ABB中对应的MDH为,具体型号见技术参数:

最终变换公式如下图所示,T的左上角为以哪一个坐标系作为基准。将上表中数带入下图公式,最终可以得到机器人正解。

最终,将变换矩阵转换为XYZABC格式,只需将旋转矩阵转换为欧拉角即可。

四、ik推导

针对ik推导,具体推导公式不详细列出,最终结果存在多解,为下图所示;


懒得写了,抽时间再写,依据上述链接中计算后续的theta。

五、测试验证

打开robotstudio,建立机器人工程,打开虚拟示教器,随意设定一个位姿,分别记录笛卡尔空间坐标与关节空间状态,如下图所示,分别进行fk ik计算。

最终得到位姿如下图所示:
可以看出fk、ik计算正确,为了验证其他关节状态是否正确,分别移动虚拟示教器,让关节状态满足其余七个状态,记录笛卡尔坐标。

关节空间验证

大概位姿,非准确,只是测试是否准确:
第2组、


第3组、第4组中第五轴超出量程范围;
第5组:

第6组


第7组、第8组中二轴的超出量程范围;

综上,可以验证abb机器人正解及逆解的正确性;

附录-代码部分

#include <iostream>
#include <cmath>
#include <vector>
#include <Eigen/core>
#include <cmath>
using namespace std;
const double pi = 3.14159265397932384626433;//MDH参数
vector<double> joints_alpha = { 0, -90, 0, 90, -90, 90 };
vector<double> joints_a = { 0, a1, -a2, -0, 0, 0 };
vector<double> joints_d = { d1, 0, 0, d4, 0, d6 };
vector<double> joints_theta = { 0, 90, 0, 0, 0, 0 };
//MDH参数-矩阵
Eigen::Matrix4d dh_matrix(double alpha, double a, double d, double theta);//旋转矩阵转换为欧拉角
vector<double> computeEularAngles(Eigen::Matrix4d & R, bool israd);//欧拉角转换为旋转矩阵 xyzabc
Eigen::Matrix4d computeTrans(vector<double> pos);//fk计算
vector<double> fk_robot(vector<double>joints_alpha, vector<double> joints_a, vector<double> joints_d, vector<double> joints_theta);//ik计算
vector<vector<double>> ik_robot(Eigen::Matrix4d trans);int main()
{vector<double> temp_theta = { 20.24,14.44,24.48,-22.07,26.14,-84.27 };//关节空间表示vector<double> pos = { 773.17,273.55,730.15,-60.93,-14.71,-155.71 };//笛卡尔空间表示//fk vector<double> theta1;for (int i = 0; i < joints_theta.size(); i++){theta1.push_back(joints_theta[i]+ temp_theta[i]);}auto rst = fk_robot(joints_alpha, joints_a, joints_d, theta1);cout << "笛卡尔空间表示:\n"<<"x: "<<rst[0] << "\ty: " << rst[1] << "\tz:" << rst[2] << "\tA: " << rst[3] << "\tB: " << rst[4] << "\tC: " << rst[5] << endl;//ik计算auto test = computeTrans(pos);auto joint=ik_robot(test);cout << "关节空间表示:" << endl;for (int i = 0; i < joint.size(); i++){for (int j = 0; j < joint[i].size(); j++)  cout << "theta"+ to_string(j)+":   "<<joint[i][j] << "\t";cout << "\n";}system("pause");return 0;
}

IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解相关推荐

  1. 改进DH参数之IRB1200

    建立连杆坐标系的步骤 找出各个关节轴,画出轴线延长线(一定要延长,如IRB1200的轴1和轴4) 轴i和轴i+1的交点(或公垂线与轴i的交点)作为连杆坐标系{i}的原点 规定Zi轴方向 规定Xi轴方向 ...

  2. MATLAB实现已知DH参数的正运动方程求解

    具体代码: clear; clc; syms theta2;syms theta3;syms theta4;syms theta5; syms l1;syms l2;syms l3;SDH=[ 0 0 ...

  3. 空间二连杆机器人标准DH法和改进DH法建系实例

    本文旨在针对一个简单的空间二连杆机器人,分别采用标准DH法和改进DH法对其进行建系 1. 空间二连杆机器人构型如下: 2. 标准DH法建系如下: 标准DH参数表如下: 启动Matlab的机器人工具箱: ...

  4. 【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

    目录 1 前言 2 两种建模方法步骤与应用 2.1标准DH法 2.2改进DH法 最后附上所有代码如下: 1 前言 DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数 ...

  5. myCobot pro 机械臂(4)正向运动学——改进DH表示法(开发环境:python)

    我只能说,写这篇博客太艰难了--一定要沉住耐心--这个型号的机械臂与官方给的手册里面的参数是有出入的-- 感谢<台大机器人学课程><机器人学之运动学笔记[3]-- 机械臂DH表示法+ ...

  6. (4)基于UR5的DH参数建模实例

    一.基于改进的DH参数建模法: 1.CAD模型及连杆坐标系的建立: 注:按照严格意义上的改进DH参数定义,x1y1z1应该是与x0y0z0重合的.但是这里会出现其他问题,所以x1y1z1的原点与x2y ...

  7. 浅谈DH参数(以华数机器人为例)

    1.DH参数说明 欧几里得空间中的直角坐标系由三个两两相交且相互垂直的轴构成:X 轴,Y轴和 Z轴.因此,一个三维直角坐标系有六个变换自由度:沿 X,Y,Z 轴的平移自由度:绕 X,Y,Z 轴的旋转自 ...

  8. 遨博协作机器人ROS开发 - 遨博E5 DH参数SolidWorks建模

    目录 1.实训目标 2.实训环境 3.实操展示 4.知识储备 5.任务实施 6.任务拓展 7.课堂小结 8.课后练习 1.实训目标 2.实训环境 ※主机系统版本:Windwos10 64位: ※处理器 ...

  9. matlab mdh模型,6轴机器人DH建模、仿真、正逆解代码

    一.模型 二.MDH模型 使用修改DH模型.改进DH模型与标准DH模型主要区别在于末端,改进DH并没有建到工具坐标系,这里将4.5.6轴的坐标系都建在同一点,因此机器人连杆的参数只需要4个值a1.a2 ...

最新文章

  1. 3D Point Cloud Library install
  2. requests + BeautifulSoup + json
  3. mysql docker自动化_docker自动化部署
  4. Path does not chain with any of the trust anchors
  5. Qt创建工程及导入资源图片
  6. Java知识积累-基础篇
  7. java混淆of_java – 是否有任何级别的混淆可以“欺骗”instanceof?
  8. 蚂蚁课堂-第四期-基于springcloud构建微服务电商项目_阿里巴巴29个屌炸天的开源项目,你用过几个?附编程资料!!!...
  9. Zabbix Server安装部署
  10. input框背景设置透明
  11. 非线性调频信号matlab仿真,线性调频信号回波仿真
  12. 计算机职业素养论文1500字,提升道德素养论文_职业素养论文2000字_工程师职业素养结课论文1500字...
  13. 李开复:如何设计你的年度计划
  14. iOS复习中有关SDWebImage可能知识点总结
  15. ANSI转义序列详解
  16. 面对这样的网络状况我真的醉了
  17. 钛资本研究院:5G时代,SD-WAN将何去何从?
  18. 计算器模拟器中的情怀——Free42简介
  19. Java小白修炼手册--第五阶段--SpringBoot框架( day01)
  20. wsctf.exe病毒专杀

热门文章

  1. ios 证书加轻松签名多开VX 工具
  2. Linux网络配置IP地址(初学Linux网络简单配置)
  3. 华三通信布局智能家居 借“魔术家”抢占市场
  4. mysql authentication_MySQL数据库之MySQL 8.0 安装时 Authentication Method
  5. TD3学习算法,reward到后期开始减小
  6. 【Linux】进程基础知识
  7. 在phpstudy8上新配置的ThinkPHP5项目,因apache服务没有打开重写、伪静态,报错的解决方案
  8. 金蝶服务器怎么部署应用,金蝶应用服务器的装配部署
  9. 机器学习sklearn(7)朴素贝叶斯分类
  10. 数据结构:图(三) 图的应用