ROS控制多架Bebop 2无人机

ROS控制多架Bebop 2无人机

          • 前言:
          • 一、安装系统框架
          • 二、更改Bebop 2的内置IP地址
          • 三、安装bebop_autonomy程序包
          • 四、通过bebop_autonomy连接并控制无人机

前言:

本篇博客介绍了如何使用ROS同时控制多架Bebop 2无人机。
参考资料:https://ieeexplore.ieee.org/abstract/document/8613928
参考视频:https://www.youtube.com/watch?v=P7SUFEKUP9Q, https://www.youtube.com/watch?v=nZaR-8Z515s&t=4s

一、安装系统框架
  1. 安装Ubuntu 18.04系统
    参考:https://blog.csdn.net/u014113983/article/details/83049102
  2. 安装ROS Melodic
    参考:http://wiki.ros.org/melodic/Installation/Ubuntu
    打开terminal,并输入以下命令:
    $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    $ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    $ sudo apt update
    $ sudo apt install ros-melodic-desktop-full
    $ sudo rosdep init
    $ rosdep update
    $ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    $ source ~/.bashrc
    $ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
    
  3. 安装catkin_tools
    参考:https://catkin-tools.readthedocs.io/en/latest/index.html
    打开terminal,并输入以下命令:
    $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
    $ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install python-catkin-tools
    
二、更改Bebop 2的内置IP地址

参考:https://blog.csdn.net/zhu_hai_csdn/article/details/104367043

  1. 按动一次Bebop 2的电源开关按钮,并用USB数据线将其与电脑连接起来。

  2. 连续按动电源按钮4次,这样会建立电脑与Bebop 2内置模块的有线连接。

  3. 在电脑端打开一个终端,执行以下命令:

    $ sudo apt install adb
    $ adb connect 192.168.43.1:9050
    $ adb shell mount -o remount,rw /
    $ adb shell
    

    进入无人机的shell内部,进一步进入shell中的/sbin文件夹:

    / # cd sbin
    /sbin # ls
    

    可以看到/sbin文件下的文件,其中文件broadcom_setup.sh中包含了对无人机IP地址的设置。
    ROS控制多架Bebop 2无人机_第1张图片
    继续在终端执行下面的命令:

    /sbin # vi broadcom_setup.sh
    

    打开该文件: ROS控制多架Bebop 2无人机_第2张图片
    从该文件中找到IFACE IP AP="192.168.42.1"这一行,并将其改为自己需要的IP地址。比如改成IFACE IP AP=“192.168.x.1”,其中x表示用来区分不同无人机的数字,如101、102等等。

  4. 更改完成后退出shell:

    /sbin # exit
    
  5. 拔掉无人机与电脑之间连接的USB数据线,完成更改。

注意:如果有多架无人机,需要对每架无人机设置不同的IP地址!

三、安装bebop_autonomy程序包

参考:https://blog.csdn.net/zhu_hai_csdn/article/details/104365272

  1. 打开一个终端,安装基本的ros程序包编译工具
    $ sudo apt-get install build-essential python-rosdep python-catkin-tools
    
  2. 安装和编译bebop_autonomy程序包
    # Create and initialize the workspace
    $ mkdir -p ~/bebop_ws/src && cd ~/bebop_ws
    $ catkin init
    $ git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy
    # Update rosdep database and install dependencies (including parrot_arsdk)
    $ rosdep update
    $ rosdep install --from-paths src -i
    # Build the workspace
    $ catkin build
    
  3. 在当前工作空间的devel/lib文件夹下新建一个链接,链接到/opt/ros/melodic/lib/parrot_arsdk文件夹,并将~/bebop_ws/devel/lib/parrot_arsdk添加到$LD_LIBRARY_PATH
    $ cd ~/bebop_ws/devel/lib
    $ ln -s /opt/ros/melodic/lib/parrot_arsdk parrot_arsdk
    $ echo "export LD_LIBRARY_PATH="~/bebop_ws/devel/lib/parrot_arsdk:$LD_LIBRARY_PATH"" >> ~/.bashrc
    $ source ~/.bashrc
    
四、通过bebop_autonomy连接并控制无人机
  1. 修改launch文件
    进入~/bebop_ws/src/bebop_autonomy/bebop_driver/launch文件家,可以看到一个默认的bebop_node.launch运行文件,在该文件夹下复制该文件,并重新命名,如bebop_node_3.launch,每架无人机均需要一个对应的该文件。然后打开该文件:
    ROS控制多架Bebop 2无人机_第3张图片
    对其中的以下几行进行修改:
    (1),其中"bebop"表示该无人机相关的ros topic的命名空间,为了避免不同无人机之间的相互干扰,可将其改为"q3/real"。
    (2),其中"192.168.42.1"表示该无人机的IP地址,这里需要将其改为我们前面自主设置的IP地址,如"192.168.103.1"。
    (3),其中defaults.yaml指定了运行该launch文件时载入的无人机参数配置,可以改为需要的参数配置文件,并在配置文件中更改相关参数。

  2. 修改 .yaml配置文件
    进入~/bebop_ws/src/bebop_autonomy/bebop_driver/config文件夹,可以看到一个默认的defaults.yaml配置文件,打开该文件:
    ROS控制多架Bebop 2无人机_第4张图片
    其中cmd_vel_timeout: 0.2表示无人机每收到一次cmd_vel指令后的最长执行时间。在原文件中添加以下三行:

    PilotingSettingsMaxTiltCurrent: 15
    SpeedSettingsMaxVerticalSpeedCurrent: 1
    SpeedSettingsMaxRotationSpeedCurrent: 180
    

    分别设置无人机的最大俯仰(滚转)角度、最大竖直飞行速度和最大旋转角速度。

  3. 与Bebop建立连接
    (1)打开无人机,并连接无人机的WiFi。
    (2)打开一个终端,启动ROS。

    $ roscore
    

    (3)打开另一个终端,运行launch文件。

    $ roslaunch bebop_driver bebop_node_3.launch
    

    ROS控制多架Bebop 2无人机_第5张图片

  4. 向Bebop发送指令
    参考:https://bebop-autonomy.readthedocs.io/en/latest/piloting.html
    以起飞、降落为例:

    $ rostopic pub --once q3/real/takeoff std_msgs/Empty
    $ rostopic pub --once q3/real/land std_msgs/Empty
    
  5. 获取Bebop图像流信息
    参考:https://bebop-autonomy.readthedocs.io/en/latest/reading.html
    以获取图像流信息为例:

    $ rostopic echo /q3/real/image_raw
    

注意:如果要控制多架无人机,每架无人机都需要设置不同的IP,都需要通过一个WiFi串口与该无人机连接,然后在新的终端里运行对应的node_#.launch文件。

你可能感兴趣的:(Parrot,Bebop,2无人机)