当前位置: 首页 > news >正文

25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆

雅可比矩阵计算

雅可比矩阵的定义

假设我们有一个简单的两个关节的平面机器人臂,其末端执行器的位置可以表示为:

其中:

  • L1​ 和 L2 是机器人臂的长度。
  • θ1​ 和 θ2是关节的角度。

计算雅可比矩阵

雅可比矩阵 JJ 的定义是将关节速度与末端执行器的速度联系起来,因此我们需要对末端位置 (x,y) 进行对关节角度 (θ1,θ2)的偏导数计算:

计算各偏导数
  1. 计算 ∂x/∂θ1:

  1. 计算 ∂x/∂θ2​:

  1. 计算 ∂y/∂θ1​:

  1. 计算 ∂y/∂θ2​:

构造雅可比矩阵

现在,我们将这些偏导数代入雅可比矩阵:

示例参数

假设:

  • L1=1
  • L2=1
  • θ1=π/4(45度)
  • θ2=π/4(45度)

计算函数值

  1. 计算 J 中的各项:

  1. 将这些值代入雅可比矩阵,得到:

  1. 结果为:

雅可比伪逆

雅可比伪逆(Jacobian Pseudoinverse)是雅可比矩阵的一个重要扩展,主要用于处理系统中的非线性或不适定问题。它常用来求解最小二乘问题和求逆运动学中的关节角度。以下是它的计算方法和主要用途。

计算雅可比伪逆

对于一个矩阵 J,其伪逆 J+ 可以通过以下步骤计算:

  1. 奇异值分解(SVD)
    将雅可比矩阵 J分解为:
    J=UΣVT
    其中:

    • U 和 V 是正交矩阵。
    • Σ是对角矩阵,包含 J 的奇异值。
  2. 计算伪逆
    伪逆可以表示为:
    J+=VΣ+UT
    其中 Σ+是 Σ的伪逆,具体为:

    • 如果 σi 是非零奇异值,则其伪逆为 1/σi。
    • 对于零奇异值,保持位置为0。

雅可比伪逆的用途

  1. 解决最小二乘问题
    在很多情况下,我们需要最小化误差。通过使用伪逆,可以有效解决 Jx=b 的最小二乘解:
    x=J+b

  2. 逆运动学
    在求解机器人运动学中,伪逆可以帮助找到关节角度,使得末端执行器的位置尽可能接近期望的位置。当系统存在多解或没有解时,伪逆能够提供一个合理的解。

  3. 速度控制
    用于实现关节速度与末端速度之间的转换,将末端的速度映射回关节空间。

  4. 处理测量噪声
    在传感器测量不精确的情况下,伪逆能够提供更稳健的解,从而减少噪声对系统的影响。

力雅可比矩阵

力雅可比矩阵(Force Jacobian Matrix)是一个重要的工具,用于描述机器人或机械系统中作用在末端执行器上的力与关节力之间的关系。它在机器人控制和力控制问题中起着关键作用。

力雅可比矩阵的定义

力雅可比矩阵通常表示为 JfJf​,用于将末端执行器的力(或力矩)映射到关节力(或关节力矩):

其中:

  • F 是末端执行器施加的力向量。
  • τ 是关节施加的力向量(常称为关节扭矩)。
  • Jf是力雅可比矩阵。

计算力雅可比矩阵

计算方法通常依据运动学模型和系统的配置。以下是一般步骤:

  1. 定义末端执行器的位置和姿态:确定末端执行器相对于机器人的位置和姿态。

  2. 反向求导:在求解冬锡变换(Derivation of the Kinematic Model)时,通过对系统运动学方程的求导,得到关于关节角度的变化对末端执行器的力的影响。

  3. 矩阵构造:根据定义,力雅可比矩阵的每一列通常由关节对末端执行器施加的力或扭矩的作用点位置来组成。这可以通过以下方式构造:

    • 对每个关节的力量影响进行建模,包括关节自由度和末端执行器位置。
    • 考虑重力和外力等对雅可比矩阵的贡献。

力雅可比矩阵的用途

  1. 力控制:在力控制任务中(如抓取或施力操作),力雅可比矩阵用于将目标末端执行器的力转变为关节力,以实现目标力的精确控制。

  2. 模仿人类操作:在机器人模仿人类动作时,力雅可比矩阵帮助捕捉人类在执行任务时施加的力,以及如何将其映射到机器人的关节上。

  3. 稳定性分析:在动态负载情况下,力雅可比矩阵可以帮助分析和保持系统的稳定性,确保机器人能够在外部干扰下保持平衡。

  4. 联动控制:在多关节系统中,力雅可比矩阵有助于协调多个关节的动作,以便同时实现特定的力和运动目标。

