pixhawk源码分析

pixhawk源码分析

ID:43485607

大小:379.13 KB

页数:14页

时间:2019-10-08

pixhawk源码分析_第1页
pixhawk源码分析_第2页
pixhawk源码分析_第3页
pixhawk源码分析_第4页
pixhawk源码分析_第5页
资源描述:

《pixhawk源码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第一部分:ArdurPilot代码分为5个主要部分,基本结构分类如下:1vehicledirectories2libraries3tool4mk5externalsupportcode外部支持代码其中vehicledirectories为模型类型,当前共有4种模型,分别为:ArduPlane,ArduCopter,APMrover2和AntennaTracjer。都是.pde文件,就是为了兼容arduino平台;Libraries中为主程序;tool为工具,只要提供支持;mk为mavlink通信协议,mavlink是对微型飞行棋数据头信息进

2、行引导的库,它可以高速的传递c语言并发送这些数据包到地面控制站,针对不同的硬件板,编译可以采用”makeTARGET”的形式。如果要移植到新的硬件,可以在mk/targets.mk文件中添加,如:makepx4-v2-j8第二部分:学习sketch例程代码Sketch,是指使用.pde文件编写的主程序Sketch代码的几个特点:1、pde文件包含很多includes;其中include为pde文件转变为C++文件后,提供必要的库引用支持。2、定义了hal引用声明;在Sketch例程中hal引用声明定义如下:ConstAP_HAL::HAL&

3、hal=AP_HAL_BOARD_DRIVER;//pixhawk等价于AP_HAL_PX4这样定义方便访问硬件接口,比如console终端、定时器、I2C、SPI接口等。实际的定义实在HAL_PX4_Class.cpp,如下:constHAL_PX4AP_HAL_PX4hal是针对AP_HAL_PX4的引用3、setup()和loop()函数;每个sketch都有一个setup()和loop()函数。板子启动时,setup()调用。这些函数都由HAL代码中的main()函数调用(HAL_PX4_Class.cpp文件中的main_loop

4、())。Setup()函数只调用一次,用于初始化所有libraries。Loop()函数被调用,执行任务。4、AP_HAL_MAIN()宏指令;每一个sketch最底部,都有一个”AP_HAL_MAIN();”指令,它是一个HAL宏,定义一个C++main函数,整个程序的入口。它真正的定义在AP_HAL_PX4_Main.h中#defineAP_HAL_MAIN()Extern“C”_EXPORTintSKETCH_MAIN(intargc,char*constargv[]);IntSKETCH_MAIN(intargc,char*cons

5、targv[]){Hal.init(argc,argv);ReturnOK;}作为程序的起点,在AP_HAL_MAIN()里,就正式调用了hal.init()初始化代码程序的执行过程为:程序起点AP_HAL_MAIN()->hal.init()->hal.main_loop()->sketch中的setup()和loop()。其中loop()函数;usage()函数;init()函数定义在HAL_PX4_Class.cpp中关于函数理解的几点补充:main(intargc,char*argv[]argc:整数,用来统计你运行程序时送给mai

6、n函数的命令行参数的个数*argv[]:字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数argv[0]:指向程序运行的全路径名argv[1]:指向在DOS命令行中执行程序名后的第一个字符串argv[2]:指向执行程序名后的第二个字符串.....argv[argc]为NULL;argc,argv,是在main()函数之前被复制的,编译器生成的可执行文件,main()不是真正的;入口点,而是一个标准的函数,这个函数名与具体的操作系统有关;第三部分:串行接口UART和Console1、5个UART目前定义了5个UART,它

7、们的用途分别是(1)uartA:串行端口,通常是MicroUSB接口,运行MAVLink协议。(2)uartB:GPS1模块。(3)uartC:主数传接口,也就是Pixhawktelem1接口。(4)uartD:次数传接口,也就是telem2接口。(5)uartE:GPS2模块。2、调试终端作为5个UART的补充,额外有一个调试终端,可以查看AP_HAL/AP_HAL_Boards.h,如果定义了如果定义了HAL_OS_POSIX_IO说明这个平台提供调试终端。第四部分:学习RCInputandOutputRCInput,也就是遥控输入,用

8、于控制飞行方向、改变飞行模式、控制摄像头等外围装置。Adrupilot支持集中不同RCInput(取决于具体的硬件飞控)其中Spektrum/DSM—onPX4,pixhawka

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。