MicroROS-Pi5
산지 2년된 작은 로봇이 있다.
MicroROS-Pi5
대학원 입학하면서 산 작은 로봇이 하나 있다.
내돈내산이다.
이걸 동작시켜보려고 조립만 해 둔지 벌써…. 2년이 되어간다.
내가 너무 안이했던건 맞는데, 그런다고 영원히 썩혀두는건 아닌것 같다는 생각이 들어, 이걸 바탕으로 밑바닥부터 다시 손대볼까 한다.
ESP32
제어보드부터 조금 난해한데, 이게 ESP32를 써서 원격통신까지 구성한 제품이다.
맨날 아두이노만 손대다가 ESP32는 처음인지라, 이것부터 좀 익숙해져야 하는것 아닌가 하는 걱정이 든다.
어차피 요즘엔 GPT를 통해 작업하면 굉장히 수월하게 할 수 있으니까, 두려워하진 말자. 마이컴 돌리는 메커니즘에 대해선 빠삭하게 알고 있으니 이마저도 두려워하지 말자.
목표
어쨌거나, 이걸 가지고 달성하고 싶은걸 정리해보면 이렇다.
- ESP32 동작시켜보기
- ESP32에서 ROS 통신 연결하기
- 라즈베리파이5에서 ROS통신 데이터 받아보기
- 센서 연결하기.
- SLAM연결하기.
이거 얼마나 걸릴지 궁금하긴 한데….. 3주정도 걸리려나..?
최대한 빠르게 달려보자.
Control board에 대해서
공식 홈피에 있는 사진을 보고 있다. 모터 동작과 배터리, 전원관리 및 IMU관련 사항을 이 Control board에서 담당한다. 사진상 버전은 1.0인데, 내 보드는 2.0이다. 뭐가 리비전된걸까….
5V 5A를 라즈베리파이를 위해 할당했다고 하는데.. 굳이 이래야 하나 싶다. 저것땜시 ROS버전도 달라지게 되는데, 상당히 거슬린다. 이외의 상세 사항들은 크게 대단해보이진 않는다.
공식자습서에서 뒷면 사진도 구했는데(이걸 난 조립할때 왜 안찍었나) 낯이 익은 부품들이 제법 여럿 달려있다.
사용하는 MCU는 ESP32-S3-WROOM-1U 라고 한다.
일단 참조해보는 자료는 두가지다. 공식 git , 공식 자습서
이중 공식 자습서가 유용하다. 필요한 보드 정보가 대부분 있다.
우선, MCU의 GPIO 핀맵을 보면 요렇게 생겼다.
| 기능 | ESP32-S3 GPIO |
|---|---|
| M1 PWM A | GPIO4 |
| M1 PWM B | GPIO5 |
| M1 Encoder A | GPIO6 |
| M1 Encoder B | GPIO7 |
| M2 PWM A | GPIO15 |
| M2 PWM B | GPIO16 |
| M2 Encoder A | GPIO47 |
| M2 Encoder B | GPIO48 |
| M3 PWM A | GPIO9 |
| M3 PWM B | GPIO10 |
| M3 Encoder A | GPIO11 |
| M3 Encoder B | GPIO12 |
| M4 PWM A | GPIO13 |
| M4 PWM B | GPIO14 |
| M4 Encoder A | GPIO1 |
| M4 Encoder B | GPIO2 |
| BOOT 버튼 | GPIO0 |
| KEY1 버튼 | GPIO42 |
| 배터리 전압 측정 | GPIO3 |
| MCU LED | GPIO45 |
| Buzzer | GPIO46 |
| Servo S1 | GPIO8 |
| Servo S2 | GPIO21 |
| IMU INT | GPIO41 |
| IMU SCL | GPIO39 |
| IMU SDA | GPIO40 |
| LiDAR/Radar UART TXD1 | GPIO17 |
| LiDAR/Radar UART RXD1 | GPIO18 |
| USB Type-C UART TXD0 | GPIO43 |
| USB Type-C UART RXD0 | GPIO44 |
| Custom GPIO | GPIO35 |
| Custom GPIO | GPIO36 |
대충 시스템 구성을 알았으니, 개발환경을 구성해보자.
MCU 개발환경의 구성
ESP-IDF 도 설치해야 하고, 그다음 요새 트렌드를 따라, VSCODE의 Extension을 설치해서 펌웨어 개발환경을 꾸려보자.
ESP-IDF 공식 링크는 공식링크 다. 여기서 각각의 운영체제 맞는 버전으로 설치하면 된다.
좀 희한한 취향인데, MCU개발은 윈도우가 은근히 편하더라.. 관습이 그래서 그런지도 모르겠다.
ESP-IDF
sudo apt install eim 을 통해 설치하면, 다시 인스톨 매니저가 뜬다.
설치하려 보니 버전이 v6.1 beta 까지 있길래.. 굳이 최신은 필요없으니 몇스텝 맞춰 stable 버전을 찾아보자.
설치가 완료되고 Dashboard 로 가보면, 설치된 버전들을 확인할 수 있다. 이건 신박하네.
VSCode, 코드 에디터
이젠 VSCode에서 에디터 환경을 구성해보자.
익스텐션을 설치한 다음, VSCode 창을 닫고, 다시 열어보자.
그럼 이런 화면이 뜰 것이다.
이 화면에서, 이미 설치된 IDF를 연결하려 하면 오류가 뜰것이다. 이 과정중에서, 만약 “Open a folder first” 라고 뜬다면, VSCode가 아직 작업폴더를 열어놓지 않아 뜨는 오류다. 프로젝트를 생성할 폴더를 하나 열어두자.
이제 프롬프트로 들어가보자. Ctrl+Shift+P 를 누르면 다음과 같이 뜬다. ESP-IDF:New Project를 찾아보자.
여기서 sapmle_project 와 sample_project_cpp의 차이는 C기반인가 CPP기반인가의 차이다.
target은 ESP32-S3, 보드는 via USB-JTAG 을 선택하고, 경로도 설정하고 만들면 아래와 같이 만들어지는걸 볼 수 있다.
소스코드를 보면, 정말 휑뎅그렁하게 만들어져있는걸 확인할 수 있다.
Flash Write
텅빈 main파일을 한번 넣어보자. 잠깐 테스트할떼 ROS 돌아가는게 눈에 보여서 지우기 아쉬운데… 쩝.
보드의 시리얼포트(USB C타입 단자)와 PC를 연결해보자. 전원을 켠 다음, 연결 방식과 Target device를 확인하면 연결되었다는 내용들이 터미널과 알람으로 뜬다.
순서대로, 스패너 모양의 아이콘을 누르면 빈 프로젝트가 빌드가 된다.
그리고 옆의 번개모양을 누르면 Flash가 진행된다.
이제 개발환경구성까지 끝났다.
댓글남기기