반응형

전체 글 19

[Ball Balancing] 6. OpenCV와 PID 제어로 물체 균형 잡기

서론앞선 여러 글에서 물체의 균형을 잡을 수 있는 로봇을 만들기 위한 시스템을 설계하고 제작했다.설계와 3D 프린터 출력, 회로 제작, 납땜의 과정을 거쳐서 하나의 로봇 시스템을 제작했다. 이제는 완성된 로봇 시스템에 코드를 작성하여 원하는 동작을 만들어야 한다.지금 우리가 제어할 수 있는 Actuator는 두 개의 서보모터이다.이 서보모터를 제어하여 물체를 움직이는 Process를 만들어야 한다. 결국 우리의 목표는 물체를 Plate 중앙에 위치시키는 것이다.이를 위해서 우리는 OpenCV로 카메라 비전을 통해 물체의 위치를 추정할 것이다.그리고 물체의 현재 위치와 Plate 중앙의 위치 좌표의 차를 Error로 사용할 것이다.이 Error 항을 PID 제어를 통해서 컨트롤할 것이다. 그리고 제어 과정..

Robotics 2025.02.11

[정보] 아두이노 시리얼 포트 찾는법 - 장치 관리자

서론아두이노를 사용하다보면 시리얼 포트를 찾는 게 중요하다. 아두이노 IDE에서 포트를 연결해야 할 수도 있고, 매트랩이나 파이썬 등에서 포트를 지정해줘야 할 때도 있다. 아두이노 IDE의 경우에는 간단히 포트를 확인할 수 있지만, 매트랩에서는 직접 찾아서 입력해야 한다. 오늘은 아두이노 시리얼 포트를 찾는 법에 대해서 소개하려고 한다.아두이노 IDE 아두이노 IDE에서는 이처럼 간단하게 포트 번호를 알 수 있다. 현재 이 컴퓨터에 아두이노 Uno가 COM5에 연결되어 있음을 확인할 수 있다. 우리는 이 COM5를 눌러서 간단하게 연결하면 된다.장치관리자이처럼 매트랩에서 아두이노를 사용하기 위해서는 시리얼 포트를 직접 찾아서 정의해줘야 한다. 하지만 이 포트는 내가 어떤 USB 포트에 아두이노 선을 연결..

Robotics 2025.01.14

[Ball Balancing] 5. 아두이노 서보모터 2개 제어 코드 (MG996R) - 매트랩

서론로봇을 만들고 개발하고 연구하기 위해서는 액추에이터를 제어할 수 있어야 한다. 그리고 그 액추에이터의 대표적인 것이 바로 이 서보모터이다. 서보모터는 우리가 원하는 각도만큼 움직이거나 특정 각도를 유지하게 할 수 있다. 그렇기에 로봇의 액추에이터로 많이 사용되고 있다. 이러한 서보모터를 제어하기 위해서, 오늘 간단한 코드를 살펴볼 것이다. 특히, 아두이노에 서보모터를 연결할 것이고, 매트랩을 통해서 그 서보모터를 제어할 것이다.아두이노 서보모터 (MG996R)서보모터를 제어하기 전에 우리가 사용할 MG996R 서보모터에 대해서 살펴볼 것이다.MG996R 서보모터 기본 스펙MG996R 서보모터의 기본스펙은 위와 같다. 크기와 무게, 힘 모두 우리가 흔히 서보모터를 생각했을 때 기대할 수 있는 값들이다...

Robotics 2025.01.13

[Ball Balancing] 4. 아두이노 회로 - 3선 서보모터, 가속도센서

