百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

空地机器人协同导航方法与实验研究-AET

toyiye 2024-06-21 12:01 9 浏览 0 评论

The navigation method and experimental research of air-ground robot cooperation

0 引言

机器人在许多领域发挥着越来越重要的作用,单独的机器人可以有效帮助人们完成数据收集,而多个机器人的协调合作则可产生无穷的潜力,不同机器人之间的互补作业效果将更加明显。机器视觉、传感器网络等的不断发展,使空中机器人与地面机器人的结合成为可能。空中机器人具有全局视觉,利用空中机器人广阔的环境感知能力帮助地面机器人构建全局环境模型并为地面机器人提供导航信息;地面机器人具有的局部视觉可以使其更好地执行任务,二者的结合可以提高任务使命的完成度[1-3]。空地机器人在民用方面适用于救援减灾、物流配送、城市垃圾清理等,在军事方面的用途将更加广泛,无人作战将部分取代有人作战,最终无人作战成为主要形式。

目前在空地机器人协作方面的研究在国际上较为深入,如美国弗吉尼亚理工大学使用空地机器人在精准农业上进行研究来估计农作物长势[4],韩国延世大学使用多四旋翼飞行器建立地面三维信息并引导地面机器人进行全局路径规划[5],美国亚利桑那大学使用无人机进行人群动态检测后再由地面机器人进行精确识别[6],瑞士苏黎世大学利用四旋翼飞行器引导地面机器人对目标物进行检测与清理[7],意大利卡塔尼亚大学的研究人员测试了由车辆搭载的四旋翼飞行器使用图像分析帮助地面移动机器人完成路径重规划的任务[8]。在国内,中国科学院大学使用空地机器人共同对目标探查以实现最佳的跟踪与检测[9]等。随着科技的不断发展,机器人的相关技术也得以进一步的提升(如仿人比较先进的NAO机器人等),因此可以有条件地针对一些人力不便探索的领域(如深海探测、山区救援等)进行空地机器人协同探测。由于我国具有幅员辽阔与地形复杂的特点,有时地面救援和军事行动难以展开,此时如果采用空地协同的方式效率就比较高。然而协作空地机器人的研究平台和方法还很缺乏且特制设备的实验难以模拟,目前研究常见于计算机仿真,在实际模拟场景(如协同救援)方面还未有应用研究。结合上述情况,本文提出了基于嵌入式设备的地面NAO机器人和空中四旋翼无人机进行空地协作完成模拟搜寻与救援任务场景的方法。

1 空地机器人任务流程及系统结构

空中机器人采用了四旋翼无人机,主要由自组装四旋翼和ODROID XU4开发板组成,具有良好的机动性能与灵活性,其中自组装四旋翼采用了碳纤维机架、pixhawk的开源飞控、好盈乐天skywalker 40 A电调等。ODROID XU4开发板为Hardkernel公司出品,拥有主频为2 GHz的三星Exynos5422八核处理器及2 GB RAM,且使用ARM架构并安装Ubuntu 16.04系统。在组装完成的四旋翼上加装开发板进行数据处理能够实现如对地面目标探测、跟踪等多种功能。地面机器人为NAO机器人,它拥有25个活动关节,内置Intel ATOM Z530处理器,RAM 1 GB,闪存2 GB,前额装有上下两个摄像头,支持嵌入式GNU/Linux编程环境且支持Python、C++语言。空地机器人协同系统结构如图1所示。

空中机器人与地面机器人基于嵌入式Linux系统,支持Python和C++语言,能够通过程序实现协作功能。机器视觉处理以在支持嵌入式方面较好的OpenCV库为主,它是由Intel公司于1999年建立的计算机视觉库,是机器视觉、图像处理等领域的优秀工具。它由一系列C函数和少量C++类构成,也提供Python等语言的接口[10]。空中机器人与地面机器人都搭载摄像头,因而能够很好地针对不同场景进行功能开发。空地机器人协作在开发时采用Python与C++的结合,Python语言拥有强大的标准库且具有可移植性,因而使Python作为主要开发工具能进行高效的功能开发[11-12],搭建了Eclipse+PyDev的Python开发环境。在协作平台中完成的结论和方法因软硬件的通用性可在科研教学及实际运用中快速转化。

空中机器人与地面机器人模拟搜寻与救援的任务流程及方法如图2所示。首先由空中机器人和地面机器人完成系统各项功能初始化后等待搜寻命令;完成命令接收后地面机器人从起点开始出发,空中机器人起飞后利用其视野广的优势搜寻目标物体所在位置并计算最佳路径,以帮助地面机器人找到目标物,在完成路径规划后将精简命令信息传输至地面机器人;地面机器人收到命令后结合视觉信息到达目标位置附近,最后由地面机器人在其附近再次搜寻目标的精确方位并携带其返回完成任务。

2 软件整体设计方案

首先由空中机器人通过摄像头观测地面目标并存储图像信息,分析图片中起始点和终止点的信息与提取地面路径信息后由路径规划的算法计算出到达目标点的最短路径,由最短路径及路径交叉口信息比对生成在路径交叉口的方向信息并压缩打包,通过无线连接地面机器人及通信成功后发送当前命令。地面机器人接收命令后识别地面路径并按命令信息行走至指定地面,通过单目视觉识别目标并定位后实施抓取,携带目标返回后完成整体的空地机器人搜寻与救援任务。

