APM联合gazebo进行固定翼仿真

发布时间:2023年12月20日

一、事情起因

由于项目使用的是固定翼飞机,然后又要求使用的是APM固件,所以之前对PX4固件就需要从新来过。

1.1 APM的飞行模式

固定翼常见的飞行模式

  • MANUAL:手动模式
    等效于不加飞控直接使用遥控器控制飞机。
  • FBWA:fly by wire_a
    这是固定翼中最常用的模式;
    遥控器摇杆控制飞机横滚和俯仰的角度,摇杆回中后飞机自动维持零位姿态;
    方向舵还是手动控制;
    油门还是通过遥控器手动控制,飞机不会自动调整油门以维持高度(如果油门过大或者过低,即使俯仰姿态角为0,高度依然有可能发生变化)。
  • FBWB:fly by wire_b
    与FBWA类似,但是飞机会主动维持高度;
    横滚控制与FBWA一样,是由遥控器控制目标横滚角;
    遥控器升降摇杆控制飞机的高度,摇杆回中后飞机会自动调整升降舵以维持当前高度;
    遥控器油门摇杆控制的是目标空速。
  • Stablize:增稳模式
    APM官方文档明确表示不建议使用此模式,推荐使用FBWA。
  • TAKEOFF:起飞模式
    飞机将爬升到“TKOFF_ALT”参数定义的高度,然后开始盘旋。
    参考文章,最好请参考官方文章

二、仿真环境配置

配置请你参考前面一篇文章:点击这里

2.1 配置过程中问题出现及其解决办法

(1)

#终端输如下行命令报错
gazebo --verbose zephyr_ardupilot_demo.world

报错:无法找到world文件
解决办法:

sudo gedit /usr/share/gazebo/setup.sh
sudo gedit /usr/share/gazebo-9/setup.sh

将export GAZEBO_MODEL_DATABASE_URI=http://gazebosim.org/models修改为:

export GAZEBO_MODEL_DATABASE_URI=http://models.gazebosim.org/

然后:

cd ~/ardupilot_gazebo/models
打开终端
wget http://models.gazebosim.org/manifest.xml

(2)map和终端不显示
原因:mavproxy未安装好,参考官方链接安装参考地址
解决办法:

sudo apt-get install python3-dev python3-opencv python3-wxgtk4.0 python3-pip python3-matplotlib python3-lxml python-pygame
pip3 install PyYAML mavproxy --user
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc

常见错误请参考链接](https://blog.csdn.net/Dojinz/article/details/134872301)

2.2 固定翼gazebo模型构建

在上一个文章中,我们构建自己的gazebo模型,然后进行编译,但是那个没有包含固定翼模型,所以我们需要更换。

git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
mkdir build
cd build
cmake ..
make -j4
sudo make install

在这里插入图片描述

更换之前里面的模型如下所示:

在这里插入图片描述

上述就是全部的环境配置

2.3 APM固件编译

接下来可以按照BUILD.md中的进行waf编译。
确保~/.bashrc的环境变量都设置好了,没有就请你参考我的第一篇文章点击这里

./waf configure --board sitl
./waf plane #编译的是固定翼,你也可以选择四旋翼(copter)

运行仿真:

sim_vehicle.py -v ArduPlane -f gazebo-zephyr --map --console -I0

换另外一个终端

gazebo --verbose zephyr_ardupilot_demo.world

开始起飞:

#切换到takeoff模式
mode takeoff
#解锁油门 
arm throttle

固定翼会默认起飞到10m高度进行circle动作。
在这里插入图片描述

文章来源:https://blog.csdn.net/m0_49586319/article/details/135094185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。