ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

2023-05-16

前言:

很久之前,用TK1玩过一段时间的ROS,再加上各种硬件(Arduino、激光雷达、编码电机等),模仿着做过Turtlebot小车,实现了部分Turtlebot部分的功能,最后因为雷达被我玩烧了,所以,就玩完了。
最近,身边有几台Bebop2无人机,然后又在玩深度学习的目标检测,因此,就尝试了一下将目标检测算法和无人机结合在一起玩一玩。
话不多说,先看玩成功的视频链接:
B站:https://www.bilibili.com/video/av37356955?from=search&seid=10773049982467763230
YouTube:https://www.youtube.com/watch?v=sgqNDEImGak&t=206s
效果图

目录:
第一部分:系统框架简介;
第二部分:系统架构搭建详解;
第三部分:相关算法以及功能包代码的修改;
第四部分:框架整体测试(无人机控制+无人机图像处理(yolo实时检测算法))

第一部分:系统框架简介
控制系统采用:ROS(robot operate system) 版本为:kinetic(貌似ubuntu16.04系统只支持kinetic版本的ros)
控制端介绍(华硕笔记本):i7-7700HQ,GTX-1050(4G), 16G-DDr4,等……(大致电脑配置,并不一定要这么高的配置,只是为了介绍而已)
无人机介绍:Parrot——Bebop-2无人机;
无人机开发包:bebop_autonomy, teleop_twist_keyboard;(均可在GitHub 上clone下来)
检测算法:Yolo-V3(版本可以自行根据需求改动v1,v2 both ok,萝卜白菜各有喜爱);

