libraries目录

传感器

AP_InertialSensor 惯性导航传感器 就是陀螺仪加速计

AP_Baro 气压计 居然支持BMP085 在我印象中APM一直用高端的MS5611

AP_Compass 指南针

AP_GPS GPS定位

还有些飞行姿态的

AP_ARHS 姿态解算 输出Roll Yaw Pitch

AP_AttitudeControl 姿态控制 APM飞这么稳就靠它了

硬件抽象层

AP_HAL 头文件

AP_HAL_AVR APM2.X时代的板子 ATMega2560处理器

AP_HAL_FLYMAPLE 好几年前中国一个团队出的基于Maple(STM32版Arduino)飞控

          从硬件规格上STM32RET6 ITG3205 ADXL345

          HMC5883 BMP085 按理说挺有发展前景 但不知怎么没了下文

AP_HAL_Linux 基于嵌入式Linux的飞控 有树莓派加扩展板 uavio+ 国内的raspilot

        BeagleBoard加扩展板Erle Brain 2

        也有商品飞行器Parrot Bebop Drone

        应该是目前最有发展前景的平台。

AP_HAL_PX4 Pixhawk 目前主推的平台 用料足 价格贵 不亚于上面Linux的那种 性价比不高

AP_HAL_SITL 模拟器 不用买硬件直接在电脑上模拟

了解示例代码GPS_AUTO_test

  • 定义hal变量作为引用
  • 代码粗糙缺乏注释
  • setup() loop()函数 和arduino一样

hal引用

每一个用到HAL层的文件都需要hal变量 它获得AP_HAL::HAL对象,提供所有硬件特性的调用,包括打印消息到控制台,睡眠,I2C和SPI总线

实际的hal实现都在AP_HAL_XXX库中

常用hal方法有(类似arduino)

  • hal.console->printf() hal.console->printf_P() 打印消息到控制台(_P在avr上能节约内存)
  • hal.scheduler->millis() hal.scheduler->micros() 启动时间
  • hal.scheduler->delay() hal.scheduler->delay_microseconds() 延迟指定时间
  • hal.gpio->pinMode() hal.gpio->read() hal.gpio->write() 设置 读写gpio
  • hal.i2c I2C访问
  • hal.spi SPI访问

AP_HAL_MAIN 宏

做一些HAL层的初始化 通常不用关心它的具体实现

Hello World

比上面的还简单 建立目录\libraries\AP_HelloWorld\examples\HelloWorld_test

建立三个文件

HelloWorld_test.cpp

#include <AP_HAL/AP_HAL.h>const AP_HAL::HAL& hal = AP_HAL::get_HAL();void setup()
{hal.console->println("Hello World");
}void loop()
{hal.scheduler->delay(10);//必须延时 不然上面的println都不会执行
}AP_HAL_MAIN();

make.inc

LIBRARIES += AP_HelloWorld

只编译当前库

Makefile

include ../../../../mk/apm.mk

可以从GPS_AUTO_test复制

开始编译

make linux -j4

运行

sudo ./HelloWorld_test.elf

最后分享下WalkAnt大神的源码分析 http://blog.sina.com.cn/s/blog_402c071e0102v59r.html

转载于:https://www.cnblogs.com/zwb800/p/4992515.html

APM代码学习笔记1相关推荐

  1. Apm飞控学习笔记-姿态控制-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  2. Apm飞控学习笔记之悬停loiter模式-Cxm

    文章汇集 PX4/APM/飞控的学习笔记前言-Cxm_CHENxiaomingming的博客-CSDN博客_apm和px4哪个好 前言 时隔一段时间又开始琢磨APM飞控了,在上一篇中写了姿态控制,经过 ...

  3. GEE(Google Earth Engine) 代码学习笔记一 快速入门

    GEE 代码学习笔记一 (GEE 基于JavaScript语言和python语言,我记录的是JavaScript语言) 1.GEE 快速入门 quick start. 2.基本语句 - 简单输出 pr ...

  4. frustum pointnets训练代码学习笔记——kitti_object.py

    frustum pointnets训练代码学习笔记--kitti_object.py 本文记录了博主学习frustum pointnets过程中遇到的2D和3D数据库显示程序.为了画出输出结果,博主希 ...

  5. GEE (Google Earth Engine)最基础代码学习笔记三

    GEE (Google Earth Engine)代码学习笔记三 本次学习核心为:将JavaScript objects and primitives放入Earth Engine 容器传到服务器,并处 ...

  6. DSB2017项目grt123代码学习笔记一:项目基本情况

    DSB2017项目grt123代码学习笔记一:项目基本情况 Kaggle上Data Science Bowl 2017年肺结节检测比赛第一名grt123团队的算法. github地址:https:// ...

  7. Apm飞控学习笔记之添加我的设备或单片机串口通信-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

  8. Apm飞控学习笔记之如何添加自己的功能-Cxm

    目录: PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果 ...

  9. Apm飞控学习笔记之添加我的飞行模式-Cxm

    目录 PX4/APM/飞控的学习笔记前言-Cxm_chen_taifu的博客-CSDN博客开始了 开始了终于有时间可以学习飞控了此文章是用来当目录,我会持续更新我的学习之旅,希望能对各位有所帮助如果有 ...

最新文章

  1. 宇通客车java_6米采血车
  2. 安装Open Live Writer,添加SyntaxHighlighter实现代码高亮
  3. linux c 获取进程 cpu占用率 内存占用情况
  4. python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块
  5. VTK:可视化之CaptionActor2D
  6. 太赞了!2020年全网最新Java面试题(附答案)免费下载!超全!!
  7. 4列变成5列 datatable_云南美食界“5巨头”,谁才是NO.1?你家乡的那道菜也在列...
  8. 网络协议:TCP连接管理
  9. 韩国央行行长李柱烈:加密货币的波动给金融稳定带来风险
  10. s2 安恒 漏洞验证工具_Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)-阿里云开发者社区...
  11. 更新T1表,要添加一个条件A,但T1表没有A字段
  12. unity脚本中print及Debug.Log
  13. Kubernetes初识
  14. linux7磁盘挂载大于16T,CentOS6.5挂载超过16T的大容量存储空间,格式化为xfs
  15. 阿里云云解析DNS怎么样?云解析DNS有什么优势?
  16. 架构重构:通过以任务为中心的视角看软件的进化
  17. cisco路由器基本实验之五 配置Loopback接口进行远程登录 (Boson NetSim)
  18. 毒鸡汤词汇类的前端小程序源码模板
  19. java基于微信小程序的师生答疑交流平台 uniAPP小程序
  20. Android系统APP安装流程

热门文章

  1. Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值
  2. jsf 自定义属性_JSF资源包,自定义消息示例教程
  3. Java字符串中最长回文子字符串
  4. Java SE 9:使用Eclipse和IntelliJ IDEA IDE开发和测试HelloWorld模块(第4部分)
  5. Akka的Actor层级结构《seven》译
  6. 开课吧:浅析人工智能对网络安全格局的影响
  7. 基于OpenCV的计算机视觉入门(5)图像美化(下)
  8. ML————朴素贝叶斯原理和SKlearn相关库
  9. Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer
  10. [MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计