机器人自学之路笔记P1——前置知识:矩阵

机器人自学之路笔记P1——前置知识:矩阵

作者:开挖机的程序猿

文章始作于 2024-8-10,完作于 2024-8-14

一、前言

  • 作者目前是大三狗一名,从大一开始就一直很想涉足机器人开发领域。奈何学校破事太多,作者也不是相关专业的学生,没有很多时间和精力去系统性地学完相关知识。借着最近开始在CSDN上发博客,边学边复习边记录,一是自己养成良好的学习习惯,二是自我记录鼓励,三是向同样想自学机器人的伙伴们提供一个自学案例,不要被复杂的知识吓到,逐一击破就能成功!

  • 这个系列作者会坚持更新的,在大章结束之前全都免费公开,成体系后可能会做成收费合集赚点生活费,当然如果作者觉得值得。也是用赚米鼓励自己学习下去吧,大家加油,想看作者更新或者嘲讽的都可以关注!

  • 废话不多说了,这一系列文章也是继续延续之前的手把手系列,尽可能地分解每一个知识点,每一个步骤,让小白也能轻松学会,不说会运用,至少能看懂每一步吧。第一章主要是对机器人的基础——机器人运动学进行学习和分享。

  • 这是我学习这一部分内容看的一些资料:

    1.矩阵与矩阵运算 (fishros.com)

    2.旋转矩阵_哔哩哔哩_bilibili

    3.位姿描述和齐次变换-CSDN博客

    4.机器人学:(2)位姿描述和坐标变换_abb机器人所说的位姿是什么-CSDN博客

    建议大家看完后或者看之前去补习一些线代知识。

二、矩阵

1、怎么表示矩阵?(本章涉及三维空间的相关量的表示,常用3x3矩阵)

请添加图片描述

这就是一个矩阵,用大写字母 A 表示,当然,你可以用其他字母,一般习惯大写。里面的元素 a_11 …… a_33 下标分别表示 行&列 ,下面是个实例

请添加图片描述

当然,这个矩阵没有任何意义,我是瞎给了一些参数,它大概看起来就是这样的

2、矩阵的加减法

  • 注意,必须要相同行列数 m x n 的矩阵才能够进行相加减(如果两个矩阵都是 m x n个数组成,则称两个矩阵为同型矩阵。)

  • 对应元素进行加减即可

  • 结果任然为一个 m x n 的矩阵

  • 这个简单且不是很重要,不作详细介绍

请添加图片描述

3、矩阵乘法

1、矩阵点乘 (标量乘法)

  • 注意,必须要同型矩阵才能够进行点乘

  • 很简单,对应位置的元素相乘即可

在这里插入图片描述

2、重要:矩阵叉乘(矢量乘法)

  • 注意,必须一个矩阵的列数和另一个矩阵的行数互相相等的矩阵才能够进行叉乘,运算过程如下图
    在这里插入图片描述

  • 可以看到,叉乘是左边矩阵的行与右边矩阵的列分别相乘,元素分别相乘再相加的一个过程

  • 叉乘是否满足交换律呢,即左右矩阵调换再乘是否结果和上面相等?

在这里插入图片描述

  • 显然,矩阵的矢量乘法(叉乘)是不满足交换律的,不要搞错了

  • 有个显然的规律,结果矩阵是一个 n x n 的方阵(正方形矩阵),n是左边矩阵的行数

4、矩阵转置

  • 很简单,看图自己理解

在这里插入图片描述

  • 一个矩阵是否能转置有无条件? 任何矩阵都可以转置,与是否是方阵没有关系。(作者看了其他资料,很多都是用方阵举例的,导致我产生了这个疑惑,这里着重提一下)

  • 转置符号 T 就是 Transpose 的意思

  • 怎么操作?

    作者是这样手动转置的:

    1、先看原来的矩阵的形状,这里是 2 x 3 的,那么转置后就是 3 x 2 的矩阵

    2、然后目光移到 3 x 2 矩阵的11元素,去找原矩阵的11元素,再看到 3 x 2 矩阵的12元素,然后去找原矩阵的21元素,给它写进来,然后是 3 x 2 矩阵的21元素,去找原矩阵的12元素,写进来……………………口算吧,哈哈

  • 还有一些推论,都是想一想就明白的,可以不看

在这里插入图片描述

