# What is the Control mixer block that is usually found in control schemes?

There is usually a control mixer block in control schemes in robotics. What is it and what is the functionality and where can I read more about it.

Reference to the paper: https://giuseppesilano.net/publications/smc19.pdf

You've got the outputs of the control loops that are trying to maintain altitude, roll, pitch, and yaw, but you need to have a speed reference for the motors.

The control mixer just takes the outputs for each loop and combines them to get the appropriate speed reference.

For example, if your quadcopter were arranged in an X shape, then maybe increasing speed in motors 1 and 2 make positive roll and increasing speed in 3 and 4 make negative roll. Increasing speed in all motors makes positive altitude, so you might get something like:

motor1 = 0.25*thrust + 0.25*roll;
motor2 = 0.25*thrust + 0.25*roll;
motor3 = 0.25*thrust - 0.25*roll;
motor4 = 0.25*thrust - 0.25*roll;


You'd expand that more as appropriate for pitch and yaw, like 1 and 4 versus 2 and 3 for pitch and 1 and 3 versus 2 and 4 for yaw, to get something like:

motor1 = 0.25*thrust + 0.25*roll + 0.25*pitch + 0.25*yaw;
motor2 = 0.25*thrust + 0.25*roll - 0.25*pitch - 0.25*yaw;
motor3 = 0.25*thrust - 0.25*roll - 0.25*pitch + 0.25*yaw;
motor4 = 0.25*thrust - 0.25*roll + 0.25*pitch - 0.25*yaw;


If your quadcopter were arranged in a + shape instead, then maybe 1 and 3 are the only motors that do anything for roll, 2 and 4 are the only motors that do anything for pitch, but then all motors do thrust and yaw, so you might wind up with something like the below instead:

motor1 = 0.25*thrust + 0.5*roll  + 0.25*yaw;
motor2 = 0.25*thrust - 0.5*pitch - 0.25*yaw;
motor3 = 0.25*thrust - 0.5*roll  + 0.25*yaw;
motor4 = 0.25*thrust + 0.5*pitch - 0.25*yaw;


... and so on. The "control mixer" just combines and maps the control signals to the appropriate motors.