UTF-404

PUMA-3DOF Robot System(ROS2 + Web) 본문

ROS2(humble)

PUMA-3DOF Robot System(ROS2 + Web)

UTF-404 2025. 4. 11. 11:22
728x90

PUMA 3-DOF Robot System (ROS2 + Web UI)

이 프로젝트는 ROS 2 (Humble)를 기반으로 구성된 3자유도 PUMA 타입 로봇 시스템입니다. URDF 모델과 RViz 시각화, 웹 기반 제어 인터페이스를 제공하며, 실시간 관절 제어 및 로깅 기능을 포함합니다.


📂 프로젝트 구조

puma_robot/
├── CMakeLists.txt
├── package.xml
├── setup.py
├── urdf/
│   └── puma_3dof.urdf.xacro        # 로봇 URDF 정의 (xacro)
├── launch/
│   └── display.launch.py           # URDF 로드 및 RViz 실행용 런치 파일
├── scripts/
│   ├── puma_controller.py          # ROS2 제어 노드
│   ├── joint_state_logger.py       # 관절 상태 로그 저장 스크립트
│   ├── ros2_web_bridge.py          # 웹-ROS2 통신 브릿지
│   ├── test.py                     # 테스트 스크립트
│   ├── test.html                   # 웹 테스트 페이지
│   ├── puma_web_ui.html            # 로봇 제어용 웹 UI
│   └── logger_web_ui.html          # 로깅 상태 확인용 UI
├── rviz/
│   └── puma_config.rviz            # RViz 설정 파일

🛠️ 실행 환경

  • Ubuntu 22.04
  • ROS 2 Humble
  • Python 3.10 이상
  • xacro, joint_state_publisher, robot_state_publisher
  • 웹 브라우저 (Chrome 권장)

🧩 실행 방법

1. ROS 2 패키지 빌드

cd ~/ros2_ws
colcon build --packages-select puma_robot
source install/setup.bash

2. RViz로 로봇 모델 확인

ros2 launch puma_robot display.launch.py

3. 웹 UI 사용 (HTML 직접 실행)

# puma_web_ui.html 또는 logger_web_ui.html 파일을 브라우저에서 열기
open scripts/puma_web_ui.html

또는 ros2_web_bridge.py를 실행하여 웹과 ROS2 간 연동 가능


📡 주요 노드 및 기능

파일 설명
puma_controller.py 로봇 관절 제어 노드
joint_state_logger.py 관절 상태 로그 기록
ros2_web_bridge.py ROS2 ↔ 웹 브릿지 (토픽 통신)
puma_web_ui.html 웹에서 관절 제어를 위한 인터페이스
display.launch.py RViz에서 로봇 시각화를 위한 런치

🔧 향후 개선 방향

  • FastAPI 서버를 통한 실시간 웹 제어 기능 통합
  • Three.js 또는 Webviz를 통한 3D 시각화
  • 로봇의 움직임 이력 로그를 DB에 저장

🧑‍💻 Github

 

GitHub - utf-404/3DOF-Puma_Robot: 3DOF-Puma_Robot_ros2_humble

3DOF-Puma_Robot_ros2_humble. Contribute to utf-404/3DOF-Puma_Robot development by creating an account on GitHub.

github.com

 


PUMA 3-DOF Robot System (ROS2 + Web UI)

This project is a 3-degree-of-freedom PUMA-type robot system built on ROS 2 (Humble). It includes a URDF model, RViz visualization, and a web-based control interface for real-time joint manipulation and logging.


📂 Project Structure

puma_robot/
├── CMakeLists.txt
├── package.xml
├── setup.py
├── urdf/
│   └── puma_3dof.urdf.xacro        # Robot URDF definition (xacro)
├── launch/
│   └── display.launch.py           # Launch file for URDF and RViz
├── scripts/
│   ├── puma_controller.py          # ROS2 control node
│   ├── joint_state_logger.py       # Joint state logging script
│   ├── ros2_web_bridge.py          # Web-ROS2 communication bridge
│   ├── test.py                     # Test script
│   ├── test.html                   # Test webpage
│   ├── puma_web_ui.html            # Web UI for robot control
│   └── logger_web_ui.html          # Web UI for logging status
├── rviz/
│   └── puma_config.rviz            # RViz configuration file

🛠️ Requirements

  • Ubuntu 22.04
  • ROS 2 Humble
  • Python 3.10+
  • xacro, joint_state_publisher, robot_state_publisher
  • Web browser (Chrome recommended)

🧩 How to Run

1. Build ROS 2 Package

cd ~/ros2_ws
colcon build --packages-select puma_robot
source install/setup.bash

2. Visualize Robot in RViz

ros2 launch puma_robot display.launch.py

3. Use Web UI (Open HTML Directly)

# Open puma_web_ui.html or logger_web_ui.html in browser
open scripts/puma_web_ui.html

Or run ros2_web_bridge.py for ROS2-Web integration


📡 Main Nodes and Features

File Description
puma_controller.py Robot joint control node
joint_state_logger.py Joint state logger
ros2_web_bridge.py ROS2 ↔ Web communication bridge
puma_web_ui.html UI for joint control in browser
display.launch.py Launch RViz with robot model

🔧 Future Improvements

  • Integrate FastAPI for full web-based control
  • Add 3D visualization using Three.js or Webviz
  • Store movement history in a database

🧑‍💻 Github

 

GitHub - utf-404/3DOF-Puma_Robot: 3DOF-Puma_Robot_ros2_humble

3DOF-Puma_Robot_ros2_humble. Contribute to utf-404/3DOF-Puma_Robot development by creating an account on GitHub.

github.com

 


728x90

'ROS2(humble)' 카테고리의 다른 글

🐢 Tf2와 URDF에 대해 알아보기!!  (1) 2025.02.16
🐢 ROS2(humble) 노드와 노드 간 통식 방식  (4) 2025.01.18
🐢 ROS2(humble)이란  (0) 2025.01.18