Matlab 机器人工具箱 创建机器人
文章目录
- 1 创建机器人的几种方法
- 1.1 方法1
- 1.2 方法2
- 1.3 方法3
- 1.4 方法4
- 1.5 方法5
- 1.6 方法6
- 2 定义Link属性
- 3 查看Link属性
1 创建机器人的几种方法
1.1 方法1
% theta d a alpha sigma
>> L1=Link([0 1 0.5 0 0],'standard')L1 =
Revolute(std): theta=q, d=1, a=0.5, alpha=0, offset=0
>> L2=Link([0 1 0 0 0],'standard')L2 =
Revolute(std): theta=q, d=1, a=0, alpha=0, offset=0
>> R = SerialLink([L1 L2],'name','myrobot')R = myrobot:: 2 axis, RR, stdDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 1| 0.5| 0| 0|
| 2| q2| 1| 0| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
1.2 方法2
%% STD-DH参数
%定义连杆的D-H参数
%连杆偏移
d1 = 398;
d2 = -0.299;
d3 = 0;
d4 = 556.925;
d5 = 0;
d6 = 165;
%连杆长度
a1 = 168.3;
a2 = 650.979;
a3 = 156.240;
a4 = 0;
a5 = 0;
a6 = 0;
%连杆扭角
alpha1 = pi/2;
alpha2 = 0;
alpha3 = pi/2;
alpha4 = -pi/2;
alpha5 = pi/2;
alpha6 = 0;
%建立机器人模型
% theta d a alpha
L1=Link([0 d1 a1 alpha1]);
L2=Link([0 d2 a2 alpha2]);L2.offset = pi/2;
L3=Link([0 d3 a3 alpha3]);
L4=Link([0 d4 a4 alpha4]);
L5=Link([0 d5 a5 alpha5]);
L6=Link([0 d6 a6 alpha6]);
%限制机器人的关节空间
L1.qlim = [(-165/180)*pi,(165/180)*pi];
L2.qlim = [(-95/180)*pi, (70/180)*pi];
L3.qlim = [(-85/180)*pi, (95/180)*pi];
L4.qlim = [(-180/180)*pi,(180/180)*pi];
L5.qlim = [(-115/180)*pi,(115/180)*pi];
L6.qlim = [(-360/180)*pi,(360/180)*pi];
%连接连杆,机器人取名为myrobot
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','myrobot');
robot = myrobot:: 6 axis, RRRRRR, stdDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 398| 168.3| 1.5708| 0|
| 2| q2| -0.299| 650.979| 0| 1.5708|
| 3| q3| 0| 156.24| 1.5708| 0|
| 4| q4| 556.925| 0| -1.5708| 0|
| 5| q5| 0| 0| 1.5708| 0|
| 6| q6| 165| 0| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
1.3 方法3
clc
clear all
close all
deg = pi/180;L1= Revolute('d', 0, 'a', 0, 'alpha', 0,'modified', ...'I', [0.1183 -0.0001 0.0001;-0.0001 0.1182 0.0001;0.0001 0.0001 0.0140], ...'r', [0.0002 0.0002 0.1264], ...'m', 5.6431, ...'Jm', 2.2e-4, ...'G', 81, ...'B', 1.48e-3, ...'Tc', [0.395 -0.435], ...'qlim', [-180 180]*deg );L2 = Revolute('d', 0.06, 'a', 0, 'alpha', -pi/2,'modified', ...'I', [0.0723,0.0000,-0.0051;0.0000,0.0784,0.0000;-0.0051,0.0000,0.0169;], ...'r', [-0.0062,0.0001,0.1080], ...'m', 5.0478, ...'Jm', 2.2e-4, ...'G', 121, ...'B', .817e-3, ...'Tc', [0.126 -0.071], ...'qlim', [-105 105]*deg );
L3 = Revolute('d', -0.004, 'a', 0.332, 'alpha', 0, 'modified', ...'I', [0.4263,0.0000,-0.0072;0.0000,0.4334,0.0001;-0.0072,0.0001,0.0191], ...'r', [-0.0131,0.0001,0.2402], ...'m', 5.7542, ...'Jm', 2.2e-4, ...'G', 81, ...'B', 1.38e-3, ...'Tc', [0.132, -0.105], ...'qlim', [-225 45]*deg );L4 = Revolute('d', -0.056, 'a', 0, 'alpha', pi/2, 'modified', ...'I', [0.0821,0.0000,-0.0314;0.0000,0.1257,0.0001;-0.0314,0.0001,0.0451], ...'r', [-0.0850,0.0003,0.1540], ...'m', 3.0870, ...'Jm', 2.2e-4, ...'G', 81, ...'B', 71.2e-6, ...'Tc', [11.2e-3, -16.9e-3], ...'qlim', [-110 110]*deg);
L5 = Revolute('d', 0.050, 'a', 0, 'alpha', -pi/2, 'modified', ...'I', [0.0235,0.0000,-0.0002;0.0000,0.0253,0.0000;-0.0002,0.0000,0.0045], ...'r', [0.0001,0.0002,0.0982], ...'m', 2.0459, ...'Jm', 2.2e-4, ...'G', 81, ...'B', 82.6e-6, ...'Tc', [9.26e-3, -14.5e-3], ...'qlim', [-115 115]*deg );
L6 = Revolute('d', -0.050, 'a', 0, 'alpha', pi/2, 'modified', ...'I', [0.0684,0.0000,0.0001;0.0000,0.0696,-0.0001;0.0001,-0.0001,0.0047], ...'r', [-0.0111,-0.0003,0.1366], ...'m', 2.6317, ...'Jm', 2.2e-4, ...'G', 51, ...'B', 36.7e-6, ...'Tc', [3.96e-3, -10.5e-3], ...'qlim', [-180 180]*deg );
robot=SerialLink([L1,L2,L3,L4,L5,L6],'name','VIPER7','comment','LL'); %SerialLink类函数
robot = VIPER7:: 6 axis, RRRRRR, modDH, slowRNE - LL;
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 0| 0| 0| 0|
| 2| q2| 0.06| 0| -1.5708| 0|
| 3| q3| -0.004| 0.332| 0| 0|
| 4| q4| -0.056| 0| 1.5708| 0|
| 5| q5| 0.05| 0| -1.5708| 0|
| 6| q6| -0.05| 0| 1.5708| 0|
+---+-----------+-----------+-----------+-----------+-----------+
1.4 方法4
%% 参数定义
clear;
close all;
clc;%角度转换
angle=pi/180; %转化为角度制%D-H参数表
theta1 = 0; D1 = 0.4; A1 = 0.025; alpha1 = pi/2; offset1 = 0;
theta2 = pi/2;D2 = 0; A2 = 0.56; alpha2 = 0; offset2 = 0;
theta3 = 0; D3 = 0; A3 = 0.035; alpha3 = pi/2; offset3 = 0;
theta4 = 0; D4 = 0.515; A4 = 0; alpha4 = pi/2; offset4 = 0;
theta5 = pi; D5 = 0; A5 = 0; alpha5 = pi/2; offset5 = 0;
theta6 = 0; D6 = 0.08; A6 = 0; alpha6 = 0; offset6 = 0;%% DH法建立模型,关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动),'standard':建立标准型D-H参数
L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')
L(2) = Link([theta2, D2, A2, alpha2, offset2], 'standard')
L(3) = Link([theta3, D3, A3, alpha3, offset3], 'standard')
L(4) = Link([theta4, D4, A4, alpha4, offset4], 'standard')
L(5) = Link([theta5, D5, A5, alpha5, offset5], 'standard')
L(6) = Link([theta6, D6, A6, alpha6, offset6], 'standard')% 定义关节范围
L(1).qlim =[-180*angle, 180*angle];
L(2).qlim =[-180*angle, 180*angle];
L(3).qlim =[-180*angle, 180*angle];
L(4).qlim =[-180*angle, 180*angle];
L(5).qlim =[-180*angle, 180*angle];
L(6).qlim =[-180*angle, 180*angle];%% 显示机械臂(把上述连杆“串起来”)
robot0 = SerialLink(L,'name','six');
robot0 = six:: 6 axis, RRRRRR, stdDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 0.4| 0.025| 1.5708| 0|
| 2| q2| 0| 0.56| 0| 0|
| 3| q3| 0| 0.035| 1.5708| 0|
| 4| q4| 0.515| 0| 1.5708| 0|
| 5| q5| 0| 0| 1.5708| 0|
| 6| q6| 0.08| 0| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
1.5 方法5
clear;
clc;
L(1) = Link('standard','d', 100, 'a', 0, 'alpha', pi/2,'offset',0,'qlim',[0,0]/180*pi);
L(2) = Link('revolute','d', 0, 'a', 420, 'alpha', 0,'offset',pi/2,'qlim',[-90,90]/180*pi);
L(3) = Link('revolute','d', 0, 'a', 480, 'alpha', 0,'offset',-pi/2,'qlim',[-90,130]/180*pi);
L(4) = Link('revolute','d', 0, 'a', 840, 'alpha', 0,'offset',pi/2,'qlim',[-120,90]/180*pi);bot = SerialLink(L, 'name', '4-dof');
bot = 4-dof:: 6 axis, RRRRRR, stdDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 100| 0| 1.5708| 0|
| 2| q2| 0| 420| 0| 1.5708|
| 3| q3| 0| 480| 0| -1.5708|
| 4| q4| 0| 840| 0| 1.5708|
| 5| q5| 0| 0| 1.5708| 0|
| 6| q6| 0.08| 0| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
1.6 方法6
clear,clc,close all;
format compact
syms q1 q2 dq1 dq2 ddq1 ddq2 m1 m2 L1 Lc1 Lc2 Izz1 Izz2 g real
L(1)=RevoluteMDH('d',0,'a',0,'alpha',0);
L(2)=RevoluteMDH('d',0,'a',L1,'alpha',0,'offset',0); %-pi/2
twolink = SerialLink(L);
twolink =
noname:: 2 axis, RR, modDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 0| 0| 0| 0|
| 2| q2| 0| L1| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
2 定义Link属性
% theta d a alpha sigma
L1=Link([0 1 0.5 0 0],'standard');
L2=Link([0 1 0 0 0],'standard');
R = SerialLink([L1 L2],'name','myrobot');
L1.a = 0.1;
L1.offset = 0.5;
L1.m = 2; %连杆质量
L1.Jm = 0.1; %电机转动惯量
L1.r = [1,0,0]; %连杆质心位置
L1.I = [0,0,0;0,0,0;0,0,2]; %连杆惯性张量
L1.qlim = [(-165/180)*pi,(165/180)*pi]; %关节限位
R.base = transl(0,0,1); %世界坐标系定为(0,0,1)
3 查看Link属性
R.n; % 连杆数
R.display(); %Link类函数,显示建立机器人DH参数
theta1=[0 -pi/2]; %机器人伸直且垂直
R.plot(theta1); %SerialLink类函数,显示机器人图像
qplot(q(:,i));grid on;title('位置');%绘制每个关节位置
qplot(qd(:,i));grid on;title('速度');%绘制每个关节速度
qplot(qdd(:,i));grid on;title('加速度');%绘制每个关节加速度
Q = robot.rne(q,qd,qdd);%获得每个时间点所需要的关节力矩
t=[0:0.01:2];
qplot(t,Q);grid on;title('关节力矩');%绘制每个关节的力矩
R.teach(); %可以自由拖动的关节角度
相关文章:
Matlab 机器人工具箱 创建机器人
文章目录 1 创建机器人的几种方法1.1 方法11.2 方法21.3 方法31.4 方法41.5 方法51.6 方法6 2 定义Link属性3 查看Link属性 1 创建机器人的几种方法 1.1 方法1 % theta d a alpha sigma >> L1Link([0 1 0.5 0 0],standard)L1 Revolute(std): thetaq, d1, a0…...

