ROS + Parrot-Sphinx进行Bebop无人机仿真
本篇博客介绍了如何使用 Parrot-Sphinx进行Bebop 2无人机的飞行仿真。
测试环境
- 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
注意:安装过程中会跳出窗口"add user to the firmware group"(添加用户名到固件组),可以输入当前用户。安装结束后需要登出并重新登录当前用户以完成安装。
二、初步使用
1. 启动并检查firmwared服务
打开 一个终端,输入:
$ sudo systemctl start firmwared.service
启动后不可关闭当前shell,继续在终端输入:
$ fdc ping
将得到PONG的响应。
注意:启动firmwared服务后,会默认在*/usr/share/firmwared/firmwares*路径下生成一个.firmware文件,该文件可以删除,删除后需要重新启动服务。若需要关闭firmwared服务,可以在终端中输入:
$ sudo systemctl stop firmwared.service
2. 检查WiFi接口名
在终端中输入:
$ iwconfig
并记录下显示的主机WiFi接口名(通常为“wlan0”或者“wlx****”)。
3. 初步运行仿真
进入*/opt/parrot-sphinx/usr/share/sphinx/drones/*文件夹,
$ cd /opt/parrot-sphinx/usr/share/sphinx/drones/
$ ls
可以看到有一些以.drone为后缀的文件,它们定义了所需仿真的无人机类型。打开其中的bebop2.drone,
$ gedit bebop2.drone
找到*<stolen_interface>wlan0:eth0:192.168.42.1/24</stolen_interface>*这一行,将其中的wlan0替换为之前保存的主机WiFi接口名称。打开一个终端,输入:
$ sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone
将打开一个Gazebo窗口
可以看到其中已经有一架Bebop 2无人机。
注意 1:此时若关掉该Gazebo仿真窗口,并继续用iwconfig命令查看主机WiFi接口,会发现名称发生了改变,变成了eth0.因此,如果需要再次运行该仿真,需要将.drone中的相关名称改为eth0。该改变只会发生一次,但是每次电脑重启后WiFi接口名又会变为最初的名称。
注意 2:每运行一次该仿真,在电脑重启后,将会得到一次检测到系统问题的弹窗出现。
三、起飞、降落与控制
1. 安装bebop_autonomy程序包
参考:在Ubuntu 18.04和ROS Melodic下安装使用bebop_autonomy包
2. 修改和运行launch文件
参考:ROS控制多架Bebop 2无人机
进入~/bebop_ws/src/bebop_autonomy/bebop_driver/launch文件夹,打开bebop_node.launch运行文件,
将其中的IP地址改为“10.202.0.1”,该地址为连接仿真无人机的默认IP地址。然后打开一个终端,运行该launch文件:
$ roslaunch bebop_driver bebop_node.launch
3. 控制无人机
打开另一个终端就可以通过发送ros消息对仿真无人机进行控制了。
(1)起飞:
$ rostopic pub --once /bebop2/takeoff std_msgs/Empty
(2)降落:
rostopic pub --once /bebop2/land std_msgs/Empty
(3)飞行
通过发送cmd_vel消息。