Skip to content


BOM for REMO Robot

The following figure shows a 3D-printed Remo robot together with its components that satisfy the requirements for the ROS Navigation Stack. These parts are introduced next:

Remo prototype.

Bill of Materials (BOM) for REMO robot:

Part Quantity Cost Store Notes
Raspberry Pi 4 B (4 Gb) 1 $55.0 Sparkfun,,
SanDisk 64 GB SD Card Class 10 1 $13.99,
SLAMTEC RPLiDAR A2M8 (12 m) 1 $319.00 Robotshop,, Other, less expensive, LiDARs will work as well, e.g., RPLiDAR A1
Adafruit DC Motor (+ Stepper) FeatherWing 1 $19.95,
Teensy 4.0 or 3.2 1 $19.95 PJRC Teensy 4.0, PJRC Teensy 3.2
Hobby Motor with Encoder - Metal Gear (DG01D-E) 2 $5.95 Sparkfun
Powerbank (e.g 15000 mAh) 1 $15.99 This Powerbank from Goobay is close to the maximum possible size LxWxH: 135.5x70x18 mm
Battery pack (for four or eight batteries) 1 $5.59
USB cable pack 1 $6.99 Amazon Type A to Micro, right angle
Remo Base 1 -- 3D printable, see remo_description
Caster ball 1 $6.30, 1-inch diameter; Alternatively any smooth, durable 3/4" ball bearing for the caster
Wheels 2 $3.50 Sparkfun, Wheels are often part of a robotics kit or can be purchased separately
Power supply 1 $7.50 Adafruit Micro USB, 5V, 2.5A

USB Wi-Fi Dongle (optional)

For improved connectivity use a Wi-Fi USB dongle.

Part Quantity Cost URL Notes
WiFi Dongle - TP-Link Archer T2U Nano 1 $17.99 Amazon RTL8811AU chipset
WiFi Dongle - TP-Link Archer T2U Plus 1 $19.99 Amazon RTL8811AU chipset

Camera Modules (optional)

The camera modules are currently optional. SLAM, localization and navigation is currently laser based. Get a camera in case you plan to do applications such as object detection, visual graph based SLAM methods, etc.

Part Quantity Cost Store Notes
Raspi Camera Module V2, 8 MP, 1080p 1 $,
OAK-1 1 $149
OAK-D 1 $199
OAK-D Lite 1 -- Will be released

Assembly Hardware

You need the following parts to build REMO. They come in packs, so order the quantity you need for the number of REMOs you are going to build.

Part Qty per REMO Qty per pack Cost per REMO URL Notes
Adhesive pads 2 48 $0.14 optional
Velcro strap 2 48 $0.14 To fix the battery pack
M2 screw (self tapping) 20 100 $1.29 Amazon 8mm long, self tapping
M2 screw 4 60 $0.47 Amazon 8mm long
M3 screw 4 60 $0.47 Amazon 25mm long, to fix the motors to the base frame
M3 nut 4 100 $0.24 Amazon To fix the motors to the base frame
M2 Brass threaded inserts 4 100 $0.24 Amazon
Jumper wires 4 40 $0.13 Amazon Female-female, ~20cm

Optional parts

Part Quantity Cost Store Notes
Jetson Nano 1 $99.00 NVIDIA
PiOLED display 1 $14.95 Adafruit, Amazon
PiOLED header 1 $5.95 Adafruit, Amazon, Sparkfun 2x(3+) right angle male


The following shows a more detailed part list and assembly of the robot platform and the components.

