DIY/6 Axis Robot

6 Axis Robot Arm 자작 #1 제어 프로그램

bitcoder 2021. 11. 11. 20:39
728x90

 로봇을 만들고 싶어 파이썬과 아누이노를 배우기 시작했다.

처음에는 파이썬 기본 내장 GUI인 Tkinter로 진행하다가 PyQt가 깔끔해보여서 변경했다.

로봇 기구학 적용에 DH 파라메터로 애 좀 먹었다. 아직도 완전히 이해한건 아니고...

엔드 이펙터의 위치와 각도를 결정하는 데 중요한 오일러각에 문제가 있다. 특이점 포즈을 피하는 메카니즘을 좀 더 찾아봐야겠다. 관련 전공자도 아니고 한번 다뤄본 적도 없는 로봇 만들어보겠다고 인터넷 뒤져서 습득한 지식이 전부라 많이 부족하다.

 

 아직 기구 제작은 하지 않았고 아두이노와 통신하면서 시뮬레이션만 해보고 있다.

파이썬에서 정,역기구학(Forward Kinematics, Inverse Kinematics)을 계산하여 아두이노에 이동 스텝 데이터를 보내고 아두이노에서 보낸 스텝 카운트 데이터를 파이썬에서 받아 각 관절, 위치값을 업데이트하고 Pyopengl 화면도 업데이트되어 애니메이션된다.

 

 쓰레드를 사용하지 않아서 GUI응답없음 피하는게 제일 힘들었다. 비동기 프로그래밍이 까다로워 단일 함수로 테스트해보면 잘 되던게 프로그램에 적용해보니 복잡해지고 작동도 잘 안되서 차후에 심도있게 파보는 걸로...

향후 쓰레드를 적용하던가 아니면 아두이노에서 기구학 계산까지 다 하고 파이썬에서는 위치 데이터만 송신하는 방식으로 파이썬의 역할을 최소화하는 버전도 생각중이다. 자바 스크립트를 배워서 Web UI를 해보는 것도... 

 

 현재는 좌표 이동과 직선 라인 이동만 구현된 상태이다. 궤적 추적 이동도 추가하고 싶고 최종적으로는 G코드까지 수신하는게 목표긴 한데 이건 시간이 많이 필요할 듯... 3D 프린터 오픈 소스가 많이 있으니 뜯어보면 될 듯한데 나같은 초보자가 그 방대한 코드를 언제 다 분석해보나...그거 다보고 이해한다고 해도 6축 로봇에 적용하는 건 또다른 문제다.

CNC, 3D 프린터에서 X, Y축 선형 이동 가감속 알고리즘도 꽤나 복잡하다고 하던데 6개 관절의 속도와 가감속 프로파일은 어떻게 적용해야 할지 감도 안온다. 

 

 이래저래 맨땅에 헤딩하듯이 시작했지만...

두꺼운 책도 한권 안보고 코딩이 가능한 세상이라니...

youtube, github, stackoverflow, google...

인터넷의 방대한 자료가 없었다면 시작도 못했을듯...

기구 제작, 전장 제어작업등... 최종 완성하는 그날까지...

 

 

 

728x90