文章目录

  • 一、总体功能设计
  • 二、实验环境
  • 三、演示
  • 四、场景搭建、建图与导航模块
    • 4.1 场景搭建
    • 4.2 小车模型
    • 4.3 导航模块
      • (1)安装依赖
      • (2)从github下载的文件中的test_ws目录下
      • (3)运行导航功能
  • 五、YOLO目标检测模块
    • 5.1 YOLO介绍
    • 5.2 本课设尝试使用过的YOLO模型
  • 六、语音合成模块
  • 七、小车摄像头与YOLO模块的通信
    • 7.1 小车摄像头模块发布话题消息
    • 7.2 YOLO模块模块订阅话题消息
  • 八、YOLO模块与语音合成模块的通信
    • 8.1 YOLO模块模块发布话题消息
    • 8.2 语音合成模块订阅话题消息
  • 九、演示时各模块的启动命令
  • 十、全局概览
  • 注意事项;
  • 源码:

一、总体功能设计

完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。

(注:目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。)

二、实验环境

Windows10
VMware虚拟机 ubuntu18.04
Ros melodic

三、演示

演示地址:https://www.bilibili.com/video/BV1tB4y1Y7UH

四、场景搭建、建图与导航模块

4.1 场景搭建

  • gazebo Building Editor
  • 场景概览

    由于官方的模型库中没有我所使用的YOLO模型中能够检测到的特征鲜明的物体,如猫、狗、大象、马、苹果、香蕉等,所以部分物体(如图中的香蕉)放在相框中的图片中进行识别。
  • 设置的小车主要识别的区域

4.2 小车模型

本次课设使用的是TurtleBot3中的Waffle小车,下图中的中间一个(含有雷达与摄像头)

小车模型在rviz中展示

4.3 导航模块

  • 注:对应github文件中的test_ws工作空间

gmapping 通过粒子滤波将激光距离数据转化为珊格地图。

  • 优点:在长廊及低特征场景中建图效果好;构建小场景地图所需的计算量较小且精度较高。缺点:依赖里程计,无法适用无人机及地面小车不平坦区域;无回环;大的场景,粒子较多的情况下,特别消耗资源。

主要参考:我在github上传的这个文件:导航模块参考.pdf

(1)安装依赖

在开始该部分设计之前,我们先安装相关支持的功能包,包括建图、导航以及机器人仿真的功能包(克隆下载后仅保留turtlebot3_gazebo文件夹),相关命令如下:

sudo apt-get update
sudo apt-get install ros-melodic-turtlebot3-*
sudo apt-get install ros-melodic-navigation
sudo apt-get install ros-melodic-slam-gmapping
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
sudo apt-get install ros-melodic-dwa-local-planner
  • 在使用仿真机器人之前先利用以下命令确定机器人类型,在 test_ws 目录下运行:
echo “export TURTLEBOT3_MODEL=waffle” >>~/.bashrc

(2)从github下载的文件中的test_ws目录下

先 catkin_make编译然后刷新工作空间,最后在运行 launch文件即可完成整体功能的启动,建图流程:
在test_ws目录下运行以下两条命令

roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch my_navi build_map.launch

运行完上述前两条命令之后会出现一个仿真的场景,然后rviz中会显示当前建图结果,然后运行下面的命令会出现键盘控制界面,

rosrun turtlebot3_teleop turtlebot3_teleop_key

可以利用“w”,“a”,“s”,“d”来控制机器人移动,这四个按键分别控制向前移动、向左自旋、停止和向右自旋,合理的控制机器人移动来建立环境地图,结果如图3所示,最后利用下面的命令保存建图结果,

rosrun map_server map_saver -f map2

产生图片名为“map2.pgm”和名为“map2.yaml”的地图参数,相关建图结果如图所示

  • 开始建图的时候
  • 建图完成
  • 控制小车建图的时候各个节点之间的通信情况

(3)运行导航功能

导航相关命令如下,在 test_ws 目录下执行命令之后会出现仿真场景和 rviz,点击 rviz 导 航栏的“2D Nav Goal”,然后点击地图上的任意空白地点之后机器人会自动导航至目标点, 并且 rviz 和仿真地图中机器人的动作在没有系统延时的时候会保持一致。

roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch my_navi turtlebot_navigation.launch

五、YOLO目标检测模块

注:对应github文件中的yolo_ws工作空间
主要参考:小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

5.1 YOLO介绍

YOLO(You Only Look Once) 是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。

5.2 本课设尝试使用过的YOLO模型

注:本课设使用的是yolov2_tiny.weights(能识别80种类别的物体)

注:YOLO_weights网盘下载链接:https://pan.baidu.com/s/1wQHcdP5kQWm8qL_qxqhPdw?pwd=o7fp
提取码:o7fp --来自百度网盘超级会员V2的分享

六、语音合成模块

  • 注:对应github文件中的catkin_ws工作空间
  • 主要参考:
    • ROS实战( 三 )利用科大讯飞tts实现ROS下语音合成播报
    • ROS实战(二) 科大讯飞语音合成模块
      可直接用文章(三);注意第二个参考中的以下两个需要执行一些下:
sudo apt-get install sox
为了不要每次运行都souce,把x64目录下的共享库文件拷贝到/usr/lib/下,先cd到voice/libs/x64目录下
cp libmsc.so /usr/lib/

七、小车摄像头与YOLO模块的通信

7.1 小车摄像头模块发布话题消息

找到导航模块中小车的摄像头对应的话题名称:
打开小车导航模块的时候在rviz中添加camera(可以用来查看小车摄像头的实时画面),然后选择话题名称:/camera/rgb/image_raw
(也可以在rqt_image_view中查看话题名称)

  • rviz中添加camera
  • 选择topic
  • rqt_image_view中查看摄像头话题名称

7.2 YOLO模块模块订阅话题消息

在YOLO模块中订阅该话题:

  • 通信过程

八、YOLO模块与语音合成模块的通信

8.1 YOLO模块模块发布话题消息

YOLO检测模块中的ros.yaml文件中,发布话题/darknet_ros/bounding_boxes

rostopic echo /darknet_ros/bounding boxes,展示发布到topic上的消息数据,Class是需要获取到的识别结果

8.2 语音合成模块订阅话题消息

  • 语音合成模块节点
  • 在回调函数中获取话题/darknet_ros/bounding boxes消息中的Class内容:
  • 通信过程

九、演示时各模块的启动命令

(在test_ws路径下)启动gazebo:roslaunch my_navi xinyang.launch
(在test_ws路径下)启动导航模块:roslaunch my_navi turtlebot_navigation.launch
(在yolo_ws路径下)启动YOLO模块:roslaunch darknet_ros darknet_ros.launch
(在catkin_ws路径下)启动语音合成模块:rosrun voice_system xf_tts_node

十、全局概览

  • 全局:各节点之间的通信情况

注意事项;

实验的过程中遇到了许多的bug和问题,例如:

  • YOLO模块检测物体的时候检测框的左上角不出现文字(后来发现是缺少labels文件);
  • gazebo打开的时候可能会崩溃(后来发现是虚拟机的问题,需要关闭vmware的3D图形加速选项);
  • 关闭gazebo的时候尽量使用ctrl+C去关闭,直接关闭窗口可能不能完全关闭gazebo的全部进程(此时需要重启);
  • 使用语音模块去订阅YOLO模块发送的消息的时候要处理好/darknet_ros/bounding boxes话题信息,在回调函数中提取其中的识别结果。
  • 安装ros可参考:
    Ubuntu18.04上安装ROS的详细教程
    Ubuntu18.04安装Ros(最新最详细亲测)

源码:

github源码地址:https://github.com/xinyangwy/ROS_DesignCode

