728x90

Programming 281

ROS2 (6) - Class, 상속을 이용한 그래프 그리기 (pyplot, numpy)

Jupyter Notebook을 이용한 ROS2 1. 기본적인 pyplot, numpy를 사용하여 그래프 그리기pip3 install matplotlib데이터 시각화를 위한 라이브러리인 matplotlib을 사용하기 위해 설치해준다. 데이터 시각화를 위한 pyplot과, 수학적 수치 계산을 위한 numpy를 사용하기 위해 import 해준다. arange 함수를 사용하여 0~6까지 0.01 단위로 숫자의 배열을 생성한다. 위에서 생성한 배열을 pi와 sin 함수를 이용하여 계산한다.y.shape의 결과로 600개의 요소를 가진 1차원 배열을 나타낸다. plt에 있는 figure, plot, grid, show 함수를 이용하여 위와 같이 sin 함수를 시각적 그래프로 그려낸다. figure() : 그림의 ..

Programming/ROS 2024.09.30

ROS2 - (5) Python을 이용한 Topic, Service 구현

ROS2는 python을 공식 지원하며 Jupyter를 이용하여 python으로 Topic에 접근해 볼 것이다.(Uubuntu Jupyter 설치의 경우 구글에 많이 나와있으니 찾아보길 바랍니다.)Python으로 Topic 접근 코드 예제 결과 특정 범위 안에서 거북이가 random하게 움직이는 시뮬레이션Topic Topic 구독 코드 작성 터미널에서 turtlesim_node를 실행하고, ROS2를 실행한 후 VS-Code를 실행한다.  jupyter notebook을 통해 아래 코드를 입력하고 실행 시킨다.import rclpy as rpfrom turtlesim.msg import Pose첫째 라인의 rclpy(ROS Client Library for Python)라는 ROS2를 Python에서 사..

Programming/ROS 2024.09.24

ROS2 - (4) Action, Parameter 이론 및 실습

ActionAction은 Topic과 Service의 혼합Action 목표 및 Action 결과를 전달하는 방식은 Service와 동일하다.Action Feedback은 Topic과 같은 Message 전송 방식  기본적으로 Client와 Server가 통신을 하게된다.1. Client에서 Goal에대한 Service를 Reqeust를 Server에 전달하게 되면 Server에서 Response를 Client로 전달하게 된다. 1.1. Feedback은 Topic으로 동작하며 Action Server가 Action Client로 정보를 주기적으로 전달하는 역할을 한다.2. Goal에 대한 응답 이후 최종 결과를 Result Service를 통해 Request, Response를 주고 받는다.3. Clie..

Programming/ROS 2024.09.23

ROS2 - (3) Topic, Service 이론 및 실습

Topic 노드 간 Publish & SubscribePublisher가 Message를 BroadCasting 방식으로 전달하면 Subscriber는 자기가 필요한 Message면 받아들인다. (Topic을 확인해서 가져온다.)  비동기 단방향 메시지 송수신 방식으로 msg 메시지 형태의 메시지를 발간하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신이다.1:N, N:1, N:N 통신도 가능하며 ROS 메시지 통신에서 가장 널리 사용된다.Node A처럼 하나 이상의 Topic을 발행할 수 있을 뿐만이 아니라 Publisher, Subscriber 역할을 동시에 수행 가능하며, 자신 Topic을 셀프 구독할 수도 있다.통상적으로 70% 이상이 Topic 방식을 사용한다.(기본 특징으..

Programming/ROS 2024.09.23

ROS2 - (2) Message, DDS 이론 및 실습

Message Communication - Node : ROS에서 최소 단위의 실행 가능한 프로세스- Package : 하나 이상의 Node 또는 Node 실행을 위한 정보 등을 묶어 놓은 것(ex) Turtlesim)- Meta Package : Package의 묶음 ROS에서는 최소한의 실행 단위로 프로그램을 나누어 프로그래밍, 노드는 각각 별개의 프로그램으로 보면 된다.수많은 노드들이 연동되는 ROS 시스템의 특성 상 노드와 노드 사이에 입력과 출력 데이터를 서로 주고 받도록 설계해야 한다. * 노드의 이해와 더불어 노드 간 데이터 교환 방법, 데이터 유형에 대한 이해가 필요하다.ROS2 Message CommunicationNode 간 주고 받는 데이터를  Message라 칭하며, 주고 받는 방식..

