机械手基础知识(2)之机械手的正运动学和逆运动学问题

2023-05-16

开篇总结:
------机械手运动学是机器人控制中的重要研究内容,得知机械手各关节变量的大小,可以计算出机械手末端的位姿,这个过程叫做机械手的正向运动学
------获得机械手末端在笛卡尔空间中的位姿,可以计算机械手的各个关节变量的大小,这种逆过程叫做机械手逆向运动学
------给定机械手各关节大小以及 D-H 模型,则可以唯一计算出机械手末端在笛卡尔空间中的位姿,但是,其逆过程可能对应多个解。

机械手的正运动学问题和机械手的逆运动学问题

------关于机械手的一些知识,我之前介绍了关于基于视觉伺服技术的机械手控制的两种方法,即基于图像的视觉伺服和基于位置的视觉伺服,在这一部分,我将介绍通过举例介绍什么事机械手的正运动学问题,什么是机械手的逆运动学问题。

1. 机械臂系统构型描述

------一个串联的机械臂的整个链路由一组被称为连杆的刚体组成,这些连杆由关节(运动副)连接起来。每个关节都有一个自由度,可以是滑动的或移动的,也可以是转动的(转动关节)。关节的运动改变了其相邻连杆的相对角度或位置。
------一个机器人的关节结构可以用一个字符串来描述,例如 Puma 为‘RRRRRR’,斯坦福臂为‘RRPRRR’,其中每个字符代表了相应关节的类型,R 是转动副,P 是移动副。在 1955 年,迪拉维特(Denavit)和哈滕贝格(Hartenberg)提出了一种系统的描述串联式链路上连杆和关节的几何形状的方法,这就是如今熟知的 D-H 参数法。
------有 N 个关节(编号从 1 到 N)的机械臂有 N +1个连杆(编号从 0 到 N)。连杆0 是机械臂的基座,连杆 N则固定连接末端执行器或者工具。关节 j 将连杆 j +1接到连杆 j ,因此关节 j 带动连杆 j 。连杆被看作一个刚体,它确定了相邻两个关节轴线的空间关系。一个连杆由长度 a i a_{i} ai和扭转角 α i \alpha_{i} αi两个参数来描述。同样,一个关节也由两个参数来描述,其中连杆偏移 d i d_{i} di是指沿着关节轴线从一个连杆坐标系到另一个连杆坐标系的距离,而关节角 θ i \theta_{i} θi则是指一个连杆相当于另一个连杆关于关节轴线的转动角度。
图1
-----------------------------------------------------------------图1 ----------------------------------------------

------图1对这种参数法进行了图示说明。深红色和蓝色分别表示与连杆和连杆关联的所有参数。而圆圈中的数字表示进行基本变换的顺序,圆圈中的数字表示基本变换的顺序。{j}坐标系固接于连杆 j 的远端或末梢。关节 j 的轴线即为该坐标系的 z 轴,这些关节和连杆的参数既我们所熟知的 D-H 参数,总结与表 1 中。
------在这个约定之后,第一个关节 1,连接连杆 0 和连杆 1。连杆 0 是机器人的基础。通常对于第一个连杆, d i = α i = 0 d_{i}=\alpha_{i}=0 di=αi=0,但我们可以假设 d i d_{i} di来表示基座上的肩关节的高度超出基座。
在这里插入图片描述
----------------------表1. D-H参数,包括它们的物理意义,符号和定义 ------------------------------

------最后一个关节 N ,连接连杆 N -1连杆和 N ,连杆 N 是机器人的工具,它的相关参数 d N d_{N} dN a N a_{N} aN 分别代表了该工具的长度和 x 轴偏移量。
------从连杆坐标系{j -1} 到坐标系{j}的变换被定义为基本的旋转和平移,其形式如下:

在这里插入图片描述
----------------------------------------------------------------------------------(1)
它可以展开为
在这里插入图片描述
--------------------------------------------------------------------------------------------(2)
------参数 a j a_{j} aj α j \alpha_{j} αj 始终是常量,对于转动关节 θ j \theta_{j} θj是关节变量且 d j d_{j} dj是常量,然而对于移动关节 d j d_{j} dj 是变量, θ j \theta_{j} θj是常量,且 α j = 0 \alpha_{j}=0 αj=0。使用如下的广义关节坐标:
在这里插入图片描述
------对于一个 N 轴的机器人,其广义关节坐标为 q ∈ l q\in l ql ,其中 l ⊂ R N l\subset \mathbb{R}^{N} lRN被称为关节空间或者位形空间。一般情况下,一个全旋转机器人的关节坐标被称为关节角度。这种关节坐标同时也称为机械臂姿态,它不属于笛卡尔姿态的末端执行器的姿态。
------使用matlab中 Robot 工具箱中的 Link 对象来描述一个机器人连杆,其创建如下;

