Parrot Bebop2 与ROS

2023-05-16

第二章 无人机平台与开发环境搭建

本章主要介绍无人机平台及相关开发环境的搭建。包括介绍Parrot Bebop2的相关规格与使用说明,以及ROS的操作系统的简介、发展历程、安装流程,还有ROS的数据通信方式和ROS的驱动软件bebop_autonomy,最后是介绍Bebop2的开发流程与控制指令。

2.1 无人机平台介绍

本论文研究实现的目标是在低空情况下(2米左右)对特定目标红色气球的动态跟踪,需要一款体型较小,轻便灵活,且带有摄像头传感器的无人机作为开发平台。基于上述考虑,最终选取Parrot公司的Parrot Bebop2四轴无人机,图2-1是Parrot Bebop2无人机的外形图。该无人机飞行器相关技术参数如下表2-1所示。图2-1 Parrot Bebop2 无人机实物图

表2-1 Parrot Bebop2技术参数

操作系统

Linux

处理器

Parrot P7 双芯处理器

内部存储

8GB内置闪存

全球卫星定位系统

GPS + GLONASS,+/-2m

传感器

超声波、高度计、视觉定位系统

惯性测量单元

三轴陀螺仪、三轴加速度、三轴磁力计

镜头

  CMOS 14 Mpx, 180度鱼眼镜头,孔径 1/2.3"

图像分辨率

4096*3072,图片格式: JPEG /DNG (RAW)

视频分辨率

1920*1080p (30FPS)

WI-FI

802,11 a/b/n/ac Wi-Fi无线网络

数据传输

2.4 GHz MIMO天线

信号范围

无干扰情况下使用遥控器操控,最远飞行距离可达2公里

最大水平速度

16m/s

最大上升速度

6m/s

续航

25分钟

防抖

3 轴数字化视频稳定系统

重量

500克

体积

体积  200*180*110mm

从上述技术参数列表中可以看出Parrot Bebop2机身灵巧轻量(仅500克),贴合空气动力学设计,具有良好的抗风性与可操作性,且续航达25分钟,完全可以满足本研究目标跟踪的实验与验证的需求。无人机作为通信节点通过wifi与地面站进行信息传输,其摄像头是普通的RGB摄像头,可保持水平拍摄,因为无人机在加速前进或减速刹车时,机头会前倾或后仰,而这种动态保持水平的摄像头可大大减少无人机的拍摄视频中的扰动。其中传输到本地计算机的视频流分辨率为在640 × 368,无人机将采集到的图像通过wifi实时传输至地面站,并在地面站完成图像处理与目标识别。在实验中,无人机的跟踪目标为红色气球,假定一个人手举红色气球进行移动,故设定无人机的飞行高度为 2 米左右,距离特定目标约为 3 到 5 米,在这个距离,无人机可有效识别目标,完成相关实验效果的验证,并且能在危险情况下能够及时降落。

2.2 ROS操作系统简介

在本设计中,无人机将采集到的图像通过wifi实时传输至地面站,图像处理、目标识别均在地面站完成。地面站实时识别目标后将相关控制指令发送到无人机,引导无人机靠近目标。图像处理、目标识别与无人机控制程序将在ROS(Robot Operating System)操作系统上完成,我们将在Parrot 官方提供的基于 ROS修改的 SDK 进行二次开发,来进行图像处理、目标识别与控制程序的编写。

2.2.1 ROS发展历程

ROS是一个适用于机器人的开源的元操作系统,一个开发机器人软件的框架,使用面向服务的软件技术。该系统于2007年诞生于斯坦福大学机器人人工智能项目即STAIR项目,Morgan博士主导设计实现了ROS框架,应用于当时的机器人平台,其集成了移动底盘和机械臂,也即PR2机器人的原型。2008年就交于Willow Garage来维护,2010年发布 ROS 1.0版本,还应用于PR2机器人。随着ROS的发展,它的应用越来越广泛,开发与维护者越来越多,在2012年起,每年由不同国家举办一届ROS开发者大会。2013年ROS一个开源机器人基金组织OSRF接管,继续推进ROS机器人的发展。并且在2014与2016年发布了两款长期支持版的ROS,和Ubuntu长期支持版保持同步的维护时间,本设计主要使用的是2016年发布的ROS Kinetic。

2.2.2 ROS的安装

ROS目前只支持在Linux系统上安装部署,它的首选开发平台是Ubuntu。本研究使用的平台是Ubuntu 16.04,ROS版本是Kinetic。安装步骤如下:

