ZRA – ex17_SharedMemory.py

				
					#!/usr/bin/python
# -*- coding: utf-8 -*-
## 1. 초기 설정① #######################################
# 라이브러리 가져오기
## 1.초기 설정 ① 모듈 가져오기 ######################
from i611_MCS import *
from teachdata import *
from i611_extend import *
from rbsys import *
from i611_common import *
from i611_io import *
from i611shm import *
import math 

def main():
    ## 2. 초기 설정② ####################################
    # ZERO 로봇 생성자
    rb = i611Robot()
    # 좌표계의 정의
    _BASE = Base()
    # 로봇과 연결 시작 초기화
    rb.open()
    # I/O 입출력 기능의 초기화 
    IOinit( rb )
    # 교시 데이터 파일 읽기
    data = Teachdata( "teach_data" )
    ## 1. 교시 포인트 설정 ######################
    p1 = Position( -418.30, -398.86, 287.00, 0, 0, -180 )
    p2 = Position( -158.54, -395.10, 287.00, 0, 0, -180 )
    ## 2. 동작 조건 설정 ######################## 
    m = MotionParam( jnt_speed=10, lin_speed=10, pose_speed=10, overlap = 30 )
    #MotionParam 형으로 동작 조건 설정
    rb.motionparam( m )

    Joint_list =[] 
    ## 3. 로봇 동작을 정의 ##############################
    # 작업 시작
    while True:

        Joint_list = shm_read( 0x3050, 6 ).split( ',' ) 
        Joint_list[0] = math.degrees(float(Joint_list[0])) # Joint 1 위치
        Joint_list[1] = math.degrees(float(Joint_list[1])) # Joint 2 위치
        Joint_list[2] = math.degrees(float(Joint_list[2])) # Joint 3 위치
        Joint_list[3] = math.degrees(float(Joint_list[3])) # Joint 4 위치
        Joint_list[4] = math.degrees(float(Joint_list[4])) # Joint 5 위치
        Joint_list[5] = math.degrees(float(Joint_list[5])) # Joint 6 위치

        XYZ_list = shm_read( 0x3000, 6 ).split( ',' ) 
        XYZ_list[0] = float(XYZ_list[0]) # XYZ X 위치
        XYZ_list[1] = float(XYZ_list[1]) # XYZ Y 위치
        XYZ_list[2] = float(XYZ_list[2]) # XYZ Z 위치
        XYZ_list[3] = math.degrees(float(XYZ_list[3])) # XYZ Rz 위치
        XYZ_list[4] = math.degrees(float(XYZ_list[4])) # XYZ Ry 위치
        XYZ_list[5] = math.degrees(float(XYZ_list[5])) # XYZ Rx 위치

        print 'Joint',Joint_list[0],Joint_list[1],Joint_list[2],Joint_list[3],Joint_list[4],Joint_list[5]
        rb.sleep(1) 

        print 'XYZ',XYZ_list[0],XYZ_list[1],XYZ_list[2],XYZ_list[3],XYZ_list[4],XYZ_list[5]
        rb.sleep(1) 

        #시스템 포트의 상태를 획득
        running  = rb.get_system_port()[0]   #로봇 프로그램 상태 
        svon     = rb.get_system_port()[1]   #서보 상태
        emo      = rb.get_system_port()[2]   #비상 정지 상태
        hw_error = rb.get_system_port()[3]   #시스템 정의 에러 ( 치명적 ) 상태
        sw_error = rb.get_system_port()[4]   #시스템 정의 에러 상태
        abs_lost = rb.get_system_port()[5]   #ABS 소실 상태
        in_pause = rb.get_system_port()[6]   #일시 정지 상태
        error    = rb.get_system_port()[7]   #시스템 에러 상태

        print '상태',running,svon,emo,hw_error,sw_error,abs_lost,in_pause,error 
        rb.sleep(1)
         
    ## 4. 종료 ######################################
    # 로봇과의 연결을 종료
    rb.close()
if __name__ == '__main__':
    main()