728x90

 

좋은 글을 쓰기 위한 방향

 

 내가 블로그에 올리는 글들은 그다지 좋은 글이라 생각하지 않는다.

 

남들에게 가르쳐주려는 목적 보다는

 

그냥 내가 그때 그때 공부한 내용들, 생각들을 정리하기 위해서 쓰다보니

 

글을 많이 올리면 올렸지, 보는 사람들을 배려해서 쓰지는 않았다.

 

 

 

얼마전 해커스쿨의 자료들을 안내하는 글을 올린적 이 있었는데

 

거기서 자료를 정리하신 분이 

 

추천하는 자료로 짤막하게 OS구조와 원리라는 책을 올리신걸 보고

 

오늘 도서관에서 빌려왔다.

 

 

 

 

해킹 커뮤니티에서 활동하시는 분이 추천하는 책이다 보니

 

일반적인 컴퓨터 공학 서적이랑 내용 부터, 서술하는 느낌이 다른것 같더라

 

 

 

 

공부하다보면 "전에 뭔 소린지 몰랐는데, 그때 그 얘기가 그 소리였구나"

 

이런 순간이 자주와야 된다고 은연중에 생각하고 있었다.

 

 

 

그러다 다른 사람들은 이책을 평하는지 궁금해서 잠시 검색하다

 

이 책에 대해서 나와 똑같은 생각으로 평하신 분이 있길래

 

캡처해 왔다.

 

http://www.kangcom.com/community/sub_community_bookreview_view.asp?seqid=5582

 

내가 생각하는 좋은 글은

 

이전에 얼핏 들었지만 이해 되지 않아 막히고 찝찝했던 부분을

 

시원하게 뚫어주는 글이라 생각된다.

 

 

 

 

조금더 자세히 얘기하면

 

이전에 자세히는 모르겠지만 주워들었던 단편적인 지식들을

 ex. cpu는 계산기, memory는 저장공간, 모니터는 출력장치

 

연결시켜 보는 사람이 통합된 지식으로서 오래 기억 남을수 있도록 도와주는 글을 써야된다고 본다.

 ex. cpu는 계산기, memory는 저장공간, 모니터는 출력장치

 => 컴퓨터는 메모리와 같은 저장 공간에 있는 데이터들을 중앙 처리 장치를 통해

  계산하여 모니터와 같은 출력장치에 올바르게 보여주는 장치

 

 

 

 

내가 쓰는 글은 아는 범위 내에서 최대한 축약해서 쓰려다 보니

 

남들의 막힌 부분을 뚫어주지는 못하는것 같다.

 

 

 

 

나중에 제대로 써야할때 할수 있을지 모르겠다 ㅎㅎ

300x250
728x90

간혹 어떤 걸 공부해야지 하고 열심히 할것 처럼 말해놓고

 

금방 포기하는 경우가 많다.

 

 

 

 

 

이전에는 왜 그런지 전혀 몰랐지만

 

점점 공부하면 할수록 명확하게 이유를 알것 같다.

 

 

 

 

 

일단 첫째는 처음부터 목표를 크게 정한 점과

 

둘째는 기반 지식에 대해 충분히 학습하지 않은 점이 있어보인다.

 

 

 

 

 

 

 

아무것도 모르는 상태에서

 

확률적 로봇 공학을 배울때

 

앞의 확률 내용 1,2장만도 이해 못해서

 

몇달간 해멘적이 있었다.

 

이 외에도 컴파일이나 버전 의존 관계같은것도 몰라 오픈소스 하나 빌드하는데 오랜 시간을 소비하거나

 

그래프 슬램에서 그래프가 무엇인지 뉴턴 방법이 무엇인지 분명 논문 자료에 서술은 되어있지만

 

이해하지 못한 채 대충 넘기면서 겨우 읽었다.

 

 

 

 

 

 

 

 

이렇게 될수 밖에 없는건

 

확률에 대해서 시간없다고 

 

빌드에 대해서도 제대로 공부 하지 않았으며,

 

자료구조와 최적화는 물론 공업수학을 보지 않았기 때문이었다.

 

 

 

 

 

 

이런 내용을 한번 혹은 충분히 보지 않은 상태에서

 

확률 로봇 공학이나 슬램, 빌드 시스템에 대해서 한번에 이해하는건

 

욕심이었던것 같다.

 

조금만 더하면 해결될것 같아 미련 버리지 못하고 계속 붙잡고 있던게 몇 주 몇달이 되더라

 

 

 

 

 

그러다 보니 최근 공부 방식은

 

어느 분야를 공부하기 전에 어느정도 볼지 목표를 정하고,

 

특히 필요하지만 나중에 볼 부분을 잘 구분해서 빠른 시간에 훑어보았다.

 

어느 분야든 필요하지만, 모든 부분을 보다가는 시간 소요도 크고 이해하는데 너무 오랜 시간이 걸리고

 