Programming/ROS 2024.09.23

ROS2 - (1) 설치 및 기본 동작 (Topic, Service, Action)

* Ubuntu, WSL 등 환경 구성 설치 및 설정은 추후에 다루겠다.ROS2 설치 Ubuntu (deb packages) — ROS 2 Documentation: Humble documentation Ubuntu (deb packages) — ROS 2 Documentation: Humble documentationYou're reading the documentation for an older, but still supported, version of ROS 2. For information on the latest version, please have a look at Jazzy. Ubuntu (deb packages) Table of Contents Deb packages for ROS 2 Hu..

Programming/ROS 2024.09.09

Spring - Swagger API 명세 작성

Swagger 의존성 추가 (Gradle) Swagger 설정 추가 API 그룹 설정 API 상세 정보 설정 API Data Schema API Response * 본 Swagger는 Spring 3.x Java 17에서 작성되었다. Swagger Swagger는 API 문서화 및 테스트 도구로서, 개발자가 RESTful API를 더 쉽게 문서화하고 API 엔드포인트를 테스트하고 이해할 수 있도록 돕는 오픈소스 프레임워크다. 1. API 스펙 정의 / 2. 자동 문서화의 장점이 있다. Swagger 의존성 추가 (Gradle) implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' Spring 3.x 버전에서는 위 코드를 Grad..

Programming/TMP 2023.12.21

DB 대용량 데이터 처리, 동시성 이슈 해결 방법 (Redis)

Synchronized 사용 Synchronized의 문제점 DB를 활용한 데이터 정합성 맞추기 Pessimistic Lock Optimistic Lock Named Lock Lettuce Redisson 간단한 로직을 통해 재고 감소 코드를 아래와 같이 작성한다고 가정한다. - StockService.java @Service public class StockService { private final StockRepositroy stockRepositroy; public StockService(StockRepositroy stockRepositroy) { this.stockRepositroy = stockRepositroy; } @Transactional public void decrease(Long i..

Programming/Redis 2023.12.19

Docker - 초간단 Docker 사용법 (Spring, EC2)

- Docker Docker는 컨테이너 기반 가상화 기술을 사용하여 애플리케이션을 패키징하고 배포하는 오픈 소스 플랫폼이다. Docker를 사용하면 코드를 컨테이너 이미지로 패키징하고, 이미지를 독립적으로 실행 할 수 있다. Docker의 주요 특징은 1. 이식성 2. 빠른 배포 3. 확장성 4. 자동화 의 장점이 있다. 주요 특징을 가지고 소프트웨어 개발 및 배포 프로세스를 단순화하고, 애플리케이션의 이식성과 확장성을 향상시키는 데 도움이 된다. https://www.docker.com/ Docker: Accelerated Container Application Development Docker is a platform designed to help developers build, share, and ..

Programming/CI, CD 2023.12.14

CodingTest - 정렬 (Comparable, compareTo, Collections.sort)

Comparable : 해당 인터페이스는 객체의 비교를 제공하기 위해 구현된다. compareTo() : Comparable 인터페이스의 일부로, 비교하려는 두 객체를 인자로 받아 비교 결과를 반환한다. Collections.sort : 해당 메서드를 사용하여 리스트의 요소를 정렬할 때, 해당 요소들의 compareTo 메서드가 호출되어 정렬이 수행된다. - 기본 구조 public int compareTo(Integer other) { return this.value - other.value; } - Example import java.util.*; class Point implements Comparable{ public int x, y; Point(int x, int y){ this.x=x; this..

728x90