[RealSense] Intel RealSense D455 개발환경 세팅
Intel RealSense D455를 사용하기 위해 개발환경을 세팅해주려고 한다.
1. Intel RealSense SDK 2.0 설치
2. Visual Studio 설치
3. 테스트
1. Intel RealSense SDK 2.0 설치
https://www.intelrealsense.com/sdk-2/
Developing depth sensing applications - collision avoidance, object detection, volumetric capture and more
Free cross-platform SDK for depth cameras (lidar, stereo, coded light). 10+ wrappers including ROS 2, Python, C/C++, C#, Unity and more. Try!
www.intelrealsense.com
우선 위 사이트로 들어가서 Intel RealSense SDK 2.0을 다운로드 받는다. 위 사이트에서 설치 버튼을 누르면 깃허브 페이지로 이동되는데, 페이지 최하단에서 각자의 환경에 맞는 SDK를 선택하여 설치하면 된다.

난 윈도우10을 사용 중이므로 세 번째에 해당하는 것을 다운로드 하겠다. 다운로드가 완료되면 파일을 실행해서 설치를 해주면 된다.

'Intel RealSense Viewer and Quality Tool'은 카메라를 쉽게 연동해주는 툴이고, Visual Studio에서 개발하려면 'C/C++ Developer Package'만 설치해주면 된다고 한다. 하지만 뭐가 뭔지 잘 모르는 나는 미래가 두렵기 때문에... 기본으로 체크되어 있는 걸 다 설치하겠다. 그리고 next 해서 install 해주기.
설치 완료 후 환경 변수를 적용한다. (이 부분은 필수는 아닌 거 같으나 예상치 못한 오류를 대비하기 위한 작업인 것 같다) '시스템 속성 > 환경 변수 > Path' 에 'C:\Program Files (x86)\Intel RealSense SDK 2.0\bin\x64' 경로를 추가하면 된다.
2. Visual Studio 설치
그리고 C++ 프로젝트를 생성하라는데... 다들 Visual Studio를 쓰고 있다 vsCode로는 안 되는 걸까. 또 잘 모르는 나는 다른 사람들이 쓰는 걸 따라가겠다... Visual Studio를 설치했다.
설치 후 컴퓨터를 재부팅하라는 안내멘트가 떠서 재부팅 해줬다. 그리고 Visual Studio를 시작해서 C++ 프로젝트를 생성해줬다. '빈 프로젝트'가 아니라 '콘솔 앱' 템플릴으로 생성했다

위 화면이 나타나면 '보기 > 다른 창 > 속성관리자'을 선택한다.

이제 속성관리자에서 Release x64에 기존 속성 시트를 추가한다. 해당 폴더에서 마우스 우클릭을 하면 된다.

'C:\Program Files (x86)\Intel RealSense SDK 2.0'에 있는 아래 3개를 추가해주면 된다.

아래 사진처럼 이 부분도 Release x64로 변경한다.

3. 테스트
예제코드로 실행을 해보려고 했는데 바로 오류가 생겼다. 다양한 예제코드가 있지만 '#include <librealsense2/rs.hpp>'는 반드시 해주는데 'librealsense2/rs.hpp' 파일소스를 찾을 수 없다는 오류가 뜨는 것이다.
일단 오류 기록...

+) 해결 2022.02.22.화
아래 링크를 참고해서 "librealsense2/rs.hpp"를 열 수 없는 문제는 해결을 했다.
https://devhyeon.tistory.com/7
Intel realsense 개발환경 설정(C/C++)
https://github.com/IntelRealSense/librealsense/releases IntelRealSense/librealsense Intel® RealSense™ SDK. Contribute to IntelRealSense/librealsense development by creating an account on GitHub. g..
devhyeon.tistory.com
그러나... 새로운 오류와의 만남.

얜 또 뭘까...? 이 오류는 검색해도 나랑 같은 경우를 찾을 수가 없다... 일단 해결해보자.
아직 해결은 못했지만 opencv_highgui가 영상 및 비디오 입출력을 담당하는 모듈인 것은 알아냈다. 혹시 RealSense 카메라카 컴퓨터에는 연결이 되었지만 코드와는 제대로 연결이 안 된 것 아닐까...?
+) 해결...? 2022.02.23.수

파일탐색기에서 opencv_highgui341.lib 파일의 위치를 찾아서 프로젝트 속성에 경로를 추가해줬다. 그랬더니 위 오류가 더이상 발생하지 않았다. 그리고 새로운 오류...

얘도 해결을 해보자...
+) 애매한 해결 2022.02.23.수
그냥 열 수 없다고 하는 파일의 경로를 다 연결하고, 프로젝트 파일에 lib 파일을 넣어줘서 오류가 뜨긴 하는데 예제 코드로 얻고 싶었던 값은 나온다.
+) 허무한 해결 2022.02.23.수
Visual Studio를 2022 버전이 아니라 2019 버전으로 삭제 후 다시 설치해줬다. 그랬더니 첫 번째에 떴던 오류도 발생하지 않고 정상적으로 작동했다... 며칠 간 뻘짓한 것이 아까운....

중심 부분이 카메라와 얼마나 떨어져있는지 거리를 계산해서 보여준다. 코드를 실행시킨 그 순간의 거리만 나오는 줄 알았는데, 실시간으로 보여주고 있다.
// License: Apache 2.0. See LICENSE file in root directory.
// Copyright(c) 2019 Intel Corporation. All Rights Reserved.
#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include <iostream> // for cout
// Hello RealSense example demonstrates the basics of connecting to a RealSense device
// and taking advantage of depth data
int main(int argc, char* argv[]) try
{
// Create a Pipeline - this serves as a top-level API for streaming and processing frames
rs2::pipeline p;
// Configure and start the pipeline
p.start();
while (true)
{
// Block program until frames arrive
rs2::frameset frames = p.wait_for_frames();
// Try to get a frame of a depth image
rs2::depth_frame depth = frames.get_depth_frame();
// Get the depth frame's dimensions
auto width = depth.get_width();
auto height = depth.get_height();
// Query the distance from the camera to the object in the center of the image
float dist_to_center = depth.get_distance(width / 2, height / 2);
// Print the distance
std::cout << "The camera is facing an object " << dist_to_center << " meters away \r";
}
return EXIT_SUCCESS;
}
catch (const rs2::error& e)
{
std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl;
return EXIT_FAILURE;
}
catch (const std::exception& e)
{
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
}