Contoh Simulasi LQR pada Matlab


Jika ingin memahami LQR lebih lanjut, sebaiknya melakukan sebuah simulasi LQR baik dalam Matlab ataupun tools-tools engineering lainnya. Saya akan memperlihatkan contoh simulasi LQR pada Matlab dengan sebuah model plant yang sederhana.

Model plant yang cukup populer adalah “Inverted Pendulum”. Inverted pendulum adalah sebuah pendulum yang terdiri dari sebuah batang dan diletakan terbalik (engselnya berada di bawah dan ujung batang di atas). Walaupun terlihat sederhana, inverted pendulum merupakan pemodelan dari peluncuran roket luar angkasa.

Persamaan inverted pendulum yang sudah dilinearisasi adalah:

M l d²θ/dt² = (M+m)gθ – u

M d²x/dt²= u – mgθ

Dan state space-nya menjadi:

Output yang ingin dibuat menjadi nol adalah sudut pendulum θ dan posisi pendulum x. Kriteria ini relevan dengan peluncuran roket, yakni kita menginginkan roket kita tetap mengarah tegak ke atas dan posisinya tetap pada trajektori awal. Jadi, persamaan output state space-nya:



Dalam simulasi ini, parameter-parameter M, m, g, dan l diberi nilai:

M = 1 kg

m = 100 g = 0.1 kg

l = 1 m;

g = 9.8 m/s²

Kemudian, persamaan state space dibangun di matlab dan disimulasikan dengan simulink. Simulasi dilakukan dengan memberi kondisi awal θ = 10°= π/18 rad. Kondisi ini bisa merepresentasikan keadaan ketika roket agak miring sedikit karena gangguan dari luar seperti angin, atau tekanan udara, atau turbulensi. LQR kemudian akan bekerja untuk mengembalikan arah roket kembali ke atas (θ = 0).

Oops, jangan lupa. Gain feedback LQR harus dibuat juga. Diawali dengan menentukan matrix R dan Q, dan menggunakan aturan Bryson. Karena model matematis ini dibuat berdasarkan linearisasi pada θ = 0, maka sudut pendulum tidak boleh melewati kira-kira 10°. Jadi nilai max θ yang diperbolehkan adalah 10° = π/18 rad. Kemudian posisi pendulum misalkan kita batasi hingga 0.1 m dan input u (gaya yang diberikan pada kereta M) dibatasi pada 10 N. Jadi R dan Q menjadi:

Lalu, gain feedback dapat dihitung dengan menyelesaikan persamaan Ricatti melalui fungsi are atau care dalam matlab. Kode m-file untuk simulasi dapat diperoleh di sini.  Setelah itu, simulasi bisa dilakukan dengan simulink dan berikut hasilnya:

Bisa dilihat bahwa sudut θ diawali pada nilai π/18 ≈ 0.1745 dan posisi x = 0. Kemudian LQR mengembalikan posisi θ = 0. Nilai θ dan posisi x sudah sesuai dengan batasannya θmax = 10° dan xmax = 1 m, tetapi nilai u jauh melewati batasan umax = 10 N. Nilai u terlihat mencapai 60 N pada awal kinerja sistem. Hal ini berarti desain harus diulang dengan mengubah matrix R dan Q lagi, dan pengubahannya dilakukan secara trial and error.

Secara umum LQR dikatakan berhasil mengendalikan inverted pendulum. Pendulum bisa dikendalikan ke posisi seimbangnya/menghadap ke atas. Bila diperhatikan, sistem ini tidak memiliki input reference, jadi kita tidak dapat memberikan input ke sistem. Sistem hanya bekerja untuk meregulasi dirinya sendiri dari kondisi tertentu. LQR sebenarnya bisa diaplikasikan dengan adanya input reference, dan akan dipaparkan pada artikel selanjutnya.

Referensi:

Ogata, Katsuhiko. 2002. Modern Control Engineering, 4th Edition. Upper Saddle River NJ: Prentice-Hall, Inc.

About Junot D. Ojong

Author is a control systems engineer at a private company in Jakarta.
This entry was posted in Ah, teori! and tagged , , , , , , , , , , , , , . Bookmark the permalink.

