본문 바로가기

프로그래밍/종합설계 딥러닝 프로젝트

로봇팔로 3D Detection한 사과 수확 설계

이제 3D Detection을 완료한 사과에 대해 로봇팔로 자동으로 수확하는 시스템을 설계하겠습니다.

전체 시스템 구조도

 

1.데이터 생성 파트 2. 3D Detection 파트 3.로봇팔 자동수확 파트

 

 

이전 포스팅까지는 생성한 사과 데이터를 구조변경(modified)한 FCAF3D 딥러닝 모델을 통해 학습시키고 테스트 까지 완료했습니다.

여기에 3번째 단계로 로봇 컨트롤 부분이 추가됐습니다. 오늘은 이 부분에 대해서 자세히 리뷰하겠습니다.

 

로봇팔은 Yahboom사 jetson nano 제품을 사용하였습니다.

 

센서 교체(2D -> 3D)

왼쪽에 로봇팔에 부착된 2D 카메라 센서를 제거하고 pointcloud를 얻기 위해 3D Realsense 카메라로 부착하였습니다.

 

로봇팔(jetson nano) OS에 Realsense SDK 설치

 

노트북으로 로봇팔 OS에 접속한 모습

로봇팔에서 Realsense 카메라를 사용하기위해 OS에 SDK를 설치해 줍니다. (배경화면이 멋있네요.)

 

로봇팔과 서버 컴퓨터 간에 통신 설계

 

통신설계

로봇팔 물론 자체 OS가 있지만 딥러닝이라는 무거운 모델을 돌릴만큼 성능이 좋지않아서 네트워크를 통해 서버 컴퓨터와 통신으로 사과 데이터에 대한 딥러닝 결과를 얻어야 합니다. 따라서 위의 사진과 같이 Secure Shell 방식으로 통신을 설계하였습니다.

이 방식은 선택한이유는 평소에는 사용하지 않는 22번 포트만을 사용해서 다른 통신과 충돌이 일어나지 않고 서로 상대방의 Key 갖고 있는 상태에서 데이터를 주고 받게 할수 있어서 안정성이 높기 때문입니다. (로봇을 사용하는 만큼 안정성이 중요하다고 판단했습니다.)

다음은 통신과정에 대한 설명입니다.

 

  1. 로봇팔(jetson nano)에서 Realsense SDK를 통해 ply 파일이 생성되면 SSH통신으로 서버로 보냄
  2. 서버는 그 ply파일을 bin파일로 변환후 훈련된 모델에 인풋으로 넣으면 딥러닝 결과가 생성됨
  3. 그 결과는 txt파일로 바로 로봇팔에 전송되고 로봇팔은 역기구학 원리에 의해 관절들의 각도를 구해서 해당 좌표로 이동하여 사과 수확

여기서 역기구학원리에 대해서 설명해 드리겠습니다.

 

좌표를 역기구학의 원리로 각도로 변환

역기구학 원리

역기구학은 간단히 설명해서 중심좌표를 알면 각 관절의 각도를 계산할수 있다는 것입니다.

로봇팔은 6개의 관절로 구성되었기 때문에 좌표에 대한 각 관절의 각도를 계산해야합니다. 이때 사용하는것이 역기구학이고 중심좌표에 역 자코비안 행렬를 곱해주면 각 관절의 각도를 구할수있습니다.

자세한 코드는 아래 Yahboom jetson nano에서 확인할수 있습니다. (제품 규격에따라 Yahboom 사이트에 코드가 있습니다.)

 

https://category.yahboom.net/collections/jetson/products/dofbot-jetson_nano

 

Yahboom DOFBOT AI Vision Robotic Arm with ROS Python programming for Jetson NANO 4GB(B01/SUB)

It is designed based on Jetson NANO 4GB and contains 6 HQ servos, a HD camera and a multi-function expansion board. The whole body is made of green oxidized aluminum alloy. Through the ROS robot system, we adopt Open Source CV as the image processing libra

category.yahboom.net

 

다음 최종 포스팅에서는 지금까지 설계한 전체 시스템의 결과와 함께 직접 시연하는 동영상으로 리뷰 하겠습니다.

감사합니다.