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

matlab机器人工具箱基础使用

资料:https://blog.csdn.net/huangjunsheng123/article/details/110630665

用vscode直接看工具箱api代码比较方便,代码说明很多

一、模型设置

1、基础效果

%采用机器人工具箱进行正逆运动学验证
a=[0,-0.3,-0.3,0,0,0];%DH参数
d=[0.05,0,0,0.06,0.05,0.04];
alp=[pi/2,0,0,pi/2,-pi/2,0];
%机器人工具箱模型,每一个L建立一个连杆,输入DH参数即可,offset是连杆的初始偏移量,此处为0
L(1) = Link('d', d(1), 'a', a(1), 'alpha', alp(1));
L(2) = Link('d', d(2), 'a', a(2), 'alpha', alp(2), 'offset', 0 );
L(3) = Link('d', d(3), 'a', a(3), 'alpha', alp(3), 'offset', 0 );
L(4) = Link('d', d(4), 'a', a(4), 'alpha', alp(4), 'offset',0);
L(5) = Link('d', d(5), 'a', a(5), 'alpha', alp(5));
L(6) = Link('d', d(6), 'a', a(6), 'alpha', alp(6));
bot = SerialLink(L,'name','rbt');%将六个连杆组合起来 
figure(1)
bot.display();%显示机器人模型
view(3)
bot.teach;

2、link的常用属性

运动学参数
%  theta        kinematic: joint angle   关节角度
%  d            kinematic: link offset   
%  a            kinematic: link length
%  alpha        kinematic: link twist   %  jointtype    kinematic: 'R' if revolute, 'P' if prismatic    关节类型
%  mdh          kinematic: 0 if standard D&H, else 1                参数类型(标准/改进)
%  offset       kinematic: joint variable offset                            关节变量偏移量(设置新零点)
%  qlim         kinematic: joint variable limits [min max]       关节变量限制范围
动力学参数
%  m            dynamic: link mass   连杆质量
%  r            dynamic: link COG wrt link coordinate frame 3x1   质心
%  I            dynamic: link inertia matrix, symmetric 3x3, about link COG.  惯性张量
%  B            dynamic: link viscous friction (motor referred)     连杆粘性摩擦
%  Tc           dynamic: link Coulomb friction                   连杆库仑摩擦
%-
%  G            actuator: gear ratio                减速比
%  Jm           actuator: motor inertia (motor referred)    电机惯量

二、运动学

1、正逆运动学

q=[1,-1,1,-1,1,1];%给定初始角度
T_rbt = bot.fkine(q);%采用机器人工具箱函数求正运动学
q_rbt = bot.ikine(T_rbt,'q0',q)%采用RTB的逆运动学计算上边得到的齐次矩阵对应的关节角度,给定初始值可以更快的收敛到给定的角度

2、雅各比矩阵

bot.jacob0()   关于绝对坐标系的雅各比矩阵
bot.jacobn()  关于工作坐标系的雅各比矩阵

三、动力学

1、查看动力学参数

bot.dyn()

2、正逆动力学

bot.nofriction()                                                     //无摩擦力动力学模型
bot.accel(角度,角速度,外力矩阵)              //计算关节加速度bot.fdyn(时间,外力矩阵)                                                                               //正动力学
bot.rne(角度,角速度,角加速度,重力加速度,输出动力要求)    //逆动力学

3、计算动力学方程

bot.gravload()    //G
bot.inertia()       //M
bot.coriolis()     //V
bot.payload()    //有效载荷

四、例子:二自由度平面机械臂

