2019上半年有大半时间花在如题话题上
上述主要在MATLAB/SIMULINK下仿真完成,主要的目标是机器人遥感知领域,通过对slave-robot端存在环境扰动下进行力反馈补偿,增强master的感知真实性
主要方式是通过采样环境的干扰运动状态,对环境干扰运动状态建模,得到其运动状态方程X1,和命令slave-robot运动的运动状态X2叠加(仿真情况)形成带扰动的运动状态输入至环境(根据论文可以建立环境模型)。
要补偿的值是力反馈值,在力反馈回master路径下插入补偿值
在过去的日子里我用了好几种方法对环境扰动的运动状态进行估计然后输入至环境模型得到力补偿值进行补偿。
数字版系统框图
MASTER————SLAVE_Robot————Environment————MASTER
|
|
Disturb
1.Kalman Filter
刚开始考虑的环境是线性的,最最最简单的物理系统:弹簧阻尼系统-卡尔曼波尔兹曼模型(KB-Model)
主要的补偿方式是这样的
MASTER————SLAVE_Robot————Environment——————————————————MASTER
| |
| |
Disturb————KalmanFilter————KB_Model
通过KalmanFILTER对环境运动状态作出最优估计,将最优估计值代入到KB-Model得到力补偿值Fcom,Environment的输出即是在扰动下的力反馈值Fe,所需要的力增强的反馈值就是
Fd=Fe-Fcom
这样可能会好理解一点,扰动是你建立的模型,和实际有偏差,将实际的扰动和扰动模型的状态输入到KalmanFilter(卡尔曼滤波器还是很好用的,不懂就去搜一搜)再通过建立的参考环境模型得到需要的力补偿值,这个补偿值一套流程下来基本都是建立在自己建立的参考模型上实现的,所以这里建立的模型非常关键,要比较准确才行,出现较大偏差会对补偿产生影响。
2.Extend Kalman Filter
线性在现实时间基本没存在多少,所以下一步做的仿真就开始注意到非线性上。
其实输入的状态一直都是非线性的,MASTER在仿真时候输入的是正弦波,扰动通过其他论文可以得到可以用正弦波及其谐波叠加代替。但是上一步目标环境的线性的,所以补偿效果还是可以的,不过回头想想,KF并没有包括环境,其实KF估计目标就是一个非线性的方程,不过这个非线性的仿真在求导后是平移相位,或者说是有无穷阶导,如果上述方式利用EKF来估计,再输入到非线性的model里面,应该只是非线性的model有变化。
在这里用的非线性的model叫HC-Model
MASTER————SLAVE_Robot————Environment——————————————————MASTER
| |
| |
Disturb———— EKF ————HC_Model
其他基本不变,就是把KF的估计方式换成EKF,环境模型换成HC-model
但是效果并不是很好,这个应该是应为没有把环境模型一起放进去估计的原因,但是如果放进去同时估计,就没有测量值,所以这种方法还有待考量
3.BP-NN
因为EKF效果不是很理想,我估摸是因为环境模型变成了非线性的,所以用BP-NN来训练力补偿值,把环境也包括进去,这样输出的力就是估计模型有包括非线性模型的情况了。
输入数据为扰动的运动状态,选取速度V和位移X
输出数据位环境的输出值,选取力补偿值Fd
训练后插入进去代替EKF以及HC-model,补偿效果依然不好。
4.LSTM-Layer NN
最后考虑到运动的时序性能,用RNN方式来代替BP-NN,但是效果依然不是很好。
在选用非线性模型作为环境模型的情况下,补偿效果都不理想,估计在应为补偿方式仅为减法,可能需要换一种计算方法进行补偿。经过3个多月断续的实验,基本的应用方式就上述四种,在此作记录。