1)添加源sources.list,我们使用的是中国科技大学的源:

$ sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2)添加keys,公钥作为ubuntu的一种安全机制,是ROS安装中不可缺失的一步:$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

3)进行系统更新,确保自己所使用的软件包和索引是最新的:$ sudo apt-get update && sudo apt-get upgrade

4)Ubuntu 16.04安装Kinetic版本:$ sudo apt-get install ros-kinetic-desktop-full

5)ROS初始化:sudo rosdep init && rosdep update

6)初始化环境变量:

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

$ source ~/.bashrc

2.2.3 数据通信

ROS是一系列工具,库和约定。能够从不同节点的进程接受,发布,聚合各种信息,使用TCP或UDP网络传输协议将节点(Node)间的数据通信进行解耦,有效简化不同环境、不同机器下工程代码的移植。

ROS中的通信方式有三种,主题Topic、服务Service、动作库Action。本研究设计所使用的是话题通信方式topic,因为对于周期性、实时性的消息来说,使用topic来传输是最佳的选择。该方式是点对点的单向通信,需要建立不同的node来实现节点之间的通信,而节点之间传输的数据类型称为 message,node 可以订阅(subscribe)或发布(publish)message到ROS的相关topic 来进行信息的交换。

topic初始化过程:首先,publisher节点和subscriber节点需去节点管理器master进行注册,之后publisher发布相关topic,subscriber在master的控制下订阅该topic,从而完成sub-pub通信的建立。两节点数据通信的底层传输方式是tcp协议。

2.3 ROS驱动软件bebop_autonomy

本研究所使用的SDK是 Parrot 官方针对 Parrot Bebop2 无人机开发的 ROS 驱动软件bebop_autonomy,在此基础上进行二次开发。bebop_autonomy驱动作为一个节点运行之后将会发布多个topic,有topic为“/bebop/fix”,即无人机的GPS信息;有topic为“/bebop/image_raw”,发布的为摄像头采集的图像流数据,我们需要编程实现一个节点用来订阅该话题消息,从而对图像进行处理、目标识别。以图 2-2为例,是摄像头画面的发布、处理、显示的topic通信的流程。

图2-2 topic /image_raw的发布与订阅

node1是Bebop2无人机上的摄像头拍摄程序,无人机开机启动后node1也随即运行启动,它作为一个Publisher就开始发布叫做“/image_raw”的 topic。node2是图像处理与图像显示程序,它订阅了“/image_raw ”这个topic,之后本地计算机就能建立和摄像头节点(node1)的连接,完成图像数据的传输与接收。通过对目标信息的提取,我们可以获得目标与无人机的位置关系,进而可以将相关控制指令发布在名为“/bebop/cmd_vel”的topic上,实现无人机对目标的跟踪控制。

2.4 Bebop2的开发流程与控制指令

Parrot bebop2启动后会产生一个Wi-Fi热点,通过笔记本连接该热点,便可建立地面站与无人机的通信链路,便可通过笔记本完成对无人机的一系列操控与开发。地面站拥有起飞、降落、紧急停止等最高控制权限。相关控制指令如下表2-2所示。

表2-2 Parrot Bebop2控制指令

登录,节点启动

roslaunch bebop_driver bebop_node.launch

起飞

rostopic pub -1 bebop/takeoff std_msgs/Empty

降落

rostopic pub -1 bebop/land std_msgs/Empty

紧急停止

rostopic pub -1 bebop/reset std_msgs/Empty

启动地面站,地面站操作系统为Ubuntu Linux,首先打开一个终端输入“roscore”启动ROS系统;新建一个终端输入“roslaunch bebop_tools bebop_nodelet_iv.launch”登录无人机;之后新建终端启动本项目节点程序。

2.5 本章小结

本章主要介绍了无人机平台以及如何搭建开发环境。首先对本项目所示用的无人机Parrot bebop2的技术参数进行了详细的描述,并针对相关参数对项目可行性进行了评估。然后引出了ROS先关技术,对ROS的发展、安装过程、数据通信架构进行了详细说明。学习了ROS之后,便介绍了本项目的重点技术基础ROS软件驱动bebop_autonomy,此为我们项目开发的基础,通过对bebop_autonomy话题topic的学习,方便我们对其进行快速的二次开发,加快项目研究与实施的进展。最后简单介绍了无人机的一些常用控制指令与简单的开发操作流程。

 

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

Parrot Bebop2 与ROS 的相关文章

随机推荐