![](https://img-blog.csdnimg.cn/20190906160708705.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Ardupilot
文章平均质量分 70
Alvin Peng
热爱编程,从事嵌入式软件开发。
展开
-
3.4AP_HAL::RCInput and AP_HAL::RCOutput
前言 前面梳理了AP_HAL的硬件抽象层,包括串口、调度器、I2C等等,这次涉及到增加电机的输出口,所以有必要RC的输入输出的框架梳理一遍AP_HAL::RCInput 这里是对RCinput进行了抽象,具体的实现我们参看AP_HAL_PX4下的RCInput.cpp的实现#define RC_INPUT_MIN_PULSEWIDTH 900#define RC_INPUT_MAX_PULSE原创 2017-08-10 11:15:16 · 649 阅读 · 0 评论 -
APM::Rover下GCS_MAVLink的逻辑梳理
前言这里结合之前添加的mavlink消息,梳理下从飞控的物理端口到应用层的消息传递过程; 顺带再把整个框架在梳理了一遍;这里结合Rover来叙述,可能和copter有些区别,先开始吧~libraries这里需要说明下,关于mavlink的协议及生成部分,这里就不详细叙述了,后面专门单独写一篇文章来叙述。 还是说回GCS_MAVLink,先来分析下文件结构:/ardupilot/libraries原创 2017-09-14 16:32:31 · 2213 阅读 · 0 评论 -
Ardupilot下移植CAN总线驱动
前言 最近由于工作上的需要上CANopen的协议栈,所以先来把ardupilot下的总线驱动调试通过。在正式调试之前,还是先来梳理下nuttx的驱动模型; 说明一点,这篇文章主要是描述驱动框架,不会去详细介绍CAN总线的工作原理;上半部分和下半部分 Nuttx的驱动在框架上分成了两个部分,实际上也就是面向应用层和底层,这两个部分来实现整个设备的驱动;这里直接用can来举例; 文原创 2017-12-05 20:02:53 · 2656 阅读 · 8 评论 -
2.3[Lib]AP_Motors
前言 之前在分析RCOutput的源码时候,其中的output_ch的成员函数实现过程中,对RC通道的Function进行了分类输出,具体的分成了4类:Function manual 下RC通道为通道直通;Function rc1~rc16 下RC通道则是映射到实际的ch0~ch15;Function motor1~motor8 则是通过AP_Motors::rc_write来实现控制;其原创 2017-08-10 11:27:57 · 1478 阅读 · 3 评论 -
2.2[Lib]ardupilot设备驱动实现方式
前言 之前看了APM的驱动(mpu6000、sr-04等)的库(srv/driver)基本上是各种class,并且也尝试按照这种格式编写了Xsens的驱动,这次需要编写应用层的代码,就顺藤摸瓜的从上面梳理,结果从ins.update()的入口进去后发现居然有变化,而且从nsh的终端上/dev下也没有看到相关的sensor,这不由得让我疑虑之前的思考方式;顶层入口 在APM的代码里面,主要的就是::原创 2017-08-10 11:22:31 · 1343 阅读 · 2 评论 -
3.1AP_HAL(APM的硬件抽象层)
前言 前段时间梳理了PX4IO以及PX4FMU的类,但是还是没真正上去梳理到硬件框架上去,这次直接开始梳理AP_HAL框架,从根本上去认识pixhawk在硬件框架上的实现;namespace AP_HAL 在pixhawk里面对于硬件的驱动在使用上完全是依赖了nuttx的驱动层,所以在驱动的调用上也是沿用了nuttx的fs_ops的方式,但是通过源码可以发现的是,pixhawk对与硬件又进行了抽象原创 2017-08-10 11:17:45 · 2011 阅读 · 0 评论 -
3.5RC_Channel 和 SRV_channel
前言 这部分是之前在折腾ROVER的时候梳理了一遍,但是没有形成记录,现在从新从对象的角度来分析一遍,包括映射、转换、数据结构...等方面进行梳理;数据结构 首先分析的入口是从Rover::read_radio()的函数进行,我们就从这里为入口并作为本次分析的主线来进行阐述:void Rover::read_radio(){//1如果没有新的RC信号,执行失控保护 if (!hal.rc原创 2017-08-10 11:11:46 · 27329 阅读 · 1 评论