본문 바로가기

전체 글76

로봇 관제 시스템 실시간 통신 기술: WebSocket과 실시간 프로토콜의 역할 로봇 관제 시스템에서 핵심적인 역할을 하는 실시간 통신에 대해 정리해보려한다. 로봇이 데이터를 센서로부터 수집하고, 실시간으로 명령을 수신하고 행동을 수행하려면, 빠르고 신뢰할 수 있는 통신 시스템이 필요한데, 주로 사용되는 WebSocket과 다른 실시간 프로토콜들이 동작하는 방식과 기술의 역할들을 어떻게 될까?  실시간 통신의 중요성: 로봇 관제 시스템에서 실시간 통신이 중요한 이유는, 로봇이 끊임없이 데이터를 수집하고, 그 데이터를 빠르게 분석한 후 즉각적인 명령을 받아야 하기 때문이다.ex) 자율주행 로봇은 지속적으로 장애물과 경로 정보를 주고받으며, 지체 없이 반응해야 함센서 데이터 수집 : 로봇이 수집한 센서 데이터를 실시간으로 관제 시스템에 전송한다.제어 명령 전송 : 로봇 관제 시스템에서 .. 2024. 9. 5.
AI와 로봇의 융합: 자율주행 및 인식 시스템에서의 가능성과 백엔드의 역할 이렇게나 저렇게나 일상에서 빼놓고는 말 할 수 없는 것이 AI라고 할 수 있다. 실제로 나도 매일 AI를 사용하고 있다. 이러한 AI는 영화나 책에서 그려지듯이 분명히 미래에는 로봇과 융합하여 삶의 더 큰 부분을 차지할 것이라고 생각한다. 그래서 이러한 AI와 로봇의 융합이 자율주행이나 인식 시스템에 어떻게 적용되고, 지금 내가 배우고 있는 백엔드 기술이 이러한 시스템에서 어떤 역할을 할 수 있는지 정리해보려 한다.  AI와 로봇의 융합 개념: 로봇 시스템에서 AI는 주로 머신러닝(ML)과 컴퓨터 비전 기술을 활용하여 로봇이 실시간으로 데이터를 분석하고 결정을 내릴 수 있도록 도와준다.ex) 자율주행 차량은 카메라나 라이다(LiDAR) 센서로부터 데이터를 받아 AI 모델을 통해 이를 해석하고, 도로를 인.. 2024. 9. 3.
ROS와 ROS2 : 로봇 운영 체제의 기본 개념과 차이점 ROS란?: ROS(Robot Operating System)는 로봇 애플리케이션을 개발하고 관리하는 소프트웨어 프레임워크로 로봇을 제어하는 데 필요한 다양한 도구와 라이브러리를 제공  - ROS의 주요 기능하드웨어 제어 : 센서, 모터, 카메라 등 로봇의 하드웨어를 제어하고 데이터를 주고받을 수 있다.통신 시스템 : ROS는 로봇의 여러 구성 요소들이 서로 메세지를 통해 데이터를 주고받을 수 있는 통신 시스템을 제공ex) 카메라로부터 얻은 이미지를 분석해 모터로 보내는 명령을 내리는 식으로, 여러 부품이 협력해서 작동패키지 관리 : ROS에는 다양한 로봇 애플리케이션이 패키지 형태로 제공되어, 개발자는 이를 다운로드해 쉽게 사용 가능 - ROS의 핵심 개념노드(Node) : 노드는 ROS에서 각각의 기.. 2024. 9. 1.
MQTT와 로봇 통신 로봇통신에 자주 사용된다는 MQTT에 대해 알아보려 한다. 사실 MQTT에 대하여는 처음 접하게되었는데, 어떤점이 MQTT가 로봇 통신에 많이 사용되도록 할까? MQTT란?MQTT는 경량 메시지 전송 프로토콜로, 주로 저전력 장치, 불안정한 네트워크 환경에서 데이터를 효율적으로 주고받기 위해 설계되었다. 이는 사물 인터넷(IoT) 환경에서 자주 사용되며, 퍼블리셔/구독자 모델(Publish/Subscribe Model)을 기반으로 동작한다.퍼블리셔/구독자 모델 : MQTT는 퍼블리셔가 특정 토픽(topic)에 메시지를 게시하면, 해당 토픽을 구독한 구독자들이 그 메시지를 수신하는 구조ex) 로봇이 특정 센서 데이터를 "topic/sensor"라는 토픽에 게시하면, 이를 구독한 서버나 다른 장치가 그 데이.. 2024. 8. 28.
Redis Pub/Sub 구현 (구독자모드의 제약 사항) Redis Pub/Sub을 사용하기로 하고 구현에 나섰다. 우선, 프로젝트 내에서 이미 Redis가 구현이 되어서 동작하고있는 상황이었기에, 간단하게 Pub/Sub 기능만 추가해주면 되는 상황이었다. 그러면 처음으로 Redis Pub/Sub을 공부하며 구현하고, 마주한 문제에 대해 정리해보려 한다.  Redis Pub/Sub: Redis에서 지원하는 하나의 메세지를 여러 수신자에게 동시에 전송하는 실시간 통신으로 활용되어 서로 다른 서비스 간 메세지를 쉽게 주고받을 수 있다. 메세지를 발행하는 Publisher와, 해당 메세지를 구독하여 수신하는 Subscriber로 구성된다. Publisher는 특정 채널(Channel)에 메세지를 발행하고, Subscriber는 해당 채널을 구독하여 실시간으로 메세지.. 2024. 8. 21.
알림기능 DB 생성 알림 기능을 구현을 위한 DB 뼈대를 세우던 중 다양한 유형의 알림을 처리해야했다. 이 과정에서 서로 다른 DB에 있는 CP와 USER 두 유형을 대상으로 여러 유형의 알림(리뷰, 게시글, 댓글 등)을 관래해야 했고, 각각 다른 테이블을 관리해야 했다. 그리고, 외래키 제약 조건을 사용할 수 없는 상황에서 데이터 무결성, 확장성을 유지하기 위한 방법을 찾아보았다.  문제: 알림 받는 대상이 CP와 USER로 나뉜다. 알림의 유형 또한 리뷰, 게시글, 댓글 등 다양하다. 1. 외래 키 제약 사용 어려움 : 진행 프로젝트의 데이터베이스 분리 구조 때문에 CP에 외래 키 제약을 적용할 수 없어 데이터 일관성 유지 어려운 상황2. 확장성 문제 : 알림기능의 경우 추후 여러 기능에서 계속 추가 될 예정인데 기존의.. 2024. 8. 20.
알림기능 기술 선택(SSE, Redis Pub/Sub, Socket.IO) 채팅 기능에 이어 알림기능을 구현하게 되었다. 지난번에도 알림기능을 구현한 경험이있는데, 당시 시간도 촉박하고 아는것이 별로 없어 기술 선택시 다양하게 고려해보지 못했다. 하지만 이번에는 최종프로젝트인 만큼 여러 기술 중 우리의 서비스에 맞는 기술들을 엄밀히 고려해보려 한다.구현하려는 기능커뮤니티/리뷰의 새글 등록 및 댓글 등록시 알림읽음/안읽음 기능알림 클릭시 해당 게시물로 연결이번 구현하는 알림기능에서 필요한 부분은 이렇게 세 가지가 있다.해당 기능을 충족하는 기술 선택을 위해 여러 기술들에 대해 알아보았다. 고려 기술1. Server-Sent Events (SSE)특징:서버에서 클라이언트로 단방향 스트리밍을 제공.HTTP 기반으로 작동하며, 브라우저와의 호환성이 높음.연결 유지 비용이 비교적 낮음... 2024. 8. 12.
SSL 연동 후 Socket 연결 트러블슈팅 문제로컬 환경에서 소켓.io를 이용해 채팅 기능을 성공적으로 구현하였으나, 서버에 배포 후 SSL을 적용한 상태에서 소켓 연결이 되지 않는 문제가 발생했습니다.해결 방법해당 부분에서 문제가 생길 수 있는 여러 부분을 살펴보았습니다.클라이언트 측에 ‘wss://’ 프로토콜이 아닌 ‘ws://’을 ****사용하고있지 않은지, ****방화벽 설정을 확인하고, WebSocket을 사용하는 포트가 열려 있는지 등 여러 문제 가능성을 고려하였고 문제를 분석하기 시작했습니다.문제 분석로컬 환경에서 Socket.io가 정상적으로 동작하였으므로, 배포 환경에서의 설정 문제 의심SSL을 적용한 HTTPS 통신이 실패한 것으로 보아, 소켓 요청이 제대로 프록시되지 않고 있는 것해결책 모색socket.io 공식 문서에서 SS.. 2024. 8. 11.