본문으로 건너뛰기
버전: v26.06a

메인보드

MechaShip은 Ubuntu OS의 구동, 각종 센서 및 액추에이터의 제어, 인공지능 추론 등을 위해 자체 제작한 전용 메인보드를 사용합니다.

SBC(Single Board Computer)와 MCU(Micro Controller Unit)의 콤보 구성으로 이루어져 있으며, 특히 SBC는 Raspberry Pi Model B의 폼팩터를 사용하기 때문에 기본 장착된 SBC 이외에도 라즈베리파이, 오렌지파이 등 다양한 SBC를 사용할 수 있습니다.

메인보드 사진

주요 기능

SBC+MCU 콤보 구조

액추에이터의 제어에 SBC의 GPIO를 사용하는 대신 별도의 MCU를 사용합니다. SBC는 운영체제의 구동과 통신을 담당하며, SBC의 명령에 따라 MCU를 통해 액추에이터가 작동합니다. 데이터의 양이 많은 일부 센서는 SBC에 USB로 직접 연결해 사용합니다.

SBC와 MCU 알아보기
  • SBC(Single Board Computer)

    이름 그대로 SBC는 하나의 기판으로 이루어진 컴퓨터입니다. 메인보드에 파워서플라이, SSD, 그래픽카드 등을 연결하는 일반적인 데스크톱 PC와 달리, SBC는 하나의 회로 기판에 컴퓨터를 위한 모든 구성 요소가 처음부터 부착되어 있습니다. 덕분에 손바닥 정도의 아주 작은 크기로 컴퓨터를 만들 수 있어 공간이 제한적인 환경에서 주로 사용합니다.

    또한 아래에서 설명할 MCU는 SBC와 비교했을 때 사양과 기능이 부족하기 때문에, 높은 처리 성능을 요구하거나 MCU에서 사용할 수 없는 센서는 SBC에 연결해 처리합니다. 대표적으로 카메라는 데이터의 양이 MCU에서 처리하기에는 많고, 특히 MCU에서는 USB 센서를 사용하기 어렵기 때문에 SBC에 연결해 사용합니다.

  • MCU(Micro Controller Unit)

    선박의 액추에이터를 제어하기 위해서는 소프트웨어에서 외부 장치로의 신호 전달이 필요합니다. 물론 앞에서 설명한 SBC에서도 충분히 할 수 있지만, SBC는 운영체제의 구동이 주 역할이기 때문에 이러한 제어가 까다로운 편입니다. 특히 OS 특성상 통신, 그래픽 출력, 파일 처리 등 다양한 작업을 처리하면서, 순간적으로 더 중요한 작업을 대기시키는 상황(흔히 '랙'이라고 하는 현상)이 발생할 수 있기 때문에 실시간성이 중요한 액추에이터 제어에는 적합하지 않습니다.

    반면 MCU는 특정 목적에만 사용하는, 일종의 아주 작은 컴퓨터입니다. "어떤 신호가 입력되면 LED를 켜" 처럼 간단한 동작만 수행하고, 이런 상황에서는 SBC보다 훨씬 빠르게 작업을 수행합니다.

ROS2 Jazzy 지원 전용 OS

Ubuntu Server 24.04 LTS 기반의 전용 OS를 제공합니다.

ROS2 Jazzy Jalisco가 기본적으로 설치되어 있고, 선박 구동을 위한 각종 센서 드라이버와 예제가 포함되어 있습니다. OS는 SBC의 microSD 카드에 설치하며, 이에 대해서는 뒤쪽 MechaShip 시작하기-메인보드 운영체제 설치에서 다룰 예정입니다.

전원 관리

메인보드 자체의 전원 제어는 물론 SBC, 액추에이터의 전원을 개별적으로 제어할 수 있습니다. 전압을 실시간으로 모니터링하며 배터리의 잔량이 부족하면 자동으로 전원을 종료합니다. SBC의 전용 OS를 사용하는 경우 아래 기능을 제공합니다.

  • SBC에서 배터리 잔량 확인
  • SBC 터미널 창에서 배터리 부족 경고
  • SBC-메인보드 전원 연동: SBC 종료 후 메인보드 전체 전원 차단
  • SBC Graceful-Shutdown: 메인보드 전원 버튼 길게 눌러 SBC 전원 종료 후 전체 전원 차단

또한 배터리의 높은 전압을 적절히 낮추어 각 장치에 공급합니다. 이와 관련한 자세한 내용은 아래 자료-전원부를 참고해 주세요.

메인보드만으로 간단한 실습 가능

메인보드의 보조 전원 스위치, RGBW LED, 수동부저를 통해 선박을 조립하지 않은 상태에서도 메인보드의 전원을 켜고 간단한 테스트와 ROS 실습을 할 수 있습니다.

