산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

이더넷을 통해 제어되는 로봇 암

구성품 및 소모품

아두이노 101
× 1
WIZnet WIZ750SR
× 1
Android 기기
× 1
로봇 암
다른 로봇 팔을 사용할 수 있지만 로봇 팔이 다음과 같을 경우 코드를 조정해야 할 수도 있습니다. 너무 다름
× 1
메탈 기어 마이크로 서보
× 4

앱 및 온라인 서비스

Arduino IDE
WIZnet S2E 구성 도구
Android 스튜디오

이 프로젝트 정보

소개

로봇팔을 좋아합니다. 간단한 기계 부품, 서보 또는 모터만 있으면 훌륭하고 재미있을 뿐만 아니라 실제로도 유용한 장치를 얻을 수 있다는 점이 마음에 듭니다. 제가 정말 좋아하는 로봇 강좌가 있어서 하나 만들고 싶었습니다.

로봇팔을 만들다 보면 많은 것을 배울 수 있기 때문에 로봇 공학에 대한 지식을 심화할 수 있는 좋은 중급 프로젝트라고 생각합니다. 시작합니다!

로봇 팔

로봇 팔은 약 20$에서 구입할 수 있습니다. 실험을 위해 더 저렴한 것으로 시작하고 싶었습니다. 나중에 더 진지한 로봇 팔을 만들거나 구입할 것이지만 지금은 Banggood에서 25$ DIY 로봇 팔을 작업할 것입니다.

이것은 4DoF(자유도) 로봇 암으로 3개의 서보는 이동에 사용되고 하나는 이펙터에 사용됩니다(프로젝트에서는 그리퍼라고 함). 이는 그리퍼가 특정 영역의 어떤 위치로든 이동할 수 있지만 각도는 변경할 수 없음을 의미합니다. 이것은 상당한 제한 사항이지만 현재로서는 괜찮고 여전히 많은 경우에 유용합니다.

DIY 키트에는 4개의 서보가 포함되어 있으므로 실제로 컨트롤러 외에 로봇 팔을 만들기 위한 모든 구성 요소를 얻을 수 있습니다. 이 서보는 나쁘지 않지만 다음을 선호했습니다.

이 서보는 파란색 서보보다 빠르며 플라스틱 대신 금속 기어를 사용합니다.

로봇 부품은 4개의 플라스틱 시트에 들어 있습니다. 이 시트에서 부품을 제거해야 합니다.

여러 부품으로 구성된 로봇 팔 키트. 다음 비디오를 시청하는 것이 좋습니다. 이 비디오에서 러시아 사람은 같은 유형의 로봇 팔을 만들고 있습니다. 건물 부분은 7:43에 시작됩니다.

패키지에 로봇팔 만드는 방법에 대한 링크가 있었는데 이미지와 설명서 모두 퀄리티가 너무 낮았습니다. 그 영상이 훨씬 낫습니다. 무엇인지 알 수 있지만 이렇게 하면 조립, 분해, 재조립의 거의 무한 루프에 빠지게 됩니다.

서보를 삽입할 때 매우 주의하십시오. 이런 종류의 플라스틱을 사용한 이 디자인은 나사를 조일 때 매우 쉽게 부러지는 경향이 있습니다. 나사의 최적의 조임은 로봇의 일부 다른 부분에서도 중요합니다. 그것들을 너무 조이면 서보로 로봇 팔의 세그먼트를 움직일 수 없습니다.

어느 정도 건물을 짓고 나면 자신만의 로봇 팔을 갖게 될 것입니다.

포지셔닝 서보에는 충분히 긴 케이블이 있지만 그리퍼에는 훨씬 더 긴 케이블이 필요합니다. 그 서보를 분해하고 기존 케이블의 땜납을 제거했으며 케이블 길이가 두 배 이상 늘어났습니다.

두뇌

