4족 이동 로봇 설계 및 제작
이 글에서는 4족 로봇을 설계 및 제작하는 과정을 다룹니다. 로봇 설계와 프로그래밍의 기초를 배우며, 상상력과 끈기를 통해 어떻게 아이디어를 현실화할 수 있는지 보여드립니다.
필요한 부품
아래는 로봇을 제작하기 위해 필요한 부품과 자료입니다:
전자 부품
- 12x MG90S 마이크로 서보 엔진
- 1x PCA9685 16채널 12비트 PWM 서보 드라이버
- 1x AZ-ATMEGA328DIP 마이크로컨트롤러 보드
- 1x 프로토타입 쉴드 및 미니 브레드보드
- 1x HC-SR04 초음파 모듈
- 1x KY-022 IR 수신기 모듈
- 1x IR 리모컨
- 다양한 점퍼 와이어와 케이블
필요한 재료
- 3mm 두께의 발사 나무 또는 포플러 합판
- 빠른 건조 목재 접착제
- 고무
소프트웨어 및 라이브러리
- Arduino IDE
- I2C 라이브러리 (Wire.h)
- PCA9685 라이브러리 (Adafruit_PWMServoDriver.h)
- IR 원격 제어 라이브러리 (IRremote.h)
- 초음파 센서 라이브러리 (SR04.h)
- 다양한 스케치 파일:
- quadruped_robot_home.ino
- quadruped_robot_pushups.ino
- quadruped_robot_shoulder.ino
- quadruped_robot_walk.ino
1단계: 로봇 조립
로봇의 골격은 3mm 두께의 발사 나무로 제작합니다. 이 재질은 가볍고 변경이 용이하여 프로토타입 제작에 적합합니다.
부품 준비
- 각 서보 모터를 90도로 설정합니다. 이렇게 하면 조립 후 초기 위치를 설정하기 쉽습니다.
- 다리와 몸체의 각 부품을 설계도에 따라 제작하고 조립합니다.
견갑골 조립
- 다리의 윗부분과 아랫부분을 연결하는 견갑골을 조립합니다. 이 부품은 31mm 큐브 형태로 제작되며, 서보 샤프트와 정확히 맞도록 조정됩니다.
- 각 다리의 아랫부분에 고무를 부착하여 바닥과의 접지력을 높입니다.
본체 조립
- 본체 중앙에 4개의 서보 모터를 설치하고, 각 서보 모터가 다리 움직임을 제어하도록 배치합니다.
- 모든 부품을 조립한 후 AZ-ATMEGA328DIP 보드와 PCA9685 서보 드라이버를 프로토타입 쉴드에 장착합니다.
2단계: 프로그래밍
Arduino IDE와 함께 제공되는 스케치를 사용하여 로봇의 동작을 프로그래밍합니다.
스케치 파일
- quadruped_robot_home.ino: 로봇의 초기 위치를 설정합니다.
- quadruped_robot_pushups.ino: 로봇이 위아래로 움직이는 팔굽혀 펴기 동작을 수행합니다.
- quadruped_robot_walk.ino: 로봇이 걷는 동작을 프로그래밍합니다.
프로그래밍 주요 포인트
- I2C 인터페이스를 통해 PCA9685 모듈과 통신하며 서보 모터의 각도를 제어합니다.
- 각 다리의 서보 모터는 상하, 전후로 움직이며 복합적인 동작을 만듭니다.
- 각 스케치에서 서보 모터의 시작 위치와 동작 패턴을 설정합니다.
3단계: 추가 확장
로봇의 기능을 확장하기 위해 추가 모듈을 설치할 수 있습니다:
- 초음파 센서를 활용해 장애물 인식 기능 추가.
- IR 리모컨을 사용한 원격 제어.
- 배터리를 장착하여 독립적인 이동 가능.
1단계: 구성 및 조립
우리는 로봇의 골격을 위해 3mm 두께의 발사 나무를 사용할 것입니다. 무게가 가볍고 부품 변경이 더 쉽습니다. 아래에서 치수와 함께 부품의 계획을 찾을 수 있습니다.



