Skip to content

仿真环境配置

Yuhua.Qi edited this page Oct 19, 2021 · 8 revisions

仿真飞行配置

目前仅提供Gazebo仿真配置教程

十分重要:不能在树莓派、TX2、NX等机载电脑中配置仿真环境!!!

PX4编译环境及固件代码安装

执行完本文件后,可参考项目概览及功能说明进行仿真测试!

PX4编译环境配置及固件代码安装

Prometheus项目中的Gazebo仿真模块依赖PX4固件及sitl_gazebo包,因此需先配置PX4编译环境

  • 下载PX4固件代码,此处请使用阿木实验室的Prometheus项目专用的PX4仓库:prometheus_px4,安装方法如下

    git clone https://gitee.com/amovlab/prometheus_px4.git
    cd prometheus_px4
    git submodule update --init --recursive
    pip3 install --user toml empy jinja2 packaging
    make amovlab_sitl_default gazebo
    
  • PX4编译环境安装(第一次安装PX4环境需要运行)

    cd prometheus_px4/Tools/setup
     ## 请在运行此脚本时注意终端的打印信息,保证每一项均顺利安装
     ## 这一步问题最多,一定仔细检查是否正确安装!!!   
     ## 若有某一项失败或一直卡住,请重新运行即可!
    source ./ubuntu.sh
  • 不需要进行分支切换,直接使用主分支Prometheus_PX4_1.11.1

说明

  • 对于之前使用Firmware_v110的开发者,请直接删除Firmware_v110整个文件夹,然后按照上述流程安装(可不执行PX4编译环境安装)

  • 如果在更新子模块时遇到问题,可尝试先make_distclean,再git submodule update --init --recursive

  • 在安装PX4编译环境时,比较常遇到的问题就是arm-none-eabi-gcc安装失败或者版本不对,请注意以下几点

    • 版本问题:一定使用prometheus_px4/Tools/setup目录下的ubuntu.sh进行安装,如果使用PX4官方master分支下的对应文件则会安装高级版本的arm-none-eabi-gcc,会使得编译prometheus_px4出错

    • 可以通过如下指令查看arm-none-eabi-gcc版本

       $arm-none-eabi-gcc --version
      
       arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
       Copyright (C) 2017 Free Software Foundation, Inc.
       This is free software; see the source for copying conditions.  There is NO
       warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

      prometheus_px4对应的版本是gcc version 9-2020-q2-update(其他版本gcc可能也支持,只要能顺利编译固件即可),如果之前已经安装过最新的arm-none-eabi-gcc,请重新运行ubuntu.sh文件后,重启电脑。

    • 安装失败:一般是由于网络原因导致,在运行ubuntu.sh文件时,请耐心查看安装记录,下载arm-none-eabi-gcc有时会因为网络原因而自动放弃下载,此时,也只需要反复运行ubuntu.sh文件直至安装成功。

  • PX4环境配置可参考PX4手册 - getting_started,请选择1.11分支。

  • 建议同时安装PX4官方仓库和本仓库,如果官方仓库能正常编译,而本仓库不行,可提问。否则请先解决官方仓库编译问题

  • 若使用官方PX4仓库,Prometheus部分功能会失效,需要修改后方能使用(暂无详细说明,需自行解决)

  • 此处安装成功的标志为:PX4固件能够编译,并能运行其自带的Gazebo仿真,即运行make px4_sitl gazebo能够正常运行Gazebo仿真

  • **此处安装及编译出现任何问题,请前往PX4 Firmware的issue区寻找答案(但大部分情况是没有问题,请保证PX4环境配置正确)**或者前往本仓库的issue区提问,网址:https://gitee.com/amovlab/prometheus_px4/issues

  • 对PX4固件代码进行任何修改或者执行过git pull都需要重新运行make px4_sitl gazebo

相关链接

报错解决:

  • 缺少gstreamer:sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