좋아요, 로봇팔은 준비됐지만 어떻게든 제어하고 싶을 가능성이 큽니다. 이를 위해 마이크로컨트롤러가 필요했고 이 작업을 위해 Arduino 101을 선택했습니다.

Intel 마이크로컨트롤러(Intel Curie)를 사용하는 유일한 공식 Arduino 보드입니다. 자이로스코프와 가속도계가 내장되어 있습니다. 블루투스 기능도 있어서 앞으로 BLE를 통해 로봇을 제어할 가능성이 있습니다. 이 보드의 또 다른 매우 유용한 기능은 직렬 통신이 작동하는 방식입니다. 대부분의 Arduino와 달리 USB 직렬과 핀 1과 0(TX 및 RX)의 UART는 동일하지 않습니다. Arduino를 다시 프로그래밍할 때 핀 0과 1에서 다른 통신 회로를 분리할 필요가 없다는 이점이 있습니다. 디버깅 목적으로도 유용합니다.

USB 포트의 직렬을 사용하려면 '직렬'을 사용해야 하고 GPIO0 및 GPIO1 핀을 사용하려면 '직렬1'을 사용해야 합니다.

Arduino 101에는 4개의 PWM 지원 GPIO(GPIO3, GPIO5, GPIO6 및 GPIO9)가 있으며 저는 모두 서보를 제어하는 ​​데 사용했습니다.

커뮤니케이션

내 로봇 팔은 직렬(구체적으로는 Serial1)을 통해 제어할 수 있습니다. 이를 위해 최신 통신 모듈인 WIZ750SR을 사용했습니다.

Cortex-M0 MCU가 있는 소형 이더넷 모듈입니다. 기본 기능은 직렬 대 이더넷 모듈이지만 필요에 맞게 모듈을 쉽게 다시 프로그래밍할 수 있습니다. 원하는 경우 이 보드를 I2C-Ethernet 보드로 전환할 수 있습니다.

매우 멋진 기능은 온보드 TCP 서버(또는 클라이언트)입니다. TCP 서버를 사용하여 USB 직렬을 통해 하는 것처럼 Arduino를 원격으로 제어할 수 있지만 전 세계 어디에서나 가능합니다! Arduino 측에서는 완전히 투명합니다. 이 모듈을 사용하기 위해 스케치에 추가 코드를 추가할 필요가 없습니다.

WIZ750SR-TTL-EVB 평가 보드도 있습니다. WIZ750SR에 전원을 공급할 수 있고 디버그 USB 포트가 있지만 초기 실험을 제외하고는 사용하지 않았습니다.

Arduino 101과 WIZ750SR은 모두 3.3V를 사용하므로 TX 및 RX 핀에 레벨 시프팅을 사용할 필요가 없었습니다. Arduino는 또한 전원 공급 장치에서 이더넷 모듈에 전원을 공급합니다. 회로는 매우 간단하며 이 프로젝트의 회로도 섹션에서 찾을 수 있습니다. 서보에는 자체 5V 전원 공급 장치가 있습니다.

모듈 설정

이 보드를 사용하려면 먼저 구성해야 합니다. WIZnet 직원이 이미 여기에서 작업을 수행했으며 항상 최신 문서를 얻을 수 있기 때문에 이 부분을 다시 문서화하지 않겠습니다.

그들의 문서는 훌륭하지만 알고 있으면 좋은 정보가 있으며 공유할 가치가 있는 몇 가지 (해결된) 문제가 있습니다.

첫째, 평가 보드의 USB 포트에서 보드에 전원을 공급할 수 있지만 그 외에 이 포트는 주로 디버깅 및 플래싱에 사용됩니다. USB 포트로는 WIZ750SR의 TCP 서버와 통신을 할 수 없다고 생각하지만 이 COM 포트에 연결하면 디버그 정보를 받게 됩니다. 무엇을 기대해야 할지 몰랐기 때문에 처음에는 약간 혼란스러웠습니다.

