인턴, 협업/WIM

2023-2 델타 로봇(Delta robot) - #8 (마무리) (完)

InculPark 2023. 9. 12. 17:49
반응형

앞선 #7까지의 개발을 하니 딱 계약한 기간이 끝났다.


기구설계로나 (특히) 제어적으로나 완성되지 않았지만 그래도 원하는 동작을 흉내 내는 것까지는 성공했다.


일단 이번 프로젝트는 여기까지이고 이번 프로젝트에 대한 review를 정리해 보았다.
 


목표  :
400*400*150[mm]의 ws를 커버할 수 있는 델타 로봇을 설계한다. --> Matlab을 이용한 ws calculator를 만듦 /  input(주요링크 길이 R, L, l, r)로 output(커버 가능한 ws크기) 계산 가능 / W-delta prototype의 주요링크 길이 확정

EtherCAT 통신을 이용해서 산업용 서보모터를 제어한다. --> SOEM를 이용해서 모터 드라이버와의 통신에 성공 / 완벽하지는 않지만 간단하게 position control과 속도 조절을 구현함

설계한 W-delta prototype을 실제로 제작한다. --> 3D프린팅을 메인으로 부품을 제작하여 ①, ②를 포함한 실물 로봇 제작에 성공함



총 기간 : 2023.07.10 ~ 2023.08.25
 


추후 개선 사항 (제어 부분은 테스트 단계이므로 제외) :
 
① 현재 확인한 바로는 다른 팔 2개는 0º에 있고 나머지 1개가 90º이상으로 이동시 bicep-forearm에서 탈구가 발생한다. 

●해당 각도에 의한 platform의 위치가 의도한 ws(400*400*150 [mm])밖에 있긴 하다. 하지만 기구학적으로 계산된 전체 ws를 커버하지 못한다는 의미가 되는데 이 사실 자체로도 문제이며, 추후 400*400*150[mm] 밖의 ws를 구현할 때 큰 장애물이 될 것이다.  400*400*150[mm] 밖의 ws를 '안' 커버하는 것과 '못' 커버하는 것은 아주 큰 차이라고 생각한다.

●고속 이동에 대한 테스트가 확실하게 되지 않았기에 400*400*150[mm]의 ws에서만 작동을 한다고 하더라도 안정성 측면에서 어느 정도 해결을 하는 것이 바람직해 보인다.


>>당장 떠오르는 방법은 ⓐ'더 강성이 높은 스프링을 사용해 탈구를 막는다.', ⓑ'forearm_holder의 오목한 구 부분에 offset을 약간 준다.'이다. 이 2가지를 적용한 새로운 forearm_holder를 추후에 테스트해 볼 예정이다. 하지만 ⓐ의 경우 forearm_holder 자체의 강도의 향상이 이루어져야 하는데 내 생각에 현재 설계가 PLA 소재의 3d프린팅 부품으로 만들 수 있는 최대 강도라고 생각한다. 따라서 추후 금속 소재의 가공 부품으로 바꾸는 것을 추천한다.
 



② 현 설계의 motor_holder로는 감속기(모터)의 진동이 작동에 영향을 줄 정도로 잡히지 않는다.

●이전 #7 작동영상 중 Pick and place (고속)을 자세히 보면 모터가 완전히 고정되지 못하고 흔들리는 것을 확인할 수 있다.


●저속 이동일 때는 크게 눈에 띄지 않지만 애초에 W-delta는 고속 이동(1초에 pick and place를 1번 수행)을 필요로 하기에 꼭 개선이 필요한 부분이다.

●다만 좀 더 고민이 필요한 부분은, 현재는 prototype이라 3d프린팅을 이용해 PLA로 만들었기에 이런 문제가 발생했을 수도 있다는 것이다. #6에서도 언급했지만 재료 자체의 특성도 있고, 완벽하게 체결하지 못하는 문제도 있기 때문이다. 현재 진동이 심한 부분이 철저히 소재에 의한 문제인지, 설계상의 문제인지는 좀 더 고민하고 실험을 진행할 필요가 있다고 보인다.


>>일단 현재 3d프린팅 부품을 사용한다는 전제하에, motor_supporter에 ㄷ자로 모터를 잡아주는 부분을 추가한다. Base, motor_supporter, 모터를 케이블 타이 같은 거로 꽉 잡아주는 방법도 임시방편으로 적용해봄직 하다.