>> L = Link([0, 0.1, 0.2, pi/2, 0]) 
L=
theta=q d=0.1 a=0.2 alpha=1.571(R,stdDH)

------其中,输入向量的元素按顺序分别是 θ j \theta_{j} θj d j d_{j} dj a j a_{j} aj α j \alpha_{j} αj 。而可选的第 5 个元素 σ j \sigma_{j} σj则表明该关节是转动的 σ j = 0 \sigma_{j}=0 σj=0 ,还是移动的 σ j = 1 \sigma_{j}=1 σj=1,如果未指定该值则默认为转动关节。
------该 Link 对象的显示值不仅给出了其运动学参数,还表示了其他的一些状态,例如它是一个转动关节(标签“R”),以及使用了标准的 D-H 参数表达(标签“stdDH”)。

2. 机械臂的正运动学分析

------机械手正运动学问题也称为直接问题,指的是:对于一个给定的机械手,在已知机械手杆件参数和关节角矢量的情况下,求机械手末端工具相对于世界坐标系(或称参考坐标系、基坐标系)的位姿pose。
上句话是什么意思呢?意思就是,在在知道机械手各杆件参数的情况下,机械手底层控制算法驱动机械手关节和杆件运动,让机械手各关节杆件满足这些参数,这时,机械手末端工具就可以到达期望的位姿。
------机械臂的正运动学通常表述为如下的函数形式:
在这里插入图片描述
--------------------------------------------------------------(3)
------它表明末端执行器的位姿是基于关节坐标的一个函数。若用齐次变换,其表达式将由(2)式所给的单个连杆变换矩阵的简单乘积。对于 N 个机械臂则有
在这里插入图片描述
----------------------------------------------------------------------------------------(4)
------对于任何一个机械臂,无论其关节的数量和关节如何,都可以计算出其正向运动学解。通常真正实用的机械臂的任务空间是三维的,控制机械臂运动,就是要给机械臂每个关节一个特定的电压控制信号,使他们各自运动一个特定的角度,得到期望的位姿状态,对于一个 6轴机械臂,其总的矩阵变换通常被写作 T 6 T_{6} T6 。这个过程称为机械臂的正运动学,本文中将以 Puma560 机械臂作为所有全旋转六轴机械臂来在 MATLAB 仿真。

------使用如下指令来定义一个 Puma560 机械臂的实例:

>> mdl_puma560

它将在工作区中创建一个名为 p560 的 Serial Link(串行接口、串行链路)
在这里插入图片描述
在这里插入图片描述
------指令“mdl_puma560”还在工作区中创建了大量关节坐标向量,代表了一些典型的机械臂位形:
在这里插入图片描述
机器人的正向运动学计算如下:
在这里插入图片描述
它返回一个对应末端执行器位姿的齐次变换 T 6 T_{6} T6
至此,在已知机械手参数的情况下,机械手末端位姿求得。

3. 机械臂的逆运动学分析

------机械手运动学逆问题亦称解臂形问题, 它是指在已知手臂各杆件几何参数及手臂末端执行器相对于参考系坐标系的期望位姿为已知条件下, 求手臂能否使其末端执行器到达这个预期的位姿? 若能到达, 那么手臂有几种不同的解?
------在上一小节的中,讨论了机械臂的正运动学求解方法,即在给定关节坐标以及可选工具和基座变换的条件下,如何确定末端执行器的位姿。实际应用中的另一个问题是机械臂运动学的逆问题:给定期望的末端执行器位姿 ξ E \xi _{E} ξE ,求取所需的关节坐标。 对机械臂逆运动学的求解可分为:基于解析式的封闭解和基于迭代的数值解。由于数值解析法比相应的封闭解法的求解速度要慢的多。
------对六自由度机械臂来说,只有在特殊情况下才有解析解(封闭解):存在几个正交关节轴或有多个 a i a_{i} ai为 0 或 ± 9 0 o \pm 90^{o} ±90o。研究表明,具有 6 个旋转关节的机器人存在封闭解的充分条件是相邻的三个关节轴线相交于一点。Puma560 机器人也满足这个条件。
------如上节利用 Puma560 机械臂的实例来讨论逆运动学问题。机器人的标准状态的关节坐标为
在这里插入图片描述
对应的末端执行器位姿是:
在这里插入图片描述
------Puma560 是一种包含一个球形腕关节的六轴臂形机器人,因此使用 ikine6s 方法(ikine6s 方法会检查机器人的 D-H 参数,以确定它是否满足这些标准)来计算其逆运动学的封闭解。要实现位姿T,所需的关节坐标为
在这里插入图片描述
但令人惊讶的是,这些解与我们采用的标准状态关节坐标完全不同。但进一步探究:
在这里插入图片描述
------可以发现,两组不同的关节坐标得到了相同的末端执行器位姿。因此逆运动学求解的结果一般不是唯一的,实际应用要根据机械臂关节的转动范围,逆运动学的求解结果一般选择使关节移动量最少的解。