오히려 한번 다 훑고 나서 좀 쉰 뒤에 다시보면 금방 이해되는 경우들도 많았다.

 

 

 

 

 

 

가능한 현실적인 목표를 설정해서

 

기반 지식만 잘 준비하면

 

어느 응용분야든 무작정 시작하기 보다는 조금이라도 수월하게 배울수 있었다.

 

특히 최적화 공부할때 많이 도움되었다.

 

중간 중간에 하기 싫어도 복습하게 되고

 

 

 

 

 

대책없이 무작정 붙잡고 있는건 너무 힘든 일은 없는것같다.

 

그럴때마다 중간에 미련을 놓기가 정말 어려웠지만

 

덕분에 지금은 예전보다 조금은 능숙해졌다.

300x250
728x90

https://www.clien.net/service/board/lecture/15183818

 

내용과 댓글들이 많아 아직 다 읽어보지는 않았지만

 

공감되는 부분들이 많았다. 

 

 

 

 

 

 

 

 

글쓴분은 영어를 스킬 위주로만 접근하면 망한다고 하는데

 

특히 나의 경우가 그러했던것 같다.

 

내가 토익준비할때 당시 시중에서 가장 어렵다고하던 빨강이 1000제인가?

 

그 책을 사서

 

내가 모르는 단어와 틀린 문제 원인을 찾고 맞추는 식으로 연습을 하다보니

 

영어의 맥락을 파악하기 보다는

 

이전에 학습한 스킬 패턴데로 답을 찾아내고 있더라

 

그래서인지 배에서 실습 다닐때

 

토익 성적은 괜찬은데 왜 영어를 못하냐고 핀잔듣고는 했었다.

 

 

 

 

 

 

 

또한 수능 영어를 준비할때

 

내가 경험이 부족할것이라고 생각해서

 

계속 반복을 했지만

 

성적은 일정한 만큼만 오르고

 

더 이상은 오르지 않더라

 

 

 

 

 

 

이런 궁금증에 대해서

 

글쓴분과 다른 사람들의 얘기하는 과정을 보면

 

다양한 관점에서 어떻게 다뤄야될지 도움될것 같다.

 

300x250
728x90

 

http://www.kmooc.kr/courses/course-v1:KoreaUnivK+ku_eng_002+2020_A09/about

Mathematical Fundamentals for Data Science

 

 

 

머신러닝, 데이터 분석, 로봇, 영상 처리 등 기술에

 

선형대수, 최적화, 확률과 같은 이론들이 필요한데

 

이에 대한 강의를 찾아보고 있었다.

 

 

 

보통 선형대수나 확률과 같은 자료나 강의는 많지만

 

최적화는 이에 비해 자료가 그렇게 많지는 않더라

 

그래서 kmooc에서 검색 해보다가

 

고려대에서 준비한 이 강좌를 찾게 되었다.

 

 

 

 

이 강좌는 내가 원하던 데로

 

기계 학습에 필요한 수학적 배경들을 한번에 다루는걸 목표로 하고 있어

 

마침 공업 수학을 마무리 한 지금 보면 좋은 강의인것 같다.

 

 

 

 

 

 

수업 내용은 다 영어지만

 

공부하면서 정리도 조금 해놓으면

 

그 동안 학습한 이론 개념들을 확립할수 있겠다.

 

 

 

300x250
728x90

예전부터 공업수학을 공부해야지 생각은 하고 있었지만

 

가장 유명한 크레이직 공업수학인가?

 

그런 책들을 보면 

 

무수한 예제와 증명을 보고 겁에 질려 포기하고 말았었다.

 

공업 수학을 왜 공부해야하는지에 대한 고민 없이 하다보니 더 그랬던것 같았는데

 

 

 

 

 

결국 돌아돌아

 

최적화 이론, 수치해석 같은 학문을 배우기 위해서

 

공업수학을 공부하게 되었다.

 

이번에 공업수학을 배우기 전에는 공업 수학이라는 학문이 무엇을 하는지는 잘 몰랐었다.

 

 

 

 

 

나보고 봐야 된다고 말하는 사람도 잘 없었고,

 

그나마 한번 봤을때 전체적인 틀을 보고 시작하는게 아니라

 

처음부터 세부적으로 보는데, 수많은 공식과 증명 과정들만 보고 포기해버리고 말았는데,

 

 

 

 

그나마 그래프 기반 슬램에서 최적화 관련 개념들을 보고 수치해석을 공부 하려고 시작하다가

 

수치 해석의 개요에서 공업수학이 미분 방정식을 다루는 학문이다 정도로 나마 막연하게 알게되어

 

수치해석을 시작하기 전에 본격적으로 살펴보게 되었다.

 

 

 

 

 

그 동안 공부하면서 삽질과 이론 공부 흐름을 고민하면서

 

내가 필요한 부분들 넘어가도 되는 부분들을 생각하면서

 

공업수학을 공부하다보니 생각보다 빠르게 둘러 볼 수 있었다.

 

 

 

 

 

