背景
随着AI技术的引入,机器人对世界的认知越来越深刻,上一讲中介绍了Movidius NCS物体识别开发包,而实际生活中,对物体的认知远远超出“这是什么”,还需要回答“这个物体离我有多远”, “这是前面看到的那个物体么”,等等。在物体识别的基础上,本文将向您介绍对物体进行进一步分析的ROS开发包的功能及其使用方法,您可以利用它进一步开发机器人的智能应用,比如智能蔽障,构建语义地图等。ROS物体识别项目就是为了解决这个问题而出现的。
项目介绍
1.
软件架构设计
本项目主体由三个ROS发布节点组成,以提供不同方面的分析结果。物体检测节点(ObjectDetectionNode)提供被检测物体的类型和在视觉框图中的2D位置, 物体跟踪节点(Object Tracking Node)提供物体ID来表征当前检测到的物体是不是持续被跟踪的同一物体,物体3D定位节点(Object 3D Localization Node)提供物体在3D空间中的位置信息。下面这张图展示了物体分析模块和其他相关的视觉采集节点(RealSense Node)以及物体检测后端节点的关系。
图1. ROS物体识别架构
2.
运行条件
·
运行Ubuntu16.04的x86_64计算机
·
ROS Kinetic
·
可深度学习进行物体识别的ROS节点(二选一)
o
Intel Movidius神经计算棒节点
o
基于OpenCl Caffe的物体识别节点
·
RGBD相机
具体环境配置可以参考这里。
3.
编译与安装
下载源码到本地ROS工作区,切换到最新发布,编译、安装。
4.
运行演示程序
在rviz中看到的物体识别,跟踪和定位信息如下:
图2.演示截屏
应用领域
本项目提供的物体检测,跟踪和定位的能力,可以运用于多种机器人使用场景,例如:
1.
3D物体识别与追踪
基于物体在三维空间中的位置,从而对物体进行3D识别与跟踪。
2.
机器人智能避障
传统的机器人采用雷达来检测障碍物,而在高速情况下,对雷达的检测距离和精度要求非常高,高精度的雷达价格动辄上万,基于3D摄像头的方案成本将大大降低。基于物体识别的避障,还能通过指定不同的策略来应对不断变化的场景,使机器人避障更加智能。
3.
基于语义的同步定位与建图(SLAM)
通过将识别出的物体及位置信息,标注在SLAM得到的地图上,可以极好地提高地图的可读性和人机交互的便利性。
展望
本项目目前开发到v0.3.0版本,我们将持续优化计算方案,以达到更好的性能,满足应用中实时性的要求。另一方面,由于ROS2相对ROS具有更好的安全性和实时性,我们计划移植项目到ROS2中。
Intel开源软件技术中心(Open Source Technology Center)将不断推出更多的基于ROS/ROS2开发的新技术,除了介绍过的Movidius神经计算棒,本章介绍的物体识别、跟踪、定位技术,还将陆续推出带有物体信息的语义地图,移动物体检测及避障,Intel3D RealSense摄像头的应用,以及ROS到ROS2的演进,ROS2的实时及安全性等课题。希望我们在这一领域的工作能给您的项目带来更大的可能性,也希望能得到大家的反馈与建议,甚至发扬开源精神协同开发,使我们能更好地服务于开源社区,推动人工智能技术的发展和应用。