APM代码学习笔记1
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();//必须延时 不然上面的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
APM代码学习笔记1的更多相关文章
- APM代码学习笔记2:编译过程
make编译 所有位置的Makefile 引用的都是/mk/apm.mk target.mk 设置CONFIG_HAL_BOARD 例如linux就是HAL_BOARD_LINUX environ.m ...
- APM代码学习笔记3:执行过程
以Linux平台ArduPlane为例 \ArduPlane\Plane.cpp 定义Plane类 继承自AP_HAL::HAL::Callbacks ,获取hal对象. \ArduPlane\Ard ...
- Learning Memory-guided Normality代码学习笔记
Learning Memory-guided Normality代码学习笔记 记忆模块核心 Memory部分的核心在于以下定义Memory类的部分. class Memory(nn.Module): ...
- DeepLearnToolbox-master代码学习笔记
卷积神经网络(CNN)博大精深,网上资料浩如烟海,让初学者无从下手.笔者以为,学习编程还是从代码实例入们最好.目前,学习CNN最好的代码实例就是,DeepLearnToolbox-master,不用装 ...
- C# 好代码学习笔记(1):文件操作、读取文件、Debug/Trace 类、Conditional条件编译、CLS
目录 1,文件操作 2,读取文件 3,Debug .Trace类 4,条件编译 5,MethodImpl 特性 5,CLSCompliantAttribute 6,必要时自定义类型别名 目录: 1,文 ...
- 1.JAVA中使用JNI调用C++代码学习笔记
Java 之JNI编程1.什么是JNI? JNI:(Java Natibe Inetrface)缩写. 2.为什么要学习JNI? Java 是跨平台的语言,但是在有些时候仍然是有需要调用本地代码 ( ...
- boost timer代码学习笔记
socket连接中需要判断超时 所以这几天看了看boost中计时器的文档和示例 一共有五个例子 从简单的同步等待到异步调用超时处理 先看第一个例子 // timer1.cpp: 定义控制台应用程序的入 ...
- cc代码学习笔记1
#define #define INT32 int #define INT8 char #define CHAR char #define SSHORT signed short #define IN ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- CentOS启动报错:Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown block
Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown block 原因:主要问题就是你更新了内核之后出现的问题. ...
- QF——iOS通知中心(NotificationCener)
前面我们讲iOS不同界面间传值的时候,说过可以通过通知中心进行传值.那到底什么是通知中心,他是如何实现传值的呢? NSNotificationCenter是单例的,只提供了一个唯一的实例化入口,在整个 ...
- js设置元素readonly属性注意事项
注意大小写,应该为:obj.readOnly = true;
- sql按in中集合排序
1.SELECT * from tbLabelResRelation WHERE lId in(32,18,27,19) order by FIND_IN_SET(lId ,'32,18,27,19' ...
- Docker容器
Docker容器 Docker容器 1. 容器基本操作 启动容器: 1.docker run IMAGE [COMMAND] [ARG...]2. 演示: 1.[KANO@kelvin ~]$ doc ...
- php curl函数实例
<?php function login(){ $url = 'http://jspatch.qq.com/offline/check?qver=6.2.0.427&hver=0& ...
- Hibernate之总结
以前做.net,最近做java项目,负责服务端的开发,直接用的jdbc,线程安全问题.缓存同步问题以及连接池什么的,都是手动写,不但麻烦而且容易出错.项目结束,赶快抽时间学了下hibernate,每天 ...
- python3 模拟登录网站
最近学习python,因经常登录公积金网站查看公积金缴存还款情况,so网上找了写脚本,修改了一下,方便获取网页中的数据. 使用谷歌浏览器F12查看登录请求内容 1.request header需要参数 ...
- Linux常用命令--网络管理篇(三)
ping –b 10.0.0.255 扫描子网网段 ifconfig 查看网络信息 netconfig 配置网络,配置网络后用service network restart重新启动网络 ifconfi ...
- web.config中<customErrors>节点
错误提示: “/”应用程序中的服务器错误.------------------------------------------------------------------------------- ...