# 5+1 DOF 로봇 펌웨어 이 펌웨어는 아래의 로봇을 조종하는 펌웨어입니다. ![robot](asset/robot.jpg) 아래의 로봇은 아두이노 우노 rev.3 보드와 SensorShield v5.0 이 합체되어 로봇의 6개 서보를 조종합니다. 조이스틱 컨트롤러는 아날로그신호에 연결되어있으나, 기능은 없습니다. 수입사 SCIPIA가 제공한 코드를 바탕으로 로봇을 테스트하기위하여 부착되어있으며, 이 코드는 SCIPIA 코드와 무관합니다. 로봇은 반드시 12v DC 전원장치를 SensorShield v5.0에 연결해야 작동합니다. 없이는 전원이 부족하여 작동하지 않습니다. 현재 보유중인 장치는 DC 입력과 점퍼캐이블, 볼티지 레귤레이터가 다 달려 꽃기만 하면 됩니다. 없다면 최악의 경우 볼티지 레귤레이터 부품을 직접 만들어야 할 수도 있습니다. 다른 모든 부품은 중국에서 수입만 했는데 볼티지 레귤레이터만 SCIPIA가 직접 만들고 인증 받은것으로 보입니다. ### 예시 전원 장치 ![IMG_6651](asset/IMG_6651.jpg) ## 로봇 제어 방법 ### 서보 설정 서보는 0번부터 시작하여 5번까지 번호가 매겨져있으며 0번이 맨 아래이고 순서대로 번호가 매겨져 5번이 집게를 열고 닫는 역할을 합니다. 3번 서보와 5번 서보는 기동 각도가 다른 서보와 다르며, 3번은 130도, 5번은 105~8도 정도입니다. 5번이 0도일때 집게가 열린 상태이고 108도일때 완전히 닫힌 상태입니다. **기동 불가능한 범위에 서보를 강제로 작동 시키거나, 서보 모터에 토크락이 걸린 상태에서 무리하게 서보를 움직이면 서보모터의 회로에 "스탈 토크"라는 현상이 일어나 과전류가 흐르고, 내부가 불타 망가져버리니 조심하시길 부탁드립니다.** **이것은 특히 무거운 물건을 들어올릴려 할때 문제가 크게 됩니다. 100g 이상의 물건을 들어올리려 하지 마십시오.** 0번 서보는 3번 포트에, 1번은 2번에 3번은 8번에, 4번은 12번에, 5번은 13번에 꽃혀있으며 이는 코드상에서 변경 가능합니다. ### 시리얼 통신 아두이노의 Serial Monitor나 시리얼 통신 터미널을 통하여 명령을 내릴 수 있습니다. #### 직접조종 ```{S<서보번호>:각도, ...}```형태의 명령어를 통해 서보를 직접 조종할 수 있으며, 코드에 미리 정의된 한계각도범위를 벗어나면 수정됩니다. ```SERVO_MAX``` ```SERVO_MIN``` 행렬 변수에 의하여 코드상에서 선언되어 있습니다. #### 녹화 ```RECORD``` 명령어를 통하여 행동에 대한 녹화가 가능하며, 1초에 한번의 명령을 수행한다고 할때, 약 30초의 명령을 저장 할 수 있을 것입니다. 아두이노 우노 기준으로 이미 SRAM이 부족해 이 이상은 어려우며, 하드코딩으로 30초 제한을 걸어두었습니다. 만약 다른 ESP32기기에 이식하게 된다면, 그때는 ```RECORD_TIMEOUT_MS``` 변수를 수정해 변경하는것을 고려 해 보십시오. 행동에 대한 녹화는 앞서 언급한 서보 직접 조종 명령어를 기록하여 수행됩니다. #### 중지 ```STOP```은 ```RECORD```, ```PLAY``` 와 ```SEQUENCE```를 중단하는 기능입니다. #### 재생 ```PLAY``` 는 ```RECORD```로 기록한 행동을 다시 재생합니다. #### 시연 용 움직임 재생 ```SEQUENCE```는 코드상에 하드코딩된 행동을 재생합니다. 현재 들어가 있는 명령어는 병뚜껑을 잡아 오른쪽에 있는 컵에 넣는 행위를 기록한 것입니다. 빠른 시연을 위하여 만들어졌습니다. 아래의 영상을 참조하세요.