机器人工具箱学习(一)

一、机器人工具箱介绍

   机器人工具箱是由来自昆士兰科技大学的教授Peter Corke开发的,被广泛用于机器人进行仿真(主要是串联机器人)。该工具箱支持机器人一些基本算法的功能,例如三维坐标中的方向表示,运动学、动力学模型和轨迹生成。
   学习该工具箱较为经典的书籍有以下两本,其中第一本是Peter Corke教授自己编写的,为英文版,第二本是国内学者翻译的。
在这里插入图片描述

二、机器人工具箱的下载和安装

2.1 机器人工具箱下载

   可以在官方网站下载安装文件(点这个超链接即可跳转:机器人工具箱下载官网),如下所示:
在这里插入图片描述
   下载的文件名为 RTB10.4.mltbx,如下所示:
在这里插入图片描述

2.2 机器人工具箱安装

  在matlab中打开刚刚存放RTB10.4.mltbx文件的目录,然后双击RTB10.4.mltbx文件:
在这里插入图片描述
在这里插入图片描述
  下载完毕之后,输入指令:ver,便可以查看我们所下载的机器人工具箱版本,同时也进一步确认该工具箱是否安装成功
在这里插入图片描述
在这里插入图片描述

三、机器人学中的一些数学基础

3.1 三维空间中的位置和姿态

3.1.1 位置描述

  我个人简单的认为,所谓的位置描述就是点在某一个坐标系中的坐标。
在这里插入图片描述

上图中,空间中任意一点在坐标系 { A } \left\{ A \right\} {A}中的表示为:
在这里插入图片描述
其中, p x 、 p y 、 p z p _ { x }、p _ { y }、p _ { z } pxpypz分别表示该点在坐标系 { A } \left\{ A \right\} {A}中的三个坐标。MATLAB中,利用plot3( )函数可以绘制三维空间中的一个点。例如绘制空间中点(1,2,3):plot3(1,2,3,'*');
在这里插入图片描述

3.1.2 姿态描述

  我个人认为,所谓的姿态描述就是表示空间中某一个物体的方位。
在这里插入图片描述

如上图所示,空间中存在一个刚体,与该刚体固连的坐标系 { B } \left\{ B \right\} {B}。该刚体相对于坐标系 { A } \left\{ A \right\} {A}的姿态用姿态变换矩阵(也叫旋转矩阵) B A R _{B}^{A}\mathbf{\mathit{R}} BAR
在这里插入图片描述

式中, x A {\mathbf{\mathit{x}}}_{A} xA y A {\mathbf{\mathit{y}}}_{A} yA z A {\mathbf{\mathit{z}}}_{A} zA分别表示坐标系 { A } \left\{ A \right\} {A}三个坐标轴在某一个坐标系下的表示; x B {\mathbf{\mathit{x}}}_{B} xB y B {\mathbf{\mathit{y}}}_{B} yB z B {\mathbf{\mathit{z}}}_{B} zB分别表示坐标系 { B } \left\{ B \right\} {B}三个坐标轴在某一个坐标系下的表示; A x B ^ { A }x_{ B } AxB A y B ^ { A } y _ { B } AyB A z B ^ { A } z _ { B } AzB表示坐标系 { B } \left\{ B \right\} {B}三个坐标轴在坐标系 { A } \left\{ A \right\} {A}上的表达。
  当分别绕坐标轴 x 、 y 、 z x、y、z xyz旋转角度 θ \theta θ时,姿态变换矩阵 R R R可以分别表示为:
在这里插入图片描述

  机器人工具箱中提供rotx( )roty( )rotz( )函数来计算绕单个坐标轴旋转的姿态矩阵(注意:这些个函数默认角度制,但好像有的版本时默认弧度制度,注意辨别一下):
在这里插入图片描述

  使用trplot( )函数可以图形化显示相应的坐标系,例如显示一个绕基坐标系的 x x x轴旋转60°的坐标系,如下图所示:
在这里插入图片描述

  使用tranimate( )函数可以显示坐标系旋转的动画,如下图所示:
在这里插入图片描述

3.1.3 函数总结

(1)绕单个坐标轴旋转的旋转矩阵:rotx( )、roty( )、rotz( )函数
  ● rotx( ):R=rotx( θ \theta θ)表示围绕 x x x轴旋转角度 θ \theta θ所得到的旋转矩阵,函数返回一个3x3的矩阵;
  ● roty( ):R=roty( θ \theta θ)表示围绕 y y y轴旋转角度 θ \theta θ所得到的旋转矩阵,函数返回一个3x3的矩阵;
  ● rotz( ):R=rotz( θ \theta θ)表示围绕 z z z轴旋转角度 θ \theta θ所得到的旋转矩阵,函数返回一个3x3的矩阵;

