Robot Model - URDF 1

김성빈·2024년 7월 10일
0

ROS

목록 보기
8/12

워크스페이스까지 만들었는데, 시뮬레이션을 동작하기 위해서는
Model > Visualize > Simulate > 문제점 찾기 > 수정 의 순서로 진행할 예정이다.

Model

URDF

Model 단계에 해당하는 URDF로 XML 태그를 사용하여 로봇의 구조와 구성 요소를 표현한다.
HTML과 유사한구조

URDF 구성

주요 URDF 태그

  • 전체 로봇 구조를 정의하는 최상위 태그
  • : 로봇의 개별 구성 요소를 표현 visual, collision, inertial 등의 하위 태그로 속성 정의
  • : 두 링크를 연결하고 그 속성을 정의
    부모-자식 관계로 트리 구조 형성
    연결 유형(고정, 회전, 이동 등) 지정
    회전축, 이동 제한 등 추가 속성 정의 가능

구조

<robot>
  <link>
  ...
  </link>
  <joint>
  ...
  </joint>
</robot>

총 6개의 부품을 연결


1. base_link

2. imu_link ( 자이로센서)

3. 바퀴 두짝
4. caster-rear, front

실제 코드

<?xml version="1.0"?>

<!-- 
<?xml version="1.0"?>

<!-- 
로봇 구조 요약:
1. base_footprint: 로봇의 기준점
2. base_link: 로봇의 주 본체
3. wheel_right_link: 오른쪽 바퀴
4. wheel_left_link: 왼쪽 바퀴
5. caster_front_link: 전방 캐스터 휠
6. caster_rear_link: 후방 캐스터 휠

조인트 구조:
- base_joint: base_footprint와 base_link 연결 (고정)
- wheel_right_joint: base_link와 오른쪽 바퀴 연결 (연속 회전)
- wheel_left_joint: base_link와 왼쪽 바퀴 연결 (연속 회전)
- caster_front_joint: base_link와 전방 캐스터 연결 (고정)
- caster_rear_joint: base_link와 후방 캐스터 연결 (고정)

이 로봇은 두 개의 구동 바퀴와 두 개의 캐스터 휠을 가진 이동 로봇입니다.
STL 파일을 사용하여 각 부품의 3D 모델을 정의하고 있습니다.
-->

<!-- 로봇 정의 시작 -->
<robot name="bumperbot">
    <!-- 베이스 발자국 링크 정의 -->
    <link name="base_footprint">
    </link>

    <!-- 베이스 링크 정의 -->
    <link name="base_link">
        <visual>
            <origin rpy="0 0 0" xyz="0 0 0"/>
            <geometry>
                <!-- 베이스 링크의 3D 모델 파일 지정 -->
                <mesh filename="package://bumperbot_description/meshes/base_link.STL"/>
            </geometry>
        </visual>
    </link>

    <!-- 베이스 발자국과 베이스 링크를 연결하는 고정 조인트 -->
    <joint name="base_joint" type="fixed">
        <parent link="base_footprint"/>
        <child link="base_link"/>
        <origin rpy="0 0 0" xyz="0 0 0.033"/>
    </joint>

    <!-- 오른쪽 바퀴 링크 정의 -->
    <link name="wheel_right_link">
        <visual>
            <origin rpy="1.57 0 0" xyz="0 0 0"/>
            <geometry>
                <!-- 오른쪽 바퀴의 3D 모델 파일 지정 -->
                <mesh filename="package://bumperbot_description/meshes/wheel_right_link.STL"/>
            </geometry>
        </visual>
    </link>

    <!-- 오른쪽 바퀴 조인트 정의 (연속 회전) -->
    <joint name="wheel_right_joint" type="continuous">
        <origin rpy="0 0 0" xyz="0 -0.07 0"/>
        <parent link="base_link"/>
        <child link="wheel_right_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <!-- 왼쪽 바퀴 링크 정의 -->
    <link name="wheel_left_link">
        <visual>
            <origin rpy="-1.57 0 0" xyz="0 0 0"/>
            <geometry>
                <!-- 왼쪽 바퀴의 3D 모델 파일 지정 -->
                <mesh filename="package://bumperbot_description/meshes/wheel_left_link.STL"/>
            </geometry>
        </visual>
    </link>

    <!-- 왼쪽 바퀴 조인트 정의 (연속 회전) -->
    <joint name="wheel_left_joint" type="continuous">
        <origin rpy="0 0 0" xyz="0 0.07 0"/>
        <parent link="base_link"/>
        <child link="wheel_left_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <!-- 전방 캐스터 링크 정의 -->
    <link name="caster_front_link">
        <visual>
            <origin rpy="0 0 0" xyz="0 0 0"/>
            <geometry>
                <!-- 전방 캐스터의 3D 모델 파일 지정 -->
                <mesh filename="package://bumperbot_description/meshes/caster_front_link.STL"/>
            </geometry>
        </visual>
    </link>

    <!-- 전방 캐스터 조인트 정의 (고정) -->
    <joint name="caster_front_joint" type="fixed">
        <origin rpy="0 0 0" xyz="0.0475 0 -0.0275"/>
        <parent link="base_link"/>
        <child link="caster_front_link"/>
    </joint>   

    <!-- 후방 캐스터 링크 정의 -->
    <link name="caster_rear_link">
        <visual>
            <origin rpy="0 0 0" xyz="0 0 0"/>
            <geometry>
                <!-- 후방 캐스터의 3D 모델 파일 지정 -->
                <mesh filename="package://bumperbot_description/meshes/caster_rear_link.STL"/>
            </geometry>
        </visual>
    </link>

    <!-- 후방 캐스터 조인트 정의 (고정) -->
    <joint name="caster_rear_joint" type="fixed">
        <origin rpy="0 0 0" xyz="-0.0475 0 -0.0275"/>
        <parent link="base_link"/>
        <child link="caster_rear_link"/>
    </joint>
</robot>
<!-- 로봇 정의 끝 -->

STL 파일
https://drive.google.com/drive/folders/11_n552jfseJHNUhTUXIdhJ0XULIWUrl6?usp=sharing

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글