핸드 코딩 URDF를 그만두세요: Blender와 ROS 2를 원활하게 연결한 방법
Source: Dev.to
The Problem
당신은 CAD에서 아름답고 기계적으로 완벽한 로봇을 몇 주 동안 설계합니다. 그 다음 Gazebo에서 시뮬레이션하거나 ROS 2로 제어해야 합니다. 갑자기 당신의 엔지니어링 걸작이 XML 태그의 악몽이 됩니다. 새벽 2시, robot.urdf 파일을 바라보며 왜 이런 문제가 발생했는지 고민하게 됩니다:
- 관성 텐서에 음수 대각값이 존재함
- 센서(예: LiDAR)가 차체 위에 몇 미터씩 떠 있음
hardware interfaces가 오류를 발생시킴
시각적 리깅과 수학적 운동학 사이의 격차는 로봇 시뮬레이션의 큰 병목 현상입니다.
Introducing LinkForge
LinkForge는 **Blender 4.2+**를 생산 수준의 로봇 IDE로 바꾸는 오픈‑소스 생태계입니다. 3D 씬을 조각하듯 자연스럽게 로봇을 모델링하면서, 내보낸 코드가 수학적으로 올바르고 ROS 2와 Gazebo에 바로 사용할 수 있도록 엄격한 안전망을 제공합니다.
Core Capabilities
- Define Physics – 임의의 메쉬에 대해 정확한 질량 특성 및 관성 텐서를 자동으로 계산합니다.
- Attach Sensors – 카메라, LiDAR, IMU, 접촉 센서를 시각적으로 배치합니다.
- Configure Control – 조인트에
ros2_control명령 및 상태 인터페이스(위치, 속도, 토크)를 직접 설정합니다. - Lint & Export – 시뮬레이션을 깨뜨리는 오류를 내보내기 전에 잡아내고 최종 URDF/XACRO를 내보냅니다.
Why LinkForge Is Different
Blender와 SolidWorks용 기존 URDF 익스포터는 3D 뷰포트에 있는 내용을 그대로 XML로 변환합니다. 이 눈먼 접근 방식은 Gazebo가 충돌할 때 비로소 드러나는 숨겨진 문제들을 초래합니다.
LinkForge는 세 가지 주요 문제를 해결합니다:
- Blind Exporting – 분리된 링크나 문제 있는 충돌 메쉬 때문에 발생하던 숨겨진 오류가 사라집니다.
- Missing Validation – 내장된 Linter for Robotics가 내보내기 전에 운동학 그래프를 검증하여 음수 관성, 순환 종속성, 잘못된 조인트 제한 등을 즉시 포착합니다.
- Manual
ros2_controlCoding – 전용 제어 대시보드에서 조인트를 선택하고 인터페이스를 지정하면, 하드웨어 인터페이스용 표준 준수 XACRO 매크로를 자동으로 생성합니다.
Architecture
LinkForge는 Hexagonal Architecture를 따릅니다:
- Core Engine (
linkforge‑core) – 순수 Python 로직으로, Blender UI와 완전히 분리되어 있습니다. - Blender Add‑on – 아티스트와 엔지니어를 위한 시각적 프론트‑엔드.
- CI/CD Integration – Linux 서버에 코어 엔진을 설치해 모든 Pull Request에 자동 검증 테스트를 실행합니다. (독립형 PyPI 패키지도 계획 중입니다.)
Licensing & Community
LinkForge는 로봇공학자를 위해 로봇공학자가 만들었으며, GPLv3 라이선스로 자유롭고 커뮤니티 중심으로 유지됩니다.
- GitHub Repository –
- Official Documentation & Tutorials –
유용하다고 생각되면 저장소에 ⭐를 눌러 주세요.
Getting Started
- Blender 4.2를 실행합니다.
- Get Extensions 메뉴를 사용해 LinkForge 애드온을 설치합니다.
- 로봇을 모델링하고, 물리를 정의하고, 센서를 부착하고, 제어를 설정합니다.
- 린터를 실행하고 URDF/XACRO를 내보냅니다.
Contributing
운동학에 관심 있는 Python 및 Rust 개발자와 URDF 워크플로우 개선 아이디어(예: 곧 출시될 SRDF 지원)를 환영합니다. GitHub Discussions에서 토론에 참여하세요.
이제 XML을 손수 코딩하는 일을 멈추고 로봇 제작에 다시 집중합시다. 🤖✨