环境变量配置

  • 打开终端,并输入如下指令打开bashrc文件

    sudo gedit ~/.bashrc 
    
  • 在打开的文件中手动添加如下指令(以下若存在已添加过的命令,请勿重复添加),其中${your prometheus path}为Prometheus项目路径,${your px4 path}为安装PX4固件的路径。

    source ${your prometheus path}/Prometheus/devel/setup.bash
    export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:${your prometheus path}/Prometheus/devel/lib
    export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:${your prometheus path}/Prometheus/Simulator/gazebo_simulator/models
    export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:${your prometheus path}/Prometheus/Simulator/gazebo_simulator/amov_models
    source ${your px4 path}/prometheus_px4/Tools/setup_gazebo.bash ${your px4 path}/prometheus_px4 ${your px4 path}/prometheus_px4/build/amovlab_sitl_default
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:${your px4 path}/prometheus_px4
    export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:${your px4 path}/prometheus_px4/Tools/sitl_gazebo

备注

  • 添加以上环境变量后,每次打开终端会出现配置好的路径,忽略即可。
  • 此步骤经常容易出错,请再三检查。(每一个路径都是有实际含义,请确保电脑中有该路径存在)

仿真用插件安装

  • 安装3Dlidar插件

    sudo apt-get install ros-melodic-velodyne-gazebo-plugins
    
  • 安装octomap在rviz中的插件

    sudo apt-get install ros-melodic-octomap-rviz-plugins
    
  • 安装Turtlebot3 仿真插件

    sudo apt-get install ros-melodic-turtlebot3-*
    

Gazebo模型库下载

为了获得更多的Gazebo模型文件,则必须下载完整的模型文件

 cd ~/.gazebo/

## 如果之前没有models文件夹的话,创建models文件夹
 mkdir -p models

  cd ~/.gazebo/models/  

 ## 这个仓库是从官方仓库(https://github.com/osrf/gazebo_models)复制过来的,会定期更新
  git clone https://gitee.com/potato77/gazebo_models

说明:此处的models文件与本项目中自带的models互为补充关系

Prometheus仿真功能包编译

请确保Prometheus项目中其他相应的功能包均已编译通过,然后编译prometheus_gazebo功能包

cd Prometheus
./compile_gazebo.sh

Gazebo仿真运行测试

运行如下命令测试是否Gazebo仿真是否正确配置

roslaunch prometheus_gazebo sitl.launch

此时,第一个终端同时运行了PX4仿真、Mavros、px4_pos_estimator、px4_pos_controller四个节点,第二个终端则运行了ground_station节点。因此,若第一个终端无报错,第二个终端显示[Connected]并能够查看到飞机状态,且Gazebo成功运行,代表成功运行

在Gazebo仿真环境中,根据仿真目的不同提供以下方式控制无人机飞行:

注:因为版本更新,以下图片和目前版本有些许出入

1.终端控制(全自主的offboard控制,推荐!)

运行如下指令启动终端控制节点,并根据终端提示输入指令

rosrun prometheus_control terminal_control

运行之后需要选择使用command input control(通过输入目标点的方式控制) 或者keyboard input control(通过键盘控制)两种方式

  • command input control

    ​ 一般情况下,首先输入999解锁并切换至offboard模式,然后输入1起飞,然后再根据提示输入其他指令(悬停、降落、机体系移动、惯性系移动、轨迹追踪等等)

    运行截图如下

  • keyboard input control

    1 for Arm, Space for Takeoff, L for Land, H for Hold, 0 for Disarm, 8/9 for Trajectory tracking Move mode is fixed (XYZ_VEL,BODY_FRAME): w/s for body_x, a/d for body_y, k/m for z, q/e for body_yaw

    键盘控制的移动只支持机体系下的速度控制

  • 请熟悉上述任意一种控制方式,这里能够实现的功能就是后续控制模块能够提供的API接口

2. QGC+遥控器控制(针对不需要offboard模式的情况)

  • 软件需求:安装QGC地面站

  • 硬件需求:可连接至电脑的遥控器或手柄,连接后在QGC中进行配置

  • 打开QGC,可通过虚拟摇杆或者外接遥控器对飞机进行操控,运行截图如下:

Clone this wiki locally