网站建设中 请稍后访问/seo排名优化关键词
接昨天的推文:https://editor.csdn.net/md/?articleId=139991958 ,动力学的求解通常是个相对比较复杂的过程,但现在基本上不用人工来推算求解各种公式和求解过程了,大家只需要知道其中的步骤即可,现代对于动力学问题的求解大致可以分为:数字化建模、仿真软件建模。数字化建模是指通过编程软件,如:Python、MATLAB等,可以快速搭建机器人的数字化模型,也称为动态模型,该方法对于新手不是很友好,前期需要多编程语言有一定基础,但是可以建立较为精确的模型;对于后期设计对应的控制系统也比较友好,模型接口便于调用。仿真软件建模,多体动力学的仿真软件比较多,如:ADAMS、SAMCEF、RecurDyn、SIMPACK(笔者在读研期间曾开发了一套基于Adams的机器人仿真教程可见:,最近在做活动都比较优惠哟!),这类软件得益于良好的GUI交互界面,可以快速的建立动力学模型,只要设置好各个部件的动力学参数也可以搭建出较为精确的动力学模型,但是对于基于该模型的控制系统设计不是很友好,这种软件中的接口较少,往往需要借助其他软件进行,而两个软件的相结合就会出现不可预知的BUG。除此之外,像ANSYS这类软件,可以将机器人的各个构件材料参数更加的精细化,但也带来了计算量巨幅增加,普通电脑计算缓慢,容易出现求解结果不收敛现象,笔者不是很推荐。下面我将会以MATLAB的机器人工具箱Robotics Toolbox为例来搭建机器人动力学模型,Robotics Toolbox安装教程见:
MATLAB工具箱Link类说明
Link类将保存与机器人关节和链接相关的所有信息,如运动学、参数、刚体惯性参数、电机和传动参数。
构造函数
Link # 通用构造函数。
Prismatic #标准型D-H参数构建的平移副连杆
PrismaticMDH #改进D-H参数构建的平移副连杆。
Revolute #标准D-H参数构建的旋转副连杆。
RevoluteMDH #改进D-H参数构建的旋转副连杆
信息/显示方法
display #以可读的形式打印Link参数
dyn #显示Link的动态参数
type #关节类型:'R'或'P
属性
运动学参数
theta #关节角度。
d #链接偏移。
a #连杆长度。
alpha #连杆扭转角。
Jointtype #运动副类型,转动为R;平移为P。
mdh #D-H参数类型,标准D-H为0,否则为1。
offset #关节变量偏移。
qlim #关节变量限制,[min max].
动力学参数
m #质量
r #连杆重心位置
I #转动惯量
B #粘性摩擦系数(马达相关)
Tc #库仑摩擦系数
执行机构参数
G #传动比
Jm #电机惯性
串联机器人动力学模型
各连杆D-H参数及动力学参数定义如下:
clear,clc,close all;
deg = pi/180;
%% 建立机器人DH参数,初始状态为竖直状态
L1=Link('d',0.16250,'a',0,'alpha',0,'modified',...'m',5.6431, ...'r',[0.0002 0.0002 0.1264], ...'I',[0.1183 -0.0001 0.0001; ...-0.0001 0.1182 0.0001; ...0.0001 0.0001 0.0140], ...'B',1.48e-3,...'Tc',[0.395 -0.435], ...'G',81, ...'Jm',2.2e-4, ...'qlim',[-180 180]*deg);L2=Link('d',0,'a',0,'alpha',pi/2,'offset',pi/2,'modified',...'m',5.0478, ...'r',[0.0062 0.0001 0.1080], ...'I',[0.1183 -0.0001 0.0001; ...-0.0001 0.1182 0.0001; ...0.0001 0.0001 0.0140], ...'B',0.817e-3,...'Tc',[0.126 0.071], ...'G',121, ...'Jm',2.2e-4, ...'qlim',[-145,65]*deg);L3=Link('d',0,'a',0.425,'alpha',0,'modified', ...'m',5.7542, ...'r',[-0.0131 0.0001 0.2402], ...'I',[0.4263 0.0000 -0.0072; ...0.0000 0.4334 0.0001; ...-0.0072 0.0001 0.0191], ...'B',1.38e-3,...'Tc',[0.132 -0.105], ...'G',81, ...'Jm',2.2e-4, ...'qlim',[-65,220]*deg);L4=Link('d',0.12670+0.0066,'a',0.39225,'alpha',0,'offset',pi/2,'modified', ...'m',3.0870, ...'r',[-0.0850 0.0003 0.1540], ...'I',[0.0821 0.0000 -0.0314; ...0.0000 0.1257 0.0001; ...-0.0314 0.0001 0.1540], ...'B',71.2e-6,...'Tc',[11.2e-3 -16.9e-3], ...'G',81, ...'Jm',2.2e-4, ...'qlim',[-180,180]*deg);L5=Link('d',0.09970,'a',0,'alpha',pi/2,'modified', ...'m',2.0459, ...'r',[0.0001,0.0002,0.0982], ...'I',[0.0235,0.0000,-0.0002; ...0.0000,0.0253,0.0000; ...-0.0002,0.0000,0.0045], ...'B',82.6e-3,...'Tc',[9.26e-3, -14.5e-3], ...'G',81, ...'Jm',2.2e-4, ...'qlim',[-135,135]*deg);L6=Link('d',0.09960-0.0045,'a',0,'alpha',-pi/2,'modified', ...'m',2.6317, ...'r',[-0.0111,-0.0003,0.1366], ...'I',[0.0684,0.0000,0.0001; ...0.0000,0.0696,-0.0001; ...0.0001,-0.0001,0.0047], ...'B',36.7e-6,...'Tc',[3.96e-3, -10.5e-3], ...'G',51, ...'Jm',2.2e-4, ...'qlim',[-180,180]*deg);robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','TechM');
模拟机器人关节空间从初始状态运动到[pi/2 -pi/2 pi/6 pi/12 0 0],相关关节空间的轨迹规划请见:
qz = [0 0 0 0 0 0]; %初始位姿
qn = [pi/2 -pi/2 pi/6 pi/12 0 0]; %末端位姿
% 轨迹规划
t=[0:0.01:2];
g=jtraj(qz,qn,t);
[q,qd,qdd]=jtraj(qz,qn,t);
plot(robot,q,'trail','b-') %图形演示figure
i=1:6;
subplot(2,2,1);
qplot(q(:,i));grid on;title('位置');ylabel('角度(rad)');%绘制每个关节位置
subplot(2,2,2);
qplot(qd(:,i));grid on;title('速度');ylabel('角速度(rad/s)');%绘制每个关节速度
subplot(2,2,3);
qplot(qdd(:,i));grid on;title('加速度');ylabel('角加速度(rad/s2)');%绘制每个关节加速度
Q = robot.rne(q,qd,qdd);%获得每个时间点所需要的关节力矩
subplot(2,2,4)
qplot(t,Q);grid on;title('力矩');ylabel('力矩(N*m)');
规划动画
各个关节的角度、速度、角加速度的变化情况如下:
Link其他常见使用方法
显示Link运动学参数
robot.links(1).dyn
显示Link动力学参数
robot.display()
Link的变换矩阵
robot.links(1).A(pi/6)
链路变换矩阵T = L.A(Q)是一个SE3对象,表示当链路变量Q为Denavit-Hartenberg参数THETA(转动)或D(移动)时链路帧之间的变换。
- 标准D-H参数,从前序坐标系转换到当前坐标系。
- 改进D-H参数,从当前坐标系到后序坐标系。
往期推荐
相关文章:

