计算机系统应用  2019, Vol. 28 Issue (3): 43-50   PDF    
基于ROS的溯源机器人系统
张美平1,2, 郭旭城1, 张毅韬1, 王志宇1     
1. 福建师范大学 数学与信息学院, 福州 350007;
2. 福建省网络安全与密码技术重点实验室, 福州 350007
摘要:针对国内外对物联网和机器人相互结合, 让机器人更好的服务于物联网展开的相关研究. 本文提出了一种基于ROS与物联网的智能机器人系统. 硬件上采用stm32传感器节点、树莓派、OpenWRT路由器、Rplidar雷达和C270罗技摄像头等; 软件上使用ROS次级操作系统、Contiki、Tensorflow框架、Camshift算法和SLAM算法等; 设计实现感知层的数据采集, 基于SLAM的自动溯源, 语音控制, 机器人的物体追踪, 物体自动识别以及web端的视频监控、反向控制和感知层数据实时显示等功能; 而后搭建相关的试验环境, 对系统与设备的相关功能进行测试, 验证系统的可行性.
关键词: ROS    Contiki    物联网    TensorFlow    Camshift    SLAM    机器人    
Traceability Robot System Based on ROS
ZHANG Mei-Ping1,2, GUO Xu-Cheng1, ZHANG Yi-Tao1, WANG Zhi-Yu1     
1. College of Mathematics and Informatics, Fujian Normal University, Fuzhou 350007, China;
2. Fujian Provincial Key Lab of Network Security & Cryptology, Fuzhou 350007, China
Foundation item: Year 2018, Graduates Innovation Training Program of Fujian Province (201810394053)
Abstract: The combinations of the Internet of Things and robots to make robots better serve the Internet of Things have been studied worldwide. This study puts forward an intelligent robot system based on ROS and Internet of Things. The hardware adopts stm32 sensor node, raspberry pi, OpenWRT router, Rplidar radar, c270 logitech camera, and so on. The software uses ROS operating system, Contiki, Tensorflow framework, Camshift algorithm, SLAM algorithm, and so on. Then we design the data acquisition of the perception layer, automatic traceability based on SLAM, voice control, object tracking of robot, object recognition, video monitoring, reverse control, and real-time display of data about perception layer on the web. After that, the relevant test environment was set up to test the related functions of the system and verify the feasibility of the system.
Key words: ROS     Contiki     Internet of Things (IoT)     TensorFlow     Camshift     SLAM     robot    

引言

随着服务机器人的发展, 基于视觉跟随、语音控制、自主导航等新型控制方式的机器人由于具有增加人机交互、提高参与感等优点越来越受到人们的关注. 然而, 随着机器人技术的发展, 为不同机器人编写软件这一工作也变得越来越繁重. 不同的机器人设计方案不同, 底层接口也大不相同, 编写的软件也不同, 但是其基本算法是一致的. 为了改善这一缺点, 机器人操作系统ROS (Robot Operating System)应运而生. ROS是开源机器人操作系统, 它是一种分布式模块化的开源软件框架, 其目的在于提高软件代码的复用率, 提供机器人开发框架, 很好的解决了软件开发过程中代码冗余、移植性差等问题[1], 更提供了不同硬件的抽象描述、底层驱动程序的管理、程序节点间消息传递的机制、机器人软件发行包的管理等功能[2]. 目前,开发者和开源 ROS 开发人员为 ROS 共享社区贡献了各个领域的软件包, 如 SLAM定位算法、坐标转换 tf 库、机器视觉开源库OpenCV和OpenNI等. 由于 ROS 代码的高可重用性和可扩展性, 基于 ROS 的机器人系统可以通过利用社区中已有的代码方便地用于二次开发[3].

近年物联网相关技术的飞速发展, 使得物联网的概念深入人心, 相关应用辐射至各行各业. 据统计, 国内物联网连接数已达16亿个, 预计2020年将超过70亿个, 市场规模达到2.5万亿元, 物联网的发展潜力巨大. 与之同时, 国内外对物联网与智能机器人结合的研究已经展开, 如IBM公司、日本国际电气通信先进技术研究所等[4,5].

