基于ROS与深度学习的智能捡球系统设计
2020-05-07陈芬生孙李生吴居进
陈芬生 孙李生 吴居进
(佛山科学技术学院,广东 佛山 528000)
一、理论分析与系统方案
上位机采用树莓派的Raspberry Pi 3 Model B,只有信用卡大小的微型电脑,其操作系统基于Linux,64位的1.4GHz四核ARM Cortex-A53处理器,具有1G RAM缓存,10/100 Mbit/s以太网并自带无线网络功能。在上位机上搭载Ubuntu16.04 mate系统,匹配ROS-kinetic版本;ROS 起源于斯坦福大学人工智能实验室与 Willow Garage 公司的机器人项目,是一个面向机器人的开源操作框架,它的本质就是一个类 Linux 二次操作系统,具有与常规操作系统相似的功能,它能够提供常用的机器人传感器或者机器人电机的驱动,帮助实现硬件抽象,同时它也拥有多进程的概念,并提供进程间的相互通信机制,还能够像 Linux 操作系统一样提供常用的软件包与算法包,方便用户的安装与调用。此外ROS系统对计算机视觉提供了很好的平台,不仅支持Opencv、cv_birdge和image_transpor相连接,还提供了物体识别和视觉里程计等算法的功能包,这也是选择使用ROS系统的优势所在。
二、系统设计整体框架
启动树莓派运行ROS系统,调用语音交互系统,通过语音唤醒,可与系统进行简单的日常交流;调用Vision中的USB_cam,TensorFlow和OpenCv,可以对不同的物体进行识别,已检测可以识别鼠标,键盘等;当识别到是网球的时候,此时系统将发送信号到下位机,由下位机通过16路PWM舵机驱动器和LM2596S DC-DC直流可调降压稳压电源模块板实现对机械臂的抓取。
三、软件程序设计
在物体识别方面采用TensorFlow对象检测API,这是一个基于TensorFlow构建的开源框架,可以轻松构建,训练和部署对象检测模型,经实践调试,该程序可以嵌入到树莓派上搭载的ROS系统中执行。
cd tensorflow_ws #进入工作空间
catkin_make #进行编译
roscore #运行节点
roslaunch usb_cam usb_cam-test.launch #打开摄像头
roslaunch ros_tensorflow ros_tensorflow_classify.launch
#执行识别程序
rostopic echo /result_ripe #接收字符串消息
智能捡球系统测试情况:
1.能精准识别出网球
2.能控制机械臂对网球进行抓取
3.能用语音控制系统,并可进行简单的语音交流
四、总结
很多球体识别都是直接利用找圆或颜色进行识别,此类方法识别度不高而且容易受到环境的干扰,本文设计的智能捡球系统采用深度学习算法,利用搭建深度卷积神经网络模型进行识别,更能适应复杂环境,且识别速度和准确率大大提高;并且采用的ROS分布式架构,多语言支持和可伸缩性,将每一个工作进程看成是一个节点,实现了整个机器人多个控制区的紧密连接与消息传递机制,大大地简化了原有的通信方式;通过调用API接口,采用语音模式控制,简化了对捡球系统的操作。