Ubuntu搭建APM固件编译环境

前言

Ubuntu20.04
APM 4.2.3
参考链接:
https://ardupilot.org/dev/docs/building-setup-linux.html

APM无人船效果展示(欢迎关注B站,持续更新视频)

开源无人船自主避障演示

附上已经配置好环境的虚拟机
链接:https://pan.baidu.com/s/1mKAFPeBwnH-qw-t4DR0vPQ?pwd=2tyf
提取码:2tyf
–来自百度网盘超级会员V6的分享

一、下载源码

git clone https://github.com/ArduPilot/ardupilot.git

下载完之后

cd ardupilot
git submodule init
git submodule update

在执行git submodule update时若出现报错没有更新完毕子模块,则继续执行该命令,直至更新完毕。

附上已经下载完全的源码:
链接:https://pan.baidu.com/s/1TQxyEM6PtStOkCGekGWCZw?pwd=u04f
提取码:u04f
–来自百度网盘超级会员V6的分享

二、配置编译环境

在ardupilot目录下执行下面的命令安装环境:

Tools/environment_install/install-prereqs-ubuntu.sh -y

如果发生报错,则重新执行上面的命令,直至出现下面的提示说明环境安装成功:
请添加图片描述
配置成功后执行:

. ~/.profile

这里建议使用最新版的apm固件的环境安装脚本,因为旧版固件的安装脚本安装完环境后,能编译旧版固件,但不一定能编译新版固件
例如笔者使用4.3.1版的固件的脚本配置完环境后,能编译4.3.1版固件,但在编译4.3.7版固件时,却报错:
在这里插入图片描述
解决办法也比较简单,就是用4.3.7版固件的脚本再重新执行一遍,就可以编译4.3.7版固件了。

如果编译master版本的固件正常,但是在切到Copter 4.3.7这个tag后,执行 ./waf configure --board fmuv3时报下面的错
在这里插入图片描述
解决办法也是在切到Copter 4.3.7这个tag后再执行一下配环境的脚本就可以了

三、编译固件

编译固件前,要配置编译的固件的目标硬件
我这里使用的是pix2.4.8飞控,所以使用fmuv3的固件,配置如下:

./waf configure --board fmuv3

请添加图片描述
然后用下面的命令编译四旋翼固件

./waf copter

编译成功如下:
请添加图片描述
编译后生成的固件在下图的目录
请添加图片描述
清除编译:

./waf copter clean

编译后自动下载:

./waf copter --upload

设置git标签
默认的git分支处于master,这个分支时开发者分支,正常使用的话建议使用稳定版分支
下面的命令查看所有的tag

git tag

我这里最新的copter分支是4.3.1
在这里插入图片描述
使用下面命令切换

git checkout Copter-4.3.1

切换成功后,使用git branch查看如下:
在这里插入图片描述
然后再编译下载,看到固件版本如下:如果用master分支,会看到固件版本是dev版
在这里插入图片描述

四、仿真

以多旋翼为例,在ardupilot/ArduCopter目录下执行:

sim_vehicle.py -w

执行完毕后会弹出下面的页面,然后打开地面站就可以链接到仿真的无人机了
在这里插入图片描述
gazebo仿真
gazebo安装:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install gazebo9 libgazebo9-dev

安装成功后执行:

gazebo --verbose

如果能弹出空的gazebo界面,说明安装成功

装gazebo插件:

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

成功后如下:
在这里插入图片描述
修改环境变量:
在.bashrc中添加(我这里ardupilot_gazebo在当前用户目录下,如果在别的目录下面做相应修改):

source /usr/share/gazebo/setup.sh
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH}
export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/models_gazebo:${GAZEBO_MODEL_PATH}
export GAZEBO_RESOURCE_PATH=~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH}
export GAZEBO_PLUGIN_PATH=~/ardupilot_gazebo/build:${GAZEBO_PLUGIN_PATH}

然后启动仿真:

gazebo --verbose worlds/iris_arducopter_runway.world

可以看到弹出一个gazebo页面,里面有一架无人机(如果没有无人机,检查环境变量设置),但此时的无人机无法连接地面站
在这里插入图片描述
然后启动软件在环仿真:
进入~/ardupilot/ArduCopter目录执行:

../Tools/autotest/sim_vehicle.py -f gazebo-iris --console --map

启动成功后如下,此时就可以连接地面站了,这时可以像真无人机一样规划航线,但是解锁前需要将虚拟摇杆打到最低,否则会报错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38768959/article/details/131133686