文/蓝芯科技
本文与大家分享一下移动机器人研发中所涉及的一系列控制问题,以说明作为机器人领域里内的核心技术之一,控制学也是很“硬核”的。
1、移动机器人运动控制
“天下武功,唯快不破”,移动机器人一般通过电机控制轮子完成移动。作为末端执行机构,电机的运动控制要求响应快(毫秒级响应时间),精度高。目前,典型的电机控制是一个串级控制系统,由三个闭环反馈组成,即位置环,速度环,电流环,其原理如下:
图1 运动控制原理图
OK,控制模块本质上就是三个PID嵌套,So easy。老师告诉我们,目前90%以上控制系统使用的都是PID,因为PID真的很鲁棒。另外,对于移动机器人的主动轮电机,往往以控制电机转速为被控变量,此时没有最外面的位置环,只需要速度环,电流环两个环即可。
2、机器人运动模型
模型是一切控制系统的基础,机器人运动模型描述的是移动机器人主动轮转动的速度与机器人整体运动状态的关系,不同底盘构造的移动人运动模型大不相同。常见机器人运动模型有三种:单舵轮、双轮差动、双舵轮。
图2 常见移动机器人运动模型
本文以单舵轮为例(其实就是一种三轮车),由后面两个固定轴的从动轮,以及前面一个可以转向的主动轮(舵轮)组成。假设我们过一个不急的弯,需要以v = 1m/s的线速度前进,同时带着w = 0.1rad/s角速度漂亮的漂移过弯。那么我们既要决定打多少方向,又需要决定脚蹬的多猛,这就是机器人运动模型所解决的问题。
根据图中所示:
根据输入的v= 1m/s, w = 0.1rad/s,可以反算出vf与θ的值,其中θ对应于三轮车车头转的方向大小,而vf对应于脚蹬的多快。其他两种机器人运动模型读者可自行推导或查找相关资料,而且实际上的运动模型并没有如此简单,还需要考虑车轮的弹性系数等复杂的物理变量。
3、路径跟踪
控制论中经典Tracking问题,即给定一条轨迹,移动机器人需要尽量沿轨迹行走,控制目标是尽量减小机器人实际行走路线与规划轨迹的偏差。如下图所示:
图3 路径跟踪问题示意图
最简单的实现路径跟踪的方法是反馈控制思想,即获取当前机器人运动方向与轨迹曲线的切线方向的偏差Δα,获取机器人运动中心与轨迹曲线的距离偏差Δβ,将二者作为反馈量引入闭环控制,采用一定的比例控制率计算所需的线速度与角速度。
4、定位问题
移动机器人行走的核心技术是解决其自主定位的问题。设机器人在各时刻的位置为x1,x2,…,xk,其中k是离散时间下标。那么我们通常可以用下面两个方程来描述机器人的位置估计问题:
其中,f是运动方程,u是输入,w是输入噪声,g是观测方程,y是观测数据,n是观测噪声。
常用里程计信息预测机器人下一个状态的位置,也就式(1)可以简化为:
Δxk表示采用里程计信息计算得到两个时间间隔中机器人的相对运动。
而对于激光定位来说,所谓的观测方程,就是激光雷达所检测到的所有激光点与地图匹配后得到的机器人位置估计。
对于视觉SLAM来说,所谓的观测方程,就是相机拍摄到的图片中的特征点与地图匹配后得到的机器人位置估计。
图4 视觉定位问题描述
根据定义,这是典型的卡尔曼滤波(俗称“即卡又慢”)表示形式,学过系统辨识与滤波的同学可以愉快的玩耍了。
5、多机调度
实际场景中往往需要多台机器人同时在线解决复杂的多项任务,多机调度系统需要优化每个移动机器人的行走路径,避免路径死锁,也就是路径互相被占,且无法自主释放。
图5 堵车是死锁问题,移动机器人调度中也会遇到
除了需满足不死锁的基本要求,多机调度系统更需要合理分配任务至每个移动机器人以提升总体任务执行效率,同时选择合适时机分配空闲的移动机器人自动充电。考虑到机器人随时可能遇到异常故障退出调度,以及添加新的机器人等情况,因此多机调度系统解决的是一个随机环境下的动态优化命题,问题复杂度是NP-hard的,需要开发人员熟练掌握《运筹学》、《图论》、《Multi-agent》、《分布式系统控制》、《离散事件动态系统》等相关控制领域的知识。