Skip to the content
6 layers80 × 98 mmMinibot V1, the printed circuit board in 3D

Multi-Agent Mission Concept for Battery Optimized Onsite Swapping Technology (BOOST)

Size
80 × 98 mm
Copper layers
6
Thickness
1.6 mm
Parts
101
Nets
104
Pads
461
Tracks, vias
1,201, 159
Pours
8
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
6 Oct 2023
Updated
22 Jun 2025

Overview

Minibot V1 is an open-source printed circuit board by RIVeR-Lab, from the RIVeR-Lab/BOOST repository on GitHub, published under the MIT licence. It is a 6-layer board of 80 × 98 mm with 101 parts on 104 nets, routed with 1,201 tracks and 159 vias.

It is built around the MP2148GQD-33-Z, BNO055 and 150060SS75000, with the CC0603KRX7R7BB104, CL31B106KOHNNWE and CBR04C220F5GAC among its other parts. Its parts include 34 resistors, 31 capacitors, 12 connectors, 8 ICs and 5 diodes. It belongs with the STM32 boards of this library.

Main components

12

README

electrical/kicad/Minibot_V1/README.md

Autonomous Navigation & Docking for Distributed Robots

  • Aka Swarm Crawler
  • Aka BOOST: Battery Optimized On-site Swapping Technology
  • Making swarms crawl

Where Software Is

/hubbot_software/

  • The software running on the NVidia Jetson Nano on the HubBot
  • Includes the main ROS2 node running on the HubBot in hubbot_software\ros2_ws\src\py_hubbot_main_controller_node\py_hubbot_main_controller_node

/minibot_hubbot_firmware/charge_controller_firmware/

  • Code running on the Arduino Nano on the HubBot that controls the LEDs and reads battery module continuity and voltage and sends to Jetson Nano over UART.

/minibot_hubbot_firmware/firmwarePioCube/

  • Code running on the STM32F466RE NUCLEO on our Custom PCB.
  • This board is identical on the 2x minibots and on the hubbot.
  • Controls IMU, GPS, motor control, encoders, battery voltage.

/shared/

  • Data shared on the ROS network between HubBot and Minibots

/software/

  • All SLAM and NAV software running on MiniBot for autonomous Docking

Running Things

HubBot Software

  • Run main ROS2 HubBot node:

    ./hubbot_software\start_hubbot_processes.sh

HubBot Firmware

  • Load Firmware onto Charge Controller Arduino Nano.
    • Load this sketch onto the Arduino
    • minibot_hubbot_firmware\charge_controller_firmware\monitor_RGB
  • Load firmware onto STM32F446
    • Load the latest firmware onto the NUCLEO found here:
      • minibot_hubbot_firmware\firmwarePioCube\firmware_releases\hubbot

MiniBot Firmware

  • Load the latest firmware for the respective MiniBot onto its STM32F446RE
    • minibot_hubbot_firmware\firmwarePioCube\firmware_releases

David Useful Commands

ros2 topic pub /chatter std_msgs/String "data: Hello ROS Developers"

ros2 topic pub /hub_stat std_msgs/Int32 "data: 4"

rosserial with ROS1
To find the USB Port and get Nucleo board USB into WSL
To give user permission to /dev/ttyUSBx, ttyACMx, and ttySx devices
  • These devices are in the dialout group, so add your user to that group

    $ sudo adduser myusername dialout

Getting Data into ROS1 from MCU
  • http://wiki.ros.org/rosserial_arduino/Tutorials/Hello%20World
  • run roscore in one terminal
    • wsl> roscore
  • Run serial_node.py in another terminal
    • wsl> rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=57600
    • This will get all topics from the MCU.
  • Should now see the topic in ROS1 in another terminal
    • wsl> rostopic list
    • Can echo with wsl> rostopic echo
Using ros1_bridge
  • https://github.com/ros2/ros1_bridge
  • Start ROS1 core wsl> roscore
    • If not done already.
  • Need to source both ROS1 and then ROS2 setup.bash's
  • wsl> ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
    • This will bring in all topics from ROS1 to ROS2 and all topics from ROS2 to ROS1.
