Skip to content
@kabot-io

kabot.io

Kabot - lowering entry barrier for mobile robotics

The Kabot robot is a hardware and software solution that aims to lower the entry barrier to mobile robotics. The concept is based around simple network-enabled embedded platform (i.e. ESP32-S3) with firmware based on Zehyr RTOS, which has sensors and actuators connected to it, and sends State and receives Control messages from much beefier processing unit - the computer. This split allows the hardware to be small and cost effective, while the hardware that has the processing power for more advanced algorithms is already available for the person willing to dive into the world of robotics.

Kabot robots photo

Table of Contents

link to repo

Currently, the robot hardware is at its second revision, packed with cost-effective features, in contrary to the first version, which was completely bare-bones. The mechanical parts are designed using FreeCAD and 3D printed with some little exceptions, which were not viable to print due to the low cost of China-sourced parts, such as wheels. The electronics has been designed using KiCad and consist of few distinct sections (however, on a single PCB).

Kabot FreeCAD render

Processing section

Based on the ESP32-S3-N16R8 MCU on Wroom-1 module, which is responsible for communication with the PC, fetching data from the sensors, and executing control messages - driving the motors.

Processing section schematic

This MCU has a built-in USB JTAG interface, which allows for flashing and debugging the robot firmware without the need of any external tools, besides USB-C cable.

USB-C schematic

There is also onboard USB HUB (CH334F) and USB-to-serial adapter (CH343P), which allows for connecting to the robot over the raw UART interface, which exposes first-stage bootloader logs, and a connector which allows for splitting the USB-C lanes, and injecting offboard processing units, such as embedded Linux board (instead of the beefy PC, to make the robot self-contained if needed)

USB peripherals schematic

Power section

The USB-C connector that is used to program the robot, is also used to charge the robot built-in battery, which is a single Lithium-Ion 18650 sized cell. The same chip is also responsible for stepping the battery voltage up to 5V, which is then fed to the motor drivers to have somehat stable motor power supply, and stabilized to 3.3V for the MCU. The chip is the thing used in powerbanks - INJOINIC IP5306.

Powerbank schematic

LDO schematic

Motors are driven by two DRV8837 motor drivers (up to 1.8A per motor). Each motor driver is supplied via INA219 I2C Current/Power monitor. The motors are chinese N20 sized 298:1 micro gearmotors, equipped with magnetic incremental encoders. The power supply branch for the rest of the system also has it's own IN219 sensor. There is also voltage divider connected directly do the battery terminals (or rather semi-directly - via a switch that gets opened when the robot is not powered up, to avoid entirely draining the battery).

Current sensor schematic

Motor driver schematic

Sensors section

Besides the current sensors and encoders, robot has a bunch of on-board sensors:

Sensors schematic I2C hub schematic

These allow for implementing a wide variety of algorithms - from simple BEAM-like photovores, trough IMU sensor fusion up to localization and mapping.

The board also supplies a bunch of addresable RGB LEDs.

LEDs schematic

Human Machine Interface

link to repo

To make the robot algorithms writing as simple and comfortable as possible, a Human-Machine-Interface has been developed. The HMI is kept to be as welcoming as possible, similar to the Arduino IDE - only the necessary stuff is exposed to the user, and it is exposed in as readable and simple as possible manner. The HMI connectos to the robot and acts as a sensor values plotter and robot controller. User writes Python code, which is then executed on the PC, fed the sensor readings, end outputs motor controls to the robot. The built-in code editor has syntax highlighting and displays runtime errors and exceptions next to the code line. The HMI also allows for Over-the-Air firmware updates of the robot firmware.

HMI code editor view

HMI plot view

Firmware

link to repo

Firmware of the robot is based on the Zephyr Real Time Operating System. The main purpose of the firmware is to get the sensor readings, send them to the PC and act based on the control messages from this PC. Beyond that, the firmware also allows for discovery of the robots connected to the same network, blinking lights and exposes Zephyr shell over Serial over USB connection, that allows for tinkering with the firmware on the lower level (and providing wifi credentials).

Firmware architecture diagram

Hackaday.io Project

Pinned Loading

  1. kabot-hmi kabot-hmi Public

    TypeScript 1

  2. kabot-zephyr kabot-zephyr Public

    C

Repositories

Showing 10 of 13 repositories

Top languages

Loading…

Most used topics

Loading…