速度雅可比矩阵

速度雅可比矩阵(Velocity Jacobian Matrix)是描述机器人关节速度与末端执行器线性和角速度之间关系的工具。它通常用于运动学分析和机器人控制。

速度雅可比矩阵的定义

假设末端执行器的状态由位置 (x,y,θ) 表示,其中 (x,y)是末端执行器的位置,θ 是其朝向角。速度雅可比矩阵 Jv将关节速度 (θ˙1​,θ˙2​) 与末端执行器的线性速度 (x˙,y˙​) 和角速度 θ˙ 关联起来,形式为:

计算速度雅可比矩阵

为计算速度雅可比矩阵,我们需要取末端执行器位置和姿态对各关节角速度的偏导数。

1. 末端执行器的速度表达式

根据先前的示例,末端执行器的位置是:

将其速度表示为关节速度的线性组合:

2. 计算偏导数

与之前相似,我们计算偏导数:

计算 ∂x/∂θ1 和 ∂x/∂θ2(如前所示):

计算 ∂y/∂θ1 和 ∂y/∂θ2

3. 构造速度雅可比矩阵

速度雅可比矩阵 Jv可以写成:

将之前计算出的值代入:

x˙ 表示末端执行器的线性速度,特别是它在 x 方向的速度分量。类似地,y˙​ 表示在 y方向的速度分量,θ˙表示末端执行器的角速度。

因此,速度雅可比矩阵的意义是将关节角速度(通过 θ˙1 和 θ˙2​ 表示)转化为末端执行器的线性和角速度(通过 x˙、y˙ 和 θ˙ 表示)。

刚度(Stiffness)

定义:刚度是指物体或系统抵抗变形的能力。刚度越大,物体在外力作用下产生的变形越小。

数学表达式
刚度 K可以用弹性模量(应力与应变的比值)表示,通常的关系为:

K=F/δ​

其中:

  • F 是施加的力
  • δ 是由该力引起的变形量(位移)

柔度(Compliance)

定义:柔度是刚度的倒数,描述物体或系统在施加力时的变形能力。柔度越大,物体在相同的力作用下产生的变形越大。

数学表达式
柔度 C 的定义为:

C=δ/F=1/K

相关文章:

25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆

雅可比矩阵计算 雅可比矩阵的定义 假设我们有一个简单的两个关节的平面机器人臂,其末端执行器的位置可以表示为: 其中: L1​ 和 L2 是机器人臂的长度。θ1​ 和 θ2是关节的角度。 计算雅可比矩阵 雅可比矩阵 JJ 的定义是将关节速度与末…...

网络爬虫js逆向之异步栈跟栈案例

【注意!!!】 前言: 1. 本章主要讲解js逆向之异步栈跟栈的知识(通过单步执行调试) 2. 使用关键字搜定位加密入口 3. 本专栏通过多篇文章【文字案例】的形式系统化进行描述 4. 本文章全文进行了脱敏处理 5. 详…...

使用Ollama本地部署deepseek

1、下载安装Ollama 前往下载页面 https://ollama.com/download下载好安装包,如同安装软件一样,直接安装即可 win中默认为C盘,如果需要修改到其他盘,查找具体教程 运行list命令,检查是否安装成功 2、修改模型下载的…...

Rust错误处理:从灭火器到核按钮的生存指南