예전에 신호와 시스템, 제어 공학을 배울때는

 

왜 물리적인 현상을 미분 방정식으로 모델링하는지 잘 몰랐었다.

 

당시 눈앞에 보이는 푸리에 변환, 라플라스 변환 공식과 이동 성질,

 

예제 푸는데만 혈안이 되있다 보니

 

 

 

 

많은 시간을 들인 덕에 그러한 예제들은 풀수 있을지는 몰라도

 

제어 공학과 신호와 시스템에서 왜 미분방정식이 사용되는지, 시스템이 무엇인지와 같은

 

개념들을 쌓는데는 등한시 하고 말았었다.

 

그렇게 삽질하면서 공부한 문제 푸는 방법도 다 잊어버렸으니

 

남은게 아주 많지는 않더라

 

 

 

 

 

하지만 그런 삽질 덕분에

 

이번 공업 수학에서 수학적 모델링과 해를 구하는 과정에 대해

 

문제 풀이보다 개괄적인 이론에 대해 살펴볼수 있었던것 같다.

 

 

 

 

그렇게 다양한 학문에서 다루는 문제를 수학적 모델링을 하고, 방정식을 만들어 해를 구하는 과정에 대한 개념과

 

그러한 수학적 모델링을 위한 1차, 다차 미분 방정식, 시스템과 다양한 해를 구하는 방법

 

그리고 행렬과 벡터 이론을 통한 벡터 미적분 일부 까지

 

조금 더 깊이 들어간다면 더 들어갈 수 있지만 이 정도 보기 만해도

 

내가 공부하는 응용분야에서는 충분할것 같다.

 

 

 

 

 

 

 

특히 다양한 문제들을 수학적으로 모델링하고

 

이 모델링한 방정식의 특성에 따라 해를 구하는 등

 

해석적, 수치적 방법론에 대한 전반적인 배경지식을 조금 더 확립할수 있어서 잘봤다.

 

 

다음에는 베이즈 통계학, 수치해석, 최적화 이론 중 아무거나 공부해보고자 한다.

300x250
728x90

이 영상은 내가 4월 경에 찾았던 영상인데

 

이것이 C++이다 저자 최호성님이

 

컴퓨터 과학 전반에 대해서 그나마 압축하여 전반적으로 알려주신다.

 

 

 

 

맨 처음에 다나와에서 시작하여 컴퓨터 조립과정과 하드웨어, 소프트웨어

 

진법 관련 개념과 CPU 원리, 기억장치, 파일시스템, 자료구조와 알고리즘, 운영체제, 프로그래밍 까지

 

이 모든 내용이 18개의 영상으로 나누어져 있고, 대부분 한 영상당 10~20분 정도 한다.

 

마음 먹고 본다면 4~5시간 안에는 다 볼수있는 범위인듯 하다.

 

 

 

 

 

 

이게 중요하다고 느끼는 점은

 

웹 개발을 자바라는 언어로 시작하면서

 

나는 왜 웹을 C로 안하고 자바로 쓰는지 객체지향이 장점이라고 하는데 이게 너무 막연했고,

 

컬렉션 프레임워크가 데이터를 잘 담는 도구구나 정도 이해했지 이게 자료구조라는걸 인지하지도 조차 못했다.

 

나중에 리눅스를 공부할때는

 

왜 사람들이 윈도우에 안하고 리눅스에다가 이런 짓을하는지도 몰랐었다.

 

6개월 이라는 시간이 짧다면 짧을수도 있고, 길다면 긴 시간이기도 하다

 

 

 

 

 

하지만 처음부터 이런 컴퓨터 과학 전반에 대해 얕게나마 이해하고 시작했더라면

 

컬렉션이란게 왜필요하고, 자료와 데이터가 이런 형태를 가지며,

 

파일 구조나 CPU 처리 과정에 대해 알았으면

 

웹을 공부하던, 임베디드를 공부하던, 딥러닝 등

 

모든 컴퓨터 과학 응용 분야들을 조금 더 수월하게 할수 있지 않았을까 아쉬운 마음이 크다.

 

 

컴퓨터를 처음 시작하거나 이론 지식이 부족하다고 생각하는 사람들에게 강추하는 영상

 

 

 

 

 

 

플레이 리스트

www.youtube.com/playlist?list=PLXvgR_grOs1BQCziQ_MpM877BdBxwbMzA

300x250
728x90

 

 내가 이 영상을 왜 찾았더라..

 

잠깐 방통대 컴공과를 검색해보다가 찾았던것 같다.

 

영상 내용은 컴공 기초 과목들 

 

그러니까 OS, 네트워크, 데이터베이스, 자료구조, 알고리즘 등을 공부해야 하느냐는 내용이다.

 

 

 

 

 제목을 봐서 어느 비전공자 분이 유튜버 서윤님께 이런 질문을 주신듯 하다.

 

확실히 나도 비전공자로 시작하다 보니 당장 학원에서는

 

