机器人控制系列教程之关节空间运动控制器搭建(1)
机器人位置控制类型
机器人位置控制分为两种类型:
-
关节空间运动控制—在这种情况下,机器人的位置输入被指定为一组关节角度或位置的向量,这被称为机器人的关节配置,记作q。控制器跟踪一个参考配置,记作 q r e f q_{ref} qref,并返回实际的关节配置q。这也被称为配置空间控制。
-
任务空间运动控制—位置被指定给控制器作为末端执行器的姿态。然后,控制器驱动机器人的关节配置到使末端执行器移动到指定姿态的值。这有时被称为操作空间控制。
下图展示了这两种运动控制类别中不同类型的输入/输出。


关节空间运动控制
关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动,在关节空间运动模型对象和关节空间运动模型块中使用。机械手是典型的位置控制设备,要进行关节空间控制,需要指定关节配置向量 q q q,以跟踪参考配置 q r e f q_{ref} qref。为此,您可以对机器人关节进行闭环控制,并使用运动模型模拟机器人在此控制下的行为。

要使这种方法最接近实际系统的运动,就必须准确表示控制器和被控系统的动态。本节将主要介绍在闭环联合空间位置控制下的机器人行为建模方法:
- 计算扭矩控制的系统—刚体动力学采用标准刚体机器人动力学建模,但对整体动力学进行了补偿,并定义了误差动力学。
- PD 控制的系统—刚体动力学模型采用标准刚体机器人动力学,通过PD控制和重力补偿提供关节扭矩输入。该控制器不会对刚体整体运动的产生较大的补偿。
- 独立关节运动的系统—每个关节独立建模为一个二阶闭环系统,是一个低保真度模型,忽略了机器人动力学,并假定为闭环系统响应。该模型可以被认为是在没有外力的情况下闭合环运动如何表现的最好情况,因为动力学被简化和直接定义。
状态量及误差表示
关节空间运动模型状态有:
- q q q—机器人关节配置,作为关节位置的矢量。对于旋转副单位为: r a d rad rad,对于平移副单位为: m m m。
- q ˙ \dot q q˙—机器人关节速度矢量,对于旋转副单位为: r a d / s rad/s rad/s,对于平移副单位为: m / s m/s m/s。
- q ¨ \ddot q q¨—机器人关节加速度矢量,对于旋转副单位为: r a d / s 2 rad/{s^2} rad/s2,对于平移副单位为: m / s 2 m/{s^2} m/s2。
闭环系统的许多运动方程都是从定义机器人开环运动的标准刚体机器人动力学中推导出来的,动态误差表示为:
q ~ = q − q r e f \tilde q = q - {q_{ref}} q~=q−qref
计算扭矩控制的系统
当运动模型被定义为受计算扭矩控制的机器人时,运动模型使用标准刚体机器人动力学,但广义力输入由控制律提供,该控制律对刚体动力学进行补偿,并定义二阶误差动力学响应。
- 输入: q r e f 、 q ˙ r e f 、 q ¨ r e f q_{ref}、\dot q_{ref}、\ddot q_{ref} qref、q˙ref、q¨ref分别为期望的关节配置、速度、加速度;还可使用ExteralForce函数自定义外力和扭矩。
- 输出: q 、 q ˙ 、 q ¨ q、\dot q、\ddot q q、q˙、q¨分别为关节配置、速度、加速度,但Simulink的模块中只返回加速度,可使用积分单元模块来求解其他变量。

如上图所示,完整系统由标准刚体机器人动力学组成,具有通过广义力输入Q到动力学模型的闭环控制律:

