Inverted Pendulum on a Cart [Control Bootcamp] - https://www.youtube.com/watch?v=qjhAAQexzLg Welcome back. So now we're actually going to start coding up real examples in Matlab, seeing if they're controllable, designing controllers to stabilize the dynamics. So this should be really fun and really powerful. Okay? We did a lot of math to understand why and when and how to control things, but now the rubber is going to hit the road and we're actually going to see how easy it is to really control a system in Matlab. Okay? So one of the systems I really like to work with is imagine that I have an inverted pendulum. But that inverted pendulum is sitting on top of a cart, okay? And so I'm going to have my inverted pendulum, but now that pendulum is on a cart and I can move that cart around. So for some reason, this has always felt much more physical to me than just, you know, having a pendulum with some torque control on the bottom. That seems too easy. This is a little more interesting, right? I have some cart, and I can move that cart around, and I'm trying to stabilize this inverted pendulum. Okay, so let's think about what numbers we need. Well, first of all, we need to define the state of the system, okay? And so the state of the system is given by the position of this cart, we're going to call that x. And the angle of this pendulum arm, we're going to call that theta. So our kind of high dimensional dynamical system state, I'm going to change it up and I'm going to call it a vector y. So this state y dot. Yeah, maybe. I'm not going to call it y because that'll be confusing with the output measurements. Let's keep it x. The vector of states, I'm going to say is this position script x its velocity script x dot theta and theta dot. Okay? And so this is a two degree of freedom system. There's two degrees of freedom x and theta, the position of the cart and the angle of the pendulum. And because it's two degrees of freedom with Newton's second law, I get four coupled odes. Okay? So I essentially have some d dt of x equals some nonlinear function of that vector x. So this is four nonlinear row equations. I'm not going to bore you with the details of how to actually derive these, but you could use something like Euler lagrange equations or Hamilton's equations, and you could get these coupled first order non linear odes. Okay? So this is an honest to goodness nonlinear problem, but we can linearize the system and just intuitively, we know that there are a couple of key fixed points, okay? So the fixed points of the system, fixed points, we're going to have a fixed point corresponding to the pendulum down position. So what we know has to happen is theta has to equal either zero for the pendulum down or PI for the pendulum up. Theta dot has to equal zero. X dot has to equal zero. And if I wrote down all of these equations, you'd see that none of these rates of change actually depend on x itself. And so x is a free variable. And that kind of makes sense, right? It doesn't matter if this thing is here or here or here. If I have the pendulum up or down and there's no velocities, it's a fixed point. So I've got two basic fixed points corresponding to, let's say the theta equals zero case is the pendulum down with the cart fixed, and the theta equals PI is going to be the pendulum up with the cart fixed. Okay? And so if you had the Euler Lagrange equations and you had these fixed points, you could compute the jacobian and you could essentially get, you know, so through d f dx evaluated at a fixed point, you could get a linear system of equations. X dot equals axief plus bu. Okay? And now, I haven't told you what, what u is. This is super important. So u the control input for this system, what we're going to get to control, we're going to say that that u equals a force on the cart in the XT direction. Okay? And this is actually very reasonable. What I can do is I could have like a motor on one of these wheels and I could have some controller. So that I could, if I specified, I want, you know, twice the force, I could give it twice the voltage and make this thing move. Okay? So this is actually very realistic. You could build a cart that would hold this pendulum and drive it around, and you could actuate with force. Okay? And so now what I'm going to do is I'm just going to fire up Matlab and show you I've already cooked up all of these examples. So I have this nice function. So in Matlab, right, I build these right hand side functions. This is my nonlinear ode. It's called cart pend, the cart pendulum system. And it gives me the time derivative given the state. So here it's called y. That's why I wanted to call it y. Sometimes in Matlab, you call these states y. That's just kind of Matlab convention and a couple of other numbers. I just have a bunch of parameters out here. So I say that this little mass has mass. Little m. The cart has mass, big m. This inverted pendulum has a length lithe, we know that gravity pulls down and then there's d, which is essentially some damping term. Okay? So in these equations, there could be some friction, I believe. I mean, the damping to be as opposing the x dot. Okay, so it's a damping on the cart. Maybe this cart has some friction. And I'm assuming the pendulum has a lot less friction. And then finally I have this u. So if I was going to apply a force, you can derive Euler Lagrange or Hamilton's with some forsyth applied. And I'm not going to bore you with all the details. There's going to be a link to this on YouTube, so you can download this code and read through it yourself. But the right hand side, these dynamics are pretty nasty. Okay? This actually takes a long time to derive by hand on pencil and paper for the system. This is the most time consuming part of this whole demo is actually getting this right hand side vector field, right? But I'm not going to bore you with the details. You can see, like if I go on and on, it's a pretty long, nasty expression, okay? And the input, the force enters in the x dot. And the theta dot equations, when you go through Euler Lagrange, that's what you find, okay, no big deal. It's just nonlinear right hand side. And this is relatively easy to simulate the system with or without forcing in MATlab. So I'm going to go up to this function called Sim cartpend. And all I do is I specify some parameters. So I say this is mass one, this is mass. Five. Length is two, gravity is normal, and there's some moderate dissipation on the cart. And in MATLab, I can integrate vector fields using OD 45. So I can integrate this if I set up some time span. So I want to integrate from zero to time ten with this initial condition. So again, this initial condition means x is zero, x dot is zero, theta is PI. So it's up, and theta dot is 0.5. So it starts in the up position, but it's moving to the right, I think, or, you know, in the positive theta direction, maybe it's to the left. But anyway, then I go through and I write this ode 45. I tell it that I want to integrate x, y dot equals this function of y. And I'm going to lock in these parameters and there's zero control. So for right now, we're just going to simulate this thing in free physics with no forcing. Okay. And down here at the bottom, I have a function I've written called drawcartpend. And so, essentially, it just plots a movie of the pendulum. And again, you can download this and see what I did. So let's actually try to run this sim cart pend. Okay, let's hope this runs. And you can see this is basically what you expect to happen. You let this thing go, and it's going to just swing and swing and swing. And eventually, if I integrated it for longer, it would come to rest. Maybe I'll just show you that, because it's pretty easy. I'll integrate it for a little bit longer. Okay. It's gonna go, and it's just gonna keep swinging and swinging and swinging, and eventually, friction will kick in, and it'll kind of come to rest. Okay. And it's only stuck here because I stopped integrating. So that's the system we're gonna control. Okay. We're in a great shape to actually control this system. So what we're going to do, we know the fixed points. I, you know, offline, I computed this jacobian matrix. It was ugly and kind of a mess, and I plugged in these fixed points. So I have linearized equations about the pendulum up condition, and I have linearized conditions about the pendulum down condition. And so what we're going to do is we're going to simulate. We're going to design controllers based on those linearizations and then apply them to the full, honest to goodness nonlinear system. Okay? So the first thing we need to do is get this jacobian. Then we plug in the fixed points in either the pendulum up or pendulum down condition to get this linear system. And then the first thing we need to do is check and see is this controllable. Okay, so that's what we're going to do. Now, I have this code here called pull place cart pend. Okay? And what I've done here is offline. I've essentially cooked up the a matrix and the b matrix for this linearized system of equations. And because the up linearization and the down linearization share so much in common, I decided to have this little switch where if the pendulum is up, the switch is one, and if the pendulum is down, the switch is negative one. And so, essentially, this is the linearized matrix, the a matrix, um, for both conditions. And if I want to go from pendulum up to pendulum down, I just switch this s, this s and this s to negative values. Okay? So this is the a matrix and the b matrix. Now, all I want to do at this point is, first of all, I'm going to run this code. So I'm going to run my, I'm going to run pol. It's going to load the a matrix and the b matrix. Oh, I think that ran the whole thing. So I'm going to load my a matrix and I'm going to look at eigenvalue. So these are the eigenvalues of my a matrix in the pendulum up condition. And notice that one of these eigenvalues is unstable. So that thing is eventually, if it's, if it's epsilon off of vertical, it's going to accelerate away. Now, what's really important is I want to know what is a and b controllable. Okay? So this was something we've been working up for up towards, and it should be really easy to test now. So I'm going to try, first of all, ctrb of a comma b. This will give me that controllability matrix. It's a big matrix. I'm just going to hit enter. You'll see. Right. It's a big matrix. It's a four by four matrix. So if I look at the rank of this CTRB matrix, if this rank is four, my system's controllable. If this rank is not four, the system is not controllable. Okay, so with this a matrix and this b matrix corresponding to force in the x direction of the cartae, because the rank of my controllability matrix is four, I can span all of my state space with this controllability subspace. And that means that I can actually develop a controller to control the system. So what's coming next? This will be in the next video. We know it's controllable. And so what that means is that I can cook up some control law, u equals minus kx so that the closed loop system is x dot equals a minus bkx. And I can develop, I can design k so that the eigenvalues of this are anywhere I want them to be. So what I'm going to do next is I'm going to specify, I want stable eigenvalues. I want to move these eigenvalues into the stable left half plane. So we had that one unstable eigenvalue. I'm going to move it into the stable left half plane with some proportional feedback of x. And just to remember what this diagram looks like, we have our system, in this case, the cart pendulum. We're going to measure the full state x. We're going to feed it back. So u is going to be minus kx. Okay, so we're literally going to say u equals minus this matrix k times the measurements of x. We're going to measure everything and that's going to stabilize the system to have these eigenvalues. So that's what we're going to do next. We're going to use the place command in Matlab to place these eigenvalues and design this matrix k. Then we're going to develop an optimal eigenvalue placement using the linear quadratic regulator or LQR control. So that's coming up next.
카트 위의 역진자 [제어 부트캠프] - https://www.youtube.com/watch?v=qjhAAQexzLg 돌아오신 것을 환영합니다. 이제 Matlab에서 실제 예제를 코딩하여 제어할 수 있는지 확인하고, 역학을 안정화하는 컨트롤러를 설계해 보겠습니다. 정말 재미있고 강력할 겁니다. 알겠어요? 왜, 언제, 어떻게 제어해야 하는지 이해하기 위해 많은 수학을 했지만, 이제 본격적으로 실습을 해보고 Matlab에서 시스템을 제어하는 것이 얼마나 쉬운지 알아보겠습니다. 알겠어요? 제가 정말 좋아하는 시스템 중 하나는 역진자가 있다고 상상하는 것입니다. 하지만 그 역진자는 카트 위에 놓여 있죠, 알겠어요? 그래서 저는 역진자를 사용하게 될 텐데, 이제 그 진자는 카트 위에 있고, 저는 그 카트를 움직일 수 있습니다. 그래서 어떤 이유에서인지, 이게 항상 저에게는 토크 제어가 바닥에 있는 진자보다 훨씬 더 물리적으로 느껴졌습니다. 너무 쉬워 보이거든요. 이게 좀 더 흥미롭지 않나요? 카트가 있고, 그 카트를 이리저리 움직일 수 있고, 이 역진자를 안정시키려고 합니다. 좋아요, 그럼 어떤 숫자가 필요한지 생각해 봅시다. 글쎄요, 우선 시스템의 상태를 정의해야 합니다. 알겠어요? 그래서 시스템의 상태는 이 카트의 위치로 주어지는데, 이걸 x라고 부르죠. 그리고 이 진자 팔의 각도는 세타라고 부르죠. 그래서 우리의 고차원 동적 시스템 상태를 바꿔서 벡터 y라고 부르겠습니다. 그러니까 이 상태 y 점. 네, 그럴 수도 있겠네요. y라고 부르지 않을 거예요. 출력 측정과 혼동될 테니까요. x라고 하죠. 상태 벡터는 이 위치 스크립트 x, 속도 스크립트 x, 점 세타, 세타 점이라고 하죠. 알겠어요? 그리고 이건 2자유도 시스템이에요. 2자유도 x와 세타, 카트의 위치와 진자의 각도가 있어요. 그리고 뉴턴의 제2법칙에 따르면 2자유도이기 때문에 4개의 결합된 ode를 얻게 됩니다. 알겠어요? 그래서 저는 기본적으로 x의 d dt가 벡터 x의 비선형 함수와 같다는 걸 알게 됩니다. 그래서 이건 4개의 비선형 행 방정식이에요. 이걸 실제로 유도하는 방법에 대한 세부 사항으로 여러분을 지루하게 하지는 않겠지만, 오일러 라그랑주 방정식이나 해밀턴 방정식 같은 걸 사용하면 이런 결합된 1차 비선형 ode를 얻을 수 있어요. 알겠어요? 이건 진짜 비선형 문제지만, 시스템을 선형화할 수 있고 직관적으로 핵심 고정점이 몇 개 있다는 걸 알 수 있죠. 알겠어요? 따라서 시스템의 고정점, 고정점은 진자 아래로 향하는 위치에 해당하는 고정점을 갖게 됩니다. 따라서 우리가 알고 있는 것은 진자가 아래로 향하는 경우 세타가 0이거나 진자가 위로 향하는 경우 PI와 같아야 한다는 것입니다. 세타 점은 0과 같아야 합니다. X 점은 0과 같아야 합니다. 그리고 이 모든 방정식을 적으면 이러한 변화율이 실제로 x 자체에 의존하지 않는다는 것을 알 수 있습니다. 따라서 x는 자유 변수입니다. 그리고 그것은 어느 정도 말이 되죠? 이것이 여기 있든 여기 있든 여기 있든 상관없습니다. 진자를 위로 또는 아래로 두고 속도가 없다면 그것은 고정점입니다. 따라서 두 개의 기본 고정점이 있는데, 세타가 0인 경우 진자가 아래로 향하고 카트가 고정되어 있고 세타가 PI인 경우 진자가 위로 향하고 카트가 고정되어 있습니다. 알겠어요? 그리고 만약 오일러 라그랑주 방정식이 있고 고정점이 있다면, 야코비안을 계산할 수 있고, 본질적으로 d f dx를 고정점에서 평가하여 선형 방정식 시스템을 얻을 수 있습니다. X dot은 axief 더하기 bu와 같습니다. 알겠어요? 그리고 지금, 저는 u가 무엇인지 말하지 않았습니다. 이것은 매우 중요합니다. 그래서 u는 이 시스템의 제어 입력이고, 우리가 제어할 것은 u가 XT 방향으로 카트에 작용하는 힘과 같다고 말할 것입니다. 알겠어요? 그리고 이것은 실제로 매우 합리적입니다. 제가 할 수 있는 것은 이 바퀴 중 하나에 모터를 달고 컨트롤러를 갖는 것입니다. 그래서 제가 원하는 것을 지정하면, 알다시피, 두 배의 힘을 주고 이것을 움직이게 할 수 있습니다. 알겠어요? 그래서 이것은 실제로 매우 현실적입니다. 이 진자를 잡고 움직이는 카트를 만들 수 있고, 힘으로 작동시킬 수 있습니다. 알겠어요? 그리고 지금 제가 할 일은 Matlab을 실행해서 이미 이 모든 예제를 만들어 놓았다는 것을 보여드리려고 합니다. 멋진 함수가 있습니다. Matlab에서 오른쪽 함수를 만듭니다. 이게 제 비선형 ode입니다. 카트 펜드, 카트 진자 시스템이라고 합니다. 그리고 상태를 기준으로 시간 미분을 구합니다. 여기서는 y라고 합니다. 그래서 y라고 부르고 싶었던 것입니다. Matlab에서 가끔 이런 상태를 y라고 부릅니다. Matlab 규칙과 몇 가지 다른 숫자일 뿐입니다. 매개변수를 몇 개 가지고 있습니다. 이 작은 질량에 질량이 있다고 말합니다. 작은 m입니다. 카트에는 질량이 있고 큰 m입니다. 이 역진자는 길이가 유연하고 중력이 아래로 끌어당기는 것을 알고 있고 d가 있는데, 이는 본질적으로 감쇠 항입니다. 알겠어요? 이 방정식에서 마찰이 있을 수 있다고 생각합니다. 감쇠가 x점과 반대가 되는 것입니다. 좋아요, 카트에 감쇠가 있습니다. 이 카트에는 마찰이 있을 수 있습니다. 그리고 진자는 마찰이 훨씬 적다고 가정합니다. 그리고 마지막으로 이 u가 있습니다. 제가 힘을 가하려면 오일러 라그랑주나 해밀턴을 유도하고 포사이스를 적용할 수 있습니다. 그리고 모든 세부 사항으로 여러분을 지루하게 하지는 않겠습니다. YouTube에 이 링크가 있을 테니 이 코드를 다운로드하여 직접 읽어보세요. 하지만 오른쪽의 이러한 역학은 꽤 형편없습니다. 알겠어요? 사실 이 시스템을 연필과 종이로 손으로 유도하는 데는 오랜 시간이 걸립니다. 이 전체 데모에서 가장 시간이 많이 걸리는 부분은 실제로 이 오른쪽 벡터장을 구하는 것입니다. 맞죠? 하지만 세부 사항으로 여러분을 지루하게 하지는 않겠습니다. 계속해서 말하면 꽤 길고 형편없는 표현식이라는 것을 알 수 있을 겁니다. 그리고 입력, 힘은 x 점에 들어갑니다. 그리고 세타 점 방정식은 Euler Lagrange를 거치면 찾을 수 있는 것입니다.그렇죠, 별거 아니에요.그냥 비선형 우변일 뿐입니다.그리고 이것은 MATlab에서 강제가 있든 없든 시스템을 시뮬레이션하는 것이 비교적 쉽습니다.그러니 Sim Cartpend라는 함수로 가보겠습니다.그리고 제가 하는 일은 일부 매개변수를 지정하는 것입니다.그래서 이것은 질량 1이고, 이것은 질량 5라고 말합니다.길이는 2이고, 중력은 정상이며, 카트에 약간의 소산이 있습니다.그리고 Matlab에서 OD 45를 사용하여 벡터장을 적분할 수 있습니다.그래서 시간 범위를 설정하면 이것을 적분할 수 있습니다.그래서 이 초기 조건으로 0에서 시간 10까지 적분하고 싶습니다.다시 말해서, 이 초기 조건은 x가 0이고, x 점이 0이고, 세타가 PI라는 것을 의미합니다.그래서 위로 올라가고, 세타 점은 0.5입니다. 그래서 위쪽 위치에서 시작하지만 오른쪽으로 움직이는 것 같아요. 아니면 양의 세타 방향, 왼쪽일 수도 있어요. 어쨌든, 그런 다음 진행해서 이 ode 45를 씁니다. x, y를 적분하고 싶다고 말하고, dot은 y의 이 함수와 같다고 말합니다. 그리고 이 매개변수를 잠그고 제어가 전혀 없습니다. 지금은 강제 없이 자유 물리학에서 이걸 시뮬레이션할 겁니다. 좋아요. 그리고 여기 아래쪽에 drawcartpend라는 함수를 썼습니다. 그래서 기본적으로 진자의 동영상을 그리는 겁니다. 그리고 다시 이걸 다운로드해서 제가 한 일을 볼 수 있습니다. 그럼 이 sim cart pend를 실제로 실행해 봅시다. 좋아요, 이게 실행되기를 바랍니다. 그리고 이게 기본적으로 예상한 대로라는 걸 알 수 있을 겁니다. 이걸 놓아두면 그냥 계속 스윙하고 스윙하고 스윙할 겁니다. 그리고 결국 더 오래 적분하면 멈출 겁니다. 아마 제가 보여드릴까요, 꽤 쉽거든요. 조금 더 적분해 볼게요. 좋아요. 계속 흔들릴 거고, 계속 흔들릴 거고, 결국 마찰이 일어나서 멈출 거예요. 좋아요. 제가 적분을 멈췄기 때문에 여기서 멈췄을 뿐이에요. 그래서 우리가 제어할 시스템은 이거에요. 좋아요. 우리는 이 시스템을 실제로 제어할 수 있는 아주 좋은 상태에 있어요. 그래서 우리가 할 일은 고정점을 아는 거예요. 아시다시피, 오프라인에서 이 야코비안 행렬을 계산했어요. 보기 흉하고 엉망진창이었는데, 이 고정점을 넣었어요. 그래서 진자 상승 조건에 대한 선형화된 방정식이 있고, 진자 하강 조건에 대한 선형화된 조건이 있어요. 그래서 우리가 할 일은 시뮬레이션하는 거예요. 그 선형화에 기반한 컨트롤러를 설계한 다음, 그것을 완전하고 정직하게 말해서 비선형적인 시스템에 적용할 거예요. 좋아요? 따라서 가장 먼저 해야 할 일은 이 야코비안을 구하는 것입니다. 그런 다음 진자 위 또는 진자 아래 조건에 고정점을 대입하여 이 선형 시스템을 구합니다. 그런 다음 가장 먼저 해야 할 일은 이것이 제어 가능한지 확인하는 것입니다. 좋습니다. 그러면 우리가 할 일은 이것입니다. 이제 여기에 pull place cart pend라는 코드가 있습니다. 좋습니다. 그리고 여기서 한 일은 오프라인입니다. 저는 본질적으로 이 선형화된 방정식 시스템에 대한 a 행렬과 b 행렬을 만들었습니다. 그리고 상향 선형화와 하향 선형화가 많은 공통점을 공유하기 때문에 진자가 올라가면 스위치가 1이고 진자가 내려가면 스위치가 음수 1인 작은 스위치를 사용하기로 했습니다. 따라서 본질적으로 이것이 두 조건에 대한 선형화된 행렬, a 행렬입니다. 진자 위에서 진자 아래로 이동하려면 이 s, 이 s, 이 s를 음수 값으로 바꾸기만 하면 됩니다. 좋습니다. 그래서 이것은 a 행렬과 b 행렬입니다. 이제, 이 시점에서 제가 하고 싶은 것은, 우선 이 코드를 실행하는 것입니다. 그래서 저는 pol을 실행할 것입니다. 이것은 a 행렬과 b 행렬을 로드할 것입니다. 오, 제 생각에는 모든 것을 실행했습니다. 그래서 저는 제 a 행렬을 로드하고 고유값을 살펴볼 것입니다. 이것은 진자 상승 조건에서 제 a 행렬의 고유값입니다. 그리고 이 고유값 중 하나가 불안정하다는 것을 알아차리십시오. 그래서 그것은 결국, 만약 그것이 수직에서 엡실론 떨어져 있다면, 그것은 가속될 것입니다. 이제, 정말 중요한 것은 제가 a와 b가 무엇을 제어할 수 있는지 알고 싶다는 것입니다. 알겠어요? 그래서 이것은 우리가 지금까지 작업해 온 것이고, 지금은 정말 쉽게 테스트할 수 있을 것입니다. 그래서 저는 우선 쉼표 b의 ctrb를 시도할 것입니다. 이것은 저에게 그 제어 가능성 행렬을 줄 것입니다. 큰 행렬입니다. 그냥 엔터를 치겠습니다. 보시면 알겠죠. 그렇죠. 큰 행렬입니다. 4x4 행렬입니다. 따라서 이 CTRB 행렬의 랭크를 보면, 이 랭크가 4이면 제 시스템은 제어 가능합니다. 이 랭크가 4가 아니면 시스템은 제어 불가능합니다. 좋습니다. 이 행렬 a와 카르타의 x 방향의 힘에 해당하는 이 b 행렬을 사용하면 제어 가능 행렬의 랭크가 4이므로 이 제어 가능 부분 공간으로 모든 상태 공간을 확장할 수 있습니다. 즉, 실제로 시스템을 제어하는 컨트롤러를 개발할 수 있습니다. 그럼 다음은 무엇일까요? 다음 영상에서 알려드리겠습니다. 제어 가능하다는 것을 알고 있습니다. 즉, 제어 법칙을 만들어낼 수 있습니다. u는 -kx와 같으므로 닫힌 루프 시스템은 x.t는 a -bkx와 같습니다. 그리고 k를 개발하고 설계하여 고유값이 원하는 위치에 있도록 할 수 있습니다. 그럼 제가 다음에 할 일은, 안정적인 고유값을 지정하고 싶다는 것입니다. 저는 이 고유값을 안정적인 좌반 평면으로 옮기고 싶습니다. 그래서 우리는 하나의 불안정한 고유값을 가졌습니다. 저는 그것을 x의 비례적 피드백과 함께 안정적인 좌반 평면으로 옮길 것입니다. 그리고 이 다이어그램이 어떻게 생겼는지 기억하기 위해, 우리는 이 경우 카트 진자 시스템을 가지고 있습니다. 우리는 전체 상태 x를 측정할 것입니다. 우리는 그것을 피드백할 것입니다. 그래서 u는 -kx가 될 것입니다. 좋아요, 우리는 문자 그대로 u가 이 행렬 k에 x의 측정값을 곱한 것을 -라고 말할 것입니다. 우리는 모든 것을 측정할 것이고, 그것은 이러한 고유값을 갖도록 시스템을 안정화할 것입니다. 그래서 우리가 다음에 할 일입니다. 우리는 Matlab의 place 명령을 사용하여 이러한 고유값을 배치하고 이 행렬 k를 설계할 것입니다. 그런 다음 선형 이차 레귤레이터 또는 LQR 제어를 사용하여 최적의 고유값 배치를 개발할 것입니다. 그럼 다음에 올게요.