728x90 파이썬16 FreeCAD 파이썬 프로그램에서 사용자 Gui 만들기 이 글은 Yorik Van Havre가 지은 "FreeCAD A Manual" 문서 중 "creating interface tool" 을 따라한 내용을 기록하였다. 파이썬 프로그램을 개발할 경우 기존 파이썬 콘솔을 텍스트 화면으로 이용하여 간단한 사용자 입력 환경을 구현한다. 하지만 FreeCAD의 경우 파이썬 콘솔 페널이 기존 파이썬 셀처럼 항시 사용할 수 없다. 그러므로 FreeCAD에서 안정적으로 사용자 입력 환경을 가져가기 위해서 FreeCAD의 사용자 환경을 만든 공개 소프트웨어인 Qt 모듈을 이용해야 한다. 다음은 Length, Width 그리고 Height 입력을 받아 3차원 Box를 그려주는 간단한 FreeCAD 파이썬 프로그램의 제작 과정의 기록이다. https://www.qt.io/do.. 2023. 5. 2. 파이썬으로 FreeCAD CAD 프로그램을 작성하는 방법 소개 CAD 프로그램 작성은 CAD에서 제공하는 API 함수를 프로그램 언어에 포함하여 CAD 작성이나 사용 과정을 자동화하는 활동이다. CAD 프로그램의 한 방법으로 매크로는 주로 CAD 활동을 기록한 후 이를 입력에 따라 반복적으로 실행하는 프로그램이다. FreeCAD는 파이썬 기반 CAD 프로그램과 매크로 프로그래밍 환경을 제공한다. FreeCAD가 제공하는 파이썬 환경은 CAD 시스템 내부에 파이썬 셀과 개발환경인 IDEL을 내재했다고 생각하면 이해하기 쉽다(실제 IDEL과 셀을 내재해서 구현했다). FreeCAD는 사용자가 CAD 환경에서 내리는 모든 명령을 파이썬 셀에서 동작하는 파이썬 명령으로 실행한다(만약 CAD에서 파이썬 패널을 열어놓으면 명령이 실행되는 것을 확인할 수 있다- 즉, 파이썬 패.. 2023. 4. 23. 파이썬 모듈 패키지 파일의 위치를 알고 싶다면 python 쉘을 내장한 소프트웨어가 자체적으로 모듈을 관리하는데 모듈 설치하는 방법을 찾기가 어려워 기존 pip로 설치한 모듈을 복사하여 사용하려고 했다. 이 경우 복사하고 싶은 모듈이 어디에 설치되었는지 확인해야 한다. 파이썬에 모듈의 파일 위치를 찾아주는 inspect.getfile()을 이용하여 파일의 위치를 찾을 수 있다. getfile()을 사용하기 위해 우선 inspect를 import 해야 한다. import inspect import pymysql print(inspect.getfile(pymysql)) 이때 찾으려하는 모듈은 pymysql이다. 이 모듈을 실행하면 다음과 같은 결과를 통해 파일의 위치를 알 수 있다. 해당 파일을 쉘을 내장한 소프트웨어에서 관리하는 모듈 디렉터리에 복사하.. 2023. 4. 23. 로봇 조립 실행 - (6) TRIP 준비된 로봇 조립 계획을 실행시키기 위해 로봇에 연결된 상호 작용 명령 환경(Interactive Command Environment)이 필요하다. TRIP은 interactive TRIP(itrip)이라는 연결된 로봇에 준비된 조립 계획을 실행시킬 수 있는 상호 작용 명령 환경 프로그램을 제공한다. itrip의 기능은 help 기능을 이용하여 확인할 수 있다. ls items는 현재 정의된 부품, 중간조립품, 최종 조립품 그리고 공정 item을 출력한다. ls locs는 현재 정의된 position move와 position base 위치를 출력한다. ls acts는 로봇 계획을 출력한다. 출력되는 로봇 계획은 actpy에서 작성한 로봇 계획에 itrip에서 선정한 p_move와 p_base 위치를 사.. 2023. 4. 7. 로봇 조립 계획 - (5) TRIP 부품 조립 순서(BOM 데이터베이스)와 부품과 중간 조립품의 형상 정보(CAD 데이터베이스)를 이용하여 로봇 조립 계획을 생성한다. 로봇 조립 계획은 로봇 팔을 이용하여 부품을 조립하여 완성품을 만드는데 필요한 작업의 순서와 로봇팔의 단위 위치를 정의한다. 로봇 조립 계획은 로봇 팔의 출발 위치와 도착 위치로 정의되는 단위 움직임인 action, 한 부품에 대한 모든 action의 순서인 operation 그리고 조립품에 대한 모든 operation의 순서인 task로 구분할 수 있다. 그러므로 로봇 조립 계획은 대상 최종 조립품에 대한 task와 동일하다. TRIP에서 로봇 조립 계획을 생성하는 프로그램은 actpy이다. TRIP은 로봇 조립 계획을 BOM 데이터베이스의 BOM에 연결된 robot_pa.. 2023. 4. 7. 조립 가능 방향 구하기 - (3) TRIP 저장된 CAD와 BOM 데이터베이스를 이용하여 각 부품의 특징 형상에 따른 조립 가능 방향을 결정한다. 특징 형상을 결정하고 조립 가능 방향을 결정하는 프로그램은 classpy이다. 1) 특징 형상을 구분한다 현재 classpy는 다음 특징 형상을 구분하고 조립 가능 방향을 설정한다. cylinder blind hole/boss spring 추후 확장 가능한 특징 형상은 다음과 같다. slot/step hrough hole/pocket(cylinderic/prismatic) blind hole/boss(cylinderic/prismatic) 2) 조립 가능 방향을 구한 후, 조립 가능 방향을 item 객체에 연결하여 저장한다 classpy를 실행 후 dir_asm 테이블을 검색하면 #285(base)의 .. 2023. 4. 4. 제품을 자동 조립하는 스마트한 로봇을 만드는 소프트웨어 TRIP(Team Robotics Intelligence Platform)은 CAD 파일을 입력하면 로봇이 자동으로 해당 제품을 조립하는 시스템을 만들 수 있게 하는 데이터베이스와 소프트웨어 체계이다. 1) CAD 시스템을 이용하여 3D CAD 모델을 작성하고 3D 프린트한다. 3개 부품으로 이루어진 간단한 조립품을 설계한다. 부품을 3D 프린트한다. 2) TRIP을 이용하여 로봇이 자동으로 3D CAD 부품을 조립한다. 아래 동영상은 자동으로 만들어진 로봇 조립 동작이 아니라 수작업으로 로봇을 티칭하여 만든 조립 동작이다. TRIP C2A 과제에서 이 동작을 자동으로 만들어내는 소프트웨어를 개발한다. https://youtube.com/shorts/sc-upyO1szk 3) 완성된 제품 다음 블로그 글.. 2023. 4. 3. 상호작용 - (7) Dobot Magician 로봇 파이썬 프로그래밍 Dobot Magician 로봇 파이썬 프로그래밍 7번째 시험 코드는 상호작용하는 프로그램이다. 상호작용(Interactive)이란 로봇 동작이 미리 프로그램되어 있지 않고 현재 내리는 명령에 따라 즉시 동작하는 방식을 뜻한다. Magician 로봇을 상호작용 방식으로 동작시키기 위해 시험에 다음을 고려하였다. 상호작용 명령 환경 구현 - Dobot Magician에 연속적인 상호작용 명령을 내릴 수 있는 Text Interpretor 환경 구현 상호작용 명령어 구현 - 로봇의 이동을 명령할 수 있는 move to x, y, z 명령어 구현 상호작용 명령 환경 구현을 위해 파이썬의 input과 while 명령어를 사용하여 사용자로부터 입력을 받도록 구현하였다. move to 명령어를 구현하기 위해서 파이.. 2023. 4. 1. 그리퍼 동작 - (6) Dobot Magician 파이썬 프로그래밍 그리퍼의 동작을 제어하는 SetEndEffectorGripper()를 사용하여 반복적으로 그리퍼를 열고 닫는 시험을 진행하였다. # 2023/3/31 test030 # gripper test - 그리퍼 제어 import threading import DobotDllType as dType CON_STR = { dType.DobotConnect.DobotConnect_NoError: "DobotConnect_NoError", dType.DobotConnect.DobotConnect_NotFound: "DobotConnect_NotFound", dType.DobotConnect.DobotConnect_Occupied: "DobotConnect_Occupied"} # Load Dll and get the CD.. 2023. 3. 31. 팔 동작 - (5) Dobot Magician Python 프로그래밍 Dobot Magician Python 프로그램에서 로봇의 동작을 구현하기 위하여 setPTPCmd()를 사용한다. 로봇 동작을 구현할 때 하드웨어 로봇의 동작 수행과 컴퓨터 처리 속도가 차이가 나므로 비동기 장치를 해 주어야 한다. 이 프로그램은 총 5번 x 축 방향으로 왕복하는 명령를 실행시킨다. 명령을 실행시킬 때 마지막 명령어의 Queue Index를 lastIndex에 저장한 후, dType.SetQueuedCmdStartExec() 함수로 Queue의 명령을 실행시킨다. 그 후 LastIndex와 현재까지 실제 실행된 명령어 Index(dType.GetQueuedCmdCurrentIndex(api)[0])를 비교하여 마지막 명령이 실행될 때까지 기다린다. # 2023/3/31 test020 #.. 2023. 3. 31. 팔이동 - (4) Dobot Magician 파이썬 프로그래밍 이번 시험은 로봇이동을 이용한 비동기 명령어 실행이다. 로봇 단위 Action은 한 위치에서 다른 위치로 로봇 엔드이팩터의 단위 이동을 뜻한다. 만일 로봇 Action 명령을 여러 개 내리면 앞의 이동이 끝나기 전에 뒤의 명령어가 실행되어 일관된 이동을 할 수 없다. 그러므로 GetQueuedCmdCurrentIndex(api)를 이용하여 현재 명령어의 인덱스 값을 얻어 해당 명령어 이전부터 현재까지 명령어가 실행될 때까지 dType.dSleep(100)을 이용하여 기다린다. # test020 3/30/2023 # Dobot Magician with Async commands import threading import DobotDllType as dType # string for dobot connect.. 2023. 3. 30. 모듈 파일 목록 - (3) Dobot Magician Python 프로그래밍 Windows에서 Dobot Magician 로봇 파이썬 프로그램 개발에 필요한 파일은 그림과 같다. 이 중 DobotControl.py가 예제파일이다. 이 파일을 임의의 디렉터리에 저장하면 파이썬 로봇 프로그램을 개발할 수 있다. DobotControl.py 동작 설명 읽어보기 > DobotControl.py 소스 설명 읽어보기 > 다음은test010.py로써 Dobot connection과 homing 기능을 test한다. # 2023/3/29 test010 # Connetion and Homing Test import threading import DobotDllType as dType CON_STR = { dType.DobotConnect.DobotConnect_NoError: "DobotConn.. 2023. 3. 29. 이전 1 2 다음