Robot Operating System/ROS

[ROS URDF-2] 만든 STL, DAE파일을 URDF에 적용하여 Rviz 실행하기

jstar0525 2022. 10. 10. 15:12
반응형

이전 글에서는

Blender를 이용하여 STL파일을 DAE파일로 만들었다.

https://jstar0525.tistory.com/349

 

ROS URDF를 위한 Blender로 STL파일을 DAE파일로 만들기

상황 ROS에서 Visual Robot Model를 만들기 위해서 URDF를 사용한다. URDF에서도 간단한 도형을 만들 수 있지만 이는 한계가 있다. 따라서 이 글에서는, 기계설계의 CAD 프로그램들의 STL파일을 URDF에서 사

jstar0525.tistory.com

 

이번 글에서는

STL, DAE파일을 사용하여 URDF를 작성하고 Rviz에 실행할 것이다.

 

Env.

VMware workstation(Ubuntu 18.04 amd64, ROS Melodic)

 

URDF 작성하기

ROS Package 생성

$ catkin_create_pkg urdf_tutorial roscpp rospy tf urdf rviz xacro

작업폴더 생성

$ cd urdf_tutorial

$ mkdir meshes && cd meshes
$ mkdir collision visual

$ cd ..
$ mkdir urdf

$ mkdir rviz

$ mkdir launch

폴더 tree 구조는 다음과 같고,

해당 폴더에 stl, dae파일을 넣어준다.

urdf_tutorial
├── CMakeLists.txt
├── include
│   └── urdf_tutorial
├── launch
├── LICENSE
├── meshes
│   ├── collision
│   │   └── Part1.stl
│   └── visual
│       └── Part1.dae
├── package.xml
├── README.md
├── rviz
├── src
└── urdf

URDF 파일 작성

$ cd urdf
$ touch test.urdf
<?xml version="1.0"?>
<robot name="test_urdf">

    <material name="black">
        <color rgba="0 0 0 1.0" />
    </material>

    <link name="map">
        <visual>
            <origin rpy="0.0 0 0" xyz="0 0 0"/>
        </visual>
    </link>

    <link name="test">
        <visual>
            <origin rpy="0.0 0 0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="package://urdf_tutorial/meshes/visual/Part1.dae"/>
            </geometry>
            <material name="black" />
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0 0 0" />
            <geometry>
                <mesh filename="package://urdf_tutorial/meshes/collision/Part1.stl" scale="0.001 0.001 0.001"/>
            </geometry>
        </collision>
    </link>

    <joint name="map_to_test" type="fixed">
        <parent link="map"/>
        <child link="test"/>
    </joint>
 
</robot>

launch파일 작성 및 실행

$ cd ..
$ cd launch
$ touch test_first.launch
<launch>

  <arg name="model" default="$(find urdf_tutorial)/urdf/test.urdf"/>
  <arg name="gui" default="true" />

  <param name="robot_description" command="$(find xacro)/xacro $(arg model)" />

  <node if="$(arg gui)" name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
  <node unless="$(arg gui)" name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" required="true" />

</launch>
$ roslaunch urdf_tutorial test_first.launch

RobotModel을 추가하면

아래와 같이 visual model이 적용된 것을 확인할 수 있다.

rviz 저장

launch 파일로 저장된 rviz 실행

$ touch test.launch
<launch>

  <arg name="model" default="$(find urdf_tutorial)/urdf/test.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find urdf_tutorial)/rviz/test.rviz" />

  <param name="robot_description" command="$(find xacro)/xacro $(arg model)" />

  <node if="$(arg gui)" name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
  <node unless="$(arg gui)" name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

 

위 코드는

아래의 링크에서 볼 수 있다.

https://github.com/jstar0525/urdf_tutorial

 

GitHub - jstar0525/urdf_tutorial: URDF tutorial for ROS using stl, dae files

URDF tutorial for ROS using stl, dae files. Contribute to jstar0525/urdf_tutorial development by creating an account on GitHub.

github.com

 

ref.

https://velog.io/@d2h10s/ROS-stl%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%A1%9C%EB%B4%87-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%8C%85

 

[ROS] stl파일을 이용하여 로봇 시뮬레이팅

Package 생성 패키지 생성 디렉토리 이동 URDF 파일 생성 xacro 파일을 사용하면, 변수를 만들어 유지보수를 쉽게 만들 수 있습니다. 아직은 사용하지 않지만 차후를 위해서 xacro 파일을 작성합니다. s

velog.io

 

반응형