一种机器人跨平台通信协议和控制方法技术

技术编号:19055002 阅读:181 留言:0更新日期:2018-09-29 11:51
本发明专利技术公开了一种机器人跨平台通信协议和控制方法,首先在Unity3D中设计控制面板界面,Unity3D通过脚本连接模块与控制机器人的ROS系统实现TCP或者UDP连接;Unity3D端读取使用者输入到控制面板中的运动控制信息,并向ROS系统发送控制命令控制机器人运动;ROS系统向Unity3D端发送实时的机器人运动信息,Unity3D端实时监听机器人运动状态;最后通过Unity3D导出不同平台的可执行程序实现ROS的跨平台交互。本发明专利技术实现了不同平台对运行在ROS系统下的机器人的远程控制和通信,避免了从底层写起将ROS系统嵌入其他平台的复杂性,可以支持不同语言不同开发环境,进而可以进行多种语言环境的通信。

【技术实现步骤摘要】
一种机器人跨平台通信协议和控制方法
本专利技术属于ros系统通信和控制领域,具体涉及一种机器人跨平台通信协议和控制方法。
技术介绍
ROS系统的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭switchyard项目。它是一个机器人软件平台,能为异质计算机集群提供类似操作系统的功能。ROS(RobotOperatingSystem)系统的主要目标是为机器人研究和开发提供代码复用的支持。所以它是一个分布式的进程框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS系统提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理等。近年来随着机器人、人工智能的日益壮大,ROS系统这一开源系统凭借其高效稳定的性能逐步为许多机器人厂商所使用,使其蓬勃发展。然而ROS系统还在逐步成长中,在跨平台控制和通信方面做得并不够出色,rosjava等也不够完善,所以解决ROS系统的跨平台通信和控制问题就显得尤为重要,本方法基于轻量级的rosbridge协议,利用Unity3D的跨平台性,巧妙地实现了ROS系统的跨平台交互,可用于轻量级的通信和机器人控制中。
技术实现思路
针对现有技术的不足之处,本方法提出一种机器人跨平台通信协议和控制方法,实现ROS系统的跨平台通信和控制。本专利技术采用如下技术方案,一种机器人跨平台通信协议和控制方法,包括以下步骤:(1)在Unity3D中设计控制面板界面,Unity3D通过脚本连接模块与控制机器人的ROS系统实现传输控制协议TCP(TransmissionControlProtocol)或者用户数据报协议UDP(UserDatagramProtocol)连接;(2)Unity3D端读取使用者输入到控制面板中的运动信息,并向ROS系统发送控制命令控制机器人运动;(3)ROS系统向Unity3D端发送实时的机器人运动信息,Unity3D端实时监听机器人运动状态。优选地,在步骤(1)中,在Unity3D中使用内置UI控件UGUI设计UI界面控制面板,所述控制面板包括IP地址输入框,连接按钮,角速度线速度输入框,前进停止按钮和运动信息显示框,利用Photoshop实现界面图标的优化和渲染。优选地,在步骤(1)中,所述脚本连接模块是将Unity3D的应用平台与ROS系统的主机放在同一个局域网下,建立C#脚本,新建一个TCP或者UDP客户端类,即TcpClient类或者UdpCilent类,与控制机器人的ROS系统实现传输控制协议TCP或者用户数据报协议UDP连接。优选地,在Unity3D中场景的主摄像机上绑定一个C#脚本,使用C#提供的网络编程类和函数,新建TcpClient类或者UdpClient类的对象client,利用TcpClient类或者UdpCilent类中的Connect函数与控制机器人的ROS系统实现连接,即利用语句client.Connect("xxx.xxx.xxx.xxx",9090)与控制机器人的ROS系统进行连接,参数("xxx.xxx.xxx.xxx",9090)中,xxx.xxx.xxx.xxx为从控制面板中读取用户输入的ROS系统所在主机的ip地址,9090为默认rosbridge连接端口,可以根据需要更改。优选地,在所述步骤(2)中:Unity3D端向ROS系统发送控制命令控制机器人,具体步骤为:a)构造订阅发布信息类,根据rosbridge协议构造订阅发布信息类,其中的必需字段为“op”字段,“op”字段指定向ROS系统发送消息的操作类型,每个“op”字段指定自身的消息语义,将“op”字段设定为“advertise”类型,即发送消息的操作类型为“广告”类型,构造订阅发布信息类的实例化对象,将实例化对象序列化为json格式,利用TcpClient的传输函数即send函数向机器人传送序列化为json格式的数据。b)构造控制命令信息类,其中的必需字段为“op”字段和“msg”字段,将“op”字段设定为“publish”类型,即发送消息的操作类型为“发布”类型,构造控制命令信息类的实例化对象,其中“msg”字段应包含控制面板中读取的运动信息,将实例化对象序列化为json格式,利用TcpClient的传输函数即send函数向机器人传送序列化为json格式的数据,即向机器人发布命令信息,控制机器人运动。优选地,在所述步骤(3)中,首先构造“op”字段为“subscribe”类型,即“订阅”类型的订阅发布信息类的实例化对象,将订阅发布信息类的实例化对象序列化为json格式并且发送,编写脚本时利用C#提供的BackgroundWorker类实现多线程操作,用BackgroundWorker类的对象在后台线程中不断执行用于接收机器人运动信息的函数,即client.Client.Receive函数,其中client为最初建立的TcpClient类或者UdpCilent类的对象,监听接收机器人json格式的信息数据,将json格式数据进行解析,将位置信息输出到运动信息显示框。专利技术所达到的有益效果:本方法是一种机器人跨平台通信协议和控制方法,避免了从底层写起将ROS系统嵌入其他平台的复杂性,基于轻量级的rosbridge协议,利用json这一简单、传输快速的数据交换格式,使其可以支持不同语言不同开发环境,进而可以进行多种语言环境的通信,其次利用Unity3D的跨平台性,可以导出不同平台的应用,从而巧妙地实现了ROS系统的跨平台交互,是轻量级的机器人通信和控制的很好选择。附图说明图1是本专利技术的通信和控制方法流程图;图2是本专利技术的控制面板组成图;图3是本专利技术的通信过程和控制机器人的流程图。具体实施方式下面结合附图并结合实施例对本专利技术的技术方案作进一步阐述。图1是本专利技术的通信和控制方法的流程图,一种机器人跨平台通信协议和控制方法,具体包括以下步骤:(1)在ROS中安装rosbridge,命令:sudoapt-getinstallros-indigo-rosbridge-suite,然后在Unity3D中使用内置UI控件UGUI设计UI界面控制面板,控制面板包括图2所示的IP地址输入框,连接按钮,角速度线速度输入框,前进停止按钮和运动信息显示框;将Unity3D的应用平台与ROS系统的主机放在同一个局域网下,在Unity3D中场景的主摄像机MainCamera上绑定一个C#脚本,使用C#提供的网络编程类和函数,新建TcpClient类或者UdpClient类的对象client,利用TcpClient类或者UdpCilent类中的Connect函数与控制机器人的ROS系统实现连接,即利用语句client.Connect("xxx.xxx.xxx.xxx",9090)与控制机器人的ROS系统进行连接,参数("xxx.xxx.xxx.xxx",9090)中,xxx.xxx.xxx.xxx为从控制面板中读取用户输入的ROS系统所在主机的ip地址,9090为默认rosbridge连接端口,可以根据需要更改;(2)Unity3D端读取使用者输入到控制面板中的运动信息,并向ROS系统发送控制命令控制机器人运动,具体步骤为:a)构造订阅发本文档来自技高网...

