Robotics 17

동영상 렌즈 왜곡 없애기 - 손쉽게 자동으로 펴는 방법

여행하며 액션캠을 이용해 영상을 찍다 보면 편하고 성능은 좋은데 화각에서 고민이 될 때가 많습니다. GoPro를 기준으로, 렌즈 왜곡이 없는 Linear View, 광각인 Wide View 등 여러 옵션이 있는데, 이는 찍기 전에 정해야 하는 설정이고 찍고 나면 나중에 바꾸는 기능은 고프로에서 제공해주지 않습니다. 즉, 처음에 잘 골라야 하는 거죠. 당연히 찍다 보면 실수던 변심이던 여러 이유로 화각설정이 찍고 나서 보니 마음에 들지 않을 수 있습니다. 이런 경우를 위해 제가 프로그램을 하나 만들었는데, 이 프로그램을 이용하여 손쉽게 자동으로 광각 렌즈 왜곡을 없애는 방법을 소개해 드리고자 합니다. (이해를 위해 개념소개를 먼저 적고 사용법은 하단에 적으니, 바로 사용을 원하시면 포스팅 아래쪽으로 바로 ..

Robotics 2023.05.18

ROS에서 OpenCV 사용하기 (C++)

로봇공학 분야뿐 아니라 컴퓨터와 관련된 거의 모든 분야에서는 프로그래밍 자체에 대한 이해만큼이나 중요한 것이 필요한 기능을 담고 있는 라이브러리에 대한 이해와 활용능력입니다. 이론적으로는 개발자가 지식이 많으면 처음부터 끝까지 모두 직접 개발할 수 있다고 생각해 볼 수는 있으나, 현실적으로는 많이 사용되는 라이브러리 없이 수준 높은 프로그램을 개발하는 것은 불가능에 가깝고, 가능하다고 해도 너무나도 비효율적이기 때문에 일정 수준까지는 공개된, 가능하면 무료로 공개된 라이브러리를 사용하는 것이 큰 도움이 됩니다. 다른 한편으로는 다른 개발자들과 같은 라이브러리를 사용하면서 호환성에 대한 이점도 크게 가져갈 수 있습니다. 그럼에도 많은 경우에 라이브러리를 개발중인 시스템에 불러오는 과정과 사용법에서 막히면서..

Robotics 2023.05.10

Arduino IDE로 Raspberry Pi Pico 프로그래밍 - 파이 피코를 아두이노처럼 사용하기

아두이노 Arduino가 오픈소스 MCU를 본격적으로 열며 많은 사람들이 전문지식이 없이도 쉽게 DIY 프로젝트를 시작할 수 있게 된지 어느덧 10년이 넘었습니다. 자연스럽게 아두이노 역시 구형 하드웨어가 되었고, 새로운 프로세서들에 비해 성능도, 기능적인 제한도 많은 신세가 되었습니다. 아두이노가 기반으로 하는 ATmega 계열 MCU는 80년대에 나온 상당히 오래된 프로세서로, 아직까지 살아남아있는 것이 신기할 정도로 오래된 프로세서 입니다. 아두이노 프로젝트가 시작될 때도 이미 구형 제품이었는데, 아마 처음 설계시에는 우선 싸고 쉽게 쓸 수 있는 설계를 하는 것이 우선이었을 것 같습니다. 시간이 지나 임베디드 프로세서 역시 큰 발전이 있었고, 구체적으로는 ARM 계열의 MCU들이 싼 가격과 보다 높..

Robotics 2023.04.18

프로그래밍 언어는 뭘 배워야 하나 - 컴퓨터 언어 선택하기

프로그램 개발이 본업은 아니지만, 하는 일이 필연적으로 프로그래밍을 적지않게 하게되는쪽이다 보니 프로그래밍 언어, 나아가 어느정도의 개발에는 익숙하면서 생각도 많이 하는 편 입니다. 해가 갈 수록 컴퓨터 전공이 아닌 분들이 프로그래밍을 배우는 경우가 많아지는 것 같고, 제 주변에서도 이제 막 프로그래밍을 배우려는 사람들의 관련 질문이 점점 많아지는 듯 합니다. 오늘은 로봇을 하는 사람의 시선에서 보는 프로그래밍 언어에 대한 전반적인 저의 생각을 공유해보고자 합니다. 프로그래밍 언어가 뭔가요? 언어라는 용어가 붙어있지만, 진짜로 언어처럼 복잡하고 오래배워야하는 건 아닙니다. 컴퓨터에게 명령을 주는 소통을 한다는 의미에서 'Language' 라는 용어가 붙은 것 같은데, 사실상 개발 도구라고 보는 편이 더 ..

Robotics 2023.02.08

'Python': No such file or directory 원인 및 해결

Python 참 쓰기 편하고 활용도도 높은 좋은 프로그래밍 툴 입니다만, 그래도 종종 답답한 상황을 맞이할 때가 있습니다. 그 중 하나가 아주 잘 알려진 python2와 python3이 공존하면서 발생되는 문제들인데, 그 중에서도 가장 흔히 보이는 문제가 'Python': No such file or directory 에러 입니다. 원인 이 문제는 python 이라는 명령어에서 비롯됩니다. Python 2 버전까지는 python 파일을 실행 시 자연스럽게 python 명령어를 사용해서 실행하였으나, 그 다음 버전인 python3가 등장하면서 부터 문제가 생깁니다. 이미 python2로 많은 개발을 해오던 사람들은 Python3가 배포되었다고 해도 이전버전을 한동은은 유지해야 하고, 이전버전에서는 없던 새..

Robotics/Python 2023.02.07

로봇하는 사람이 본 ChatGPT - OpenAI

머신러닝을 기반으로 하는 기존에 없던 솔루션들이 분야를 가리지 않고 침투하여 판을 뒤집기 시작하는 것을 처음 보게된지 벌써 거의 10년 정도 흘러, 이게 이제 여기까지 와서 판을 흔드는구나 라는 생각이 들어 글을 쓰기 시작 했습니다. 로봇을 하며 그나마 머신러닝의 초기를 옆에서 보면서도 예술과 창작의 영역이 가장 마지막 산이 될 것이라고 생각했던 것이 무색하게 가뿐히 대부분의 인간을 넘어서는 창작성을 보이는 모델이 나타나는가 싶더니 이제는 대화로는 이게 사람인지 아닌지 구분도 안 될 정도로 자연스러워진 언어처리까지 보면서 세상이 또 크게 한번 변하는구나 싶습니다. 이제는 생각을 바꿔 인공지능이 도달하는 마지막은 결국 농사가 아닐까 싶습니다. 워낙 다양한 분야에서 사람들을 놀래키는 중이라 컴퓨터가 무엇을 ..

Robotics 2023.01.17

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

라이다가 뭔가요? - LiDAR 원리 소개

자율주행에 관심이 있으신 분들은 한번 쯤 들어봤을 이름, 라이더에 대해 간단한 소개를 적어보려고 합니다. 라이다는 원래 영어로 LiDAR라고 쓰는데, LASER Range Finder라는 이름으로도 쓰이는 레이저 센서 입니다. 레이저라고 하면 잘 감이 안올 수 있는데, 쉽게 말해 빛을 쏘고 돌아오는 시간으로 부터 거리를 측정하는 장비 입니다. 중학교 쯤 과학시간에 빛의 속도 라는 것을 배웠던 것 같습니다. 대충 빛의 속도는 일정하게 엄청 빠르다는 내용 입니다. 또, 비슷한 시기에 과학시간에 속도, 거리, 시간에 대한 내용을 배웠던 것도 같습니다. 대충 속도와 이동시간을 알면 거리를 계산할 수 있다는 내용 입니다. LiDAR는 이 점을 이용한 센서인데, 우선 아래 가정을 두고 설명해 보겠습니다. 라이다의 ..

Robotics 2022.11.12

연구논문의 발행 - 학회, 저널, 그리고 arxiv

로보틱스 분야 자체가 아직 많은 부분이 연구단계에 있다보니, 대중적으로 알려지거나 언론에서 보여주는 화려한 로봇시연 보다 아직 연구로 진행중인 분야가 훨씬 더 많습니다. 연구자들은 자신의 연구성과를 논문을 통해 공개하고 이를 자신의 연구 실적으로서 인정받기 때문에, 가장 최근 연구내용들은 주로 논문의 형태로 공개됩니다. 논문을 공개하는 경로는 크게 세가지로 나눠볼 수 있습니다. 학회 (Conference) 저널 (Journal) 직접 공개 (arxiv) 이 중 최근 10년 정도 활용되고 있는 직접 인터넷에 공개하는 경로인 arxiv는 주로 학회나 저널에 제출한 논문의 심사가 아직 진행중인 상태에서 임시로 올려두는 경우가 많아, 우선 논외로 두겠습니다. 학회 v.s. 저널 둘 다 논문인데 학회와 저널은 왜..

Robotics 2022.11.08