로봇 시각화

ROS에서 로봇을 시각화 하는데 쓰이는 대표적인 툴이 Rviz와 Gazebo이다.

Rviz는 센서 데이터등을 자유롭게 다루고 시각화 하기에 좋다.

Gazebo는 동역학 시뮬레이션을 구성하고 테스트하기에 좋다.

 

각각의 장단점이 있고 Rviz를 이용한 로봇 시각화를 한다.

 

로봇 시각화를 위해서 필요한 것은 아래와 같다.

1. 로봇의 URDF파일

단순히 URDF파일만 있으면 TF2에 있는 패키지로 로봇의 각 조인트, 링크구조를 시각화 하고 모델을 띄울 수 있다.

 

주의할점은 robot_state_publisher는 로봇의 링크로 정의한 파트만 시각화를 해준다.

바퀴같이 Joint 특성으로 지정해준 경우에는 joint_state_publisher로 불러와야 모든 구조가 불러와진다.

Launch파일로 잘 작성하고 Rviz에서 TF를 활성화한 후 보면 로봇 구조가 시각화된다.

#!/usr/bin/env python3

import os
import xacro
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
from launch.conditions import IfCondition, UnlessCondition

def generate_launch_description():

    use_sim_time = LaunchConfiguration('use_sim_time', default='false')
    share_dir = get_package_share_directory('mobile_description')
    urdf = os.path.join(share_dir, 'urdf', 'mobile.urdf')
    with open(urdf, 'r') as infp:
        robot_desc = infp.read()

    rsp_params = {'robot_description': robot_desc}

    return LaunchDescription([
        Node(
            package='robot_state_publisher',
            executable='robot_state_publisher',
            output='screen',
            parameters=[rsp_params, {'use_sim_time': use_sim_time}]),
        Node(
            package='joint_state_publisher',
            executable='joint_state_publisher',
            name='joint_state_publisher'
        )
    ])
결과