PX4源码分析以及思路随笔1..docx

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PX4源码分析以及思路随笔1.

PX4源码分析,以及思路随笔。目录:1.0 环境安装1.1 roll pitch yaw2.1 loop()3.1 fastloop()3.1 .1 read_AHRS() ins.update()3.1.2 rate_controller_run() _motors.set_roll() (嵌套了rate_bf_to_motor_roll)3.1.3 motors_output() update_throttle_filter() update_battery_resistance() update_lift_max_from_batt_voltage() output_logic() output_armed_stabilizing()1.0环境安装首先安装px4_toolchain_installer_v14_win.exe,并配置好java环境(安装jdk,32位)。安装GitHub网站:/dev/docs/building-px4-with-make.html若提示失败,在IE浏览器中打开网页,http变为https,不断尝试。克隆程序(需要翻墙),可能多次失败。从C:\px4\toolchain\msys\1.0内的eclipse批处理文件打开eclipse。按照/dev/docs/editing-the-code-with-eclipse.html从第二张图开始。注:第二张图位置为ardupilot的位置。返回目录1.1 ROLL YAW PITCH/yuzhongchun/article/details航空中,pitch, yaw, roll如图2所示。pitch是围绕X轴旋转,也叫做俯仰角,如图3所示。yaw是围绕Y轴旋转,也叫偏航角,如图4所示。roll是围绕Z轴旋转,也叫翻滚角,如图5所示。返回目录2.1 loop函数:Setup各种初始化,先忽略。2.初始定义第一个是函数名,第二个单位为赫兹为过多少时间调用一次,第三个单位为微秒,即为最大花费时间。constAP_Scheduler::TaskCopter::scheduler_tasks[] = { SCHED_TASK(rc_loop, 100, 130), /* 控制角 */ SCHED_TASK(throttle_loop, 50, 75), /*油门控制*/ SCHED_TASK(update_GPS, 50, 200), /* GPS更新*/3.从Loop()开始。 (1)等待数据ins.wait_for_sample();?我认为ins是 Inertial Sensor,也就是指惯性传感器。voidAP_InertialSensor::wait_for_sample(void)uint32_t timer = micros(); (2)计算最大循环时间 。perf_info_check_loop_time(timer - fast_loopTimer); 检查循环时间被PI Loops使用??G_Dt = (float)(timer - fast_loopTimer) / 1000000.0f;fast_loopTimer = timer; 记录当前循环时间mainLoop_count++; 主要循环的故障检测 (3)快速循环,主要的循环,重要的一步!!!!!!!!!!!!因此首选需主要研究此函数!fast_loop(); (4)任务调度scheduler.tick(); 告诉调度程序,一个流程已经走完??uint32_t time_available = (timer + MAIN_LOOP_MICROS) - micros();任务周期scheduler.run(time_available);任务调度返回目录3.1 fastloop()函数 Fastloop,最关键的循环(400hz),下面对每个函数进行工作的分析。1.更新传感器并更新姿态的函数read_AHRS();2.进行角速度PID运算的函数attitude_control.rate_controller_run();3.直升机框架判断 (HELI_FRAME)#if FRAME_CONFIG == HELI_FRAME update_heli_control_dynamics();#endif//HELI_FRAME4.输出电机PWM值的函数motors_output();5.惯性导航// InertialNavread_in

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档