路径规划算法之刚体变换

news2024/11/26 18:53:13

目录

1 一般概念

1.1 基元的变换

1.2 一个参数化的变换族

2 2D变换

2.1 translation

2.2 rotation

2.3 Combining translation and rotation

3 3D变换

3.1 Yaw, pitch, and roll rotations

3.2 Determining yaw, pitch, and roll from a rotation matrix

3.3 The homogeneous transformation matrix for 3D bodies


本文对机器人运动规划的经典书籍《planning algorithm》进行解析,原文请参考3.2 Rigid-Body Transformations (lavalle.pl)

1 一般概念

假设刚体机器人a被定义为R2或R3的一个子集。刚体变换是一个函数 h: A→W,它将A的每一点映射到W,有两个要求:1)A的任意两点之间的距离必须保持,2)A的方向必须保持(没有“镜像”)。对于某a∈A, h(a)表示W中被a“占据”的点。

这是h的像,表示变换后的机器人占据W中的所有点。形象地说就是机器人坐标系转化到世界坐标系的一个映射。

1.1 基元的变换

上述是一整个刚体进行变换,但是对于一个复杂的机器人,我们通常用多个基元的组合来定义,如

因此变换的函数如下

 

如果利用逆映射,则变换的函数如下

 

1.2 一个参数化的变换族

将q定义为参数变量,由q来决定A到W的变换。同时将h(q, a)简化为a(q),将h(q, A)简化为A(q)。这可以形象地认为将body frame以一定位置和方向放置到world frame。同时我们也区分一下body frame 和 world frame,在一般机器人的运动规划问题中,world frame基本不会变,一般都是机器人运动,也就是body frame不断地在做刚体变换。

2 2D变换

2.1 translation

 上面介绍的内容还是相对抽象,本节开始就比较具体了,下面就是刚体变换中平移的映射,

 现在考虑用基元定义的A的实心表示形式

 当然translation有两种形式,第二种相当于机器人“倒退”(根据相对运动)

2.2 rotation

旋转的映射关系如下

 通过2*2的矩阵可以表示为

线性代数中提出左乘矩阵相当于对其进行线性变换,这里就是旋转变换,同时回想一下列向量其实表示新坐标系的基向量。R(θ)的列向量是单位向量,它们的内积为零,也表明它们是正交的,理解了这一步,有助于对高维旋转矩阵的理解

2.3 Combining translation and rotation

平移和旋转我们都已经探究了一遍,现在对平移和旋转结合,也就能达到平面的移动机器人真正在做的刚体变换。因为平移和旋转相互独立,所以能直接进行叠加,将旋转矩阵吸收平移的部分,公式如下

 

上式左乘的矩阵T被称为齐次变换矩阵。T表示旋转和平移。每个机器人的基元都可以使用T的逆变换,从而得到一个变换后的机器人实体模型。齐次变换矩阵是组合变换的一种简便的表示方法。因此,它经常用于机器人、力学、计算机图形学和其他领域。它被称为齐次变换是因为在R3上它只是一个没有任何平移的线性变换。在射影几何中,增加一维来吸收平移部分的技巧是常见的。

3 3D变换

对于平面移动机器人,如自动驾驶车辆,AGV等,2D变换是非常重要的内容,但对于三维移动机器人,如无人机,机械臂等,3D变换就变得尤为重要。

3.1 Yaw, pitch, and roll rotations

二维刚体变换有两个平移的自由度和一个旋转的自由度,而三维刚体变换有三个平移的自由度和三个旋转的自由度。平移的部分与二维类似,这里就不再赘述。

横摆是绕Z轴旋转

 

 俯仰是绕y轴旋转

 

翻滚是绕x轴旋转

 

上述三个专业名词根据不同的载体而定,这里主要是六自由度车辆的专业术语

每个旋转矩阵都是二维旋转矩阵的简单扩展。例如,横摆矩阵Rz(α)本质上执行了一个关于x和y坐标的2D旋转,而保持z坐标不变。三种旋转可将3D体置于任何方向。通过将三个旋转矩阵相乘,可以得到单个旋转矩阵

 但要注意左乘矩阵的顺序不同。3D刚体变换的结果不同

