반응형

로봇 11

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

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

Robotics 2025.02.11

[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] 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

[OpenCV] 0. 로봇 비전을 활용한 상자 분류 프로젝트

서론로봇과 기계의 차이는 무엇일까? 로봇과 기계의 가장 큰 차이는 로봇이 스스로 센서로 무언가를 인지하고, 그것에 대한 피드백의 유무이다. 즉, 로봇에게는 센서가 있어야 한다. 그리고 그 센서의 종류에는 촉각 센서, 초음파 센서, 온도 센서 등 다양한 센서들이 있지만, 나는 그중에서 카메라를 센서로 사용하려고 한다. 카메라를 센서로 사용하는 이유에는 여러가지가 있다. 카메라는 로봇, 감시, 우주 탐사, 자동화 등 여러 산업과 여러 영역에서 이미 많이 사용하고 있다. 또한, 인간이 가장 중요시하는 감각 기관인 시각을 사용함으로써 직관적이고 확실하다. 이러한 이유로 로봇 비전 혹은 컴퓨터 비전과 관련한 개발이 많이 진행되었다. 가장 대표적으로는 이미지와 동영상을 가공하고 분석하는 OpenCV가 있다. 이것 ..

Robotics 2024.11.12

[로봇공학] 3. Inverse Kinematics로 2DOF 로봇팔 계산하기

서론이전 글에서 DH Parameter를 가지고 로봇팔을 표현하는 방법을 알아보았다. 우리는 DH 파라미터 표를 가지고 우리의 로봇팔이 어떻게 생겼는지도 알 수 있다. 그렇다면 로봇팔의 각도로 끝점의 위치를 계산하는 방법과 로봇팔을 표현하는 방법을 알았으니, 우리가 원하는 위치로 로봇이 움직일 수 있도록 해보자. 이를 위해서 우리는 Inverse Kinematics(역기구학)를 사용할 것이다.Inverse Kinematics역기구학은 쉽게 말해서 끝 점의 좌표와 각 관절의 길이를 가지고 각 관절의 각도를 계산하는 방법이다. 우리는 이미 Forward Kinematics를 다루었다. 이것은 Joint space를 Task space로 바꾸는 방법이었다. 그리고 오늘 알아볼 방법은 Task space를 Jo..

Robotics 2024.10.30

[로봇공학] 1. Forward Kinematics로 로봇팔 위치 찾기

서론이전 글에 이어서 Planar 2 DOF Robot Arm 제어 시뮬레이션 만들기 프로젝트를 하기 위한 첫 단계를 나아가려고 한다. 오늘은 로봇공학의 아주 기본인 Forward Kinematics를 MATLAB을 통해 어떻게 시뮬레이션할 수 있는지 확인할 것이다. 따라서 오늘 확인해 볼 것은 Translation, Rotation and Transformation matrix에 대해서 알아보고, DH Parameter를 가지고 Forward Kinematics를 계산할 것이다. 그리고 마지막으로는 MATLAB에 이것들을 어떻게 Plot 해서 시뮬레이션하는지에 대해 알아볼 것이다.Translation matrix로봇공학을 공부하면서 가장 처음에 배우는 것이 Translation matrix일 것이다. ..

Robotics 2024.09.25
반응형