분류 전체보기 14

C++ STL 정리

STL은 4가지 분류로 나뉜다.ContainersAlgorithms numeric: 난수 생성 + 최적화된 array들을 기반한 알고리즘 algorithm: [begin, end) 기반으로 range 있는 container에 쓰는 알고리즘 IteratorsFunctors0. itoaC의 memset의 c++ version이다.수학적에서 관용적으로 쓰이던 표현이다. set of number 혹은 unit vector 쓴다. 그리스어로 짧은 문자이다.templatevoid iota( ForwardIt first, ForwardIt last, T value ); // (constexpr since C++20)https://en.cppreference.com/w/cpp/algorithm/iota1. copy_n..

Engineering/C++ 2024.12.19

C++17 Class Template Argument Deduction (CTAD)

C++ 17부터는 Class Template Argument Deduction이 적용된다. 말 그대로 template argument가 생략될 수 있다는 뜻이다.적용되는 분야는 다음과 같다.template으로 선언 돼 있는 변수를 초기화 할 때 (possibly cv-qualified):std::pair p{2,2.3}; // pairstd::tuple tp{"kor",2,'a'}; // std::make tuple new 표현식templatestruct A{ A(T, T);};auto y = new A{1, 2}; // allocated type is A함수 호출auto lck = std::lock_guard(mtx); // deduces to std::lock_guardstd::copy_..

Engineering/C++ 2024.12.19

Gaussian Distribution의 Covariance Matrix을 타원으로 시각화 및 샘플링 하는 방법

Gaussian을 타원형으로 시각화한다. Kalman filter, Gaussian Splatting, VAE(Variational Auto Encoder), low pass filter의 smoothing Kernel... etc. 많은 곳에서 Gaussian이 쓰인다. 이런 알고리즘들은 Covariance를 타원으로 시각화하고, 타원으로 샘플을 추출한다. 해당 포스팅은 3가지로 나뉜다.Background에선 Gaussian의 정의와 타원이 나타내는 의미에 대해서 서술한다.둘째, LU 분해를 통해 covariance matrix에서 sampling하는 방법에 관해 서술한다.셋째는 covaraince matrix에서 타원을 그리는 방법에 관해 서술한다.1. Background1.1 Gaussian Dis..

Mathematics 2024.10.26

UML 언제 써야 하는가?