기초적인 언어와 최소한의 프레임워크촤 다른 도구 사용법 정도밖에 하지 못하고 수업이 끝나버린다.

 

그 마저도 일반적인 국비 과정에서하는 6개월 안에서 하기가 정말 벅차다 보니 그런데

 

그런 탓에 비전공으로 시작하다보면 그런 컴퓨터 과학 기초 지식이 많이 부족해

 

툴 사용법에만 많이 종속적이게 되는것을 느낀다.

 

그런 점에서 컴퓨터 기초 이론에 대해서 공부하는게 필수적이라 생각하고

 

 

 

 

 

이에 대해서 사윤님께서 알려주신다.

 

영상도 짧고, 비전공자인데 더 실력을 더 키우고 목표를 어떻게 잡아야 될지 모르는 사람들은 볼만한 내용인것 같다.

 

 

 

 

 

 

 

 

 

300x250

'그외 > 로그' 카테고리의 다른 글

공업수학 정리를 마치며  (0) 2020.07.15
넓고 얕게 배우는 컴퓨터 구조 자료구조, 알고리즘, 운영체제 by 최호성  (0) 2020.07.13
공부 근황 2  (0) 2020.07.09
공부 근황  (0) 2020.07.09
낮 한강  (0) 2020.07.07
728x90

7월

 확률로봇 공학과 이와 관련된 개념들을 찾아 본 후에

내가 어떤 방향으로 공부해 나가야될까 싶어 고민하다가

알고리즘에서 계산 복잡도를 자주 다루어야 하므로 계산 이론과

실제 알고리즘을 구현하는 파이썬 알고리즘에 대해서 정리하려고 했었다.

 

 그런데 이 부분들을 다 살펴보기에는 혼자서 공부하기 너무 힘들고, 지역적으로 보는것 같아 멈추고

확률적 로봇공학을 복습하였으니 이제 할수있을것같아 파이썬 로보틱스를 다시 살펴봤다.

- 히스토그램 필터 위치추정, 가우시안 그리드 맵핑, 광선 투사 그리드 맵핑, 라이다 스캔 맵핑, EKF SLAM, FastSLAM까지

 

 중간 중간에 확률적 로봇 공학의 내용 일부와 SLAM 파트에서 FastSLAM과 GraphSLAM을 다른 자료를 참고해서 추가로 정리할 수 있었다.

 

 

 

 

 

 

  3개월 그러니까 1학기와 비슷한 시간 동안 알고리즘, 이산수학, 제어공학, 로봇공학, 임베디드 등

상당히 많은 분야들을 한번 훑어봤다.

제대로 이해하거나 활용해보았다고 하기는 힘들지만, 그래도 공부하면서 막힌 부분들은 많이 뚫렸다.

 

 하지만 공부하면 할수록 배워야 될게 늘어나는것 같다.

전에는 뭘해야할지 몰랏다면, 로보틱스를 정리하면서 내가 뭘 모르는지 조금 더 알게되었고

조금 더 이해도를 높이려면 어떤걸 공부해야할지 이제서야 조금 감은 잡힌다.

 

 추후에는  인공 지능 이론과 수치 해석, 최적화 이론, 회귀/다변수 해석,

데이터 마이닝 등의 분야를 공부해 나갸야 될거같긴 하다.

 

 머신러닝과 영상처리, 경로계획 같은것들도 보기는 해야하는데

정말 공부해야할 내용들이 끝이 없다.

 

 

 

 

 

 

 아무튼 내가 3개월 간 블로그에서 공부한 내용은 이정도로 정리할수 있을것같다.

공부한 내용을 정리하다보니 원래 어떻게 할까 생각정리하려고 근황글을 시작했는데 잊고있었다.

 

 그래서 내가 이런 분야들을 두루두루 공부하는게 맞는지가 조금 걱정된다.

작년에 그렇게 아는게 부족한 상태로도 정말 감사하게도 취업 기회가 올수 있었던건

그만큼 두루두루 경험해본 개발자가 부족해서 그런것 같다.

 

 

 지난번에 "능력있는 개발자는 어떻게 알아볼수 있나?"라는 글의 리뷰를 적었었는데

https://throwexception.tistory.com/441?category=849462

 드레퓌스 모델에 비교하면 대부분의 단기(6개월~1년) 속성 교육을 받는다 해도 아주 열심히 해서 Advanced Begineer까지 도달할지 몰라도, Competent 수준의 능력을 갖추기는 힘들어 보인다.

 

 

 

 

 

 다른 연구실이 어떻게 운영되지는 모르나

 

컴퓨터 구조, 컴파일러, 운영체제, 이산수학, 알고리즘, 네트워크, 데이터베이스, 리눅스, 계산이론,

소프트웨어 공학, 전기, 전자, 설계, 확률 통계, 회귀분석, 다변량분석, 미적분, 수치해석, 해석학,