2.1 空中视觉提取地面路径

在空中视觉提取地面路径中使用多种算法融合的方式,如图像阈值分割、图像平滑、图像形态学转换等方式,针对不同的地面进行处理,在空中视觉识别方面结合应用腐蚀膨胀、滤波、灰度及二值化等一系列去除干扰提取路径的方法,通过多种方式的组合及对特定区域单独处理可以有效地提取特征信息,如图3提取出有效的路径信息并降低了非路径像素的干扰。

2.2 空中机器人识别地面目标

空中机器人准确判别地面目标是空地机器人结合的前提,首先由空中机器人将图片信息进行HSV空间转换并设立阈值提取出可能的起始点与终止点,使用cv2.cvtColor函数将RGB转换成HSV。并设定合理阈值,如使用[130,100,100]与[190,255,255]的阈值范围可提取红色。在颜色特征识别后结合轮廓、特征点匹配进行多重判定可以更精确地识别目标。如在本实验中先由findContours函数进行轮廓查找,根据轮廓特点排除不相关信息后可以比较准确地判定目标所在位置,最后由cv2.drawContours函数实现及绘制出目标的所在位置,如图4所示。

2.3 最优路径规划

在空中机器人识别地面目标后获得起始点和终止点的信息,然后结合提取的地面路径信息进行路径规划。先将起始点和终止点的坐标信息放入路径信息中,在实际应用到机器人路径规划中,由于传统算法(如遗传算法、神经网络算法等算法)难用公式计算且计算耗时漫长,而在Python内函数BFS(广度优先搜索算法)使用collections模块中的deque内部实现,非常高效,且使用广度优先搜索基于遍历的方式可计算很大一部分迷宫路径问题求得最优解,因此作为主要路径规划方法。经过路径规划算法计算的地面机器人到达不同目的地点时最短路径如图5所示。

为了使空地机器人能够有效地交流行走路径信息,需要提取图像信息中的交叉点信息。在图像处理中实际使用到的为角点坐标信息的提取,基于Shi-Tomasi的打分函数选择最好的N个特征点后识别出的特征点质量也更高。为了更好识别角点,首先对图像中的路径特征细化(如图6所示),采用角点识别对路径中的交叉点及特征点的检测结果如图7所示,所采用角点识别函数如下:

corners=cv2.goodFeaturesToTrack(gray,25,0.01,10)

为使得空地机器人获得协同并得到最终的指令信息,在获得路径信息和交叉点信息后需将两者的坐标点位置提取出以进行比对,通过判断当前交叉点与前后交叉点的位置判断地面机器人在经过当前交叉点时转弯的方向,经过比对后得出:位置1时地面机器人需要执行的方向依次为左、左、右,位置2时需执行方向依次为前、左、右、左、前。生成命令后进行编码并写入文本文件中进行打包。

2.4 空地机器人通信

空中机器人和地面机器人之间的通信是空地协作的重要组成部分,应当采用能耗少、传输速度快且连接便捷的方法。地面机器人内置WiFi模块及空中机器人加装相应的模块后使其可采用传输速率高效的WiFi进行通信,发送的数据由Linux封装协议后通过WiFi模块发送到无线网络中。使用由Python语言编写的paramiko模块能够支持空地机器人的文件或命令的传递,使两者进行协作。该模块遵循SSH2协议并支持加密和认证的方式,能够进行远程服务器的连接及进行文件的发送或命令的直接操作,该模块的代码如下:

import paramiko

def ssh2(ip,username,passwd,cmd):

ssh = paramiko.SSHClient

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)

ssh.connect(ip,22,username,passwd,timeout=5)

2.5 地面机器人执行任务

地面机器人在接收到文本文件指令后进行解读,并搜寻地面路径。首先由地面机器人对地面进行拍照及二值化后提取出地面路径,用霍夫算法提取出地面路径并对地面机器人进行航偏矫正修正姿态,霍夫变换在图像特征处理中使用比较普遍,基本思想是通过笛卡尔坐标系上的点转为极坐标后通过投票算法检测具有特定形状的物体[13],本文用到的霍夫直线检测函数的使用如下:

img=cv2.imread(′picture1.jpg′)

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

edges=cv2.Canny(gray,50,150,apertureSize=3)

lines=cv2.HoughLines(edges,1,np.pi/180,200)

地面机器人在检测到地面路径后沿路径行走,在地面交叉点处执行对应的文本文件指令信息,最终到达目的地面附近。由于地面机器人的电机自身误差、发热等会行成行走偏差,造成与预定方向的偏离,因此根据实际需要提出使用霍夫算法进行纠偏的方法,在使用霍夫算法检测到直线后计算其在图像中的位置,如果偏离在误差范围外,则计算直线偏移的位移和角度并根据偏移值大小对地面机器人进行矫正。