③ 링크(Bicep)와 직접 연결된 엔코더가 없어 Feedback control과 정확한 영점조정이 불가능하다.

●다른 로봇 제작자 분이 모터 자체에 있는 엔코더 이외에도 링크에 직접적으로 장착된 엔코더가 필요하다고 하셨을 때 나는 그 이유를 이해하지 못했었다. 하지만 직접 만들던 중 이 이유를 알게 되었다.
 
●기본적으로 이번에 사용한 서보모터에는 absolute, incremental 둘 다 사용가능한 엔코더가 장착되어 있었다. Absolute가 있기에 전원이 꺼졌다 켜지도 현재 angle을 기억할 수 있고 때문에 문제가 없다고 생각했었다. 하지만 이는 감속기를 사용하지 않은 경우에만 해당했다. 감속기를 사용하는 시점부터 모터는 360º이상을 회전하게 되는데 그렇게 되면 θ나 360º+θ나 absolute가 읽는 값은 같기 때문이다. 물론 z상을 읽어 몇 바퀴 회전했는지를 체크하면 어느 정도 해결 가능하지만 이 또한 결국 전원이 꺼졌다 켜지면 의미가 없어지게 된다. 따라서 (360º이상 회전하지 않는) 링크에 직접 연결된 엔코더가 추가로 필요했다.
 
●위와 비슷한 맥락에서 Bicep의 영점을 맞추기 위해서는 Bicep에 직접 연결된 엔코더가 필요했다.
 
●추가로 고속으로 장시간 작동 시 일부 Bicep의 영점이 틀어지는 문제가 있었다. 당시 이 문제의 원인을 직접적으로 찾지 못하고 잘못된 제어로 발생한 모터의 문제, Bicep과 감속기의 체결 문제 정도로 의심을 했었다. Bicep에 직접 연결된 엔코더를 사용 시 해당 문제가 발생했을 때 동작 중에도 즉각적으로 보정할 수 있는 기능을 추가할 수 있을 것으로도 예상된다.
물론 이 문제는 반드시 원인을 규명해서 근본적으로 해결해야 하는 문제이다.
 
 
>>가장 확실한 방법은 Bicep 링크에 absolute 엔코더를 추가로 장착해서 그 측정값을 사용하는 방법이다. 하지만 W-delta가 현재로서는 높은 정밀도를 요구하지 않기에 원가 절감의 차원에서 RC서보에 적용되는 방식처럼 가변저항을 이용해 angle을 읽으면 어떨까 하는 호기심이 들긴 한다.
 



 ④현재는 실물과 시뮬레이션 모델(urdf)의 제어가 실시간으로 연동되고 있지 않다.

●아직 실물의 제어 세팅이 제대로 되지 않아서 굳이 시도하지는 않았던 부분이다. 하지만 모델링도 있고 Gazebo(또는 rviz)세팅도 잘 되어 있기에 해당 기능을 추가하는 것이 크게 어렵지 않을 것으로 예상된다.

●다만 현 URDF는 inertial tag가 정확하게 작성되지 않았다. 고정형 로봇이라 시뮬레이션과 실제 사이에 유의미할 정도로(현 정밀도를 유지한다는 전제하에)차이는 없을 것으로 보이지만 그래도 정확한 시뮬레이션을 위해 inertial tag를 정확하게 작성할 필요가 있어 보인다.


+)추후 추가적으로 발생하거나 생각나는 문제/해결책이 있으면 내용을 추가하겠습니다.
 
 
 
===================================================================
여기까지 해서 주식회사 WIM과 함께한 W-delta prototype 개발은 1차적으로 끝이 났다.
 
 
1차적으로 끝났다는 표현을 쓴 이유는 아직 기구적, 제어적으로 개선해야 할 부분도 많고, WIM에서 개발 중인 컨트롤러로 제어도 해봐야 하기 때문이다.
 
 
곧 개강을 하기에 나는 프로젝트를 마치고 학교로 돌아왔지만 이후에도 지속적인 연락과 교류를 통해 W-delta prototype을 완성하려고 한다.(가능만하다면...)
 
 
일단은 이렇게 이번 2023-2 델타 로봇(Delta robot) with WIM 프로젝트를 마친다.
 
 
끝으로 이렇게 좋은 경험을 하게 해 주고, 믿고 많은 지원을 해준 주식회사 WIM에 감사의 말씀을 전한다.

 
 
 

========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )
========================================================================

반응형