glfw 설치 후 

다른 디렉터리에다가 include와 lib폴더 생성

include에는 GLFW폴더가 포함되게 저장하면 되고 lib폴더에는 glfw3.lib을 포함하게 하면 된다.

 

이후 visual studio 속서에서 라이브러리랑 인클루드 경로 지정해주고 링커에다가 glfw3.lib, opengl32.lib 써주면 됨.

 

GLAD파일 저장( C++, API->OpenGL 3.3이상, Core, Generate a loader option 선택) https://glad.dav1d.de/

 

선언 시에 glfw보다 GLAD를 먼저 선언할 것.

 

<기본 골격>

1. glfw 초기화 및 window 설정

2. window생성

3. glad 초기화(glad.c파일 포함시키는 거 잊지 말기)

4. render loop 실행

5. tkdydehls apahfl tkrwp

 

 

glfwInit = 초기화

glfwWindowHint = (설정하고자 하는 옵션, 옵션의 값)

glfwCreateWindow = (너비, 높이, 창 이름, NULL, NULL) / 함수의 리턴 값은 GLFWwindow객체

glfwMakeContextCurrent(위 obj) = 현재 스레드의 주 컨텍스트로 지정

 

glad 초기화

 

glViewport(윈도우 왼쪽 아래 모서리 위치(2), 렌더링 윈도우의 너비, 높이) : glfw 자체에서 가져옴

창 크기 변경 가능(콜백 함수 호출로)

 

glfwWindowShouldClose: 루프 시작될 때마다 glfw가 종료하도록 지시되었는지 확인, 맞다면 true반환, 루프 중지

glfwPollEvents: 이벤트(키 입력, 마우스 이동)가 발생하였는지 확인하고 윈도우 상태 업데이트, 정해진 함수(콜백 함수를 통해 등록할 수 잇ㅇ는) 호출

glfwSwapBuffers: 컬러 버퍼를 교체. 컬러 버퍼는 반복하는 동안 이미지 그리고 화면에 출력하는 기능을 한다.

 

glfwTerminate: 렌더링 루프 종료되자마자 할당되었던 모든 자원 정리/삭제

 

Engine --> 중지하라는 메시지를 받기전까지 계속해서 이미지/사용자입력 처리하도록 하게 함 == render loop

 

 

 

 

'공부일지 > OpenGL' 카테고리의 다른 글

OpenGL - 3 (Shaders)  (0) 2020.03.07
OpenGL - 2 (triangle)  (0) 2020.03.06
openGL  (0) 2020.02.19

https://www.youtube.com/watch?v=XN1Ehh-YwlY

 

SLAM -  33mm초 내로 goduigka
자율주행차/드론 – 어디에 있나, 도로와 인도의 경계(mapping)
로봇비전 – 인천 안내로봇
가상/증강현실
- 가벼운 알고리즘 – 무조건 실시간이어야함
- 알고리즘의 성능
- 알고리즘의 robustness
- 하드웨어
Slam은 왓던 경로 수정 가능
<혼동되는 기술>
SFM - slam보다 느리지만 좋은 성능(싥시간x)
Visual Odometry – VO+loop closure = slam/ slam의 써브셋?, 이전프레임에 비해 지금의 나는 어디에 있나
Path Planning – 최단거리를 구해내는 기술, 사용되는 지도가 slam을 통해 만들어낼 수 있다. (slam != path planning)
Slam은 point cloud 형태, 그 사이의 공간 유무를 알 수 없음.
slam에서의 mapping부분을 좀 더
Photogrammetry – 측량, 측정/3d가 아니어도 할 수 있음/
Image stitching

- Visual slam(monocular slam/stereo, rgb-d slam)
- Visual-inertial slam: IMU 센서
- Lidar slam/GPS: 자율주행, 2d lidar는 실내에서(10~20만원)
- Sensor Fusion/ INS: 카메라 + lidar 등 섞어서 좋은 성능내게 


C++사용하기(최적화에 좋음)
1. The cherno 채널 2. 홍정모의 따라하며 배우는 C++


ROS
한계: 보안 때문에 산업에서는ㅅ ㅏ용불가
필수는아님

OS: Ubuntu/linux

선형대수/베이즈확률론/최소자승법문제+최적화/영어

