Robotics/C++ 3

CMake 디렉토리(경로)를 변수로 받아 사용하기

Visual Studio던 일반적인 CMake던 파일을 읽을 때 필요한 파일 경로와 관련하여 난감한 경험이 해보신 분들은 다들 있을 것 입니다. 절대경로를 코드안에 써놓자니 PC가 바뀌면 손으로 바꿔줘야 하고, 상대경로를 쓰자니 이건 빌드환경에 따라 조금씩 다를 여지가 있어 썩 마음이 놓이지는 않죠. 그나마 Visual Studio는 약간의 장치가 있어서 개발 단계에서는 소스폴더에 읽을 파일이 있어도 빌드 된 실행프로그램이 읽을 수 있도록 되어는 있는데, CMake는 정확하게 맞춰줘야 하죠. 릴리즈까지 대응되는 완벽한 방법은 아니지만, 적어도 CMake에서 매번 경로를 적어줘야 하는 수고를 덜어낼 수 있는 방법을 소개해보고자 합니다. 방식 CMake generation 단계에서는 root 나 source..

Robotics/C++ 2023.01.04

[ZeroMQ] C++와 Python 프로그램간 통신 연동 예제

Inter-process Commnuication으로 TCP/IP를 주로 이용해 왔는데, 기존에 쓰던 boost 보다 요즘은 더 많이 쓰는 것으로 보이는 zeroMQ 라이브러리를 이용해 C++ 프로그램과 Python 프로그램 사이 통신을 시도해보았습니다. C++ Setup 소스코드를 직접 빌드할 수도 있고, vcpkg로 설치하여 사용할 수도 있음. cmake 프로젝트로 개발할 예정이기 때문에 간단하게 vcpkg로 설치 (vcpkg를 우선 설치할 것) .\vcpkg.exe install cppzmq:x64-windows Python Setup Python은 pip으로 간단히 설치할 수 있음. 가급적 venv를 만들어서 사용하는 것을 추천. pip install pyzmq C++ Server 생성 Visua..

Robotics/C++ 2023.01.03

CMake와 Eigen 라이브러리 묶기

Eigen 라이브러리 그렇습니다. C++에서 마치 Matlab의 Matrix를 다루는 것과 같은 효과를 느끼는 (물론 다소 다리지만) 그 라이브러리. Matrix/Vector 연산에 이만한 라이브러리가 없는 것 같은데 심지어 무료입니다. 그 이점에 비해 Eigen 라이브러리는 Documentation이 좀 부족한 것으로 보입니다. 생각해 보면, 누군가 유용한 API를 잔뜩 만들어 두었는데 그 사용법이 적혀있지 않아 쓰지 못한다는 것은 얼마나 비극적인 일일까요. 물론, Eigen은 Doxygen 형태로 Auto-generated Documentation이 열려있기는 하지만, 컴퓨터 분야에서 어느정도 지식/경험이 있지 않은 사람에게는 그림의 떡인 경유가 허다합니다. 그래서, 부족한 저라도 아는 바를 상세히 ..

Robotics/C++ 2019.01.01