• 【PX4】Ubuntu20.04+ROS Noetic 配置PX4-v1.12.2和Gazebo11联合仿真环境【教程】


    PX4】Ubuntu20.04+ROS Noetic 配置PX4-v1.13和Gazebo11联合仿真环境【教程】

    写在前面,目前中文互联网上关于PX4飞控的学习资料较少,笔者查阅了大量的资料整理成这篇博客,贡献一些学习内容,码字不易,如果帮助到您,请您帮我点点赞。

    0. 安装Ubuntu+ROS

    安装Ubuntu可以查看这篇教程,安装ros可以查看这篇教程,这里就不再赘述了。

    1. 安装依赖

    ● 在使用apt安装的过程中(包括之后ROS的安装),如果出现难以解决的依赖问题,可以使用aptitude install(没有aptitude的话,使用sudo apt install aptitude 安装),如sudo aptitude install ros-kinetic-desktop,它会依次推荐依赖解决方案,觉得可行就按y,不可行就按n。当然这个工具也不是万能的,如果它也解决不了依赖问题,还是需要靠自己分析解决。
    ● 有时候apt报错,提示“有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?”,这时按照提示进行操作即可。
    ● 注意仔细检查依赖都装成功没有,之前有些开发者遇到的编译过程中出现’pthread_create’未定义的引用,就是因为少装了依赖。

    注意如果安装了Anaconda等虚拟环境管理器,要退出虚拟环境的激活,再进行依赖的安装,一下的安装过程我们默认退出了Anaconda的虚拟环境
    比如我这里使用了anaconda包管理器,有一个虚拟环境base那么我需要推出这个虚拟环境再进行依赖的安装。

    conda deactivate
    
    • 1
    Image

    然后进行依赖的安装

    sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
    
    • 1
    pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 
    pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
    
    • 1
    • 2
    pip install --upgrade setuptools
    #若未报错不需要输入这两行命令
    python -m pip install --upgrade pip
    
    • 1
    • 2
    • 3

    2. 安装QGC地面站

    安装的教程参考于QGC安装教程

    sudo usermod -a -G dialout $USER
    sudo apt-get remove modemmanager -y
    sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
    sudo apt install libqt5gui5 -y
    sudo apt install libfuse2 -y
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后重启电脑,下载QGroundControl.AppImage
    使用终端命令安装(并运行):

    chmod +x ./QGroundControl.AppImage
    ./QGroundControl.AppImage  (or double click)
    
    • 1
    • 2

    3. 配置PX4-v1.13

    3.1 安装PX4

    在创建工作空间之前一定要deactivate anaconda的虚拟环境
    参考PX4官网上的安装流程
    1、下载PX4源码
    可以直接git进行下载,由于ros noetic自带gazebo11,所以我们不需要再额外安装gazebo

    git clone https://github.com/PX4/PX4-Autopilot.git --recursive
    
    • 1

    如果下载比较慢,可以使用我已经打包好的源码,提取码hola

    2、安装PX4
    然后,轻量安装(不安装 sim tool 和 nuttx)

    bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
    
    • 1

    3、安装相关依赖
    然后安装一些依赖

    sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
    
    • 1

    4、编译PX4固件

    cd PX4-Autopilot
    make px4_sitl_default gazebo
    
    • 1
    • 2

    如果编译成功则会出现

    Image

    然后退出gazebo,修改 ~/.bashrc,在文件的末尾加入以下代码, 如下的配置参考自PX4论坛,如图所示

    Image
    # >>> PX4 initialize >>>
    source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic
    # <<< PX4 initialize <<<
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后再

    source ~/.bashrc
    
    • 1

    3.2 测试PX4是否成功安装

    首先启动QGC地面站,然后启动测试结点

    roslaunch px4 mavros_posix_sitl.launch
    
    • 1

    如果在终端输入

    commander takeoff # 起飞
    commander land    # 降落
    
    • 1
    • 2

    无人机将会起飞和降落,如下图所示

    Image

    如果出现这种情况

    Image

    这个错误表明ROS无法找到名为"gazebo_ros"的资源包。使用下面语句安装ros-noetic-gazebo-ros-pkgs

    sudo apt-get install ros-noetic-gazebo-ros-pkgs  # noetic
    sudo apt-get install ros-melodic-gazebo-ros-pkgs # melodic
    sudo apt-get install ros-kinetic-gazebo-ros-pkgs # kinetic
    
    • 1
    • 2
    • 3

    然后再次使用

    roslaunch px4 mavros_posix_sitl.launch
    
    • 1

    即可成功启动

    注意如果我们没有deactivate anaconda的虚拟环境,那么在启动中会报如下的错误,并且无法加载无人机模型

    Image

    正确启动是不会报错的,并且会出现无人机的模型,如下所示

    Image

    4. 配置PX4-v1.12(推荐使用)

    4.1 安装PX4-v1.12

    git clone https://github.com/PX4/PX4-Autopilot.git
    git status   # 查看当前分支,位于origin/main
    git branch -r | grep "release"    # 查看所有远程分支,带release的
    
    • 1
    • 2
    • 3

    查看的结果如下所示,选择relase/1.12的稳定分支

    Image

    然后进行切换分支

    cd PX4-Autopilot
    git checkout origin/release/1.12  # 切换到发行分支v1.12
    git submodule update --init --recursive	# 更新子模块
    git status   # 查看当前分支,位于release/1.12
    
    • 1
    • 2
    • 3
    • 4

    4.2 配置PX4

    ~/.bashrc文件中加入

    source ~/PX4_Firmware/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4_Firmware/PX4-Autopilot ~/PX4_Firmware/PX4-Autopilot/build/px4_sitl_default
    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/PX4_Firmware/PX4-Autopilot
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/PX4-Autopilot/Tools/sitl_gazebo
    
    • 1
    • 2
    • 3

    5. 手动添加gazebo模型

    手动添加gazebo模型文件,手动下载这个model.zip文件,提取码是hola

    将该附件解压缩后放在~/.gazebo中,按住ctrl+h可以显示隐藏文件夹,此时在~/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。

    在已经安装好Ubuntu 20.04ROS Noetic的前提下,如果我们是安装的是ros-noetic-desktop-full版本,那么就已经帮我安装好了gazebo11,我们首先查看我们自带的gazebo版本,在终端中输入

    gazebo --version
    
    • 1

    便可以查看gazebo的版本, 如下

    sjh@R9000X:~$ gazebo --version
    Gazebo multi-robot simulator, version 11.13.0
    Copyright (C) 2012 Open Source Robotics Foundation.
    Released under the Apache 2 License.
    
    • 1
    • 2
    • 3
    • 4

    6. 配置Mavros

    mavros的配置参考于Mavros官网配置教程

    6.1 安装Mavros(源码安装方法)不推荐

    1、首先创建工作空间

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws
    catkin init
    wstool init src
    
    • 1
    • 2
    • 3
    • 4

    如果报错wstool not found,则需要先安装

    sudo apt-get install python-catkin-tools python-rosinstall-generator -y
    
    • 1

    如果是第一次使用wstool,则还需要

    wstool init ~/catkin_ws/src
    
    • 1

    2、下载mavros源码

    rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
    # We use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
    rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
    
    • 1
    • 2
    • 3

    这里使用了kinetic版本来指代了所有ros的版本,无需我们自己指定,然后进入工作空间开始构建

    wstool merge -t src /tmp/mavros.rosinstall
    wstool update -t src -j4
    rosdep install --from-paths src --ignore-src -y
    
    • 1
    • 2
    • 3

    3、安装剩余依赖

    ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
    
    • 1

    4、编译

    cd ~/catkin_ws
    catkin build
    
    • 1
    • 2

    如果出现下列信息则表明编译成功,我这里不是首次编译,所以编译很快,首次编译会比较慢。

    Image

    成功之后打开.bashrc文件,在其中写入

    # >>> Mavros pkg initialize >>>
    source ~/catkin_ws/devel/setup.bash
    # <<< Mavros pkg initialize <<<
    
    • 1
    • 2
    • 3

    注意,这个一定要放置在PX4之前,如下图所示

    Image

    6.2 安装Mavros(二进制安装方法)推荐

    直接运行以下指令即可,参考自PX4联合Mavros教程

    sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras ros-noetic-mavros-msgs
    wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
    sudo chmod a+x ./install_geographiclib_datasets.sh
    sudo ./install_geographiclib_datasets.sh
    
    • 1
    • 2
    • 3
    • 4

    6.3 测试mavros

    在终端输入

    roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
    
    • 1

    来测试mavros是否安装成功,如果没有报错,那说明安装成功。如下所示

    Image

    7. 测试mavros与sitl通信

    接下来我们测试MAVROSSITL通信是否正常,先打开QGC地面站,然后输入

    roslaunch px4 mavros_posix_sitl.launch
    rostopic echo /mavros/state
    
    • 1
    • 2

    如果出现了connected: True,则表明通信成功,如下所示。

    Image

    如果在终端输入

    commander takeoff # 起飞
    commander land    # 降落
    
    • 1
    • 2

    无人机将会起飞和降落,并且mavros显示信息会发生变化。


    Reference

  • 相关阅读:
    2022年最新阿里java面试题:java初级+中级+高级面试题(附答案)
    Java面试题整理常用类部分
    华为ENSP网络设备配置实战2(较为复杂的ospf)
    前端性能精进(七)——构建
    springboot+vue企业废物回收员工任务管理系统java
    【Canvas】js用Canvas绘制阴阳太极图动画效果
    MySQL读写分离
    NNDL 实验六 卷积神经网络
    拓扑排序算法
    Kubernetes学习笔记-保障集群内节点和网络安全(4)隔离pod的网络20220911
  • 原文地址:https://blog.csdn.net/qq_44940689/article/details/132827299