Category Hardware Part Number Data Sheet & Info
Case for Raspberry Pi 4 B Slim acrylic case for Raspberry Pi 4, stackable, rainbow/transparent BerryBase
Micro SD Card SanDisk 64GB Class 10 SanDisk, Ubuntu 18.04 Image
Robot Car Kit 2WD robot05 Instructions manual
Power bank Intenso Powerbank S10000 Intenso
(Deprecated) Gearbox motor DC Gearbox motor - "TT Motor" - 200RPM - 3 to 6VDC Adafruit
DG01E-E Motor with encoder DG01E-E Hobby motor with quadrature encoder Sparkfun
Raspberry Pi 4 B Raspberry Pi 4 B - 4 GB OEM Website
Jumper - Female to Female
Jumper - Male to Male
Micro USB - USB Cable
Camera extension cable
I2C 4 pin cable
Fan Fan 30x30x7mm 5V DC with Dupont connector BerryBase
I2C motor driver Grove - I2C Motor Driver Seeed Studio
I2C Hub Grove - I2C Hub Seeed Studio
Human Machine Interface
OLED Display Grove OLED Display 0.96" Seeed Studio
LED Ring NeoPixel Ring 12x5050 RGB LED Adafruit
Camera module Raspberry Pi - camera module v2.1 Raspberry Pi
Ultrasonic ranger Grove - Ultrasonic Ranger Seeed Studio
IMU Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout - BNO055 Adafruit
Odometry Joy-IT - LM393 Speed Sensor with H206 slot-type opto interrupter Joy-IT

Order list

Part Store
Raspberry Pi 4 B (4 Gb),
SanDisk 64 GB SD Card Class 10,
Robot Smart Chassis Kit,
SLAMTEC RPLidar A2M8 (12 m),
Grove Ultrasonic Ranger,
Raspi Camera Module V2, 8 MP, 1080p,
Grove Motor Driver,
I2C Hub,

Additional (Optional) Equipment

Part Store
PicoScope 3000 Series Oscilloscope 2CH

Board - Raspberry Pi 4 B

The main processing unit of the robot is a Raspberry Pi 4 B with 4 GB of RAM.

Raspberry Pi 4 B - 4 GB RAM variant.

Accessories and Electronics

Case and Cooling

To protect the Rasbperry Pi 4 B we choose a case that provides access to all its ports. The following images show a stackable acrylic case in rainbow colors.

Stackable Rainbow Case for Raspberry Pi 4 B.

With this case it is possible to install four heatsinks and apply a fan as cooling equipment for the electronics of the Raspberry Pi 4 B such as its ARM processor.

Heatsinks and cooling fan for Raspberry Pi 4 B.

SD Card

The Raspberry Pi requires a medium to boot from. For this we will use a micro sd card because it is lightweight and easy to flash new operating systems.

SanDisk Micro SD Card Class 10.

Although a micro sd card won't last that long compared to an hard disk drive (HDD) or solid state disk (SSD) it is well suited for testing. Because sd cards are slower when reading and writing data you should make sure to choose a micro sd card with high performance ratings. For the Raspberry Pi a Class 10 micro sd card is recommended. Regarding speed, the Pi has a limited bus speed of approximately 20 MB/s (source)

Robot Base

For the robot base you have at least two options to choose from. Either the robot car kit consisting of plexi glas material or a more sturdier 3D printed variant named Remo.

The Robot Car Kit 2WD from Joy-IT (article no.: robot05) is used as the base for the autonomous mobile robot.

Parts of the 2WD Robot Car Kit 05 from Joy-IT.

The acrylic chassis has many holes which allow to mount a mounting plate that can hold different development boards. It allows also to mount a Raspberry Pi 4 B, which will be used in this project. Two wheels, hence 2WD, are included in the kit which can be attached to the motors that are provided too. A third caster wheel is provided which allows the robot to spin on the spot. This means the robot can be described by a holonomic model.

The motors operate in a range between 3 to 6 Volts DC and make it possible to mount a punched disk for speed measurements. With that punched disk and additional speed sensors it is possible to implement odometry in ROS. To power the motors a battery compartment is available together with a switch to turn the robot on or off.

Remo is a 3D printable Research Education Mobile/Modular Open robot platform. You can find more information in the following video and on the remo_description package page.

remo fusion animation

Alternatively, you can build your own mobile robot!