(2)绘制坐标系:trplot( )函数
 trplot( )函数的语法:trplot(R, options)
  ● trplot®:绘制由旋转矩阵 R R R得到的坐标系;
  ● trplot(T):绘制由齐次变换矩阵 T T T表示的坐标系;
 trplot( )函数的options项有其他的用法
在这里插入图片描述

(3)动画展示函数:tranimate( )函数
  ● tranimate(x1, x2, options):展示3D坐标系从姿态x1变换到姿态x2的动画效果其中,姿态 x1和 x2有三种表示方法:一个4X4 的齐次矩阵,或一个3x3的旋转矩阵,或一个四元数;
  ● tranimate(x,options):展示了坐标系由上一个姿态变换到姿态x的动画效果。同样地,姿势x也有三种表示方法:一个4X4 的齐次矩阵,或一个 3x3 的旋转矩阵,或一个四元数;
  ● tranimate(xseq,options):展示了移动一段轨迹的动画效果。xseq可以是一组4x4xN的齐次矩阵,或一组 3x3xN 的旋转矩阵,或是一组四元数向量(Nx1)。
tranimate( )函数中options的其他用法:
在这里插入图片描述

3.2 坐标变换

  同一个物体可以在不同的坐标系下进行描述,这之间就涉及到坐标变换

3.2.1 平移坐标变换

在这里插入图片描述

如上图所示,坐标系 { A } \left\{ A \right\} {A}没有经过旋转,直接平移得到坐标系 { B } \left\{ B \right\} {B} P P P是坐标系 { B } \left\{ B \right\} {B}中的一点,用矢量 B P ^ { B } P BP表示它在坐标系 { B } \left\{ B \right\} {B}中的位置,用矢量 A P ^ { A } P AP表示它在坐标系 { A } \left\{ A \right\} {A}中的位置,则有:
在这里插入图片描述
式中, A P B O R G ^ { A } P _ { B O R G } APBORG是坐标系 { A } \left\{ A \right\} {A}平移的矢量。

  用4x4的齐次矩阵表示由坐标系 { A } \left\{ A \right\} {A}到坐标系 { B } \left\{ B \right\} {B}的平移变换矩阵:
在这里插入图片描述

其中, B x B_{x} Bx B y B_{y} By B z B_{z} Bz分别表示矢量 A P B O R G ^ { A } P _ { B O R G } APBORG的三个分量。
  机器人工具箱中用transl( )函数来计算平移变换矩阵,例如:坐标系 { A } \left\{ A \right\} {A}的坐标(这里的坐标指代位置和姿态)表示为:
在这里插入图片描述

坐标系 { A } \left\{ A \right\} {A}沿着 x x x轴移动10,沿着 y y y轴移动5,沿着 z z z轴移动1得到坐标系 { B } \left\{ B \right\} {B},可以用transl(10, 5, 1)来得到平移变换矩阵。
在这里插入图片描述

3.2.2 旋转坐标变换

在这里插入图片描述

  如上图所示,坐标系 { A } \left\{ A \right\} {A}没有经过平移,直接旋转(旋转矩阵为 B A R _{B}^{A}\mathbf{\mathit{R}} BAR)得到坐标系 { B } \left\{ B \right\} {B}。同一个点 P P P在坐标系 { A } \left\{ A \right\} {A}和坐标系 { B } \left\{ B \right\} {B}中的表达分别为 A P ^ { A } P AP B P ^ { B } P BP,两者的转换关系为:
在这里插入图片描述

  机器人工具箱中用trotx( )troty( )trotz( )函数分别表示绕 x x x轴、 y y y轴和 z z z轴旋转一定角度的4x4的齐次变换矩阵:
在这里插入图片描述

3.2.3 齐次坐标变换

在这里插入图片描述
  如上图所示,坐标系 { A } \left\{ A \right\} {A}经过平移(平移矢量为 A P B O R G ^ { A } P _ { B O R G } APBORG)和旋转(旋转矩阵为 B A R _{B}^{A}\mathbf{\mathit{R}} BAR)得到坐标系 { B } \left\{ B \right\} {B},则有:
