简介
前段时间翻阅一些很好的机器人期刊,发现目前机械臂上使用MPC算是一个小热点。具体是这么一篇文章:Model Predictive Interaction Control for Robotic Manipulation Tasks | IEEE Journals & Magazine | IEEE Xplore
文章中介绍到近几年陆续有MPC被用于机械臂的力交互上,并展示出将MPC作为一个中间层插入机器人的规划和控制的中间,优化规划得到的位置、速度和力矩,给出更优的位置和速度,最为最底层控制的给定。
该模型为力控制和位置控制提供了统一的结构,相较力位混合控制的划分正交空间分别控制位置和力矩更为巧妙。同时又使规划任务更适应机器人本身,并且MPC本身具有缓慢变化平滑的特性,甚至可以被动解决奇异点引起的局部超速问题。
MPC
模型预测控制需要先有较精确的机器人模型,包括模型参数。以该模型预测在给定一定输入下接下来若干控制周期系统的状态变化,并由该一系统预测的未来的状态构造优化目标函数,优化获得接下来最优的系统输入。
MPC有丰富的库可以直接使用,目前发现对于Python有do-mpc,提供了MPC和MHE,文档实例清晰,易于使用。
Model predictive control python toolbox — do-mpc 4.6.0 documentation
MPIC
在具体对机械臂的控制任务中,MPC的系统模型为底层控制器与机器人的动力学模型的闭环。
机器人动力学模型结构可以由牛顿欧拉方程或者拉格朗日方程使用符号计算工具推导获得。目前Matlab或Python均有符号计算支持,并附带了转C代码的功能。
而目标函数可根据任务自行定制,常用的可使关节位置输入输出差值最小、关节速度输入输出差值最小、外力最小、输入最小,使用二次型的形式,通过分配权重。
同时作为优化问题,对于机器人需要增加位置速度上的一些约束。