둘째, WIZ750SR이 네트워크에 연결되어 있을 때 파란색 LED가 켜지면 보드가 올바르게 작동하는 것이므로 Configuration Tool을 계속 진행하면 보드를 찾을 수 있습니다.

구성 도구에서 장치를 검색하려고 할 때 가장 큰 문제가 이 시점에서 발생했습니다. 처음에는 훌륭하게 작동했지만 시간이 없어서 거기서 중단했습니다. 2주 후에 다시 시도했지만 여러 네트워크의 여러 OS 및 컴퓨터에서 더 이상 보드를 찾을 수 없었습니다.

최신 펌웨어로 평가 보드의 디버그 USB 포트를 통해 다시 플래시를 수행했고 작동했습니다. 내 Windows PC는 여전히 찾을 수 없지만 Ubuntu의 Python 버전에서는 찾을 수 있습니다. 무엇이 문제인지 잘 모르겠지만 이 단계를 통해 마침내 내 문제가 해결되었습니다. WIZ750SR을 성공적으로 구성한 후 내 Windows PC에서도 다시 찾을 수 있으므로 작업을 계속했습니다.

내가 읽은 것처럼 가상 네트워크 어댑터 호출이 있는 VM도 검색을 엉망으로 만들므로 검색에 문제가 발생하면 이를 살펴봐야 합니다.

TCP 통신을 테스트하기 위한 훌륭한 도구는 NetCat입니다. 이 소프트웨어를 사용하여 WIZ750SR의 TCP 서버에 연결할 수 있습니다. NetCat을 설치한 후 다음 명령을 사용하여 연결하십시오.

nc [tcp_server_ip] [tcp_server_port]  

그 후 WIZ750SR에서 직접 데이터를 주고 받을 수 있습니다. 이 도구를 많이 사용했습니다.

A에서 B로 이동

로봇팔을 움직이려면 컨트롤러에게 원하는 것을 말해야 합니다. 가장 간단한 방법은 모든 서보의 각도를 직접 업데이트하는 것입니다. 관절 각도 업데이트는 약간의 시행착오를 거쳐 수행할 수 있으며 실제로 잘 작동할 수 있습니다.

다음 로봇 팔 프로젝트에서는 역운동학을 사용하여 세계 좌표로 로봇 팔을 제어하지만 지금은 관절 각도만 사용하여 로봇을 제어합니다.

시스템의 속도는 여기에서 핵심 포인트입니다. 서보는 매우 빠르지만 수신된 위치에 도달하려면 여전히 시간이 필요합니다. 반면 점퍼선은 빠른 움직임을 좋아하지 않아 속도를 줄여야 했다. 하드웨어 및 소프트웨어 부분 모두에서.

시스템에 대한 경로 계산을 만들고 지연을 삽입하여 이것을 만들었습니다. 로봇 팔에 대한 새 관절 각도를 보낼 때 추가 매개변수인 속도(mDelay)를 제공해야 합니다. 기본적으로 로봇 팔 컨트롤러에 루프의 최소 단계 시간을 말하고 있습니다. 경로 계산기는 각 위치 지정 서보에 대한 선택적 단계 크기를 계산합니다. 이는 모든 서보가 거의 동시에 목표에 도달하고 속도는 지연에 따라 다르다는 것을 의미합니다. 결과는 매번 매우 훌륭하고 부드러운 선형 움직임입니다.

이펙터는 다른 방식으로 작동합니다. 기본적으로 부드러운 전환 없이 열린 상태 또는 닫힌 상태(3가지 다른 수준의 닫힌 강도)만 가질 수 있습니다. 분명히 가능한 한 빨리 물체를 잡고 싶을 것입니다. 이동하는 동안 부드럽고 멋져야 합니다.

현재 이 시스템에는 2가지 유형의 명령이 있습니다. 다음은 둘 다에 대한 예입니다.