4. 总结

在这里插入图片描述
关于机械手的正逆运动学分析,我们需要结合实际的应用来分析,例如,在基于位置的视觉伺服系统中,我们可以这样分析机械手的正逆运动学关系。

简单而言,对于一个七个关节全是旋转关节的KUKA机械手来讲,只有一个参数θ。而机械手逆运动学要做的就是:在机械手末端工具的位姿已知的情况下,估计每个关节的旋转角度,而机械手正运动学问题则是根据这些角度驱动机械手各关节的旋转,则机械手末端工具最终会到达期望的位姿。
下面用一幅图来显示正逆运动学以及机械手位姿估计算法之间的关系。

如上图,首先,计算机根据相机内部参数,目标的三维模型估算出相机相对于目标物体的相对位姿。然后,机械手逆运动学根据估算出来的位姿计算出机械手各关节的旋转角度;最后,机械手关节控制器控制机械手个关节运动,让机械手末端到达期望位姿。
但是,有一点需要提出的是,一般来讲,机械手逆运动学求解是的结果不是唯一的。也就是说机械臂可能会以不同的状态控制末端工具到达指定地点,然而这些不同的解中,肯定是有不符合条件的解,比如没有绕开障碍物等,因此,我们需要对齐进行约束。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机械手基础知识(2)之机械手的正运动学和逆运动学问题 的相关文章

  • 音视频开发之音频基础知识

    音视频开发之音频基础知识 转自https blog jianchihu net av develop audio basis html 什么是声音 介质振动在听觉系统中产生的反应 是一种波 因为是一种波 xff0c 所以我们可以用频率 振幅
  • 机器学习中神经网络,支持向量机以及贝叶斯分类器总结

    第五章神经网络 5 1神经元模型 神经网络中最基本的成分是神经元模型 xff0c 即 简单单元 在 M P神经元模型 中 xff0c 神经元接受收到来自n个其他神经元传递过来的输入信号 xff0c 这些输入信号经过带权重的连接进行传递 xf
  • 机器学习中的降维与度量学习(reduce dimension and metric learning)

    降维与度量学习 k近邻学习 k近邻 k Nearest Neighbor 简称kNN 学习是一种监督学习方法 其工作机制为 xff1a 在样本中 xff0c 根据距离度量找出训练集中临近的k个样本 xff0c 基于这k个样本进行预测 一般
  • Warning: Invalid argument “/map“ passed to canTransform argument target_frame in tf2 frame_ids···

    Warning Invalid argument map passed to canTransform argument target frame in tf2 frame ids cannot start with a like at l
  • CAN为什么会发送失败

    CAN总线调试过程中出现报文发送失败 xff0c 很多工程师都对此只知其一不知其二 xff0c 这里就CAN报文发送失败的问题我们来做一次探讨 在了解CAN报文为什么会发送失败之前我们先看看一条正确的CAN报文到底应该是怎么样的 xff0c
  • git分支和tag

    分支管理 查看当前分支 git branch创建分支 git branch git branch index one切换分支 git checkout lt 分支名称 xff0c 主分支是master gt git checkout ind
  • TT无人机扩展模块库分析(default.ino)补篇2

    这个简单 请对照 因为源码在这里出现了和手柄相关的源码 设置tof传感器的超时时间 xff08 500 xff09 什么单位 xff1f 没有搜索到 xff0c 我用SI了 搜索到了 有很多函数 定位位置 在这里 找到了 xff0c 为什么
  • TCP建立连接的过程

    TCP是面向连接的 可靠的 基于字节流的传输层协议 xff0c 是TCP IP协议中最重要的协议之一了 我们都知道TCP通过三次握手建立连接 xff0c 那么每一次握手的作用 为什么要三次握手 如果某次握手丢包会发生什么呢 xff1f 文章
  • CANanlystII 基于linux的二次开发实践

    1 USBCAN分析仪国内现状 这是目前国内市场上的USBCAN分析仪现状 2 创芯科技产品 创芯科技的这个红色盒子是我比较下来综合性价比最高的 同时支持windows和linux的设备只要320元左右 你既可以用可视化界面发送 接收报文
  • AXI DMA总结、内核axidmatest.c测试程序分析、SG mode

    AXI DMA 概述 xff1a XILINX提供的AXI DMA支持Scatter Gather mode和Direct Register mode 数据位宽支持32 64 128 256 512 1024bits xff0c strea
  • ZYNQ 平台 AD9361实现网络通信的一种方案+网卡驱动分析及实现

    声明 xff1a 文中若有不合理的地方 xff0c 欢迎讨论学习及指正 xff0c 本文仅仅涉及软件部分的代码 xff0c 不阐述逻辑代码的实现 功能 xff1a 通过AD9361芯片实现无线组网 xff0c 能实现视频 文件 音频等传输
  • MTD分析

    概述 xff1a 本文对mtd的整个结构进行了分析 xff0c 分析得并非很深入 xff0c 但可以了解大体框架和目录结构 xff0c 另外本文会对源码文件进行分析 xff0c 大致描述其作用 xff0c 针对本文的内容中 xff0c 如有
  • CAN总线详解(转)

    1 简介 CAN是控制器局域网络 Controller Area Network CAN 的简称 xff0c 是一种能够实现分布式实时控制的串行通信网络 优点 xff1a 传输速度最高到1Mbps xff0c 通信距离最远到10km xff
  • Linux Socket CAN——驱动开发(转)

    Linux Socket CAN驱动开发 一 CAN总线协议 CAN是Controller Area Network 控制器局域网 的缩写 CAN通信协议在1986年由德国电气商博世公司所开发 xff0c 主要面向汽车的通信系统 现已是IS
  • Joint state with name: “base_l_wheel_joint” was received but not found in URDF

    ROS melodic下运行出现 WARN xff1a Joint state with name base l wheel joint was received but not found in URDF 原因是在robot描述文件URD
  • 已解决 vmware 虚拟机安装后没有虚拟网卡问题

    我用的方法是重装vmware xff0c 使用的是win10的系统 之前安装网ubuntu以后 xff0c 发现主机并没有虚拟网卡 xff0c 也百度了各种方法 xff0c 然而并没有什么用 xff0c 也问了很多人 xff0c 他们也提供
  • rk3399下pwm驱动

    现在记录一下rk3399下pwm的驱动编写 xff0c 下面是内核pwm的API xff0c 从开源论坛复制 xff08 firefly的开源论坛里面的Wiki教程 xff09 1 在要使用 PWM 控制的设备驱动文件中包含以下头文件 xf
  • rk3399下spi驱动

    SPI 使用 Note xff1a 本文从firefly wiki截取 SPI是一种高速的 xff0c 全双工 xff0c 同步串行通信接口 xff0c 用于连接微控制器 传感器 存储设备等 Firefly RK3399 开发板提供了 SP
  • rk3399 u-boot修改开机logo以及开机动画和开机视频

    首先分析了一下uboot启动流程中的一部分代码 xff0c 如下 第一部分 xff1a 开机logo xff08 下面代码分析排版有点乱 xff0c 可以忽略 xff09 1 board late init rk33xx c board r

