목록전체 글 (24)
인공지능 요모조모
ROS 2를 공부하다 보면 Fast DDS, Cyclone DDS, Zenoh라는 이름을 자주 만나게 된다. 셋 다 데이터를 주고받는 데 쓰인다는 점은 비슷해 보이지만, 네트워크를 다루는 방식은 꽤 다르다.실제로 “같은 LAN에서는 잘 되는데, 왜 다른 서브넷이나 원격 환경에서는 갑자기 어려워지는가?”라는 문제를 겪었고, 문제를 이해하려면 이 차이를 정확히 볼 필요가 있음을 느꼈다.1. 무엇이 같은 부류이고, 무엇이 다른 부류인가?Fast DDS와 Cyclone DDS는 모두 DDS 구현체다. 즉, OMG DDS 표준을 실제 소프트웨어로 구현한 미들웨어다. ROS 2는 이런 DDS 구현체 위에서 동작하며, 노드 discovery, 토픽 매칭, 데이터 송수신을 맡긴다. 반면 Zenoh는 단순히 “또 하나의..
Git 관리submodule 을 포함하는 git 저장소를 clone 하기방법 1: git clone 명령과 함께 사용git clone --recurse-submodules 방법 2: git clone 후 별도 명령 실행메인 저장소 복제: git clone 서브모듈 초기화: git submodule init.gitmodules 파일의 정보를 읽어 서브모듈 설정서브모듈 클론: git submodule updatecommit ID로 클론하기# ex. @de5dadc$ git clone $ cd $ git checkout de5dadcDocker 사용법🔴 사용하지 않는 Docker Object 정리하기기본 명령어 : docker [object | system] prune [옵션] docker image pr..
🖥️ ROS2 CLI(Command Line Interface)▪️터미널 명령어를 통해 다양한 노드 제어와 시스템 정보 조회, 패키지 실행 지원📌 기본 구조ros2 [verbs] [sub-verbs] [options] [arguments]verbs: 동작 유형 (예: topic, node, run)sub-verbs: 세부 동작 (예: list, info, echo)options: 실행 방식 설정 (예: -h, --ros-args)arguments: 대상 패키지, 노드, 토픽 등의 이름✅ -h 옵션으로 모든 명령어에 대한 도움말 확인 가능!📌 자주 사용하는 명령어✅ 노드 실행ros2 run 예:ros2 run turtlesim turtlesim_node✅ 런치 파일 실행ros2 launch 예:r..
🔐 ROS2 보안(Security) 설정 - SROS2 사용법ROS2에서는 SROS2 패키지를 통해 DDS-Security 기능 제공노드 간 통신에 인증 및 암호화를 적용하여 안전한 메시지 송수신 환경을 구성 가능🔧 1. 보안 키 저장소 생성먼저 보안 키를 저장할 디렉토리를 만들고, keystore를 생성$ mkdir ~/sros2_demo$ cd ~/sros2_demo$ ros2 security create_keystore demo_keystore🔐 2. 보안 enclave 생성 (노드별 인증 키 생성)각 노드별로 사용할 enclave를 생성$ ros2 security create_enclave demo_keystore /talker_listener/talker$ ros2 security crea..
🔄 ROS2 Lifecycle 노드 개념 정리ROS2에서는 체계적인 노드 상태 관리를 위해 Lifecycle 인터페이스 제공!이를 통해 노드 상태 확인 또는 상태 전환 제어/자동화 가능✅ Lifecycle 노드ROS2에서 노드의 상태를 정의하고 제어할 수 있는 상태 기반 인터페이스노드는 주요 상태(primary state)와 전환 상태(transition state)를 가짐상태 전환을 통해 노드 구성, 활성화, 비활성화, 정리 등의 제어 가능ex) 카메라 노드 실행 전, 포트 연결 상태 점검실행 중 오류 발생 시 일시 중단 → 문제 해결 후 재시작 가능 🔧 운영체제의 프로세스 상태와 유사성운영체제(OS)도 여러 프로세스를 효율적으로 관리하기 위해 상태 전이를 사용OS 프로세스 상태ROS2 노드 상태..
2025.05.02~ (추가 중) ✔️백준 #11722 "가장 긴 감소하는 부분 수열"https://www.acmicpc.net/problem/11722 문제 요약수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성 ex) A = {10, 30, 10, 20, 20, 10} → A' = {30, 20, 10} & 길이 3 ▫️입력: ▪️첫째 줄: 수열 A의 크기 N (1 ≤ N ≤ 1,000) ▪️둘째 줄: 수열 A를 이루고 있는 Ai (1 ≤ Ai ≤ 1,000)▫️출력: 수열 A의 가장 긴 감소하는 부분 수열의 길이 출력 나의 정답N = int(input())seq = list(map(int, input().split()))# DP 배열 초기화F = [1] ..
4️⃣rclpy (ROS Client Library for Python)rcl: ROS2 노드를 만들고 통신할 수 있도록 돕는 핵심 요소▪️C++로 작성된 ROS2 코어 라이브러리(rcl)를 Python 환경에서 활용할 수 있도록 래핑(wrapping)한 것이 특징▪️사용자들은 Python의 간결한 문법과 다양한 라이브러리를 ROS2 기반 시스템에 쉽게 통합 가능 👉🏻rclpy == Python에서 ROS2를 사용할 수 있도록 제공하는 라이브러리✔️ 구성요소▪️Node▫️ROS2 시스템의 기본 실행 단위▫️노드는 각각 고유의 이름을 가지며, pub/sub, service/client 등을 통한 통신을 담당▪️Publisher, Subscriber▫️ publisher는 데이터 토픽을 전송하고, sub..