underactuated robotics lecture 1 笔记 --- Introduction

2023-11-05 23:10

本文主要是介绍underactuated robotics lecture 1 笔记 --- Introduction,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Introduction

最近因为目前的项目中,可能会用到一些基于动力学的planning 和control的算法,看了一下MIT欠驱动机器人的课程,通过记笔记的方式帮助自己查缺补漏。笔记基本上按照讲课的顺序进行梳理,穿插一些在matlab上实现的结果和个人的理解。

2 Motivation

2.1.1 Honda ASIMO vs passive dynamic walkers

ASIMO机器人的几大问题:
1)动作表现的想不了解自己的动力学;
2)使用高增益去follow desire trajectory(位置环控制),导致能量损失很大;
3)只在一个很小的状态空间中是稳定的,导致了速度、效率远低于人类;

美国在上世纪八十年代搞出来的Passive dynamic walker(PDW), 表现的更像了人类。

2.1.2 Birds vs modern aircraft

人类的航天技术已经发展的很成熟了,但是距离鸟类代差是非常明显的。人类走的路线是非常强劲的发动机动力+动力学设计,和鸟类的代差是:
1)鸟类的能量效率非常高,飞几千公里也不怎么需要能量;
2)鸟类的操控性特别强,转向速度快;
3)对鸟类的数据研究相对困难,人类通过研究类似的海洋生物,它们的动力学性能令人惊叹。

2.1.3 manipulation

工业机械臂的发展和航天技术的发展类似,机械臂还无法帮助人类完成基础的家务。对于抓取任务,当前主流采用的pipeline为:1)设置机械臂上的抓取点;2)移动到预抓取点;3)进行盲抓。因为没有通过和物体接触去辨识物体动力学,导致很多动力学接触的抓取任务,容易失败。

2.1.4 总结

传统控制理论通过反馈去克服机器自身的动力学,控制工程师不愿意把情况搞定复杂。对于无驱动或者是驱动力受限的情况,工程师不得不考虑系统的动力学,合理的利用动力学则能改善系统的效率、灵活度和鲁棒性。最优控制提供一条可行的方案,现实中的非线性系统则是一个拦路虎。

2.2 动力学系统定义

对于大部分的动力学系统(机械、液压、电气系统)的一般定义为一个二阶系统:
q ¨ = f ( q , q ˙ , u , t ) \ddot{q} = f(q,\dot{q}, u, t) q¨=f(q,q˙,u,t)
大部分系统可以写成affine 形式:
q ¨ = f 1 ( q , q ˙ , t ) + f 2 ( q , q ˙ , t ) u \ddot{q}=f_1(q,\dot{q},t)+f_2(q,\dot{q},t)u q¨=f1(q,q˙,t)+f2(q,q˙,t)u

两种情况下,系统可以看成是欠驱动的。欠驱动系统可以看成我想控制机器人系统中的某些状态量,但是无法直接控制,需要通过系统整体的力学,通过 状态方程关联(力学传导) 的方式进行控制。
1) d i m ( f 2 ( q , q ˙ , t ) ) < d i m ( q ) dim(f_2(q,\dot{q},t))<dim(q) dim(f2(q,q˙,t))<dim(q),驱动关节小于状态的自由度;
机械臂处于singularity时,不能算欠驱动的;
机械臂的虽然有限位,但是它也不需要使用限位的工作空间,这种也不算欠驱动系统;
2)输入u是受限的;

  • double pendulum system
    对于典型的倒立摆系统,动力学方程可以写成:
    M ( q ) q ¨ + c ( q , q ˙ ) q ˙ = τ g ( q ) + B u M(q)\ddot{q}+c(q,\dot{q})\dot{q}=\tau_g(q)+Bu M(q)q¨+c(q,q˙)q˙=τg(q)+Bu

完整的动力学方程如下:
在这里插入图片描述
判别是否是欠驱动系统:
q ¨ = M − 1 ( q ) [ τ g ( q ) + B u − C ( q , q ˙ ) q ˙ ] \ddot{q}=M^{-1}(q)[\tau_g(q)+Bu-C(q,\dot{q})\dot{q}] q¨=M1(q)[τg(q)+BuC(q,q˙)q˙]