RC 컨트롤러 지원

4채널 RC 컨트롤러를 지원해 ROS 없이도 로봇을 원격으로 제어할 수 있습니다. 선박을 물에 띄운 상황에서 Wi-Fi가 끊어지거나 SBC에 오류가 발생했을 때 유용하게 활용할 수 있습니다.

간편한 센서 및 모듈 연결

모든 센서와 모듈은 커넥터로 연결되어 납땜이나 단자 작업이 필요하지 않습니다.

기타

자료

메인보드 구성 및 사양

컴퓨팅 사양

  • SBC: ROCK 5A 8GB
    • SoC: RK3588S
      • CPU: Quad Cortex®‑A76 @ 2.2~2.4GHz and a quad Cortex®‑A55 @ 1.8GHz based on Arm®DynamIQ™ configuration
      • GPU: Arm Mali™ G610MP4 GPU
      • NPU: RKNPU; 6TOPs
    • 메모리(RAM): LPDDR4x 8GB
    • 저장공간: microSD 카드 (32GB 이상 권장)
    • USB3 2개, USB2 2개
  • MCU: RP2040
    • CPU: Dual Cortex®-M0+ @ 133MHz
    • 메모리(SRAM): 264KB
    • 저장공간: 온보드 2MB Flash

전기적 사양

  • 입력: 리튬 폴리머 3S 배터리 (8.4~12.6V)
  • 출력
    • SBC 전원: 5.2V 4A
    • 서보모터 전원: 6V 4A
    • ESC 출력: 40A (배터리 전압 그대로 공급)
  • 배터리 충전 단자: 최대 10A 연속 사용 권장

전용 OS

image

  • 운영체제: Ubuntu Server 24.04 LTS
    • ARMBIAN 빌드시스템 fork
    • Linux kernel: 6.1.115 (vendor)
  • 기본 설치 프로그램
  • 기본 로그인 계정
    • 유저명: ubuntu
    • 패스워드: ubuntu (첫 로그인 시 변경 강제)
  • 기본 연결 네트워크
    • SSID: mechaship
    • PSWD: mechaship@123
  • 커스텀 명령
    • mechaship_battery: 배터리 잔량 확인

전원부

전기적 사양

스위치 제어

  • 메인 스위치: 메인보드 전체의 전원 공급
    • 전원 켜기: 전원 스위치 또는 메인보드의 보조 전원 스위치를 짧게 클릭. 전원이 켜질 때 중간 비프음 발생
    • 전원 끄기: 아래 방법으로 전원을 끌 수 있음. 전원이 꺼질 때 높은 비프음 발생
      • 전원 스위치 또는 메인보드의 보조 전원 스위치를 5초 이상 길게 누르기
      • SBC에서 sudo shutdown now, sudo poweroff 등 시스템 종료 명령을 입력
        단, halt 명령은 SBC 전원만 종료됨
  • SBC 전원 스위치: SBC의 전원 공급. 안정적인 SBC 구동을 위해 5.2V 전압 사용
    • 전원 켜기: 메인보드 켜짐과 동시에 SBC 전원 켜짐
    • 전원 끄기: SBC가 안전하게 종료된 후 전원 차단
  • 쓰러스터 전원 스위치: ESC와 서보모터 전원 공급. 메인보드 모드에 따라 다르게 동작함
    • RC 모드: 항상 전원 켜짐
    • ROS 모드: bringup이 launch된 경우 전원 켜짐
    • 중립 모드: 항상 전원 꺼짐

부위별 설명

커넥터