随机推荐

  • VMware 虚拟网卡防火墙问题

    看了很多人遇到过一段时间会自己删除虚拟网卡的问题 xff0c 这里做一个补充 xff0c 关于防火墙问题 xff0c 如下 这里点进去 点击更改设置 xff08 先找到下图这一项 xff09 最后记得保存更改 xff0c 关于VMware的
  • postman汉化包下载

    postman汉化包 https github com hlmd Postman cn releases postman官网下载地址 Download Postman Get Started for Free
  • 一帧数据接收方法

    最近在做485数据通讯 xff0c 遇到一些通讯问题 xff0c 特意去查找资料 xff0c 一帧数据接收有三种方法 xff0c 现分享如下 xff1a 第一种方法 xff1a 根据帧头和帧尾进行校验 xff0c 串口发送2字节例如 xff
  • 如何使用RTKLIB进行RTK定位(一)

    今天从这个demo xff0c 教给大家如何使用RTKLIB进行RTK定位 xff0c 包括配置文件 数据等 xff1b RTKLIB源码和exe下载地址 xff1a RTKLIB An Open Source Program Packag
  • C++ “::” 作用域符 双冒号

    一 是作用域符 xff0c 是运算符中等级最高的 xff0c 它分为三种 1 global scope 全局作用域符 xff09 xff0c 用法 xff08 name 2 class scope 类作用域符 xff09 xff0c 用法
  • OpenMv测距(Apriltag)

    利用OpenMv测离Apriltag的距离 xff08 其他色块啥的算法都差不多 xff0c 主要是Apriltag精确一些 xff09 span class token comment 本次利用OpenMv单目测距Apriltag离摄像头
  • CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake:27 (message)

    CMake Error at usr lib x86 64 linux gnu cmake Qt5Core Qt5CoreConfig cmake 27 message 在catkin make的时候 xff0c 如果提示 so文件报错 x
  • Deep-Sort多目标追踪算法代码解析

    Deep SORT是多目标跟踪 Multi Object Tracking 中常用到的一种算法 xff0c 是一个Detection Based Tracking的方法 这个算法工业界关注度非常高 xff0c 在知乎上有很多文章都是使用了D
  • 红黑树的查找时间复杂度O(logn)

    红黑树查找时间复杂度 如果二叉排序树是平衡的 xff0c 则n个节点的二叉排序树的高度为Log2n 43 1 其查找效率为O Log2n xff0c 近似于折半查找 如果二叉排序树完全不平衡 xff0c 则其深度可达到n xff0c 查找效
  • Ubuntu16.04环境下STM32和ROS间的串口通信

    目录 前言介绍 lt 1 gt 最终协议的样子 lt 2 gt 本方案提供的API实现的功能 原理 lt 1 gt 简要叙述 lt 2 gt 这里是如何使用共用体的 xff1f 前期准备 lt 1 gt 确保硬件连接 lt 2 gt 查看串
  • C++版本OpenCv教程(三十五 )Laplacian算子

    上述的边缘检测算子都具有方向性 xff0c 因此需要分别求取X方向的边缘和Y方向的边缘 xff0c 之后将两个方向的边缘综合得到图像的整体边缘 Laplacian算子具有各方向同性的特点 xff0c 能够对任意方向的边缘进行提取 xff0c
  • 【从零开始学深度学习编译器】五,TVM Relay以及Pass简介

    TVM Relay以及Pass简介 0x0 介绍0x2 Relay介绍0x2 1 使用Relay建立一个计算图0x2 2 Module xff1a 支持多个函数 xff08 Graphs xff09 0x2 3 Let Binding an
  • 模型量化的原理与实践 —基于YOLOv5实践目标检测的PTQ与QAT量化

    这里写自定义目录标题 一 量化基础知识 1 1 Tops是什么意思 1 2 什么是定点数 1 3 定点数转换 1 4 什么是量化 1 5 定点计算 1 5 1 定点计算 误差计算 1 5 2 定点计算 内存对比 1 5 3 定点计算 速度对
  • TensorRT INT8量化说明文档

    TensorRT developer guide intro quantization 7 Working with INT8 7 1 Introduction to Quantization 7 1 1 Quantization Work
  • YOLO-NAS讲解

    Meet YOLO NAS New YOLO Object Detection Model Beats YOLOv6 amp YOLOv8 代码链接 What is YOLO NAS What does the NAS in YOLO NA
  • Windows下jupyter notebook的安装和使用

    1 安装 xff1a xff08 1 xff09 首先打开Windows命令终端 xff1a 输入命令 xff1a pip install jupyter notebook 慢慢等待安装完成就可以了 我的是已经是安装完成了 在命令行窗口中输
  • 无人驾驶模型预测控制carSIM和MATLAB联合仿真

    本例参照龚建伟的 无人驾驶车辆模型预测控制 书中第四章节 1 carSIM软件介绍 carSIM是由美国MSC公司开发的车辆动力学仿真软件 xff0c 它可以方便灵活地定义实验环境和试验过程 xff0c 准确预测和仿真汽车的操纵稳定性 动力
  • Ubuntu之间通过有线网sftp传输文件

    两台Ubuntu设备之间有线网直连 xff0c 通过sftp传输文件 xff1a 打开有线连接 xff0c 配置ipv4 xff0c 可参考下图 xff1a 两台Ubuntu设备使用同一个网关 xff0c 但是地址ip必须不同 xff0c
  • 虚拟机VMware15中安装Ubuntu18.04步骤

    先安装虚拟机VMware15 xff1a 下载地址 xff1a Windows 10 64位下载链接 xff1a pan baidu com s 1Q9MVsEzVVoeOb99lQ1tsVQ 提取码 xff1a dggh Windows
  • 机械手基础知识(2)之机械手的正运动学和逆运动学问题

    开篇总结 xff1a 机械手运动学是机器人控制中的重要研究内容 xff0c 得知机械手各关节变量的大小 xff0c 可以计算出机械手末端的位姿 xff0c 这个过程叫做机械手的正向运动学 xff1b 获得机械手末端在笛卡尔空间中的位姿 xf