article-六轴机械臂(带抓手)运动学分析+轨迹规划

news2024/11/17 2:28:43

1正运动学分析

采用标准的D-h法进行机械腿模型分析:

D-h表如下

(2)通过(1)求解出机器人各位姿变换矩阵后,求解机器人手臂变换矩阵

**

**

。通过matlab 计算,写出机器人末端位置。

正运动学分析

根据D-H表规定得到如下变换矩阵为:

根据DH参数求解变换矩阵的函数trans

%输入JD,即6个关节变量的值,求解正运动方程

function [ T ] = trans( theta, d, a, alpha )

T =[

cos(theta), -sin(theta)*cos(alpha), sin(theta)*sin(alpha), a*cos(theta);

sin(theta), cos(theta)*cos(alpha), -cos(theta)*sin(alpha), a*sin(theta);

0, sin(alpha), cos(alpha), d;

0, 0, 0, 1 ];

end

正向运动学

function [ T06 ] = fkine(JD)

%JD为输入的1*6的数组,代表6个关节变量

% trans( theta, d, a, alpha )

if nargin<2; end

T01 =trans( JD(1), 0.0955, 0.007, pi/2 );

T12 =trans( JD(2)+pi/2, 0, 0.135, 0);

T23 =trans( JD(3)-pi/2, 0, 0.145, 0);

T34 =trans( JD(4), 0, 0.0535, pi/2 );

T45 =trans( JD(5), 0.176, 0, -pi/2 );

T06 =T01*T12*T23*T34*T45;

end

3机器人模型建立

所设计的机器人由多个连杆机构组成,其关节类型包括旋转关节和移动关节两种。利用Matlab中机器人仿真工具箱Robotics Tool中Link和SerialLink两个函数可建立机器人模型[]。其中,函数表达式如下:

式中,theta为关节变量;_d_为偏置距离;alpha为扭转角;_a_为连杆长度;sigma表示关节类型(0为旋转关节,1为移动关节);前四个参数分别对应表1中的


具体程序编制如下:

Clear %情况matlab软件的数据缓存,避免影响本次运行

Clc %清空运行窗口的数据

L(1) = Link( ‘d’, 0.0955, ‘a’ , 0.007 , ‘alpha’, pi/2 ,‘offset’,0);

L(2) = Link( ‘d’, 0 , ‘a’ ,0.135 , ‘alpha’, 0, ‘offset’,pi/2);

L(3) = Link( ‘d’, 0 , ‘a’ , 0.145 , ‘alpha’,0 ,‘offset’,-pi/2);

L(4) = Link( ‘d’, 0 , ‘a’ ,0.0535 , ‘alpha’, pi/2 ,‘offset’,0);

L(5) = Link( ‘d’, 0.176 , ‘a’ , 0 , ‘alpha’, -pi/2 ,‘offset’,0);

robot = SerialLink(L, ‘name’ , ‘机械臂’); %建立四自由度模型

% RRP.plotopt = {‘workspace’,[-10,10,-10,10,-10,10],‘tilesize’,10}; %设置模型空间大小和地砖大小

robot.teach; %画出模型并进行调控

robot.display(); %显示建立的机器人的DH参数robot.plot([0 0 0 0 0])%输入一定参数后机器人图形

运行上述程序,即可得到码垛机器人模型如图 3-3

图 3-3机器臂模型

4机器臂正运动验证

init_ang=[0,-pi/4,0,-pi/5,0,0];%p1起点

disp(‘工具箱求解得到旋转矩阵如下:’)

robot.fkine(init_ang)

%%

%自定义矩阵

disp(‘通过变换矩阵求解旋转矩阵如下:’)

fkine(init_ang)

robot.plot([0,-pi/4,0,-pi/5,0,0])

如图所示:任意选取某点工具箱仿真姿态结果与变换矩阵计算结果一致。验证了正运动学方程的正确性。

轨迹规划程序

L(1) = Link( ‘d’, 0.0955, ‘a’ , 0.007 , ‘alpha’, pi/2 ,‘offset’,0);

L(2) = Link( ‘d’, 0 , ‘a’ ,0.135 , ‘alpha’, 0, ‘offset’,pi/2);

L(3) = Link( ‘d’, 0 , ‘a’ , 0.145 , ‘alpha’,0 ,‘offset’,-pi/2);

L(4) = Link( ‘d’, 0 , ‘a’ ,0.0535 , ‘alpha’, pi/2 ,‘offset’,0);

