PX4 飞控仿真和开发入门

ArduCopter

马上就2020了,之后的发展方向有了更多的选择。从大二开始连续参加两届大创加之今年暑假的电赛都用的是Pixhawk的硬件加ArduCopter固件进行无人机开发,积累了不少开发经验。但之后不一定会继续在无人机的路上走下去,又或者会在飞控和导航的方向深挖。便想写点什么记录和纪念下这些填坑的过程。

给大家分享一下关于WIN平台下Pixhawk的开发和SITL仿真。

connect-to-com-port.jpg

Pixhawk的硬件支持APM和PX4两套固件,而两套固件的编译都需要在Linux下进行。官方推荐的是Ubuntu发行版,然而自从WIN1903支持WSL之后,win10就成了最好的Linux发行版(大雾)。其运行原理比虚拟机少了一些中间层,可以理解为一个从系统API级别模拟Linux内核的应用。从目前的使用体验来看,WSL除了不支持opengl和部分USB外设比较遗憾外,已经可以满足大部分的开发需要了。而使用则可以当成只有命令行的Linux进行使用,也有特殊的方法可以配置GUI和其窗口,之后有机会的话会写。

首先说一下我的开发环境吧,vscode+winterminal+wsl。

借助vscode的代码高亮和跳转进行编辑,然后在wsl完成Arducopter的编译环境搭建后,切换到代码目录下运行相关指令即可编译。

image-20191230201909153

而关于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等看到其更直观的姿态信息

image-20191230214532183

  • 关于WSL搭建开发环境
    网上有不少启用WSL的教程,启用WSL后依次执行以下命令即可搭建环境。不过由于众所周知的网络原因,建议挂个梯子,不然可能会在下载代码阶段无限重复。

    sudo apt-get update && sudo apt-get upgrade
    # 下载代码并更新子模块
    git clone https://github.com/ardupilot/ardupilot.git
    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可视化
    下载安装FlightGear 3.4.0,然后启动脚ardupilot/Tools/autotest/fg_quad_view.bat
    会有一个FG窗口,然后启动SITL仿真即可。

如果大家感兴趣我会写写如何用游戏手柄控制SITL仿真和其他的一些东西
新人公众,求关注

能吃的梦想家