HOME
PDF

Pole assignment state feedback design example using Mathematica

Nasser M. Abbasi
Nov 29, 2014

Detailed step by step showing how to design a gain vector K for single input system in state space such that the system has desired pole locations.

Define the A and B matrices for state space  x’=Ax+Bu

index_1.gif

index_2.png

index_3.gif

index_4.png

convert to controllable form (we call this the target system)

index_5.gif

index_6.png

index_7.png

index_8.png

Obtain controllability matrix for original system

index_9.gif

index_10.png

Obtain controllability matrix for target system

index_11.gif

index_12.png

Obtain T, the transformation matrix

index_13.png

index_14.png

Verify T

index_15.png

index_16.png

define the gains as unknowns. These are what we will determine using pole assignment

index_17.png

generate the closed loop state feedback A matrix using the traget A,B system

index_18.gif

index_19.png

Find the CharacteristicPolynomial of the above matrix

index_20.png

index_21.png

Extract the coefficients so we can compare them to the design polynomial below

index_22.png

index_23.png

Generate the design polynomial from the desired pole locations

index_24.gif

index_25.png

Extract the coefficients of the design polynomial

index_26.png

index_27.png

Solve for the gains by comparing coefficients of design polynomial with the closed loop polynomial

index_28.png

index_29.png

Convert the gain vector to original space using the transformation T found above

index_30.png

index_31.png

verify the original space now has designed eigenvalues with this gain vector

index_32.png

index_33.png

Using packaged function for design

The above design is implemented in my package now using the function nma`getStateGainVector. Here are examples using it

index_34.png

index_35.gif

index_36.png

Another example

index_37.gif

index_38.png

Turn on the flag to see the steps made in the design

index_39.png

index_40.png

index_41.png

index_42.png

index_43.png

index_44.png

index_45.png

index_46.png

index_47.png

index_48.png

index_49.png

index_50.png

Created with the Wolfram Language