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

2023-10-27

注意事项;

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

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

一、总体功能设计

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

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

二、实验环境

Windows10
VMware虚拟机 ubuntu18.04
Ros melodic

三、演示

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

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

4.1 场景搭建

  • gazebo Building Editor
    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的分享

六、语音合成模块

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

十、全局概览

在这里插入图片描述

  • 全局:各节点之间的通信情况
    请添加图片描述

源码:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 共创开发闭环,轻流CEO薄智元:让无代码回归本质

    以无代码的开发形式为基础 以业务人员为用户定位 奔向 无代码 的路径为企业提供个性化解决方案和产品 使开展业务各个环节的负责人深入地参与到系统开发中去 形成圆桌闭环 这是轻流的答案 作者 斗斗 出品 产业家 数字化需求迫切 人员成本高 研发
  • Faster Rcnn 代码解读之 blob.py

    Fast R CNN Copyright c 2015 Microsoft Licensed under The MIT License see LICENSE for details Written by Ross Girshick Bl
  • Java Comparator的使用-构建自己的Comparator(Lambda)

    引文 在开发的过程中 通常会对一些List进行排序 如果仅仅对某一个数字型的字段进行排序 排序的种类有很多 无论是使用Java 8 新特性的Stream排序 或者是使用Array sort方法都可以 但有时候我们需要对字符串类型 并且可能会
  • 深度学习训练模型的硬件条件(点评)

    比较系统性的文章 包括本地硬件搭建 云端训练环境介绍 原文地址 https blog csdn net u010327061 article details 80775135 之前热衷于学习理论知识 目前想跑代码了发现不知道从何下手 自己电
  • node网页爬虫

    前言 以前听后端的同事说 用网页爬虫可以抓取到许多电影下载资源 当时就跃跃欲试 想学习一下 无奈当时太懒 也经受不住生活中各种能获得即时快乐感事情的诱惑 时间都没有用到正经事情上 把这件事情耽搁了好几年 前段时间在掘金看到一篇有关爬虫的文章
  • 【pip command】之 pip install

    目录 前言 1 用法 2 安装位置 3 安装步骤 4 参数处理顺序 5 运行时依赖项的安装顺序 5 1 示例记录 安装 pywifi 后提示 No module named comtypes 6 Requirements File Form
  • 网站和API支持HTTPS,最好在Nginx上配置

    随着我们网站用户的增多 我们会逐渐意识到HTTPS加密的重要性 在不修改现有代码的情况下 要从HTTP升级到HTTPS 让Nginx支持HTTPS是个很好的选择 今天我们来讲下如何从Nginx入手 从HTTP升级到HTTPS 同时支持静态网
  • SRGAN——使用与超分辨率重建的GAN

    SRGAN数据GAN理论在超分辨率重建 SR 方面的应用 一 超分辨率技术 1 SR技术介绍 SR技术 是指从观测到的低分辨率图像重建出相对应的高分辨率图像 在监控设备 卫星图像和医学影像等领域都有重要的应用价值 也可以应用于马赛克图片的恢
  • vmware一打开虚拟机就蓝屏

    win10的更新又和Vmware起了冲突 更新系统后再用Vmware打开虚拟机会立马蓝屏并重新启动 此时最简单的解决方法就是升级Vmware到16版本就可以解决
  • Git 修改已提交 commit 的信息

    背景 由于 Github 和公司 Git 使用账号不一样 偶尔没注意 提交出错后就需要修改 commit 信息 修改最后一次提交 commit 的信息 修改最近提交的 commit 信息 git commit amend message m
  • gbdt matlab,python数据分析学习笔记(三):文件读取&绘图&机器学习调包

    pandas read csv函数 http pandas pydata org pandas docs stable generated pandas read excel html matplotlib inline的作用 matplo
  • Radius认证协议(一)

    简介 为大量用户管理分散的串行线和调制解调器池需要重要的管理支持 由于调制解调器池定义为与外部世界的链接 因此需要特别关注其安全 授权和计费 这可以通过管理单个的用户数据库来实现 该数据库可以进行认证 验证用户名和密码 以及向用户提供的服务
  • Serverless架构模式简介

    Serverless架构模式简介 一 简介 Serverless是一种无服务的架构 类似aws lambda Serverless与跟传统架构不同 由开发者实现的服务端逻辑运行在无状态的计算容器中 它是由事件触发 短暂的 可能只存在于一次请
  • OpenWRT 恢复出厂设置

    输入 firstboot 输入 y 输入 重启 reboot
  • 安装虚拟机提示“无法安装服务VMAuthdService”,请确保您有足够的权限安装系统服务

    以下内容仅供参考 我的情况是 1 Win7 安装过VM12 2 无法安装服务VMAuthdService 3 服务 中 VMAuthdService这项没有消失 不排除仅 以管理员 尝试 net stop VMAuthdService ta
  • cas-overlay-template-5.3 集成Oauth2.0

    第一步 在pom xml 文件添加oauth2 0协议支持
  • 创建第一款iPhone应用程序

    现在让我们来创建一个在iOS模拟器上运行的简单视图应用 空白的应用程序 操作步骤如下 1 打开Xcode并选择创建一个新的Xcode项目 2 然后选择单一视图应用程序 3 接下来输入产品名称即应用程序名称 组织名称和公司标识符 4 确定已经
  • reid数据集

    https blog csdn net qiuchangyong article details 82219775 最近一段时间在做行人重识别方向的研究 行人重识别 Person Re Identification 作为图像识别领域的一个分
  • python中super()出现的TypeError: must be type, not classobj

    python中super 只能应用于新式类 而不能应用于经典类 否则会出现报错 TypeError must be type not classobj Python 2 x中默认都是经典类 只有显式继承了object才是新式类 Python
  • 【ROS机器人系统】自主导航+YOLO目标检测+语音播报

    文章目录 注意事项 一 总体功能设计 二 实验环境 三 演示 四 场景搭建 建图与导航模块 4 1 场景搭建 4 2 小车模型 4 3 导航模块 1 安装依赖 2 从github下载的文件中的test ws目录下 3 运行导航功能 五 YO