[Simulation][Gazebo] 로봇 모델 만들기

Yujin-Shim·2023년 6월 21일
1

simulation

목록 보기
1/10

로봇 모델 생성

  • .urdf vs .sdf
  • URDF (Unified Robot Description Format)
    - 로봇 모델에 대해 기술할 때 사용
    • 링크, 관절, 센서 등 로봇의 구조를 정의하는 XML 기반 파일 형식
    • 로봇 모델의 시각화를 생성하고 운동학 및 동적 시뮬리에션을 수행하는데 사용
  • SDF (Simulation Description Format)
    - Gazebo 시뮬레이터를 사용하는 로봇 시스템의 시뮬레이션에 사용되는 파일 형식
    • 질량, 관성 및 마찰과 같은 물리적 속성을 포함하여, URDF보다 포괄적인 표현을 제공하는 XML 기판 파일 형식
    • SDF는 중력, 바람, 마찰 등 다양한 환경에서 로봇의 동작을 시뮬레이션 하는데 사용

실습

로봇 패키지 만들기

mkdir sim_ws
mkdir sim_ws/src
catkin_make
cd ~/sim_ws/src/
catkin_create_pkg robot_description rospy urdf xacro
mkdir -p robot_description/urdf
touch robot_description/urdf/robot.urdf

여기까지 진행하고 나면 이렇게 파일과 폴더들이 생성된 것을 확인할 수 있다.

robot.urdf 파일에 아래 내용을 적어주자.

<?xml version="1.0" ?>

<robot name="robot">
    <!-- Link - chassis -->
    <link name="link_chassis">
        <inertial>
            <mass value="10" />
            <origin xyz="0 0 0.3" rpy="0 0 0" />
            <inertia ixx="1.5417" ixy="0" ixz="0" iyy="3.467" iyz="0" izz="4.742" />
        </inertial>

        <collision>
            <geometry>
                <box size="2 1.3 0.4" />
            </geometry>
        </collision>

        <visual>
            <geometry>
                <box size="2 1.3 0.4" />
            </geometry>
            <material name="Red">
                <color rgba="1 0 0 1" />
            </material>
        </visual>
    </link>
</robot>
  • 설명
    <--color rgba 는 red, green, blue, alpha(투명도)이다.--/>

실행을 위한 Launch file 만들기

cd ~/sim_ws/src/
mkdir -p robot_description/launch
touch robot_description/launch/rviz.launch

rviz.launch 파일에 아래 내용을 적어주자.

<launch>
    <param name="robot_description" command="cat '$(find robot_description)/urdf/robot.urdf'" />
    <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" />
</launch>

rviz 실행해보기

roslaunch robot_description rviz.launch

아직은 아무것도 없는 RVIZ 창이 나올 것이다.
Rviz 내부의 창에서 하단에 있는 Add를 눌러 RobotModel을 추가해주고
Fixed Frame을 "link_chassis"로 바꿔주면 모델이 보이는 것을 확인할 수 있다.

  • link_chassis는 robot.urdf에 적었던 link name이다.

RLException: [rviz.launch] is neither a launch file in package [robot_description] nor is [robot_description] a launch file name
The traceback for the exception was written to the log file

혹시 이런 ERROR를 만난다면 아래 코드를 terminal에 한번 쳐주자

source ~/sim_ws/devel/setup.bash

Link와 Joint

Inertial

<intertial>
	<mass value="10" />
    <origin
    	xyz="0 0 0.3"
        rpy="0 0 0" />
    <inertia
    	ixx="1.5417"
        ixy="0"
        ixz="0"
        iyy="3.467"
        iyz="0"
        izz="4.742"
</inertial>
  • mass : 물체의 무게, kg
  • origin : 관성값의 무게중심
  • inertia : 관성의 분포를 나타내는 matrix

Colision / Visual

<colision>
	<geometry>
    	<box size="2 1.3 0.4" />
    </geometry>
</colision>
<visual>
	<geometry>
    	<box size="2 1.3 0.4" />
    </geometry>
</visual>
  • colision : simulation상에서 물리적 상호작용 계산(실제 연산이 돌아가는 영역)
  • visual : rendering에만 사용

Joint

  • 링크들을 묶고 링크간의 위치 관계를 만드는데 사용
 <joint name="joint_chassis_left_wheel" type="continuous">
        <origin rpy="0 0 0" xyz="-0.5 0.65 0" />
        <child link="link_left_wheel" />
        <parent link="link_chassis" />
        <axis rpy="0 0 0" xyz="0 1 0" />
        <limit effort="10000" velocity="1000" />
        <joint_properties damping="1.0" friction="1.0" />
</joint>

실행하기

roslaunch robot_description rviz.launch

만약 이런 ERROR를 만났다면

cannot launch node of type [joint_state_publisher_gui/joint_state_publisher_gui]: joint_state_publisher_gui

joint_status_publusher_gui를 설치해주면 된다.

apt install ros-melodic-joint-status-publisher-gui

이때 ros version이 다르다면 melodic 대신 자신의 ros version을 적어주면된다.

ros version 확인하는 방법

rosversion -d

0개의 댓글