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

机器人控制系列教程之关节空间运动控制器搭建(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~=qqref

计算扭矩控制的系统

当运动模型被定义为受计算扭矩控制的机器人时,运动模型使用标准刚体机器人动力学,但广义力输入由控制律提供,该控制律对刚体动力学进行补偿,并定义二阶误差动力学响应。

  • 输入: q r e f 、 q ˙ r e f 、 q ¨ r e f q_{ref}、\dot q_{ref}、\ddot q_{ref} qrefq˙refq¨ref分别为期望的关节配置、速度、加速度;还可使用ExteralForce函数自定义外力和扭矩。
  • 输出: q 、 q ˙ 、 q ¨ q、\dot q、\ddot q qq˙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…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

【生成模型】视频生成论文调研

工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...