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

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...