汇总
Gazebo下无人机目标跟踪①——环境搭建 Gazebo下无人机目标跟踪②——运动控制和查看图像
0. 前言
之前写过一篇使用 Parrot 家的 Bebop 2 无人机做目标识别和跟踪转向的小项目“ROS实现无人机目标跟踪/物体跟随/循迹”,但是由于硬件实物的条件限制,很多同学无法拿去用,为此我做了一些尝试,希望可以在 Gazebo 仿真环境下使用 Parrot Bebop 2 进行实验。   
   在这个系列的博文中,我会结合 Bebop 实物和仿真一起来说,这样无论大家手中有没有 Bebop 实物都可以跟着一起来做一下这个小项目。   由于目前还有一些科研任务,所以这个系列可能更新的稍微慢一些,把现有的工作整合一下先发出来,之后可能会不定时的更新一下新的进展。  
0.1 Bebop无人机的一些优势
  
  
- 不需要涉及无人机底层动力学的运动控制(毕竟商品级无人机),比较适合需要快速的对如轨迹规划、跟踪控制、编队控制等理论进行实物验证的场景
 - 由于官方有给定的SDK接口,可以和ROS进行很好的通讯
 - 飞行器控制相对简单,可以一个指令就实现起飞并悬停、降落,只需要向 cmd_vel 发送指令就可以实现水平方向的加速度运控制和垂直方向的速度控制
 - 自身带有摄像头,可以直接调用图传画面用作视觉处理
 - 社区环境较好,国外有基于 Bebop 的很多开源项目
 - 可以在 Gazebo 中进行仿真,只需要稍加改动就可以直接移植到实物中
 - ……
 
0.2 规划
我想尽可能的将把这个系列做成只需要一点点ROS基础甚至0基础的同学都可以上手做的程度,所以希望大家有什么问题可以在评论区回复,有不明白的地方我也会积极修正。 按目前已有的项目进展来整理的话,本系列计划分为如下几个部分:
- 介绍Bebop在Gazebo仿真环境的搭建
 - Bebop与ROS通讯,实现简单的指令控制
 - OpenCV中颜色和特征物体的识别
 - 仿真环境中实现无人机对目标的识别和跟踪
 - Bebop的轨迹控制(待定)
 - 多无人机编队控制(待定)
 
1. 环境搭建
- 本项目在 
Ubuntu 18.04和ROS Melodic环境下进行。 - 经测试,在虚拟机状态下本项目不能成功运行。
 
首先安装 Parrot-Sphinx,打开终端  
echo "deb http://plf.parrot.com/sphinx/binary `lsb_release -cs`/" | sudo tee /etc/apt/sources.list.d/sphinx.list > /dev/null
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 508B1AE5
sudo apt-get update
sudo apt-get install parrot-sphinx
- 根据提示输入当前用户然后重新登陆用户即可安装完成。
 - 因为墙的原因,可能会比较慢,耐心等待即可
 
之后打开终端,输入
sudo systemctl start firmwared.service
fdc ping
  若得到 PONG 的响应,则说明firmwared服务启动成功。 若需要关闭firmwared服务,则在终端输入  
sudo systemctl stop firmwared.service
在终端查看ip接口
sudo apt install net-tools
ifconfig
   记录下来上面的那个接口名,我这里的是 enp30s0  
接下来按照步骤修改drone文件
cd /opt/parrot-sphinx/usr/share/sphinx/drones/
sudo gedit bebop2.drone
   如图所示,将高亮部分换成你上面记录的接口名并保存,我这里改为 enp30s0  
启动Gazebo仿真环境
sudo sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone
  稍等片刻就会看到Gazebo界面里出现了一架bebop2无人机   
  
- 注意此时的电脑会断网,这是正常现象,关闭Gazebo界面后即可恢复正常。
 
- 此时如果关闭Gazebo窗口,查看 ifconfig 会发现接口名变成了eth0,再次修改drone文件即可重新运行。(每次运行只需要修改一次,重启后需要再改回原来的接口名,具体以ifconfig中查阅的为主)
 
至此,Bebop2的仿真环境已经搭建完毕 接下来就是建立Bebop与ROS的通讯了,由于接下来通过ROS指令控制Bebop运动时,仿真环境和实物控制中差别不大,我会将两者放在一起来说。
