Skip to main content
Version: 1.5.0

High-level manager nodes within the MRS

ControlManager

  • integrates the control and tracking part of the MRS UAV pipeline
  • dynamically loads feedback controllers and reference trackers plugins
  • subscribes to the estimated UAV state and provides it to all loaded trackers and controllers
  • runs the iteration of the currently active controller and tracker with every received state estimator message
  • outputs the attitude control command to the HW API
  • provides constraints to trackers through a common interface
  • allows in-mid-air switching of feedback controllers and reference trackers
  • provides common services for
    • setting a reference
    • setting a trajectory reference
    • human-callable goto, goto relative, goto altitude, set heading and set relative heading
    • hover
    • emergency hover after which most of the provided services are disabled
    • emergency landing - switches to emergency controller and tracker and lands as fast as possible
    • failsafe landing - feedforward landing, only effective in small heights and low speeds
    • escalating failsafe - the measures escalate when calling it repeatedly
      1. emergency hover
      2. emergency landing
      3. failsafe landing
      4. disarm
    • transforming references and vectors between frames
    • verifying that references are inside of the allowed safety area
  • provides safety routines for checking
    • position control error
    • tilt control error
    • yaw control error
    • estimator innovation error
    • missing estimator data
    • the validity of desired references
  • allows controlling the UAV using a ROS-compatible joystick
  • allows controlling the UAV using RC through our pipeline
    • the RC channels are picked up from HW API
    • a relative reference is generated for the active tracker
    • escalating failsafe can be triggered by a dedicated switch
  • provides an obstacle bumper feature
    • has priority over user-provided references
    • for slow-flight only

UavManager

  • handles takeoff from the high-level
    • checks for pre-condition which might result in takeoff failure
    • switches to the right tracker and controller for the takeoff
    • triggers takeoff
    • switches to the right tracker and controller after the takeoff
  • handles a regular landing from the high-level
    • descends to a landing height (~2.0 m) using the currently active tracker and controller, given the current constraints
    • switches to the right tracker and controller for the landing
    • triggers the landing
    • monitors the thrust output and decides when the UAV touched the ground
  • provides a land home feature
    • the UAV flies in the current altitude to its takeoff location and lands
  • provides a land there feature
    • the UAV flies to the desired position at which it lands
  • monitors exceeding the maximum altitude
    • triggers a priority descend if it exceeds the safety area ceiling
  • monitors exceeding the maximum thrust
    • triggers a landing if it exceeds a limit
  • provides a flight timer
    • triggers a landing if it exceeds a limit

ConstraintManager

  • stores and provides sets of dynamics constraints for the trackers
  • allows mapping each set of constraints to only some state estimators
  • automatically switches to a fallback set of constraints if the current ones are not allowed
  • provides a service for switching to a desired set of constraints

GainManager

  • stores and provides sets of gains for the Se3Controller
  • allows mapping each set of gains to only some state estimators
  • automatically switches to a fallback set of gains if the current ones are not allowed
  • provides a service for switching to a desired set of gains

EstimationManager

  • provides the state estimation of the UAV
  • dynamically loads default state estimator or custom user-made plugins
  • publishes following topics:
    • the uav_state topic that is used for feedback control in ControlManager
      • velocities in uav_state are in the headed/frame_id frame!!
    • visualizable odom topic
      • velocities in odom are in the child_frame_id frame!! (follows the ROS convention for nav_msgs/Odometry msg)
    • current UAV height above terrain on topic height_agl (if available)
    • maximum height above terrain that the UAV can fly in (based on the current estimator used for control)
  • provides common services for
    • switching of state estimator currently used in control feedback
  • checks health of current state estimator and switches to a healthy one in case current estimator becomes unhealthy
  • if no estimator is healthy, calls failsafe landing

TransformManager

  • provides the following default TFs from the fcu frame (can be turned off/on or renamed by custom configs):
    • fcu_untilted_origin, world_origin, local_origin, stable_origin, fixed_origin, utm_origin, mapping_origin_tf (if a SLAM algorithm is running)
  • publishes the delay of odometry produced by a SLAM algorithm (if available) on topic map_delay
  • additionally can provide custom TFs from nav_msgs/Odometry topics by adding them to the tf_sources array in custom config
    • the msg can also be republished in another frame by adding the frame_id to the republish_in_frames array