3.2 Determining yaw, pitch, and roll from a rotation matrix

直接从给定的旋转矩阵确定α、β和γ参数通常是很方便的。如上式假设一个任意旋转矩阵得

 

 

3.3 The homogeneous transformation matrix for 3D bodies

上面对3D刚体的旋转矩阵做了推导,现在来把平移与旋转结合,也就是探究一个3D刚体的齐次变换矩阵,矩阵如下

 

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

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

相关文章

模拟电路设计(35)---几种脉宽调制型开关电路

Forward单端正激变换器 在buck变换器开关与负载之间插入隔离变压器,这种隔离型buck变换器叫做Forward单端正激变换器。如下图所示: Forward单端正激变换器 简单分析可知,滤波电感L在开关管关断期间,通过续流二极管为负载提供电流…

Android JNI编程并生成so库

这里写自定义目录标题Android JNI编程并生成so库Android Studio配置下载配置NDK配置NDK路径编写native方法和c文件编写配置文件生成so库使用so库Android JNI编程并生成so库 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编…

Python——字符串

1、再Python中,使用单引号或者双引号括起来的,就是字符串 2、字符串也可以使用六个单引号或者六个双引号括起来。 3、在Python3中,字符串分为两种类型,第一种是str,是unicode字符串,第二种是bytes&#x…

springboot酒店客房管理系统设计

随着我国市场经济的快速发展以及人们生活水平的不断提高,酒店,宾馆之间的竞争也越来越激烈,为了在这场竞争中取得显著的优势,就必须在管理上加以改善。在某种意义上,酒店客房方面的信息化已经成为现代化酒店的重要标志…

Python学习笔记第三十七天(NumPy 广播(Broadcast))

Python学习笔记第三十七天NumPy 广播(Broadcast)NumPy 广播(Broadcast) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。 如果两个数组 a 和 b 形状相同,即满足 a.shape b.shape&…

gurobi 基于python的gurobipy库使用,具有一维变量和二维变量的复杂模型求解

写在前面 可以参考下pulp和scip两篇的,比较详细,尤其pulp篇。举一反三,很好入门。 步骤 定义问题:m Model(name) 定义变量:x m.addVars(range(len), vtypeGRB.BINARY) 定义目标函数:m.setObjective&…

Springboot+ssm(Spring+SpringMVC+MyBatis)旧物置换网站

目 录 摘 要 I 目 录 III 第1章 概述 1 1.1 研究背景 1 1.2 研究现状 1 1.3 研究内容 2 第二章 开发技术介绍 2 2.1 系统开发平台 2 2.2 平台开发相关技术 3 2.2.1 B/S架构 3 2.2.2 Java技术介绍 4 2.2.3 mysql数据库介绍 4 2.2.4 …

【Electron】开发实战

文章目录第一章 征程第二章-主进程与渲染进程第三章-H5拖拽读取本地文件第四章-快捷键注册及复制粘贴第五章-渲染进程调用主进程模块第六章-菜单模块第七章-渲染进程与主进程间的通信第八章-渲染进程与渲染进程间的通信第九章-管理应用程序文件及url的加载方式第十章-系统对话框…

机械硬盘HDD

硬盘(英语:Hard Disk Drive,缩写:HDD,有时为了与固态硬盘相区分称“机械硬盘”或“传统硬盘”)是电脑上使用坚硬的旋转盘片为基础的非易失性存储器,它在平整的磁性表面存储和检索数字数据&#…

三维重建之PIFuHD

Fackbook AI 研究出从一张图片生成Mesh模型的算法PIFuHD ​ Paper: https://arxiv.org/pdf/2004.00452.pdf Code: https://github.com/facebookresearch/pifuhd 一,Demo数据预处理 这里面需要先编译pifuhd和lightweight-human-pose-estimation.pytorch&#xf…

Unknown custom element: <el-image>无法使用该组件,升级element-ui版本后项目报错