영상처리, 로봇공학, 인공지능, 제어공학, 회로이론, 동역학

 

 같은 학문들을 다 할수 있는 사람이 얼마나 될까?

 

 한번은 항공우주학과 학생이 블로그에다가 직접 드론 회로부터 제어 알고리즘까지 구현해서 안정적으로 호버링을 하도록 만든걸 본적이 있는데, 정말 대단하다고 밖에 할수가 없다.

 링크 : https://blog.naver.com/ejtkddl/220396626106

 

 

 

 

 

 내 딴에는 수렁에 빠져서 삽질하는 시간을 줄이려고,

중간 중간에 공부 근황과 앞으로 뭘 해야할까 생각하는 시간을 갖고는 있지만

여전히 어떻게 해나가야될지 잘 보이지 않고,

다방면으로 보다가 다방면으로 계속 헤매고만 있을까봐 걱정이 되기도 한다.

 

 

 

 

 

 이전에 "왜 지금 로봇 공학을 공부할까"라는 글에서

팬더 님의 글을 얘기한 적이있었는데 다시 정리해보면

https://throwexception.tistory.com/354?category=849462

https://okky.kr/article/401948

소프트웨어 분야의 전문화, 계층화에 따른 직업경로의 변화

1. 초창기 소프트웨어는 가지도 별로 없는 어린 나무였고,

대부분의 개발자가 비슷한 지식들을 공유하고, 뛰어난 사람은 모든 분야를 섭렵할수 있었음.

 

2. 시간이 흘러 소프트웨어가 수직 수평적으로 폭팔적으로 팽창

but 우리의 학습 능력은 확장되지 않음.

 

3. 소프트웨어는 실생활의 더 많은 문제들을 다룰수 있도록 많은 추상화 계층이 추가됨.

- case of web

 모든 것을 메모리 포인터로 다루던 C -> 추상적인 수준에서 해결하기위한 C++ -> 메모리 관리 해결을위한 가상머신에서 구동되는 언어(ex.자바) -> 웹 저수준 문제를 해결하기 위한 서블릿 컨테이너 -> 웹 서비스를 구축하기 위한 프레임워크

 

4. 추상화가 많아지는 이유는 개발자의 수준이 떨어져서가 아니라.

메모리 관리같은 저수준의 내용보다 위에 어렵고 중요한 문제가 많기 때문

 

5. 위 나무는 가지도 많아지고, 키도 커졌지만 잎의 면적은 변하지 않음.

잎의 면적은 개발자 개인의 능력에 달렸기 때문.

+ 천재가 아닌 이상 뿌리부터 모든 잔가지를 보는건 불가능

 

6. 근본 지식만 있으면 다할수 있것이라 생각할수도 있으나

가지가 아주 많고, 나무가 높으므로 힘듦

 

7. 실무 지식만 있으면 된다고 생각하는경우

나무 한끝자락에서 협소하게 머무를것임.

 

8. 뿌리부터 보기보다는 나무 전체를 멀리서 보고, 크기를 파악한다음 가지들을 파악.

그 다음 원하는 부분을 찾아 친숙해져야함.

 

9. 단기 속성으로 배워서 투입되는 경우. 나무의 특정 한 가지 끝 어디에서만 머물고,

기술의 깊이나 폭을 넓히기 위해 방향을 잡지못하는 경우가 많음.

 

10. 이러한 한계를 느낄때 무턱대고 뿌리 부근에 있는 주제에 덤비다가

포기하다가 실무와 연관성을 찾지못해 실망하는건 안타까운 일.

 

11. 지금은 과거와는 달리 뿌리부터 시작해서 여러 끝에 도달하기는 불가능해진 시대.

 

12. 시작하는 지점에 따라 문제의 성격과 우선순위가 달라짐

뿌리 근처의 개발자에게는 자료 구조 성능을 빅오 표기법이 중요할 것이나.

중단 근처의 개발자에게는 배열리스트가 컬랙션의 어디에 있고 왜 인터페이스를 구현하는지 이해하는게 중요.

 

13. 지금 시대에는 모든 개발자가 같은 위치에서 시작되지 않고, 시작 지점에 따라 수준이 정해지는것도 아님.

개발자의 수준은 어디서 시작하건, 시작위치로부터 깊고 넓은 영역을 다룰수있느냐로 결정.

그 영역을 넓히기 위해 시작점 위든 아래든 강하게 관련된 내용 순서대로 익혀가는게 최적의 방법.

 

 정리한다고 정리하긴 했는데 더이상 줄이기가 힘들다.

아무튼 요즘 이 글의 내용을 신경쓰면서 공부 중이고

내가 너무 깊이 내려가는게 아닐까 걱정 되기도 한다.

 

 

 

 

 

 

 

 지금 당장은 다음의 두 가지 경우를 고민하고 있다.

1. SLAM을 정리했으니 경로 계획을 한다.

2. 다시 이론으로 돌아와 다변량 분석을 살펴본다. 

 

 

 원래 경로 계획에 대해서 공부하려고 했으나,