로봇 조립을 시작하기 전에 모든 서보 모터를 90도로 설정해야 합니다. 모든 부품은 이 중간에 조립됩니다. 이런 식으로 우리는 다리 상태에 대한 첫 번째 시각적 참조를 갖게 되며 스케치 Home.ino에서 프로그래밍할 로봇의 시작 위치 값을 결정하기 위해 서보 모터를 설정하는 것이 더 쉬울 것입니다.
견갑골부터 시작합니다. 이 부품은 가장자리 길이가 31mm인 입방체입니다. 큐브의 면 중 하나가 드러나는데, 이것은 몸체 안쪽을 향해 위치하는 면입니다. 상부와 하부의 벽 두께는 3mm이고 양면의 두께는 6mm이며 서보 샤프트에 나사로 고정된 부품이 있습니다. 로봇 본체의 회전축을 포함하는 영역도 두께가 6mm입니다. 서보 엔진의 부품을 부착하기 전에 몸체의 견갑골을 살펴 보겠습니다. 각 견갑골의 외부 표면에는 다리의 모든 윗부분에 나사로 고정된 부분이 포함되어야 하므로 올바르게 조립하고 싶습니다.


다리 아래쪽 부분의 두께는 6mm이며, 위쪽 부분에는 서보 모터의 샤프트에 나사로 고정 된 부분을 설치합니다. 다리 아래쪽 부분에는 고무 돌을 붙여서 바닥에 멈춥니다. 여기서 서보 모터에 대한 연결 부분의 설치에도 주의를 기울여야 하는데, 한쪽 오른쪽의 아래쪽 다리 부분에 설치되고 왼쪽의 반대쪽에 설치되기 때문입니다.
다리 윗부분의 두께도 6mm입니다. 서보 모터를 삽입하려면 홈을 잘라야 합니다. 오른쪽 상단에는 한쪽에 홈이 있고 반대쪽 왼쪽에 두 개가 있기 때문에 주의해야 합니다. 상부 서보 엔진은 상단을 작동시키고 하단 서보 모터는 각 다리의 하단을 작동시킵니다.



로봇의 몸체는 어깨 뼈의 허브가 나사로 고정 된 축에 4 개의 서보 모터를 설치해야하기 때문에 조금 더 복잡합니다. 견갑골을 움직이는 서보 엔진의 반대편에서 허브에서 바디 홀더의 구멍으로 파동을 삽입해야 하며, 이는 견갑골이 부드럽게 움직일 수 있도록 서보 모터 샤프트와 일치해야 합니다. 파동은 로봇의 움직임과 무게에 의해 변형되지 않도록 적절한 두께를 가져야 합니다. 우리의 프로토 타입에서이 샤프트의 두께는 6mm입니다.
모든 부품이 조립되면 로봇 조립을 시작합니다. 먼저 각 상단에 2개의 서보 모터를 설치하고 4개의 서보 모터를 로봇 본체에 설치합니다. 모든 서보 모터를 설치하자마자 각 다리를 적절한 어깨 관절에 설치해야 합니다. 이전에는 모든 서보 모터를 90도로 기본 설정했습니다. 이러한 위치로 우리는 몸체에 허브를 조립해야 합니다 배치하여 모든 부품이 만들어지면 로봇 조립을 시작합니다. 먼저 각 상단에 2개의 서보 모터를 설치하고 4개의 서보 모터를 로봇 본체에 설치합니다. 모든 서보 모터를 설치하자마자 각 다리를 적절한 어깨 관절에 설치해야 합니다. 이전에는 모든 서보 모터를 90도로 기본 설정했습니다. 이러한 위치에서 우리는 몸체에 허브를 조립해야 합니다. 이 절차는 로봇의 4 개의 견갑골에 대해 수행됩니다.





로봇의 기계 부품을 조립한 후 본체 커버를 설치한 후 AZ-ATMEGA328 마이크로컨트롤러를 포함한 PCA9685 카드를 Shield와 함께 설치합니다. 프로토타입 Shield를 사용하면 필요에 따라 프로젝트를 확장할 수도 있습니다. 2부에서 사용할 설치된 IR 수신기 모듈을 여기에서 이미 볼 수 있습니다.



