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

这篇具有很好参考价值的文章主要介绍了IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、参考文章

最近在项目中,需要通过笛卡尔空间已知点的位置求解机器人关节空间的状态,最终选择最优方式到达目标点。实验室正好有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,其获取结果如下图所示,但是通过最终验证,只有欧拉角计算正确,空间位置并不正确。
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解

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

三、fk推导

根据上述链接,建立相关坐标系,建立过程如下图所示;
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解

以课程中示例所示,第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六轴机器人建立对应的坐标系,轻易可得:

IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
可得ABB中对应的MDH为,具体型号见技术参数:
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
最终变换公式如下图所示,T的左上角为以哪一个坐标系作为基准。将上表中数带入下图公式,最终可以得到机器人正解。
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
最终,将变换矩阵转换为XYZABC格式,只需将旋转矩阵转换为欧拉角即可。

四、ik推导

针对ik推导,具体推导公式不详细列出,最终结果存在多解,为下图所示;
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
懒得写了,抽时间再写,依据上述链接中计算后续的theta。

五、测试验证

打开robotstudio,建立机器人工程,打开虚拟示教器,随意设定一个位姿,分别记录笛卡尔空间坐标与关节空间状态,如下图所示,分别进行fk ik计算。
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
最终得到位姿如下图所示:
可以看出fk、ik计算正确,为了验证其他关节状态是否正确,分别移动虚拟示教器,让关节状态满足其余七个状态,记录笛卡尔坐标。
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解

关节空间验证

大概位姿,非准确,只是测试是否准确:
第2组、
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
第3组、第4组中第五轴超出量程范围;
第5组:
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解

第6组
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
IRB 1600-6/1.45 ABB 改进DH参数计算正解逆解
第7组、第8组中二轴的超出量程范围;

综上,可以验证abb机器人正解及逆解的正确性;文章来源地址https://www.toymoban.com/news/detail-431335.html

附录-代码部分

#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参数计算正解逆解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人修正DH参数(MDH)和标准DH(SDH)参数

    1.1.1 连杆坐标系定义 (a) 运动链中间位置连杆坐标系{ i {i} i }的定义 固连在连杆i上的固连坐标系称为坐标系{ i i i } O i O_i O i ​ 原点:关节轴i和i+1的交点或关节轴i和i+1公垂线与关节轴i的交点 Z ^ i hat{Z}_i Z ^ i ​ 轴:关节轴 i i i X ^ i hat{X}_i X ^ i ​ 轴:沿 Z ^ i hat{Z}_i Z ^ i ​

    2024年03月14日
    浏览(40)
  • 【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

    DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,即3个用来描述位置另外3个用来描述姿态。而DH参数法只需要4个参数,列出DH参数表并带入变换矩阵中可以轻易的得到机械手末端和基

    2024年02月02日
    浏览(42)
  • 浅谈DH参数(以华数机器人为例)

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

    2024年02月05日
    浏览(23)
  • MATLAB - 使用运动学 DH 参数构建机械臂

           使用 Puma560® 机械手机器人的 Denavit-Hartenberg (DH) 参数,逐步建立刚体树形机器人模型。在连接每个关节时,指定其相对 DH 参数。可视化机器人坐标系,并与最终模型进行交互。 DH 参数定义了每个刚体通过关节与其父体连接的几何形状。这些参数遵循四种变换惯例:

    2024年01月16日
    浏览(31)
  • (4)基于UR5的DH参数建模实例

    1、CAD模型及连杆坐标系的建立: 注:按照严格意义上的改进DH参数定义,x1y1z1应该是与x0y0z0重合的。但是这里会出现其他问题,所以x1y1z1的原点与x2y2z2的原点重合。所以,实际建模时要灵活运用定义。  DH参数表如下: MATLAB中验证:      标准DH参数建模的连杆坐标系是在连

    2024年02月11日
    浏览(29)
  • 机器人学DH参数及利用matlab符号运算推导

    重新复习了一下机器人学DH参数,并且利用matlab符号运算进行了推导,验证了公式。 图中的 坐标系定义 : 坐标系 i {i} i 的 z z z 轴 z i z_i z i ​ 和关节轴线 i i i 共线,指向任意规定。 坐标系 i {i} i 的 x x x 轴 x i x_i x i ​ 和 a i a_i a i ​ 重合,由关节 i i i 指向关节 i + 1 i+1 i

    2024年02月02日
    浏览(35)
  • Matlab 机器人工具箱 (一)DH参数和正逆运动学

    作者为大三学生,本博客为边学习边使用,如有错误,请见谅。 在文章结束附加代码。 前置坐标系对应改进版:modified 后置坐标系对应标准版:standard 因为学习过程中大部分为前置坐标系,故本文仅讨论前置坐标系。 用的最习惯的是如下的代码: 参数‘alpha’代表扭转角

    2024年02月02日
    浏览(41)
  • 符号三角形-计算机算法设计与分析【1600+字解析 dfs全排列 列举情况】【题意分析】【算法分析】【思路是怎么来的】【过程是什么】

    下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。 在一般情况下,符号三角形的第一行有n个符号。符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。 题意分析 也就是 给

    2024年02月03日
    浏览(31)
  • Qt音视频开发45-音视频类结构体参数的设计

    视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结构体参数的获取和设置单独提供了函数,参阅海康大华等大

    2024年02月05日
    浏览(57)
  • 计算机二级Python基本操作题-序号45

    示例格式如下: 苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓 统计各类型的数量,从数量多到少的顺序输出类型及对应数量,以英文冒号分隔,每个类型一行。输出结果保存在考生文件夹下,命名为“PY202.txt”。输出参考格式如下: 芒果:4 草莓:3 苹果:2 香蕉:1 示例格

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包