[Physical AI W2D1] 6/6 — 좌표 변환 실습: Python 변환 + TF Publisher + RViz
·
피지컬AI
[Physical AI W2D1 · 6/6]4·5편의 동차 변환 행렬을 손으로 굳힌다. NumPy로 2D·3D 변환과 역변환, 좌표계 체인을 직접 계산해 결과를 눈으로 확인하고, TF Publisher 노드를 만들어 base_link→laser·camera_link, odom→base_link를 발행한 뒤 tf2_echo와 RViz로 좌표축을 검증한다.이 글에서 직접 해보는 것1. NumPy로 2D 동차 변환·역변환, 3D 변환, 좌표계 체인 계산2. 계산 결과를 4·5편의 손계산과 대조(앞 1m → odom (2,2), laser 1m → base 1.25·0.15)3. TF Publisher 노드(coordinate_tf_publisher.py) — RPY→Quaternion + static/dyna..
[Physical AI W1D2] 5/6 — ROS 2 서비스·액션 구현: 요청/응답과 목표/피드백
·
피지컬AI
[Physical AI W1D2 · 5/6]즉시 응답이 필요한 서비스(AddTwoInts)와 오래 걸리는 작업의 액션(Fibonacci)을 직접 구현한다. Server/Client 코드를 rclpy로 작성해 빌드·실행하고, CLI로도 호출하며 토픽과 무엇이 다른지 손으로 확인한다.이 글에서 직접 만드는 것서비스: 두 정수를 더하는 add_two_ints Server/Client + ros2 service call액션: 피보나치 수열을 피드백과 함께 계산하는 fibonacci Server/Client + ros2 action send_goal토픽 vs 서비스 vs 액션을 코드로 체감(4편의 패키지 ros2_comm_practice를 그대로 확장합니다. 같은 빌드·실행 사이클을 반복합니다.)들어가며4편의 토..
[Physical AI W1D2] 4/6 — ROS 2 토픽 직접 만들기: Publisher·Subscriber
·
피지컬AI
[Physical AI W1D2 · 4/6]개념으로 잡은 토픽을 손으로 만든다. ROS 2 Humble 환경을 준비하고 패키지를 생성한 뒤, rclpy로 Publisher와 Subscriber 노드를 작성해 colcon으로 빌드하고 ros2 run으로 실행 — 메시지가 흐르는 걸 직접 확인한다.이 글에서 직접 만드는 것ROS 2 Humble 실습 환경 준비(Python 3.10 + 패키지 설치)ros2 pkg create로 Python 패키지 생성ros2 node·ros2 topic CLI로 통신 들여다보기simple_publisher.py / simple_subscriber.py 작성 → colcon build → 실행(3편의 개념을 코드로 구현하는 단계입니다. Day1에서 ROS 2를 한 번 깔아봤다..
[Physical AI W1D2] 3/6 — ROS 2 통신의 4가지 길: 노드·토픽·서비스·액션
·
피지컬AI
[Physical AI W1D2 · 3/6]로봇 소프트웨어는 하나의 거대 프로그램이 아니다. 카메라·인식·계획·제어가 각각 독립 노드로 돌며 데이터를 주고받는다. ROS 2의 네 가지 통신 방식 — 노드·토픽·서비스·액션을 "왜, 언제 쓰는가"로 잡는다.이 글에서 잡는 개념로봇 SW를 왜 여러 노드로 쪼개나토픽(계속 흐르는 데이터) vs 서비스(요청/응답) vs 액션(오래 걸리는 목표 작업)네 방식의 차이와 선택 기준실제 이동 로봇·로봇 팔에서 어떻게 조합되나(이 글은 Week1 Day2 ROS 2 블록의 시작입니다. 1·2편의 리눅스 기초 위에서 진행합니다. 4편부터 이 개념들을 직접 코드로 구현합니다.)들어가며 — 로봇은 하나의 프로그램이 아니다ROS 2 기반 로봇 시스템은 하나의 거대한 프로그램으로..
[Physical AI W1D1] 5/5 — ROS 2 /clock을 밖으로: WebSocket 서버 + Cloudflare Tunnel
·
피지컬AI
[Physical AI W1D1 · 5/5]ROS 2 안에서만 돌던 /clock 토픽을, rclpy로 구독하고 WebSocket으로 송출하는 파이썬 스크립트 하나로 바깥에 내보낸다. websockets 버전 함정부터 Cloudflare Tunnel로 외부 주소를 뽑는 법까지 — 스크립트 한 줄씩 "무엇을·왜·어떤 결과"로 해설하는 Day1 5편(실습).이 글에서 직접 해보는 것WebSocket용 파이썬 라이브러리 설치 (그리고 왜 버전을 고정하는가)ros_clock_ws_server.py — ROS 2 /clock을 구독해 WebSocket으로 내보내는 스크립트 작성·해설rclpy(로봇)와 asyncio(웹)를 한 프로세스에서 같이 돌리는 구조 이해cloudflared로 Colab 내부 포트를 외부에서 ..