Issue libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast Solution 결론적으로 그래픽 드라이버를 잡지 못해서 발생하는 문제입니다. 대부분의 사용자가 사용하는 Nvidia 그래픽 드라이버의 경우 설치 방법이 구글링을 통해 쉽게 찾을 수 있기에, 이 글에서는 내장 그래픽이나 AMD Radeon 계열의 그래픽 카드를 사용하는 경우에 대해 살펴보겠습니다. 바로 제 그래픽 카드가 RX570 입니다. Mesa는 오픈 소스로 구현된 그래픽 드라이버입니다. OpenGL, Vulkan 등 그래픽 API들을 쉽게 사용할 수 있도록 도와주는 역할을 하고 있죠. 특히 Ubuntu 환경에서 그래픽 드..
Issue Computer Vision 분야를 공부할 때 OpenCV는 필수로 사용됩니다. C++/Python 모두 지원하기 때문에 더 효용이 있죠. 여느 날과 같이 SLAM open source 코드를 돌리는 도중 OpenCV에서 아래와 같은 에러가 발생했습니다. triangulation.cpp:44:31: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope 44 | Mat img_1 = imread(argv[1], CV_LOAD_IMAGE_COLOR); | ^~~~~~~~~~~~~~~~~~~ 다급하게 구글링을 했는데 다행히 꽤나 유명한(?) 이슈로 보였습니다. 많은 글들이 있어 쉽게 해결할 수 있었고, 기록을 위해 포스트를 작성합니다. Solut..
Issue 현재 스터디원들과 함께 Ceres를 활용해 LDSO 최적화를 진행하고 있습니다. 그 일환으로 Gauss-Newton Method를 Ceres의 Residual Block으로 Refactoring 중 아래와 같은 에러가 발생했는데요. 빌드도 다 끝냈지만 링크 에러가 발생하고 말았는데요. 몇 가지 이해할 수 없는 부분이 있었습니다. Environment OS: macOS Ventura 13.3.1 Model: MacBook Pro 14 (2021, M1) Apple clang version 14.0.3 (clang-1403.0.22.14.1) Target: arm64-apple-darwin22.4.0 Error Log Undefined symbols for architecture arm64: "c..
Introduction C 언어 프로그래밍에 익숙하신 분들은 enum을 한 번쯤은 들어보셨을 겁니다. 저도 참 유용하게 사용했던 기억이 있는데요. C++에서는 기존 enum의 문제점들을 보완한 enum class를 주로 사용한다는 사실을 접하게 되었습니다. 그러면서 또다시 충격을 받았죠. 역시 난 C++을 C처럼 사용하고 있었어! 이번 포스트에서는 기존 C style enum의 문제점들을 짚어보고, C++에서 권장되는 enum class는 무엇이 다른지 살펴볼 것입니다. C style enum, what's wrong? 아래는 우리가 이미 친숙한 C 스타일의 enum(unscoped-enum) 사용법입니다. 사용자 정의 타입으로 enum 선언을 통해 원하는 타입을 정의할 수 있습니다. #include u..
Introduction 앞서 type casting 포스트에서 전반적인 casting에 대한 내용을 다루었습니다. 해당 포스트는 다양한 종류의 type casting 방법들에 대한 일종의 허브 역할로서 계속 업데이트할 예정입니다. 이번 포스트를 읽으신 후 더 많은 내용을 보고 싶다면 아래 URL을 클릭해 주세요. [C++] type casting Introduction C++은 기본적으로 type safe 하지 않다고 알려져 있습니다. 쉽게 말하면, 문법적으로 틀리지 않으면 의미적으로 문제가 있어도 컴파일러가 잡아주지 않습니다. C++ 수업을 처음 접한다면 searching-fundamental.tistory.com 이번 포스트의 본론으로 돌아와서 static_cast에 대해 이야기해 보겠습니다. 흔히 ..
Introduction C++은 기본적으로 type safe 하지 않다고 알려져 있습니다. 쉽게 말하면, 문법적으로 틀리지 않으면 의미적으로 문제가 있어도 컴파일러가 잡아주지 않습니다. C++ 수업을 처음 접한다면 얼마 지나지 않아 이를 직접 경험할 수 있습니다. int array[4]; array[4] = 1; 이 코드는 문법적으로는 틀리지 않습니다. 또한, 처음 프로그래밍을 접하시는 분들에게는 직관적으로 다가올 수 있죠. 우리는 보통 0이 아닌 1부터 숫자를 카운팅 하니까요. 하지만 위 코드는 접근해서는 안될 영역에 값을 저장했기 때문에 에러를 발생시킬 확률이 존재합니다. 이런 점들을 기억하고 다시 type casting으로 돌아가 봅시다. Type casting은 변수나 함수의 parameter/r..
Intro 이제 일반적인 에디터에서 사용하는 기능들을 Vim에서도 사용하도록 하자. 여러 에디터들이 다양한 편집 기능을 통해 자신을 어필한다. Vim 역시 삭제, 복사, 붙여 넣기, 잘라내기 등 다양한 기능을 지원한다. 다만 일반적인 윈도우 환경의 단축키와 많이 다르기 때문에 적응이 필요하다. Editing Command [Delete] 삭제 Command Description x or dl 커서 위치의 글자 삭제 X or dh 커서 바로 앞의 글자 삭제 dw 한 단어를 삭제 d0 커서 위치부터 행의 처음까지 삭제 D or d$ 커서 위치부터 행의 끝까지 삭제 dd 커서가 있는 행을 삭제 dj 커서가 있는 행과 그 다음 행을 삭제 dk 커서가 있는 행과 그 앞행을 삭제 보통 에디터에서 삭제를 할 때는 B..
Intro Vim에서 커서 이동은 어떻게 할까? 단, 마우스는 사용할 수 없다. 너무나 허무하게도 Vim 역시 일반적인 에디터와 같이 화살표 방향키를 사용하면 된다. 그러나 Vim만의 특별한 Mapping이 있으며, 마우스를 사용할 수 없는 환경을 위해 다양한 이동 명령어가 준비되어 있다. 하나씩 짚어보도록 하자. Navigation Command 우선 일반적인 이동 명령어를 살펴보자. 일반적인 에디터에서 사용하는 화살표 방향키와 어떤 명령어가 매핑되는지 정리했다. Command Description h ⬅ j ⬇ k ⬆ l ➡ 신기한 매핑이다. 일반적으로 윈도우에 익숙한 사용자는 새로운 키배열에 적응하기 쉽지 않다. 꼭 저 배열을 사용할 필요는 없다. Vim도 화살표 방향키를 지원한다. 그러나 Vim만..