飞控开发和SITL入门
马上就2020了,之后的发展方向有了更多的选择。从大二开始连续参加两届大创加之今年暑假的电赛都用的是Pixhawk的硬件加ArduCopter固件进行无人机开发,积累了不少开发经验。但之后不一定会继续在无人机的路上走下去,又或者会在飞控和导航的方向深挖。便想写点什么记录和纪念下这些填坑的过程。<hr/>给大家分享一下关于WIN平台下Pixhawk的开发和SITL仿真。
Pixhawk的硬件支持APM和PX4两套固件,而两套固件的编译都需要在Linux下进行。官方推荐的是Ubuntu发行版,然而自从WIN1903支持WSL之后,win10就成了最好的Linux发行版(大雾)。其[运行原理](Learn About Windows Console & Windows Subsystem For Linux (WSL) | Windows Command Line)比虚拟机少了一些中间层,可以理解为一个从系统API级别模拟Linux内核的应用。从目前的使用体验来看,WSL除了不支持opengl和部分USB外设比较遗憾外,已经可以满足大部分的开发需要了。而使用则可以当成只有命令行的Linux进行使用,也有特殊的方法可以配置GUI和其窗口,之后有机会的话会写。
首先说一下我的开发环境吧,vscode+winterminal+wsl。
借助vscode的代码高亮和跳转进行编辑,然后在wsl完成Arducopter的[编译环境搭建](Setting up the waf Build Environment on Windows10 using WSL )后,切换到代码目录下运行相关指令即可编译。
而关于SITL仿真,可以理解为一个特殊的程序,它通过数值计算模拟载具的姿态和各种参数。可以通过不同的引擎看到它的仿真结果(数值图表和仿真模型的姿态)。Arducopter支持多种simulater(SITL Simulator,Gazebo,XPlane-10,RealFlight,Morse Replay,JSBSim,AirSim)比较常用的是SITL和Gazebo。
在Win平台下,通过WSL进行SITL仿真后可以通过地面站查看数据或通过仿真软件查看其姿态。
1.直接借助MP/QGC的地图指示观看,不过这样只有2D的粗略位置,无法更直观的看到姿态
2.借助FlightGear/XPlane/RealFlight等看到其更直观的姿态信息
[*]关于WSL搭建开发环境
网上有不少启用WSL的教程,启用WSL后依次执行以下命令即可搭建环境。不过由于众所周知的网络原因,建议挂个梯子,不然可能会在下载代码阶段无限重复。
sudo apt-get update && sudo apt-get upgrade
# 下载代码并更新子模块
git clone ArduPilot/ardupilot
cd ardupilot
git submodule update --init --recursive
# 安装编译需要的组件
./Tools/environment_install/install-prereqs-ubuntu.sh -y
[*]关于SITL仿真
其实质为启动脚本`/Tools/autotest/sim_vehicle.py`
仿真可以在ardupilot/目录下执行命令`ardupilot/Tools/autotest/sim_vehicle.py -v ArduCopter`
或者进入ArduCopter目录执行`ardupilot/Tools/autotest/sim_vehicle.py`
[*]关于FlightGear可视化
下载安装(Download Central),然后启动脚`ardupilot/Tools/autotest/fg_quad_view.bat`
会有一个FG窗口,然后启动SITL仿真即可。
如果大家感兴趣后续我会写写如何用游戏手柄控制SITL仿真和其他的一些东西
<hr/>新人出道,还请关注一下公众号,上面会陆续有好玩的内容发布
页:
[1]