我阅读apm的源码有两个主要目的:一是学习,了解飞控系统和大型项目的组织结构;二是为了移植的需要,满足项目需求。近年来,少儿编程市场非常火热,许多厂商推出了相关的产品,但这些产品大多使用空心杯电机,导致动力不足,且扩展性有限。许多任务需要io或图像识别的支持。
因此,我在考虑使用APM裁剪版的飞控系统,结合空心杯电机和树莓派Zero(或其他设备),利用ROS、Mavlink等技术组装一个无人机。这只是一个初步的想法,目前还没有可供参考的现成方案,我也在进行这方面的尝试。
这是一款F4的飞控,价格大约在一百元左右。
这是十元的电调。
这是小桨叶。
如果移植成功,实际上也可以使用更便宜的mcu,但我更希望利用现有的生态系统。我认为,一个三百多元的无刷无人机也可以用于少儿教育,将高性能引入这一领域是一件有趣的事情。
如果需要更便宜的方案,ESP8266+MPU6050+4个MOS管,总共也不到二十元。
APM可以使用make编译,也可以使用一个名为WAF的工具进行编译,实际上WAF只是一个python包,并没有引入新的编程语言。
APM的代码只有对直升机的详细解释,四轴飞行器的部分没有详细说明,但也可以参考。
这是四轴飞行器相关的Copter代码。
这个架构图非常清晰,帮助理解整个系统的结构。
阅读源码不仅需要关注细节,更需要对整体有一个宏观的理解。
硬件部分包括PX4和linux变形板。
由于任务多样性,引入了操作系统。
这是我们关注的飞行代码部分。
硬件抽象层共享库、传感器、EKF算法等特殊代码飞控系统会通过MAVLink协议发送大量信息,如电池电量、姿态等,这些信息可以传输给高层应用、地面站以及机载计算机。
这是对上述内容的一个总结。
这是对上层应用的描述。
目录中的这个文件列出了当前所有的依赖。
这个目录中的文件是所有顶层项目共有的。
这是核心库。
这是传感器相关的部分。
这是其他库。
这是编译命令的示例,首先切换到库的位置,然后编译并上传。
如果安装了MAVProxy,可以执行以下命令查看输出:
https://ardupilot.org/mavproxy/docs/getting_started/download_and_installation.html#mavproxy-downloadinstallwindows
这是安装MAVProxy的位置。
mavproxy.py --setup --master /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00
这是执行MAVProxy的命令,使用 –setup 选项将MAVProxy置于原始串口模式,而不是处理后的MAVLink模式。
cd $ARDUPILOT_HOME # the top-level of an AruPilot repository./waf configure --board sitl./waf build --target examples/RCProtocolDecoder
这是用于环仿真的命令,用于RC协议解码。
./build/sitl/examples/RCProtocolDecoder -M quad -C
这是开始运行的命令。