자율주행 자동차/제어

시뮬링크 환경에서 자동차 제어하기

이게될까 2024. 5. 12. 15:26
728x90
728x90

시뮬링크는 신호 기반의 모델링 방식이다.

모델링하기 위해 수식이 필요하다!

차량의 종방향 제어를 위해 차량시스템을 모델링한다면 차량의 운동 특성에 따라 진행을 방해하는 힘(무게(1200)와 공기저항(0.7))과 힘(힘과 속도)이 들어갈 것이다.

일단 빈 시뮬링크를 만들고

라이브러리에서 다양한 자원을 불러온다.

 

integrator를 가지고 와서 이름을 작성해준다.

x''을 넣으면 x'이 나온다!

입력에 해당하는 F를 표현하기 위해 Sources에서 Constant를 가져온다. Force로 이름변경도 진행해준다.

x''을 표현하기 위해 Math operations의 Gain을 가져온다.

1/1200으로 해준다.

그리고 Math에서 ADD블럭을 가지고 온다

그리고 더블클릭하여 +, -로 설정해준다.

이렇게 연결해준다.

요렇게 둥글둥글

이제 x제곱을 표현하기 위해 math function을 가지고 온다.

다양한 함수를 사용할 수 있지만 우린 제곱을 사용할꺼다

이런 모양이 될 거고, b를 만들기 위해 k를 우클릭하여 복제해서 밑으로 가져온다.

더블클릭하여 내부도 수정해주기!

요렇게 생긴다

종방향 제어 시스템이다!

Sinks 라이브러리의 scope를 가지고 와서 값을 확인할 수 있다.

speed로 이름도 바꿔준다.

더블클릭하면 아래와 같은 검은 창이 나온다.

이제 실행을 눌러보자

그래프가 나오는 것을 확인했다.

시뮬레이션 시간은 위쪽에서 확인 가능하다.

직전까지 왼쪽 과정을 만든 것이고, 이제 제어기를 만들 차례이다.

shift를 누르면서 블록 위치를 옮기면 연결을 끊을 수 있다.

Desired speed로 이름을 바꿔준다.

값도 변경했다.

Continuous 라이브러리의 PID를 가지고온다.

하나는 원하는 속도와, 하나는 현재 속도에 연결해준다.

이러한 모습이 된다.

이렇게 하고 시뮬을 돌려보자

아직 도달하지 못한 것을 볼 수 있다. - 제어기의 파라미터를 튜닝하지 않았기 때문이다.

직접 조정해줬다.

변동값이 너무 큰 것을 볼 수 있다.

하단의 조정버튼을 누르면 pid 앱을 실행할 수 있다.

 

값을 보면서 튜닝이 가능하다.

원하는 결과를 얻었다면 우측 상단의 블록 업데이트를 통해 값을 넘길 수 있다.

변동 되었다.

잘 된것을 확인할 수 있다.

https://kr.mathworks.com/videos/dynamic-system-simulation-and-control-design-using-simulink-1602830784090.html

 

Simulink 환경에서의 다이나믹 시스템 시뮬레이션 및 제어 설계

Simulink 환경에서 다이나믹 시스템을 모델링하고 시뮬레이션하는 방법을 소개합니다. 사용 예제로 차량의 종방향 시스템을 다룹니다. 또한 PID 제어기의 자동튜닝 방법을 소개합니다.

kr.mathworks.com

728x90