ArduPilot开发入门学习
编译pixhawk环境搭建
参考原网页进行说明,有两种搭建环境的方式。
第一种为自动执行脚本(推荐),较为方便,但有问题需解决。
由于使用apt-get update时部分文件无法下载,导致脚本执行不完整,故可将ardupilot/Tools/scripts/install-prereqs-ubuntu.sh文件里的$APT_GET update行用#注释掉。
然后操作如下:
这段时间又参与了一个新的小项目,简单概括为蓝牙、智能、家居
吧,虽然时间有点紧,还是希望能把这一些东西记录下来。
目前生产BLE芯片的厂家主要有CSR、TI、Nodic和NXP(QN902x),各个厂家芯片对比如下图
从如上图对比可以看出,NXP的QN902x在功耗方面比CSR和TI更省电,在接收灵敏度和模式方面比Nodic的胜一筹,它的从设备相比其它几家可以连接的更多,共有8个,这也算是蓝牙4.0的一大特色吧,并且NXP的芯片已经过了MFI认证,直接能与苹果设备相连接,因为这种认证也是挺贵的。
代码调用关系可使用doxygen工具,cmake中使用doxygen,总体的代码结果图如下:
具体可参考APM飞控浅析
1 | for (int i = 0; i < SIZE; i++) |
参考官网,注意这里需要采用Ubuntu15.10或者16.04。
具体命令简写如下:
1 | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' |
开始基本操作。
由于sublime的多平台性,以及也有很多强悍的插件可供使用,是我不得不将兴趣移植这个编辑器上面来。将查看代码而言,在linux下也可以通过wine安装sourceinsight,但是对于安装跟使用来说不是很方便,特别是有git项目的时候。
1 | $ ln -s /opt/Sublime\ Text\ 2/sublime_text /usr/bin/ |
下面解决不能输入中文的问题
保存下面的代码到文件sublime_imfix.c(位于~目录,即主文件夹目录)
1 | #include <gtk/gtkimcontext.h> |
本文将一个新手学习px4入门,装机,PID调节过程,以及试飞注意事项陈述如下:
硬件一套,包括DJI F450机架、Pixhawk 2.4.6 mini飞控、好盈乐天20A电调、1045正反桨、银燕电机2216、天地飞6通道遥控器。详情见淘宝链接里的套餐方案。
这些是PX4自动驾驶仪的元件要求:
PX4项目建立在这些主要软件模块:
PX4 Flight Stack (estimation and control, cross-platform)
PX4 Middleware (IPC / ORB, *nix (NuttX, Linux, MacOS, etc))
PX4 ESC Firmware (for motor controllers)
PX4 Bootloader (for STM32 boards)
Operating System (NuttX or Linux/Mac OS)
项目地址:
PX4飞行栈
PX4飞行栈能控制多轴飞行器,航模,直升机,实验飞机和地面车辆的飞行。它由一组单独的应用程序/节点组成。
这篇文章主要记录学习NuttX的过程以及对NuttX的理解,并结合apm里的px4-v2例程设置进行说明。
1.0 NuttX Operating System User’s Manual
============
NuttX Operating System User’s Manual从软件开发者的视角为NuttX提供一般的使用信息。
Tip: 源码中apps/nshlib/README.txt即为说明书。
注意
:基于参考原因,本文参杂了APM的算法分析。
本篇文章首先简述了下px4和apm调用姿态相关应用程序出处,然后对APM的DCM姿态解算算法参考的英文文档进行了翻译与概括,并结合源代码予以分析,在此之前,分析了starlino的DCM,并进行了matlab的实现,因为它更加利于理解。后段时间会对px4的四元数姿态解算进行分析。姿态控制部分描述了串级PID在APM里的实现流程,同样后期会完善对px4的分析。最后针对自己平时使用的一些调试技巧进行了总结。
下面看下重要的一个脚本/etc/init.d/rc.mc_apps
,可以知道姿态估计用的是attitude_estimator_q和position_estimator_inav,用户也可以选择local_position_estimator、ekf2,而姿态控制应用为mc_att_control和mc_pos_control。
1 | #!nsh |
而在ardupilot中,姿态解算与控制算法在ArduCopter.cpp的fast_loop任务中以400Hz的频率运行。
1 | // Main loop - 400hz |
了解了上面的源码出处后,下面将分具体应用进行分析。