基于线程同步的UDP通信和闭环编队控制算法的多足球机器人协作系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于线程同步的UDP通信和闭环编队控制算法的多
足球机器人协作系统
曾增烽
中国矿业大学,江苏徐州(221003)
E-mail: gdfeng@
摘要:本文采用基于UDP的无线通信技术和windows的多线程同步技术实现了多机器人之间的相互通信,各个机器人通过通信交换和共享同组成员的位姿信息,通过计算得到各机器人之间的相对位姿。

然后采用闭环编队控制算法进而完成编队协调任务.利用上述技术,可实现多机器人系统的相互协作,组成有效的进攻和防守阵型。

关键词:UDP;多线程;多机器人协作;闭环控制
中图分类号:TP242
1.引言
近十年来,伴随着计算机,电子通信以及各种传感器技术的迅猛发展,人工智能已由传统的单智能体系统的研究转向由多个智能体组成的复杂多智能体系统的研究,多智能体系统的研究受到了广泛的关注[1]。

同单智能系统相比,多智能系统更能适应复杂多变的环境,具有更高的鲁棒型,其研究和应用的前景十分的广阔。

在足球机器人比赛中,多台机器人组成了一个复杂的多智能体系统,同传统的单智能体系统相比,各个智能体之间的同步和协调显得格外重要。

整个多智能体系统可以看成是几个并发执行的任务,因此可以利用线程同步的技术来协调各个智能体之间的行为。

各智能体之间的同步必须依赖于相互间可靠的通信,基于UDP协议的无线通信能够使运行在系统中各个智能体上的线程不断监听和发送消息,从而实现各个智能体之间的同步和整个系统的协调性。

基于上述协调的多智能系统,可以在实际的机器人比赛中实现灵活的任务分配和编队控制,形成一个有效的协防系统。

2.多机器人协作系统介绍
整个多机器人协作系统多台机器人组成,每台机器人都具有高度的自主性,能够自主地完成跟球,追球,射门等动作。

此外,还有一个无线局域网作为各个机器人相互通信的媒介。

图_1多机器人系统
每台足球机器人的主要是由视觉系统,决策系统,无线通信系统和运动控制系统组成,如图2所示:
图_2足球机器人系统
机器人通过视觉系统采集到赛场的图像,进行图像处理和分析获得各种赛场信息,传递给决策系统。

决策系统根据自身的角色分配,赛场的信息以及其他机器人通过无线通信系统发送给自身的信息进行分析和判断,做出正确的运动策略并向运动控制系统发送运动控制指令,从而驱动机器人在赛场上准确的动作。

同时机器人通过无线通信系统将自己所做出的运动策略发送给场上的其他机器人。

系统的控制结构主要包括三种方式:集中式分散式分布式。

多机器人的协作系统采用集中式的控制结构,是一种Top_down式的层次控制结构。

整个协作系统中有一台机器人(leader)是集中控制单元,用来协调整个系统,根据赛场信息制定整体策略。

其他的机器人(follower)根据机器人(leader)的控制命令和自身获得的赛场信息来执行相关的动作。

各个机器人之间的相互通信是实现协防系统的关键环节,本系统采用点对点和广播式相结合的通信方式来实现机器人之间的相互通信和消息的广播。

在无线局域网中,机器人既能和指定的机器人进行通信,也能将消息向整个系统广播。

3.基于线程同步的UDP通信的协调技术
·3.1线程及线程同步
每个正在系统上运行的程序都是一个进程,而线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

由于线程之间的相互制约,致使线程在运行中呈现出间断性。

线程也有就绪、阻塞和运行三种基本状态。

线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程[2]。