Clean code의 작가 밥 아저씨의 "UML 실전에선 이것만 쓰인다"의 내용을 발췌했다.소프트웨어 공학 과목을 들으면서 공감되는 부분이 많아서 가져왔다. 1. UML이란? Unified Modeling Language로 SW에서 설계할 때 쓰이는 Diagram을 만드는 언어이다.  StarUML과 Draw.io를 통해서 그릴 수 있다.  2. Diagram이란Diagram: 그래픽이나 구조로 대상을 나타내는 이다. 다이어그램으로 전달하고 시픈 것은 Concept, Specification, Implementation 3가지 이다.Concept(개념): 소스코드와 관계가 적다. 자연어 논문과 가깝다.Animal←Dog 해석이 다분함 속한다, 속박한다. 다양한 해석이 가능하다. Specification(..

카테고리 없음 2024.10.12

논문 어디에 제출하고 어떻게 평가 받는가?

1. 논문은 어디다 제출하는가?Conference와 Journal 두 곳에 제출할 수 있다. ConferenceJournal평가 기간3달6~2달투고 가능 기간매년 낼 수 있는 기간이 정해져 있다아무때나 컴퓨터 분야는 빠르게 발전하는 분야이다 보니, 컨퍼런스가 더 인기가 많다.저널이나 컨퍼런스에 제출 후, APC(Article Processing Charge)를 지불한다. Axiv는 논문을 미리 공개해서 피어 리뷰를 받을 수 있는 사이트이다. 2. SCI(Science Citaion Index)급 SCOPUS급 논문은 무엇인가? 두 분류 모두 Accept된 저널에 따라서 나뉜다. 출판사는 여러개의 저널을 출판하고 있다. 가령 IEEE Access와 IEEE Transaction은 같은 출판사에 다른 저널이..

카테고리 없음 2024.09.18

C++에서 auto vs decltype vs typeid

C++를 하다 보면 타입이 맞지 않아 에러가 나는 경우가 많다. 이때마다 python의 type(class)이 부러워진다. 한편으론 생각 없이 auto와 decltype을 남발하면 되는 것이 아닌지 의구심이 든다. 하지만 C++의 장점은 이 타입을 강력하게 지켜준다는 것이다. 이 때문에 런타임에 발생할 에러를 미리 잡을 수 있고, 성능도 빨라진다.해당 포스트의 목표는 C++의 타입을 알 수 있는 세가지 방법, auto, decltype, typeid를 비교하는 것이다.1. auto와 decltype이들은 C++11에 추가된 기능이며, 근본은 generic programming에 근간을 두고 있다. template과 원리가 똑같다. 즉, user가 준 type에 맞춰서 코드를 생성해 준다. generic ..

Engineering/C++ 2024.06.10

C++에서 다양한 타입을 벡터 혹은 배열에 저장하는 법

역전파 코드를 개발 과정에서 문제점을 발견했다. 다른 class(type)의 레이어들을 어떻게 순서대로 방문할 것인가?  반복문을 쓰고 싶지만, vector나 array는 같은 타입의 묶음만 정의가 가능하다. 만약 이들을 순서대로 방문해 주는 자료형이 없다면 아래와 같이 하나씩 방문했을 것이다.// https://github.com/luckydipper/MNIST_DEEP_LEARNING_CLASSIFIERint main(){ neural::Linear l1{flatten_img_size, in_out_size[0]}, l2{in_out_size[0], in_out_size[1]}, l3{in_out_size[1], in_out_size[2]}, l4{in_out_size[2], in..

Engineering/C++ 2024.06.04

드론 프로젝트할 때 고려할 요소. ps. realtime video stream drone control

K-SW square 프로그램으로 Purdue 대학교에서 프로젝트를 하고 있다. 원래는 realtime video stream를 기반으로 드론을 제어하려고 했다. 그러나 많은 난관에 부딪혔다. 다른 분들은 이런 고생을 하지 않았으면 하는 마음에 글을 쓴다.0. 결론  만약 Realtime video streamming을 통해 드론 제어를 한다면 둘 중 하나를 선택할 것이다.wifi area에서 끝내려면 parrot bebop2을 사용할 것이다. 만약 wifi area 밖으로 보내려면 pixhawk를 통한 opensource 드론을 활용할 것이다.1. 어떤 UAV을 사용할 것인가?기체의 종류에 따른 UAV 분류.  multi copter, Fixed wing, VTOL (vertical take of an..

Engineering 2024.04.22

Docker hub에 image 올리는 법.

1. 어떤 docker image를 올릴 것인지 확인합니다. docker image ls 위 명령어를 통해 실행가능한 docker image들을 확인합니다. 2. user id 를 확인합니다. 제 user name는 luckydipper입니다. 3. docker login합니다. 만약 username이 길다면 bashrc에 export dockerId="user name"과 같이 등록해서 사용할 수 있다. docker login --username luckydipper 4. usernamer과 tag를 등록합니다. docker image tag gtsam_tutorial:0.6 luckydipper/gtsam_tutorial:0.6 5. docker hub에 올립니다. docker push luckydi..

Engineering 2024.02.03

Active SLAM이란?

1. 기존 SLAM(Simultanious Localization And Mapping) 알고리즘의 문제점은 무엇일까요? 두 가지 문제점이 있습니다. 1. 어느 경로로 움직여야 빠르게 맵을 만들 수 있을까요? 2. 어느 경로로 움직여야 본인의 localization을 정확히 할 수 있을까요? 이러한 문제를 해결해 주는 알고리즘이 Active SLAM입니다. 해당 지역을 빠르게 탐사하기 위해 로봇 자체가 어디로 움직일지 결정을 내리는 알고리즘입니다. active slam 문제를 exploration 문제라고 부르기도 합니다. 2. Active SLAM은 3가지 과정을 통해 이뤄집니다. 2.1 복수개의 Global way point 후보를 정합니다. 위 SLAM구조에서 왼쪽에 해당합니다. 즉 로봇이 갈 위치..

Paper Review/SLAM 2024.01.28