서론이전 글에서 드디어 공 균형 잡기 로봇의 설계와 제작이 끝났다. 아직 완성된 로봇을 공개하지는 않았지만, 잘 조립되었고, 정상적으로 작동하는 것을 확인했다. 이제는 제작된 로봇을 작동하기 위해서 아두이노를 사용하고, 3선 서보모터와 가속도센서를 연결할 것이다. 그리고 간단한 납땜을 통해서 간편하게 사용할 수 있도록 모듈화를 진행할 것이다.아두이노 회로위의 사진은 아두이노 회로를 그린 것이다. 팅커캐드에 약간의 편집을 추가해서 만든 그림이다. 만약 회로를 처음 작성해 본다면 간단하게 빵판(브레드보드)에 먼저 구현을 해본 뒤, 동작이 원활하게 되는 것을 확인하고 납땜을 진행하는 것이 좋다. 나 역시 빵판에 회로를 구현했고, 작동이 잘 되는 것을 확인했다. 가속도 센서 (GY-61)가속도 센서 (GY-61..

Robotics 2024.12.29

[Ball Balancing] 3. 적절한 자유도를 가진 기구 설계의 중요성

서론이전 글에서 Ball Balancing을 위한 기구 설계를 끝냈고, 3D 프린터를 가지고 출력까지 마무리 했다. 출력물은 설계한 대로 모두 잘 출력되었으며, 서포터를 제거하고 잘 조립했다. 다행히도 끼워맞춤 공차가 잘 맞았으며 조립에는 이상이 없었다. 하지만 한 가지 큰 문제점이 있었다. 바로 plate를 기울일 때 필요한 Spherical ball joint가 너무 높은 자유도를 가지고 있다는 점이다. 우리가 원하는 움직임음 서보모터에 의해 plate의 한쪽 끝이 위 아래로 움직이는 것을 원했다. 하지만 spheical ball joint로 인해서 위와 x, y 축에서의 2DOF 뿐만 아니라 z축의 회전까지 가능해졌다. 따라서 우리가 원하는 자유도보다 과도한 자유도가 발생해서 오히려 원하는 움직임이..

Robotics 2024.12.27

[OpenCV] 3. 객체 탐지를 위한 이미지 전처리 프로세싱 (Image Processing)

서론상자를 분류하기 위해서는 가장 먼저 해당 상자의 길이를 측정할 수 있어야 한다. 상자의 길이를 측정해야 특정 값을 기준으로 상자를 분류할 수 있기 때문이다. 그래서 이번 글에서는 상자의 길이를 측정하기 전에 이미지 프로세싱을 통해서 이미지를 가공하는 방법에 대해서 알아볼 것이다.객체 길이 측정 방법객체의 길이를 측정하기 위한 알고리즘을 한 번 생각해 보자. 가장 간단한 방법은 이미 알고 있는 물체의 길이를 사용해서 비례적으로 타겟 객체의 길이를 계산하는 방법이다. 하지만 이렇게 간단한 방법을 하기 위해서 우리가 해야 할 작업이 몇 가지가 있다. 객체 탐지 알고리즘이미 우리가 길이를 알고 있는 객체가 있다고 하더라도, 우리는 그 객체를 탐지하고 인식해야 그 길이 정보를 사용할 수 있다. 또한, 우리가 ..

Robotics 2024.12.03

[Ball Balancing] 2. 인벤터 도면으로 3D 프린터 (3DP-110F) 출력하기

서론이전 글에서 우리는 Ball Blancing을 위한 프레임을 모두 설계하고 모델링했다. 그리고 시뮬레이션을 통해서 해당 기구 설계가 동작하는데 문제가 없다는 것을 확인했다. 그렇다면 이제 우리는 3D 프린터를 가지고 원하는 모델을 출력할 수 있다. 만약 3D 프린터가 없었다면, 우리는 이렇게 모델링한 것을 업체에 보내서 가공을 해달라고 해야 한다. 그렇게 주문 제작을 할 경우에는 꽤나 비싼 비용이 필요하다. 만약 우리가 이것을 가공을 통해서 직접 제작을 한다면, 전문가가 아니기에 여러 오차가 발생할 수밖에 없다. 하지만 이제 우리에겐 3D 프린터가 있다. 학교의 동아리나 과방 등에 3D 프린터가 한 대쯤은 있을 것이다. 그것을 활용해서 우리가 만들고자 하는 기구를 직접 설계하고 제작할 수 있다.Cub..

Robotics 2024.11.23

[Ball Balancing] 1. 인벤터로 동작 시뮬레이션 확인하기

서론설계라는 과정은 머릿속에 있는 것을 그리거나 모델링해서 실제로 눈으로 볼 수 있게 하는 과정이다. 아무리 머릿속에서 완벽하게 상상했다고 하더라도 실제로는 공차가 맞지 않다거나 단차가 생기는 등의 변수가 발생할 수 있다. 따라서 직접 그려보고, 더 정확하게는 치수를 입력해서 모델링한 뒤 시뮬레이션을 통해서 동작을 확인하는 것이 가장 좋다. 나는 3D 프린터로 출력을 하기 위해서 모델링을 했다. 하지만 시뮬레이션을 돌리지 않았고, 나의 설계가 완벽할 것이라고 믿었다. 하지만 실제로 3D 프린터로 출력을 한 뒤, 조립을 해서 확인을 해보니 내가 생각했던 움직임이 나오지 않았다. 사실 약간의 공차와 단차는 사포질을 통해서 해결할 수 있다. 하지만 애초에 불가능한 관절의 움직임을 해결하는 것은 쉽지 않다. 따..

Robotics 2024.11.22

[Ball Balancing] 0. 아두이노 프로젝트로 공 균형 잡기 도전

서론나는 기계공학과 학생이다. 이번 기계공학실험 수업을 들으며 미니 프로젝트가 주어졌다. 주제는 아두이노를 사용하여, 두 개의 서보모터를 사용하여, plate 위에 있는 공의 균형을 잡는 것이다. 흔히, Ball Balancing 혹은 Balancing Ball 등으로 불리며, PID 제어를 공부할 때 많이 하는 주제이다. 난이도는 조금 높지만 그래도 흔한 아두이노 프로젝트로 알려져 있다. (참고 영상: https://www.youtube.com/shorts/PfjV1vAq0rU) 보통은 이미 주어진 모델이 있고, 학생들이 PID 제어만을 연습하기 위해서 코딩을 한다. 하지만 이번 실험 수업에서는 그저 아두이노 우노(Arduino UNO)와 서보 모터 두 개, 가속도 센서 한 개만을 제공해주었다. 즉, ..

Robotics 2024.11.15

[OpenCV] 2. 아루코마커 인식하기 (ArUco marker)

서론오늘은 OpenCV로 아루코마커 (ArUco marker)를 인식하는 것을 해보려고 한다. 아루코마커란 로봇 비전 혹은 컴퓨터 비전에서 많이 사용하는 마커이다. 마치 QR 코드처럼 우리가 카메라로 아루코마커를 인식하면 그 아루코마커가 가지고 있는 ID를 반환받아서 읽을 수 있다. 우리가 아루코마커를 사용하는 이유는 간편하기 때문이다. 간단히 아루코마커를 출력해서 붙여두면, 특정 위치에서 아루코마커를 인식할 수 있다. 물론, 우리가 객체인식 모델을 가지고 있다면, 굳이 아루코마커를 사용하지 않더라도 원하는 것을 인식하고 활용할 수 있다. 하지만 그렇게 딥러닝 모델을 만드는 것보다는 간단히 아루코마커를 출력해서 사용하는 편이 좋다.아루코마커 (ArUco marker)아루코마커를 간단히 만들 수 있는 사이..

Robotics 2024.11.14
반응형