경로 계획 알고리즘의 dynamic window approach나 다익스트라, a*, 포텐셜 필드 같은 내용들을 공부하기가

준비가 많이 부족한것 같다.

 

 그나마 확률적 로봇공학은 이전부터 여러 차례 반복해 오다보니 지금만큼 온거지만

이 상태에서 바로 경로 계획 파트를 들어간다면 오랜 시간 삽질해버릴거같아

관련된 이론들에 대해서 더 학습해야 덜 해맬것같은 기분이 들더라.

아니면 내가 참고하려고 한 자료가 너무 공부하기에 좋지 않은 자료들이라 그런 걸수도있고

 

 일단 다변량 분석을 생각하게 된건

내가 예전에 잠깐 학점은행제로 학점을 모으려고 방통대에 등록을 한적이 있었는데

졸업 하지는 못하고 시간이 지나 재적 처리가 됬었다.

 

 지금 방통대 재입학 신청기간이라 문자가 왔길래

방통대의 정보통계학과와 컴퓨터학과 커리큘럼을 보다가

내가 공부한 과목들도 많지만 공부 해야될 과목들도 많이 보이더라.

 

 

 

방통대 정보 통계학과 커리큘럼

 

 

방통대 정보 컴퓨터 학과 커리큘럼

 

 

 아무튼 경로 계획 알고리즘을 보기 전에 관련성 있는 과목들을 빠르게 훑어보고 나면

파이썬 로보틱스 예제들을 그나마 수월하게 정리했던것처럼

지금 바로 보는것보다는 사고의 폭이나 이해도를 높이는데는 훨씬 나을거같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 그나마 위안되는건

 

쓴 글 갯수가 500개에 가까워지는 중이고,

방문자 수도 꾸준히 늘어나고 있다.

 

 

 

300x250
728x90

 최근 파이썬 로보틱스를 진행하면서

깃헙 소스를 돌려보기도 하지만

가능한 이론 내용도 같이 정리하고 있었다.

 

 확률적 로봇 공학 정리를 마무리하고,

파이썬 로보틱스에서 위치 추정 문제, 지도작성, SLAM까지 진행했다.

 

 파이썬 로보틱스에서 제공하는 소스만 클롯받아서 돌려보고 말 수도 있긴한데,

이러한 기술들이 왜 나오고, 이 기술들을 구현한 슈도 코드가

파이썬이라는 언어로 어떻게 실제로 구현되어 동작하는지 분석을 했다.

 

 작년에 파이썬 로보틱스를 보았을때는 확장 칼만필터 위치추정과 SLAM 정도만 겨우겨우 이해했지

지도작성이나 FastSLAM 부분은 제대로 이해하지 못하고 대강 넘긴바 있으나

확실이 이번에 확률적 로봇공학을 다시 정리하고 나니 특히 지도작성에서 가우시안 그리드, 광선 투사 그리드 지도 작성방법 부분들까지 이해도가 많이 좋아진것 같아 뿌듯하기도 하다.

 

 그 다음 SLAM 파트에서 EKF SLAM도보고,

확률적 로봇 공학에서 나오지 않는 FastSLAM과 graph 기반 SLAM 튜토리얼에 대한 자료들을 정리 했다.

 

 원래 나는 군산대 로보틱스 대회를 목표로 막연하게 아래의 순으로 공부하려고 하였지만

위치 추정 -> 지도작성 -> SLAM -> 경로 계획 -> ROS 시뮬레이션 -> 실제 구현 

 

 이렇게 공부하는 것이 맞는 건지 고민된다.

 

 

 

 

 

 

작년 중순 쯤 개인 사정으로 취업을 하려고 로봇 관련 업체나 딥러닝을 하는 곳에 지원을 한 적이 있었는데,

 

 당시 나는 확회에서 보는 다른 대학원생처럼 기존 알고리즘을 개선하여 어떤 문제를 해결하긴 커녕

남이 만들어 놓은걸 직접 돌려보기만 하는 수준이었다보니(지금도 그렇지만)

대학원으로서 제대로 만든게 없는것 같아 자존감이 매우 낮은 상태 였었다.

 

 영상 처리 책에 있는 번호판 인식 예제를 구현해본다던가

딥러닝/케라스/탠서플로 책같은걸 보고 신경망 구현해서 학습을 해보거나

ROS 책이나 자료보고 예제 돌려 보는 등 

 뭔가 나름대로는 열심히 하긴 했었지만 (내가 생각하는) 대학원생 수준이라고 하기에는 너무 창피 했다.

 

 당시 내가 알고 있는 지식으로 SLAM을 설명한다고 하면

SLAM이란 동시적 위치 추정 및 지도작성이다. 가 끝이고 그 이상을 설명 못할 만큼 아는게 없었다.

 

 내가 모르는게 많은건 잘알고 있었지만, 자율주행차 연구를 어쩔수 없이 하게되었을때

자율주행 오픈소스 autoware를 빌드해서 돌려야 하는데 되지를 않으니