机器人控制系列教程之动力学建模(2)
接昨天的推文:https://editor.csdn.net/md/?articleId139991958 ,动力学的求解通常是个相对比较复杂的过程,但现在基本上不用人工来推算求解各种公式和求解过程了,大家只需要知道其中的步骤即可,现代对于动力学问题的…...

Golang | Leetcode Golang题解之第200题岛屿数量
题目: 题解: func numIslands(grid [][]byte) int {res : 0for i : 0; i < len(grid); i {for j : 0; j < len(grid[i]); j {if grid[i][j] 1 {resdfs(grid, i, j)}}}return res }func dfs(grid [][]byte, r, c int) {h, w : len(grid), len(gri…...

Linux系统启动流程
init程序类型: ①、SysV:init,centos 5之前,配置文件/etc/init.d/ ②、Upstart: init,centos 6,配置文件/etc/init.d/ /etc/init/ ③、Systemd:Systemd,centos 7,配置文件/usr/li…...

Vue 学习之 axios
目录 执行安装命令:npm install axios 使用的时候导入 axios以data,params,headers传参方式的区别 axios封装 是一个基于 promise 的 网络请求库,作用于浏览器和 node.js 中。使用Axios可以在前端项目中发送各种方式的HTTP请求…...

Python学习笔记17 -- 猜数字小游戏2
目录 一、功能函数 1、说明函数 -- 对游戏玩法及设置进行说明 2、答案函数 -- 生成答案 3、猜测函数 -- 让玩家进行猜测 4、对照函数 -- 将答案和猜测进行对照 4.1 A函数 4.2 B函数 5、结果函数 -- 判断得到结果或继续猜测 6、时间函数 -- 判断一局游戏所用时间 7、打…...

【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)
目录 一、信息安全的概念 1.1 信息安全的基本要素和范围 1.2 信息存储安全 1.3 网络安全 二、信息安全系统的组成框架 2.1 技术体系 2.2 组织机构体系 2.3 管理体系 三、 信息加解密技术 3.1 数据加密 3.2 对称加密技术 3.3 非对称加密算法 3.4 数字信封 3.5 信…...

CMMM Plus+ Calculus Update 超级游戏大作 游戏说明
资源链接 Scratch超级生命模拟游戏:CMMMPlusCalculusUpdate.sb3资源-CSDN文库 关卡编辑器 ◽️使用 WASD 移动视图。 ◽️LMB 放置单元格。 ◽️Space LMB 删除单元格。Ctrl Space LMB 删除所有相同类型的单元格。 ◽️Q / E 旋转单元格。 ◽️Z / X 在单元格类…...

Java OA系统任务协作模块
以下是一篇关于构建高效且功能丰富的OA系统任务协作模块的博客文章,采用了Spring Boot、Spring Data JPA和React等主流技术。文章不仅展示了项目的基本实现,还介绍了如何优化代码和增加新的功能,以提升系统的性能和用户体验。 --- ## 构建高…...

深入解析Maven常用命令
目录 什么是 MavenMaven 的安装与配置Maven 项目结构Maven 常用命令 mvn cleanmvn compilemvn testmvn packagemvn installmvn deploymvn sitemvn dependencymvn help 总结 什么是 Maven Maven 是由 Apache 软件基金会开发的一个项目管理和构建工具。它基于项目对象模型&…...

【Docker】镜像
目录 1. 镜像拉取 2. 镜像查询 3. 镜像导出 4. 镜像上传 5. 镜像打标签 6. 镜像上推 7. 镜像删除 8. 镜像运行及修改 8.1 在registry 节点运行 mariadb 镜像,将宿主机 13306 端口作为容器3306 端口映射 8.2 查看容器ID 8.3 进入容器 8.4 创建数据库xd_d…...

力扣最新详解5道题:两数之和三数之和四数之和
目录 一、查找总价格为目标值的两个商品 题目 题解 方法一:暴力枚举 方法二:对撞指针 二、两数之和 题目 题解 方法一:暴力枚举 方法二:哈希表法 三、三数之和 题目 题解 方法一:排序暴力枚举set去重 …...

通讯:单片机串口和电脑通讯
目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分: 相关问题: 2.单片机串口--485--485转USB--电脑 串口,芯片,转换器,设备之间的通讯的接线,都是要TX--RX, RX--TX 交叉连接。 单…...

ubuntu22.04 设置双屏
一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题,在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息,我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…...

【FPGA-常见问题及解决方案】
1、VIVADO的License无法加载:license文件必须在英文路径; 2、例程代码路径不能过长,也不允许有中文路径!!! 3、明明加载了license,license也正确,例程无法完成综合:这种情…...

【第3章】MyBatis-Plus持久层接口之Service Interface(上)
文章目录 前言一、save1. 示例(save)2. 示例(saveBatch)3. 示例(saveBatch 指定批次大小) 二、saveOrUpdate1.示例(saveOrUpdate)2.示例(saveOrUpdateBatch)3…...

Nodemon的入门及使用
nodemon 是一个工具,通过在检测到目录中的文件更改时自动重新启动 Node.js 应用程序来帮助开发基于 Node.js 的应用程序。它非常适合在开发环境中使用。以前,我们开发一个 Node 后端服务时,每次更改文件,都需要手动重启服务才能生…...

cesium 实现三维无人机航拍过程实景效果
需求背景 需要实现一个动态的三维无人机航拍过程实景效果 代码开发中,迭代功能待续... 解决效果 cesium 实现三维无人机航拍过程实景效果 index.vue <template><div><el-button class"btn" click"start">开始</el-butt…...

Rust:使用 Warp 框架编写基于 HTTPS 的 RESTful API
在 Rust 中使用 Warp 框架编写基于 HTTPS 的 RESTful API,你需要首先设置好 TLS/SSL 证书以启用 HTTPS。以下是一个基本的步骤指南: 步骤 1: 安装 Rust 和 Cargo 确保你已经安装了 Rust 和 Cargo。你可以从 Rust 官网 下载并安装 Rust。 步骤 2: 创建…...

测试开发工程师需要掌握什么技能?
测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架,以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师,你需要掌握以下技能: 1. 编程技能: 作为测试开发工…...

SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器
是Spring中用于解析和评估SpEL(Spring Expression Language)表达式的解析器,SpEL是一种强大且灵活的表达式语言,广泛用于Spring框架中,以便在运行时解析和评估表达式 主要功能 1.解析和评估表达式:spelExpressionParser可以解析复杂的表达式,并在运行时对其进行评估; 2.访问…...

C#学习系列之DataGrid无故添加空行
C#学习系列之DataGrid无故添加空行 前言解决前解决后总结 前言 采用别人的轮子,想在基础上改界面,但是copy后,无论怎么样都会有空行,实在是绑定数据的输入没有任何赋值。 解决前 绑定的数据中输入三组数据,但是没有第…...

详解Alibaba Cloud Linux 3.2104 LTS 64位镜像操作系统
Alibaba Cloud Linux 3.2104是阿里云推出的云原生Linux发行版Alibaba Cloud Linux 3版本,64位操作系统,由阿里云提供免费长期维护更新和漏洞修复,镜像Alibaba Cloud Linux 3.2104 LTS 64位操作系统性能很不错,针对ECS云服务器进行…...

springboot异常产生原因
DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …...

Redis 7.x 系列【8】数据类型之哈希(Hash)
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 HSET2.2 HGET2.3 HDEL2.4 HEXISTS2.5 HGETALL2.6 HKEYS2.7 HLE…...

jetson 安装 Rustdesk失败
报错: rustdesk depends on gstreamer1.0-pipewire; however: Package gstreamer1.0-pipewire is not installed. 原因: 对于rustdesk,其1.2.3 版需要gstreamer1.0-pipewire软件包,但是此软件包仅适用于 Ubuntu 22.04、22.10、23.04 和 2…...

Vue原生写全选反选框
效果 场景:Vue全选框在头部,子框在v-for循环内部。 实现:点击全选框,所有子项选中,再次点击取消;子项全选中,全选框自动勾选,子项并未全选,全选框不勾选;已选…...

typescript学习回顾(三)
今天继续来分享ts的相关概念,枚举,ts模块化,接口和类型兼容性 ts的扩展类型:类型别名,枚举,接口和类 枚举 基础概念 枚举通常用于约束某个变量的取值范围。当然字面量和联合类型配合使用,也可…...

算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生
仕途生涯开始:洪武二十三年(1390年),夏元吉因精通《诗经》,由湖广乡荐参加礼部组织的会试,虽未中举,但他并未气馁,反而更加努力地学习。洪武二十四年(1391年)…...

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)
环境:OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接:【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法,是一种基于颜色空间分布(彩色图像的像素值)的图像分割…...

读AI新生:破解人机共存密码笔记13有益机器
1. 标准模型 1.1. 我们能控制一个从外太空来的超级智能实体的概率几乎为零 1.2. 随着根据标准模型设计的机器变得更加智能,以及它们的行动范围遍及全球,关闭机器这种方法越来越不可行 1.2.1. 机器将会追求它们自己的目标,无论目标错得多么…...