需求背景&#xff1a; 项目中需要使用图片点击放大&#xff0c;想要使用<el-image>组件&#xff0c;引入后报了下面的错&#xff0c;需要升级element版本&#xff0c;element-ui版本过低&#xff0c;没有该组件。 过程&#xff1a; cnpm i element-ui2.14.1 --save-dev…

代码随想录67——额外题目【动态规划】:5最长回文子串、132分割回文串II、673最长递增子序列的个数

文章目录1.5最长回文子串1.1.题目1.2.解答2.132分割回文串II2.1.题目2.2.解答3.673最长递增子序列的个数3.1.题目3.2.解答1.5最长回文子串 参考&#xff1a;代码随想录&#xff0c;5最长回文子串&#xff1b;力扣题目链接 1.1.题目 1.2.解答 本题和 647.回文子串 差不多是一…

Codeforces Round #574 (Div. 2) C. Basketball Exercise

翻译&#xff1a; 最后&#xff0c;SIS已经开放了一个篮球场&#xff0c;所以Demid决定举办一个篮球训练课程。有2个⋅&#x1d45b;的学生参加了Demid的练习课&#xff0c;他将他们排成两排&#xff0c;大小相同(每排正好有&#x1d45b;人)。学生按从左到右的顺序&#xff0…

【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)

【毕业设计】15-基于单片机的交通灯系统设计&#xff08;原理图、仿真、源代码工程答辩论文答辩PPT&#xff09; 文章目录【毕业设计】15-基于单片机的交通灯系统设计&#xff08;原理图、仿真、源代码工程答辩论文答辩PPT&#xff09;任务书设计说明书摘要设计框架架构设计说明…

婴幼儿牛奶蛋白过敏危害多,教你四招早期预防

牛奶蛋白过敏&#xff08;cowsmilkproteinallergy&#xff0c;CMPA&#xff09;这是婴幼儿最常见的食物过敏之一。牛奶蛋白过敏的临床表现CMPA儿童的临床表现多种多样[1]&#xff0c;特别是对严重的牛奶蛋白过敏&#xff0c;会导致拒绝进食、腹泻、呕吐或反流&#xff0c;导致生…

CentOS7安装superset2.0

备注&#xff1a;自己在CentOS7.5下安装superset2.0成功。数据库以本地sqlite为准。Superset是由Python语言编写的Web应用&#xff0c;Superset2.0版本要求Python3.9的环境。 1、安装Miniconda 原因&#xff1a;conda是一个开源的包、环境管理器&#xff0c;可以用于在同一个…

Linux/Windows中创建共享文件夹

Linux/Windows中创建共享文件夹一、虚拟机访问主机的文件夹1、设置虚拟机共享主机的路径2、设置主机目录为共享文件夹【Windows之间共享目录】2.1 设置共享文件夹2.2 访问共享文件夹3、nfs_共享文件夹【linux之间共享目录】一、虚拟机访问主机的文件夹 1、设置虚拟机共享主机的…

计算机内存与外存的区别及使用配合(内存外存区别与搭配;快速缓存;计算机总线结构)

计算机系统结构1. 为什么计算机存储会分为内存和外存呢&#xff1f;2. 关于快速缓存3. 计算机总线结构1. 为什么计算机存储会分为内存和外存呢&#xff1f; 外部储存器断电可以存储数据&#xff0c;但是读写速度相对于cpu来说很慢&#xff0c;而内存虽然读取速度很快但是断电之…

【php环境搭建】php全栈体系(二)

PHP环境搭建 第七章 安装与配置MySQL 一、安装MySQL软件 1. 获取MySQL安装软件 2. 双击安装即可&#xff1a;没有特殊情况的直接下一步就可以完成 3. 选择custom&#xff0c;自定义安装&#xff1a;选择安装路径 3.1 软件安装目录&#xff1a;server/mysql 3.2 数据安装目录…

OVS DPDK VXLAN隧道处理

在学习OVS VXLAN实现之前&#xff0c;我们先回顾一下传统VTEP设备是如何处理VXLAN报文的。如下图所示&#xff1a; vxlan报文进入交换机端口后&#xff0c;根据报文头部信息进行vxlan隧道终结。隧道终结后&#xff0c;根据underlay信息进行overlay映射&#xff0c;得到overlay的…