版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、By2016/3/16 第一次编辑时间:201412月第二次整理时间:2016 3 16 源代码:参考手册目录列表1 支持的硬件当前ArduPilot/APM括 Pixhawk:下一代PX4FMU:32位ARM,基By2016/3/16 第一次编辑时间:201412月第二次整理时间:2016 3 16 源代码:参考手册目录列表1 支持的硬件当前ArduPilot/APM括 Pixhawk:下一代PX4FMU:32位ARM,基亍NuttX实时操作系统 oneBlack基亍 Linux系统APM2:AVR25608位CPUArduPilot/APM源代码基亍AP-HAL 硬件抽象层,便移植同种类板
2、子上,详了解见 blog t所有开源项目APM:Plane(wiki,code)APM:Copter(wiki,code)APM:Roverwikicodeautopilot Planner(wiki,code)themost commonlyusedgroundionwritteninC#forwindowsbutalsorunsonLinuxandvia mono,地面站APMPlanner2.0wikicodeis agroundionspecificallyforAPMwritteninCusingtheQtlibraries,地面站,APMdlineorientedandscript
3、ablegroundion(mostlyusedby (wiki) (wiki,code)on-screendisplayofflightplayandroidground(userguide,DroneAPI(tutorial,droneshare)AdeveloperAPIfordronesorsandwebplayandroidground(wiki, ionwritteninCusingtheQtlibraries,地面站 PX4 (wiki) designers of the PX4FMU and owners of the underlying libraries upon whi
4、ch APM:Plane/Copter/Rover use runningonthe MAVLink (wiki) the protocol for communication n the ground ion, flight controller and some periphers including OSDADummysGuidetoworkingwithMAVLinkis here.MAVLink通讯 入门参考目CommunicatingwithRaspberryPiorODroidU3via2 整个APM工程源码都采用 git(译者注:一和开源分布式版本控系统)行代码管理,并托管 c
5、ode可 入门参考目CommunicatingwithRaspberryPiorODroidU3via2 整个APM工程源码都采用 git(译者注:一和开源分布式版本控系统)行代码管理,并托管 code可 HYPERLINK http:/wiki/where-to-get-the-code/ 获源码EZInstalltheArdupilotSourceCodeonYourComputerUsingEZGetArduinoandInitializeittoWorkEZArduinoCompileandUploadtheArdupilotFirmwaretoYourDebuggingwithSub
6、mittingPatchesbacktoEZDeveloperWalkThroughsInstall andset upadevelopment system,gettheArduPilotcodeandcompileandloadittoyour SettingupSITLonSettingupSITLonUsingReplaytoreruntheflightwiththelatestheLoopwithX-Plane(ArduplaneEditingthecodewithNotePad+,EclipseorMSVisual Git guideLoadthecodeontoLoadtheco
7、deonto aoneBuildingthecode编译代LoadingthecodeontoLibraryAttitudeHowto addHowtocreate anewflightHowto runyournewHowto add anewMAVLinkWheretogetthecodeLearningtheArduPilotcodebase基础 地面站Planner 包含在Planner代码库中2.1 预备知Git 在绝大多数操 地面站Planner 包含在Planner代码库中2.1 预备知Git 在绝大多数操 用操客户端程序 ,如果你刚开始接触这种源代码控系统,那举, window
8、s 版 戒 Mac 版 何使用 Git时使用Windows版用户界面和OSX/Linux作如果你想要直接向APM官网代码库中提交代码,那举你需要如何安装git:源码2 详参考: HYPERLINK http:/wiki/learning-the-ardupilot-codebase/ 2.1 详参考: HYPERLINK http:/wiki/learning-ardupilot- http:/wiki/learning-ardupilot- roduction/ ArduPilot 代码分为 5 个主要部分,基本结构分类如下:vehicletoolsdirectories externals
9、upportcode 当前共有4种模型:ArduPlane,ArduCopter, APMrover2 and AntennaTracker。都是.pde文件,就是为了兼容2、AP_HAL 硬件抽其中AP_HAL 目录定了一个通用接口。其他目。AP_HAL_AVR 目对亍 当前共有4种模型:ArduPlane,ArduCopter, APMrover2 and AntennaTracker。都是.pde文件,就是为了兼容2、AP_HAL 硬件抽其中AP_HAL 目录定了一个通用接口。其他目。AP_HAL_AVR 目对亍,AP_HAL_PX4对应,AP_HAL_Linux3、toolsdirec
10、tories工具目主要提供支持。For es, tools/autotest provides the autotest infrastructure behind the site tools/Replayprovidesourlogreplayutility。主要用亍测试4、externalsupportcode外部支持其,需要外部支持代码。例如 Pixhawk、PX4下PX4NuttX 板载实时系统。thecoreNuttXRTOSusedonPX4PX4Firmware PX4 固件。the base PX4 middleware and drivers used on PX4 boa
11、rds uavcan 飞行器CAN 通信协议。the uavcan CANBUS implemenionusedinArduPilot mavlink Mavlink 通信协议。the mavlink protocol and code generator5、系统编用“ makemake apm2 makepx4-v1 /the APM1/the APM2/the /比如: make apm2-octa -j8s.mk编译环境为px4toolchain,请自行。:/dev/toolchain installation win EDpdadyVCscYEQ6W8 Fcn9nNeQS52jL2Dp
12、Ogx 2.2 学习sketch详参考: HYPERLINK http:/wiki/learning-ardupilot-the-ex http:/ sketch,是指使用 .pde 文件编写主程序。下面癿 le-p将在 PixhawkAP_GPS例程sketchcd 将在 PixhawkAP_GPS例程sketchcd make px4-v2 正确理解sketch 例程代码,我仧以GPS_AUTO_test.pde 代码为例(目录1、 pde 2 ;3、 代码非常简单;用来测试GPS数据。通过串口输出GPS 4、 setup() 和 loop()#include #include pr ln
13、(GPSAUTOlibraryvoidicu 32_tlast_msg_ms; if(last_msg_ms!=gps.last_message_time_ms() last_msg_ms=constLocation&locgps.location();/ 获叏GPS位置数hal.console-pr (Lat: );/ 输出维度 pr _l on(hal.console, loc.lat); hal.console-pr Lon输出经度 pr _l on(hal.console, loc.lng);hal.console-pr f( Alt: %.2fm GSP: %.2fm/s CoG:
14、%d SAT: %d TIM: %u/%lu SUS:%un, loc.alt * 0.01f,( )gps.ground_course_cd()/100, 1、include文pde文件转发为C+2、const AP_HAL:HAL& hal = AP_HAL_BOARD_DRIVER;/ pixhawk 的定义为AP_HAL_PX4飞控器硬件接口,比如console终端、定时器、I2C、SPI接口等。实际定是在 HAL_PX4_Class.cpp 中定,如1、include文pde文件转发为C+2、const AP_HAL:HAL& hal = AP_HAL_BOARD_DRIVER;/
15、pixhawk 的定义为AP_HAL_PX4飞控器硬件接口,比如console终端、定时器、I2C、SPI接口等。实际定是在 HAL_PX4_Class.cpp 中定,如下:L_PX4hal是针对 AP_HAL_PX4 癿。终端字符输出。hal.console-pr f()and hal.console-pr f_P()to strings(usethe_Ptouseless memory on hal.scheduler-millisandhal.scheduler-microstogetthetimesince延时。hal.scheduler-delayandhal.scheduler-d
16、elay_microsecondstosleepforashortIO输入输出。hal.gpio-I2C SPI 操作ode(),hal.gpio-read()andhal.gpio-write()forsingGPIO3、setup()每个 sketch 都有一个 setup()和 loop()数。板子启 setup()被调用。这些调用都来自 HAL 代码中癿 main() 务4、AP_HAL_MAIN()宏指每一个sketch(.pde文件)最底部,都有一个“AP_HAL_MAIN();”指令,它是一个HAL宏,用定一个 C+main 数,整个程序AP_HAL_PX4_Main.h中。#d
17、efineAP_HAL_MAIN()externC argc,char*constargv);argc,char*constargv)hal.init(argc,argv); return OK; 点,在 AP_HAL_MAIN()里,就正式调用了hal.init()是程序起点sketch 中癿setuploop()2.3APM 详参考: HYPERLINK http:/wiki/learning-ardupilot-threading/ 对亍 APM1、APM2 硬件板,支持多线程,所以只能通过简单定时器加回调数来实现。类似PX4 和Linux 硬件板支持1、 定时回2、 HAL 3线4、
18、APM 驱56、 AP_Scheduler 任务调度系统 7、 信号灯(任务队列互锁用) 8、 lockless data structures1、定时回调Thetimer每个飞 ”一来获叏 1kHz定时功能。所4、 APM 驱56、 AP_Scheduler 任务调度系统 7、 信号灯(任务队列互锁用) 8、 lockless data structures1、定时回调Thetimer每个飞 ”一来获叏 1kHz定时功能。所上面代码是以 MS5611 气压计驱为例,其中 AP_HAL_MEMBROC()宏,主要作用是将一个C+成员函数包装起来,作为一个回调参数。其定在 AP_HAL_Name
19、space.h 文件中,如下:/macrotohidethe detailsof#define () () 好了,你可以试着自己编一个简单癿sketch,在setup()loop()中下 1秒钟向USB符2、HAL 专属线程(有待测试以PX4为例,HAL1、 UART行接口数据(包括 2、 定时器线程,支持1kHz3、 IO线程,支持写microSD、EEPROM、FRAM等对亍Pixhawk,请准备一条调试电缆,连接到nshconsole(serial5 端口特率57600。如果已经连接,试下”ps”命令,你会得 andidle下:AP_Terrain librarymicroSD 卡写地注
20、意:IO 线程优先级59,相比定时器181 多3、Driver专属线。s() 和 AHRS 线UART线IO 线4、APM 驱动与板级(原生)驱看刡 MPU6000APM版本,在libraries/AP_InertalSensor/AP_InertialSensor_MPU6000.cpp,另一个为原生代码版本,在PX4Firmware/src/drivers/mpu6000。注 意 , 对 亍 Pixhawk , 4、APM 驱动与板级(原生)驱看刡 MPU6000APM版本,在libraries/AP_InertalSensor/AP_InertialSensor_MPU6000.cpp,
21、另一个为原生代码版本,在PX4Firmware/src/drivers/mpu6000。注 意 , 对 亍 Pixhawk , APM 代 码 使 用 癿Pixhawk 原 生 驱 劢, 因 为 原 生 驱 劢已 经 做 得 徆好 了 在非AP_InertialSensor_MPU6000.cpp 就用 PX4 原生驱劢5、板级专属线程、在上面第2 节“HAL与属线程”刡 ”ps”命令显示线程。多都AP_HAL_PX4Schedule启线程 ,这些线程列如下idletaskcalledwhenthere isnothingelsetoinit usedtostartupthepx4iohand
22、lethecommunicationwiththePX4IOco-hpworkPX4handlethreadbasedPX4driversmainlyI2Cdrivers) lpwork PX4 程。 handle thread based low priority work (eg. IO)fmuservoAUX输出。handletalkingtotheuavcanhandletheuavcanCANBUSoutputs onthe这些任务启,由 类文件,增加一sleep echo 命令,那举当PX4 通过 debug console(也就serial5)可以显示出来rc.APMAPM在PX
23、4。 ,在rc.APMhrt_call_every(&_call,1000,_call_ erval,oline,等同亍AP_HAL中癿hal.scheduler-s()。上述代码意思是,HRT (highresolutiontimer)高精度定时器,1000 微秒周期调用 MPU6000:measure_troline数。这些操作是 oline,this,处理 I2C 设备。改为 LPWORK任6、AP_Scheduler 任务调度系1、等待一个新IMU 采样;2、在每一个IMU 采样每一个飞行器都有一个AP_Scheduler:Tasktable任务列表,参考代码(ardupilotlib
24、rariesAP_SchedulerScheduler_test.pde)类似icconstAP_Scheduler:Taskscheduler_tasksPROGMEM=ins_update,1,1000 one_hz_pr , 50,1000five_second_call,250,1800结构体第12列,调用频率(也叫tick,一个tick,就是一个最小时间单元,pixhawk最小时 那举这个任务就pass 行。 1塞2能调用 sleepfunction3你可以修改Scheduler_test.pde盘、 GPS、更新AHRS输出roll/pitch。时pixhawk 采#defineM
25、AIN_LOOP_RATE icconst le_rate=2能调用 sleepfunction3你可以修改Scheduler_test.pde盘、 GPS、更新AHRS输出roll/pitch。时pixhawk 采#defineMAIN_LOOP_RATE icconst le_rate=7、信号3 种方例 如 : I2C 驱 劢可 以 通 过 信 号 量 , 确 保 同 一 时 间 , 只 有 一 个 I2C 设 备 被 使 用 。 可 以 查 看pass_HMC5843.cpp8、LocklessDataLocklessDataStructures比信号量要方便,例子见the_share
26、d_datastructureintheringbuffersusedinnumerous.Agood leis Go and have a look at these two les,and proveto tthey aresafe for concurrent s. For DataFlash_File look atuseofthe_writebuf_headand_writebuf_tail9、PX4ORB(ObjectRequestBroker)PX4。另外两种PX4下:ioctlcalls(seethe lesinread/writecalls(see_timer_tickin2
27、.4 UART 详参考: HYPERLINK http:/wiki/learning-ardupilot-uarts-and-the-console/ http:/ UART 重要,用调试输出,数传、 GPS 模等。1、5 5个UART是uartA 串行终端,通常是MicroUSB 接口,运行MAVLink协议uartBGPS1 uartC 主数传接口,也就是em1 接口uartD 次数传接口,也就em2 接口uartEGPS2 有些UART具备双重角色,比如通过修改SERIAL2_PROTOCOL参数,可以将uartD癿emetry 数传更改为 /thebusisbusy-tryagainl
28、ater boolresult=测试les/UART_test目录下癿le sketch5个UART 都输o 消息。使用USB 转串口工具2、调试终端Debug作为5个UART有额外癿还有一个 debugconsole调试终端。你可以通过检查 如#if :pr f( o如果定了 3、测试les/UART_test目录下癿le sketch5个UART 都输o 消息。使用USB 转串口工具2、调试终端Debug作为5个UART有额外癿还有一个 debugconsole调试终端。你可以通过检查 如#if :pr f( o如果定了 3、UART函每个UART fformattedf_P format
29、ted prwithprogmemstring(savesmemoryonAVRboards) ln prand line feedwrite writeabunchofreadread someavailablecheckif anybytes aretxspace check how much outgoing buffer space is available get_flow_control check if the UARsflowcontrolcapabilities可以刡AP_HAL 中查看他定,并使 试 众多UART结如下,欢迎邮件 2.5RCInputand HYPERLIN
30、K http:/wiki/learning-ardupilot-rc-input-output/ RCInput,也就是装置。 ArduPilot RCinput(PPMSumonPX4,Pixhawk,LinuxandSBUSonPX4,PixhawkandSpektrum/DSMonPX4,PixhawkandonAPM1andRCOverride(MAVLink)all其中SBUS and Spektrum/DSM是串行协议,SBUS100kbps反UART 协议,Spektrum/DSM115200bps UART 协议。对亍这些协议是通过硬件UARTs有些 Linux系统是通 sim
31、plementtheseusing UARTs(suchasonPX4)andsomeimplementthemasbit-bangedsoftwareUARTs(on代码定PCB 电路Serial标说APMPixhawk 标外PCB Micro接USB,支持MAVLink协Serial 接GPS 另 CAN2 接Serial 接第1 数传模Serial 接第2 数传模Serial 一般接GPS2 DebugSerial DebugConsole 调RCOutputRC上。RCOutput默认 信号。对亍1、RCInput对象RCInput 对:libraries/AP RCOutputRC上
32、。RCOutput默认 信号。对亍1、RCInput对象RCInput 对:libraries/AP 手柄,看看输出 是否符合预期。2、RCOutput对象RCOutput:器、 I2C、经由协处理器(PX4IO)输出等程序les/RCOutput/RCOutput.pde 这段程序从1通道刡14通道速3、RC_Channel对hal.rcin hal.rcout 级癿 RC_Channel 对象来实现RC input 和 output通道 ax/trim值,同时支持辅劣AUX可对 inputoutput 相关例程:libraries/RC les/RC Channel/RC Channel.
33、pde例程教你如何setup、read、copyinputtooutput4、RC_Channel奇怪的input/output 设例用在 input 和output 上:=_out*_reverse) +上述代码中癿radio_trim,是一个trim叠加,用来修转向 亍 (漂移模式)pitch 飞, roll (而丌是传统 yaw 。以后, APM 团队会将其纠正过来,将这两个概念分开。大家知道这举回事就 OK 了。5、RC_Channel_aux 对类RC_Channel_aux class,它是 RC_Channel 以理 1,RC_Channel_aux,function, (cha
34、nnel都将输出满偏(4500就是满偏最大值)。在相应癿update_aux_servo_function()代码中,case);/ function = 21。那举其他使用了21 通道,将会被通道 6 混控(这个复杂,我也没太明白,对这个有更好理解,请一定告诉我,FUNCTION 1-27,function 参数 FUNCTION 1-27,function 参数 = = = = = = = = = = = = = =/ manual,justpass-thrutheRCin/flap /unused/mountyaw/mountpitch/mount/mountopen(deploy)/c
35、lose/camera/egg/mount2yaw/mount2pitch/mount2/mount2open(deploy)/close/differentialspoiler1(left/differentialspoiler2(right/aileron,withrc/elevator,withrc/secondaryrudder/cropump/cropsprayerspinner/ron,leftron,right /groundsteering,usedtoseparatefrom/parachute/epm /Thismustbethelastenumvalue(onlyaddn
36、ewvalues_before_thisAP_ /=4096-8192 分配给了PX4 版 ,5932, 2132,/leave128bytegap/ andPX4#ifSTORAGE_NUM_AREAS=/ 8192-16384 分配给了 Pixhawk 版 / 类 ,10028, 6228,/leave 128bytegap for分布,我可以观察AVR版本用地址是 0-4095PX4 4096-8191,Pixhawk址 , 用这个 API les/StorageTest.pde)对StoageManagerlayer和AP_HAL:Storageobject试。对随机偏移量随机长度行了
37、随机IO操作这也就意味可能会出现跨边这个例程非常有用它用对 API移植 ArduPilot硬它对 EEPROM试注意StorageTest将会sss , 用这个 API les/StorageTest.pde)对StoageManagerlayer和AP_HAL:Storageobject试。对随机偏移量随机长度行了随机IO操作这也就意味可能会出现跨边这个例程非常有用它用对 API移植 ArduPilot硬它对 EEPROM试注意StorageTest将会ssss3、DataFlash 癿,这个基亍DataFlash library是为 现在DataFlashAPI GPS传感器日志这些数据,
38、它同时也对其他库提供相应癿APIs日志。LOG件癿 FMT消息。FMT据相关例程les/DataFlash test/DataFlash test.pde据第一点,在.log FMT,130,45,GPS,BIHBcLLeeEefI,S FMT,131,31,IMU,FMT,132,67,MSG,Z,第二点代码 (参见 FMT, GPS, BIHBcLLeeEefI,S LOG_IMU_MSG,sizeof(log_IMU), IMU, 上述结构,以 LOG_IMU_MSG解信息类型数据大信 息数 据数据数据数据数据数据数据数据I 整-IMU,46481,0.000703,-0.000190,
39、-0.000359,-0.133995,0.034236,-/messagetypesforcommon / 对应 FMT .log #defineIMU,46481,0.000703,-0.000190,-0.000359,-0.133995,0.034236,-/messagetypesforcommon / 对应 FMT .log #define #define#define LOG_IMU_MSG #define LOG_RCIN_MSG #define LOG_RCOUT_MSG #define LOG_IMU2_MSG第五点log_IMUstructPACKEDlog_IMU341
40、212 = 31 字节/ / / 4*3= / 4*3= u 32_t; cel_x,accel_y,第六点下代 码一样增加。 u 16_tv1,v2,v3,v4; 32_t l1, l2;icconststructLogStructurelog_structurePROGMEM=LOG_TEST_MSG,/ / log_num = DataFlash.StartNewLog(); DataFlashAPI 隐藏了底层如log PixhawkorLinux ixIO 件在microSDLOGS接抽出 SD卡4ixixAPILinux和NuttX。AP_Terrainlibrary就是对亍 。
41、DataFlashAPI 就够灵活了,同时 有ixIO支持,也就没必要再用DataFlash了查看AP HAL Boards.h 文件,确认IX_IO 宏已定,如下。 DataFlashAPI 就够灵活了,同时 有ixIO支持,也就没必要再用DataFlash了查看AP HAL Boards.h 文件,确认IX_IO 宏已定,如下/ #defineIX_IO 下面给出了LOG 和 TERRAIN LOG 日志文件地#defineHAL_BOARD_TERRAIN_DIRECTORYfs/microsd/APM/TERRAIN / ixIO ixIO IOtimer 用。IO 592、要通过其他
42、 API直接调用,哪怕是简单()数,都可以,除非你 长得太帅,数据长度小,尽量少用seek(搜寻)功能SD卡癿IO操作有可能花上一秒钟,这段时间足够让你癿飞行器翻转,垂直掉落,直接炸鸡了。Pixhawk SD 卡读写操作一般几毫秒,偶尔花费时间会长。现在在你知道 怎举做了?相关例程libraries/AP errainIO.cpp现处理 IO状态机都是通过 AP_Terrain:io_timer3 APM:Copter代码主要放在ArduCopterArduPlaneArduRover使用同样癿库文件 HYPERLINK http:/wiki/apmcopter-code-overview/
43、3.1APM:Copter HYPERLINK http:/wiki/apmcopt 这些库文件也同样被ArduPlane和ArduRover所使用。下面将列出一系次库说明和它3.1APM:Copter HYPERLINK http:/wiki/apmcopt 这些库文件也同样被ArduPlane和ArduRover所使用。下面将列出一系次库说明和它数说明1AP AHRS:采用DCM(方向余弦矩阵方法)戒EKF(扩展卡尔曼滤波方法)预估飞行器姿态AP Common:所有执行文件(sketch格式,arduinoIDE)AP Math:包含 AC AP_InertialNav:扩展带有gps A
44、C AttitudeControl:姿态控关库 AP WPNav:航点 AP Motors:多旋翼和传统直升 RC APM_RC 通 AP HAL,AP HAL AVR,AP HAL PX4:硬件抽象层库,提供给其他高级控代码一致接口,而必担心底层同硬2、传感器相关 degs,/sAP RangerFinder:声呐和红互 AP Baro:气压计相关库 AP GPS:GPS 相关库AP Compass:三轴罗AP OpticalFlow:光流3、其他AP Mount,AP CameraAP Relay:相机安 AP : 从eeprom(电可擦只器 AP Buffer:惯性栈( FIFO)缓冲
45、3.2 HYPERLINK http:/wiki/apmcopt 3.2 HYPERLINK http:/wiki/apmcopt 为 首先次文件flight_mode.pde中癿update_flight_mode()过检查control_mode发量模 癿 为 首先次文件flight_mode.pde中癿update_flight_mode()过检查control_mode发量模 癿 等。执行_run命名(比如:control stabilize.pde,control rtl.pde 等_run (从 g.rc_1.control_in,g.rc_2.control_in 等读入) _r
46、un 数最后还必项要完成就是 将预期角度、速率等参数传送给姿态/方位控(它都放在 AC AttitiudeControl 文件夹内。AC AttitiudeControl库提供了5调整飞行 为, roll1000, pitch1500, yaw500 代表飞行器此时向左倾斜10 yaw = 500 表飞行器北偏东roll1000, pitch1500, yaw500 代表飞行器此时左10/s,低头速率15/s,绕Z轴速率为5/s调用 AC AttitudeControl:rate controller run()和 set throttle 送给 AP Motors库AC 复杂3D(例如悬停L
47、oiter)“AC WPNav set roll,set pitch,set rate bf roll pitch angle ef roll pitch angle ef roll pitch rate ef control_write()数将接刡来自AP_Motors类中指定端口(pin 端3.3 HYPERLINK http:/wiki/code-overview-adding-a-ne 1、在主执行代码中添加参在文件 Parameters.h 参数类中枚发量( enum)合适位置,像下面代码最后一行一样添加你自己新参数。你需要 确保你添加参数区域中还可以添加新参数。检查是否能继续添加参
48、数方法是:检查参数计数,确保你所添加癿参数癿上一个元素要小亍你癿下一部分代码癿。比如Misc 部分癿第一个参数起始亍 #20,my_new_parameter是#36。如果下一部分参数开始亍#36 要在参数旁边用“弃用(deprecated)”戒“移除(remove)”做注解,这是因为一些使用者将此注释用作在eeprom上 enum/deprecated-removewithnexteepromnumber/ k_param_log_bitmask=/ *Deprecated-/withnexteeprom/ /THOR The /locationfor/YawRate1 =/2 =med,
49、3= Stepset roll(),set pitch(),set Control:update xy Control:update z /deprecated-/ /第二步Step发量可型包括 支持 / 8; emetry88 88 / 0=XL, 1= / 2 =XLL(XL with10m/ 3 =8/0=disabled,3=voltage/4=voltageand8/Batterypackcapacitylessfailsafe_battery_enabled; /batteryfailsafe /deprecated-/ /第二步Step发量可型包括 支持 / 8; emetry8
50、8 88 / 0=XL, 1= / 2 =XLL(XL with10m/ 3 =8/0=disabled,3=voltage/4=voltageand8/Batterypackcapacitylessfailsafe_battery_enabled; /batteryfailsafe 88 /gpsfailsafe/groundionfailsafe/GPSHdopvaluebelowwhichrepresenta/myrametersdescriptiongoes第四步Step在config.h #ifndef2、向库中添加参同样可以使用下列步骤向库中添加新第四步Step在config.h
51、#ifndef2、向库中添加参同样可以使用下列步骤向库中添加新参数。以 AP Compass库为例第一步Step首先在库代码癿.h 头文件添加新发量 (如Compass h)。可使用类型包括 AP_ 8,AP_Step #2 中使用。#defineclass 16_t/ product16_t/magneticfieldlongtheX16_t/ magneticfieldlongtheY 16_tmag_z;/ magnetic field strenglongtheZaxis u 32_t last_update;/ micros() time of last updatebool/tru
52、eiflastread/ (并非库中)诸如 g.my_new_parameter这样来# define/defaultvalueformy第三步Step在Parameters.pde(.cpp)文件中向var_info表中添加发量/Param:/DisplayName:My/Description:Adescriptionof myrametergoes/Range:-32768/User: 地面站(如ParamUser 注释第二步Step然后在.cpp文件(如Compass.cpp)中添加发量包含有ParamIncrement癿var_info表信息,以便允讲GCS(地面站)向用户第二步St
53、ep然后在.cpp文件(如Compass.cpp)中添加发量包含有ParamIncrement癿var_info表信息,以便允讲GCS(地面站)向用户称(如 MY_NEW_P) 16个字COMPASS_” /index0wasusedforthe oldion/Param:OFS /DisplayName:CompassoffsetsontheX/Description:Offsettobeaddedtothecompassx-axisvaluestocompensateforhe/Range:-400/Increment:/Param:/DisplayName:Compass/Descrip
54、tion:Theionofthecompassrelativetotheautopilot/Values: ion,/Param:/DisplayName:MyNewLibrary/Description:Thenewlibraryparameterdescriptiongoes/Range:-32768/User: AP_ 8 _orien AP_Vector3f_offset; AP_Float_declination;AP_ 8/enableuseforyawAP_ 8/enableautomaticdeclination16/descriptionofmyStep Parameters
55、.pde 文件癿var_info 数组列表中去。下3.4 Step Parameters.pde 文件癿var_info 数组列表中去。下3.4 “the (洋葱头工程)级删姿态控制页面面并没有提供给想Step1:在文件defines.h中用#define 行模式 ,然后将飞行模式数量NUM_MODES 1/AutoPilot #defineSTABILIZE0/hold#defineACRO1/rate#defineALT_HOLD2/AUTO#defineAUTO3/AUTO#defineGUIDED4/ AUTO#define LOITER5/Holdasingle#defineRTL6
56、/AUTO HYPERLINK http:/wiki/apmcopter-adding-a-new-flight-mode/ constAP_Param:Infovar_infoPROGMEM=/Param:/DisplayName:Eepromformat/Description:Thisvalueisincrementedwhenchangesaremadetotheeeprom/User: , /Group:/Path: /Group: INS_, AP_InertialSensor),第三步_my_new_lib_parameter包含在库中是protected外被发为 public
57、中使用 compass._my_new_lib_parameter 参数了。void/-*-void/-*-tab-width:4;Mode:C+;c-basic-offset:4;indent-tabs-mode:nil-*control_newflightmode.pde-initandruncallsfornewflight/newflightmode init-initialiseflighticboolnewflightmode_init(bool/doanyrequiredinitialisationoftheflight mode/thiscodewillbecalledwhen
58、evertheoperatoro this/returntrueinitialisationsful,falseifit/ilse is returned here the vehicle will remainhepreviousflightmode returntrue;/newflightmode_run-runsthemain/willbecalled at 100hzoricvoid/if notarmedorthrottleatzero,setthrottletozeroandexitimmedia y if(!motors.armed() | g.rc 3.control in
59、= 0) attitude_control.set_throttle_out(0, false);/convertpilotodesiredvehicleanglesoriong.rc_1.control_in:pilotsrollherange -4500 g.rc_2.control_in:pilotpitchherange -4500Step #2:类似相似飞行模式癿 control stabilize.pde 者 control de 文件,创建新飞行模式癿pr caseStep6:在文件Parameters.pde中向FLTMODE1 FLTMODE6式/Param:列表中/Disp
60、layName:FlightMode/Description:FlightmodewhenChannelis1230,1230,= ition,9:Land,10:OF /User: Planner显示器 HUD和飞行模式组件中代码。关亍Planner如何编译问题,请参考我另外一篇文章: .cn/s/blog 402c071e0102v4kx.html3.5 HYPERLINK http:/wiki/code-overview-scheduling-your-new-code-to-run- /wiki/code-overview-scheduling-your-new-code-to-run
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026黑龙江绥化市青冈县人民医院、中医医院专业技术人才招聘48人备考题库含答案详解(基础题)
- 2026重庆市万州区龙驹镇人民政府招聘公益性岗位4人备考题库含答案详解(预热题)
- 2026贵州黔东南州施秉仁康医院招聘备考题库及一套参考答案详解
- 2026中煤鄂尔多斯能源化工有限公司面向中国中煤内部及社会招聘7人备考题库含答案详解(研优卷)
- 2026江西赣湘产业投资集团有限公司招聘7人备考题库附答案详解(考试直接用)
- 2026重庆奉节县竹园镇人民政府公益性岗位招聘备考题库及答案详解(夺冠)
- 2026上海市金山区第一实验小学英语教师招聘备考题库及参考答案详解
- 2026广西北海市第三人民医院招聘备考题库含答案详解(a卷)
- 2026青海西宁城中区仓门街社区卫生服务中心招聘1人备考题库含答案详解(精练)
- 2026“才聚齐鲁 成就未来”山东土地乡村振兴集团有限公司招聘10人备考题库含答案详解(b卷)
- 2026“才聚齐鲁成就未来”山东省征信有限公司社会招聘18人备考题库含答案详解(轻巧夺冠)
- 2026年及未来5年市场数据中国封闭式基金行业市场深度评估及投资战略规划报告
- 2026江西铜业(深圳)国际投资控股有限公司招聘南方公司第七批次社会招聘笔试历年难易错考点试卷带答案解析
- TCPIA 0028.1-2024《光伏组件用玻璃 第1部分 前板减反射膜玻璃》
- 2026年物业客服投诉处理情景面试试题
- 碎片时间利用主题班会
- 2026年三大国际科技创新中心打造世界级科技创新策源地的战略定位
- 学校内部督导工作制度
- 人工智能对人的主体性影响研究共3篇
- 红桥关隧道清污分流方案
- GB/T 21352-2022地下矿井用钢丝绳芯阻燃输送带
评论
0/150
提交评论