跨平台指南:在 Windows 和 Linux 上安装 OpenSSL 的完整流程
Windows安装 一:找到安装包,双击即可 https://gitee.com/wake-up-again/installation-package.git 二:按照提示,一步一步来,就可以啦 三:此界面意思是,是否想向创作者捐款,自己视情…...

JAVA请求示例获取1688商品详情数据API接口item_get-获得阿里巴巴商品详情(按关键词搜索商品列表)
要获取1688(阿里巴巴)的商品详情数据,你需要使用阿里巴巴开放平台提供的API接口。与淘宝开放平台类似,你需要先在阿里巴巴开放平台注册账号,创建应用,并获取app_key和app_secret。然后,根据阿里…...

安卓手机安装termux、kali linux及基本配置
相关阅读:Termux 高级终端安装使用配置教程 | 国光 百度安全验证 该文安装的 kali liunx 应该是简易版的,没有相关工具 一、下载安装termux 建议通过 f-droid 应用市场下载链接termux,点击即直接下载。 二、配置termux 1.更换镜像源 te…...
Python 实现海康机器人工业相机 MV-CS050-10GC 的实时显示视频流及拍照功能(实时显示视频流同时可以进行拍照)
参考链接: https://www.cnblogs.com/HanYork/p/17388506.html https://www.cnblogs.com/miracle-luna/p/16960556.html#5138211 Flask搭建流媒体服务器:使用Flask搭建一个流媒体服务器_multipart/x-mixed-replace; boundaryframe-CSDN博客...