Power Supplies

As mentioned the robot will be equipped with a 5V/2.1A USB-C powerbank to supply the Raspberry Pi 4 B with 5 V.

Power bank with 10.000 mAh from Intenso.

To power the motors the provided battery compartment will be used, which holds four AA batteries \(4 \cdot 1.5\text{V} = 6\text{V}\).

I2C Hub

The Raspberry Pi provides just two I2C ports, which is why we will use a I2C hub. With the four port I2C hub from Grove it is possible to connect three I2C devices to a single I2C port of the Raspberry Pi

Grove I2C Hub.

Breadboard and GPIO Extension Cable

Optional but helpful for testing is a breadboard and a GPIO extension cable suitable for the Raspberry Pi 4 B.

Breadboard with GPIO extension cable.


Sensors are used to sense the environment and to collect information of the current state. For this 2WD robot the sensors are categorized into perception and localization which are explained in the following two sections.


Perception sensors of the 2WD robot will be used to avoid collisions using ultrasonic rangers. Another use case is to detect and follow objects using a camera.

Ultrasonic Ranger

To avoid obstacles the robot will carry a Grove - Ultrasonic Ranger at the front.

Grove Ultrasonic Ranger for obstacle avoidance.

It is a non-contact distance measurement module which works at 40KHz and can be interfaced via a single GPIO. For example physical pin 11 of the Raspberry Pi connected to the SIG pin on the sensor can provide the PWM communication.

Parameter Value/Range
Operating voltage 3.2~5.2V
Operating current 8mA
Ultrasonic frequency 40kHz
Measuring range 2-350cm
Resolution 1cm
Output PWM
Size 50mm X 25mm X 16mm
Weight 13g
Measurement angle 15 degree
Working temperature -10~60 degree C
Trigger signal 10uS TTL
Echo signal TTL

The code that will be used to wrap this sensor as a ROS node can be found in the Grove Raspberry Pi repository on GitHub.

As an alternative we could use the HC SR04.


RPi Camera v2.


Inertial Measurement Unit

An intertial measurement unit (IMU) measures the acceleration and orientation through gyroscopes directly. Other states such as the velocity can then be calculated. For this the Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout - BNO055 is used.

9-DOF Absolute Orientation IMU Fusion Breakout - BNO055 from Adafruit.


For the used odometry sensor see the section below Motor and Wheel Encoder

Alternative Optical Sensor

To estimate the change in position over time (odometry) the robot will utilize an optical speed sensor. Specifically the Joy-IT Speed Sensor which combines a LM393 (datasheet) comperator and a H206 slot-type opto interrupter.

LM393 Speed Sensor from Joy-IT.

Technical Specifications:

  • Dimensions: 32 x 14 x 7mm
  • Operating voltage: 3.3V to 5V (we will use 3.3V)
  • Two outputs: Digital (D0) and Analog (A0)




To drive the two motors of the car kit we use the Grove - I2C Motor Driver V1.3 from Seeed Studio.

Grove - I2C Motor Driver.

Motor and Wheel Encoder

The DG01E-E Hobby Motor has a quadrature encoder built in, which makes it easy to assemble the robot and saves space because of no additional (optical or magnetic) wheel encoders.

DG01D-E Motor with wheel encoders.

For more details such as the encoder pulses per revolution see the documentation on Motor and Encoder.

Alternative Brushed Gear Motor

Brushed Gearbox Motor

DC Gearbox motor - "TT Motor" - 200RPM - 3 to 6VDC.

Human Machine Interface (HMI)

The human machine interface is the layer between the user and the robot.

OLED Display

To update the user with status messages the robot has a 0.96 inch oled (organic ligth emitting diode) display. The oled display used is the Grove I2C 0.96 inch OLED display from Seeed Studio.

Grove - I2C 0.96 inch OLED Display.

The display is connected to the RPi via I2C on the physical pins 27 (scl) and 28 (sda), refere to the pinout.