한달 동안 울면서 빌드만 한적도 있었다...

 

 막히는 원인과 관련되는 gcc로 어떻게 빌드하는지, 의존 관계가 어떻게 되는지, 라이브러리들 버전들이 다른지 등

빌드 관련 지식들을 잘 몰랐고 너무 급한 마음에 공부할 여유도 없었지만.

 

 그런일만 쌓이고 쌓이니 나는 어디에 가서 연구원으로 활동하기에 많이 부족한것 같고, 좌절한 상태였었다.

그래도 취업은 해야되니 몇몇 업체에 지원을 했었는데,

대학원 생활을 (열심히 하긴 했더라도 남들보다 엉터리로 했으니) 면접 볼 기회조차 없을거라 생각했었다.

 

 하지만 생각보다는 (아주 큰 곳은 아니었지만) 면접 볼 기회가 많았고, 여러 곳에서 합격할 수 있었다.

원래는 그렇게 일 하려고는 했었지만 주변인의 방해로 어쩔수 없이 포기하고 말았었다.

 

 그래도 이런 일이 있으면서, 아무것도 못했다고 좌절하고 있었는데

조금은 내가 완전히 잘못하고 있는건 아니구나 싶어 약간 희망은 얻을수 있었다.

 

 

 

 

 

 

 글 쓰다보니 내 취업 얘기로 빠지게 되 버렸는데

SLAM에 대해서 제대로 설명하지도 못한 1년전과 비교하면

지금은 장족의 발전을 하긴 했다.

 

 하지만 다른 컴퓨터 공학 전공자들 처럼 전공 지식을 제대로 배우지 못한게

여전히 나의 발목을 잡고있다.

 

 컴퓨터 과학의 응용 분야인 영상 처리나 로봇 공학, 인공 지능 등을 공부하려면

아래와 같은 이론 학문이 기반이 잘 갖추어 지고 있어야 했는데,

 

 통계론, 확률론, 선형대수, 수치해석, 회귀분석, 다변량 분석

이산수학, 알고리즘, 계산 이론 등

 

 나는 이런 기반 이론 없이 속아서, 아무것도 몰라서, 억지로 시켜서 다짜고짜 딥러닝,

영상처리, 로봇 공학을 하겠다고 삽질하고 다녔으니 제대로 하지 못하고 좌절할수 밖에..

 

 

 

 

 

 내 딴에는 블로그 정리하면서 공부를 하고 있고,

4월쯤 부터 했으니 이제 3개월 정도가 되었다.

 

 3개월이란 시간 동안 내가 뭘 했나 다시 정리해보면

 

4월

처음에는 만화로 쉽게 배우는 시리즈로 공학 관련 기초적인 내용들을 살펴봤었다.

- 전기/전기수학/CPU/선형대수/회귀분석(4월 중순 ~ 5월 초)

 

 그리고 중간에 컴퓨터 아나토미라는 책으로

컴퓨터 구조에 대해서 공부하면서 대강 다음 흐름들을 파악 할 수 있었다. (4월 말)

전기 신호-> 스위치 -> 릴레이 -> 트랜지스터 -> 플립플롭 -> 메모리 -> 가산기 -> APU -> 컴퓨터 회로 -> 폰 노이만 방식/ 하버드 방식 CPU -> 기계어 -> 어셈블리어 -> 고급언어

* 이즈음 NAND2TETRIS를 해보려고 했다가 포기했었다.

 

5월

 이후 STEP 교육이란걸 알게 되서 임베디드 시스템 관련해서 다방면으로 공부하기 시작했다. (5월 초~ 중)

ARM 임베디드 시스템 설계 - 임베디드 시스템, ARM, 부트로더, 리눅스 커널, 램디스크, 플래시 파일 시스템, 디바이스 등

펌웨어구현 환경 구축 - 펌웨어, 구현 SW/HW, 디버깅 도구, 교차 개발환경, JTAG 회로도분석, 데이터시트분석, 프로세서 구조, 매모리 맵 등

마이크로프로세서 메카트로닉스 제어 - 회로 시뮬레이션, LED, 릴레이 제어, 스위치, FND, LCD, 인터럽트 등

임베디드 SW 엔지니어링 - 개요, 하드웨어 분석, 펌웨어 분석, 커널 분석 등 ( 5월 말)

 

 이후 제어 공학을 복습 하고, (5월 초)

제어 공학 - 동적 시스템, 질량-스프링-댐퍼, 전달함수, 상태공간, 과도/정상상태응답, 성능및 안정도, 근궤적, PID 제어, 주파수 응답 등

 

 정보처리 기사 실기 시험을 잠시 준비하면서 이전에 학습한 내용을 복습했다. (5월 중 ~말)

네트워크 - 기본 개념, 네트워크 구조, TCP/IP 프로토콜, 주소 체계, 인터넷/라우팅/ 전송계층 프로토콜

데이터베이스 - DBMS, 모델링, SQL, 개념적/논리적 설계, 정규화 등