우리는 전자 회로도에 표시된 대로 모듈과 서보 모터의 모든 연결을 만듭니다. 그런 다음 프로그래밍을 시작합니다.
2단계: 스케치 기능 및 프로그래밍
무브먼트의 액추에이터로 12개의 MG90S 서비스 엔진을 사용하며, 그 기어는 금속으로 만들어졌으며 무브먼트를 위한 액추에이터로 12개의 MG90S 서비스 엔진을 사용하며, 그 기어는 금속으로 만들어졌으며 I2C 포트를 통한 마이크로 컨트롤러. 마이크로 컨트롤러와 PCA9685 모듈 간의 통신에는 두 개의 핀만 사용되며, 이는 나중에 확장할 수 있는 공간으로 남아 있습니다.
스케치에서 우리는 모든 서보 모터가 취해야 하는 위치를 결정합니다. 엔진의 결합된 회전은 로봇의 이동 순서에 이릅니다. 마이크로 컨트롤러는 i2C 인터페이스를 통해 서보의 각 위치를 모터 드라이버 모듈로 보냅니다.
이 프로젝트의 지루한 부분은 조정된 이동 순서를 위해 각 다리의 서보 모터의 각 위치에 대한 값을 설정하여 로봇을 실행하는 것입니다. 프로젝트의 이 파트 1에서는 몇 가지 기본 움직임이 있는 세 개의 스케치와 로봇의 시작 위치가 있는 또 다른 스케치를 보여줍니다.
프로젝트의 이 파트 1에서 로봇 구성 요소에 흥미를 불어넣기 위해 고정된 5VDC 소스를 사용합니다. 마이크로 컨트롤러는 USB 인터페이스를 통해 Arduino IDE에 연결된 상태로 유지되기 때문에 장력을 받습니다.
이 기사의 2부에서는 로봇 앞의 각 장애물까지의 거리를 측정하는 HC-SR04 초음파 센서를 추가합니다. 또한 IR 수신기 모듈과 IR 스테이션 리모컨을 사용하여 명령을 내리고 마지막으로 로봇이 자유롭게 이동할 수 있도록 전원 공급 장치용 배터리를 설치합니다.
3단계: 스케치 Quadruped_robot_home.ino에 대한 설명
이것은 로봇의 초기 위치입니다. 보시다시피 이 첫 번째 스케치의 코드는 매우 간단하며 서보 모터의 초기 위치 지정 이동만 수행합니다. 코드의 처음 두 줄은 스케치를 올바르게 수행하는 데 필요한 라이브러리입니다. Wire.h는 I2C 통신을 위한 라이브러리이고 Adafruit_pwmservodriver.h는 PCA9685 모듈을 사용하는 데 필요합니다.
다음 세 줄은 서보 모터 위치를 제어하기 위한 하나의 Adafruit_pwmservodriver-Objekt와 서보 모터의 0도 또는 180도 위치에 대한 상승 및 하강 측면 값을 나타내는 변수 Servomin 및 Servomax를 구현한 것입니다.
set up()-먼저 직렬 모니터를 초기화하고 다음 줄에서 이전에 구현된 객체를 통해 PCA9685 모듈을 초기화합니다. Begin () 함수를 사용하여 Setpwmfreq (50) 호출이 켜진 상태에서 서보 모터의 작업 주파수를 제공하면 50Hz가 됩니다. 마지막 줄에서 Home ()-Function on을 호출합니다.
Home () 함수의 첫 번째 줄을 분석합니다. 위치를 변경할 첫 번째 서보 모터는 왼쪽 전면의 아래쪽 부분에 속하는 숫자 0을 가진 서보 모터입니다. SetPWM (0, 0, 420) 호출로 객체 Servodriver_Module 포트 0에 연결된 서보 모터를 이동시키고 하강 측면 (420)에서 상승 측면 (0)의 값을 뺀 결과로 발생하는 위치로 가져와야하는 PCA9685 모듈을 나타냅니다.
후속 라인은 동일한 원리에 따라 다른 엔진을 움직입니다. 소스 코드는 어떤 엔진이 어떤 "신체 부위"를 담당하는지 설명합니다.
이 스케치에서는 set up()-Function을 호출할 때와 마이크로 컨트롤러가 시작될 때 시작 위치만 있기 때문에 Loop ()-Function은 비어 있습니다.
4단계: 스케치 Quadruped_robot_pushups.ino에 대한 설명
이 스케치를 통해 로봇은 다리 아래쪽과 위쪽 부분의 엔진에 의해 몇 가지 작은 움직임을 트리거합니다. 루프에서 ()는 이제 팔굽 펴기 ()를 호출합니다. 결과적으로 로봇은 계속해서 위아래로 움직입니다.
12개의 서보 모터가 위치를 변경한 다음 Home() 뒤로 시작 위치로 돌아갑니다. 코드 라인은 우리가 이미 본 것과 유사합니다. servoDriver_Module.SetPWM() 함수는 매개변수로 이동할 서보 모터의 번호와 새 위치를 갖습니다.
다운로드 quadruped_robot_pushups.ino
다음 그래픽은 서보 모터의 위치 변화에 따라 다리 부분의 움직임이 어떻게 작동하는지 보여줍니다.