syms Ix1 Iy1 Iz1 Ix2 Iy2 Iz2
syms q1 q2 m1 m2 L1 L2
syms qd1 qd2 g 
%%%%%%%%%%%%%%%%%%%1、设置运动学参数%%%%%%%%%%%%%%%%%%%
a=[0,L1,L2];%DH参数
d=[0,0,0];
alp=[0,0,0];q = [q1,q2,0];
qd = [qd1,qd2,0];L(1) = Link('d', d(1), 'a', a(1), 'alpha', alp(1),'modified');        %'modified'代表使用改进dh法
L(2) = Link('d', d(2), 'a', a(2), 'alpha', alp(2),'modified');
L(3) = Link('d', d(3), 'a', a(3), 'alpha', alp(3),'modified');
bot = SerialLink(L,'name','rbt');                                                       %将三个连杆组合起来,形成机器人 
%%%%%%%%%%%%%%%%%%%2、设置动力学参数%%%%%%%%%%%%%%%%%%%
%质量
bot.links(1).m=m1;
bot.links(2).m=m2;
bot.links(3).m=0;
%质心
bot.links(1).r=[L1/2,0,0];
bot.links(2).r=[L2/2,0,0];
bot.links(3).r=[0,0,0];
%转动惯量
bot.links(1).I = [Ix1, Iy1, Iz1, 0, 0,0];
bot.links(2).I= [Ix2, Iy2, Iz2,0, 0,0];
bot.links(3).I = [0, 0, 0, 0, 0,0];
%重力
bot.gravity=[0;0;-g];bot.dyn();    %显示所有杆的动力学参数
%%%%%%%%%%%%%%%%%%%3、计算运动学参数%%%%%%%%%%%%%%%%%%%
T = bot.fkine(q);            %机器人正运动学,输入关节角度,输出T_e^0
J = bot.jacob0(q);         %计算雅各比矩阵,基于世界坐标的
%%%%%%%%%%%%%%%%%%%4、计算动力学参数%%%%%%%%%%%%%%%%%%%
M = bot.inertia(q);             %关节空间质量矩阵
V = bot.coriolis(q,qd);      %计算离心力和科氏力矢量,注意这里给出的是矩阵V,V*qd才等于计算出的向量V(qd)
G = bot.gravload(q);         %重力矢量
%%%%%%%%%%%%%%%%%%%5、正逆运动学%%%%%%%%%%%%%%%%%%%
%逆运动学,角度(不是微分运动学)
theta1 = bot.ikine(T,'mask',[1,1,1,0,0,0],'q0',[0,0,0]);   %T代表的是工作点的位姿,输出各个关节角度,q0是基座坐标,mask是关节小于6个时选择开启的
theta2 = bot.ikunc(T); 
%%正逆微分运动学
%%%%%%%%%%%%%%%%%%%6、正逆动力学%%%%%%%%%%%%%%%%%%%
bot_nf=bot.nofriction();   %设置没有摩擦力  %其实就是根据关节力矩和作用力矩+初始q和qd算qdd,再根据qdd更新q和qd
%句柄那里不可以用[1,2,3,4,5,6]这样赋值了,可以直接给[]就是不给力
%0.4是时间间隔,@函数句柄(函数需要特别设置,因为要解算方程),第一个qz是q0,第二个qz是qd0,5和1就是函数句柄的参数
%输出就是一系列t、q、qd[t q qd] = p560.nofriction().fdyn(0.4, @test1, qz,qz,5,1);torqfun = [0,30,6];                %设定一组关节力
qdd = bot_nf.accel(q(i,:),qd(i,:),torqfun);  %获得中间量的办法,fdyn应该调用了accelfprintf("-----------------------")
%逆动力学
tau = bot.rne(q, qd, qdd, 'gravity',[0,9.8,0],'fext',[0,0,0,0,0,0]);%fext是外力

test1.m

function tau = test1(t,q,qd,qstar,P,D)
tau=P*(qstar-q) + D*qd;
tau =[0,0,0,0,0,0];
end

相关文章:

matlab机器人工具箱基础使用

资料:https://blog.csdn.net/huangjunsheng123/article/details/110630665 用vscode直接看工具箱api代码比较方便,代码说明很多 一、模型设置 1、基础效果 %采用机器人工具箱进行正逆运动学验证 a[0,-0.3,-0.3,0,0,0];%DH参数 d[0.05,0,0,0.06,0.05,…...

利用WonderLeak进行内存泄露检测【一】

1、下载地址: WonderLeak - Visual Studio Marketplace https://www.relyze.com/ 2、WonderLeak支持vs2017 2019扩展,或者单独启动 3、https://www.relyze.com/docs/wonderleak/help/w/overview/msvc_extension1.png 4、对于二进制程序来说支持以下…...

二刷LeetCode--155. 最小栈(C++版本),思维题

思路:本题需要使用两个栈,一个就是正常栈,执行出入操作,另一个栈只负责将对应的最小值进行保存即可.每次入栈的时候,最小值栈的栈顶也需要入栈元素,不过这个元素是最小值,那么就需要进行比较,因此在getmin()的时候只需要将最小值栈的栈顶元素弹出即可.初始化的时候只需要将最小…...

进程的状态与转换

进程在其生命周期内,由于系统中各进程之间的相互制约及系统的运行环境的变化,使得进程的状态也在不断地发生变化。通常进程有以下5种状态,前三种是基础讷航的基本状态 1)运行态。进程正在处理机上运行。在单处理机机中&#xff0…...

用MariaDB创建数据库,SQL练习,MarialDB安装和使用

前言:MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQ…...

【Docker】 使用Docker-Compose 搭建基于 WordPress 的博客网站

引 本文将使用流行的博客搭建工具 WordPress 搭建一个私人博客站点。部署过程中使用到了 Docker 、MySQL 。站点搭建完成后经行了发布文章的体验。 WordPress WordPress 是一个广泛使用的开源内容管理系统(CMS),用于构建和管理网站、博客和…...

Hlang社区-前端社区宣传首页实现