teleop twist keyboard
ROSSerial TroubleShooting
[ERROR] [1677681154.605087]: Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino
  • Make sure Baud rates are matching
  • Make sure that LOGGING is off on the nucleo so that ONLY ROSserial stuff is is sent out over the serial port connected to the Jetson.
If serial isn't getting to jetson, but is getting to laptop
  • Make sure that the power configuration is correct on the NUCLEO board.
  • i.e. since we are using the STLink as a serial to USB adapter, the STLINK must be powered when the MCU is booted.
  • Make sure that we are powering USB through NUCLEO from the jetson.
    • And if we are using external 5v to power NUCLEO that the correct jumpers are set.

For running ROSserial and ros1_bridge

source ros1 roscore rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=57600

source ros2 source ros1 ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

Parts

101
QtyValueFootprintReferences
190603Miscellaneous Devices.IntLib:J1-0603R1, R2, R4, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R27 +3
15Res3Miscellaneous Devices.IntLib:J1-0603R22, R23, R24, R25, R26, R28, R29, R30, R31, R32, R33, R34, R35, R37, R38
80603Miscellaneous Devices.IntLib:1608[0603]C9, C10, C11, C13, C14, C15, C16, C17
5150060SS75000swarm_crawler_pcb.PcbLib:LED_150060SS75000D1, D2, D3, D4, D5
5CC0603KRX7R7BB104swarm_crawler_pcb.PcbLib:CC0603N_YAGC21, C23, C24, C25, C26
4, , ,
4CL31B106KOHNNWEswarm_crawler_pcb.PcbLib:CAP_CL31_SAMC2, C4, C5, C6
361300211121swarm_crawler_pcb.PcbLib:CONN_61300211121_WREJ7, J9, J10
2CBR04C220F5GACswarm_crawler_pcb.PcbLib:CAPC10555_55N_KEMC7, C8
2Cap SemiMiscellaneous Devices.IntLib:1608[0603]C28, C29
2GRM1885C1H4R3BA01Dswarm_crawler_pcb.PcbLib:CAPC1608X90NC30, C31
2GRM21BR71C475KE51Lswarm_crawler_pcb.PcbLib:CAP_GRM0805_2X1P25_MURC1, C3
2LP2981-33DBVRswarm_crawler_pcb.PcbLib:DBV0005A_NU2, U3
2TSW-106-07-F-Dswarm_crawler_pcb.PcbLib:SAMTEC_TSW-106-07-F-DJ3, J4
2TXB0104PWRswarm_crawler_pcb.PcbLib:PW14U7, U8
2no stuffswarm_crawler_pcb.PcbLib:CAP_CL31_SAMC18, C19
11239AS-H-1R0M=P2swarm_crawler_pcb.PcbLib:CAPC10555_55N_KEML1
11825910-2swarm_crawler_pcb.PcbLib:TE_1825910-2SW1
122284036swarm_crawler_pcb.PcbLib:22-28-4036_MOLJ12
161201021621swarm_crawler_pcb.PcbLib:61201021621J11
1ABS25-32.768KHZ-1-Tswarm_crawler_pcb.PcbLib:ABS25-32.768KHZ-1-T_ABRX2
1AO3407Aswarm_crawler_pcb.PcbLib:SOT-23-3L_AOSQ1
1BNO055swarm_crawler_pcb.PcbLib:QFN_BNO055_BOSU5
1C0603C0G1E270J030BAswarm_crawler_pcb.PcbLib:CAP_0603_TDKC12
1C1608X5R1C105K080AAswarm_crawler_pcb.PcbLib:CAP_1608_TDKC20
1C1608X5R1C225K080ABswarm_crawler_pcb.PcbLib:CAP_1608_TDKC27
1C1608X5R1C475K080ACswarm_crawler_pcb.PcbLib:CAP_1608_TDKC22
1ECS-.327-12.5-34B-C-TRswarm_crawler_pcb.PcbLib:XTAL_ECS-.327-12.5-34B-C-TRY1
1GPS_FNswarm_crawler_pcb.PcbLib:SL871U6
1MCR-B-S-RA-SMT-CS14-T_Rswarm_crawler_pcb.PcbLib:MCRBSRASMTCS14TRJ6
1MLG0603S36NJT000swarm_crawler_pcb.PcbLib:IND_0603_TDKL2
1MP2148GQD-33-Zswarm_crawler_pcb.PcbLib:QFN-1p0x1p5_MNPU4
1NUCLEO-F446REswarm_crawler_pcb.PcbLib:MODULE_NUCLEO-F446REJ8
1RF2-04A-T-00-50-Gswarm_crawler_pcb.PcbLib:CONN_RF2-04A-T-00-50-G_ADMJ2
1S2B-PH-K-S(LF)(SN)swarm_crawler_pcb.PcbLib:CONN_S2B-PH-K-S_JSTJ1
1SMMBT3904LT1Gswarm_crawler_pcb.PcbLib:SOT-23-3_1P4X3P040_ONSQ2
1STM32F446RCT6TRswarm_crawler_pcb.PcbLib:LQFP64-10x10mmU1
1TSW-106-14-F-Sswarm_crawler_pcb.PcbLib:CON6_1X6_TU_TSWJ5