在windows系统中,线程的创建如下(本文采用c#编程):
System.threading名称空间中的Thread类代表一个线程对象,用这个类对象可以创建新的线程,删除、暂停和恢复线程[3]。

下面的代码使用Thread类创建一个新的线程,然后启动这个线程:
thread = new Thread(new ThreadStart( callbackfuntion ));
thread.Start();
其中callbackfuntion是这个线程的回调函数。

进程中的所有线程都拥有对各种系统资源的访问权,这些资源包括内存堆栈,串口,文件,窗口和许多其他资源。

如果一个线程需要独占对资源的访问权,那么其他线程就无法完成它们的工作。

反过来说,也不能让任何一个线程在任何时间都能访问所有的资源。

如果在一个线程从内存块中读取数据时,另一个线程却想要将数据写入同一个内存块,那么这就像你在读一本书时另一个人却在修改书中的内容一样。

这样,书中的内容就会被搞得乱七八糟,结果什么也看不清楚。

线程需要在下面两种情况下互相进行通信:
• 当有多个线程访问共享资源而不使资源被破坏时。

• 当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程时。

为了实现线程间的同步,本文采用C#的lock关键字进行同步[3]。

这个关键字允许定义一段线程同步的代码语句。

采用这项技术,后进的线程不会中断但前的线程,而是停止自身下一步的执行。

lock关键字需要定义一个标记(即一个对象引用),线程在进入锁定范围的时候必须获得这个标记。

当试图锁定的是一个实例级对象的方法时,使用方法本身所在对象的引用就可以了。

// 使用当前对象作为线程的标记。

lock(this)
{
所有在这个范围内的代码是线程安全的
//
}
此外,在C#中还能使用System.Threading.Monitor 类型进行同步。

Monitor.Enter(this)
try
{
所有在这个范围内的代码是线程安全的
//
}
finally
{
Monitor.Exit(this);
}
·3.2基于UDP协议的无线局域网通信
UDP(User Datagram Protocol)用户数据报协议(RFC 768)用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

UDP 协议基本上是 IP 协议与上层协议的接口。

UDP 协议适用端口分别运行在同一台设备上的多个应用程序。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。

这是通过使用UDP 的“端口号”完成的。

例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。

源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包
都指定到源主机的这个端口上。

与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。

由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。

在C#中,已将UDP协议封装为相应的类型库,提供了一系列方法供程序员进行操作,可以简单的理解为,基于UDP的编程就好象是收音机广播,我这头只管播,对面谁在听或者是不是收到我并不关心。

另外,基于UDP的网络编程也能向指定的IP地址上的端口发送数据,实现点对点的通信方式[4]。

具体实现如下:
发送端的程序:
// 创建一个Udpclient对象
UdpClient udpClient = new UdpClient();
// 指定发送目标的IP地址和端口号
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.0.10"),8888, 11004);
Byte[] sendBytes = Encoding.ASCII.GetBytes("要发送的数据");
try{
udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
}
catch ( Exception e ){
Console.WriteLine(e.ToString());
}
接受端的程序
//创建一个Udpclient对象,用来接收数据
UdpClient receivingUdpClient = new UdpClient(11000);
//创建一个IPEndPoint用来记录发送端的IP地址和端口号
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
try{
Byte[] receiveBytes= receivingUdpClient.Receive(ref RemoteIpEndPoint); string returnData = Encoding.ASCII.GetString(receiveBytes);
}
catch ( Exception e ){
Console.WriteLine(e.ToString());
}
以上是点对点通信的实现方式,至于广播式通信的实现方式可以利用UDP通信协议的广播功能。

它能将一组用户集中起来,赋予一个特殊的IP和端口,这样其他用户只要知道这一IP和端口,便能与这一组的所有成员实现同时通信,从而实现广播式通信。

详见参考文献[4]。

·3.3多机器人系统协调技术的实现
以三台机器人组成的多机器人系统为例,其中有一台(leader)机器人作为整个系统的决策中心,及时的根据系统采集到的赛场信息做出决策判断,并向其他(follower)机器人发送命令,分配角色和组成有效的作战编队。

其他(follower)机器人通过自身的视觉模块采集到的赛场信息和无线通信模块接收到(leader)机器人的作战命令来决定自己的运动[5]。

此外,各个机器人通过通信模块还能实现赛场信息的共享,实现信息的融合以高决策精度。

整个系统实现如下图所示:
图3_系统实现
leader的相关程序代码:
int main()
{
...................//机器人其他模块的实现
thread = new Thread(new ThreadStart( communication));
thread.start();
//创建通信线程
...............................
}
//通信线程回调函数:
void communication()
{
while(1)
{
UdpClient udpClient = new UdpClient();
//follower机器人的IP地址
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.0.10"),8888, 11004); lock(this) //线程同步
{
Byte[] sendBytes = Encoding.ASCII.GetBytes("要发送的命令");
try{
//发送控制命令
udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
}
catch ( Exception e ){
Console.WriteLine(e.ToString());
}
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); try{
//接收follower 的位姿信息
Byte[] receiveBytes= receivingUdpClient.Receive (ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes); }
catch ( Exception e ){
Console.WriteLine(e.ToString()); } }
} }
4. 多机器人协作系统编队算法的实现
基于通信的编队控制之核心即是通过视觉获取本机器人的当前位姿信息,通过通信模块获取相关机器人的当前位姿信息,从而计算本机器人与相关机器人之间的相对距离、相对方
位、相对夹角等参数[6,7]
,最后通过闭环编队控制算法计算出本机器人在下一运动周期内应达到的速度和角速度.
闭环编队控制算法的为:在机器人编队运动时,控制机器人之间的相对距离l 和相对角度ϕ,使之收敛并保持为设定值d l 和d ϕ[8]。

其编队控制过程如下:
设R1为机器人(leader ),R2为机器人(follower )。

设下标i 表示第i 个机器人,机器人的位姿信息(,,,,)i i i i i x y v θω为机器人旋转中心点处采样数据,表示第i 机器人相应的有关参数(x 坐标,y 坐标,朝向,速度,角速度)。

