-
Notifications
You must be signed in to change notification settings - Fork 426
仿真环境配置
目前仅提供Gazebo仿真配置教程
十分重要:不能在树莓派、TX2、NX等机载电脑中配置仿真环境!!!
执行完本文件后,可参考项目概览及功能说明进行仿真测试!
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
相关链接:
- PX4 Github主页:PX4 Github (代码有分支,请查看v1.10.0分支)
- PX4开发者手册:PX4手册 v1.11 (手册有分支,请查看v1.11.0分支)
- PX4官方仿真教程 : PX4手册 - gazebo simulation
报错解决:
- 缺少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模型文件,则必须下载完整的模型文件
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_gazebo功能包
cd Prometheus
./compile_gazebo.sh
运行如下命令测试是否Gazebo仿真是否正确配置
roslaunch prometheus_gazebo sitl.launch
此时,第一个终端同时运行了PX4仿真、Mavros、px4_pos_estimator、px4_pos_controller四个节点,第二个终端则运行了ground_station节点。因此,若第一个终端无报错,第二个终端显示[Connected]
并能够查看到飞机状态,且Gazebo成功运行,代表成功运行。
在Gazebo仿真环境中,根据仿真目的不同提供以下方式控制无人机飞行:
注:因为版本更新,以下图片和目前版本有些许出入
运行如下指令启动终端控制节点,并根据终端提示输入指令
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接口
-
软件需求:安装QGC地面站
-
硬件需求:可连接至电脑的遥控器或手柄,连接后在QGC中进行配置
-
打开QGC,可通过虚拟摇杆或者外接遥控器对飞机进行操控,运行截图如下:
感谢使用Prometheus自主无人机软件平台!