More from RIVeR-Lab/BOOST

2
  • 2 layers44 × 22 mmBatt swap, the printed circuit board in 3D

    Batt swap

    RIVeR-Lab/BOOST

    Multi-Agent Mission Concept for Battery Optimized Onsite Swapping Technology (BOOST)

    16 parts3MIT
  • 2 layers36 × 16 mmDocking connector, the printed circuit board in 3D

    Docking connector

    RIVeR-Lab/BOOST

    Multi-Agent Mission Concept for Battery Optimized Onsite Swapping Technology (BOOST)

    7 parts3MIT

Similar boards

  • 2 layers82 × 50 mmESP S3 MONITOR V 1 2, the printed circuit board in 3D

    ESP S3 MONITOR V 1 2

    electromotif208/pcb-portfolio

    👨‍💻 Electronics Engineer 📺 YouTube: ELECTROMOTIF 🔧 Tools: KiCad, EasyEDA 📡 Domains: Power Supply, ESP32, IoT, Embedded Hardware

    90 parts
  • 2 layers80 × 50 mmSlave Design Power v1, the printed circuit board in 3D

    Slave Design Power v1

    embeddedalpha/PCB-Design

    Repository for PCB Design Projects

    48 parts77MIT
  • 4 layers100 × 83 mmModule17-Mainboard, the printed circuit board in 3D

    Module17-Mainboard

    M17-Project/Module_17

    M17 modem board for 9600-baud capable radios

    209 parts129CERN-OHL-W-2.0
  • 6 layers80 × 70 mmIMX6 Demo Board from REF, the printed circuit board in 3D

    IMX6 Demo Board from REF

    ts-manuel/iMX6-Demo-Board

    Demo board for the i.MX6ULL Single-Core Processor with Arm Cortex-A7 Core

    504 parts10GPL-3.0
  • 2 layers20.3 × 100.3 mmNes umd, the printed circuit board in 3D

    Nes umd

    db-electronics/umd-nes-adapter-kicad

    NES cartridge adapter for the Universal Mega Dumper

    9 parts2
  • 2 layers20.3 × 83.8 mmC64-umd, the printed circuit board in 3D

    C64-umd

    db-electronics/umd-c64-adapter-kicad

    Commodore 64 UMD Cartridge Adapter

    10 parts1
  • 2 layers87.5 × 55 mmArmRobotBoardTeensy, the printed circuit board in 3D

    ArmRobotBoardTeensy

    01binary/str1ker

    A human-scale mech integrated with Robot Operating System

    53 parts20

Questions

How big is the Minibot V1 PCB?

It measures 80 × 98 mm and has 6 copper layers, 1.6 mm thick.

What parts does the Minibot V1 use?

101 parts, built around the MP2148GQD-33-Z, BNO055, 150060SS75000 and CC0603KRX7R7BB104. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Minibot V1 KiCad files?

From the RIVeR-Lab/BOOST repository on GitHub, at the commit this page was made from: the board is electrical/kicad/Minibot_V1/Minibot_V1.kicad_pcb and its schematic electrical/kicad/Minibot_V1/Connectors.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Minibot V1 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).