图8(a)为矫正偏差前摄像头拍摄的图片,图8(b)为经矫正后拍摄的图片。矫正偏差及指令执行正确后地面机器人可按既定规划路径前往指定位置。

在地面机器人到达指定位置后需进一步识别和抓取目标物,使用地面机器人的顶部(如图9(a)所示)和底部(如图9(b)所示)两个摄像头对不同距离的目标物采用周长与面积的特定比例关系并用矩的信息精确定位,以实现对目标物的探测并逐步靠近目标物,根据单目视觉的标定结果反推目标物距离地面机器人的距离,最终识别到目标物并引导地面机器人的机械臂完成抓取,携带目标返回出发点,完成设计任务。

3 实验结果及分析

实验测试搭建了模拟在灾害现场搜寻与救援时的环境,使用挡板进行了隔离,使得地面机器人与目标物置于环境当中的不同位置,并设置多条路径以模拟实际环境,如图10所示。在操控空中机器人起飞后,由空中视觉传感系统对地面环境及目标进行检测,如图11所示。计算结果传输至地面机器人,地面机器人在到达目的地面后探测周围环境找寻目标物,在判定目标为所需目标物后,由单目视觉信息实行精确抓取后完成任务并原路返航,如图12所示。

实验结果如表1所示,从中可分析空地机器人的协作效果,空中机器人基本能够正确识别地面目标,地面机器人识别能力优于空中机器人,经过对目标物识别检测后可以进行正常抓取,两者之间能够实现有效协作。多次试验完成结果表明,系统中的空中机器人检测正确率约90%,地面机器人执行任务的正确率更优,接近100%。因此空地机器人总体完成指定任务的成功率在80%以上,表明该空地机器人的结合方法能够成功地完成搜救目标任务。

4 结论

本文针对空地协同研究平台缺乏且缺少实际场景应用(如灾害中的搜寻救援)的特点,提出了以通用性较好的NAO机器人与四旋翼作为硬件基础,并结合移植性较好的Python编程语言实现空地机器人完成指定任务的协作平台,针对搜寻救援场景规划了从空中机器人对地面目标检测、路径检测、路径规划、命令传输的方法,到地面机器人对地面路径检测与执行命令、对目标检测与抓取的方法。在空中机器人中,提出了多种图像处理方法融合的识别方法及使用角点提取加坐标比对生成行走方向的方法;在地面机器人中,提出了运用霍夫变换矫正机器人角度和位移偏移的方法,这些方法能够很好地帮助实现总体任务的完成。今后将在实际环境中的路径规划及视觉识别精确度方面做进一步研究以推进平台软件包的开发。

参考文献

[1] DUAN H B,LIU S Q.Unmanned air/ground vehicles heterogeneous cooperative techniques:current status and prospects[J].Science China Technological Sciences,2010,53(5):1349-1355.

[2] 谷丰,王争,宋琦,等.空地机器人协作导航方法与实验研究[J].中国科学技术大学学报,2012,42(5):398-404.

[3] 陈洋,谭艳平,程磊,等.邻域约束下空地异构机器人系统路径规划方法[J].机器人,2017,39(1):1-7.

[4] TOKEKAR P,VANDER HOOK J,MULLA D,et al.Sensor planning for a symbiotic UAV and UGV system for precision agriculture[J].IEEE Transactions on Robotics,2016,32(6):1498-1511.

[5] JIN H K,KWON J W,SEO J.Multi-UAV-based stereo vision system without GPS for ground obstacle mapping to assist path planning of UGV[J].Electronics Letters,2014,50(20):1431-1432.

[6] MINAEIAN S,LIU J,SON Y J.Vision-based target detection and localization via a team of cooperative UAV and UGVs[J].IEEE Transactions on Systems Man & Cybernetics Systems,2016,46(7):1005-1016.

[7] MUEGGLER E,FAESSLER M,FONTANA F,et al.Aerial-guided navigation of a ground robot among movable obstacles[C].IEEE International Symposium on Safety,Security,and Rescue Robotics.IEEE,2014.

[8] CANTELLI L,PRESTI M L,MANGIAMELI M,et al.Auto-nomous cooperation between UAV and UGV to improve navigation and environmental monitoring in rough environments[C].International Symposium Humanitarian Demining,2013.

[9] 梅元刚.空地机器人协作环境建模与路径规划[D].北京:中国科学院大学,2014.

[10] 李越.OpenCV应用现状综述[J].工业控制计算机,2017,30(7):123-124.

[11] 赵毅,马捷.利用Python和GTK+的Linux GUI应用的快速开发[J].计算机工程,2004,30(8):80-82.

[12] 狄博,王晓丹.基于Python语言的面向对象程序设计课程教学[J].计算机工程与科学,2014,36(s1):122-125.

[13] 李明,黄华,夏建刚.基于Hough变换的车道检测改进算法研究[J].计算机工程与设计,2012,33(4):1638-1642.

作者信息:

刘 毅1,2,车 进1,2,朱小波1,2,杭 立1,2,郝志洋1,2

(1.宁夏大学 物理与电子电气工程学院,宁夏 银川750021;

2.宁夏沙漠信息智能感知重点实验室(宁夏大学),宁夏 银川750021)

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码