【技术保护点】
1.一种机器人跨平台通信协议和控制方法,其特征在于,包括以下步骤:(1)在Unity3D中设计控制面板界面,Unity3D通过脚本连接模块与控制机器人的ROS系统实现传输控制协议TCP或者用户数据报协议UDP连接;(2)Unity3D端读取使用者输入到控制面板中的运动控制信息,并向ROS系统发送控制命令控制机器人运动;(3)ROS系统向Unity3D端发送实时的机器人运动信息,Unity3D端实时监听机器人运动状态。

【技术特征摘要】
1.一种机器人跨平台通信协议和控制方法,其特征在于,包括以下步骤:(1)在Unity3D中设计控制面板界面,Unity3D通过脚本连接模块与控制机器人的ROS系统实现传输控制协议TCP或者用户数据报协议UDP连接;(2)Unity3D端读取使用者输入到控制面板中的运动控制信息,并向ROS系统发送控制命令控制机器人运动;(3)ROS系统向Unity3D端发送实时的机器人运动信息,Unity3D端实时监听机器人运动状态。2.根据权利要求1所述的一种机器人跨平台通信协议和控制方法,其特征在于,在步骤(1)中,在Unity3D中使用内置UI控件UGUI设计UI控制面板界面,所述控制面板包括IP地址输入框、连接按钮、角速度和线速度输入框、前进停止按钮以及运动信息显示框。3.根据权利要求1所述的一种机器人跨平台通信协议和控制方法,其特征在于,在步骤(1)中,所述脚本连接模块是将Unity3D的应用平台与ROS系统的主机放在同一个局域网下,建立C#脚本,新建一个TCP或者UDP客户端类,即TcpClient类或者UdpClient类,与控制机器人的ROS系统实现传输控制协议TCP或者用户数据报协议UDP连接。4.根据权利要求3所述的一种机器人跨平台通信协议和控制方法,其特征在于,在Unity3D中场景的主摄像机MainCamera上绑定一个C#脚本,使用C#提供的网络编程类和函数,新建TcpClient类或者UdpClient类的对象client,利用TcpClient类或者UdpCilent类中的Connect函数与控制机器人的ROS系统实现连接。5.根据权利要求1所述的一种机器人跨平台通信协议和控制方法,其特征在于,在所述步骤(2)中:Unity3D端向ROS系统发送控制...

【专利技术属性】
技术研发人员:陈华刘少国杨珂王鹏远朱校君
申请(专利权)人:河海大学常州校区
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1