在这里插入图片描述
将上式写成齐次坐标变换的形式:
在这里插入图片描述

  例如,坐标系 { A } \left\{ A \right\} {A}先绕 y y y轴旋转120°,然后再沿着 x x x轴移动4,沿着 y y y轴移动5,沿着 z z z轴移动6得到坐标系 { B } \left\{ B \right\} {B}
在这里插入图片描述

  坐标系 { B } \left\{ B \right\} {B}中的矢量 B P ^ { B} P BP在坐标系 { A } \left\{ A \right\} {A}中进行描述 A P ^ { A } P AP
在这里插入图片描述
在这里插入图片描述

  已知 A P ^ { A } P AP B P ^ { B } P BP
在这里插入图片描述
在这里插入图片描述
  在三维坐标中画出经过齐次变换的两个坐标系:
在这里插入图片描述

  transl( )函数可以获取齐次变换矩阵 T T T中的平移矢量,t2r( )函数可以获取齐次变换矩阵 T T T中的旋转矩阵,r2t( )函数可以根据旋转矩阵 R R R得到齐次变换矩阵 T T T(只有旋转,没有移动):
在这里插入图片描述

3.2.4 函数总结

(1)平移坐标变换:transl( )函数
  ● 使用transl( )函数创建齐次的平移变换矩阵
   1)T = transl(x,y,z):表示能够获取一个分别沿着x轴、y轴和z轴平移一段距离得到的4X4齐次变换矩阵;
   2)T= transl§:表示由经过矩阵(或向量) p = [ x , y , z ] p = \left[ x , y , z \right] p=[x,y,z]的平移得到的齐次变换矩阵如果 p p p为(Mx3)的矩 阵,则 T T T为一组齐次变换矩阵(4x4xM),其中 T ( : , : , i ) T ( : , : , i ) T(:,:,i)对应于 p p p的第 i i i行。
  ● 使用transl( )函数提取齐次矩阵 T T T中的平移变换分量。
(2)旋转坐标变换:trotx( )函数、troty( )函数和trotz( )函数
  ● T=trotx( θ \theta θ):表示围绕 x x x轴旋转 θ \theta θ角度得到的齐次变换矩阵(4x4);
  ● T=troty( θ \theta θ):表示围绕 y y y轴旋转 θ \theta θ角度得到的齐次变换矩阵(4x4);
  ● T=trotz( θ \theta θ):表示围绕 z z z轴旋转 θ \theta θ角度得到的齐次变换矩阵(4x4);
(3)t2r( )与r2t( )函数
  ● R=t2r(T):用来获取齐次变换矩阵 T T T中的旋转矩阵分量;
  ● T=r2t(R ):用来获取一个与旋转矩阵 R R R等价的具有零平移分量的齐次变换矩阵。

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

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

相关文章

极限方法大总结【高数笔记】

【方法步骤】 分几步?又有几个小步骤? 【不同类型的极限】 不同类型极限的方法又有哪些步骤? 不同类型极限的方法有哪些前提条件? 个别类型极限方法的技巧有哪些?

『运维备忘录』之 Yum 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

Droppy教程 | 轻量文件共享

文件共享成为了日常工作的重要组成部分。特别是对于那些需要快速、高效分享大文件的人来说,拥有一个简单可靠,且易于管理的平台至关重要。 项目地址:https://github.com/droppyjs/droppy 一、测试环境 uname -i # x86_64 docker -v # Docke…

年底个人总结

年底个人总结 前言:又到了年底,在游戏行业工作了接近10年,想想也应该把自己做过的东西做一个总结。 从14年在北京毕业,懵懂的我在机缘巧合下遇到了陈g,我行业的领路人,在他的带领下我进入到了游戏行业。 当…

[office] 在往Excel中录入数据时 #微信#学习方法#职场发展

在往Excel中录入数据时 在往Excel中录入数据时,有时会遇到大量的重复数据,比如有这么一个工作表,第一列显示任务名,第二列显示任务执行者,第三列显示执行者的性别,其中任务执行者为固定的几个人交替执行&am…

Bootstrap5 导航组件和面包屑

Bootstrap5 导航组件和面包屑 Bootstrap5 提供了一种简单快捷的方法来创建基本导航,它提供了非常灵活和优雅的选项卡和Pills等组件。 Bootstrap5 的所有导航组件,包括选项卡和Pills,都通过基本的 .nav 类共享相同的基本标记和样式。 使用 B…

深入探究:JSONCPP库的使用与原理解析