武器大师——操作符详解(下)
目录 六、单目操作符 七、逗号表达式 八、下标引用以及函数调用 8.1.下标引用 8.2.函数调用 九、结构体 9.1.结构体 9.1.1结构的声明 9.1.2结构体的定义和初始化 9.2.结构成员访问操作符 9.2.1直接访问 9.2.2间接访问 十、操作符的属性 10.1.优先性 10.2.结合性 …...

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:Popup控制)
给组件绑定popup弹窗,并设置弹窗内容,交互逻辑和显示状态。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 popup弹窗的显示状态在onStateChange事件回调中反馈,其显…...
Python系列(20)—— 排序算法
Python中的排序算法 一、引言 排序算法是计算机科学中的基本算法之一,用于将一组数据按照特定的顺序进行排列。Python提供了多种排序算法的实现,包括内置的排序函数和手动实现的排序算法。本文将介绍几种常见的排序算法,并通过代码实例来展…...

MySQL中json类型的字段
有些很复杂的信息,我们一般会用扩展字段传一个json串,字段一般用text类型存在数据库。mysql5.7以后支持json类型的字段,还可以进行sql查询与修改json内的某个字段的能力。 1.json字段定义 ip_info json DEFAULT NULL COMMENT ip信息, 2.按…...

算法学习——GCD与欧拉函数
欧几里得GCD: GCD算法是使用辗转相除法求最大公因数的算法,简单而言就是gcd(a,b) gcd(b,a mod b) 递归写法: int Gcd(int a, int b) {if(b 0)return a;return Gcd(b, a % b); } 迭代写法: int Gcd(int a, int b) {while(b …...
40. 组合总和 II(力扣LeetCode)
文章目录 40. 组合总和 II题目描述回溯算法 40. 组合总和 II 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意ÿ…...

Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目
文章目录 安装安装JDK安装Maven安装GitNodeJS安装(可选)安装Jenkins 配置Jenkins为Jenkins更换插件源设置jenkins时区安装插件全局工具配置添加Gitee凭证Gitee项目配置 部署后端1.新建任务2.配置源码管理3.构建触发器4.到Gitee中添加WebHook5.构建环境6.…...

延迟任务基于DeyalQueue
一,延迟任务应用场景? 一般用于处理订单,将redis中的数据延迟存入数据库,实现异步存储减少DB的压力 二, 延迟任务的实现方案有很多 DelayQueue Redisson MQ 时间轮 原理 JDK自带延迟队列,基于阻塞队列…...
Linux 查询端口被占用命令
Linux 查询端口被占用命令 1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进…...

【c++】string类---标准库中的string类
1. 为什么要学习string类 1.1 C语言中的字符串 C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且…...
GO语言学习笔记(与Java的比较学习)(五)
Map 概念 map 是引用类型,可以使用如下声明: var map1 map[keytype]valuetype var map1 map[string]int 在声明的时候不需要知道 map 的长度,map 是可以动态增长的。 未初始化的 map 的值是 nil(即零值为nil)&…...

Sora:探索大型视觉模型的前世今生、技术内核及未来趋势
Sora,一款由OpenAI在2024年2月推出的创新性文生视频的生成式AI模型,能够依据文字说明,创作出既真实又富有想象力的场景视频,展现了其在模拟现实世界方面的巨大潜能。本文基于公开技术文档和逆向工程分析,全面审视了Sor…...

基于springboot实现图书馆管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现图书馆管理系统演示 摘要 电脑的出现是一个时代的进步,不仅仅帮助人们解决了一些数学上的难题,如今电脑的出现,更加方便了人们在工作和生活中对于一些事物的处理。应用的越来越广泛,通过互联网我们可以更方便地…...

MATLAB环境下基于高斯滤波器-广义拉普拉斯算子的细胞核自动检测
作为病理图像分析的基础,细胞核检测可为细胞形态、纹理等多种相关分析提供支持,对于临床诊断具有重要意义。但是细胞核的人工识别过程十分费时费力,并且不同医生之间存在主观标注差异。因此,利用计算机技术进行自动检测能够更为客…...

【探索AI】十一 深度学习之第1周:深度学习概述与基础
深度学习概述与基础 深度学习的发展历史与现状神经网络的基本原理前向传播与反向传播算法常见的激活函数与优化算法深度学习框架(如TensorFlow或PyTorch)进行基础操作 深度学习的发展历史与现状 深度学习的发展历史可以追溯到上世纪40年代,当…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...

Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...
qt 双缓冲案例对比
双缓冲 1.双缓冲原理 单缓冲:在paintEvent中直接绘制到屏幕,绘制过程被用户看到 双缓冲:先在redrawBuffer绘制到缓冲区,然后一次性显示完整结果 代码结构 单缓冲:所有绘制逻辑在paintEvent中 双缓冲:绘制…...