- M ( q ) M(q) M(q):为基于当前机器人构型的关节空间质量矩阵,使用
massMatrix函数来计算该矩阵。 - C ( q , q ˙ ) C(q,\dot q) C(q,q˙):为科里奥力,与关节速度一起形成速度积,可使用
velocityProduct函数来计算。 - G ( q ) G(q) G(q):为所有关节保持其位置所需的力矩和力,这是由于在给定的重力下作用在机器人上的重力和力。使用
gravityTorque函数计算重力力矩。详细的讲解可见: - [ ω n 2 ] d i a g {[\omega _n^2]_{diag}} [ωn2]diag:N * N对角线,ω为自然频率,单位Hz。
- [ 2 ζ ω n 2 ] d i a g {[2\zeta \omega _n^2]_{diag}} [2ζωn2]diag:N * N对角线矩阵,ζ为阻尼比,在jointSpaceMotionModel模块的DampingRatio属性中指定。
基于计算扭矩控制系统搭建实例
整体搭建完成之后的模型文件如下,各个模块说明如图所示。

相较于上一期推文()文件,此处动力学模型的输入做了如下修改,通过修改输入可实现输入关节角度、速度及加速度的控制。其余不做改变。

关节空间运动模型中即为MATLAB封装的控制器,该控制器可在模块属性页中Motion Type选择计算力矩控制、PD 控制、独立关节运动以及开环控制。本例程中选择计算力矩控制,通过不断的调整阻尼率和自然频率即可得到适配到较好的控制效果。

此处,控制器的输入定义了两个输入,其中一个为输出重复离散时间序列[0 1 -1.5 1 1.5 0],其控制效果对比图如下:


另一个输入为使用规划器,规划后的轨迹,具体设置如下:

其机器人的运动如下:

往期推荐