선형대수 = 공간에 대한 이해(이상엽 MATH)
베이즈 확률론 = (칼만필터) 상태(위치)추정(센서리딩) +  SENSOR FUSION
최소자승법 + 최적화 – 최신 SLAM 이해(UDACITY – ROBOTICS SPECIAL??)

컴퓨터비전지식

Deep slam
- 최신분야
- 2d3d object detection & segmentation
- Image retrieval(loop closure)
- 6dof pose localization & estimation
- Cv representation learning(depth estimation, tracking..)
- Optimization for real-time performance
- - inference optimization
- - hardware optimization
- Simd – 특정 하드웨어 안에 로직으 ㅣ형태를 따라 더 빨리 연산


Cpu 클럭수 높고 쓰레드 많은 피씨
Feature based slam  - only cpu
Direct method  - some cpu, many gpu

모바일 환경
- Ios가 더 최적화가 더 잘되어 있음

웹캠은 추천 x(exposure, iso, shutter speed등이 조절 되면 괜찮)
머신비전카메라 추(lds, Edmund optics, allied vision)

1. Feature based(sparse하게 뽑아냄)
2. Direct based(some cpu, many gpu) – 


아직은 기존의 slam이 deep slam보다 좋음
1) Cpu -> gpu memcpy의 비효율성
2) 딥러닝으 ㄹ이용한 direct pose regression은 interpolated image retrieval정도밖에


Depth는 pitch 에 예민
Deep slam은 아직 연구가 많이 안 됨
딥러닝과 슬램을 둘 다 하는 사람은 많이 x
Deep slam이 취직에..

증강현실은 v-slam의 가장 frontier 산업
자율주행에서는 decision making이 젱리 중요
자율주행은 정확한 localization 필요x, 어느정도의 uncertainty에도 미리 대응 가능하다면 ㄱㅊ
증강현실은 정확한 localization을 필요로 함, update도 빨라야 함, 
Low consumption
Gpu를 쓸 수 없다.  증강현실은 실시간으로 모델을 띄워줘야함. 모델링을 할 때 gpu써야 함.  어플자체를 만들 수 없음.
Collaborative slam

#2
2d image -> algorithm  위치정보
양안) 2d  depth -0-> algorithm  위치
Structured light pattern

Digital image
== 3차원 공간의 정볼,ㄹ 2d로
공간에서 반사되어서 오는 빛을 측정
- 카메라 != 사진찍는도구
- 카메라== 빛을 측정하는 센서/시스템
- 빛  필터  photodiode(빛 신호를 전기로)  전류/전압  ADC(digital signal)
Volt엿던 시그널이 디지털 신호가 됨
어둠 = 0, 밝음 = 255
컬러카메라 – bayer pattern을 통해 컬러 이미지 획득 가능
자연광에서 핑크는 불가
핑크는 빨강과 파랑의 조합, 두 공간상의 차이가 별로 나지 않아 섞어서 보게 됨
Michael brown 요크대학교
Unsigned byte array(uchar array)
카메라마다 뜻하는 rgb값이 다름(raw signal -> color space mapping을 회사마다 다르게 갖고 있음
slam에서는 biological vision을 신경x
 Silicon-based visionㅇ,로
Dead pixel – 작동하지 않는 pixel, fovea -optical nerve가 지나가는 지점(보이지 않음)
이미 silicon based가 더 좋음, 하지만 processor가 딸림

Silicon based 중 어떤걸 써야하는가
- Rgb/mono/multi modal
- 학생) 편광(빛반사가 없는 슬램)/적외선/멀티/하이퍼스펙트럴/이벤트./라이트필드


사실 slam은 흑백에 적합. 하지만 많은 하드웨어가 이미rgb기반인 경우가 많음
rgb단점: interpolated signal  실제 signal과 다름(해상도가 낮아짐), resolution이 작아짐
- Loss of resolution
- Loss of brightness(실제 빛의 양이 담기지 않음. 해당 색만 통과되므로)
- More computation’

흑백 카메라는 모든 픽셀에서 모든 파장의 빛을 받음
- 필터가 덜 들어가니 자연스럽게 더 밝음
- Resolution loss도 없음


'공부일지 > SLAM' 카테고리의 다른 글

SLAM 내가 모르는 keyword 정리  (0) 2020.02.21

SLAM(Simultaneous Localization And Mapping)

- Odometry + Loop closure



