CA168首页 > 自动化新闻 > 产品新闻 > 新闻详情

技术控 | PLCnext的无限可能:机器人?AGV?无人驾驶?

发布日期:2020-07-16 浏览次数:3506 来源:菲尼克斯
 

引言:作为面向未来自动化世界的开放式控制平台,越来越多的IT应用及开源技术正成为PLCnext Technology的一部分。菲尼克斯中国公司PLCnext研发团队已成功将ROS机器人操作系统部署到PLCnext平台中,借助于ROS背后强大的生态系统和丰富的资源库,众多机器人领域的基础工具和应用功能将不断融入PLCnext Store,使得PLCnext控制器在运动控制、机器人、甚至无人驾驶等领域的大规模应用成为可能。

 

01

What’s ROS?

 

ROS(Robot Operating System)起源于2007年斯坦福大学人工智能实验室与机器人技术公司Willow Garage的项目合作,ROS的首要设计目标是提高机器人研发领域的代码复用率。2010年Willow Garage公司发布了开源的机器人操作系统ROS,ROS的诞生大大提高了机器人软件的开发效率。即使是小型的初创公司,也能在短期内开发复杂的机器人应用。ROS是学术界使用最广泛的框架,也是机器人领域的普遍标准,越来越多的机器人厂商都已使用ROS,其中占工业市场份额最大的机器人四大家族也都有基于ROS开发的产品。




Kuka LBR iiwa 机械臂

 

无人驾驶的兴起,也促进了ROS的进一步发展(无人驾驶汽车相当于一个大号的移动机器人)。宝马、博世等世界知名整车厂及零部件供应商,也都将其作为无人驾驶汽车的重要工具。

 


2018年春晚,百度Apollo无人车队跨越港珠澳大桥

 

谷歌、百度、微软、亚马逊等众多知名企业的平台和产品也均支持ROS。美国宇航局NASA,基于ROS开发了宇航机器人,并应用在国际空间站中。

 


Robonaut2 在国际空间站中工作

 


02

ROS Architecture

 

ROS基于功能把整个系统分成多个模块,当模块需要联调时,通过框架可以把各个模块快速的集成到一起,建立复杂的系统以实现复杂的功能。ROS框架中有数千个基础库,能够支持应用的快速开发,很多现存的开源项目的代码都已集成到ROS平台中,例如:OpenCV(视觉),Player(驱动、运动控制和仿真),OpenRAVE(轨迹规划),SLAM(定位,建图,导航)等等。

 

ROS中的软件以Package的方式组织起来,每个Package由节点(Node)、依赖库、数据套、配置文件、第三方软件、或者任何其他逻辑构成。ROS Package是一种便于软件重复使用的结构。

 

目前,工业机器人领域对于机器视觉、自主路径规划等智能化功能需求日益增长。然而,在传统的工业机器人系统中添加智能化功能模块时需要修改大量的源码,要耗费大量的人力资源和成本投入。通过部署ROS系统,PLCnext用户可以直接从海量的ROS软件池中获取ROS功能包。从而实现智能工业机器人系统的快速开发。

 


ROS 部署在PLCnext上的架构


从软件构架的角度说,ROS是一种基于消息传递通信的分布式多进程框架。ROS系统通常由大量节点组成,其中任何一个节点均可与其他节点进行通信。ROS作为一个灵活的操作系统,其上的节点具有很大的随意性。它们可以位于不同的计算机上,甚至可以位于不同的网络中。上述的灵活性使得ROS可以适应众多不同的应用场景。


ROS Network

 

ROS 的主要组件包括ROS Master、ROS Node和ROS Service三种。ROS Master是一个超级管理员,管理着系统中所有的节点。ROS Master的主要功能是命名服务,它存储了启动时需要的运行时参数,上游(消息发布)节点和下游(消息接收)节点的连接名、连接方式,和已有ROS服务的连接名。

 

ROS Node是真正的执行模块(每个ROS node都是一个独立的可执行程序),对收到的消息进行处理,并且发布新的消息给下游节点。ROS Service是一种特殊的ROS节点,它相当于一个服务节点,接受请求并返回请求的结果。

 

下图展示了ROS通信的流程顺序,首先节点会向master advertise或者subscribe感兴趣的topic。当创建连接时,下游节点会向上游节点TCP Server发布连接请求,等连接创建后,上游节点的消息就会通过连接送至下游节点。

 


ROS Node通信流程

 

03

ROS Application on PLCnext

 



下面借助PLCnext控制器AXC F2152与TurtleBot3,让大家直观的感受一下ROS系统的工作方式:

 

AXC F 2152:基于最新的PLCnext Technology,突破了编程语言的限制,融合了传统控制器的可靠性和智能终端的强大应用,面向开源,面向未来的新一代控制器;

 

TurtleBot3:是一款模块化、可编程的基于ROS的移动机器人,由Willow Garage公司开发。其内部已集成SLAM导航功能包、遥控功能包以及与行驶相关的bringup等功能包;

 

首先,需要在PLCnext中创建ROS Master,它负责管理我们的整个系统,接着创建Instruction Node,它负责从本地IO(I/O modules)中读取数据(前进,后退,速度控制指令),将获取到的数据打包成会话(Topic)的格式,然后发布(Publish)。TurtleBot3中的指令接收节点Motion Node Group(实际上不止一个节点,为便于理解,就用Node Group指代),负责订阅(Subscribe)这个类型的会话(Topic)。当PLCnext中的Instruction Node接收到本地IO中传来的指令时,就会立刻通过TCP/IP协议发送给TurtleBot3中的Motion节点,从而控制车轮的转动。


同样,在TurtleBot3移动的过程中,SLAM Node会基于激光雷达传来的数据,进行即时的定位与地图的构建,并将定位和建图的数据封装成会话(Topic)的格式,然后发布(Publish)。PC端仿真建图软件的节点Simulation Node,订阅(Subscribe)这个类型的会话(Topic)。于是在TurtleBot3移动的过程中,我们就能够在PC端的仿真软件中看见及时的定位与建图的更新。

 


ROS Node 工作流图

 

下面视频便是PLCnext上搭载ROS Master与TurtleBot3机器人及PC机路径规划仿真的概念演示。

[新闻搜索] [] [告诉好友] [打印本文] [关闭窗口] [返回顶部]
0条 [查看全部]  网友评论

视觉焦点