Jetson Nano에서 서보모터 제어하기

윤준영·2022년 3월 14일
0

Projects

목록 보기
2/3

이번에는 프로젝트를 진행하면서 고생했던 서보모터 제어에 대해 간단하게 안내해볼까 한다.
우선 Jetson Nano에서 서보모터를 제어하려면 서보모터가 필요하지만, Jetson Nano와 맞는 전압의 서보모터를 사용해야 한다. 안 그러면.....

우리는 처음에 좋은 모터만 있으면 되는 줄 알았지만, 알고보니 Jetson Nano에 맞는 서보 모터는 전압이 4~6인 서보모터였다. 하지만 우리가 연결했던 서보모터는 12여서 그랬던걸까 불이 날 뻔했다....

본론으로 들어가서 Jetson Nano에서 서보모터를 제어해보자.
로보틱스 분야는 처음이다 보니 감이 안 잡혔었지만, 쉽게 안내해준 링크를 찾아서 공유해본다.

https://aidalab.tistory.com/m/126

이 링크를 따라간다면 문제 없이 서보모터를 제어할 수 있을 것이다.

여기서 알 수 있는 것은 ChangeDutyCycle()을 이용해 모터의 움직이는 각도를 제어하는 것이다.
많은 숫자를 넣어보면서 어떻게 작동하는가 보던 과정에서 알아낸 것은 2를 넣었을 때 왼쪽 끝, 12를 넣었을 때 오른쪽 끝으로 이동한다는 것이었다. 또한 2와 12 사이인 7을 입력하면 90도 이동을 한다는 것을 알 수 있었다.

즉, 2에서 0도, 12에서 180도 이므로

(12 - 2) / (180 - 0) = 1 / 18
0이 아닌 2에서 시작이므로 + 2

즉, pwm.ChangeDutyCycle((1./18.)*a + 2) 를 이용해서 원하는 각도로 제어할 수 있게 된다.

p.s. 여기서 15, 16번째 줄은 우리가 서보모터를 tracking을 할 수 있게 x,y 축으로 각각 움직일 수 있게 세팅해 두었을 때, 각각 100, 40도에 있을 때 가장 수직을 이루고 있어서 이렇게 둔 것이다.

이제 이 코드를 실행한 후, x와 y에 각각 원하는 각도를 입력하여 움직이는 것을 볼 수 있다. 0~180 사이에서 현재 값보다 작은 값을 입력하면 좌측으로, 큰 값을 입력하면 우측으로 이동한다.

이제 YOLOv5에서 실시간 detection을 한 물체를 서보모터를 이용하여 tracking 하는 작업을 해볼 예정이다.

profile
https://github.com/jjun9288

0개의 댓글