[field:fulltitle/]

科技之窗 > 互联网 > 正文

利用ROS和Web,让机器人更智能
2018-11-02 16:09  [db:来源]    我要投搞

随着AI的发展,机器人必然变得越来越智能。然而要实现智能化,除了需要丰富的AI算法外,还需要强大的操作系统支持——ROS就是这样一款非常受欢迎的机器人系统。ROS目前已经建立了庞大的生态系统,其参与者包括来自全球机器人行业的众多开发者,而英特尔开源技术中心(OTC)的Web团队也是其中重要一员。他们在客户端、 edge、云、IoT、W3C标准、机器人技术等领域开发及应用web技术,致力于保持web开放、安全、特性丰富且性能强大。

对于机器人设计厂商来讲,他们在极力寻求更好的软硬件解决方案,所以有人自然想到将ROS和Web相结合从而得到更好的机器人解决方案。或许有人会问:为什么要在机器人技术中使用Node.js 和Web?它们各自有什么特点?先看Node.js,其具有高性能 (JIT)特性,性能高于Python语言,从而使系统在同一机器人硬件平台上可实现更多功能;另外,Node.js拥有强大的生态系统和社区支持,是Github*上最流行的语言,而且拥有世界上最大的包分发系统——npm。Node.js设计时易于部署和调试,适合应用于web 界面。再看Web技术,它是远程控制和仪表板的最佳选择,可以进行状态检查、运动控制、姿势可视化、视频流等工作,而且可以在任何浏览器里运行,易于嵌入,拥有海量资源。

基于两者各自的优势,工程师要考虑的是如何将web引入到ROS中?首先,RWT* 已经将ROS 1.0 APIs 在web中暴露,但在2017年年中之前还没有针对ROS 2.0的解决方案,因此OTC的Web团队开发了一套新模块应用于ROS 2.0。当然我们还需要考虑这是不是在web中暴露ROS API 的最佳方式呢? 比如:服务;另一种做法是Node.js web 服务器,就是在务器中暴露ROS API,这种方式灵活而有效,web页面中只保留业务逻辑(RaaS)。其实工程师也不必害怕,因为web服务器在 Node.js中只不过需要几行代码,并且前端和后端具有同样的技术栈,因此更易于调试。

ROS2.0路线图

我们目前取得的两个成果是GitHub RWT 的两个软件包,其中一个是rclnodejs (github repo),它是一个ROS 2.0的Node.js 客户端,它可以提供快速、便捷而强大的ROS 2.0的JavaScript接口;另一个是ros2-web-bridge (github repo),能够实现在web页面中调用ROS 2.0 API ,且与 roslibjs*兼容。下面我们来看看这两个模块各自的工作原理。

如上图所示,其展示了rclnodejs软件架构设计,其原则是对rcl层薄封装,从而快速而轻松地适应变化。软件接口采用事件驱动和非阻塞(Promise/Event)模式 ,使得程序可以拥有高并发特性;另外包本身无需重新编译即可使用新的ROS消息,一切都在运行过程中处理。如此一来,用户就能够轻松、有效地编写 ROS 应用。

如上图所示,展示ros2-web-bridge 是如何将ROS 2.0引入到浏览器中。其与ROS 1.0 bridge (rosbridge_suite)现有的JSON消息协议 兼容,从而现有的 Web Tools 可以直接使用,例如 :2D/3D 可视化。保持开发的快速简单,用户友好的调试。如此一来,RWT ROS 1.0组件便可与 ROS 2.0透明兼容。

关键词: [db:TAG标签](1672)

责任编辑:[db:作者]