主要内容

使用Passivity-Based非线性MPC控制机器人的机械手

这个例子展示了如何设计一个passivity-based控制器对于机器人机械手使用非线性模型预测控制(MPC)。

概述

双连杆机器人机械手的动力学可以编写如下[1]。

H ( ) ¨ + C ( , ˙ ) ˙ + G ( ) = τ

在这里, , ˙ , ¨ 2×1向量代表关节角,速度和加速度。转矩控制输入向量 τ

  • H ( ) 是机械惯性矩阵。

  • C ( , ˙ ) 是科里奥利矩阵。

  • G ( ) 是重力向量。

这些机器人动力学中实现manipulatorStateFcn.m

控制目标是选择转矩 τ 这样的关节角 跟踪所需的参考 d 。执行闭环稳定,控制器包括一个被动约束[2]。

被动约束

首先定义被动约束,跟踪误差向量定义为关节角之间的差异和所需的参考角度。

e = - - - - - - d

为了达到良好的跟踪性能,考虑存储功能 V = 1 2 ( ˙ T H ( ) ˙ + e T ) ,在那里 K > 0 。求导 V 获得的关系 V ˙ = u T ˙ ,在那里

u = τ - - - - - - G ( ) +

因此,该系统是被动的 u ˙ 。被动输入之间的关系 u 和转矩 τ helper函数描述的吗getPassivityInput.m

执行闭环稳定,定义被动约束如下[2]。

u T ˙ - - - - - - ρ ˙ T ˙ ρ > 0

对于一个非线性MPC控制器,您定义被动约束通过设置被动非线性MPC对象的属性。

设计非线性MPC控制器

创建一个非线性MPC对象有四个,四个输出,和两个输入。

nlobj = nlmpc (4 4 2);
在标准成本函数、零重量默认应用到一个或多个ov因为有MVs比ov少。

指定使用机器人动力学函数预测模型状态函数。

nlobj.Model。StateFcn =“manipulatorStateFcn”;

指定一个样本的时间0.1秒,使用默认的预测和控制的视野。

nlobj。Ts = 0.1;

非线性MPC的违约成本函数是一个标准的二次成本函数,适合参考跟踪。在这个例子中,我们的目标是前两个州跟随给定的参考轨迹。因此,为前两个输出变量指定非零调整权重。

nlobj.Weights。OutputVariables = (2 1 0 0);nlobj.Weights。ManipulatedVariablesRate = [0 0];

指定的字段非线性MPC的被动属性对象。

nlobj.Passivity。EnforceConstraint = true;nlobj.Passivity。InputFcn =“getPassivityInput”;nlobj.Passivity。OutputFcn =“getPassivityOutput”;

闭环仿真

指定状态的初始条件。

x0 = [2; 1; 1; 1];

打开仿真软件模型。金宝app

mdl =“manipulatorNLMPC”;open_system (mdl)

运行模型。

sim (mdl);

查看机械手。关节角达到和保持在目标价值1。

open_system (mdl +“/机械手/国家”)

将非线性MPC控制器的性能没有被动约束,把被动约束从控制器。

nlobj.Passivity。EnforceConstraint = false;

运行仿真。

sim (mdl);

没有被动约束,闭环系统变得不稳定的控制器的设计参数。

引用

[1]Hatanaka武,Nikhil Chopra Masayuki Fujita,和马克•Spong (george w . bush)。Passivity-Based控制和评估网络机器人。通信与控制工程。可汗:施普林格国际出版,2015年。https://doi.org/10.1007/978 - 3 - 319 - 15171 - 7

[2]废料,托拜厄斯,基督教Ebenbauer和弗兰克Allgower。“非线性模型预测控制:passivity-based方法。”In评估和非线性模型预测控制的发展方向由Findeisen编辑,罗尔夫,弗兰克Allgö回答,和洛伦茨t . Biegler, 151 - 162;纽约:施普林格,2007年。

另请参阅

功能

相关的例子

更多关于