当前位置: 首页 > article >正文

概念——二连杆与三连杆解算

https://zhuanlan.zhihu.com/p/161348413

跟着这位大佬学的,侵权删除

计划:先行理解概念以及推演过程,然后自行推导一遍(确认理解),之后思考如何实际调用,目前在第一步

目录

01-二连杆

1-正解算

2-微分运动学(雅可比)

3-逆运动学解算

02-三连杆

1-正解算

2-微分运动学

3-逆运动学解算


01-二连杆

1-正解算

通过两个连杆的长度,角度,解算出最终终点的位置

function [x,y] = kin2(q1,q2,A)

a = A(1);
b = A(2);
x = a*cos(q1)+b*cos(q1+q2);
y = a*sin(q1)+b*sin(q1+q2);

end

这个函数 `kin2(q1, q2, A)` 实现了二连杆系统的正运动学。它的输入是关节角度 `q1` 和 `q2`,以及连杆长度数组 `A`(其中 `A(1)` 是第一连杆的长度,`A(2)` 是第二连杆的长度)。通过这些参数,函数计算并返回末端点的笛卡尔坐标 `x` 和 `y`。

具体来说,函数利用三角函数 `cos` 和 `sin` 来计算末端点的水平(`x`)和垂直(`y`)位置。

通过简单的三角函数,解算出最终x,y的坐标值

2-微分运动学(雅可比)

function [J2] = dKin2(q1,q2,A)

a = A(1);
b = A(2);

J2 = zeros(2)
J2(1,1) = -a*sin(q1)-b*sin(q1+q2);
J2(1,2) = -b*sin(q1+q2);
J2(2,1) = a*cos(q1)+b*cos(q1+q2);
J2(2,2) = b*cos(q1+q2);

end

雅可比矩阵(Jacobian Matrix)是用于描述一个多变量函数的微分矩阵,在机器人学中,它用于表示机器人末端速度与关节速度之间的关系。通过雅可比矩阵,可以计算关节空间的微小变化如何影响末端执行器的位置和方向。它在运动学、动力学和控制算法中非常重要,特别是在求解机械臂的速度、加速度以及力矩控制等问题时,雅可比矩阵提供了一种有效的数学工具。

在第一步的基础上,添加了对x,y对q1,q2做了全微分,表示角度的微小变动对坐标的影响

3-逆运动学解算

function [q1,q2] = iKin2(x,y,A)

a = A(1);
b = A(2);

q0 = atan2(y./x);
a0 = (x.^2+y.^2).^0.5;

temp = (x.^2+y.^2+a.^2-b.^2)./(2*a0.*a);
q1   = -acos(temp)+q0;

temp = (x.^2+y.^2-a.^2+b.^2)./(2*a0.*b);
q2   = acos(temp)+q0-q1;

end

通过公式计算出q1与q2

02-三连杆

1-正解算

function [x,y,theta] = kin3(q1,q2,q3,A)

a = A(1);
b = A(2);
c = A(3);

x = a*cos(q1)+b*cos(q1+q2)+c*cos(q1+q2+q3);
y = a*sin(q1)+b*sin(q1+q2)+c*sin(q1+q2+q3);
theta = q1+q2+q3;

end

也是通过基本的三角函数,解得最终的x,y,和朝向

2-微分运动学

function [J3] = dKin3(q1,q2,q3,A)

a = A(1);
b = A(2);
c = A(3);

J3 = zeros(3)
J3(1,1) = -a*sin(q1)-b*sin(q1+q2)-c*sin(q1+q2+q3);
J3(1,2) = -b*sin(q1+q2)-c*sin(q1+q2+q3);
J3(1,3) = -c*sin(q1+q2+q3);

J3(2,1) = a*cos(q1)+b*cos(q1+q2)+c*cos(q1+q2+q3);
J3(2,2) = b*cos(q1+q2)+c*cos(q1+q2+q3);
J3(2,3) = c*cos(q1+q2+q3);

J3(3,3) = 1;
J3(3,3) = 1;
J3(3,3) = 1;

end

3-逆运动学解算

function [q1,q2,q3] = iKin3(x,y,theta,A)

a = A(1);
b = A(2);
c = A(3);

xx = x-c*cos(theta);
yy = y-c*sin(theta);
AA = [a,b];

[q1,q2] = iKin2(xx,yy,AA);
q3 = theta - q1 -q2;


end

明天进行解算的想法思考


http://www.kler.cn/a/301702.html

相关文章:

  • Ubuntu22.04LTS 部署前后端分离项目
  • w039基于Web足球青训俱乐部管理后台系统开发
  • SpringBoot如何集成WebSocket
  • 37.超级简易的计算器 C语言
  • 《C语言程序设计现代方法》note-5 数组
  • 【Hadoop实训】Hive 数据操作②
  • VS2019界面介绍
  • vue3+ant design vue动态实现级联菜单~
  • Gradle和Maven
  • 第四部分:1---文件内核对象,文件描述符,输出重定向
  • Unity基本操作
  • 前端封装组件可视化库
  • 第15-05章:获取运行时类的完整结构
  • 【AcWing】871. 约数之和
  • Spring Security 快速开始
  • centos7安装MySQL5.7.44
  • Docker Swarm管理(Docker技术集群与应用)
  • k8s的配置
  • 【网络安全】漏洞挖掘之CVE-2019-9670+检测工具
  • 如何使用Flask渲染模板
  • 比 GPT-4 便宜 187 倍的Mistral 7B (非广告)
  • 明基相机sd卡格式化还能恢复数据吗?可以这样操作
  • 漫谈设计模式 [16]:中介者模式
  • L3学习打卡笔记
  • QT进行音频录制
  • elementUI中el-form 嵌套el-from 如何进行表单校验?