尝试为场加入PD控制


在之前的模拟中,需要最小化一个能量函数H。
这样做的原因是,由理想约束的特性(约束反力垂直于虚位移),对于不含体积蒙皮的情况,可以推出
对于表面点,有
J^T * Σfs = 0
对于内部点,有
Σfn = 0

而对于体积蒙皮的情况,
对于表面点,仍有
J^T * Σfs = 0
对于内部点,有
J^T * W^T * fn = 0
其中W为蒙皮权重矩阵

综合两种情况,可以发现,这些力平衡情况都同H函数对内部点n、对参数p的导数等于零是等价的。

不含体积蒙皮的情况,dH/dp = J^T * Σfs
含体积蒙皮的情况,  dH/dp = J^T * (Σfs + W^T * Σfn)

等式后一项有一个专门的名称,叫广义力,实际上就是普通力在参数空间的投影

现在控制的方法十分简单,就是加一项广义控制力fc
fc = kp*(p' - p) + kd*(dp'/dt - dp/dt), 其中p'是期望的参数值,p为实际参数值,kp,kd为控制增益,都为对角矩阵
于是新的总广义力为
dH1/dp = dH/dp + fc
H1     = H     + fc^T * p

现时有两种施加控制的方法,一种是在每一帧求解之前预先算出控制力,且在求解过程中保持控制力不变,称为显式控制;另一种是把控制力表示成求解状态的函数,在求解过程中不断更新,称为隐式控制。
隐式控制的稳定性比显式控制好。

使用隐式控制时,令
dp/dt = (pn+1-pn)/h,其中pn+1是待求解的本帧参数值,pn为上一帧参数值
需要求出fc对位置的导数
dfc/dpn+1 = -(kp + kd/h)
把这一项加入Hessian的计算即可

以下是当前对一条棍子的控制结果



目标控制曲线如下:

实际控制曲线如下。曲线逐渐变形的原因是控制增益被逐步降低了。

附件列表

实现PD控制的更多相关文章

  1. PID控制

    PID解释: 位置式:      可以看出,比例部分只与当前的偏差有关,而积分部分则是系统过去所有偏差的累积.位置式PI调节器的结构清晰,P和I两部分作用分明,参数调整简单明了.但直观上看,要计算第拍 ...

  2. 基于视觉反馈的步进电机X-Y平台控制

    关键词:步进电机.XY平台.视觉反馈 用途:工业自动化 文章类型:原理介绍.随笔纪念 @Author:VShawn(singlex@foxmail.com) @Date:2017-05-01 @Lab ...

  3. 经典PID控制及应用体会总结

    经典PID控制及应用体会总结 PID控制原理 PID是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制方案: 重点关注相关算法是如何对偏差进行处理的: PID控制器各校正环节 ...

  4. T12焊台控制器制作教程 | T12烙铁 | PID增量式算法恒温控制 | 运算放大器-热电偶电压采集 | OLED屏幕显示-SPI通信 | 旋转编码器EC11用户操作

    前言 购买T12烙铁的相关配件已经1年多了,期间也尝试了一些开源的T12控制器,但都没有成功,要么是配套资料少,要么是英文的,其中51和arduino的居多,STM32的较少.求人不如求己,索性自己开 ...

  5. PID教程

    PID教程 介绍 本教程将向您展示了比例每一个比例项 (P)的特点,积分项(I)和微分项 (D) 控制,以及怎样使用它们来获得所需的响应.在本教程中,我们会考虑下面单位反馈系统: Plant[被控对象 ...

  6. PID算法笔记2

    总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...

  7. CDR锁定方式

    每个通道的PMA包括一个通道PLL可以配置成接收器CDR.还可以把通道1和4的PLL配置成CMU PLL用于发送器. CDR有两种锁定方式 1.Lock-to-Reference Mode(LTR) ...

  8. PID control

    |—平滑化算法 |—PID控制—|—P控制器编程 |—PD控制编程 |—PID控制编程 |—参数优化 |—实验P.PD.PID对减小系统误差的作用 这里讨论怎么将路径转变成行动指令(生成平滑的路径), ...

  9. PID 通俗解释

    PID 控制原理3 个故事:看完您就明白了.1.: PID 的故事小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就 ...

随机推荐

  1. UITableView增加和删除、移动

    复习一下: 1.在控制器上添加一个UITableView,  暂时该UITableView控件变量名命名为为tableView, 设置控件代理,实现控制器的UITableViewDataSource, ...

  2. Unable to execute dex: Multiple dex files define(错误分析)

    eclipse工程包名与依靠的代码库包名不能冲突,否则运行程序程序会出错 错误提示:

  3. Protocol and Delegate协议和代理

    1.什么是协议?  OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法  单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...

  4. OC中面向对象2

    一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现 ...

  5. rabbitmq_management 安装失败

    安装rabbitmq_management的时候出现错误 不能连接rabbit,所以查看状态 看意思感觉好像是rabbit没有运行,但是安装的时候都是默认安装的,所以安装完以后服务的名字就是Rabbi ...

  6. ASP.NET处理301重定向方法 带示例 (demo)

    System.Web.HttpContext.Current.Response.Status = "301 Moved Permanently"; System.Web.HttpC ...

  7. JMS发布/订阅消息传送例子

    前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要 ...

  8. 集合1--毕向东java基础教程视频学习笔记

    Day14 集合框架01 体系概述02 共性方法03 迭代器04 List集合共性方法05 ListIterator06 List集合具体对象特点07 Vector中的枚举 01 体系概述 集合类为什 ...

  9. 在unix系统下的 .o文件 .a文件 .so文件说明和相互关系

    .o文件 .o文件就是对象文件,包含编译好的可执行代码,当程序执行时,被链接库链接调用[相当于windows里的obj文件] .a文件unix中的静态链接库,包含多个需要包含的.o文件,主要特点是在 ...

  10. User Word Automation Services and Open XML SDK to generate word files in SharePoint2010

    SharePoint 2010 has established a new service called "Word Automation Services" to operate ...