>
首页 » 技术文章 » 非完整式移动机器人的路径跟踪控制

非完整式移动机器人的路径跟踪控制

作者:北京交通大学电子信息工程学院 罗金霞 程荫杭  时间:2007-02-12 14:51  来源:本站原创

摘 要:本文以自行设计的非完整式自主移动机器人为研究对象,建立运动学模型,采用控制Lyapunov函数设计路径跟踪控制器,并通过ActiveX 控件MSComm与底层运动控制器进行串行通信,实现对任意路径的跟踪控制。
关键词: 移动机器人; 路径跟踪; Lyapunov函数;串行通信

引言
笔者自行设计的非完整式自主移动机器人是以PC104嵌入式MCU为中心处理器,TMS320F2812为运动控制器, CCD摄像机和图像采集卡获得视频信息,超声波传感器作为避障的集合环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统。CCD摄像机和图像采集卡获得视频信息,通过图像处理获得路径信息,传到PC104进行路径跟踪控制,PC104将控制信息通过串口传给运动控制器,同时,运动控制器将当前的运动信息传给PC104。
移动机器人的路径跟踪控制技术是基于机器视觉的移动机器人实现自主导航的关键技术之一。由于移动机器人的轮子与地面之间只有纯滚动接触,其线速度垂直于轮轴而无侧位移,因而存在非完整约束。由于非完整约束是不可积分的,系统的控制及规划问题将变得困难和复杂。本文分别采用控制Lyapunov函数和模糊控制方法设计控制器,实现对任意路径的跟踪控制,并通过串行通信编程的ActiveX 控件Microsoft Communications Control(以下简称MSComm)与运动控制器进行串口通信。



图1 移动机器人位姿误差示意图

运动学模型分析
移动机器人的运动学方程为:
(1)
其中(x,y)为移动机器人的位置,q为其方位角,即机器人前进方向与x轴的夹角,v,w分别为移动机器人的平移速度和角速度,在运动学模型中是控制输入。本节所考虑的轨迹跟踪为移动机器人对具有位姿(xr,yr,qr)和速度v,w的目标机器人的跟踪(见图1)。因此,可得到在移动机器人坐标内描述的位姿误差为:
(2)
由(1)式可知,移动机器人的运动存在非完整性约束,即。为了使非完整性约束不显示出现,可以采用极坐标表示:
(3)

其中e为机器人与目标点的距离;为移动机器人的方向角; ,即机器人主轴与目标向量的偏转角。

控制算法研究
对于非线性系统,利用Lyapunov构造控制律具有较大的优势,因为即使通过其它方法构造出一个控制律,仍然需要一个适当的Lyapunov函数去证明其稳定性。控制Lyapunov函数(Control Lyapunov Function)能直接利用一些基于CLF与系统动态的通用公式,计算出使系统稳定的控制律。
对于一般形式的仿射线性系统:
(4)
称满足如下条件的C1类V(x)为系统的控制Lyapunov函数(CLF):
① V(x)为正定的、径向无界的。
② 在每个非零x处,都存在,即存在一个全局渐近镇定控制率,这个控制率除了可能在x=0处不连续外,处处光滑。
选取
(k1、k2、k3>0) (5)

(6)
为保证系统稳定,要求。因此,选择控制率为:

(k4、k5、k6>0; ) (7)
若,则。



图2 VC++仿真结果


串口通信
PC104处理后的控制信息,通过VC++中的ActiveX控件MSComm发送给底层运动控制器TMS320F2812,同时底层的实际运动信息通过TMS320F2812的SCI串口传给PC104。相应的部分初始化程序为:
1. 上位机PC104部分:
m_MSComm.Create(NULL,0,CRec t(0,0,0,0),this,IDC_MSCOMM1);
if(m_MSComm.GetPortOpen())
//如果串口是打开的则关闭串口
{
m_MSComm.SetPortOpen(FALSE);
}
m_MSComm.SetCommPort(1);
//选择COM1
m_MSComm.SetInBufferSize (1024); //接收缓冲区
m_MSComm.SetOutBuffer Size(1024);// 发送缓冲区
m_MSComm.SetInputLen(8);//每次从当前接收区数据读取8 个字符
m_MSComm.SetInputMode(1);
//以二进制方式读写数据
m_MSComm.SetRThreshold(8);
//接收缓冲区有8 个字符时,将引发接收数据的OnComm 事件
m_MSComm.SetSettings("9600,n,8,1");
//波特率9600 //无检验位 8个数据位 1个停止位
if(!m_MSComm.GetPortOpen())
//如果串口没有打开则打开
{
m_MSComm.SetPortOpen(TRUE);
//打开串口
}
else
{
AfxMessageBox("Open Serial Port Failure!");
}
m_MSComm.GetInput();
//先预读缓冲区以清除残留数据
2. 底层运动控制器部分:
/* SCI: Serial port configure */
*MCRA = 0x0043; /* IOPA1 IOPA0 分别配置成SCIRXD SCITXD */
*SCICCR = 0x0047; /* 1 停止位无奇偶校验8 数据位空闲线模式*/
*SCICTL1 = 0x0003; /*禁止SLEEP 模式允许发送*/
*SCICTL2 = 0x0002; /*允许接收中断禁止发送中断*/
*SCIHBAUD = 0x0002; /*波特率高8 位*/
*SCILBAUD = 0x0008; /*波特率低8 位*/
*SCIPRI = 0x0000; /*接收中断采用高优先级中断*/
*SCICTL1 = 0x0023; /*设置完成使能SCI模块*/

VC++仿真分析
根据控制率式(7),取k2=1、k4=0.2、k5=0.5、k6=0.01,移动机器人初始状态为:X0=0.50,Y0=1.50,q0=0。移动机器人最大线速度为:VMAX=0.5m/s,最大角速度为:WMAX=1rad/s。则VC++仿真结果如图2所示。
其中,移动机器人的目标路径为VC界面中由鼠标画出的任意路径,实际路径是在理想情况下,由下式获得的:

(8)

结语
本文对自行设计的非完整式自主移动机器人进行了运动控制研究,采用控制Lyapunov函数获得控制率,并通过MSComm实现了与底层运动控制器的串口通信。仿真结果显示,该控制方法简单,且跟踪误差小。■
  
参考文献
1.苏奎峰,吕强等. TMS320F 2812原理与开发. 电子工业出版社,2005.4
2. 陈正江.户外自主移动机器人体系结构与控制系统研究. 南京理工大学机械电子工程硕士论文.2002.01
3. 王仲民,岳宏,刘继岩.轮式移动机器人轨迹跟踪控制.太原理工大学学报,2005 Vol.36 No.4

相关推荐

TMS320VC5402与PC机进行串行通信的两种方案

串行通信  PC机  2011-07-21

基于MPC860与STl6C654的串行通信设计

MPC860  STl6C654  串行通信  2010-10-08

基于VB的霍尔传感器性能测试系统设计

霍尔  传感器  串行通信  VB  2010-06-02

基于Small RTOS51的多任务串行通信研究

基于未知上位机串行通信波特率检测

基于未知上位机串行通信波特率检测

上位机  串行通信  波特率  2009-06-07
在线研讨会
焦点