(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Getting Started with a Doosan Robot

Description: This tutorial guides about Doosan Robot in ROS

Keywords: Doosan Robot, m0609, m0617, m1013, m1509, co-bot

Tutorial Level: INTERMEDIATE

제한 사항

튜토리얼을 진행하기 위하여 아래 사항을 완료하십시오.

  1. ROS가 설치된 PC(Kinetic)
  2. doosan_robot package 설치

다음 튜토리얼은 두산 로봇에 관한 튜토리얼입니다. 시작하기 전에, 사용자는 Ubuntu 16.04 LTS OS에 ROS를 설치해야 합니다. 본 튜토리얼은 ROS Wiki에 따른 ROS 설치를 완료하였다고 가정합니다.

두산 로봇 제어기의 기본 IP는 192.168.127.100입니다. 사용자 PC와 컨트롤러의 IP대역폭이 일치해야 합니다. 컨트롤러에 탑재된 공유기 포트에 연결한 뒤, 올바르게 연결되었는 지 확인하기 위하여 ping 테스트를 실시하십시오.

만약 가상 머신에서 사용하고자 한다면, 가상 머신의 네트워크 설정을 브리지 어댑터로 변경하십시오.

Overview

doosan_robot 메타 패키지는 이더넷 연결을 통해 하드웨어와 통신합니다. 사용자는 ROS 환경에서 서비스, 토픽, 혹은 파이썬과 유사한 DRL(Doosan Robot Launguage)을 이용하여 실제 로봇을 움직이거나 모니터링 할 수 있습니다.

로봇 제어기가 실제로 없는 경우의 구동을 위하여 doosan_robot 패키지는 제어기와 연동되는 Virtual/Real 모드와 독립적으로 작동하는 에뮬레이터 모드를 지원합니다. 에뮬레이터 모드에 대해서는 다음 단계를 참조하십시오.

Steps

필수 소프트웨어 설치

필요 소프트웨어 패키지 설치가 필요합니다. doosan_robot에서 사용하는 의존성 패키지 목록은 여기에 기술되어있습니다.

하드웨어 설정

Virtual/Real

실제 제어기와 연동되는 Virtual/Real Mode 사용을 위해서 이더넷 통신을 구성할 필요가 있습니다. 두산 로봇은 제어기에 내장된 공유기를 이용한 이더넷 통신을 지원합니다. 제어기의 기본 IP는 192.168.127.100입니다. 제어기 IP는 티치 펜던트에서 수정 가능합니다. 네트워크를 수정하려면 아래 [그림 1]을 참조하세요 .

network.png

[그림 1]네트워크 설정

제어기는 고정 IP로 등록되어있습니다. 사용자 PC와 제어기의 네트워크 대역폭을 맞춰주십시오. 예시로, 제어기 IP를 192.168.127.100(기본)로 사용한다면, 사용자 PC의 IP를 192.168.127.50으로 바꾸는 것을 추천합니다.

두산 로봇에 내장된 공유기는 ZIO_ROUTER이므로 네트워크 구성에 대한 자세한 내용은 여기를 참조하세요.

네트워크가 올바르게 연결되었는지 확인하려면 ping 테스트를 수행하십시오. 터미널을 이용해 다음 명령을 수행하십시오.

ping <ROBOT_IP>

<ROBOT_IP>는 제어기 IP를 의미합니다. 올바르게 연결되었다면 응답이 올 것입니다. 응답이 오지 않는다면 제어기와 연동된 작업을 수행할 수 없습니다.

Emulator

로봇 제어기가 실제로 없는 경우의 구동을 위하여 doosan_robot 은 독립적으로 작동되는 에뮬레이터 모드를 지원합니다. 독립적 작동을 위한 가상 제어기는 /doosan-robot/common/bin/DRCF/ 디렉토리 내부에 있습니다. 사용자의 환경에 따라 32비트인 경우, DRCF32를, 64비트인 경우 DRCF64를 root권한으로 실행시키십시오. DRCF를 실행시키기 위한 명령어는 다음과 같습니다.

./DRCF64 <port> <robot_model>
or
./DRCF32 <port> <robot_model>

<port>는 DRCF가 실행되는 port 번호를, <robot_model>은 실행하고자 하는 로봇의 모델을 의미합니다. 실제 로봇 제어기는 12345번 포트를 사용하므로, 만약 실제 로봇 제어기와 에뮬레이터를 같이 사용한다면 해당 포트를 주의하십시오. <port>의 기본값은 12345이고, <robot_model>의 기본값은 m1013입니다. 해당 arguments를 미입력시 기본값으로 실행됩니다. 올바르게 작동된 에뮬레이터는 [그림 2]와 같습니다.

DRCF64.jpg

[그림 2]DRCF 실행

로봇 모델링 Rviz 실행

이 단계는 dsr_description을 실행시키는 방법에 대하여 설명합니다. dsr_description은 로봇 모델링 파일(.dae)과urdf.xacro 파일을 이용해 rviz에 두산 로봇을 보여줍니다. 단순히 모델을 화면에 표시해주기만 하므로, dsr_description만 실행시켰을 경우에는 제어기와 연동이 불가합니다. dsr_description 패키지는 다음 명령을 통해 실행 가능합니다.

roslaunch dsr_description m1013.launch  ###

같은 방법으로, m0609, m0617, m1509의 모델도 확인 가능합니다.

제어기와 연동

dsr_control패키지는 제어기와 ROS를 연동시켜주는 모듈입니다. 또한 다양한 서비스가 내장되어 있으므로, 자세한 내용은 dsr_control/src/dsr_hw_interface.cpp를 참조하십시오.

dsr_control.launch 파일은 virtual mode로 실행 시 자동으로 에뮬레이터를 실행시킵니다.

dsr_launcher패키지는 다양한 launcher 파일들을 포함하고 있습니다. 파일에 대한 자세한 내용은 doosan-robot/dsr_launcher/launch를 참조하십시오. dsr_launcher는 rvizgazebo 두 가지 시뮬레이터에 대하여 만들어졌습니다. _rviz_gazebo.launch 파일은 두 시뮬레이터를 동시에 실행 시키는 예제 파일입니다.

single_robot_launch파일은 단일 로봇을 컨트롤하는 예제입니다. launch파일에는 다음 argument들이 포함되어있습니다.

ns      # NAMESPACE    / default : dsr01
host    # ROBOT_IP     / default : 192.168.127.100
port    # ROBOT_PORT   / default : 12345
mode    # ROBOT_MODE   / default : virtual
model   # ROBOT_MODEL  / default : m1013
color   # ROBOT_COLOR  / default : white
gripper # GRIPPER      / default : none
mobile  # MOBILE_ROBOT / default : none

에뮬레이터는 Virtual 환경만 지원합니다. Real모드 사용 시 에뮬레이터가 작동하지 않을 수 있습니다.

doosan_robot패키지는 robotiq_2f 그리퍼와 husky mobiel에 대한 레퍼런스를 포함하고 있습니다.

다음 명령을 통해 두산 로봇과 Robotiq 그리퍼를 연동할 수 있습니다:

roslaunch dsr_launcher single_robot_rviz.launch gripper:=robotiq_2f

서비스나, 혹은 dsr_example 예제 패키지를 사용해 gripper를 작동시킬 수 있습니다. 서비스와 dsr_example패키지에 대한 내용은 각각의 단계를 참조하십시오. husky 모바일은 doosan_robot 패키지에 내장 되어 있습니다.

gripper와 마찬가지로 다음 명령을 통해 실행시킬 수 있습니다:

roslaunch dsr_launcher single_robot_rviz.launch mobile:=husky

color는 로봇 색상에 대한 argument입니다. 기본적으로 white로 설정되어있으며, blue로 변경이 가능합니다. argument 입력에 유의하십시오.

multi_launch파일은 다수의 로봇을 컨트롤하는 예제입니다. 최대 갯수 제한은 없지만, 제어기와 1:1 매칭되야하므로 N개의 로봇을 움직이기 위해서는 N개의 제어기(혹은 에뮬레이터)가 필요합니다. 실제 제어기를 사용할 경우 각각의 제어기는 모두 다른 IP를 가지고 있어야 하며, Port는 12345로 고정됩니다. 에뮬레이터를 사용하는 경우, 각각의 에뮬레이터 제어기는 로컬IP(127.0.0.1)를 가지고, 모두 다른 Port번호를 가지고 있어야 합니다. multi-node 사용 실행 명령어는 다음과 같습니다.

roslaunch dsr_launcher multi_robot_rviz.launch

multi-node의 움직임을 확인하고 싶다면 다음 명령어를 실행하십시오.

rosrun dsr_example_py multi_robot_simple.py

서비스와 예제 파일을 이용한 로봇 동작

Examples

dsr_example패키지는 python으로 작성된 예제파일들을 포함합니다. 예제파일 실행 명령어는 다음과 같습니다.

rosrun dsr_example_py <example_file>

Services

doosan_robot은 DRFL이라는 고유 API를 이용하여 다양한 서비스를 지원하고 있습니다. Service는 dsr_control/src/dsr_hw_interface.cpp에 선언되어있습니다. 서비스에 대한 파라미터는 dsr_msgs/srv에 있는 .srv파일에서 확인하십시오. 사용자는 rosservice 명령어를 이용하여 언제든지 원하는 서비스를 불러올 수 있습니다. doosan_robot에 포함된 서비스에 대한 정보는 여기에서 확인할 수 있습니다.

MoveIt!

moveit_config_<robot_model> package는 M-Series로봇의 moveit 설정 파일을 포함하고 있습니다. Moveit에 대한 자세한 내용은 moveit을 참조하십시오.

moveit - rviz 단일 실행 명령:

roslaunch moveit_config_m1013 m1013.launch

위 명령어는 제어기와 연동하지 않는 명령어입니다. 로봇과 연동되지 않지만 모션 플래닝을 확인할 수 있습니다.

실제 제어기와 연동하려면 다음 명령을 실행하십시오 :

roslaunch dsr_control dsr_moveit.launch host:=192.168.127.100 model:=m1013

사용자는 Interactive Marker를 사용하여 모션 플래닝을 수행하고 실제 로봇 동작을 확인할 수 있습니다. 혹은 moveit_commander 패키지를 사용할 수 있습니다. moveit_commander는 CLI 상에서의 MoveIt 모션 플래닝을 지원합니다. moveit_commander 패키지를 사용하기 위해 아래 명령어를 입력하세요.

sudo apt-get indtsll ros-kinetic-moveit-commander

설치가 완료되었다면, 다음 예제를 통하여 MoveIt 동작을 확인할 수 있습니다.

moveit commander 실행

ROS_NAMESPACE=/dsr01m1013 rosrun moveit_commander moveit_commander_cmdline.py robot_description:=/dsr01m1013/robot_description   
#Namespace와 robot_description의 경우 사용자 환경에 맞는 값을 입력해야합니다.

moveit commander 사용 예제

> use arm 
> goal0 = [0 0 0 0 0 0]        # save the home position to variable "goal0"
> goal1 = [0 0 1.57 0 1.57 0]  # save the target position to varialbe "goal1" / radian
> go goal1                     # plan & excute (the robot is going to move target position)
> go goal0                     # paln & excute (the robot is going to move home position)

실제 로봇을 사용할 경우, 간혹 예측 못한 경로로 로봇이 움직일 수 있습니다. 예기치 못한 상황 발생 시 티치 팬던트에 내장된 Emergency Stop버튼을 누르십시오. Emergency Stop 버튼은 티치 펜던트 우측 상단에 위치한 빨간색 버튼을 의미합니다.

Wiki: doosan-robotics/tutorials_ko (last edited 2020-01-08 01:32:23 by doosan-robotics)