From 494f7e4efb6b0f3f2202a654563cc18aeded01e2 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 9 Jul 2017 21:36:03 +0200 Subject: [PATCH] Properly document scheduling priorities --- src/modules/systemlib/scheduling_priorities.h | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/src/modules/systemlib/scheduling_priorities.h b/src/modules/systemlib/scheduling_priorities.h index 56e6dd9190..365fe82fd8 100644 --- a/src/modules/systemlib/scheduling_priorities.h +++ b/src/modules/systemlib/scheduling_priorities.h @@ -35,18 +35,57 @@ #include -/* SCHED_PRIORITY_MAX */ +/** + * @file scheduling_priorities.h + * + * Default schedulign priorities for standard system components + */ + +// SCHED_PRIORITY_MAX + +// Fast drivers - they need to run as quickly as possible to minimize control +// latency. #define SCHED_PRIORITY_FAST_DRIVER (SCHED_PRIORITY_MAX - 0) + +// Attitude controllers typically are in a blocking wait on driver data +// they should be the first to run on an update, using the current sensor +// data and the *previous* attitude reference from the position controller +// which typically runs at a slower rate #define SCHED_PRIORITY_ATTITUDE_CONTROL (SCHED_PRIORITY_MAX - 4) + +// Actuator outputs should run before right after the attitude controller +// updated +#define SCHED_PRIORITY_ACTUATOR_OUTPUTS (SCHED_PRIORITY_MAX - 4) + +// Position controllers typically are in a blocking wait on estimator data +// so when new sensor data is available they will run last. Keeping them +// on a high priority ensures that they are the first process to be run +// when the estimator updates. #define SCHED_PRIORITY_POSITION_CONTROL (SCHED_PRIORITY_MAX - 5) + +// Estimators should run after the attitude controller but before anything +// else in the system. They wait on sensor data which is either coming +// from the sensor hub or from a driver. Keeping this class at a higher +// priority ensures that the estimator runs first if it can, but will +// wait for the sensor hub if its data is coming from it. #define SCHED_PRIORITY_ESTIMATOR (SCHED_PRIORITY_MAX - 5) + +// The sensor hub conditions sensor data. It is not the fastest component +// in the controller chain, but provides easy-to-use data to the more +// complex downstream consumers #define SCHED_PRIORITY_SENSOR_HUB (SCHED_PRIORITY_MAX - 6) + +// The log capture (which stores log data into RAM) should run faster +// than other components, but should not run before the control pipeline #define SCHED_PRIORITY_LOG_CAPTURE (SCHED_PRIORITY_MAX - 10) -#define SCHED_PRIORITY_ACTUATOR_OUTPUTS (SCHED_PRIORITY_MAX - 15) -#define SCHED_PRIORITY_POSITION_CONTROL (SCHED_PRIORITY_MAX - 25) + +// Slow drivers should run at a rate where they do not impact the overall +// system execution #define SCHED_PRIORITY_SLOW_DRIVER (SCHED_PRIORITY_MAX - 35) + +// The navigation system needs to execute regularly but has no realtime needs #define SCHED_PRIORITY_NAVIGATION (SCHED_PRIORITY_DEFAULT + 5) -/* SCHED_PRIORITY_DEFAULT */ +// SCHED_PRIORITY_DEFAULT #define SCHED_PRIORITY_LOG_WRITER (SCHED_PRIORITY_DEFAULT - 10) #define SCHED_PRIORITY_PARAMS (SCHED_PRIORITY_DEFAULT - 15) /* SCHED_PRIORITY_IDLE */