文章目录 前言页面结构固定钉头部轮播JS特效完整代码总结前言 这里的话,博主其实也是今年参与考研的大军之一,所以的话,是抽空去完成这个项目的,当然这个项目的肯定是可以在较短的时间内完成的。 那么废话不多说,昨天也是干到1点多,把这个首页写出来了。先看看看效果吧:…...

【LeetCode-Medium】833. 字符串中的查找与替换

题目链接 833. 字符串中的查找与替换 标签 字符串 步骤 Step1. 初始化 ans[]&#xff1a; for (int i 0; i < s.length(); i) { // 初始化ansans[i] s[i]; }Step2. 根据 index, source, target 查找&#xff1b;如果找到&#xff0c;那么将 ans[i] 更改为 target&am…...

数据结构中公式前中后缀表达式-二叉树应用

目录 数据结构中公式前中后缀表达式-二叉树应用 数据结构中公式前中后缀表达式-二叉树应用 什么是前缀表达式、中缀表达式、后缀表达式 前缀表达式、中缀表达式、后缀表达式&#xff0c;是通过树来存储和计算表达式的三种不同方式 以如下公式为例 通过树来存储该公式&#x…...

Visual Studio 2022连接远程系统进行C/C++开发

Visual Studio被称为是宇宙最强IDE&#xff0c;以前开发Linux C/C服务器程序&#xff0c;基本上都是在Windows上使用VS编写跨平台的C/C代码&#xff0c;然后先在VS中编译、链接、调试&#xff0c;然后在Linux下编译、链接&#xff0c;再针对Linux下的特定代码进行调试。后面Vis…...

TiDB数据库从入门到精通系列之二:TiDB数据库的简介

TiDB数据库从入门到精通系列之二&#xff1a;TiDB数据库的简介 一、TiDB数据库的简介二、五大核心特性三、四大核心应用场景四、TiDB数据库与MySQL数据库的兼容性 一、TiDB数据库的简介 TiDB是开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (H…...

opencv视频截取每一帧并保存为图片python代码CV2实现练习

当涉及到视频处理时&#xff0c;Python中的OpenCV库提供了强大的功能&#xff0c;可以方便地从视频中截取每一帧并将其保存为图片。这是一个很有趣的练习&#xff0c;可以让你更深入地了解图像处理和多媒体操作。 使用OpenCV库&#xff0c;你可以轻松地读取视频文件&#xff0…...

虹科方案 | 汽车总线协议转换解决方案(二)

上期说到&#xff0c;虹科的PCAN-LIN网关在CAN、LIN总线转换方面有显著的作用&#xff0c;尤其是为BMS电池通信的测试提供了优秀的解决方案。假如您感兴趣&#xff0c;可以点击文末相关链接进行回顾&#xff01; 而今天&#xff0c;虹科将继续给大家带来Router系列在各个领域的…...

[Android] 通过JNI 让 JAVA 调用 android native 接口

前言&#xff1a; JNI (java native interface) 是一个库&#xff0c;可以让 java 代码和其他语言互动&#xff0c;比如 java 通过 JNI 调用融合了 jni库的 c/c 代码&#xff0c;注意&#xff0c;这里要求 c/c代码中必须通过链接 jni 库并按照 JNI 规范定义一套可供 JAVA 调用…...

MySQL高可用MHA

目录 前言 一、概述 二、配置免密、组从复制 三、MHA配置 四、测试 总结 前言 MySQL高可用管理工具&#xff08;MHA&#xff0c;Master High Availability&#xff09;是一个用于自动管理MySQL主从复制的工具&#xff0c;它可以提供高可用性和自动故障转移。MHA由原版的MHA工具…...

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…...

