2. 福建省网络安全与密码技术重点实验室, 福州 350007
2. Fujian Provincial Key Lab of Network Security & Cryptology, Fuzhou 350007, China
随着服务机器人的发展, 基于视觉跟随、语音控制、自主导航等新型控制方式的机器人由于具有增加人机交互、提高参与感等优点越来越受到人们的关注. 然而, 随着机器人技术的发展, 为不同机器人编写软件这一工作也变得越来越繁重. 不同的机器人设计方案不同, 底层接口也大不相同, 编写的软件也不同, 但是其基本算法是一致的. 为了改善这一缺点, 机器人操作系统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端: 实时显示感知层获取的数据并对执行节点进行控制、展示视频监控和控制机器人.
2 系统硬件设计 2.1 系统总硬件设计
该系统由感知层的传感器节点、接入网关、溯源机器人等组成. 如表1所示, 本系统硬件部分由树莓派、STM32核心驱动板、摄像头、各种传感器与传感器节点等几部分构成. 通过数字接口、SPI、串口等连接, 实现系统所需要的感知、数据传递、图像处理、溯源服务等功能.
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.
3 系统软件设计 3.1 感知层的设计
通过无线传感器网络传递数据实现感知层数据采集的功能. 无线传感器网络的组建采用了近几年发展迅速的基于IPv6的Contiki物联网操作系统. 感知层节点运行由Contiki协议栈提供的TCP/IP堆栈, 将数据打包为UDP数据报递交至网关.
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.
3.4 语音功能模块
首先对获取的语音信号进行判断, 若是规定的唤醒词, 则继续获取语音信号, 在静音检测2 s后, 保存为wav格式的音频文件, 信号的采样频率为16 000 Hz, 声道数为1. 音频信息获取结束后, 调用语音识别API, 最后对返回的结果进行判断, 从而让机器人做出相应的行驶动作. 语音功能模块的流程见图9.
3.5 物体识别
物体识别采用tensorflow深度学习框架和Inception-v3模型. 程序收到物体识别的指令后, 对当前摄像头捕获的图像进行识别预测, 根据预测结果的id号, 在Inception-v3模型中查找对应的物体, 最后将结果返回至用户. 程序的具体实现逻辑如图10.
3.6 物体追踪实验中待追踪的物体具有较统一的颜色, 为了让机器人可以随着颜色物体位置的改变而能做出简单的移动, 在考虑机器人的处理能力之后, 采用Camshift算法利用其计算量少等特点实现物体追踪. 在选择待追踪的物体之后, 以颜色作为基本特征来提取物体的图像特征, 将原本的RGB颜色空间转换至HSV颜色空间. 为更好的规避因光照不均匀造成的影响, 提高准确率, 抽取H通道作为颜色特征, 计算待追踪物体的Hue分量直方图并输出图像的反向投影图, 因待追踪物体的颜色较统一, 所以只以H通道作为颜色特征也可实现追踪. 再利用Camshift算法计算得出当前图像中待追踪物体的位置信息(起始坐标、长度、宽度等), 而后与待追踪物体初始的位置信息进行比较, 从而实现机器人的物体追踪. 程序的具体逻辑如图11.
试验中位置信息的变化幅度阈值使用两个值同时进行判断, 试验中物体位置中心点的变化幅度阈值设置为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网络.
视频监控则采用ROS提供的web_video_server, 当一个HTTP请求相应的ROS图像主题的视频流, 就会订阅相应的话题, 并创建一个视频编码器的实例[7], 然后被编码的原始视频包被送达至客户端. Web端的设计如图12.
4 试验与实现在实验室构建试验环境对感知层的数据采集、机器人溯源功能、物体追踪、物体识别、语音功能, Web端的功能进行测试.
机器人根据雷达获取的信息采用hectorslam方法建图的效果如图13、图14. 之后对机器人的溯源功能进行测试, 见图15, 在多次的测试中机器人都能到达异常数据点附近, 准确率高达100%.
对物体追踪功能进行试验: 选取待追踪的物体, 依次得到了待追踪物体的Hue分量图和待追踪物体的反向投影图, 见图16. 手动让机器人远离待追踪的物体, 机器人会自动靠近待追踪的物体, 最终停在最开始的地方附近.
物体追踪实验的测试结果记录如表4所示. 从表中可知物体追踪的成功率在75%, 由于左右移动的距离较小以及Camshift算法得到的位置信息的误差, 所以在物体向左右移动的实验中, 效果较差.
对语音功能进行测试: 当唤醒词成功唤醒机器人后, 下达“向前进”的语音, 语音模块可准确地识别为 “向前进”, 与之同时, 溯源机器人也会向前行驶. 语音识别过程中终端页面的输出信息见图17. 之后对唤醒功能进行多次试验, 50次的试验中成功唤醒43次, 唤醒成功率高达86%.
Web端的设计与物体识别功能的试验效果见图18、图19. 图18是感知层数据的实时显示与执行节点的控制. 图19是视频监控与机器人控制的页面, 按住shift键并点击方向图标, 机器人会做出相应的行驶. 而点击“识别”按钮可进行识物, 并显示识别的结果.
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 |