L(5) = Link( ‘d’, 0.176 , ‘a’ , 0 , ‘alpha’, -pi/2 ,‘offset’,0);

% L(6) = Link( ‘d’, 0.134 , ‘a’ ,0 , ‘alpha’, 0 ,‘offset’,0);

robot = SerialLink(L, ‘name’ , ‘机械臂’); %建立四自由度模型

% RRP.plotopt = {‘workspace’,[-10,10,-10,10,-10,10],‘tilesize’,10}; %设置模型空间大小和地砖大小

robot.teach; %画出模型并进行调控

robot.display(); %显示建立的机器人的DH参数

% robot.plot([0 0 0 0 0])%输入一定参数后机器人图形

%利用五次多项式轨迹规划

T1=transl(0.3,-0.3,0.5)%起点

q1=robot.ikunc(T1);

T2=transl(-0.3,-0.2,0.4)%终点

q2=robot.ikunc(T2);

[qt1,qt2,qt3]=jtraj(q1,q2,50);

hold on

robot.plot(qt1, ‘trail’,‘-b’)

qt=robot.fkine(qt1)

T=transl(qt);

plot3(T(:,1),T(:,2),T(:,3) ,‘*b’);%输出末端轨迹

需要三维模型+程序+报告可私聊我

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/899658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫框架- feapder + 爬虫管理系统 - feaplat 的学习简记

文章目录 feapder 的使用feaplat 爬虫管理系统部署 feapder 的使用 feapder是一款上手简单&#xff0c;功能强大的Python爬虫框架 feapder 官方文档 文档写的很详细&#xff0c;可以直接上手。 基本命令&#xff1a; 创建爬虫项目 feapder create -p first-project创建爬虫 …

【ES5和ES6】数组遍历的各种方法集合

一、ES5的方法 1.for循环 let arr [1, 2, 3] for (let i 0; i < arr.length; i) {console.log(arr[i]) } // 1 // 2 // 32.forEach() 特点&#xff1a; 没有返回值&#xff0c;只是针对每个元素调用func三个参数&#xff1a;item, index, arr &#xff1b;当前项&#…

D2: 基于go实现的一个DSL 绘图工具 高手效率神器

在b站看视频的时候, gin框架作作者appleboy 一直在推荐一个绘图工具 大佬认证 肯定有其过人之处 我去各网站收集(chao)了一些关于D2的东西 D2 是一种声明式流程图的领域特定语言 (DSL)&#xff0c;声明式只需要描述你想要的流程图即可&#xff0c;它就会自动生成对应的图像。…

Mac OS下应用Python+Selenium实现web自动化测试

在Mac环境下应用PythonSelenium实现web自动化测试 在这个过程中要注意两点&#xff1a; 1.在终端联网执行命令“sudo pip install –U selenium”如果失败了的话&#xff0c;可以尝试用命令“sudo easy_install selenium”来安装selenium; 2.安装好PyCharm后新建project&…

初体验深信服的云桌面

昨天上午深信服的工程师到这边来安装服务器&#xff0c;本想看一下具体的安装&#xff0c;但是上午有其他事情&#xff0c;没有看成&#xff0c;下午他给我讲了一下具体的使用&#xff0c;我体验了一下深信服的云桌面。 总体感觉管理员的维护和客户的使用都比较方便。 但是可能…

听GPT 讲Prometheus源代码--util

Prometheus的util目录包含了一些通用的工具模块,主要包含以下文件: buckets.go 这个文件定义了一些常用的指标采样值范围(Quantile buckets),如:0.001,0.01,0.05,0.5,0.9,0.95,0.99,0.999等。这些buckets常用于计算指标的分位数线。 regex.go 这个文件定义了一些正则表达式匹配…

Vue 2 访问元素和组件

通过Vue 2 组件基础一文的学习&#xff0c;我们知道组件之间可以通过传递props或事件来进行通信。 但在一些情况下&#xff0c;我们使用下面的方法将更有用。 1.访问根实例 根实例可通过this.$root获取。 我们在所有子组件中都可以像上面那样访问根实例&#xff0c;它就像一…

利用Jackson封装常用的JsonUtil工具类

在实际开发中&#xff0c;我们对于 JSON 数据的处理&#xff0c;通常有这么几个第三方工具包可以使用&#xff1a; gson&#xff1a;谷歌的fastjson&#xff1a;阿里巴巴的jackson&#xff1a;美国FasterXML公司的&#xff0c;Spring框架默认用的 由于以前一直用习惯了阿里的…