为了计算的方便,选择机器人旋转中心为机器人的参考中心。

对于机器人R2,22222(,,,,)x y v θω来自于自身视觉系统的自定位,
11111(,,,,)x y v θω来自于UDP 接收模块,则相对距离
221/21212||||[()()]l x x y y =−+−
设l 正方向与x 轴正方向夹角为(/23/2)βπβπ−≤<,即
212121212122121
arcsin()/||||
(0);arcsin()/||||(0);/2
(0,0);/2
(0,0);y y l x x y y l x x x x y x x y πβππϕβθ−−>⎧⎪−−−<⎪=⎨
−=>⎪⎪−−=<⎩=−
对于follower ,运动学方程为
)
3()2(;/)cos cos sin sin ()1(;
sin cos cos 21112211122θθϕγωϕωγωγϕϕϕωϕωγ−+=−+−−=+−−=•

l l d d v v d v d v l
,l ϕ 控制律为
12();
(4)();
(5)
d d l l l αϕαϕϕ•

=−=−
其中12αα和为比例控制系数。

由式子(1)~(5),对于follower 控制输出22(v )ω,为:
[]2211122111cos ()sin cos sin /;(6)
tan ;
(7)
cos /cos sin /cos ()/cos .
(8)d d l v d l d v d v d l l ωγαϕϕϕωαωργρωγρϕγωϕγαγ=−−−−++=+=−+−
通过式(6)~(8)所表示的控制算法,leader 在t 时刻的位姿11111((),(),(),(),())x t y t t v t t θω,
及跟随者在t 时刻的位姿22222((),(),(),(),())x t y t t v t t θω,可得被控对象(follower)在下一周期t+T 时刻的控制输人)(),(22T t T t v ++ω,移动机器人根据该控制输人,实时改变当前运动状态,从而完成编队任务.
基于上述的闭环编队控制算法,可以通过调整参数d l 和d ϕ实现灵活的各种编队。

例如 在一个由一台(leader )机器人和两台(follower )机器人组成的多机器人系统中,设定参数:
010*******,270, 1.0d d d d l l m ϕϕ====o o ,即控制三台机器人成一个一字型的编队。

如图
所示:
图4_一字型编队
以下是在实验室中实现多机器人系统的进攻队形和防守队形:
图5_进攻队形
图6_防守队形
5.结论
本文给出了无线局域网中基于多线程同步的UDP通信技术的具体实现,并在此基础上设计出闭环的编队控制算法,使多机器人系统能够进行灵活地编队。

在该多机器人协作系统中,利用无线通信不仅能够根据各个机器人的位姿信息进行灵活编队,而且根据系统采集到的具体赛场信息进行各种队形的变换,并为各个机器人分配具体的任务。

因此该多机器人协作系统是一个协调有序的多智能体系统,具有很高的稳定性,在实际的比赛中具有很高的实战意义。

参考文献
[1] 谭民,王硕,曹志强.多机器人系统.北京:清华大学出版社
[2] 郝文化. Windows多线程编程技术与实例.北京: 中国水利水电出版社
[3] Andrew Troelsen 著,王少葵;张大磊;朱晔;范睿等译. C#与.NET 3.0高级程序设计.北京:人民邮电出版社
[4]仇谷烽,澎洪洪.visual C#.net网络编程. 北京:北京大学出版社
[5] 陈宁,程磊,王永骥.基于多线程同步的多机器人协调技术和实现[A].见:中国人工智能学会.中国人
工智能学会第十届全国学术年会论文集(下)[C].广州,2003.北京:北京邮电大学出版社,2003. 923-926
[6] Das A K, Fierro R, Kumar V, et al. A vision-based formation control framework [ J ].IEEE Transaction on Robotics and Automation, 2002, 18(5):813-825
[7] Carpin S, Parker L E. Cooperative leader-following in a distributed multi-robot system[J] . Proceedings of IEEE International Conference on Robotics and Automation, 2002(4):2994-3001
[8]董胜龙,陈卫东,席裕庚.多移动机器人编队的分布式控制系统[J] 机器人,2000, 22(6): 433-438
Based on the threads of the UDP synchronous communications and closed-loop control algorithms formation of the multi-robot soccer collaboration system
Zeng Zeng Feng
China University of Mining, Xuzhou, Jiangsu (221003)
Abstract
In this paper, the UDP-based wireless communications technology and windows of the multi-threaded simultaneous multi-robot technology to achieve a mutual communication between the various robots through the exchange and sharing of communications with members of the group pose information, calculated by the robot The relative position and orientation. And formation of a closed-loop control algorithm then completed the formation coordination tasks. Use of these technologies, multi-robot systems can achieve mutual cooperation to form an effective offensive and defensive formation. Keywords: UDP; multi-threaded, multi-robot cooperation; closed-loop control
作者简介:曾增烽,06级本科生,现就读于中国矿业大学,信息工程专业。

相关文档
最新文档