【ROS机器人系统】自主导航+YOLO目标检测+语音播报相关推荐

  1. 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨nihate 审稿丨邓富城 编辑丨极市平台 导读 本文作者使用C++编写一套基于OpenCV的Y ...

  2. 【深度学习】目标检测实战:4种YOLO目标检测的C++和Python两种版本实现

    作者丨nihate 审稿丨邓富城 编辑丨极市平台 导读 本文作者使用C++编写一套基于OpenCV的YOLO目标检测,包含了经典的YOLOv3,YOLOv4,Yolo-Fastest和YOLObile ...

  3. 基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [4]

    大型生存类游戏自动代玩人工智能[4] -- 自动控制 一.键鼠自动操作 1. 操作游戏角色 2. 瞄准目标 二.自动采集 1. OCR文字识别 2. 多线程运行 一.键鼠自动操作 一般电脑上的游戏操作 ...

  4. 项目设计:基于YOLO目标检测算法的安全帽/口罩/汽车/行人/交通标志...检测

    本文将详细介绍YOLO目标检测算法,该算法支持各种目标检测,包括:安全帽.汽车.造价.交通标志......等.  其他毕业设计题目推荐参考: 毕业设计:电子/通信/计算机/物联网专业毕业设计选题参考( ...

  5. 基于深度学习的YOLO目标检测研究-附Matlab代码

    目录 ✳️ 一.引言 ✳️ 二.YOLO的基本思想 ✳️ 三.实验验证 ✳️ 四.参考文献 ✳️ 五.Matlab代码获取 ✳️ 一.引言 目标检测是计算机视觉中的一个研究热点,在很多领域都有应用需求 ...

  6. 瞬间洞察万物:YOLO目标检测算法的黑科技全揭秘

    目录 简介与背景知识: 数据集准备: 模型选择和预训练: 模型构建和训练: 目标检测与推断: 性能优化与改进: 实例应用和扩展: yolo各版本: 总结: 简介与背景知识: ​ YOLO(You On ...

  7. 基于flask的YOLO目标检测web服务及接口

    这个小项目是基于flask微型目标检测服务.使用的是YOLOv3版本,使用的是在coco数据集上已经训练好的参数.整个目录结构如下(我运行的环境是window10,pycharm): 其中: cfg是 ...

  8. 目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现)

    目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现) AI算法修炼营 1周前 以下文章来源于极市平台 ,作者CV开发者都爱看的 极市平台 专注计算机视觉前沿资讯和技术干货,官 ...

  9. 今晚直播写代码|英伟达工程师亲授如何加速YOLO目标检测

    NVIDIA TensorRT是一种高性能深度学习推理优化器和运行时加速库,可以为深度学习推理应用程序提供低延时和高吞吐量.通过TensorRT,开发者可以优化神经网络模型,以高精度校对低精度,最后将 ...

最新文章

  1. Go语言中奇怪的if语句
  2. 计算机网络-IP地址的分类
  3. 搬家Testing.
  4. 金融领域下的数据挖掘算法应用:AdaBoost模型摩天
  5. eureka服务失效剔除时长配置
  6. 分布式与人工智能课程(part15)--深度学习
  7. python入门——列表+元组+字典+集合
  8. 中呜机器人编程视频教程_中鸣快车编程入门篇—5.1补充的知识.doc
  9. 2525 小b的字符串(模拟)
  10. TimesTen索引的概念与日常操作
  11. 【BottomBar】Android炫酷的底部切换
  12. android 微信浮窗实现_Android仿微信文章悬浮窗效果
  13. Python中import的用法
  14. spring5.0之后Log4jConfigListener过期问题
  15. 关于中文分词的一元分词讨论
  16. PHP与ECMP,2019 NECMP东北音乐产业发展论坛在沈举行
  17. 原子战舰与8266代码理解(while循环后直接加分号)
  18. 付呗聚合支付快速教程 分账篇③——多商户模式下分账提现全流程详解
  19. html文字自动放大缩小单位,如何css控制字体按百分比放大缩小
  20. 电视android升级啥意思,索尼智能电视Android电视机升级教程

热门文章

  1. Premiere视频特效滤镜功能速查
  2. Ansys|关于使用HFSS仿真报错“the password is invalid for INTEL MPl to launch jobs. ”(附有安装方法)
  3. 59.Android开源项目及库 (转)
  4. 验证码信息验证(不区分大小写)
  5. 使用 Three.js 实现跳一跳游戏
  6. pod健康检查之容器的存活探针、就绪探针、启动探针
  7. SEO优化软件-什么样的网站百度会认为是在作弊?
  8. js base64转二进制Blog大对象
  9. python寻找男厕所小便池的最佳站位
  10. 终于可以到政府去上厕所了!