#!/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 thread
def aa(rb):
try:
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 위치
print 'Joint',Joint_list[0],Joint_list[1],Joint_list[2],Joint_list[3],Joint_list[4],Joint_list[5]
rb.sleep(0.1)
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 'XYZ',XYZ_list[0],XYZ_list[1],XYZ_list[2],XYZ_list[3],XYZ_list[4],XYZ_list[5]
rb.sleep(0.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)
except Robot_emo:
rb.exit(1)
def main():
## 2. 초기 설정② ####################################
# ZERO 로봇 생성자
rb = i611Robot()
# 좌표계의 정의
_BASE = Base()
# 로봇과 연결 시작 초기화
rb.open()
# I/O 입출력 기능의 초기화
IOinit( rb )
# 교시 데이터 파일 읽기
data = Teachdata( "teach_data" )
# Thread 시작
th = threading.Thread(target=aa, args= (rb,))
th.setDaemon(True)
th.start()
## 1. 교시 포인트 설정 ######################
p1 = data.get_position( "pos5", 0 )
p2 = data.get_position( "pos5", 1 )
## 2. 동작 조건 설정 ########################
m = MotionParam( jnt_speed=10, lin_speed=10, pose_speed=10, overlap = 30 )
#MotionParam 형으로 동작 조건 설정
rb.motionparam( m )
rb.enable_interrupt(0,True) # 동작 중에 감속 정지 입력 시의 예외 발생을 활성화
rb.enable_interrupt(1,True) # 동작 중에 비상 정지 입력 시의 예외 발생을 활성화
## 3. 로봇 동작을 정의 ##############################
# 작업 시작
try:
while True:
rb.move(p1)
rb.move(p2)
except Robot_emo:
print "Robot_emo"
except KeyboardInterrupt: # "ctrl" + "c" 버튼 입력
print "KeyboardInterrupt"
rb.home()
finally:
print "finally"
rb.close()
## 4. 종료 ######################################
# 로봇과의 연결을 종료
rb.close()
if __name__ == '__main__':
main()