12 Responses to Contoh Simulasi LQR pada Matlab

  1. Khairul says:

    Hello sir..I’m student from Malaysia.I have to complete my last year project in order to grad from my university. My project is Active Sway Control of a Gantry Crane System (Hardware Implementation and Simulation using LQR Controller). I’m just using single pendulum(not inverted pendulum)The problem is, I dont know how to design the block diagram for the controller. Can you help me?Please..I’m using SIMtool for the hardware implementation.I have construct a few block diagram but still dont have any progress..

  2. mas, saya punya tugas matlab.
    salah satu contoh tema dari senior saya adalah “PID pada Motor DC”.
    Bisa kasi’ saran gak mas, tema yg bagus tp tidak begitu rumit ?
    Terima kasih.

    • Hmm tugas simulasi matlab ya?

      Dulu saya juga pernah dapat tugas seperti ini. Kesulitannya itu sebenarnya bukan mencari tema yang menarik.

      Yang paling sulit itu adalah mencari model dari tema yang kita pakai. Bisa jadi kita sudah menemukan tema, tapi model/fungsi transfer plant kita sulit ditemukan. Akhirnya malah tugasnya tidak bisa dikerjakan.

      Sebaiknya kamu browsing2 dulu saja contoh model/fungsi transfer LTI. Dari model2 itu, baru kamu pilih deh yang paling menarik buat kamu.

      Pastikan juga model yang kamu temukan itu model linear, bukan nonlinear.

  3. narto says:

    thank mz sharing ilmunya…. sya kurang jelas di simulinknya.. apa ada file simulinknya mz… klo boleh sekalian di pos mz..

  4. ara says:

    trima ksh sharingnya.
    ada bbrp yg ingin ditanyakan yg msh saya tdk mengerti:
    1. pd contoh tsb, matriks Q nya kok orde 2, bukan orde 4. karena matriks state nya orde 4. Pd beberapa literatur, saya menemukan orde matriks Q adalah menyesuaikan dgn state nya
    2. pd matriks Q tsb, benarkah keduanya 18/pi (brarti keduanya unt theta maks). bukannya yg satu untuk posisi x max yaitu 0.1, sehingga harusnya adalah 1/0.1
    3. bgmnkah penjelasan secara aplikasi real (bukan simulasi), unt menerangkan pemberian matriks feedback K. Soalnya kalo dipikir, K itu hanya berupa matriks saja, shg cr menerapkannya bgmn
    4. Pd coding matlab, unt mencari solusi pers. Riccati menggunakan fungsi “are” , yaitu :
    P=are(A,B*inv(R)*B’,C’*Q*C), drmn mendapat rumusan tsb. krn syntax dr MATLAB hanya
    P=are(A,B,C)
    trimaksh sebelumnya atas tanggapannya.

    Btw, bskah saya dikirimi file simulinknya. Email saya : behapalaja@gmail.com
    Thx…

    • 1. pd contoh tsb, matriks Q nya kok orde 2, bukan orde 4. karena matriks state nya orde 4. Pd beberapa literatur, saya menemukan orde matriks Q adalah menyesuaikan dgn state nya.

      Memang betul pada literatur lain ada yang menyebutkan bahwa Q mengikuti dimensi state. Tetapi itu jika LQR tersebut ditujukan untuk mengstabilkan state-nya. LQR yang saya tuliskan di artikel ini adalah bertujuan mengstabilkan outputnya. Jadi, matrix Q mengikuti dimensi output (dalam contoh ini 2×2, karena memiliki 2 output).

      2. pd matriks Q tsb, benarkah keduanya 18/pi (brarti keduanya unt theta maks). bukannya yg satu untuk posisi x max yaitu 0.1, sehingga harusnya adalah 1/0.1

      Maaf, ada kesalahan ketik di situ. Benar sekali yang satu lagi harusnya posisi x max, yakni harusnya 1/0.1. Terima kasih atas koreksinya.😀

      3. bgmnkah penjelasan secara aplikasi real (bukan simulasi), unt menerangkan pemberian matriks feedback K. Soalnya kalo dipikir, K itu hanya berupa matriks saja, shg cr menerapkannya bgmn

      Saya kira aplikasi realnya adalah kita bisa menerapkan gain K ke bacaan sensor. Jadi anggap saja di contoh sistem di atas, kita memiliki sensor sudut pendulum dan posisi kereta. Kita bisa mengkalikan bacaan sensor dengan K itu, lalu hasilkan digunakan untuk mengatur besaran putar motor yang menggerakan kereta.

      4. Pd coding matlab, unt mencari solusi pers. Riccati menggunakan fungsi “are” , yaitu :
      P=are(A,B*inv(R)*B’,C’*Q*C), drmn mendapat rumusan tsb. krn syntax dr MATLAB hanya
      P=are(A,B,C)

      Di sini karena persamaan ricatti yang ingin kita selesaikan adalah
      A’P + PA – (PB) inv(R) (B’P) + C’QC = 0
      bukan
      A’*X + X*A – X*B*X + C = 0 seperti pada matlab help.
      Maka itu fungsi are() kita masukan argumen (A,B*inv(R)*B’,C’*Q*C)

      Terima kasih atas pertanyaan dan masukannya.

      • ara says:

        trima ksh byk mas, atas penjelasannya…
        mas, bs minta tolong dikirimkan file simulinknya. saya tertarik mempelajarinya
        untuk tambahan pengetahuan bg saya..

  5. semit says:

    Mas ada simulasi simuling untuk pengarutan kecepatan motor induksi 3 phasa dnengan metode LQR?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s