本系统在基于ROS平台的基础上与物联网相结合, 设计可根据传感器数据异常而追溯至异常数据源附近的机器人, 通过机器人身上搭载的摄像头捕获异常数据源附近的图像数据. 为使机器人具有更强的实用性, 机器人添加了物体识别、物体追踪、语音控制等功能. 在结合用户的需求后, 设计了拥有视频监控、传感器数据监控、机器人控制功能的Web端.

1 系统框架

基于ROS的溯源机器人系统的功能主要由: 感知层数据采集、基于感知数据的溯源服务、语音控制、物体识别、机器人物体追踪和Web端等几部分组成. 其总体框架如图1. 感知层数据采集: 通过传感器获取所处环境的物理状态, 如温湿度、光照数据等, 采集到数据后将数据发送至ROS网络; 基于感知数据的溯源服务: 对感知层的数据处理分析后, 若结果表示为异常状态, 机器人则自动导航至异常数据点, 搭载的摄像头获取实时图像, 否则机器人原地待命; 语音控制: 唤醒词唤醒机器人后可对机器人下达行驶命令, 机器人做出相应的动作; 物体自动识别: 对机器人下达识别指令后, 机器人将对当前获取的图像进行识别, 并将结果返回给用户; 机器人的物体追踪: 用户选取待追踪的物体后机器人会自动追踪该物体; Web端: 实时显示感知层获取的数据并对执行节点进行控制、展示视频监控和控制机器人.

图 1 系统总体框架

2 系统硬件设计 2.1 系统总硬件设计

该系统由感知层的传感器节点、接入网关、溯源机器人等组成. 如表1所示, 本系统硬件部分由树莓派、STM32核心驱动板、摄像头、各种传感器与传感器节点等几部分构成. 通过数字接口、SPI、串口等连接, 实现系统所需要的感知、数据传递、图像处理、溯源服务等功能.

表 1 系统硬件

2.2 溯源机器人的硬件设计

溯源机器人采用性能为1.2 GHz四核Broadcom CEM2837 64位ARMV8处理器的树莓派3代作为主控, 板载BCM43143WIFI模块用于WiFi通信; 还采用基于ARM CortexM3内核的STM32F103RC高性能单片机作为机器人的驱动板, 其突出优点是高性能、低成本、低功耗, 主要用于控制机器人的行驶, 并获取IMU测量所得的机器人在三维空间中的角速度和加速度. 另外, 机器人搭载的高清摄像头Logitech C270, 分辨率高达 1280×720 像素, 以每秒25帧的速度获取图像数据, 并通过USB2.0将图像数据传输至树莓派. 搭载的RPLIDAR A1扫描测距雷达采样频率高达8000次/秒, 可实现对周围环境的360度全方位扫描测距检测, 从而获得周围环境的轮廓图, 是应用SLAM算法较理想的传感器, 获得的数据直接通过USB传输至树莓派, 无需其他任何编码工作. 溯源机器人的结构如图2, 实物图如图3.

图 2 溯源机器人硬件连接图

图 3 溯源机器人识物图

3 系统软件设计 3.1 感知层的设计

通过无线传感器网络传递数据实现感知层数据采集的功能. 无线传感器网络的组建采用了近几年发展迅速的基于IPv6的Contiki物联网操作系统. 感知层节点运行由Contiki协议栈提供的TCP/IP堆栈, 将数据打包为UDP数据报递交至网关.

底层数据上报格式与反向控制指令见表2, 表3.

表 2 感知层数据上报格式

表 3 感知层执行节点控制指令

3.2 Contiki-ROS网关程序的设计

整个网关程序的设计[6]图4. 程序内部使用Contiki IPv6接入模块, 实现IPv6和IPv4的动态转换, 设置转换地址池, 将数据汇聚处理后以ROS规范进行转换, 最后将感知层数据递交至ROS网络.

3.3 SALM自动溯源的实现

溯源模块的流程见图5. 机器人首先采用基于优化算法的hectorslam方法建立试验环境的地图并记录传感器节点的坐标. 建图过程见图6.

