본문 바로가기
Lap

180727-31 Recording Program Update

by matters_ 2018. 7. 31.

180727


몇가지 해야 할 일이 더 생겼다. 우선순위를 매겨 나열하자면



1. 최종 프로그램의 3일치량의 데이터량을 알아내는 작업


2. 2개 이상의 카메라를 컴퓨터에 물렸을 때 동시 녹화가 되게 기존의 프로그램을 수정하는 작업


3. 파라미터를 조절하여( Depth, Infrared, Color) 녹화가 잘되게 최적의 데이터 값을 뽑아내는 작업




그럼 1번을 우선적으로 진행하자면 color Depth 값과 binary Depth 값이 같이 저장되게 만들라고 했으므로 

현재 color Depth만 저장되는 프로그램에 binary Depth를 추가 시키기로 했다. 


Video writer를 하나 더만들고 알고리즘을 따라 추가를 해준 결과! Binary Depth가 저장이 되지 않았다 고민끝에 이유를 발견 할 수 있었는데 

OpenCV의 open 함수에 이유가 있었다. open함수의 제일 끝에 bool형식인 iscolor()함수가 있었는데 binary는 false로 해주어야 함에도 true로 해버려서 계속 오류가 발생했던 것이다.


1
2
3
4
5
    if (!BinaryDepthWriter->open(pathnameS, VideoWriter::fourcc('X''V''I''D'), 30, Size(depth_width, depth_height), true)) {
        delete BinaryDepthWriter;
        return;
    }
 
cs


위의 코드를 아래와 같이 고치니 저장이 잘 되었다.



1
2
3
4
5
    if (!BinaryDepthWriter->open(pathnameS, VideoWriter::fourcc('X''V''I''D'), 30, Size(depth_width, depth_height), false)) {
        delete BinaryDepthWriter;
        return;
    }
 
cs



180730



그 후 주말동안 녹화를 했는데 금요일날 녹화한건 토요일 새벽 3시 50분쯤에서 멈춰있었고

토요일날와서 다시 실행시킨 건 당일 10시 50분쯤에 멈추었던 것이다.


프레임이 5000ms이내에 도착하지 않았다는 문구 표시와 함께 흠...

이문제는 보다 정확한 검증을 위해 다른 컴퓨터에서 미리 실험을 해보기로 했고 


1번 문제의 결과는

우선 같은 10분파일이라도 픽셀값이 바뀌는 빈도에 따라 파일의 용량이 다르게 나오므로 이중 최대값을 기준으로 좀 널널하게 계산하기로 했다.



노란색으로 표시된 최대값 기준


Color Frame  0.6G

BinaryDepth 1.5G

ColorizedDepth 1G

Infrared 0.08G


퉁쳐서 3G로 잡고 * 6 (1시간) * 24(하루) * 3(3일) = 1296G의 결과 값이 나왔다. 이는 3개의 카메라를 4TB하드에 저장한다고 가정하면 3.5TB가 나오기 때문에 적합하다는 결론이 나왔다. 


일단 1번은 해결했고 2번으로 넘어갔다.


D435 2대가 미국에서 더 날라옴에 따라 2-3중으로 동시녹화가 되는지 실험에 착수하였다.


우선 그냥 기존 프로그램에 2대를 꼽고 실행하니 그냥 한 카메라만 실행이 된다. 흠...






막막하던 찰나 Tsukasa Sugiura씨가 떠올랐다.  한번 더 메일을 보내 문의를 해볼까 생각하며 전에 Tsukasa Sugiura씨가 보내준 자료를 다시 살펴보고 있었다.아니 그런뎈ㅋㅋㅋㅋㅋㅋ 깃헙자료에  MULTI 라는 예제가 있었다ㅋㅋㅋㅋㅋ


https://github.com/UnaNancyOwen/RealSense2Sample/tree/master/sample/Multi


내가 생각하는 그 멀티인가 하며 프로젝트를 새로 만들어 코드를 보니 맞는거 같아서 실행시키니 아니나 다를까~~~ 






동시실행되는 것이 아닌가 !????!!??!?!?!??!!!!! ㅎㅎㅎ 이제 두코드를 짬뽕시키기만 하면 되는 것이다. ㅎㅎㅎ 생각보다 일이 잘 풀린 거 같다.



180731


코드를 짬뽕시켜 실행을 시켰더니 빌드 링크는 되는데 실행오류가 떳다 디버그를 해보니 



비디오 포인터 부분에서 오류가 발생하는 것 같아 비디오 포인터 부분을 수정하기로 했다. 그래서 구글링을 통해 수소문한 결과  좋은 포스팅을 참고하여 다음날 해결완료!!



클래스와 상속 Friend, Virtual, Template 등 여러 C++기본 자료들을 복습하는데 좋은 포스팅이다 참고 하기 바란다 

http://unikys.tistory.com/355


하지만 예상치 못한 변수가 생겼다. 

한 컴퓨터에 5M 연장 케이블에 물린(증폭기 전원 포함) realsense 카메라를 3개 이상  (D435: 2개  D415: 1개)한 컴퓨터에 물리니 

Real Sense Viewer로도 SCP overflow라 뜨면서 영상출력이 정상적으로 이뤄지지 않는다..

2개만 물려야할지 좀 더 실험을 해봐야겠다.


알고보니 포트 문제인거 같다 펌웨어 업데이트하고 최신 컴퓨터에 물리니 Real Sense Viewer에서 3개 동시에 나온다.


오늘은 여기까지~






댓글