室内智能无人机比赛:基于深度学习的感知、规划与导航

2024-03-13 06:50

本文主要是介绍室内智能无人机比赛:基于深度学习的感知、规划与导航,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

泡泡图灵智库,带你精读机器人顶级会议文章
标题:Perception, Guidance and Navigation for
Indoor Autonomous Drone Racing using Deep Learning
作者:Sunggoo Jung , Sunyou Hwang , Heemin Shin , David Hyunchul Shim
来源:ICRA 2018
欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权


摘要

大家好,今天为大家带来的文章是——室内智能无人机比赛:基于深度学习的感知、规划与导航。该文章发表于ICRA2018。

智能无人机比赛中要求无人机能够快速穿过障碍门,并且保证没有发生碰撞,因此利用计算机视觉去检测障碍门非常重要。然而由于光照变化和障碍门视觉重叠等问题,基于颜色和障碍门的几何关系的传统算法在实践中经常失效。

在本文中,作者提出了一基于卷积神经网络的种鲁邦方法来检测障碍门和其中心,最后以视线(line of sight)的方式来进行导航。本文将提出的算法部署在一个现有的低成本硬件平台上进行验证,所有的视觉计算任务都能用NVIDIA Jestson TX2实时完成。大量的实验证明本文的算法在室内环境下具有高效可靠的目标检测和导航性能。


介绍

室内智能无人机比赛是目前最流行的电子竞赛,IROS 2016年第一次举办了该类型比赛。IROS 2016要求无人机连续穿越26个1.3m×1.3m大小的障碍门。考虑到室内不能使用GPS进行定位,如何利用视觉信息就尤为重要。

主要贡献有:
1、 提出了ADRNet网络,尽可能的提高障碍门的检测精度,并且减少由于网络结构改变导致的性能下降;
2 、改进了基于固定翼的导航算法,将其适用于旋翼无人机,并与ADRNet估计的障碍门中心配合进行导航。


算法流程

这里写图片描述
图1 本文的算法流程图

IROS室内智能无人机比赛有三个要求:1)无人机必须足够小,以便能够顺利通过障碍门;2)尽可能快的穿越所有的障碍门;3)所有的计算必须在无人机上完成。本文作者选用了基于Ubuntu16.04的ROS-Kinetic系统,并利用NVIDIA TX2进行视觉计算,同时安装了TeraRanger-One激光测距仪用于高度测量,PX4Flow用于速度计算,ZED深度相机用于里程计算,PointGrey FireFly鱼眼相机用于目标检测,除此之外还有IMU用于测量位姿信息。

上图1展示了本文系统的主要框架,ADRNet用于障碍门检测,然后再进行状态控制完成穿越障碍门的动作。

ADRNet感知

SSD是目前常用的多目标检测网络,在常规配置的PC电脑上能够达到40fps的检测效果。然而在TX2上,SSD的速度非常慢,单张计算时间为462.04ms,不能胜任比赛的要求。为此本文提出了ADRNet,以AlexNet为基础进行目标检测,可以达到了84ms的计算速度。并且考虑到在比赛中,每次只需要检测距离最近的一个障碍门,删除了不必要的检测部分,更进一步提高了检测速度,最终达到了30fps的效果,并且只下降了0.07的检测精度。

导航与控制

本文使用的导航算法是基于固定翼中常用的LOS矢量导航算法,并加以改进以适合更灵活的旋翼无人机,使得每一个轴都能够单独控制。但是由于室内FCC只能处理航偏角和翻滚角命令,作者也相应的进行了改进以符合需求。
下图2展示了如何通过导航控制顺利的通过一个障碍门,即最终使得摄像头的光轴与障碍门的中心相交。
这里写图片描述
图2 LOS导航示意图,即逐渐使得上图中的两个变量的值都为0.


主要结果

本文主要从目标检测和LOS导航控制两方面进行了实验和评价。

ADRNet性能评价

这里写图片描述
图3 ADRNet检测的障碍门,图中的结果都来源于测试数据集。
这里写图片描述
图4 ADRNet与其他算法的比较,可以发现无论是在精度还是计算效率上,ADRNet都达到了最好的效果。
这里写图片描述
图5 对比了传统检测算法与ADRNet的检测结果,其中左侧都是传统算法检测结果,右侧是ADRNet结果。

LOS导航控制

这里写图片描述
图6 上图展示了智能无人机在穿过9个障碍门时的LOS控制命令与控制结果的示意图,其中上图是控制命令,下图是无人机相机光心与障碍门中心的差距,当差距为0时表示正在穿越障碍门。对比可以发现,LOS控制命令可以非常完美的穿越障碍门。

结论

本文提出了一个使用基于深度学习的无人机感知、导航和控制的算法,能够在TX2实时计算。同时为了加快该领域的研究,作者也公开了相关代码,链接如下:https://sunyouh.github.io/projects/adr2017。


这里写图片描述

这篇关于室内智能无人机比赛:基于深度学习的感知、规划与导航的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/803969

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;