본문 바로가기

분류 전체보기32

Digital Twin에서의 이슈들 들어가며지난번에는 Unity에서 현실 세계에서 작동하는 로봇의 ROS2 데이터를 받아와 가상 현실로 보여주기 위한 작업을 마쳤습니다. 지금까지 저는 현실 세계의 데이터를 가상 환경에서 적용해 본 경험이 없어 어떤 문제가 발생할지 예측하지 못했고 또한 오랜만에 유니티였기 때문에 툴을 다루는데 있어 능숙하지 못했기에 디지털 트윈을 구현하는 과정에서 만난 이슈들과 해결방법, 그리고 중요하다고 생각되는 점들을 모두 적어보고자 합니다. 좌표계제가 만났던 이슈 중 첫 번째는 현실과 가상의 좌표계 차이였습니다. 처음 ROS2 TFMessage를 봤을 때, translation X, Y, Z와 rotation X, Y, Z, W 를 받아와서 출력할 수 있었기 때문에 좌표계에 대한 고민은 하지 않았습니다. 받아온 정보 .. 2024. 8. 26.
Unity 개발로 시작하는 Digital Twin 들어가며앞서 저는 Wear OS를 활용해 Employee가 사용할 애플리케이션을 만들었습니다. 이제는 Administor가 사용할 애플리케이션을 제작해야합니다. 물론 관리자의 경우에도 Wear OS를 이용하여 만들 수 있지만 관리자는 다른 환경에서 다른 작업을 하는 것이 일반적이므로 아예 다른 서비스를 제공할 수 있도록 기획하였습니다. 로봇의 상태를 확인하거나 물류창고 내의 전체적인 로봇들의 움직임 등을 관찰할 수 있는 애플리케이션이 필요하다고 느꼈습니다. 이에 저희는 Unity를 활용해 디지털 트윈을 구축하고자 하였고 물류 로봇을 움직이는 ROS2 통신을 통해서 Unity에서도 이를 가상으로 보여주고자 하였습니다. 디지털 트윈은 쉽게 생각하면 현실세계의 정보를 실시간으로 수집해 가상 화면에 반영해 동일.. 2024. 8. 26.
Wear OS에서 dotenv 파일 및 내부 DB 활용하기 들어가며지난번에는 Wear OS에서 MQTT를 활용하는 방법에 대해서 알아보았습니다. 이번에는 Wear OS에서 프로그램의 보안성과 안정성을 높혀보고자 했습니다.보안성 고려하기dotenv 즉, “.env” 파일은 환경 변수를 정의하는 데 사용되는 파일로 주로 애플리케이션의 설정을 외부에서 주입하기 위해 사용되며, 개발 및 배포 환경에서 설정을 관리하기 위해 널리 사용됩니다.보통 애플리케이션의 루트 디렉터리에 위치하며, 각 줄에 키-값 쌍으로 환경 변수를 정의합니다. 중요한 정보를 코드에 직접 포함하지 않고 파일로 저장하고 관리하기 때문에 보안 관점에서도 사용하기 좋은 방법입니다.기본적으로 안드로이드는 우리가 사용하는 PC와는 다른 파일시스템 체계를 사용합니다. 저희가 안드로이드 스튜디오라는 PC 프로그램.. 2024. 8. 11.
Wear OS에서 MQTT 통신하기 들어가며스마트 물류 자동화 프로젝트 류(Ryu)에서 Wear OS기반으로 스마트워치에 MQTT 통신으로 알람 및 작업 목록을 보여주는 앱을 개발하고 있습니다.Wear OS에 MQTT를 적용하는 글이 별로 없어 진행하면서 겪었던 과정을 소개하고자 합니다.MQTT란 ? MQTT(Message Queuing Telemetry Transport)는 경량의 메시지 프로토콜로, 제한된 대역폭과 낮은 전력 소비를 요구하는 환경에서 기기 간 데이터를 전송하기 위해 설계되었습니다. 최소한의 전력과 패킷량으로 통신하기 때문에 사물 인터넷(IoT)와 모바일 앱 등의 통신에 매우 적합한 프토콜입니다.MQTT는 클라이언트-서버의 구조로 통신이 이루어지는 형태가 아니라 Broker, Publisher, Subscriber 구조로.. 2024. 8. 11.
upper_bound & lower_bound 탐색 알고리즘 중 하나인 이분탐색은찾고자 하는 값이 없으면 탐색에 실패해버리고 만다. 하지만 탐색에 실패하지 않도록 보완해준 알고리즘들이 있다.바로, lower_bound 와 upper_bound 이다. 이 둘 모두 이분탐색을 기반으로 하기 때문에 데이터는 오름차순으로 정렬되어 있어야만 한다.lower_bound찾고자하는 값보다 크거나 같은 값 중 가장 왼쪽 값의 위치를 반환한다.즉, 찾고자하는 값 이상이 처음으로 나타나는 위치를 반환한다. 만약, lower_bound(10) 이라고 한다면데이터 중에서 10 이상의 값이 처음 나타나는 곳을 반환하는 것이다.  위 그림과 같은 데이터가 있을 때 lower_bound(10)은 어떤 값을 반환할까 ?  찾고자하는 값 10 이상이 처음으로 나타나는 곳은 빨간 박.. 2024. 6. 20.
Hash Map Hash MapC++ 에서는 unordered_map 컨테이너로 제공되는 것으로 알고 있다. 나름 map, unordered_map 을 이용해서 문제를 잘 푼다고 생각했는데코드트리에서 실력을 진단하던 중 다음 문제에 가로막혀 버렸다. 두 수의 합 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai  중복 가능한 수의 집합에서 두 개의 수를 조합했을 때특정 수를 만들 수 있는 조합의 수를 구하는 문제이다. 문제를 보자마자 map을 통해서 숫자의 수를 세고차이 값을 기준으로 답을 구하면 될 거라고 생각했다. #include #include using namesp.. 2024. 6. 16.