机器人学基础(一)【坐标系和位姿变换】

文章目录

  • 1.坐标系和位姿变换
    • [1.1 坐标系](#1.1 坐标系)
    • [1.2 位姿变换](#1.2 位姿变换)
    • [1.3 坐标系之间的转换与链式计算](#1.3 坐标系之间的转换与链式计算)
  • 问题:

1.坐标系和位姿变换

1.1 坐标系

对于坐标系有很多种,常见的三轴直角坐标系就是笛卡尔坐标系,对于机器人、机械臂的应用来说,又分世界坐标系、本体坐标系、关节坐标系;

该图描述的就是世界坐标系和本体坐标系,对于关节坐标系,跟随关节的位置和姿态进行变化,与本体坐标系相似。

1.2 位姿变换

齐次矩阵(4x4)表示位姿

位姿=位置+姿态

左上3×3子矩阵:旋转分量

右上3×1子矩阵:平移分量

最后一行:0,0,0,1保持奇次性

平移、旋转(欧拉⻆、四元数)

  • 平移:
  • 旋转:

(1)欧拉角

概念:通过绕三个坐标轴的连续旋转表示姿态

常用形式:

ZYX欧拉角:先绕Z轴,再绕Y轴,最后绕X轴

RPY角(Roll-Pitch-Yaw):滚转-俯仰-偏航

优点:直观,易于理解

缺点:存在万向节死锁问题

(2)四元数

概念:⽤四个数表⽰旋转(q₀,q₁,q₂,q₃)

数学形式:q=q₀+q₁i+q₂j+q₃k

优点:⽆万向节死锁 计算效率⾼ 插值平滑(球⾯线性插值)

缺点:不够直观,理解难度⼤

1.3 坐标系之间的转换与链式计算

点P从坐标系A到坐标系B的转换:

具体步骤:

问题:

(1)为什么需要用⼀个整体的"齐次矩阵"来表示位姿,而不是分开用旋转和位移?

分开用旋转和位移,在进行连续变换时需要分别处理旋转和平移,且在进行连续变换时需要分别处理旋转和平移,用⼀个整体的"齐次矩阵"来表示位姿,有如下好处:

(2)如果一个点在A坐标系下有坐标,我们如何把它转换到 B坐标系?

利用上面公式进行转换

  1. 确定A坐标系相对于B坐标系的位姿

  2. 将点P在A下的坐标表示为齐次坐标:

  3. 进行矩阵乘法运算

  4. 得到点在B下的齐次坐标,提取前三个分量即为直角坐标

(3)多个关节坐标系之间的变换,最后是如何得到末端相对基座的位姿的?

相关推荐
拳里剑气7 分钟前
C++算法:链表
c++·算法·链表
自小吃多8 分钟前
IVD设备-以GB4793.1做安规摸底
笔记·嵌入式硬件
凌波粒12 分钟前
LeetCode--90.子集II(回溯算法)
数据结构·算法·leetcode
旖-旎18 分钟前
《LeetCode 417 太平洋大西洋水流问题 FloodFill DFS 解法》
c++·算法·深度优先·力扣·floodfill
凌波粒21 分钟前
LeetCode--46.全排列(回溯算法)
数据结构·算法·leetcode
鱼子星_26 分钟前
C++从零开始系列篇(二):C++入门——函数重载,引用,inline与nullptr
开发语言·c++·笔记
2zcode35 分钟前
项目文档:基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别
指令集梦境40 分钟前
图解:单调栈算法模板(Java语言)
java·开发语言·算法
日取其半万世不竭1 小时前
Memos 私人碎片笔记怎么搭?Docker 加 Caddy 一小时跑起来
笔记·docker·容器
写代码的学渣1 小时前
docker部署开源实时观测系统hertzbeat
docker·容器·开源