<울>
  • G 1 --> 그리퍼를 가볍게 닫습니다. 0은 열려 있음을 의미합니다.
  • A 10 130 120 110 --> 로봇 팔을 10ms 스텝 시간, 위쪽 관절 각도 130º, 아래쪽 관절 각도 120º, 기본 회전 각도 110º로 이동합니다.
  • 원격 제어용 Android 앱

    자, 이제 이 시점에서 전 세계 어디에서나 로봇 팔을 제어할 수 있지만 모든 새 명령을 수동으로 작성해야 합니다. 이 방법은 별로 재미가 없습니다. 로봇 팔을 제어할 수 있는 훨씬 더 사용자 친화적인 방법이 필요했기 때문에 Android 애플리케이션을 만들었습니다.

    앱에는 TCP 클라이언트가 있어 WIZ750SR의 TCP 서버에 직접 연결할 수 있습니다. 로봇 팔은 과거와 미래의 움직임에 대한 플롯을 저장하지 않습니다. 현재 목표 위치만 알고 있습니다. 이는 애플리케이션이 전체 움직임 플롯을 로봇 팔로 보내는 것이 아니라 위치 피드백을 기반으로 주기적으로 새로운 위치를 로봇 팔로 보낸다는 것을 의미합니다. 앱을 종료하거나 WIZ750SR에서 연결을 끊으면 로봇팔이 마지막 수신 위치에 도달하는 즉시 움직임을 멈춥니다.

    로봇 팔에 연결하면 구성 화면이 표시됩니다. 3페이지로 구성되어 있습니다. 첫 번째는 Run(나중에 자세히 설명), 두 번째는 Init, 세 번째는 Loop입니다. Init와 Loop는 기본적으로 동일하며 위치를 저장하는 위치만 다릅니다.

    화면에는 4개의 탐색 막대와 저장 버튼 외에 그리퍼 버튼이 있습니다. 이 슬라이더는 위치와 이동 속도를 설정하는 데 사용되며 그리퍼 버튼은 이펙터를 열거나 닫는 데 사용됩니다. 모든 변경 사항은 즉각적이므로 로봇 팔에 새 위치가 즉시 표시되지만 플롯에 추가하려면 저장 버튼을 클릭해야 합니다. 다음은 이에 대한 간단한 데모입니다.

    그리퍼 상태와 로봇 팔 위치를 모두 변경하면 두 개의 다른 명령으로 저장됩니다. 그리퍼 명령을 먼저 실행한 다음 위치 명령을 실행합니다.

    예상대로 플롯 실행은 init로 시작됩니다. 초기화 및 루프는 Arduino의 설정 및 루프 기능처럼 작동합니다. Init는 나중에 반복되지 않을 움직임에 좋습니다. init 명령이 완료되면 루프 명령이 따릅니다. 루프 명령은 영원히 반복되거나 최소한 플롯을 멈출 때까지 반복됩니다. 루프나 초기화가 필요하지 않은 경우 해당 필드를 비워두면 됩니다.

    이러한 필드는 EditText 필드이므로 해당 내용을 쉽게 편집하거나 삭제할 수 있습니다. 슬라이더를 사용하지 않으려면 손으로 명령을 작성할 수 있습니다. 플롯을 복사하여 붙여넣을 수도 있습니다. 응용 프로그램은 나중에 사용하기 위해 실행한 마지막 플롯을 기억합니다.

    "구성" 아래의 첫 번째 줄은 테스트를 위한 시각적 피드백으로 사용됩니다. 왼쪽 부분은 로봇 팔의 최신 목표 위치(S - 전송)를 나타내고 오른쪽 필드는 로봇 팔의 현재 위치(R - 수신)를 나타냅니다. 앱은 목표와 현재 위치가 같을 때 즉시 새로운 목표 위치를 로봇 팔로 보냅니다.

    보시다시피 init만 있을 때 로봇팔은 init 명령을 마치자마자 멈췄습니다.

    내 앱으로 많은 일을 할 수 있지만 앞으로 개선할 가능성이 많이 있습니다. 플롯에서 함수, 조건부 제어, 인수가 있는 루프 등을 사용할 계획입니다.

    비슷한 로봇을 만들고 싶다면 이 프로젝트의 코드 부분에서 Arduino 코드와 로봇 팔 컨트롤러 애플리케이션을 모두 찾을 수 있습니다.

    결과

    나는 init와 loop 명령을 모두 사용했고 약간 복잡한 작업을 수행할 수 있었습니다. 다음은 내 로봇 팔이 고무 오리 몇 개를 설정한 다음(초기화), 영원히(루프) 하나씩 스스로 움직이기 시작하는 방법에 대한 비디오입니다.

    하드웨어와 관련된 심각한 제한이 있는 매우 저렴한 로봇 팔이라는 점을 고려하면 알 수 있듯이 움직임이 매우 부드럽고 연속적이며 정확합니다.

    결론

    내 소프트웨어는 매우 잘 작동하며 앞으로 이 로봇 팔을 개선하기 위해 확실히 노력하거나 더 발전된 팔을 만들 것입니다. 이 프로젝트를 위해 계획한 모든 것을 달성했으며 심각한 차단 문제도 없었습니다.

    Arduino 101은 이러한 목적에 적합합니다. 보드의 유일한 제한 사항은 4개의 PWM 가능 GPIO뿐입니다. 앞으로 자유도가 더 높은 새로운 로봇팔을 만든다면 문제가 될 수 있겠지만, 별도의 USB 시리얼과 GPIO 시리얼은 개발 과정에서 매우 유용하며 이 보드도 많은 컴퓨팅 파워를 제공할 수 있습니다.

    Android 애플리케이션은 좋은 아이디어라고 생각하지만 더 강력하고 사용자 친화적으로 만들고 기능을 향상시켜야 합니다. 현재 알파 버전입니다.

    WIZ750SR은 아주 좋은 놀라움이었습니다. 이 보드에 더 많은 문제가 생길까 두려웠지만 구성 후에는 완벽하게 작동했습니다. 그것은 완전히 투명했고 나는 그것에 대해 아무런 문제가 없었습니다. 이것은 사용하기 매우 쉬운 장치이며 제가 마이크로컨트롤러에서 사용해 본 것 중 최고의 이더넷 모듈입니다.

    로봇 팔로 작업하는 것은 매우 재미있습니다. 그래서 나는 확실히 그것에 대해 더 많이 배우고 미래에 내 지식을 여러분과 공유할 것입니다! 읽어주셔서 감사합니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    Arduino 웹 편집기
    Arduino 웹 편집기를 사용하여 내 프로젝트의 Arduino 코드에 액세스하고 직접 업로드할 수 있습니다.
    Arduino 및 Android 코드
    https://github.com/abysmalsb/Robot-Arm-Controller

    회로도

    현재 시스템은 두 개의 별도 전원을 사용합니다. Arduino의 USB 포트에서 하나와 서보를 이동하는 데 사용되는 다른 5V 소스에서.

    제조공정

    1. Bluetooth를 통해 제어되는 Raspberry Pi Robot
    2. Raspberry Pi를 사용한 제스처 제어 로봇
    3. Windows 10 IoT Core :음성 제어 로봇
    4. 라즈베리 파이를 사용하는 Wi-Fi 제어 로봇
    5. ROObockey:원격 제어, 조준 지원 스트리트 하키 로봇
    6. 듀얼 암 SCARA 로봇
    7. MeArm 로봇 암 - 로봇 - V1.0
    8. Raspberry Pi를 통한 Alexa 제어 LED
    9. Nunchuk 제어 로봇 팔(Arduino 포함)
    10. 음성 제어 로봇