其次溯源模块监听感知层的实时数据, 若检测出异常状态, 如温度超过阈值, 则在建立试验环境地图的基础上, 采用ROS提供的navigation导航功能包集依次建立试验环境的全局代价地图和局部代价地图, 结合查询得到的异常数据点坐标, 初步规划自动导航的全局路径, 再经局部代价地图调整得到修正过后的全局路径. 溯源机器人导航路径建立的框架见图7.

完成建图和路线规划后, 引入ROS的actionlib功能包集合判断溯源结果, actionlib使用client-server工作模式, 不断比较异常节点坐标和当前位置, 判断是否到达目标点, 交互过程见图8.

图 4 Contiki-ROS网关设计图

图 5 溯源流程

3.4 语音功能模块

首先对获取的语音信号进行判断, 若是规定的唤醒词, 则继续获取语音信号, 在静音检测2 s后, 保存为wav格式的音频文件, 信号的采样频率为16 000 Hz, 声道数为1. 音频信息获取结束后, 调用语音识别API, 最后对返回的结果进行判断, 从而让机器人做出相应的行驶动作. 语音功能模块的流程见图9.

图 6 hectorslam建图流程

图 7 溯源机器人导航框架

图 8 溯源服务protocol

图 9 语音控制流程

3.5 物体识别

物体识别采用tensorflow深度学习框架和Inception-v3模型. 程序收到物体识别的指令后, 对当前摄像头捕获的图像进行识别预测, 根据预测结果的id号, 在Inception-v3模型中查找对应的物体, 最后将结果返回至用户. 程序的具体实现逻辑如图10.

3.6 物体追踪

实验中待追踪的物体具有较统一的颜色, 为了让机器人可以随着颜色物体位置的改变而能做出简单的移动, 在考虑机器人的处理能力之后, 采用Camshift算法利用其计算量少等特点实现物体追踪. 在选择待追踪的物体之后, 以颜色作为基本特征来提取物体的图像特征, 将原本的RGB颜色空间转换至HSV颜色空间. 为更好的规避因光照不均匀造成的影响, 提高准确率, 抽取H通道作为颜色特征, 计算待追踪物体的Hue分量直方图并输出图像的反向投影图, 因待追踪物体的颜色较统一, 所以只以H通道作为颜色特征也可实现追踪. 再利用Camshift算法计算得出当前图像中待追踪物体的位置信息(起始坐标、长度、宽度等), 而后与待追踪物体初始的位置信息进行比较, 从而实现机器人的物体追踪. 程序的具体逻辑如图11.

图 10 物体识别程序逻辑

试验中位置信息的变化幅度阈值使用两个值同时进行判断, 试验中物体位置中心点的变化幅度阈值设置为0.4, 物体位置长度的变化幅度阈值设置为0.2, 当阈值偏大时, 物体追踪效果不怎么明显, 当阈值偏小时, 由于算法的计算误差有时会导致机器人追踪失误.

3.7 Web端的实现

Web端利用HTML、CSS、roslibjs开发. 感知层显示页面分为感知层反向控制区和数据实时显示区, 视频监控网页则分为视频采集区, 机器人控制区. 并采用websocket的方式与rosbridge节点进行通信, rosbridge主要包含两个部分, Rosbridge Protocol和Rosbridge Implementation. 其中Protocol部分提供了非ROS系统和ROS系统通信的具体格式, 包括话题的订阅, 消息的发布等. Implementation部分是rosbridge的具体实现, 包含rosbridge_server等包. rosbridge_server负责通信的传输层, 包括websockect, tcp, udp等通信方式.

Rosbridge让没有安装ROS的系统也能使用ROS, 在ROS网关开放websocket server, 浏览器即可与ROS网关互动, 当rosbridge节点收到数据之后, 将其封装成ROS规范的ROS消息, 并递交至ROS网络.

图 11 物体追踪程序逻辑

视频监控则采用ROS提供的web_video_server, 当一个HTTP请求相应的ROS图像主题的视频流, 就会订阅相应的话题, 并创建一个视频编码器的实例[7], 然后被编码的原始视频包被送达至客户端. Web端的设计如图12.

