机器人工具箱学习(一)

一、机器人工具箱介绍

   机器人工具箱是由来自昆士兰科技大学的教授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等价的具有零平移分量的齐次变换矩阵。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pwn旅行之[WUSTCTF 2020]getshell2(一些小知识)

题目分析1 首先打开这个题目的链接的时候,看到了ret2syscall,以为是一个纯正的syscall的题,结果,做的时候发现这个题的危险函数限制的字符串个数不足以写入syscall需要的所有地址,所以,这里参考dalao们的方…

时光峰峦文物璀璨,预防性保护筑安全

在璀璨的历史长河中,珍贵文物如同时间的印记,承载着过往的辉煌。《人文山水时光峰峦——多彩贵州历史文化展》便是这样一场文化的盛宴,汇聚了众多首次露面的宝藏。然而,文物的保存对环境要求极为苛刻,温湿度波动都可能…

python coding with ChatGPT 打卡第18天| 二叉树:从中序与后序遍历序列构造二叉树、最大二叉树

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树:理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树:翻转…

clickhouse计算前后两点间经纬度距离

问题 计算如图所示前后两点经纬度的距离? 方法 1、用开窗函数将如图所示数据下移一行 selectlongitude lon1,latitude lat1,min(longitude) over(order by time1 asc rows between 1 PRECEDING and 1 PRECEDING) lon2,min(latitude) over(order by time1 asc row…

CentOS 7安装Nodejs

说明:本文介绍如何在云服务器上CentOS 7操作系统上安装Nodejs。以及安装过程中遇到的问题。 下载压缩包&解压 首先,先去官网下载Linux版本的Node。 将下载下来的压缩包,上传到云服务器上,解压。配置环境变量。 &#xff08…

Stable Diffusion 模型下载:Schematics(原理图)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 “Schematics”是一个非常个性化的LORA,我的目标是创建一个整体风格,但主要面向某些风格美学,因此它可以用于人物、物体、风景等…

CGAL-3D 凸包算法

3D 凸包算法 一、概述二、静态凸包构造1. Traits 特征类2. 极端点3. 半空间相交4. 凸性检验 三、动态凸包构造四、性能 一、概述 一个点集 S∈R3 是凸的,如果对于任意两点 p 和 q 在集合中,具有端点的线段 p 和 q 包含在 S。集合的凸包 P 包含点集 S 的最…

Leetcode21:合并两个有序链表

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

ubuntu篇---ubuntu安装python3.9

ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1:使用apt在线安装 1.更新软件包列表并安装必备组件: $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…

ORM模型类

模型 创建两个表 创建模型类 from django.db import models# Create your models here. class BookInfo(models.Model):name models.CharField(max_length10, uniqueTrue) # 书名pub_date models.DateField(nullTrue) # 发布时间read_count models.IntegerField(default…

TCP 粘包/拆包

文章目录 概述粘包拆包发生场景解决TCP粘包和拆包问题的常见方法Netty对粘包和拆包问题的处理小结 概述 TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中,比如RPC框架、Netty等 TCP 粘包/拆包 就是你基于 TCP 发送数据的时候,出现了多个字符串“粘”…

查看网络配置的ipconfig命令

ipconfig是调试计算机网络的常用命令,通常大家使用它显示计算机中网络适配器的IP地址、子网掩码及默认网关。其实这只是ipconfig的不带参数用法,而它的带参数用法,在网络中应用也是相当不错的。 1.语法 ipconfig [/all] [/renew[Adapter]] [/…

(四)elasticsearch 源码之索引流程分析

https://www.cnblogs.com/darcy-yuan/p/17024341.html 1.概览 前面我们讨论了es是如何启动,本文研究下es是如何索引文档的。 下面是启动流程图,我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求&…

【Java八股面试系列】JVM-class文件结构

Class文件结构总结 根据 Java 虚拟机规范,Class 文件通过 ClassFile 定义,有点类似 C 语言的结构体。我们之前都是使用javap命令来对字节码文件进行反编译查看的,我们可以使用WinHex软件(Mac平台可以使用010 Editor)来…

如何决定K8S Pod的剔除优先级

在Kubernetes(k8s)中,当节点资源面临压力时,如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后,引入了基于Pod优先级的调度策略,即Pod Priority Preemption。这种策略允许在资源不足的情况下&a…

git命令远程仓库推送本地项目报错了,解决方案

如果你在使用git命令上传本地项目到远程仓库遇到了如下错误: Updates were rejected because the tip of your current branch is behind。n 别慌,肯定是你的远程仓库里面有原始文件,需要你提前进行一下合并操作,然后才能使用pu…

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届,这届的题目在逻辑思维上确实要麻烦不少,可以从题目看出,这届题目对时间顺序的要求很严格,所以就可以使用状态机的思想来编程,拿到类似题…

MyBatis多数据源以及动态切换实现(基于SpringBoot 2.7.x)

MyBatis多数据源以及动态切换实现可以实现不同功能模块可以对应到不同的数据库&#xff0c;现在就让我们来讲解一下。 目录 一、引入Maven二、配置文件三、实现多数据源四、动态切换数据源 一、引入Maven 注意&#xff1a;博主这边使用的springboot版本是2.7.14的 <!-- htt…

thinkphp6入门(19)-- 中间件向控制器传参

可以通过给请求对象赋值的方式传参给控制器&#xff08;或者其它地方&#xff09;&#xff0c;例如 <?phpnamespace app\middleware;class Hello {public function handle($request, \Closure $next){$request->hello ThinkPHP;return $next($request);} } 然后在控制…

类图(Class diagram)

类图主要是用来展现软件系统中的类、接口以及它们之间的静态结构 。 一、元素 1、类 ​ 从上到下分为三部分&#xff0c;分别是类名、属性和操作。 类名是必须有的。​类如果有属性&#xff0c;则每一个属性必须有一个名字&#xff0c;另外还可以有其他的描述信息&#xff…