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

前言
最近在看双足控制框架另一学派,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)。注意这里可能有点拗口,后面可以看例子,可能就比较清晰了。
公式如下:
通过这个方式,由于我们只关注和平面的交点,而不是轨迹本身,那么就把一个continuous flow 转换为离散图。
针对极限环来说:
我们的目标就是证明这个极限环是稳定的,也就是从任意点出发的轨迹最后都converge这个环,对于Poincare Map 来说就是不断的去靠近equilibrium point(),收敛到一个可以接受的范围内。
使用Poincare Map什么情况下极限环稳定?
一句话总结,求关于P的雅克比,只要特征值小于1,哪极限环就是稳定的
哪如何证明?
可以简单理解为,只需要在某个equilibrium point或者目标点附近,使得线性化后变量
小于1,那么当时间infinity的时候极限环就每次穿过poincare section的相同点域内。
具体证明公式如下,其中,是一个在目标点(Equlilibium Point)点的附近一个点,
为迭代式,
在目标点附近做雅克比运算,多次迭代后得到如下式子:
现在我们的目标就是使得收敛到0,根据线性代数知识我们可以推出如下:
也就是说明当所有雅克比矩阵的特征值小于1,整个收敛到0,对于大于1能表明不稳定,等于1那就是不能给出极限环是否稳定。(nonlinear的老套路了)
例子:考虑如下系统
状态变量为小车车的x,y和yaw方向角度值,控制输入为
系统有限状态如图,c是时间,每切换到一个状态时间变为0,黑色横线表明满足条件就进行状态转移:

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

小车车跑起来的图 
轨迹图


第二步:验证所选的g(x)和控制系统是否满足横穿而不是相切。
在这里,选择第三阶段为例,q=2,,那么可以得到:

然后得到:当满足不为零即可。
第三步:使用程序把三个阶段描述出来,同时估计其EP点,即,这个又称微分同胚,其中
为目标收敛点。
注意这里输出的值就为状态变量的值,代码如下:


第四步:既然我们已经找到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