M − 1 ( q ) M^{-1}(q) M1(q)是满秩的,只有B是满秩的,机械臂系统才是一个全驱动系统。

在这里插入图片描述
问题1: 欠驱动和机械臂奇异点(singularity)的关系。
奇异点关注是末端的受力。
F = J ∗ τ F = J * \tau F=Jτ
机械臂处于奇异点是,jacobian矩阵的秩降低,导致末端的受力在某个方向上不可控。
问题2:检验动力学公式。
使用simscape multi-body检验动力学公式是否正确,如果公式错误就不断减少影响因素(重力加速度、阻尼项、角度)
关节的摩擦阻力可以看成是外界的扰动力,在控制力基础上-b*w
在这里插入图片描述

2.3 feedback equivalence

对于最简单的连杆机器人,都存在着非线性,如上面double pendulum的动力学方程。先来看全驱动机器人能怎么处理这种非线性。
u = π ( q , q ˙ , t ) = f 2 − 1 ( q , q ˙ , t ) [ u ′ − f 1 ( q , q ˙ , t ) ] q ¨ = u ′ \begin{aligned} u &= \pi(q, \dot{q}, t)=f_2^{-1}(q,\dot{q},t)[u'-f_1(q,\dot{q},t)] \\ \ddot{q} &= u' \end{aligned} uq¨=π(q,q˙,t)=f21(q,q˙,t)[uf1(q,q˙,t)]=u

u’可以看成是间接的输入,想要系统实现什么样的加速度,就给什么样的u’,再根据已有的模型,推算实际的输入u。
1)精确的模型,消除了非线性的因素,通过换算消除了非线性;
2) d i m ( f 2 ) = d i m ( q ) dim(f_2)=dim(q) dim(f2)=dim(q),但是 f 2 f_2 f2不是square, f 2 f_2 f2的解不是唯一,是一个解集空间,再继续发展可以搞出分级控制。

  • feedback cancellation on the double pendulum
    希望double pendulum 表现的像单个倒立摆,也就是说 q 2 ¨ = 0 \ddot{q_2}=0 q2¨=0
    1)步骤1:计算u’: 现在是个线性控制器,直接把PID搬上来,不用反馈控制器当然是无法做到稳定的表现的像一个单杆。
    u ′ = − k p ∗ θ − k d ∗ θ ˙ u'=-k_p * \theta -k_d*\dot{\theta} u=kpθkdθ˙
    2)步骤2:计算实际的u;
    u = B − 1 ∗ ( M ∗ u ′ − τ + C ∗ q ˙ ) u = B^{-1}*(M*u'-\tau+C*\dot{q}) u=B1(Muτ+Cq˙)

全驱动系统可以看成是 q ¨ = u ′ \ddot{q}=u' q¨=u,但是欠驱动系统就要复杂的多。

2.4 Input and state constraints

工程实际中,往往某个关节缺少驱动源的情况较少,更多的情况是:驱动源的驱动能力受限;状态空间中很多地方是不安全的也受限。这两种情况都会导致控制器的输入维度降低,进而造成一种欠驱动的情况。

2.4.1 Nonholonomic constraints

  • 非完整约束一般描述环境对机器的限制,如差速轮系统,无法直接产生侧向移动,但是它的位置空间的维度并没有降低(仍然是想去哪就去哪)。 非完整约束的代数形式为:
    ϕ ( q , q ˙ , t ) = 0 \phi(q,\dot{q},t)=0 ϕ(q,q˙,t)=0
  • 完整约束 holonomic constraints
    环境对机器的约束加强了,位置空间上的很多位置是去不了的,例如火车的轨道。
    ϕ ( q , t ) = 0 \phi(q,t)=0 ϕ(q,t)=0

2.5 Underactuated robotics

很多机器人都是欠驱动系统
1)足式机器人,足式机器人的状态一般描述为关节+主体的6个自由度,所以是欠驱动的;
2)仿真鱼和昆虫机器人,情况和足式机器人一样,都需要通过关节间接的控制身体。
3)机械臂,一般来讲末端的物体有6个自由度,如果关节数目小于6,也符合欠驱动机器人的定义了。

这篇关于underactuated robotics lecture 1 笔记 --- Introduction的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/353066

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus