이번주 포스팅으로는 카이로스 2기에서 진행한 myCobot을 이용한 블록 Pick & Place 프로젝트를 소개하고자 한다.
1차 프로젝트로 myAGV 주행을 진행하였기에, 이번 2차 프로젝트에서는 AGV를 제외하고 PLC와 myCobot을 메인으로 준비해보았다.😎
1. 2차 프로젝트 개요
2. 모듈별 활용 기술
3. 자체 평가
1. 2차 프로젝트 개요
2차 프로젝트 역시 주어진 기본 과제와 더불어, 추가 미션을 수행할 수 있도록 프로젝트를 구성하였다.
- 프로젝트 기본 과제
: PLC 컨베이어를 통해 블록이 전달되면 myCobot을 활용하여 블록을 색상별로 구분하고 그 중 3가지 색상만 선별하여 총 3층으로 적재하기
- 우리 조의 추가 과제 목표 3개👾
1) PLC touch와의 통신을 통해 특정 색상을 특정 수량만큼만 주문을 받고, 해당 주문에 해당하는 블록만 적재하기
2) 딥러닝을 통해 양품/불량품을 추가로 구분하고, 2층으로 주어지는 블록 구분도 수행하기
3) offset을 계산하여 좌우로 오는 블록을 그리퍼가 따라가서 Pick & Place 하기
2. 모듈별 활용 기술
1) PLC 활용 & 통신
블록 이동을 시키기 위한 PLC 인버터를 작동과, touch를 통한 제어와 주문 접수까지 PLC에서도 상당히 많은 설정을 필요로 한 프로젝트였다.
내가 맡은 파트가 이 PLC 제어 및 통신을 받아 작동하는 파트여서, 정말 초기 거의 일주일 가량을 PLC 통신을 팠다. 😭
정말 다른 센터에 계신 PLC 강사님들께도 전화드리면서 문의드릴 정도였는데 정말 모든 분들께서 함께 고민해주시고 업체에 문의해주시는 등 힘써주셔서 너무 감사했다..! 카이로스 강사님들 감사해요💖
이 통신 파트는 그래서 추후에 별도 포스팅으로 정리된 기술 포스팅을 올릴 수 있으면 좋을 것 같다..!
인버터는 기본적으로 정방향/역방향 제어와 센서 부착을 통해 희망 지점에서 멈추도록 세팅하였다.
어쨌든 프로젝트 상에서는 PLC 인버터의 제어와 더불어 touch에서 PLC로 보낸 데이터를 RS-485 통신(+Modbus RTU 프로토콜)을 사용해서 PC로 받아오는 부분을 구현해낼 수 있었다.👏
2) Pick & Place 심화
다음으로는 프로젝트의 기본이 되는 가장 중요한 부분인 그리퍼를 사용한 Pick & Place이다.
기본적인 적재동작 수행과 더불어 추가 과제 심화 파트로는 딥러닝 양불 판단과 Depth 카메라 층 여부 판단이 있었다.
딥러닝은 YOLOv8 모델 학습을 통해 색상과 무관하게 양품/불량품을 구분하여 동작하는 로직을 추가하였다.
층 여부는 깊이 카메라의 z 값을 활용하여 input으로 들어오는 값이 한 층 짜리 블록인지, 두 층 짜리 블록인지를 구분하고, 구분 값에 따라 2층일 경우 2층에 대한 양불판정 및 액션 수행을 진행하고, 다음 1층에 대해서도 연속해서 해당 작업을 진행할 수 있도록 구현하였다.😺
담당자들이 매우 고생하셨던 만큼 성공해서 굉장히 뿌듯했던 부분! 🐶
3) offset을 활용한 좌우 이동
기존 로직으로는 그리퍼가 설정해둔 기본 좌표에서만 작업을 수행할 수 있기 때문에, 이 부분을 개선해보고자 offset을 확인해서 블록이 있는 방향으로 더 움직여서 Pick & Place를 수행하는 로직을 개발하였다.
블록의 중심 값과, 비전 카메라에서 보는 프레임 중심간의 거리를 계산하여 움직인다고 이해하면 쉬울 것 같다.🙌
실환경에서도 잘 수행되었지만, 아무래도 추가로 진행하게 되면서 담당자분께 할당되었던 개발 시간이 짧았다보니 완전히 모든 로직에 적용하지 못한 점과, 주변에 사물이 많다보니 좌우 움직임에도 한계가 있었던 점 등이 아쉬웠다.😢
3. 자체평가 👀
- 시간이 1차 프로젝트보다 길었음에도 오히려 더 이런저런 시간이 많이 들었던 2차 프로젝트😇
- 나는 반쯤 통신 마스터가 되게.. 통신을 팠는데 결국은 허무하게 해결되었지만 배운게 많은 시간이었다. 하지만 여기 쓴 시간 때문에 다른 것들을 많이 같이 못해서 아쉬운 부분이 많았다. 삽질은 값지지만 프로젝트 기간에서는 금같은 시간이라 눈물이 났다.. 통합 프로젝트에 잘 녹여봐야지👊
- 정말 담당자들이 매일매일 고생을 정말 많이했는데, 하드웨어라는 특성 상 매일 아침마다.. 아니면 하루 중간에라도.. 좌표 값이 미세하게나마 계속 틀어졌기 때문이다 ㅠ.ㅠ 그래서 분명히 잘 동작했던 부분도 테스트 하면 또 잘 집지 못하고 하는 부분이 있었고.. 결국 최종 테스트에서도 일부 블록이 잘 집히지 않는 문제가 있었다. (아래 사진처럼 같은 위치 같아도 잡히는 경우와 안잡히는 경우가 있었다) 이를 보정하기 위한 offset 확인 등을 통합 프로젝트에서는 고려해보기로 했다..
- 통합 프로젝트까지 화이팅! 👩💻
🌱 카이로스 2기에서 수행한 1차 프로젝트도 궁금하다면?
https://bagjo2884.tistory.com/32
[카이로스2기] 1차 프로젝트 : myAGV 주행하기
드디어 카이로스 2기 과정의 프로젝트에 대한 포스팅을 시작할 예정이다.저번주 금요일에 1차, 2차 프로젝트에 대한 결과 발표를 진행하였고, 이제 통합 프로젝트 시작을 앞두고 있다!포스팅으
bagjo2884.tistory.com
다음주 포스팅은 드디어 통합 프로젝트 1차 리뷰로 만나요!🍂
'KAIROS 2기' 카테고리의 다른 글
[카이로스2기] 통합 프로젝트2 : 한국 번호판 숫자 인식하기(딥러닝/OCR) (0) | 2024.12.01 |
---|---|
[카이로스2기] 통합 프로젝트1 : 타이어 마모도 측정 로봇 Mamot (0) | 2024.11.24 |
[카이로스2기] 1차 프로젝트 : myAGV 주행하기 (0) | 2024.11.10 |
[카이로스2기] ROS1 기초 : myAGV 자율주행 (SLAM) (4) | 2024.11.03 |
[카이로스2기] KG카이로스 교육 중간 점검2 : 프로젝트 소개 (2) | 2024.10.27 |