728x90

Embedded 52

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() : 그림의 ..

Embedded/3. 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에서 사..

Embedded/3. 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..

Embedded/3. 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 방식을 사용한다.(기본 특징으..

Embedded/3. 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라 칭하며, 주고 받는 방식..

Embedded/3. 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..

Embedded/3. ROS 2024.09.09

Python - 기본 문법 복습 (Function, Class, Thread 등...)

- Print(), Input()- List- Tuple, Set, Dictionary- Loop- Try / Except- Function- Class- 상속- QR Codes- Thread Programming- Macro- Print(), Input()# printprint("Hello")# inputa = input("Input 1st Value = ")b = input("Input 2st Value = ")print(a+b)- Lista_list = [1,2,3,4,5]print(a_list)print(a_list[0])b_list = []b_list.append(1)print(b_list)c_list = [1, 3.14, 'hello', [1,2,3]]print(c_list)d_list = [..

STM32 - 알람 시계 구현하기 (1) (시간, 알람 띄우기)

이번 글에서는 알람 시계를 가장 기본 단계에서 구현할 것이다.1. 지정한 날짜, 시간을 기준으로 시계가 동작하고2. 알람으로 설정한 시간에 Alarm이 울렸다는 화면을 띄우는 작업을 할 것이다. https://insoobaik.tistory.com/638  STM32 - I2C를 이용한 LCD 문자 출력 (함수 분석)https://insoobaik.tistory.com/624 STM32 - LCD 문자 출력 (I2C)https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2Cinsoobaik.tistory.comI2C에 대한 함수 분석은 위 글을 참고한다..

STM32 - I2C를 이용한 LCD 문자 출력 (함수 분석)

https://insoobaik.tistory.com/624 STM32 - LCD 문자 출력 (I2C)https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2C 통신을 이용하여 LCD에 문자를 출력해볼 것이다.LCDinsoobaik.tistory.com이전에 LCD에 I2C를 이용하여 문자를 출력했었는데, LCD를 출력하기까지 함수를 제대로 파악하지 않고 사용했다.이번 글은 LCD를 사용하기 위한 함수에 대해 자세히 알아보기 위해 LCD 관련 DataSheet와 함수에 대해 파악해보려 한다. LCD 관련 코드#include "lcd.h"extern I2..

C# - Arduino Serial 통신을 이용한 비쥬얼라이저 구현

C#과 Arduino의 Serial 통신을 이용하여 간단한 비쥬얼라이저를 구현하였다.void setup() { Serial.begin(9600); // 시리얼 통신 시작 pinMode(8, OUTPUT); pinMode(9, OUTPUT); // LED 핀을 출력 모드로 설정 pinMode(10, OUTPUT); pinMode(11, OUTPUT);}void loop() { int sensorValue = analogRead(A0); // A0 핀의 아날로그 값을 읽어서 sensorValue 변수에 저장 Serial.println(sensorValue); // 읽어온 값을 시리얼 모니터에 출력 if (Serial.available() > 0) { int value = ..

728x90