现在人工智能的方案很多,也并应用到很多的领域去了,我这里并不对这些方面展开。我只对在机器人领域,特别是ROS以及ROS2系统上融合的一些人工智能方案跟平台做一定程度的归纳、总结。其次,即使在机器人应用方面,在此之前的几年时间里,很多知名的、大型的公司都曾推出过或者评估过人工智能的渗透方案,他们的评估方案不一而足,有的是乐观的,有些是悲观的,有的到现在还在不遗余力地在拓展,有的已经偃旗息鼓了,由于他们或者与ROS不相关,或者并不是开源,都不在我的探究范围。同时,国内兴起了一批的现代机器人公司,也有一批专门的AI方面的研发、应用公司,他们大多不热衷于开源,也不在探究之内。是为“小探”的小字之解。

在网上能找到ROS跟AI结合的资料是2016年,基于Intel CPU+NVidia Jetson板子。这是一个叫Artificial Human Companions的小公司将turtlebot机器人底盘跟这样的两个板子组合起来的一种非常简易的AI方案,叫做Deep Learning Robot,售价不到400美元。

但是它所涉及的领域,到现在还是在大谈特谈。

这个机器人使用了Turtlebot2的移动能力以及ROS的分布式部署。

使用了Turtlebot2的移动能力以及ROS的分布式部署

使用了Intel架构的主板作为运行ROS主要模块的大脑版以及NVidia Jetson板子提供的深度学习计算能力。

使用了NVidia的DL计算能力

提供简易的基于物体识别和语音辨识的语义级地图,在理解环境跟完成指令等方面,增加了些许智能化的“人性”倾向,譬如人类可以通过语音控制机器人跑到指定的物体面前,而不是用冷冰冰的二维坐标。

Artificial Human Companions这个组织可能已经关闭了,而且它所做的这些尝试都是非常非常初级的尝试,把他们当产品来卖,实在是有点心中赧赧不胜娇羞啦。但是它所涉及的这些方向还是一直是研究的主流。当然到现在吹破了AI恐怖来袭的泡泡之后,很多公司或者项目也就大失所望+大失钱财之后被double kill了。此为后话,搁置不表。

在之后的时间里,使用NVidia各种NN板子来提供DL能力,似乎是唯一的选择了,有很多的方案都是如此部署。

还有人专门为NVidia Netson或其它板子做了图形化工具来简化ROS的安装。譬如:

譬如Aerial Vehicles 项目,2017年将ARM+NVidia (TK1 or TX2)应用到了他们的一些无人机项目上。它的其中一个功劳,是将CMU的OpenPose项目移植到了ROS系统。

CMU OpenPose Package是一个比较著名的使用DL技术来分析人类的2D以及3D动作的框架。ROS系统的移植版本对它的主要功能进行比较完整的封装。当然这种封装还是比较容易的,只需要对输入数据跟输出结果封装成ROS Message格式就差不多了。可惜的是,这个项目最近缺少维护。

https://github.com/ildoonet/ros-openpose/blob/master/pose_face_hands.gif

在此期间,全球很多的自动驾驶公司也在从ROS社区挖人,做AI跟ROS的整合,因为搜索不到他们成型的产品或项目,而且很多公司都是作为前浪被其它前浪拍死在沙滩上了,这里也就不罗列他们的名字了。不过有个插曲,我在浏览他们的网站的时候,竟然发现有一些网站都已经被反美hacker们贡献了,WTF。

赛灵思(Xilinx)是设计、制造FPGA方面的大牛,同时在AI(特别是边缘服务器层面的AI应用框架)方面也有很不错的业界知名度。最近也在发布了一些官方和非官方的声明,明确人工智能在未来机器人应用中的重要性,认为在现代机器人上加持物体分类以及语义分割等AI功能是大势所趋。赛灵思也开始针对于ROS/ROS2做一些实质性的部署:

ROSROS2OpenCV4Librealsense2 (为Intel RealSense立体相机的底层库)Xilinx DPU TRM

