반응형
이전 글에서는
Blender를 이용하여 STL파일을 DAE파일로 만들었다.
https://jstar0525.tistory.com/349
이번 글에서는
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
ref.
반응형