第二部分:系统架构搭建详解
ROS-kinetic安装(参考:http://wiki.ros.org/kinetic/Installation/Ubuntu)
1. setup source.list

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2. setup your keys

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key
421C365BD9FF1F717815A3895523BAEEB01FA116

3. installation

sudo apt-get update
sudo apt-get install ros-kintic-desktop-full

4. initialize rosdep

sudo rosdep init
rosdep update

5. environment setup

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc$ source ~/.bashrc

工作空间的创建以及相关资源包的编译
Workspace的创建与bebop-2的安装
(参考: https://www.ncnynl.com/archives/201701/1259.html)

  1. 依赖包的安装
sudo apt-get install build-essential python-rosdep python-catkin-tools
  1. 创建和initialize workspace
mkdir -p ~/bebop_ws/src && cd ~/bebop_ws
catkin init
cd src
git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy 
  1. 更新赖库和安装依赖(包括parrot_arsdk)
rosdep update
rosdep install --from-paths src -i
  1. 编译工作空间
catkin build -DCMAKE_BUILD_TYPE=RelWithDebInfo

Teleop_twist_keyboard下载及编译

cd ~/bebop_ws/src
git clone https://github.com/ros-teleop/teleop_twist_keyboard.git
cd teleop_twist_keyboard
mkdir build 
cd build 
cmake ..
make -j8

Darknet-ros下载及编译

cd ~/bebop_ws/src
git clone https://github.com/leggedrobotics/darknet_ros.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
catkin build darknet_ros -DCMAKE_BUILD_TYPE=Release

到此,整个系统的搭建已经完成,接下即为具体代码的调试过程介绍,如果中间安装遇到相关问题,请自行百度;在编译yolo算法,会涉及到电脑整体环境问题(cuda,cudnn,opencv的安装可看我上一篇博客),请自行按照需求安装好。
接下来所做的调试,我会假定你已经将上述所有的环境安装以及编译成功;

第三部分:相关算法以及功能包代码的调整
【在编辑此部分内容之前,需要简单介绍一下。在ROS操作系统里面,相关信息的获取是采用消息的订阅以及发布的形式来进行数据传输的,因此,我们只需要了解好各个功能的节点,通过其他算法订阅节点信息来实现我们所需要的功能。
当然,这是整个思路,具体的实现过程,还需要仔细分析代码,同时利用ROS的附加功能去检查整体的节点框架(rqt_graph),通过分析节点图来进行相关数据的获取。】
在进行接下来的代码修改前,我已经对bebop_autonomy开发包做了简单的了解,以及节点的分析;
1. 控制部分代码调整
该部分代码修改较为简单,进入teleop_twist_keyboard文件夹下,打开teleop_twist_keyboard.py代码,找到节点消息发布相关代码,将这行代码修改如下:

Pub = rospy.Publisher(‘bebop/cmd_vel’, Twist, queue_size = 1)

改完这行代码,请重新编译整个工作空间,当然也可单独编译改功能包;
2. yolo检测算法代码部分修改
进入darknet_ros文件夹下,找到config文件夹,并且进入打开ros.yaml文件,打开后,找到camera_reading这段代码,将topic修改为:

/bebop/image_raw

修改完后,我们已经完成了yolo算法对视屏流的订阅,只要无人机视频传输回笔记本,我们启动检测算法,算法会自动对传输回来的视频流进行检测;(注意:改完代码后需重新编译工作空间,可以用catkin
build指令对整个工作空间编译,也可单独编译这一个文件夹)

在这里插入图片描述
第四部分:整体框架基本功能的测试(无人机控制+yolov3检测算法demo)在测试整体算法之前,带上无人机,找一个空旷的地带,安全第一

  1. 打开无人机,让笔记本与无人机Wi-Fi连接;
  2. 启动ROS操作系统—打开一个新的终端,输入指令:
roscore 
  1. 启动无人机图传—打开一个新的终端,首先source一下工作空间:
source ~/bebop_ws/devel/setup.bash
roslaunch bebop_tools bebop_nodelet_iv.launch

(运行完这行代码后,无人机的图传会显示在笔记本桌面端,若无显示请检查问题)

  1. 让无人机起飞/降落—再开一个终端,并且输入指令:
source ~/bebop_ws/devel/setup.bash
rostopic pub –once bebop/takeoff std_msgs/Empty   (起飞)
rostopic pub –once bebop/land std_msgs/Empty   (降落)
  1. 启动无人机控制代码—开启一个新的终端,并输入指令:
source ~/bebop_ws/devel/setup.bash
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

此时,控制端已经开启,操作方式为键盘操作:
[i]:控制无人机前进; [k]:中断飞行指令;[,]:控制无人机后退;
[j]:控制无人机左转;[l]:控制无人机右转;
还有几个控制指令,不做详述;[u],[o],[m],[.]
控制指令还可调节为大写,如何控制请自行操作设置;

6.启动yolo检测算法对无人机视频进行实时检测—开启一个新的终端,并输入指令:

source ~/bebop_ws/devel/setup.bash
roslaunch darknet_ros yolov3.launch

此时,检测算法已启动,终端会弹出新的窗口,显示算法的实时检测效果;

备注:控制无人机摄像头移动指令为: rostopic pub –once bebop/camera_control geometry_msgs/Twist 再按下tab按键自动补齐即可
至此,无人机的整个环境已经搭建成功,同时,也通过测试了。

道路千万条,安全第一条!!! 切记!!!!无人机的通信采用的是WiFi,所以测试时注意外界干扰以及控制距离,切记,切记!!!!!

该文档内所有的资源均来自github以及其它相关论坛,均为开源算法,相关链接已经贴在步骤内,若有不足请多多谅解。当你搭建好后,你可以训练自己的模型,可用来做其他物体的检测,或者做目标的跟踪,或者视觉slam,你喜欢怎么做就怎么做。

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

ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测 的相关文章

  • 用两台TFmini Plus实现 PPT切换

    1 PPT自动切换模块简介 本模块利用北醒公司两台TFmini Plus Arduino DUE板 一个低功率红外激光指向灯 两个LED指示灯 一个单向开关 一个双向开关和连接线结合设计 系统作用 xff1a 通过检测人的手势 xff0c
  • TFmini-Plus在Arduino上的开发例程

    TFmini Plus在Arduino上的开发例程 本例程以Arduino Uno 和 DUE板作为示例 xff0c 主要帮助客户快速熟悉我公司雷达 xff0c 减少产品的研发周期 关于Arduino的详细介绍请参考以下网站 xff1a 英
  • TFmini 常见问题与解答

    TFmini 是一款小型激光雷达模组 主要实现实时 无接触式的距离测量功能 xff0c 具有测量准确 稳定 高速的特点 TFmini常见问题与解答 Q xff1a 请问TFmini是否可以在水面检测 xff1f A xff1a 不建议在水面
  • TFmini和TFmini-Plus——激光雷达模组 资料汇总

    本文主要介绍TFmini和TFmini Plus激光雷达相关资料 目录 产品基本介绍产品基本FAQ与开源硬件的基本匹配其他 xff08 I C版参考方案 xff09 应用方案 一 产品基本介绍 产品规格书 产品使用说明等有关下载地址 xff
  • 使用数传电台无线远程传输雷达数据的参考方案

    本文介绍使用数传电台无线远程传输雷达数据的参考方案 方案概述 本方案为使用数传电台方式无线远程传输北醒TF系列雷达数据的参考方案 本方案中所使用的除TF激光雷达外的设备和工具并非北醒官方产品 xff0c 不提供任何官方售后服务 xff0c
  • TFmini(Plus)在STM32上的应用

    STM32 TFmini 下载地址 xff1a 链接 https pan baidu com s 15IqhmbFTEHsLFydYbzir w 提取码 8iv1 复制链接打开 本文件夹为TFmini的STM32转接例程程序 xff0c 使
  • 阿里云ubuntu18.04搭建图形界面的介绍

    经过几天的奋战 xff0c 在综合别人的宝贵经验之后 xff0c 终于把阿里云的ubuntu18 04的图形界面搭配出来了 xff0c 在此把我个人的经历分享给大家参考一下 首先声明 我是参考原博主的经验搭建出来的 xff0c 具体链接可以
  • 嵌入式开发Verilog教程(一)——数字信号处理、计算、程序、 算法和硬线逻辑的基本概念

    嵌入式开发Verilog教程 xff08 一 xff09 数字信号处理 计算 程序 算法和硬线逻辑的基本概念 一 引言二 数字信号处理三 计算四 算法与数据结构五 编程语言和程序六 系统结构与硬线逻辑七 设计方法学八 专用硬线逻辑与微处理器
  • IntelliJ IDEA 2020.1 正式发布,15 项重大特性、官方支持中文了! | 原力计划

    头图 amp 作者 YourBatman xff0c CSDN博客专家 责编 唐小引 出品 CSDN xff08 ID xff1a CSDNnews xff09 前言 千呼万唤始出来 xff01 自从官方在 2020 01 20 发布了其
  • 状态观测器

    干扰 xff0c 输出 xff0c 系统内状态都是一种状态 xff0c 状态观测器可以扩展干扰观测器 定义系统实际输出和理论输出的误差d xff0c 对d求导得到一个公式 xff0c 系统理论输出求导得到一个公式 xff0c 组建成二元方程
  • python更新pip失败-解决Python pip 自动更新升级失败的问题

    在使用python pip的时候 xff0c 经常会发生pip版本过低导致失败的情况 xff0c 这时候 xff0c 系统会提示让你使用如下命令对pip进行升级更新 xff1a python m pip install upgrade pi
  • es6小记

    const let关键字 let xff1a 声明 使js存在块级作用域 const xff1a 定义常亮 xff0c 定义以后不可以更改 若是引用的类型 xff0c 那可以更改他的属性 const a 61 b 789 br a b 61
  • js检测浏览器内核、版本号

    js检测浏览器内核 版本号 span class hljs function span class hljs keyword function span span class hljs title isBroswer span span c
  • 点击地图获取经纬度(基于腾旭地图api)

    废话不多说上图 接着代码段 xff08 注意 xff1a 这里的key要换成自己的key xff09 span class hljs doctype lt DOCTYPE html gt span span class hljs tag l
  • dataTable使用

    官网 DataTable英文网址 DataTables中文网址 DataTables一些例子 本文主要是围绕下面的例子进行讲解的 xff0c 请看效果图 说明 xff1a 全选功能 xff0c 点击删除 xff0c 批量删除 xff0c 批
  • 判断checkbox 是否选中

    checkbox 选中事件 首先input的标签设置checkbox lt input name 61 span class hljs string 34 operaMode 34 span span class hljs class sp
  • jQuery添加新元素/内容

    整理了一下jq添加元素 HTML的一些操作 xff0c 效果图见下 结构插入 内部插入 append 在被选元素的结尾插入内容 appendTo 方法在被选元素的结尾 xff08 仍然在内部 xff09 插入指定内容 prepend 在被选
  • 高德地图开发bug

    第一次使用的时候报错 INVALID USER DOMAIN 然后百度了一下 xff0c 官方文档上是这么说的 xff1a xff0c 请先检查一下您在申请Key的时候 xff0c 是否设置了域名白名单 xff0c 如果设定了 xff0c
  • 新 iPhone SE 卖 3299 元起,香不香?

    作者 吴波 来源 网易科技 xff08 ID xff1a tech 163 xff09 4 月 15 日 xff0c 等待了 1485 天之后 xff0c 当年的 4 英寸 性能小钢炮 iPhone SE 终于迎来全新升级款 The New
  • 图片剪裁并预览上传

    预览效果 详细代码讲解 现在有点忙 xff0c 稍后便会讲解 demo下载地址图片剪裁并预览上传

随机推荐

  • js实现下载功能

    js实现下载功能 最近需要做一个下载功能 xff0c 然后到网上查了查 xff0c 顺便写了个小demo xff1b 在h5新特性里面 xff1b a标签有个download的属性 xff1b span class hljs tag lt
  • 前端js免费的CDN网站

    1 BootCDN http www bootcdn cn 目前前端开源的项目几乎都涵盖了 xff0c 支持http和https 2 百度静态资源公共库 http cdn code baidu com 一个是稳定 xff0c 快速 xff0
  • js区号插件(全国电话区号)

    最近由于要和美团和饿了么外卖对接 xff0c 地址要输入区号 xff1b 网上百度没有找到插件 xff1b 于是自己就动手撸了一个 xff1b 效果图见下 xff1b 为什么第一个是浙江呢 xff0c 因为我在杭州啊 xff01 xff01
  • 那些看过的好文章

    我总结的js性能优化的小知识http www cnblogs com liyunhua p 4529086 html19 个 JavaScript 有用的简写技术https segmentfault com a 11900000126738
  • java小白成长记02

    位运算符 左移 lt lt 就是乘以2的次幂运算 xff0c 移几位就是几次幂 xff1b 3 lt lt 3即为3 2 2 2 61 24 xff1b 6 lt lt 2即为6 2 2 61 24 xff1b 右移 gt gt 就是除以2
  • web前端开发-谷歌浏览器插件

    搜集了一些web前端开发所需要的谷歌浏览器插件 xff1b 具体内容见下图 xff1b 下载地址 使用方法 xff1a 点击谷歌浏览器右上角 gt 更多工具 gt 扩展程序 xff1b 直接将 crx文件拖进去即可安装 xff1b
  • webpack4+react+antd从零搭建React脚手架(一)

    本人是在windows环境下搭建的 xff0c ios自行摸索 代码地址PreByter 项目初始化 首先就是项目初始化 xff0c 一定确保安装node或者yarn二者均可 xff0c npm init 或者 yarn init 此时会生
  • webpack4+react+antd从零搭建React脚手架(二)

    接着上文 xff0c 对webpack 的配置的优化和对css xff0c 图片的编译 以及引入antd 项目代码地址react project 优化webpack 生成的文件名添加Hash值 output filename 34 js n
  • 一线大厂面试必知必会大公开

    作者 代码随想录 来源 代码随想录 企业一般通过几轮技术面试来考察大家的各项能力 xff0c 一般流程如下 xff1a 一面机试 xff1a 一般会考选择题和编程题 二面基础算法面 xff1a 就是基础的算法都是该专栏要讲的 三面综合技术面
  • Python实现观测值o文件和精密星历sp3文件读取

    博主之前准备利用Python编写精密单点定位程序 xff0c 奈何写了一半的读取文件代码 xff0c 觉得太浪费时间 xff0c 就此作罢 xff0c 这些时间不如多用来研究现有代码 xff0c 把这部分放弃的代码拿出来 xff0c 希望给
  • webpack4+react+antd从零搭建React脚手架(四)-redux搭建

    redux 文档地址 redux是对数据的状态管理 xff0c 是react不可缺少的一部分 xff0c 具体的概念这里就不进行详细的介绍 本文主要是介绍怎么引入redux和使用redux 单向数据流 xff1a 从父组件流向子组件 xff
  • Python:入门到实践-安装

    Python 入门到实践 安装 安装python环境安装启动终端会话HelloWorld 安装python环境 写在前面 xff0c 本文是基于Windows10系统下学时 xff0c 其他环境下 请自行研究 python版本是3 6 1
  • 阿里云部署web项目

    开始 xff08 额 xff0c 主要是自己忘了 xff0c 别人可以跳过 xff09 修改终端登录密码 xff1a 在实例里面 xff0c 有一个更多 xff0c 来管理密码安装yum xff08 其实也可以用pipe进行安装 xff0c
  • 前端项目部署到阿里云

    由于本人是个前端这里只介绍前端项目的部署 xff08 后台的部署见下一篇 xff09 准备工作 下载两个软件Xshell和Xftp xff08 也可以使用WinSCP 我使用的是windows系统 xff09 购买阿里云 xff0c 看需要
  • 如何重启MySQL,正确启动MySQL

    RedHat Linux Fedora Core Cent OS 1 启动 xff1a etc init d mysqld start 2 停止 xff1a etc init d mysqld stop 3 重启 xff1a etc ini
  • 阿里云Ubuntu16.04 python升级

    Ubuntu16 04 python2 7升级python3 5 正常情况下 xff0c 你安装好ubuntu16 04版本之后 xff0c 系统会自带 python2 7版本 xff0c 如果需要下载新版本的python3 5 xff0c
  • react 脚手架 run eject 之后 打包生成map文件 体积过大

    react 脚手架 打包生成map文件 体积过大 写在前面 xff0c map文件是帮助我们查看报错的位置的 map文件由devtool属性控制 xff0c 然后全文搜索devtool 发现在webpack config js文件 150
  • 机器学习实战分享:用 Python 进行信用卡欺诈检测

    本文旨在使用 XGBoost 随机森林 KNN 逻辑回归 SVM 和决策树解决分类问题 xff0c 内容较长 xff0c 建议收藏 关注 点赞 案例简介 假设你受雇于帮助一家信用卡公司检测潜在的欺诈案件 xff0c 你的工作是确保客户不会因
  • 麻将算法之 ------ 胡牌算法

    麻将数据牌集合 span class hljs keyword private span span class hljs keyword int span cardDataArray 61 span class hljs number 0x
  • ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

    前言 xff1a 很久之前 xff0c 用TK1玩过一段时间的ROS xff0c 再加上各种硬件 Arduino 激光雷达 编码电机等 xff0c 模仿着做过Turtlebot小车 xff0c 实现了部分Turtlebot部分的功能 xff