일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Linux
- 명령어
- Coding
- 3dof
- homogenous
- 정보처리기사
- CentOS
- Computer
- 회전 복잡도
- segmentation
- Java
- MIPS
- 네트워크 충돌
- sort
- 알고리즘
- SQL
- 해싱 함수
- 합병
- ROS2
- 리눅스
- 소스 코드 품질 분석
- 정렬
- 정처기
- sam2
- robotics
- 맥케이브
- 기구학
- homogeinous
- 컴퓨터구조
- AI
- Today
- Total
UTF-404
🐢 Tf2와 URDF에 대해 알아보기!! 본문
tf2 란 무엇인가?
ROS2에서 좌표변환(Transformation)을 관리하는 프레임 워크이며, 로봇 시스템에서 서로 다른 좌표계를 효과적으로 처리하고 통합하는데 사용한다.
주요기능은 다음과 같다.
1. 좌표 변환 관리 : 여러 프레임(좌표계)간의 변환 관계를 정의하고 이를 기반으로 데이터 변환을 수행한다.
2. 시간 동기화 : 변환 데이터를 시가노가 함께 저장하여 과거 또는 미래의 특정 시점에 해당하는 변환을 제공한다.
3. 효율적인 데이터 처리 : 변환 데이터를 효율적으로 버퍼에 저장하고, 필요한 시점에 빠르게 조회한다.
4. 다양한 변환 지원 : 회전, 이동 등 다야안 변환을 지원한다.
구성 요소
- Transform Broadcaster : 특정 프레임 간의 변환 정보를 브로드 캐스팅하는 역할
- Transform Listener : Broadcaster가 제공한 변환 데이터를 수신하고 요청된 변환을 계산
- Transform Buffer : 변환 데이터를 시간과 함께 저장하는 버퍼 : Listener가 요청한 시간의 데이터를 반환하거나 변환을 계산
- Static Transform Broadcaster : 변하지 않는 좌표 변환 정보를 브로드 캐스팅
사용흐름
- Broadcaster : 변환정보를 생성하고 브로드 캐스팅
- Listener : 특정 프레임 간 변환 정보를 요청
- tf2 Tools(view_frames) : tf2 트리를 시각화
URDF (Unified Robot Description Format)
- 로봇의 구조와 구성을 XML 기반으로 기술하기 위한 표준 파일 형식이다.
- ROS에서 로봇 모델을 정의하고 시뮬레이션 및 시각화 도구와 통합하기 위해 사용한다.
<구성 요소>
링크 <link>
→ 링크는 로봇의 물리적 부위를 나타낸다. 예를 들어 로봇 팔의 각 부위나 로봇 몸체 등은 각각 하나의 링크로 표현된다.
속성
- name 속성 : 링크의 고유 이름을 지정한다. 다른 링크나 조인트와 연결 시 사용된다.
하위요소
<visual> : 링크의 시각적 표현을 정의한다. RViz와 같은 시각화 도구에서 사용된다.
- <geometry> : 기하학적 모양을 정의한다. 모양 : <box>-직육면체, <cylinder>-원기둥, <sphere>-구, <mesh>-3D 메쉬 파일
<geometry>
<box size="1 1 0.5"/>
</geometry>
- <material> : 색상 및 재질 정보를 정의한다. color 속성으로 색상 정의 (RGBA 형식)
<material name="blue">
<color rgba"0 0 1 1"/>
</material>
<collision> : 충돌 시뮬레이션에 사용되는 기하학적 데이터를 정의한다.
보통 <visual>과 동일한 모양으로 설정되지만, 단순화된 기하학을 사용할 수도 있다.
<collision>
<geometry>
<sphere radius="0.5"/>
</gemotry>
</collision>
<inertial> : 링크의 물리적 특성(질량, 관성 모멘트 등)을 정의한다.
- <mass> : 링크의 질량(kg)
- <inertia> : 관성 모멘트(6축 대칭 행렬로 정의)
<inertial>
<mass value="1.0"/>
<inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/>
</inertial>
조인트 <joint>
→ 조인트는 두 링크 간의 연결을 정의하며, 조인트를 통해 링크의 움직임이 결정된다.
속성
- name 속성 : 조인트의 고유 이름을 지정한다.
- type 속성 : 조인트의 유형을 정의한다
revolute 특정 각도 범위 내에서 회전 가능(축을 중심)
continuous | 제한 없이 무한 회전 가능(축을 중심) |
prismatic | 특정 범위 내에서 직선 운동 가능(축을 중심) |
fixed | 움직임이 없는 고정 조인트 |
floating | 6 자유도를 가지는 조인트 |
planar | 평면 상에서 3 자유도를 가지는 조인트(축에 수직인 평면상에서 이동) |
하위요소
<parent> : 조인트의 부모 링크를 정의
<parent link="base_link"/>
<child> : 조인트의 자식 링크를 정의
<child link="upper_link"/>
<origin> : 부모 링크와 자식 링크 사이의 상대적 위치 및 방향을 정의
- xyz : 위치 (x, y, z 좌표)
- rpy : 회전(roll, pitch, yaw)
<origin xyz="0 0 0.25" rpy="0 0 0"/>
<axis> : 조인트의 움직임 축을 정의 / 회전 조인트나 직선 조인트에서 사용
<axis xyz="0 1 0"/> //y 축을 기준으로 회전
<limit> : 조인트의 운동 범위와 물리적 제한을 설정
- lower와 upper : 이동 범위의 최소값과 최대값
- effort : 허용되는 최대 힘 또는 토크
- velocity : 최대 속도
<limit lower="-1.57" upper="1.57" effort="10" velocity="1"/>
<dynamics>(선택사항) : 조인트의 동적 속성을 정의
- damping : 감쇠 계수
- friction : 마찰 계수
<dynamics damping="0.1" friction="0.2"/>
재질 <material>
→ 재질은 로봇의 링크 시각화에 사용된다. 기본 색상이나 텍스처 파일로 정의된다.
속성
- name 속성 : 재질 이름을 정의한다. 여러 링크에서 동일한 재질을 공유할 수 있다.
하위 요소
<color> : 재질의 색상을 RGBA 형식으로 정의
<material name="red">
<color rgba="1 0 0 1"/>
</material>
<texture> : 텍스처 이미지를 적용할 수 있다
<material name="textured_material">
<texture filename="textures/robot_texture.png"/>
</material>
<결론>
tf2와 URDF 구성요소에 대해 간단히 알아보았다. 이걸 바탕으로 Kinematics_robot을 간단하게 만들어 볼 예정이다.
실제로 rviz2를 이용해서 시각화한다면 좀 더 효과적으로 이해할 수 있다. 그래서 필자는 이미 3DOF_robot을 만들어 두었다.
요즘들어 로봇에 대해 배우면서 본인의 전공인 소프트웨어를 쓰긴하지만 아무래도 로봇에 대한 기본이 부족한 탓일까.. 이제 회사를 입사한지 2달차이지만 아직까지는 많이 배우면서 따라가려고 노력하는 중이다. 로봇에서 써야할 AI관련 툴과 실제 로봇 공학들이 복합적으로 필자의 무지함에 무력해지는 요즘이지만 아직까지 많이 배우고 찾아보는 중이지만 부족하다. 정리를 하는게 도움이 될지는 모르지만 앞으로도 꾸준히 더 노력해야겠다는 사실을 많이 느낀다. 앞으로도 자주 정리하면서 노력할 수 있는 사람이 되어야겠다!!
'ROS2(humble)' 카테고리의 다른 글
PUMA-3DOF Robot System(ROS2 + Web) (0) | 2025.04.11 |
---|---|
🐢 ROS2(humble) 노드와 노드 간 통식 방식 (4) | 2025.01.18 |
🐢 ROS2(humble)이란 (0) | 2025.01.18 |