OpenLayers实战,OpenLayers判断点位是否与多边形有交集,判断车辆是否在电子围栏内

专栏目录: OpenLayers实战进阶专栏目录 前言 OpenLayers实战,OpenLayers判断点位是否与多边形有交集,可以用于判断车辆是否在电子围栏内,船舶是否在锚泊位中等常用案例。 在实际GIS地图业务开发中,一般是不会在前端实现是否在电子围栏这种计算的。 如果有人让你在前端实…

为什么TCP连接使用使用三次握手规则而不是两次?

TCP使用的是三报文握手来建立连接 当使用两报文握手建立连接时会发生什么样的情况呢&#xff1f; 如上图所示 假设一个TCP连接请求在网络中拥堵了&#xff0c;在规定的时间内未能到达TCP服务器&#xff0c;因此客户端重传该TCP连接请求 在双方建立连接并传输数据后&#xff0c…

基于CentOS7.9安装部署docker(简洁版)

安装部署 1基于官方脚本安装&#xff08;不推荐 不能自行选择版本&#xff09; 官方文档&#xff1a;https://docs.docker.com/engine/install/centos/ 2 使用yum安装 阿里云文档&#xff1a;docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 # ste…

git拉取远程代码到本地

目录 一、介绍 二、拉取代码到idea操作步骤 三、打通前后端连接的项目例子&#xff08;额外篇&#xff09; 一、介绍 本文是介绍如何从国内码云&#xff08;Gitee&#xff09;或者国外GitHub上面拉起代码项目&#xff08;若依&#xff09;到本地的&#xff0c;是通过idea202…

算法竞赛入门【码蹄集新手村600题】(MT1180-1200)C语言

算法竞赛入门【码蹄集新手村600题】(MT1180-1200&#xff09;C语言 目录MT1181 圆包含MT1182 圆相交MT1183 矩形包含MT1184 矩形相交MT1185 while循环MT1186 do-while循环MT1187 累加和MT1188 平均值MT1189 正数负数的和MT1190 分数乘法MT1191 减半MT1192 翻倍MT1193 偶数的平方…

Spring事件监听机制

前言 事件监听机制其原理就是观察者模式&#xff0c;而观察者模式又被称为发布-订阅模式。 观察者模式将有依赖关系的对象抽象为了观察者和主题两个不同的角色&#xff0c;多个观察者同时观察一个主题&#xff0c;两者只通过抽象接口保持松耦合状态&#xff0c;这样双方可以相…

C++11并发与多线程笔记(10) future其他成员函数、shared_future、atomic

C11并发与多线程笔记&#xff08;10&#xff09; future其他成员函数、shared_future、atomic 1、std::future 的成员函数1.1 std::future_status 2、std::shared_future&#xff1a;也是个类模板3、std::atomic原子操作3.1 原子操作概念引出范例&#xff1a;3.2 基本的std::at…

CTFhub-sql注入-绕过空格过滤

常用绕过空格过滤的方法&#xff1a; /**/、()、%0a 1.判断是否存在sqli注入 1 1/**/union/**/select/**/11 1/**/union/**/select/**/12 如果1/**/union/**/select/**/11的显示结果与1/**/union/**/select/**/12的显示结果不一样&#xff0c; 与1的结果一样说明存在注入…

JMeter中利用Jython运行Python代码

介绍 Jython是Python和Java的结合。Jython语法和Python一样&#xff0c;不但可以使用Python的库&#xff0c;而且还可以调用Java的库。结合了Python和Java的优点&#xff0c;也就是说Jython既有动态语言的灵活性&#xff0c;又可以用静态语言的强大的类库。其实&#xff0c;我…

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …

Android6:片段和导航

创建项目Secret Message strings.xml <resources><string name"app_name">Secret Message</string><string name"welcome_text">Welcome to the Secret Message app!Use this app to encrypt a secret message.Click on the Star…

周末时间在家重新做了一个电脑系统,手艺没有丢!!!

有个朋友的电脑抱怨自己太卡&#xff0c;有缘见过几次他的电脑&#xff0c;确实哦&#xff0c;10年的老笔记本了&#xff0c;关键还是日本买的东芝t552,配置4G500G&#xff0c;昨天晚上朋友提过来的时候&#xff0c;大吃已经&#xff0c;还以为是电磁炉呢。看下面的图片就知道了…