Ardupilot、硬件、代码框架、编译、RTOS、线程、任务调度串起来讲一讲

文章讲述了在自动驾驶系统Ardupilot中,如何利用ChibiOS这样的实时操作系统进行任务和线程管理。任务、线程和进程的概念被阐述,Pixhawk使用ChibiOS运行,而Ardupilot将自动驾驶功能拆分成多个任务,每个任务对应一个线程,通过Copter.cpp等代码实现任务调度,确保不同子功能如姿态控制、卡尔曼滤波等协同工作。
摘要由CSDN通过智能技术生成

前言

啊对对对

几点要点

  • 不同的硬件运行不同的操作系统,如pixhawk运行了ChibiOs,树莓派运行了Linux
  • 操作系统执行了任务调度
  • 什么是任务?什么是线程?什么是进程?任务即线程线程即任务,进程=n个线程的集合,线程是进程中最小的执行单元;
  • 将自动驾驶功能拆解成各个子模块功能,这些子模块功能则可以成为各个任务,即一个大功能拆成多个小功能,完成这些小功能都需要进行代码的循环执行即死循环,因此要把实现这些小功能的代码创建成对应的线程并进行任务调度(线程调度);
  • 在操作系统中,可以将需要进行死循环的程序代码创建成一个或多个线程,此时线程函数不会有返回值,需要手动退出线程;当然也可以将普通的代码即没有死循环操作的代码创建成线程,此时程序执行完线程自动退出。
  • 指定硬件平台并编译代码时,整个Ardupilot会被编译成几个重要的部分或称模块:
    (1)实时操作系统RTOS,以Pixhakw为例则是ChibiOS,Ardupilot中可以找到ChiBiOS的源码:ardupilot\modules\ChibiOS。
    (2)基于(1)中操作系统的可执行应用程序,如Copter.cpp中的代码和Example中的代码,操作系统在执行这些应用程序时会为他们创建对应的线程,查看Copter.cpp中的代码可以发现,它的启动了其他任务即创建了一些线程,这些线程一起实现了自动驾驶的大功能,这些线程包络:姿态控制、位姿结算、卡尔曼滤波、电机控制、遥控器信号接收等多个独立子功能,实现这些功能的代码已经在编译前被指定为编译的依赖项,即已经被编译成可以行程序,因为给一段代码创建一个对应线程的前提是该段代码已经被编程为可执行程序!!
    Copter.cpp:
const AP_Scheduler::Task Copter::scheduler_tasks[] = {
	......
    FAST_TASK(check_ekf_reset),
    FAST_TASK(update_flight_mode),
    FAST_TASK(update_home_from_EKF),
    SCHED_TASK(update_batt_compass,   10,    120, 15),
    SCHED_TASK_CLASS(RC_Channels, (RC_Channels*)&copter.g2.rc_channels, read_aux_all,    10,  50,  18),
    SCHED_TASK(update_altitude,       10,    100,  42),
    SCHED_TASK(run_nav_updates,       50,    100,  45),
    SCHED_TASK(update_throttle_hover,100,     90,  48),
    SCHED_TASK(one_hz_loop,            1,    100,  81),
    SCHED_TASK(ekf_check,             10,     75,  84),
    SCHED_TASK(check_vibration,       10,     50,  87),
    SCHED_TASK(gpsglitch_check,       10,     50,  90),
    SCHED_TASK(takeoff_check,         50,     50,  91),
	......
};

(3)文件,一些如txt或其他的文件也可以被编译成符合(1)中操作系统的文件系统的文件,如rc.APM就是这个原理。
(4)其他??待补充!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值