205、仿真-51单片机直流数字电流表多档位切换Proteus仿真设计(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括&#xff1a; 方案选择 单片机的选择 方案一&#xff1a;STM32系列单片机控制&#xff0c;该型号单片机为LQFP44封装&#xff0c;内部资源…...

服务器如何防止cc攻击

对于搭载网站运行的服务器来说&#xff0c;cc攻击应该并不陌生&#xff0c;特别是cc攻击的攻击门槛非常低&#xff0c;有个代理IP工具&#xff0c;有个cc攻击软件就可以轻易对任何网站发起攻击&#xff0c;那么服务器如何防止cc攻击?请看下面的介绍。 服务器如何防止cc攻击&a…...

解读注解@Value占位符替换过程

之前写过一篇关于介绍Spring占位符替换原理的博客&#xff0c;传送门 &#xff1a;Spring的占位符是怎么工作的 在这篇文章基础上&#xff0c;再介绍一下Value替换原理&#xff0c;两篇文章有一定的相关性。 继续以上一篇的工程为例&#xff0c;项目结构一样&#xff0c;这里就…...

浅谈5G技术会给视频监控行业带来的一些变革情况

5G是第五代移动通信技术&#xff0c;能够提供更高的带宽和更快的传输速度&#xff0c;这将为视频技术的发展带来大量机会。随着5G技术的逐步普及与商用&#xff0c;人们将能够享受到更加流畅的高清视频体验&#xff0c;并且5G技术还拥有更低的延迟和更高的网络容量。这些优势不…...

电池包结构仿真与力学分析指南

电池包结构仿真&#xff0c;电池包力学仿真&#xff0c;电池包CAE分析&#xff0c;新能源电池电池CAE分析&#xff0c;结构仿真&#xff0c;力学分析附带相对应的模型文件,指导书&#xff0c;可直接自己跟着做分析另外附赠完整电池包模型一、概述随着新能源汽车的飞速发展&…...

新手入门:在快马平台动手实现你的第一个ui-ux-pro-max设计页面

作为一个刚接触前端设计的新手&#xff0c;最近在InsCode(快马)平台尝试做了一个UI-UX-Pro-Max级别的登录注册页面&#xff0c;整个过程意外地顺利。这里记录下我的实践过程&#xff0c;希望能帮到同样想入门的朋友。 从零搭建页面框架 先用HTML搭建基础结构&#xff0c;包含表…...

基于西门子PLC的空压机组储气风冷机组自动控制系统:“手动自动切换、多机控制及实时监测报警系统

基于西门子plc的空压机组储气风冷机组自动控制系统 可以实现手动自动切换 三组空压机分别自动控制&#xff0c;自动检测三路压力 风冷机运行实时检测 报警查寻&#xff0c;参数设置等上周刚把车间那套跑了快十年的空压机组控制系统给换了&#xff0c;用的是西门子S7-1200&#…...

LCC-LCC无线充电恒流/恒压闭环移相控制仿真 Simulink仿真模型,LCC-LCC谐振...

LCC-LCC无线充电恒流/恒压闭环移相控制仿真 Simulink仿真模型&#xff0c;LCC-LCC谐振补偿拓扑&#xff0c;闭环移相控制 1. 输入直流电压350V&#xff0c;负载为切换电阻&#xff0c;分别为50-60-70Ω&#xff0c;最大功率3.4kW&#xff0c;最大效率为93.6% 2. 闭环PI控制&…...

Open-Shell-Menu:让Windows界面回归高效与个性化的开源解决方案

Open-Shell-Menu&#xff1a;让Windows界面回归高效与个性化的开源解决方案 【免费下载链接】Open-Shell-Menu Classic Shell Reborn. 项目地址: https://gitcode.com/gh_mirrors/op/Open-Shell-Menu 当项目经理王工在Windows 11电脑上第5次点击"所有应用"按钮…...

用快马AI一键生成数据库管理原型,告别navicat手工建表写接口

用快马AI一键生成数据库管理原型&#xff0c;告别navicat手工建表写接口 最近在开发一个员工信息管理系统时&#xff0c;我深刻体会到传统数据库管理工具的局限性。虽然navicat这类工具能帮我们可视化操作数据库&#xff0c;但每次新建项目都要手动建表、写接口&#xff0c;重…...

解决Python ssl模块与系统OpenSSL版本不一致的编译指南

1. 为什么Python的ssl模块会与系统OpenSSL版本不一致&#xff1f; 很多开发者都遇到过这样的困惑&#xff1a;明明系统已经升级了OpenSSL&#xff0c;为什么Python的ssl模块还在使用旧版本&#xff1f;这个问题其实源于Python的编译机制。Python在编译安装时&#xff0c;会将当…...

游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法

游戏服务器检测扣除消耗防算数溢出的安全判断及解决方法 数量 > (类型最大值 / 价格) 负数存在风险 价格 > (类型最大值 / 数量) || 价格 < (最小值 / 数量&#xff09; 游戏服务器在处理道具消耗时需防止数值溢出问题。当检测扣除消耗时&#xff0c;应进行双重安全判…...

前端 HTML 转 PDF

spdf 两个库转换成 PDF 文件并下载到本地。 简单说&#xff1a;它能让用户 “一键下载” 网页上的某个区域为 PDF&#xff08;比如报表、数据统计页、合同预览页等&#xff09;&#xff0c;还预留了 “水印功能” 的注释代码&#xff08;可按需启用&#xff09;。 核心依赖说…...

用Simulink+Carsim复现论文:四轮转向后轮控制5种算法对比(附模型下载)

用SimulinkCarsim复现论文&#xff1a;四轮转向后轮控制5种算法对比&#xff08;附模型下载&#xff09; 在车辆动力学与控制领域&#xff0c;四轮转向技术正逐渐从豪华车型向主流市场渗透。不同于传统的前轮转向系统&#xff0c;四轮转向通过后轮主动参与转向&#xff0c;显著…...