相关文章:
机器人控制系列教程之关节空间运动控制器搭建(1)
机器人位置控制类型 机器人位置控制分为两种类型: 关节空间运动控制—在这种情况下,机器人的位置输入被指定为一组关节角度或位置的向量,这被称为机器人的关节配置,记作q。控制器跟踪一个参考配置,记作 q r e f q_{re…...
[linux]sed命令基础入门详解
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这…...
Charles抓包工具系列文章(一)-- Compose 拼接http请求
一、背景 众所周知,Charles是一款抓包工具,当然是http协议,不支持tcp。(如果你想要抓tcp包,请转而使用wireshark,在讲述websocket的相关技术有梳理过wireshark抓包) 话说回来,char…...
OLMo:真正完全开源的大模型
最近,又有一家机构AI2(Allen Institute for AI)开源了一个LLM:OLMo,它的英文全称就叫Open Language Model。相比之前开源的大模型,OLMo的独特之处是完全开源,除了训练的模型,OLMo还开…...
51单片机STC89C52RC——12.1 数据存储芯片AT24C02
目的/效果 利用存储芯片AT24C02存储数据,LCD1602显示存储的数据。 一,STC单片机模块 二,AT24C02存储芯片 2.1 介绍 AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,采用先进CMOS技术实质上减少了器件的功…...
融入云端的心跳:在Spring Cloud应用中集成Eureka Client
融入云端的心跳:在Spring Cloud应用中集成Eureka Client 引言 在微服务架构中,服务发现是一个关键组件,它允许服务实例之间相互发现并通信。Netflix Eureka是Spring Cloud体系中广泛使用的服务发现框架。Eureka提供了一个服务注册中心&…...
CocosCreator构建IOS的wwise教程
CocosCreator构建IOS教程 添加wwise教程: 1.添加include 2.添加SoundEngine 3.添加Profile-iphoneos下面lib下面的.a 4.导入js调用C++的文件 5.导入这些文件 6.初始化ios绝对路径和TTS语音合成对象 6.获得根目录绝对路径,加载pck需要找到绝对路径。怎么找绝对路径? #impor…...
掌握 SQL Server 中的 FLOOR 函数:数据舍入的艺术
掌握 SQL Server 中的 FLOOR 函数:数据舍入的艺术 引言 在数据分析和处理中,我们经常需要对数值进行精确控制,比如将数值舍入到特定的精度。SQL Server 提供了多种数学函数,其中 FLOOR 函数就是用来执行向上舍入操作的强大工具。…...
【折腾笔记】兰空图床使用Redis做缓存
前言 最近发现我部署在群晖NAS上的兰空图床程序在高并发的情况下会导致图片加载缓慢或出现图片加载失败的情况,于是我查阅了官方文档资料并进行了一系列的测试,发现兰空图床如果开启了原图保护功能,会非常的吃CPU的性能,尤其是在…...
【Ubuntu】如何用指令设置静态IP
这里介绍的是利用netplan 的配置文件一般在 /etc/netplan/ 目录下,文件名类似 01-network-manager-all.yaml。 用 nano/ vim 编辑器打开配置文件: sudo nano /etc/netplan/01-network-manager-all.yaml # 替换成你的文件名修改配置文件 network:versi…...
mechanize - 自动化与HTTP web服务器的交互操作
1、前言 随着自动化测试的普及与落地推广,出现了众多知名的自动化测试工具,如Selenium 、Robot Framework、Playwright等。本文将介绍一款在Python环境下的mechanize库,这个库能够模拟浏览器行为,支持发送HTTP请求、解析HTML页面和…...
【Android】保留elevation层级效果,舍弃阴影效果
关于elevation属性 elevation是高度,海拔的意思 该属性可以设置View在父容器中的层级,即z属性 当view的elevation高于其它view时,它将显示在最上方,并产生阴影效果 关闭阴影效果 view的高度阴影,通过outlineProvi…...
Java新手启航:Windows下JDK安装,开启编程之旅
你是不是对编程充满好奇,想要迈入Java的世界,却不知道从何开始?别担心,每一个Java大师都是从安装JDK开始的,而今天,我将手把手教你如何轻松完成JDK的安装,让你迈出编程之旅的第一步! 接下来&am…...
c++指针和引用之高难度(二)习题讲解
1.【单选题】 int a[4] { 1001,1002,1003,1004 }; int* p{ &a[1] }; p[1] ? A 1001 B 1002 C 1003 解析:这道题考察了指针和数组可以混用。p 指向了 数组 a[0] 的地址,也就是 1002 的地址,此时 *p p[0]…...
UNIAPP编译到微信小程序时,会多一层以组件命名的标签
UNIAPP编译到微信小程序时,会多一层以组件命名的标签 解决方案 可以配置virtualHost来配置 export default {options: {virtualHost: true} }...
工业自动化控制中心
目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using System; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace 工业自动化控制中心 {public partial class Form1 : Form{public Form1(){InitializeComponent();}pri…...
【Git】GitIgnore不生效
这里可能有两种原因,一个没有刷新Git缓存,二是Git忽略规则有问题 更新Git缓存 git rm -r --cached . git add . git commit -m "modify git ignore rule"Ignore规则 检查下忽略文件的目录表示是否正确 XXX忽略任意目录下名为XXX的文件 …...
面向对象,常用类,集合,异常,JDBC,mysql数据库内容的复习,
1,面向对象 面向对象与面向过程对比 面向过程:关注过程,适合解决简单直接的问题,代码结构以函数为单位,如C语言。 面向对象:关注类,适合解决复杂问题更加适合解决复杂的项目中的问题等等&…...
HTML5+JavaScript单词游戏
HTML5 JavaScript单词游戏 数据字典格式:每行一个 单词 ,单词和解释用空格分隔,如 a art.一(个);每一(个) ability n.能力;能耐,本领 able a.有能力的;出色的 baby n.婴儿;孩子…...
Windows 中的 Hosts 文件是什么?如何找到并修改它?
什么是 Hosts 文件 Hosts 文件是一个纯文本文件,存在于几乎所有的操作系统中,用于将主机名映射到 IP 地址。在域名系统(DNS)尚未普及之前,Hosts 文件是计算机网络中唯一用于主机名解析的方式。随着网络规模的扩大和 D…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
