欢迎来到天天文库
浏览记录
ID:43485607
大小:379.13 KB
页数:14页
时间:2019-10-08
《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
此文档下载收益归作者所有