본문 바로가기

전체 글42

MPC 란? (Model Predictive Control) 2. MPC 상태공간 방정식 유도 참고: 제어조교님 유투브 강의 영상 MPC는 Optimal Control의 한 방법인데 로보틱스의 planning및 제어에 많이 활용되고 있다. MPC를 사용하면 로봇의 속도 및 가속력과 같은 dynamics와 주변 환경 조건을 cost function으로 넣어 상황에 맞는 최적화된 제어 명령을 생성할 수 있고 이를 통해 안정적으로 로봇의 자율항법이 가능하다. 아주 오래전부터 해보고 싶었던 분야 인데, 이 글을 작성하면서 공부하고 실제 드론에 탑재해서 실험까지 수행해보고자 한다. 이전글에서 MPC의 기초 개념에 대해 알아보았다. MPC에서 제일 중요한것은 현재 스텝에서의 상태변수를 가지고 다음 스텝에서의 '미래 출력'을 알아내는 것이기 때문에 시스템 dynamics의 모델링이 필요하다. 미분 방정식으로부.. 2022. 1. 4.
MPC 란? (Model Predictive Control) 1. 기본 컨셉 참고: 제어조교님 유투브 강의 영상 MPC는 Optimal Control의 한 방법인데 로보틱스의 planning및 제어에 많이 활용되고 있다. MPC를 사용하면 로봇의 속도 및 가속력과 같은 dynamics와 주변 환경 조건을 cost function으로 넣어 상황에 맞는 최적화된 제어 명령을 생성할 수 있고 이를 통해 안정적으로 로봇의 자율항법이 가능하다. 아주 오래전부터 해보고 싶었던 분야 인데, 이 글을 작성하면서 공부하고 실제 드론에 탑재해서 실험까지 수행해보고자 한다. 우선 가장 기초부터 설명하면 MPC는 k-1일때의 상태변수를 가지고 k부터 몇 수 앞 (예를들어 k+5 까지 라고 하면) 까지의 제어 명령을 미리 계획해놓고 제어 명령을 출력 한 후에 현재 (k step)의 상태변수를 feedb.. 2021. 11. 30.
ttyTHS0 permission problem NVIDIA의 jetson board 계열(TX1, TX2, Xavier, Xavier NX 등등) 을 사용할때 Serial 연결은 ttyTHS[0-9]를 통해서 이루어진다. 일반적으로 serial연결은 ttyS[0-9]를 통해 연결되지만 NVIDIA계열은 "Tegra High Speed" 라고 해서 THS로 연결하도록 한다. 하지만 이때 권한 부여 오류가 나타나는데 아무리 다음과 같은 usermod로 해결하려고 해도 해결이 되지 않는다. sudo usermod -a -G dialout $USER sudo usermod -G -G tty $USER 일반적으로는 위 방법으로 해결되야 하지만 계속 위 그림과 같은 permission denied 오류가 뜬다. 찾아보니 serial port를 nvgetty.s.. 2021. 10. 25.
Merge Sort (병합 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 Geeks for geeks - Merge Sort 정렬방법에는 시간복잡도 $O(N^2)$ 을 갖는 Selection Sort (선택 정렬), bubble sort(버블정렬), insertion sort(삽입정렬)등이 있다. 이 방법들은 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지 않다. 이를 극복하기 지난 글에서는 위해 시간복잡도 $O(N*logN)$을 갖는 Quick Sort (퀵 정렬)에 대해서 알아보았다. 이번에는 Quick Sort와 같이 시간 복잡도 $O(N*logN)$을 갖는 분할 정복식 알고리즘(DAC)인 Merge Sort (병합 정렬)에 대해 알아보도록 하.. 2021. 9. 28.
Selection Sort (선택 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 알고리즘에 따른 효율성을 가장 잘 보여줄 수 있는 문제가 정렬에 관한 문제이다. 이번에는 시간복잡도는 $O(N^2)$으로 느리지만 가장 단순하게 풀어 볼 수 있는 selection sort(선택정렬)에 대해서 알아본다. Selection sort는 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지는 않다. 1 10 5 8 7 6 4 3 2 9 의 숫자들이 나열되어 있을 때 이를 오름차순으로 정렬하는 프로그래밍을 작성해보자. 먼저 가장 단순하게 "가장 작은 것을 선택해서 제일 앞으로 보내"는 방법을 생각해보자. 바로 이 방법이 selection sort이다. 한번 손으로 풀어보자... 2021. 9. 27.
Quick Sort (퀵 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 정렬방법에는 시간복잡도 $O(N^2)$ 을 갖는 Selection Sort (선택 정렬), bubble sort(버블정렬), insertion sort(삽입정렬)등이 있다. 이 방법들은 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지 않다. 이번에는 시간복잡도 $O(N*logN)$을 갖는 Quick Sort에 대해서 알아보도록 하겠다. Quick Sort는 대표적인 분할 정복식 알고리즘(Divide and Conquer Algorithm, DAC) 이라고 한다. DAC에 대해 간단히 알아보면, 1. Divide: 문제를 작은 sub-problem들로 나누는것 2. Conquer.. 2021. 9. 15.
대수구조 2021. 9. 13.
차원정리 Youtube 이상엽Math 선생님의 선형대수학 강의를 보면서 정리한 내용 입니다. 유한차원 벡터공간 $V$와 Linear map(선형사상) $L: V \rightarrow W$에 대하여 다음이 성립한다. $dim(V) = dim(kerL) + dim(imL)$ 즉, Vector space $V$의 차원은 선형사상의 Kernel(핵)의 차원 + 선형사상의 Image(상)의 합으로 표현이 가능하다. 이제 이에 대한 증명을 해 볼 것인데, 먼저 차원을 얘기하려면 필히 등장해야 하는 것이 Basis (기저) 이다. 왜냐하면 이 Basis의 원소의 개수가 결국 차원에 해당하기 때문이다. 그러므로 $V$의 Basis에 대해 알아보고 나머지 $KerL$과 $imL$의 Basis에 대해 알아보는 것으로 증명을 시작한.. 2021. 9. 5.