5단계: 스케치 Quadruped_robot_shoulder.ino에 대한 설명
이 스케치를 통해 로봇 견갑골의 서보 모터의 움직임이 수행됩니다. 코드 라인은 다시 매우 유사합니다. 루프 () 중 이때부터 우리는 계속해서 Shoulder ()-Function을 호출합니다. 그것은 홈 () 어깨 서모터의 위치를 새로운 위치로 이동합니다. 여기에서도 이러한 위치는 servoDriver_Module.SetPWM() 호출이 지정된 것입니다.
6단계: 스케치 Quadruped_robot_walk.ino에 대한 설명
이 첫 번째 부분의 마지막 스케치를 통해 로봇을 실행할 수 있습니다. 이를 위해서는 한편으로는 다리의 올바른 움직임을 수행하고 다른 한편으로는 로봇의 균형을 보장하는 시퀀스를 프로그래밍해야 합니다.
다른 스케치와의 첫 번째 차이점은 값이 50인 Int movement_speed라는 변수 선언입니다. 이것은 서보 모터의 움직임 사이에 50마이크로초의 휴식을 취하는 데 사용됩니다.
Loop () From 에서 PCA9685 모듈을 통해 서보 모터에 이동 명령을 보내는 walk() 함수를 지속적으로 호출합니다. servoDriver_Module.SetPWM()을 사용하면 필요한 매개변수도 여기에 전달됩니다. 위에 삽입된 다이어그램을 기반으로 움직임에 값을 더 잘 할당할 수 있습니다.
시작 위치 Home()에서 시작하여 setupup()이 호출됩니다. 그런 다음 왼쪽 앞다리로 한 걸음 앞으로 나아갑니다. 이렇게하려면 서보 엔진 0으로 아래쪽 다리를 들어 올리고, 서보 엔진 1로 위쪽 부분을 앞으로 이동하고, 서보 엔진 0으로 아래쪽 부분을 내려 바닥에서 다리를 잘라야합니다.
한 걸음 앞으로 나아가야 하는 다음 다리는 로봇이 균형을 유지할 수 있도록 오른쪽 뒷다리입니다. 이를 위해 이전 다리와 동일한 동작을 수행합니다. 서보 모터 8이 올라가고 서보 엔진 9가 전진하고 서보 엔진 8이 내려갑니다.
다음 동작은 로봇의 몸을 앞으로 움직이는 것입니다. 여기서는 서보만 어깨에서 움직입니다. 다리는 뒤로 움직이는데, 이는 다리가 바닥에 닿아 있는 동안 로봇의 몸체가 앞으로 움직인다는 것을 의미합니다.
이제 다른 두 다리, 왼쪽 뒷다리와 오른쪽 앞다리를 움직여야 합니다. 오른쪽 앞다리부터 시작합니다. 움직임은 앞의 두 움직임과 동일합니다. 우리는 서보 모터 12로 들어 올리고, 서보 모터 13으로 밀고, 서보 모터 12로 내립니다.
이제 왼쪽 뒷다리입니다. 서보 모터 4로 들어 올리고, 서보 모터 5로 밀고, 서보 모터 4로 내립니다. 모든 이동 사이에 50ms의 휴식이 있습니다.
이 이동 시퀀스가 끝나면 엔진은 원점() 위치로 돌아갑니다. 루프()에서 Walk()의 반복되는 호출로 인해 로봇은 영구적으로 움직입니다.
이 모든 것이 로봇을 원하는 대로 움직일 수 있는 기초가 됩니다.
'모빌리티 프로젝트' 카테고리의 다른 글
로봇 투석기 제작: 자동 장전 및 핸즈프리 컨트롤러 (0) | 2025.03.28 |
---|---|
Bob The Robot: 아두이노 기반 로봇 프레임워크 제작기 (0) | 2025.03.28 |
3D 프린팅 온로드 RC 경주용 자동차 프로젝트 (0) | 2025.03.21 |
[속보] 국민연금 개혁: 첫째 출산 및 군복무 크레디트 최대 12개월 인정 확대 (0) | 2025.03.20 |
혁신적인 Two Bar Vertical Lift: 디자인부터 제작까지 (0) | 2025.03.19 |