4 试验与实现

在实验室构建试验环境对感知层的数据采集、机器人溯源功能、物体追踪、物体识别、语音功能, Web端的功能进行测试.

机器人根据雷达获取的信息采用hectorslam方法建图的效果如图13图14. 之后对机器人的溯源功能进行测试, 见图15, 在多次的测试中机器人都能到达异常数据点附近, 准确率高达100%.

对物体追踪功能进行试验: 选取待追踪的物体, 依次得到了待追踪物体的Hue分量图和待追踪物体的反向投影图, 见图16. 手动让机器人远离待追踪的物体, 机器人会自动靠近待追踪的物体, 最终停在最开始的地方附近.

物体追踪实验的测试结果记录如表4所示. 从表中可知物体追踪的成功率在75%, 由于左右移动的距离较小以及Camshift算法得到的位置信息的误差, 所以在物体向左右移动的实验中, 效果较差.

图 12 Web端交互示意图

图 13 建立的地图

图 14 地图实景

图 15 溯源服务测试

图 16 物体追踪测试

表 4 物体追踪测试记录表

对语音功能进行测试: 当唤醒词成功唤醒机器人后, 下达“向前进”的语音, 语音模块可准确地识别为 “向前进”, 与之同时, 溯源机器人也会向前行驶. 语音识别过程中终端页面的输出信息见图17. 之后对唤醒功能进行多次试验, 50次的试验中成功唤醒43次, 唤醒成功率高达86%.

图 17 语音功能测试

Web端的设计与物体识别功能的试验效果见图18图19. 图18是感知层数据的实时显示与执行节点的控制. 图19是视频监控与机器人控制的页面, 按住shift键并点击方向图标, 机器人会做出相应的行驶. 而点击“识别”按钮可进行识物, 并显示识别的结果.

图 18 感知层数据监控页面

图 19 视频监控与机器人控制页面

5 总结

国内外对物联网与智能机器人结合的研究已经展开, 并取得了一定成就. 本文基于此对物联网与机器人结合的方式进行了研究, 采用STM32节点、树莓派等硬件并结合ROS、Contiki等支持, 设计实现了感知层的数据采集, 接入网关的数据处理, 基于SLAM的自动溯源, 语音控制, 机器人的物体追踪, Web端的实时展示等; 最后构建相关实验环境, 对系统与设备的相关性能进行测试, 验证可行性. 未来需要进一步优化整合系统, 构建大规模试验与应用.

参考文献
[1]
郭欣桐, 战艺. 基于ROS的服务型机器人新型控制方式. 电子世界, 2016(11): 8-9. DOI:10.3969/j.issn.1003-0522.2016.11.011
[2]
陈贤, 武延军. 基于ROS的云机器人服务框架. 计算机系统应用, 2016, 25(10): 73-80. DOI:10.15888/j.cnki.csa.005343
[3]
刘凤, 杨东升, 廉梦佳, 等. 基于ROS的智能工业机器人系统开发平台. 计算机系统应用, 2017, 26(10): 77-81. DOI:10.15888/j.cnki.csa.006019
[4]
Grieco LA, Rizzo A, Colucci S, et al. IoT-aided robotics applications: Technological implications, target domains and open issues. Computer Communications, 2014, 54: 32-47. DOI:10.1016/j.comcom.2014.07.013
[5]
曹惠茹, 黄晓锋, 许建强, 等. 新型养老环境下的药品投送机器人系统. 计算机系统应用, 2018, 27(6): 220-224. DOI:10.15888/j.cnki.csa.006389
[6]
张美平, 丁文才, 许友泽. IPv6物联网接入网关的设计实践. 计算机系统应用, 2018, 27(2): 112-116. DOI:10.3969/j.issn.1003-3254.2018.02.019
[7]
李长圆, 李小坚. 基于ROS的智能家居Web监控系统设计. 工业控制计算机, 2017, 30(11): 16-17. DOI:10.3969/j.issn.1001-182X.2017.11.007