发那科机器人xyz的方向_现代机器人学 | 刚体运动与旋转矩阵

本文介绍了工业机器人四大家族中的发那科(FANUC)及其在刚体运动与旋转矩阵中的应用。刚体在空间中有六个自由度,通常使用4×4变换矩阵来描述,避免奇异值问题。相比于欧拉角的显式表达,XYZ坐标系统能更好地避免非欧空间中的奇异情况。

Hey 朋友,点击蓝字关注吗?

394a3c3cf87baa03883a8615954e5742.png

公开课

现代机器人学 | 刚体运动与旋转矩阵

日本的安川(YASKAWA)、发那科(FANUC)、德国的库卡(KUKA)、瑞士的ABB四大家族为全球主要的工业机器人供应商,被称为四大家族。工业机器人四大家族一起占据着中国机器人产业70%以上的市场份额,占全球约50%,几乎垄断了机器人制造、焊接等高阶领域。

— Edited By Hugo

# 1

刚体运动的介绍

# 2

旋转矩阵(上)

# 3

旋转矩阵(下)

一般而言,空间中的刚体运动有六个自由度,但我们描述刚体的运动常见做法是用4×44\times44×4的变换矩阵,即用了16个元素加上10个约束,而不是就用6个量来表达。

用16个元素加上约束的表示方法,叫做implicit representation(隐式表达),这种表达方法好处是没有奇异值。而相对的explicit representation(显式表达)只需要用6个量(比如欧拉角+三维位置矢量),但是有时会遇到奇异值的情况。

而造成这种现象的本质原因来自于,代表刚体运动的六维空间并不是欧式空间,而是非欧空间。比如球面是二维面,因此两个量就能表达球面上的一点(经纬度法),但由于球面不是欧式平面,所以经纬度法会有奇点(球面的南北极坐标有无穷多种)。

而如果用XYZ三维坐标来表达呢?就完全不会出现这种问题了。

欢迎交流

0e85127c48e5fe9cc9953e3e150d61e8.gif

有问必答

点击进入留言板

edeb500e88d129ac2dddf6e8d6b244b4.png

声明:文章部分内容来自于互联网,仅供读者学习,交流之目的。如有不妥,请联系删除。

  - end -  

视觉选型|机器人选型|手眼标定

图像处理|视觉软件开发|案例应用分享

eeb447e3b35238f94acc081a62d09b45.png

分享快乐,让我们一起“在看”吧。

机器人旋转矩阵是描述机器人在三维空间中旋转运动的重要工具。它通常用于表示刚体从一个坐标系到另一个坐标系的旋转变换。旋转矩阵是一个 $ 3 \times 3 $ 的正交矩阵,其行列式为 1,表示一个纯旋转操作,不包含平移。 ### 旋转矩阵的计算方法 1. **欧拉角到旋转矩阵** 欧拉角通常用三个角度(如 $ \alpha, \beta, \gamma $)表示绕不同轴的旋转顺序。常见的旋转顺序有 ZYZ、ZXZ、XYZ 等。以 XYZ 顺序为例,旋转矩阵可以表示为: $$ R = R_z(\gamma) R_y(\beta) R_x(\alpha) $$ 其中, $$ R_x(\alpha) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\alpha & -\sin\alpha \\ 0 & \sin\alpha & \cos\alpha \end{bmatrix}, \quad R_y(\beta) = \begin{bmatrix} \cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta \end{bmatrix}, \quad R_z(\gamma) = \begin{bmatrix} \cos\gamma & -\sin\gamma & 0 \\ \sin\gamma & \cos\gamma & 0 \\ 0 & 0 & 1 \end{bmatrix} $$ 2. **四元数到旋转矩阵** 四元数 $ q = (w, x, y, z) $ 可以转换为旋转矩阵: $$ R = \begin{bmatrix} 1 - 2y^2 - 2z^2 & 2xy - 2wz & 2xz + 2wy \\ 2xy + 2wz & 1 - 2x^2 - 2z^2 & 2yz - 2wx \\ 2xz - 2wy & 2yz + 2wx & 1 - 2x^2 - 2y^2 \end{bmatrix} $$ 3. **轴角表示到旋转矩阵(罗德里格斯公式)** 若旋转轴为单位向量 $ \mathbf{u} = (u_x, u_y, u_z) $,旋转角为 $ \theta $,则旋转矩阵为: $$ R = I + \sin\theta [\mathbf{u}]_\times + (1 - \cos\theta) [\mathbf{u}]_\times^2 $$ 其中,$ I $ 是单位矩阵,$ [\mathbf{u}]_\times $ 是向量 $ \mathbf{u} $ 的叉积矩阵: $$ [\mathbf{u}]_\times = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix} $$ ### 旋转矩阵的应用 1. **机器人运动学** 旋转矩阵广泛应用于机器人运动学和逆运动学中,用于描述机器人各个关节之间的相对旋转关系。例如,在正运动学中,可以通过连杆坐标系之间的旋转矩阵计算末端执行器的姿态。 2. **姿态估计** 在计算机视觉和SLAM(同步定位地图构建)中,旋转矩阵用于表示相机或机器人在空间中的姿态变化。通过特征点匹配和优化算法(如PnP问题求解),可以估计出旋转矩阵以确定相机的姿态。 3. **姿态控制** 在机器人控制系统中,旋转矩阵用于设计控制器,使机器人能够按照期望的姿态进行运动。例如,通过比较当前姿态目标姿态的旋转矩阵差异,可以计算出所需的控制输入。 4. **图形学动画** 在三维图形学中,旋转矩阵用于对物体进行旋转操作,常用于动画制作和游戏开发中,以实现物体的空间变换。 ### 示例代码:欧拉角转旋转矩阵 以下是一个简单的 Python 示例,展示如何将欧拉角转换为旋转矩阵: ```python import numpy as np def euler_to_rotation_matrix(roll, pitch, yaw): # 计算绕X轴的旋转矩阵 R_x = np.array([[1, 0, 0], [0, np.cos(roll), -np.sin(roll)], [0, np.sin(roll), np.cos(roll)]]) # 计算绕Y轴的旋转矩阵 R_y = np.array([[np.cos(pitch), 0, np.sin(pitch)], [0, 1, 0], [-np.sin(pitch), 0, np.cos(pitch)]]) # 计算绕Z轴的旋转矩阵 R_z = np.array([[np.cos(yaw), -np.sin(yaw), 0], [np.sin(yaw), np.cos(yaw), 0], [0, 0, 1]]) # 计算总旋转矩阵 R = np.dot(R_z, np.dot(R_y, R_x)) return R # 示例:欧拉角(单位为弧度) roll = np.radians(30) pitch = np.radians(45) yaw = np.radians(60) # 计算旋转矩阵 rotation_matrix = euler_to_rotation_matrix(roll, pitch, yaw) print("Rotation Matrix:\n", rotation_matrix) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值