赛灵思AI Edge Platform提供里一套完整的工具跟预训练的深度神经网络模型,并在相关的硬件平台(embedded-CPU-based FPGA)上做了较为完备的硬件加速。

因此赛灵思如何切实推动其AI技术、AI平台与ROS/ROS2的融合,以及这种集成到底对机器人业界与开源社区意味着什么,让我们拭目以待。

近来,也有一些AI相关的项目是支持ROS2系统的。

2019年,LG发布了一款基于Unity的LGSVL Simulator的仿真器,应用于自动驾驶领域,跟ROS2兼容。其跟ROS2的兼容是通过ros2-web-bridge模块桥接的,属于轻量级相互相对隔离的模式,好处是可以容易地跟其它第三方的自动驾驶软件栈整合。

支持3D LiDAR传感器和摄像机。

同时内置了自动巡道驾驶的深度神经网络模型和算法,部分源代码和相关文档见下面。

Intel对ROS2的贡献也是实心实意可圈可点的。

在过去的两年里,Intel部署了大约20个人力全力支持ROS2的成熟与产品化,除了主导了ROS2全新一代的导航软件栈Navigation2之外,在ROS2的早期阶段,还移植了一些核心模块,例如cv_bridge, image_pipeline, message_filters等等。另外,Intel还评审了ROS2的各个核心模块,并在代码安全、代码质量、实时性能等多方面提出了建设性意见,部分贡献见下图:

Intel开发并持续在维护的OpenVINO Toolkit,在基于openCV的计算机视觉的基础上,扩展了CPU、GPU、FPGA以及其它一些专有计算单元在神经网络推断能力和优化方面发挥了它们的算力极致。Intel围绕OpenVINO技术及其扩展,实现了对端、边、云的无缝链接,对于软硬件整合方面,特别是软件定义系统成为主流的当下,对业界实在是一种利好,对正在打算建立自己的人工智能体系的公司或者个人来说,是不可忽视的重要参考。毕竟IA架构,在众多的跨界领域里面,似乎是唯一的选择。就拿目前运行ROS或者ROS2的机器人系统来说,9成以上还是IA架构。在这种情况下,如果发挥CPU及其内嵌的GPU就足以满足人工智能的需求的话,也不啻为一种cost saving的一种有效方式。

Intel已经将OpenVINO Toolkit的部分视觉推断功能移植到了ROS跟ROS2系统,见下面的链接。

ROS/ROS2 OpenVINO Toolkit除了提供在CPU、GPU、FPGA、Movidius等等硬件上的优化了的视觉推断功能,还提供了一整套深度学习模型的流水线模型,可以让使用者在不改变代码的情况下,自由串联需要的推断功能(Inference)和模型(Model),对自己的应用场景做深度定制。

Intel另一个被引用广泛的ROS2项目是Smart Grasp项目。这个项目基于视觉来源(RGB数据或者点云数据),通过OpenVINO框架加速,实现对物体的识别、分割,进而实现对物体的精确抓取,在智能制造方面做出了一定的尝试。

为了配合机械手臂跟视觉相机的高精度校准,Intel还提供了一套手眼标定的算法跟工具。

这个项目跟大名鼎鼎的Moveit是接口级别兼容的,可以被很容易地整合到更多的智能运动控制领域。该项目也在ROSCON2019峰会上以及第一届Moveit中国开发者年会上向业界做过展示。

相关的源码跟资料见下:

当然,最为新鲜出炉的消息是,ROS2在2020年2月底刚启动了一个Edge AI工作组,专门致力于机器人端(之后或许有服务器端)的包罗众家所长的大一统的官方的人工智能框架,这个对业界或许是好事,请大家关注。

又当然,深度强化学习(Deep Reinforcement Learning)最近几年如火如荼,而且跟ROS/ROS2特别是机器人运动规划相关领域结合比较密切。这种以控制为优势的深度学习算法,仅仅是下个棋并不能满足它的进取心,也不是淘金的正确战场。DRL跟机器人的结合将会有很大的看头,这里就不展开了,如果有机会,另外写个文总结吧。

希望对大家有用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注