博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APM代码学习笔记1
阅读量:4518 次
发布时间:2019-06-08

本文共 1648 字,大约阅读时间需要 5 分钟。

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 模拟器 不用买硬件直接在电脑上模拟

 

 了解示例代码

  • 定义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 
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大神的源码分析 

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

你可能感兴趣的文章
我是怎么定义微服务平台?
查看>>
C语言中多维数组的内存分配和释放(malloc与free)(转)
查看>>
python random
查看>>
互联网技术
查看>>
input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
查看>>
【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)...
查看>>
函数名、闭包及迭代器
查看>>
mysql 5.6 参数详解
查看>>
求旋转数组的最小元素
查看>>
jQuery ajax error函数(交互错误信息的获取)
查看>>
Gson解析Json数组
查看>>
Lintcode: Fast Power
查看>>
Pocket Gem OA: Log Parser
查看>>
枚举也能直接转换为对应的数值输出
查看>>
angularjs1-7,供应商
查看>>
BitSet
查看>>
Spring常用注解,自动扫描装配Bean
查看>>
(转载)深入理解WeakHashmap
查看>>
JAVA中的数组
查看>>
爬虫—使用Requests
查看>>