stereo 이점: estimate the exact trajectory 



monocular 이점: only estimate the trajectory, unique only up to a scale factor.



http://avisingh599.github.io/vision/visual-odometry-full/



Undistortion: lens distortion을 보완, calibration과정에서 얻는 distortion parameter로 수행됨



Rectification: disparit map 연산의 문제점을 줄이기 위해 수행. 모든 epipolar line들이 parallel -> horizontal로. disparty computation에서 matching blocks를 한 방향으로만 찾으면 됨

# Disparity Map Computation

스테레오 카메라를 통해 나온 pair images를 통해 disparity map을 계산할 수 있음

첫 이미지의 (x,y)가 두 번째ㅐ 이미지의 (x+d, y)에 존재한다면 좌표 (x, y)의 disparity map에는 value d를 갖고있다.

 y좌표는 동일(rectified됐기 때문). 즉, d = x(first) - x(second)



# Block-Matching Algorithm

sliding window를 사용해 각 좌표의 disparity를 계산. 



# Sum-of-Absolute Differences(SAD 알고리즘)

https://blog.naver.com/ppgt1225/100191849023

https://studyandroid.tistory.com/66

http://zone.ni.com/reference/en-XX/help/372916M-01/nivisionconceptsdita/guid-53310181-e4af-4093-bba1-f80b8c5da2f4/

영역의 유사성을 측정하는 알고리즘



# Feature Detection

- FAST: http://www.edwardrosten.com/work/fast.html

https://m.blog.naver.com/PostView.nhn?blogId=samsjang&logNo=220655420471&proxyReferer=https%3A%2F%2Fwww.google.com%2F





focal length - pinhole과 film(image plane) 사이의 거리



visual odometry



egomotion



calibration - 우리가 보는 세상은 3차원, 카메라로 찍을 경우 2차원 이미지가 됨. 이 때 3차원의 점들이 어디에 맺히는지는 당시의 카메라의 위치/방향에 의해 결정. 하지만 실제 이미지는 사용된 렌즈, 렌즈와 이미지 센서와의 거리, 각 등 카메라 내부의 기구적인 부분에 의해서 큰 영향을 받음. 따라서 3차원 점들이 영상에 투영된 위치를 구하거나 역으로 영상좌표로부터 3차원 공간좌표를 복원할 때에는 이러한 내부 요인을 제거해야만 정확한 계산 가능, 그리고 이러한 내부 요인의 파라미터 값을 구하는 과정이 calibration(https://darkpgmr.tistory.com/32?category=460965)



extrinsic parameter: 카메라 외부 파라미터(카메라의 설치 높이, 방향(팬, 틸트) 등 카메라와 외부 공간과의 기하하적 관계에 관련된 파라미터



intrinsic parameter: 카메라 내부 파라미터(카메라 초점거리, aspect ratio, 중심점 등 카메라 자체의 내부적인 파라미터)

https://darkpgmr.tistory.com/32



SFM(Structure from Motion)



bundle adjustment



degree of freedom(DOF)



Moravec -> 1. motion estimation pipeline, 2. corner detector(Moravec corner detector)

  - slider stereo 를 사용(a single camera sliding on a rail) - stop and go fashion, digitizing and analyzing images at every location



epipolar line: https://darkpgmr.tistory.com/83

'공부일지 > SLAM' 카테고리의 다른 글

SLAM 0301 스트리밍  (0) 2020.03.05

https://learnopengl.com/

 

teaching platform for the graphics API = OpenGL

 

An object in OpenGL is a collection of options that represents a subset of OpenGL's state.

 

id로 저장 -> id를 이용, obj를 target location of the context에 bind -> window option 설정, un bind the object by setting the current object id of the window target to 0

 

The options we set are stored in the object referenced by objectId and restored as soon as we bind the object back to GL_WINDOW_TARGET

 

1개의 object보다 많이 정의할 수 있음

 

https://learnopengl.com/Getting-started/Creating-a-window

GLFW 소스코드 다운 -> cmake configure/generate -> build glfw.sln

 

'공부일지 > OpenGL' 카테고리의 다른 글

OpenGL - 3 (Shaders)  (0) 2020.03.07
OpenGL - 2 (triangle)  (0) 2020.03.06
OpenGL -1 (window생성)  (0) 2020.03.05

+ Recent posts