APM固件编译和仿真

事情起因

主要想对无人机APM固件进行仿真的算法验证,因实际飞行的过程实际验证太浪费飞机了,所以就先试用仿真对算法进行仿真开发。

一,环境搭建

环境搭建我建议参考官方英文教程,英文教程写的比较全,不懂可以自己使用软件翻译。

#安装git工具和相关依赖项
sudo apt-get update

sudo apt-get install git

sudo apt-get install gitk git-gui

(2)下载官方源码

git clone https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git submodule init
git submodule update

(3)安装编译环境,源码里面提供了脚本,运行脚本即可安装好编译环境

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

执行完结果如下所示
APM固件编译和仿真_第1张图片
接着运行

. ~/.profile

情况提示:这里建议使用最新版的apm固件的环境安装脚本,因为旧版固件的安装脚本安装完环境后,能编译旧版固件,但不一定能编译新版固件
---------------------------------分界线-----------------------------------------------------------------------------------------------------
到这里我直接按照README.md进行运行

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

直接给我报错,我也不知道什么原因,找了很多博客没有找到解决办法。报错如下:

Caught exception! 'dict' object has no attribute 'unknownScriptName'
Caught exception! 'dict' object has no attribute 'unknownScriptName'
.................此处省略很多字
Traceback (most recent call last):
  File "/home/mawei/ardupilot/modules/DroneCAN/dronecan_dsdlc/dronecan_dsdlc.py", line 195, in 
    assert not buildlist-builtlist, "%s not built" % (buildlist-builtlist,)
AssertionError: {'uavcan.tunnel.Protocol', 'uavcan.equipment.hardpoint.Status', 'com.hobbywing.esc.StatusMsg2', 'uavcan.equipment.gnss.Auxiliary', 'uavcan.protocol.NodeStatus', 'uavcan.equipment.camera_gimbal.GEOPOICommand', 'uavcan.equipment.air_data.AngleOfAttack', 'uavcan.equipment.air_data.Sideslip', 'ardupilot.gnss
dr
.................此处省略很多字
onecangen returned 1 error code
Waf: Leaving directory `/home/mawei/ardupilot/build/sitl'
Build failed
 -> task in 'dronecan' failed (exit status 1): 
	{task 140138241604968: dronecangen .github,ardupilot,com,cuav,dronecan,mppt,tests,uavcan -> }
 (run with -v to display more information)	
git

checkout Copter-4.1
切换分支
git submodule update --init --recursive
APM固件编译和仿真_第2张图片
再运行就可以
APM固件编译和仿真_第3张图片

编译对应飞机的固件代码

./waf copter

开始正式仿真

gazebo仿真环境搭建

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

APM固件编译和仿真_第4张图片

前面都是仿真环境的配置,接下来就是我们真正的仿真环境,因为我们需要使用gazebo仿真平台,所以打开终端,在下面运行如下语句。

#联合gazebo仿真的环境,如果你不使用gazebo,可以不需要
../Tools/autotest/sim_vehicle.py -f gazebo-iris --console --map

不用gazebo仿真,一样可以完成仿真,因为你的数据会在QGC地面站实时显示,如下方式
在这里插入图片描述
打开了仿真之后,我们换一个终端打开gazebo的仿真地图。

 gazebo --verbose worlds/iris_arducopter_runwayorld

APM固件编译和仿真_第5张图片
输入起飞指令

mode guided # 引导模式
arm throttle # 解锁油门
takeoff 10 #起飞至10m高度
Land #降落

APM固件编译和仿真_第6张图片

你可能感兴趣的:(无人机设计开发,APM,无人机,gazebo)