부위별 설명 1

  1. 배터리 커넥터
    • 메인보드의 전원 공급을 위한 커넥터입니다. 배터리가 연결됩니다.
  2. 급속 충전 커넥터
    • 배터리 커넥터와 바로 연결되어 있습니다.
      커넥터를 활용해 배터리를 메인보드에서 분리하지 않은 상태에서도 급속 충전기를 사용할 수 있습니다.
      가급적이면 10A 이하로 충전하는 것을 권장합니다.
  3. ESC 전원 커넥터
    • ESC의 전원 공급을 위한 커넥터입니다.
  4. 전원 스위치 커넥터
    • 선박 선체에 결합될 전원 스위치와 4핀 커넥터로 연결됩니다.
      스위치로는 LED 내장 스위치를 사용하며, LED의 점등은 아래에서 설명할 상태 LED(ST)와 미러링됩니다.
  5. RGBW LED 모듈 커넥터
    • 선박 선체에 결합될 RGBW LED 모듈과 3핀 커넥터로 연결됩니다.
  6. LCD 스크린 커넥터
    • 선박 선체에 결합될 LCD 스크린 모듈과 3핀 커넥터로 연결됩니다.
  7. 비상정지 스위치 커넥터
    • 선박 선체에 결합될 비상정지 스위치와 2핀 커넥터로 연결됩니다.
  8. RC 수신기 커넥터
    • RC 컨트롤러의 신호를 수신하는 RC 수신기를 결합하는 커넥터입니다.
  9. MCU-SBC 통신 커넥터
    • MCU와 SBC 간의 통신을 위한 커넥터입니다. USB Type-C to A 커넥터를 사용합니다.
  10. 쿨링팬 커넥터
    • 5V 쿨링팬을 위한 커넥터입니다. 메인보드를 선박 외부가 아닌 내부에 설치하는 경우 외부 공기를 유입시키기 위해 활용할 수 있습니다.
  11. ESC 신호 커넥터
    • ESC(쓰러스터 BLDC모터의 컨트롤러)에 구동 신호를 전송하는 커넥터입니다. 빨간색 3핀 커넥터로 연결합니다.
  12. 서보모터 커넥터
    • 서보모터에 전원과 구동 신호를 전송하는 커넥터입니다. 파란색 3핀 커넥터로 연결합니다.
  13. SBC 전원 커넥터
    • SBC에 전원을 공급하는 커넥터입니다.
  14. 시리얼 콘솔 커넥터
    • SBC의 시리얼 콘솔 접속을 위한 커넥터입니다.
      선박 선체에 결합될 시리얼 통신 커넥터와 4핀 커넥터로 연결됩니다.
  15. 보조 전원 스위치
    • 3.전원 스위치 커넥터의 스위치와 같은 역할을 하는 스위치입니다.
      메인보드만 단독으로 사용하는 경우 활용할 수 있습니다.

온보드 부품

부위별 설명 2

  1. 메인 전원 LED
    • 메인 전원의 켜짐 여부를 표시하는 LED입니다.
  2. SBC 전원 LED
    • SBC의 전원 공급 여부를 표시하는 LED입니다.
  3. 액추에이터 전원 LED
    • 액추에이터(쓰러스터, 키)의 전원 공급 여부를 표시하는 LED입니다.
  4. 상태 LED 3종
    • RC, ROS LED: 액추에이터 및 모듈의 제어권을 표시합니다. RC 컨트롤러의 CH3 스위치를 통해 RC모드와 ROS 모드를 설정할 수 있습니다.
      RC LED가 켜진 상태에서는 RC 컨트롤러를 통해 제어되며, ROS LED가 켜진 상태에서는 ROS를 통해 제어됩니다.
    • ST LED: 메인보드의 상태를 표시하는 LED입니다.
      • RC 모드: 켜진 상태 유지
      • ROS 모드
        • 켜진 상태 유지: bringup launch되어 SBC와 연결됨
        • 짧게 깜박임: bringup launch되지 않음
  5. ROS_DOMAIN_ID 설정 스위치
    • MCU 펌웨어 측 ROS_DOMAIN_ID를 설정하는 스위치입니다. 켜진 스위치의 위쪽 숫자(예: 4번 스위치-8, 7번 스위치-64)를 더한 값이 ROS_DOMAIN_ID가 됩니다.
      SBC와 MCU의 ROS_DOMAIN_ID가 일치해야 SBC에서 ROS를 통해 메인보드의 센서 및 모듈을 제어할 수 있습니다. 만약 일치하지 않는 경우 bringup을 launch한 후 경고창으로 알려줍니다.
    • 설정 예시
      • ROS_DOMAIN_ID=0: 모든 스위치 OFF
      • ROS_DOMAIN_ID=6: 2, 3번 스위치 ON (2+4=6)
      • ROS_DOMAIN_ID=11: 1, 2, 4번 스위치 ON (1+2+8=11)
  6. 온보드 RGBW LED
    • RGBW LED 모듈과 같은 역할의 LED입니다. RGBW LED 모듈과 동일하게 작동합니다.
  7. MCU 부팅 모드 선택 버튼
    • 메인보드의 MCU를 펌웨어 업로드 모드로 진입시킬 때 사용합니다.
  8. MCU 재시작 버튼
    • 메인보드의 MCU를 강제로 재시작하는 버튼입니다. MCU가 재시작되면 모든 전원이 순간적으로 차단됩니다.
  9. MCU 개발용 포트 (UART)
    • MCU 펌웨어 개발용 포트입니다. UART1, GPIO 8, 9번을 사용합니다.
  10. MCU 개발용 포트 (SWD)
    • MCU 펌웨어 개발용 포트입니다. 디버깅을 위한 SWD 핀입니다.
  11. 테스트 단자 2종(SBC, ACT): 쇼트시켜 각 전원 스위치를 켜진 상태로 고정합니다.

기타 자료