APP下载

基于ROS的溯源机器人系统①

2019-03-11张美平郭旭城张毅韬王志宇

计算机系统应用 2019年3期
关键词:语音物体节点

张美平,郭旭城,张毅韬,王志宇

1(福建师范大学 数学与信息学院,福州 350007)

2(福建省网络安全与密码技术重点实验室,福州 350007)

引言

随着服务机器人的发展,基于视觉跟随、语音控制、自主导航等新型控制方式的机器人由于具有增加人机交互、提高参与感等优点越来越受到人们的关注.然而,随着机器人技术的发展,为不同机器人编写软件这一工作也变得越来越繁重.不同的机器人设计方案不同,底层接口也大不相同,编写的软件也不同,但是其基本算法是一致的.为了改善这一缺点,机器人操作系统 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深度学习框架和Inceptionv3模型.程序收到物体识别的指令后,对当前摄像头捕获的图像进行识别预测,根据预测结果的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 等通信方式.

图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 端的实时展示等;最后构建相关实验环境,对系统与设备的相关性能进行测试,验证可行性.未来需要进一步优化整合系统,构建大规模试验与应用.

猜你喜欢

语音物体节点
基于图连通支配集的子图匹配优化算法
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
魔力语音
基于MQ3与MP3的价廉物美的酒驾语音提醒器
数字滤波在语音信号降噪中的应用
对方正在输入……
揭开物体沉浮的秘密
为什么同一物体在世界各地重量不一样?