5、(重要)矩阵求逆

  • 矩阵中没有除法,所以需要逆矩阵(作者也有点懵逼),这里应该是针对矢量性质的运算

  • 只有方阵有逆矩阵

  • PS:作者写到这里的时候也挺懵的,去看了别的博客更懵了,不过还是要坚持理解再转化输出,所以遇到难点不要怕,加油奥里给!

  • 逆矩阵的概念、应用和求解-CSDN博客

  • 前置知识

    1、矩阵的行列式

    • 行列式只对方阵有效,脑海里依稀飘过这样个声音:有人问我三行四列的行列式怎么算,把我吓死了(汤家凤名场面)

    • 行列式的计算方法(含四种,看完就会!)-CSDN博客这篇文章比较好,借鉴一下,本文对三阶方阵的应用比较多,故只讲三阶矩阵的行列式

    • 你现在不需要知道行列式有啥用,会用对角线法算就行,如下,将矩阵A转写为三阶行列式D_3

      在这里插入图片描述

    计算行列式:
    在这里插入图片描述

    将左边两列复制到最右边,如图绘制红线和蓝线,只要把每一条线上的元素相乘,再把所有红色线的结果的和减去蓝色线结果的和就行了,如下

    在这里插入图片描述

    2、利用余子式、代数余子式和伴随矩阵求逆

    • 不是很难理解,跟着步骤走就行

    • 这里以这个矩阵为例

    在这里插入图片描述

    • Step1 求行列式判断这个矩阵是否有逆矩阵

    在这里插入图片描述

    行列式不为0,说明该矩阵存在逆矩阵(如果矩阵的行列式为0,则判断该矩阵为奇异矩阵(singular matrix),即不可逆矩阵

    • Step2 求余子式矩阵(如下图,别被图片吓到了,其实很简单,红色的是删除线,不用看,绿色的是保留的矩阵元素,橙色和蓝色线就是上面的行列式对角线求法,依次求余下数字组成的矩阵的行列式)

    在这里插入图片描述

    得到新的矩阵称为余子式矩阵:

    请添加图片描述

    • Step3 求代数余子式矩阵(余因子矩阵)(加入相隔的正负号)

在这里插入图片描述

经过上面的符号变换,你就得到了余因子矩阵,也叫代数余子式矩阵

  • Step4 求伴随矩阵(就是转置一下)

在这里插入图片描述

  • Step5 乘上矩阵A的行列式分之一,即(矩阵数乘很简单,不作解释)

在这里插入图片描述

  • 这样,就求出了矩阵A的逆矩阵

3、更简单,用numpy程序求逆矩阵

  • 还是这个A矩阵

在这里插入图片描述

  • 用以下程序求逆矩阵(python环境,已经安装了numpy库)

  • 站内搜索安装 numpy 库,本文章不再详细解释

inverse.py

import numpy as np

# 定义一个函数来计算矩阵的逆矩阵
def calculate_inverse_matrix(matrix):
    try:
        # 使用numpy的linalg.inv函数来计算逆矩阵
        inverse_matrix = np.linalg.inv(matrix)
        return inverse_matrix
    except np.linalg.LinAlgError:
        # 如果矩阵不可逆,捕捉错误并返回提示信息
        return "矩阵不可逆"

# 定义一个示例矩阵
example_matrix = np.array([[5, 7, 4],
                            [2, 1, 6],
                             [3, 1, 5]])

# 计算逆矩阵
inverse = calculate_inverse_matrix(example_matrix)

# 打印结果
if isinstance(inverse, str):
    print(inverse)
else:
    print("逆矩阵为:\n", inverse)

运行结果:

PS F:\blog> python .\inverse.py
逆矩阵为:
 [[-0.0212766  -0.65957447  0.80851064]
 [ 0.17021277  0.27659574 -0.46808511]
 [-0.0212766   0.34042553 -0.19148936]]
  • 和手算的结果一致,说明手算的步骤正确。

6、零矩阵与单位矩阵

  • 零矩阵(这些都是零矩阵,所有元素为0)

    在这里插入图片描述

    • 符合矩阵的加减法运算法则(见上)的矩阵和零矩阵相加减都为它本身

    • 符合矩阵乘法运算法则(见上)的矩阵和零矩阵相乘都为零矩阵(矩阵型号有可能会发生变化)

  • 单位矩阵(单位矩阵都是方阵,主对角线上都是1,其余都是0)

    在这里插入图片描述

    • 任何矩阵与单位矩阵的乘积结果为其本身

三、总结

本章主要是对机器人运动学研究中的数学工具,主要是对矩阵进行了一些知识恶补,当然,这一章没有提到为什么要用矩阵,也没提到任何与机器人相关的内容,我们将在后面的文章中讲解矩阵到底是什么,有什么妙用,以及在机器人研究中的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值