안녕하세요. 충남대학교 컴퓨터공학과에 재학중인 김진섭입니다.
uArm swift pro의 내부에는 Arduino가 탑재되어있습니다.
이번 포스팅에서는 아두이노 스케치라는 아두이노 IDE를 활용하여 uArm을 제어하여 보도록 하겠습니다.
우선 https://github.com/uArm-Developer/SwiftProForArduino에 들어가서, 코드를 다운로드 받습니다.
해당 홈페이지에 들어가서, clone or download를 누른 뒤 DownloadZIP을 눌러 Frimware를 다운로드 받습니다. 그 뒤 ZIP 파일을 풀어줍니다.
*해당 과정은 uArm Swift Pro에 대한 처리입니다!
Firmware는 비유하면 uArm의 머리와 같은 것 입니다. FirmWare를 uArm에 적용시켜주어야 우리가 제어를 하기 위한 명령을 받아들이게 됩니다.
다음으로 아두이노 스케치 IDE를 열고 라이브러리를 추가합니다.
위 처럼, 스케치/라이브러리 포함하기/.ZIP 라이브러리 추가...를 클릭하여줍니다.
이전에 생성한(Zip 압축 해제 결과파일) 파일로 들어가서, \lib\Marlin으로 설정하고 열기 버튼을 클릭합니다.
그렇게 되면 해당 라이브러리가 저장됨을 확인할 수 있습니다.
다음으로 아두이노 스케치에서 파일\ 예제 클릭 후 사용자 지정 라이브러리의 'Martin'을 클릭하여줍니다.
Martin이 열렸다면, uArm을 PC에 연결하여주고, 보드와 프로세서 그리고 포트를 uArm에 맞게 아래와 같이 설정하여줍니다.
위 처럼 설정이 완료가 되었다면, 컴파일을 수행한 뒤 uArm swift pro에 업로드를 수행하여줍니다. 업로드가 완료되었다면 시리얼 모니터를 열어줍니다.
이제 컴퓨터를 통하여 제어를 할 수 있는데 표준 G code를 지원합니다.(G code는 학부과정에서 처음 보는 것이라 다소 생소 하였습니다.)
G code는 수치제어에 사용되는 프로그래밍 언어로 주로 보통 기계를 만드는 기계(공작 기계)와 같은 곳에서 명령 제어를 위해 주로 사용된다고합니다.
즉 G code는 사람이 컴퓨터화된 공작기계에 어떤 제품을 어떻게 만들지 명령하는데 사용되는 언어로, 어디로 움직일지 어떤 속도로 움직일지 등이 정의됩니다. 사용되는 부분의 예를 들어보면, 3D 프린터나 레이저 커팅 등을 할 때, 이동하는 경로와 속도 등을 표현하는 언어임을 의미합니다.
(출처- 위키백과)
uFactory 홈페이지에서 몇 가지 제어 처리를 위한 정보를 얻기위해 데이터를 찾다가, uArm Swift Pro에 대한 Protocol을 얻었고, 그로 얻을 수 있었던, 간단한 명령어 처리를 알려드립니다.
우선 command의 letter는 대문자 이어야합니다.
예를 들어 G0 X100 Y50 Z30 F500이라는 명령을 주고 싶을 때, X가 x이면, x에 대한 처리는 이루어지지 않음 의미합니다.
uArm에 대한 명령어는 Command with underline 과 Command without the underline으로 나뉩니다.
- Command with underline
Command with underline은 명령어의 앞부분에 #을 추가하여 명령을 전달하는 것 입니다.
#num을 Command 맨 앞에 추가하여주면, 추후에 uArm이 명령어를 처리하여주고 num과 동일하게 $num을 뱉어주게 되어 개발자는 어떠한 명령어가 uArm에서 처리되었는지 알 수 있게 되는 장점이 있습니다.
보통 디버깅을 수행할 때 처리하여줍니다.
- Command without the underline
#이 없다면 단순히 ok만 보여주어, 어떤 명령어가 완료되었는지 알 수 없습니다.
간단하게 uArmSwiftPro를 움직이는 명령어, 그리고 Suction Cup을 사용하는 명령어를 사용한 뒤 마치도록 하겠습니다.
*움직이는 명령어
G0 X100 Y50 Z30 F500는 (100,50,30)으로 500mm/min으로 이동하라. 라는 명령어 입니다.
해당 명령어를 주면, uArm은 움직이고 목표한 위치에 도달하면 'ok'라는 결과를 띄어줍니다.
만약 해당 명령어 앞에 #15를 붙여준다면 결과는 '$15 ok'가 됩니다.
*Suction Cup 사용 명령어
Suction Cup을 사용하기 위해서는 Standard Suction mode로 수행을해야합니다.
따라서, 해당 모드로 변환을 하기 위하여 M2400 S0을 입력하여 Suction mode로 변환하여줍니다.
다른 예로는 M2400 S1은 레이저, M2400 S2는 3D프린터 모드가 됩니다.
그 뒤 M2231 V1을 하면, Suction Cup을 동작시키고, M2231 V0을 하면 Suction Cup 동작을 중지합니다.
위 사항은 다른 모드일 경우 모두 동일하게 적용됩니다.
위 명령어를 활용한 예시를 하나 소개드리면, SuctionCup을 활용하여 UArm 박스에 들어있는 정사각형 물체를 들고 움직이는 예제를 소개해 드릴테니 한번 시리얼 모니터에서 수행해 보시길 바랍니다.
M2400 S0
#1 G1 X200 Y0 Z130 F1000
#2 G1 X200 Y0 Z30 F1000
M2231 V1
G1 X200 Y0 Z130 F100
G1 X150 Y-150 Z130 F1000
G1 X150 Y-150 Z30 F1000
M2231 V0
G1 X150 Y-150 Z130 F1000
G1 X150 Y-150 Z30 F1000
M2231 V1
G1 X150 Y-150 Z130 F1000
G1 X200 Y0 Z130 F1000
G1 X200 Y0 Z30 F1000
M2231 V0
그 외에도 여러가지 명령어가 있으니, 관심이 있으신 분들은 uFactory에서 uArm Swift Pro Protocol을 찾아 확인해 주시길 바랍니다.
다음 포스팅에서는 uArm을 파이썬으로 제어하는 방법에 대하여 포스팅하겠습니다.
이상으로 포스팅을 마칩니다. 감사합니다.
추가 기재
http://download.ufactory.cc/docs/en/uArm%20Swift%20Pro_Developer%20Guide%20v1.0.6.pdf
'Etc > odds and ends' 카테고리의 다른 글
uArm 예제를 응용해 바둑돌 두는 동작 구현 (2) | 2019.01.10 |
---|---|
OpenMV가 바둑돌을 찾아내도록 코드를 구현해봅시다. (0) | 2019.01.04 |
uArmSwiftPro Open MV사용해보기 (2) | 2019.01.02 |
Python으로 uArm 제어하기 (4) | 2018.12.28 |
uArm 소개 & uArm Studio 사용법 (1) | 2018.12.24 |