소프트웨어 공학 활용 - 소프트웨어 개발 라이프사이클, 개발 방법론, 모델, UML 등

기타..

 

6월

 정처기 시험을 마무리하고, 소형 무인 비행체를 복습했었으나 (6월 초)

배경 지식이 부족하고, 더이상 진행하기가 어려워 중간에 마쳤다.

 소형 무인 비행체 - 좌표계, 기구/동역학, 힘과 모멘트, 선형모델 설계, 오토파일럿 설계

 

 그 다음에는 이론 지식들을 공부하겠다고 수치해석을 시작했다.(6월 초)

이 내용도 생각보다 이해하기 힘들어서 많이 나가지는 못했다.

수치해석 및 실습 - MATLAB, 배열, 그래프, 오차 해석, 보간다항식, 차분표, 방정식 해법

 

 그 다음으로 이산수학과 알고리즘 (6월 초 ~ 중순)

이산 수학은 그래도 필요한 부분만 전반적으로 살펴 보기는 했으나

알고리즘의 경우 중반 까지는 그래도 이해할만 했으나 NP완비 부터는 간략하게 훑어보기만 했다.

이산수학 - 집합, 수, 관계, 그래프, 트리, 순열, 확률 등

알고리즘 - 설계 분석 기초, 점화식과 복잡도, 수열, 정렬, 선택, 자료구조, 이진 검색트리, 해시테이블, 동적 프로그래밍, 그래프 알고리즘, P와 NP문제, 근사 알고리즘, 상태 공간 트리

 

 6월 중순까지 수치해석, 이산수학, 알고리즘에 대해서 간단하게 살펴보고 나서 로봇 공학 관련해서 복습하기 시작했다.

 우선 파이썬 로보틱스의 칼만 필터 기초와 칼만, 베이즈 필터 자료에 대해서 살펴봤다.(6월 중순경)

파이썬 로보틱스 칼만 필터 기초 - 가우시안, 확률 모델, 확률 생성법칙, 조건부 확률, 베이즈 법칙/필터 와 칼만필터

칼만,베이즈 필터 - 파티클 필터, 몬테카를로 방법

 

 확률적 로봇 공학(6월 말)

작년에 논문쓰면서 확률적 로봇 공학을 이해도가 많이 부족하긴 했지만 공부했기 때문에

파이썬 로보틱스 예제를 공부하면서 로봇 공학 전반에 대해서 살펴보려고 했었다.

하지만 기반 지식이 너무 부족해서 코드나 로직들이 이해하기 너무 어렵더라,

그래서 다시 확률적 로봇 공학을 보기 시작했다.

- 베이즈필터 -> 가우시안 필터 -> 비가우시안 필터 -> 동작 모델 -> 관측 모델 -> 칼만/격자/몬테카를로 위치 추정 -> 점유 격자지도작성 -> SLAM -> 정보 SLAM 등

 

 작년에도 SLAM 까지 전반적으로 다 훑어보긴 했지만 관측모델이나 지도작성 등

이해하지 못한 부분들이 많았으나 이번에 다시보면서 더 확립할 수 있었고,

진도를 조건 다나아가 정보 필터를 이용한 개념들에 대해서도 완벽하지는 않지만 조금 살펴볼 수 있었다.

 

 개념정리(6월 말)

 하지만 확률적 로봇 공학을 정리하면서 힘들었던 점들이 많았는데

이번에 정리하기 이전에 회귀분석, 이산수학, 알고리즘 등 이론 내용들을 공부하면서 배경 지식을 쌓기는 했지만

이 확률적 로봇공학에서 사용하는 개념들 중에 여전히 이해가 되지 않는것들이 너무 많았다.

- 유전 알고리즘, 언덕 오르기, 휴리스틱, 분기 한정, rule of thum, 베이지안 네트워크, 우도, 휴리스틱, ad hoc hypothesis 등

 

 이런 용어들을 어떻게 한번 훑어볼수 있을까 고민하다가. 우연히 aistudy 사이트를 다시 찾았고, 이 사이트의 내용으로 가끔가끔 보긴 했으나 제대로 공부하긴 귀찬아서 넘어가던 개념들을 얕개나마 정리할 수 있었다.

300x250

'그외 > 로그' 카테고리의 다른 글

비전공자가 개발자로 취업하려면 컴공기초과목들을 공부해야하나요? by 서윤 TV  (0) 2020.07.13
공부 근황 2  (0) 2020.07.09
낮 한강  (0) 2020.07.07
밤 한강  (0) 2020.07.07
베를린  (0) 2020.07.07
728x90

 뚝섬 공원

 

 

300x250

'그외 > 로그' 카테고리의 다른 글

공부 근황 2  (0) 2020.07.09
공부 근황  (0) 2020.07.09
밤 한강  (0) 2020.07.07
베를린  (0) 2020.07.07
캄보디아  (0) 2020.07.07

+ Recent posts