开篇:错误处理的生存哲学 在Rust的平行宇宙里,错误分为两种人格: panic! → 核按钮💣(不可恢复,全系统警报)Result → 灭火器🧯(可控制,局部处理&#xff0…...

Golang:Go 1.23 版本新特性介绍

流行的编程语言Go已经发布了1.23版本,带来了许多改进、优化和新特性。在Go 1.22发布六个月后,这次更新增强了工具链、运行时和库,同时保持了向后兼容性。 Go 1.23 的新增特性主要包括语言特性、工具链改进、标准库更新等方面,以下…...

电脑运行黑屏是什么原因?原因及解决方法

电脑运行黑屏是指电脑在正常开机或使用过程中,突然出现屏幕变黑,无法显示任何内容的现象。这种现象可能会给用户带来很多不便,甚至造成数据丢失或硬件损坏。那么,电脑运行黑屏是什么原因呢?下面我们将分析几种可能的原…...

redis之AOF持久化过程

流程图 在redis.conf文件中配置appendonly为yes则开启aof持久化机制 #开启aof持久化,默认关闭为no appendonly no也可以在命令行开启 aof刷盘策略 #每个写操作都会同步刷盘。 appendfsync always #执行命令后先放入aof缓冲区,每秒钟将缓冲区数据刷盘…...

Elasticsearch:向量搜索的快速介绍

作者:来自 Elastic Valentin Crettaz 本文是三篇系列文章中的第一篇,将深入探讨向量搜索(也称为语义搜索)的复杂性,以及它在 Elasticsearch 中的实现方式。 本文是三篇系列文章中的第一篇,将深入探讨向量搜…...

Docker在安装时遇到的问题(第一部分)

一、在用docker-config-manager安装yum源时出现错误 [rootlocalhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 已加载插件:fastestmirror, langpacks adding repo from: https://download.docker.com/linux/ce…...

使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现

使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现 在 iOS 开发中,OpenGL ES 是一个强大的工具,用于实现高性能的 2D 和 3D 图形渲染。本文将详细分析一段完整的代码,展示如何使用 OpenGL ES 在 iOS 上渲染一个简单的四边形。我们将从代码的结构、关键模块、着色器的实…...

Spring Boot 2 快速教程:WebFlux处理流程(五)

WebFlux请求处理流程 下面是spring mvc的请求处理流程 具体步骤: 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找) 匹配条件包括…...

Vue 鼠标事件合集,关于鼠标右键的处理方法(改写鼠标右键方法、自定义鼠标右键)

鼠标事件使用 mousedown"canvasDown($event)"按下事件合集 click 点击某个对象时触发 mousedown 鼠标按钮被按下时触发 mouseup 鼠标按钮被松开时触发 mouseleave 当鼠标指针移出元素时触发 dblclick 双击时触发 mousemove 鼠标移动时触发&#xff0c…...

两种交换排序算法--冒泡,快速

目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序(Bubble Sort)是一种简单的排序算法,基本思想是通过反复交换相邻的元素,直到整个序列有序。它的名字来源于较大的元素像气泡…...

语音交友app系统源码功能及技术研发流程剖析

语音交友App的核心功能包括语音聊天、语音房间、社交互动等,开发流程涵盖需求分析、技术选型、前后端开发、实时通信集成、测试优化、部署上线及运营维护。 一、语音交友App的大概功能 1. 语音聊天 一对一聊天:用户可与好友进行私密语音通话。 群组语音…...

零基础Vue入门7——状态管理Pinia

本节重点: pinia是什么pinia怎么用 pinia是什么 vue中组件间的数据传递: app.config.globalProperties:能够被应用内所有组件实例访问到的全局属性的对象props:父传子用provide:父传后代用 想象下有咩有哪些数据存储…...

Bash (Bourne-Again Shell)、Zsh (Z Shell)

文章目录 1. 历史背景2. 主要区别3. 功能对比自动补全插件和主题路径扩展提示符定制 4. 性能5. 使用场景6. 如何切换 Shell7. 总结 以下是 Bash 和 Zsh 之间的主要区别,列成表格方便对比: 特性BashZsh默认Shell大多数Linux发行版默认ShellmacOS默认She…...

Android studio 创建aar包给Unity使用

1、aar 是什么? 和 Jar有什么区别 aar 和 jar包 都是压缩包,可以使用压缩软件打开 jar包 用于封装 Java 类及其相关资源 aar 文件是专门为 Android 平台设计的 ,可以包含Android的专有内容,比如AndroidManifest.xml 文件 &#…...

DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求

DeepSeek 的 LLM 推理新方法 DeepSeek 推出了一种创新方法,通过强化学习 (RL) 来提高大型语言模型 (LLM) 的推理能力,其最新论文 DeepSeek-R1 对此进行了详细介绍。这项研究代表了我们如何通过纯强化学习来增强 LLM 解决复杂问题的能力,而无…...

图论常见算法

图论常见算法 算法prim算法Dijkstra算法 用途最小生成树(MST):最短路径:拓扑排序:关键路径: 算法用途适用条件时间复杂度Kruskal最小生成树无向图(稀疏图)O(E log E)Prim最小生成树无…...

MySQL三大日志详解

在MySQL数据库的运行过程中,三大关键日志——binlog、redo log和undo log,起着至关重要的作用。理解这三大日志,对于深入掌握MySQL的工作原理、数据恢复以及主从复制等操作有着极大的帮助。本文将详细剖析这三大日志的作用和工作机制。 Binl…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

SQLSERVER-DB操作记录

在SQL Server中&#xff0c;将查询结果放入一张新表可以通过几种方法实现。 方法1&#xff1a;使用SELECT INTO语句 SELECT INTO 语句可以直接将查询结果作为一个新表创建出来。这个新表的结构&#xff08;包括列名和数据类型&#xff09;将与查询结果匹配。 SELECT * INTO 新…...