欢迎光临散文网 会员登陆 & 注册

使用小车车理解Poincare Map判断极限环稳定性-HZD基础知识之一

2022-04-06 21:13 作者:我与机器人  | 我要投稿

前言

最近在看双足控制框架另一学派,HZD Jessy 大神写的书feedback control of dynamic bipedal robot locomotion, 看到里面使用庞加莱map来表述周期性运动的稳定性,之前虽然在nonlinear system control里学过,但后面并没有去尝试使用,这里使用小车车进行举例理解,可能有理解不到位的地方欢迎大家指出。


基础知识描述:

一个问题:

当我们遇到超过2维的系统时,如果机器人控制时存在周期运动,比如双足行走过程,如何来证明极限环的稳定性?

这里给出的工具就是Poincare Map.

定义:

为了降低维度,我们不可能研究整条轨迹,一般研究那些和一个面相交的点(这个面一般是平面)参考图1,而且只研究给定方向的交点,这个面就叫做Poincare Section, 而通过transformation T将一个点连接到下一个穿过面的点就叫做Poincare map(First return map)。注意这里可能有点拗口,后面可以看例子,可能就比较清晰了。

公式如下:

P_%7Bk%2B1%7D%3DT%5Cleft(P_%7Bk%7D%5Cright)%3DT%5Cleft(T%5Cleft(P_%7Bk-1%7D%5Cright)%5Cright)%3DT%5E%7B2%7D%5Cleft(P_%7Bk-1%7D%5Cright)%3DT%5E%7Bk%2B1%7D%5Cleft(P_%7B0%7D%5Cright)

通过这个方式,由于我们只关注和平面的交点,而不是轨迹本身,那么就把一个continuous flow  转换为离散图。

针对极限环来说:

我们的目标就是证明这个极限环是稳定的,也就是从任意点出发的轨迹最后都converge这个环,对于Poincare Map 来说就是不断的去靠近equilibrium point(P%5E*%3DT(P%5E*)),收敛到一个可以接受的范围内。

使用Poincare Map什么情况下极限环稳定?

一句话总结,求关于P的雅克比,只要特征值小于1,哪极限环就是稳定的

哪如何证明?

可以简单理解为,只需要在某个equilibrium point或者目标点附近,使得线性化后变量

小于1,那么当时间infinity的时候极限环就每次穿过poincare section的相同点域内。

具体证明公式如下,其中P_0%3DP%5E*%2B%5Cdelta%20P_0,是一个在目标点(Equlilibium Point)点的附近一个点,P_%7Bi%2B1%7D%3DT(P_i)%3DP%5E*%2B%5Cdelta%20P_%7Bi%2B1%7D为迭代式,%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%20在目标点附近做雅克比运算,多次迭代后得到如下式子:

%5Cbegin%7Baligned%7D%20T%5Cleft(P%5E%7B*%7D%2B%5Cdelta%20P_%7B0%7D%5Cright)%20%26%20%5Csimeq%20T%5Cleft(P%5E%7B*%7D%5Cright)%2B%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5C%5C%20P_%7B1%7D%20%26%20%5Csimeq%20P%5E%7B*%7D%2B%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5C%5C%20%5Cdelta%20P_%7B1%7D%20%26%5Cleft.%5Csimeq%20%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5C%5C%20T%5E%7B2%7D%5Cleft(P%5E%7B*%7D%2B%5Cdelta%20P_%7B0%7D%5Cright)%20%26%3DT%5Cleft(P%5E%7B*%7D%2B%5Cdelta%20P_%7B1%7D%5Cright)%20%5C%5C%20P_%7B2%7D%20%26%20%5Csimeq%20T%5Cleft(P%5E%7B*%7D%5Cright)%2B%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%20.%20%5Cdelta%20P_%7B1%7D%20%5C%5C%20%5Cdelta%20P_%7B2%7D%20%26%20%5Csimeq%5Cleft(%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%5Cright)%5E%7B2%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5C%5C%20%26%20%5Cvdots%20%5C%5C%20T%5E%7Bk%7D%5Cleft(P%5E%7B*%7D%2B%5Cdelta%20P_%7B0%7D%5Cright)%20%26%3DP%5E%7B*%7D%2B%5Cleft(%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%5Cright)%5E%7Bk%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5C%5C%20%5Cdelta%20P_%7Bk%7D%20%26%20%5Csimeq%5Cleft(%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%5Cright)%5E%7Bk%7D%20.%20%5Cdelta%20P_%7B0%7D%20%5Cend%7Baligned%7D


现在我们的目标就是使得%5Cdelta%20P_0收敛到0,根据线性代数知识我们可以推出如下:

%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%3D%5Cleft(%5Cbegin%7Barray%7D%7Bccc%7D%20%5Clambda_%7B1%7D%20%26%20%26%200%20%5C%5C%20%26%20%5Cddots%20%26%20%5C%5C%200%20%26%20%26%20%5Clambda_%7Bn%7D%20%5Cend%7Barray%7D%5Cright)%20%5Coperatorname%7Bthen%7D%5Cleft(%5Cleft.%5Cmathcal%7BL%7D%5Cright%7C_%7BP%5E%7B*%7D%7D%5Cright)%5E%7Bk%7D%3D%5Cleft(%5Cbegin%7Barray%7D%7Bccc%7D%20%5Clambda_%7B1%7D%5E%7Bk%7D%20%26%20%26%200%20%5C%5C%20%26%20%5Cddots%20%26%20%5C%5C%200%20%26%20%26%20%5Clambda_%7Bn%7D%5E%7Bk%7D%20%5Cend%7Barray%7D%5Cright)

也就是说明当所有雅克比矩阵的特征值小于1,整个%5Cdelta%20P_0收敛到0,对于大于1能表明不稳定,等于1那就是不能给出极限环是否稳定。(nonlinear的老套路了)

例子:考虑如下系统

%5Cleft%5C%7B%5Cbegin%7Barray%7D%7Bl%7D%20%5Cdot%7Bx%7D_%7B1%7D%3D%20%5Ccos%20x_%7B3%7D%20%5C%5C%20%5Cdot%7Bx%7D_%7B2%7D%3D%5Csin%20x_%7B3%7D%20%5C%5C%20%5Cdot%7Bx%7D_%7B3%7D%3Du%20%5Cend%7Barray%7D%5Cright.状态变量为小车车的x,y和yaw方向角度值,控制输入为u%3D%5Csin%20%5Cleft(%5Cbar%7B%5Cpsi%7D-x_%7B3%7D%5Cright)

系统有限状态如图,c是时间,每切换到一个状态时间变为0,黑色横线表明满足条件就进行状态转移:


结合Python验证:

第一步:先使用Python构建仿真环境,给定初始条件,可以看到小车车收敛于一个极限环:

小车车跑起来的图
轨迹图

第二步:验证所选的g(x)和控制系统是否满足横穿而不是相切。

%5Cmathbf%7Bx%7D%20%5Cin%20%5Cmathcal%7BS%7D%20%5CRightarrow%5Cleft(%5Cfrac%7B%5Cpartial%20g%7D%7B%5Cpartial%20%5Cmathbf%7Bx%7D%7D%20%5Ccdot%20%5Cmathbf%7Bf%7D%5Cright)(%5Cmathbf%7Bx%7D)%20%5Cneq%200%20%5C%5C%20%5Cmathcal%7BS%7D%3Ax%2B2%3D0

在这里,选择第三阶段为例,q=2,g(x)%3Dx_1%2B2,那么可以得到:

左边为Poincare Map, 右边为Poincare Section

然后得到:%5Cleft(%5Cfrac%7B%5Cpartial%20g%7D%7B%5Cpartial%20%5Cmathbf%7Bx%7D%7D%20%5Ccdot%20%5Cmathbf%7Bf%7D%5Cright)(%5Cmathbf%7Bx%7D)%20%3Dcos(x_3)当满足不为零即可。


第三步:使用程序把三个阶段描述出来,同时估计其EP点,即%5Cmathbf%7Bp%7D(%5Coverline%7B%5Cmathbf%7Ba%7D%7D)%3D%5Coverline%7B%5Cmathbf%7Ba%7D%7D,这个又称微分同胚,其中%5Coverline%7B%5Cmathbf%7Ba%7D%7D为目标收敛点。

注意这里%5Cmathbf%7Bp%7D(%5Cmathbf%7Ba%7D)%20输出的值就为状态变量的值,代码如下:

稳定后的轨迹图
不同颜色对应不同状态


第四步:既然我们已经找到E.P. 点那么直接求在这个附近下的雅克比矩阵,这里取h=0.01,然后看他的eigen value是否小于1即可知道这个极限环是否收敛。


注意:这里可以看到我们选择Poincare Section是面是二维的,说明这里我们关心的是

即如下平面


可以看到,所有的eigenvalue是小于1,那就说明我们的这个极限环是稳定的。

结论:

Poincare map主要用来分析周期性运动的稳定性,但是那个g不是很好找,在复杂的系统下。HZD理论也是找一个平面,这个平面可以 是所有可能的轨迹组成的平面,然后把不在这个平面的设计一个控制器,让其收敛到这个平面。

代码:


Reference:

[1]https://www2.physics.ox.ac.uk/sites/default/files/profiles/read/lect5-43146.pdf

[2]https://hal.archives-ouvertes.fr/cel-01510146v1/document

[3]https://www.ensta-bretagne.fr/jaulin/automooc.pdf



使用小车车理解Poincare Map判断极限环稳定性-HZD基础知识之一的评论 (共 条)

分享到微博请遵守国家法律