분류 전체보기

· Paper
Abstractground plane을 활용해 기존의 LOAM보다 가벼운 real time 6자유도 pose estimation 방법을 소개한다. LeGO-LOAM은 저전력 임베디드 시스템에서 사용할 수 있을 정도로 가볍게 실시간 위치 추정이 가능하다. 또한 segmentation과 optimization 과정에서 ground plane을 활용하는 특징이 있다. 전체 과정을 간단하게 설명하자면, noise를 1차적으로 거르고, planar과 edge feature을 추출한다. 2 step의 Levenberg-Marquardt 최적화 과정에서 planar과 edge feature을 사용해 연속적인 스캔 데이터에서 서로 다른 컴포넌트를 구분한다. 그리고 LOAM과의 성능 비교를 위해서 다양한 지형에서 테스트..
· Paper
저자 : Ji Zhang, Sanjiv Singh발행연도 : 2014AbstractLOAM은 6자유도로 움직이는 2축 라이다의 range 측정을 이용한 Odometry와 mapping을 실시간으로 계산하는 SLAM 알고리즘이다. range 측정 값은 수신되는 시간이 다르고 motion estimation 에러가 Point Cloud 결과에 오정합(misregistration)을 야기한다. 기존에는 offline에서 loop closure를 활용해 drift를 최소화한 3D 맵을 만드는 데 초점이 맞추어져 있다. 그러나 LOAM에서는 이 문제를 자체적인 Odometry 알고리즘과 Mapping 알고리즘 2개로 나누어 병렬로 처리하여 low-drift, low-computational complexity 특..
1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2. 문제 풀이이 문제는 점프와 순간 이동 중에 선택해서 에너지 사용량을 최소가 되도록 하여 최솟값을 반환해야 한다. 점프를 하면 한 번에 원하는 좌표로 이동할 수 있지만 에너지 사용량이 점프한 칸 수만큼 추가되어야 한다. 순간이동은 현재 좌표에서 2배에 해당하는 좌표로 이동할 수 있는데 에너지 사용량은 변화가 없다.  처음에는 0에서 4, 0에서 3, 0에서 2, 0에서 1까지 점프한 다음, 순간이동이 가능한지 확인했다. (현재 좌표..
메모리에 각각의 자료구조가 어떻게 올라가는지 알아보자. 배열은 항상 메모리의 연속적인 공간에 할당된다. 메모리에서 데이터를 가져오는 시간이 CPU 연산 시간보다 길기 때문에 메인 메모리에 접근하는 시간은 전체 성능에 영향을 준다. 이때, 연속 공간에 배열을 할당하면 locality가 향상되어 메모리에서 데이터를 가져오는 시간을 줄일 수 있다. locality에 대해서는 이후 캐시 메모리에서 자세하게 배울 것이다.   그렇다면, 한 코드에서 여러 개 배열을 선언하면 어떻게 할당될까? 일반적으로 하나의 배열을 연속적인 공간에 할당되지만 서로 다른 배열은 연속적으로 할당되지 않는다. 즉, 처음 할당된 배열 다음에 항상 두번째 할당된 배열이 놓이지 않는다는 것이다. 아래처럼 배열을 선언한다고 했을 때, 각각 하..
프로그램이 실행되려면 소스 코드가 컴파일러에서 컴파일되고, 어셈블러가 기계어로 바꾼 다음 링커에서 실행 가능한 파일로 만들어야 한다. 그 중에서 링킹 과정에 대해서 자세히 알아보자. 링커는 하나의 실행 가능한 파일로 만들어주는 일이다. 아래 명령어를 통해 컴파일을 하면 아래 그림과 같은 과정으로 실행 가능한 형태로 만들어 준다. 링커에는 relocatable object file이 input으로 들어가고 링커에서 executable object file로 변경되어 나온다.gcc -Og -o prog main.c sum.c./prog  링커에서 나온 executable object file은 메모리에 올라간다. 즉 메모리의 일부에 locate되고 실행할 수 있는 형태인 것이다. linking 과정은 lin..
RISC-V에서 함수를 호출하는 규약이 존재한다. 꼭 지켜야 하는 규칙은 아니지만 대부분 이렇게 사용한다고 보면 된다. 함수 호출 과정은 약간 복잡하다. 아래와 같은 함수가 있을 때 main()에서 f1, f2로 argument x와 y를 적절하게 전달해야 한다. 메모리 공간을 할당해 함수를 실행하고, 실행 후에는 기존의 PC 값으로 돌아와야 한다.  일반 분기문과 달리, 명령어의 진행 순서가 연속적이지 않고 함수를 수행하고 나서는 꼭 원래 위치로 돌아가야 한다. 또한 아래 예시처럼 함수 수행 후 return 값이 main 함수에서 다시 사용될 수 있다. 이러한 복잡한 과정에서 아키텍쳐에서는 어떻게 구현되어 있는지 알아보자. 아래는 main에서 j 명령어를 사용해 myfn으로 이동하는 과정이다. myfn..
Search에 대해 알아보기 전에 다양한 search 방법과 이론들에 대해 알아보자. Search 이론상태 공간 트리상태 공간이란 발생할 수 있는 모든 상태를 포함하는 집합이다. 예를 들어 8-퍼즐의 경우 9! = 362880 크기의 상태 공간을 가진다. 이러한 상태를 연결된 트리 형태로 그리면 상태 공간 트리가 된다.  맹목 탐색효율적인 전략 없이 정해놓은 순서에 따라서 탐색하는 알고리즘으로 BFS, DFS가 대표적이다. BFS는 최적 해를 보장할까? 그렇다. 왜냐하면 모든 깊이에서 가능한 모든 자식 노드를 살피기 때문이다. 그렇다면, 최적 해를 항상 보장하면서 이동 횟수를 줄일 수는 있을까? 없다. 왜냐하면 모든 노드를 탐색하며 최적 해를 찾는 방법이기 때문이다. 이러한 이유로 BFS는 너무 느리다는..
Reinforcement Learning강화학습에 대해서 이해하기 위해서 아래 두 가지 문제를 예시로 알아볼 것이다. 먼저, 이 두 문제에 대한 기본적인 정의를 알아보자. 다중 손잡이 밴딧 문제$1을 넣고 여러 손잡이 중에 하나를 골라서 당기면 $1을 잃거나 따는 문제이다. 손잡이마다 승률은 정해져 있는데 사용자는 확률을 모른다는 전제가 깔려 있다. 행동 - 상태 변화 - 보상의 학습 사이클에서 상태가 없는 단순한 문제이다.  탐험형 정책(exploration policy) : 처음부터 끝까지 무작위로 선택탐사형 정책(exploitation policy) : 몇 번 시도해보고 승률이 높은 손잡이만 당기는 것강화학습에서는 게임을 시작해서 끝날 때까지 기록을 에피소드라고 하며, 에피소드가 길면 확률을 통해서..
RISC-V ISA사람이 내린 명령어는 컴퓨터 내부에서 숫자의 연속으로 저장된다. 숫자들이 모여 명령어로 해석되며 RISC-V에서는 32bit 고정된 명령어 길이를 갖는다. 명령어 길이를 모두 동일하게 고정하고, 명령어 종류에 따라 형식은 다르게 설정하였다. 대략 6개 타입으로 분류할 수 있다. R TypeArithmetic3개의 operand를 가지고 있다. 예를 들어 add a, b, c라는 명령어는 b와 c의 레지스터에 저장된 값을 더해서 a에 저장하라는 의미이다. RISC-V의 Arithmetic 명령어는 메모리에 있는 데이터를 직접 사용하지 않는다. 그 이유는 당연하게도, 레지스터에서 값을 가져오는 게 훨씬 빠르기 때문이다. 예를 들어, a = b + c + d - e;라는 C언어를 어셈블리어로..
CNN컨볼루션 신경망은 이미지를 분석하기 위한 패턴을 찾아 이를 직접 학습하고, 학습한 패턴을 이용하여 이미지를 분류한다. CNN은 Convolution Layer, Pooling Layer, Fully Connected Layer를 사용해 사람의 시각 처리 방식을 모방한 딥러닝 모델이다. Convolution Layer : 입력된 이미지를 특정 커널을 이용해 이미지 특징을 추출하거나 신호 변환에 사용한다.Pooling Layer : 범위 내의 픽셀 중 대표값을 추출한다.Fully Connected Layer : 이미지를 분류하는 인공 신경망이다.Convolution Layer이미지 특징 추출, 신호 변환에 사용한다. 아래 그림에서 이미지는 8*8 크기이고 kernel은 3*3으로 표현했다. convol..
소-은
'분류 전체보기' 카테고리의 글 목록