君子不器 🚀JsonCPP开源项目直达链接 文章目录 简介Json示例小结 JsoncppJson::Value序列化Json::Writer 类Json::FastWriter 类Json::StyledWriter 类Json::StreamWriter 类Json::StreamWriterBuilder 类示例 反序列化Json::Reader 类Json::CharReader 类Json::Ch…

【计算机二级考试C语言】C可变参数

C 可变参数 有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。 C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。 声明方式为: int func_name(int arg1, ...); 其中,省略号 ... …

linux一键换源

使用方法 - LinuxMirrors 使用方法 一键执行命令# 中国大陆&#xff08;默认&#xff09; 海外地区 bash <(curl -sSL https://linuxmirrors.cn/main.sh)-----------------------------------| ⡇ ⠄ ⣀⡀ ⡀⢀ ⡀⢀ ⡷⢾ ⠄ ⡀⣀ ⡀⣀ ⢀⡀ ⡀⣀ ⢀⣀ || ⠧⠤ ⠇ ⠇⠸ …

2024年考PMP还有什么用?

PMP 是项目管理专业人士资格认证的意思&#xff0c;也是项目管理领域通用的证书&#xff0c; 做项目的基本都会去考。 要说 PMP 有啥作用&#xff1f; 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用&#xff0c;因为现在很多公司都要 PMP 证书&#xff0c;有了可以加分…

containerd中文翻译系列(五)客户端选项

containerd 客户端的构建是为了方便用户进行扩展。 我们的目标是&#xff0c;调用的执行流程在不同的实现中保持不变&#xff0c;同时编写 Opts 来扩展功能。 为了实现这一目标&#xff0c;我们依赖于 Go 中的 Opts 模式。 方法调用 对于客户端软件包中的许多函数和方法&…

工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/ 概述 工厂方法模式(Factory Method Pattern)是一个对象创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 – 《设计模式:可复…

SpringBoot 拦截器Intercepto的创建与基本使用

介绍 拦截器和过滤器的功能都差不多&#xff0c;拦截器是SpringBoot的&#xff0c;而且过滤器是Servlet的 SpringBoot过滤器 拦截器-过滤器 执行顺序 发起请求-》过滤器-》拦截器-》接口 创建拦截器 实现HandlerInterceptor 的接口&#xff0c;并且实现他都三个方法 preHan…

Leetcode21:合并两个有序链表

一、题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]输入&#…

【芯片设计- RTL 数字逻辑设计入门 8 -- 四选一多路器】

文章目录 四选一多路输出器verilog case 语句verilog 代码testbench 代码仿真波形 问题小结 四选一多路输出器 制作一个四选一的多路选择器&#xff0c;要求输出定义上为线网类型 状态转换&#xff1a; d0 00 d1 01 d2 10 d3 11verilog case 语句 case(express…

亚马逊认证考试系列 - 知识点 - 安全组介绍

第一部分&#xff1a;AWS简介 Amazon Web Services&#xff08;AWS&#xff09;是全球领先的云计算服务提供商&#xff0c;为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…

每日一题 力扣LCP30.魔塔游戏

题目描述&#xff1a; 小扣当前位于魔塔游戏第一层&#xff0c;共有 N 个房间&#xff0c;编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组 nums&#xff0c;其中正数表示道具补血数值&#xff0c;即血量增加对应数值&#xff1b;负数表示怪物造成伤害值&#x…

【Java 数据结构】反射

反射 1 定义2 用途(了解)3 反射基本信息4 反射相关的类&#xff08;重要&#xff09;4.1 Class类(反射机制的起源 )4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用 5、反射优点和缺点 1 定义 Java的反…

【openwrt】MT7981 5G WiFi MAC地址不生效问题分析及解决方案

问题描述 MT7981 默认sdk 5G MAC地址根据2.4G MAC地址随机生成,我们写到Factory区域的值不生效 问题分析 查看EEPROM MAC位置 查看MTK EEPROM文档MT7981_EEPROM_Content_Introduction_V10_20211207.pdf可以看到EEPROM里面有两个位置可以存放MAC,0x04~0x09 和0x0a~0x0f 查看…

工具类中获取Bean的实例

一般情况下&#xff0c;我们直接在Component标注的类&#xff08;Bean&#xff09;下就能直接通过Autowired、Resource直接实现自动注入获取到Bean的实例&#xff0c;如下&#xff1a; Service Transactional(readOnly true) public class MyReadServiceImpl {Resourceprivat…