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创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- @Html.ValidationSummary()的使用
@Html.ValidationSummary()用于返回表单在后台验证的结果. 如, 当后台if (ModelState.IsValid)失败后,错误信息就会显示到 @Html.Validation ...
- 20151120 jsp相关
jsp 声明表示.代码片段及引用 <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...
- 基于php常用正则表达整理(上)
电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/ 基于p ...
- QT正则表达式
QT正则表达式有一个问题,当初始状态是不符合正则表达式时,能够输入任意字符,若在输入过程中符合正则表达式,马上进入字符检测状态,即只能接受符合正则表达式的字符.
- 将 子集和问题 运行时间从 200.8s 优化到 0.4s
在过去24小时里,一直被这题折腾着... 题目: A Math gameTime Limit: 2000/1000MS (Java/Others) Memory Limit: 256000/12800 ...
- Js中 关于top、clientTop、scrollTop、offsetTop等
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- Android 获取有规律资源Id解决方案
在多个有规律的资源ID获取的时候,可以使用getIdentifier方法来获取,来获取. 用到场景:工具类打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射 ...
- zend framework virtualhost设置方法
Phpunit 的用法 php phpunit.phar 就可以运行phpunit了 修改本地域名vhost F:\Tools\wamp\bin\apache\apache2.4.9\conf\ext ...
- SQL文件导入到mysql乱码
在输入中文之前先SET NAMES GBK 彻底解决MYSQL中文乱码的办法((5.5以后版本:) 修改MYSQL配置文件my.ini [client] default-character-set=u ...
- hdu 5649 DZY Loves Sorting 二分+线段树
题目链接 给一个序列, 两种操作, 一种是将[l, r]里所有数升序排列, 一种是降序排列. 所有操作完了之后, 问你a[k]等于多少. 真心是涨见识了这题..好厉害. 因为最后只询问一个位置, 所以 ...