Koke is the main hardware platform for the development of Schpin. It consists of 3D printed parts and off-the-shelf components.

The manual is in the BETA version. Please do read it properly before attempting to build it, not all information is present, and some of it has to be figured out on the spot.

Bill of materials

We have three categories of items - 3D printed, off the shelf, locally available.

All 3D printed parts are printable on Prusa i3 - style 3D printer with PLA material, and PLA worked for us just fine for now. The only exception is leg tips, which we recommend to print from _some_ sort of flexible material.

Off-the-shelf components like servo motors or Raspberry Pi can be bought on amazon, but there are alternative sources.

Locally available components, like screws, nuts, or wiring, should be available in your local store or in store based on the country you live in. Please do not buy them from cheap materials. We recommend higher grade screws, as the price difference is small, but the quality is much better.

We recommend that you buy more screws than necessary. We can’t ensure that each required screw is accounted for in the model. The same goes for the nuts. We only guarantee that each type of screw used is listed.

Our strategy is: Screws that have the count under 100, we buy either sets of 50 or 100. For screws that have the count over 100 we buy in multiples of 200.

count part
4 18650 battery
2 Bat PCB
28 Cylinder M2x12 screw
4 Cylinder M2x6 screw
145 Cylinder M2x8 screw
4 Cylinder M3x16 screw
8 Cylinder M3x5 screw
16 Cylinder M3x8 screw
12 LX15D servomotor
124 M2 nut
4 SCAD: LX15D_BU_body()
8 SCAD: LX15D_BU_plate()
12 SCAD: LX15D_U_body(T24)
12 SCAD: LX15D_U_plate(T24)
12 SCAD: LX15D_U_plate_cable(T24)
12 SCAD: LX15D_U_plate_cable_lock(T24,2.0,2.0)
8 SCAD: LX15D_cable_holder_B_body(part_i=0.0, z_offset=2.0, h=8.0, w=22.95, t=2.0, off=[30.0,0.0,14.75], screw_off=[28.0,0.0,14.75], screw_d=2.0, screw_y_offset=8.475)
8 SCAD: LX15D_cable_holder_B_body(part_i=1.0, z_offset=2.0, h=8.0, w=22.95, t=2.0, off=[30.0,0.0,14.75], screw_off=[28.0,0.0,14.75], screw_d=2.0, screw_y_offset=8.475)
8 SCAD: LX15D_cable_holder_C_body(t=2.0, s=2.0, w=29.5, harness_w=23.5)
8 SCAD: LX15D_cable_holder_C_lock(t=2.0, s=2.0, w=29.5, harness_w=23.5)
2 SCAD: bat_holder()
1 SCAD: bot_rpi_holder()
8 SCAD: femur_plate([95.0, 0.0, 30.0])
1 SCAD: spine()
4 SCAD: tile_H(T24,5.0,5.0,undef)
4 SCAD: tip()
1 SCAD: top_rpi_holder()
1 rpi4


We were able to fit in depth camera from Intel. Raspberry Pi was able to stream the dataset to a laptop, but we yet have to find a proper WiFi adapter that can handle it.

count part
1 Intel RealSense D415
2 Cylinder M3x8 screw
8 Cylinder M2x8 screw
4 M2 nut
1 SCAD: bracket()
1 SCAD: realsense_holder()

How to build

The only guidance for the assembly is this picture for now. We recommend you open the picture itself, which is rendered in high resolution.


Start by assembling the legs and body separately. For 3D printed parts, we recommend inserting nuts into parts as the first step. Keep in mind that they are not required for each slot available on the robot.

How to install

We use 64-bit Ubuntu 20.04 for Raspberry Pi 4.


This is required because this is only supported distro by ROS Foundation itself.

For simplification of software setup, we rely on Ansible for part of the setup.
  1. Install ubuntu on RPI
  2. Install and configure ssh daemon (we recommend to use ssh key login)
  3. Set a good host name for your robot
  4. Clone locally skeleton repo: git clone –recurse-submodules https://gitlab.fi.muni.cz/xkoniar/schpin-skeleton.git
  5. Fill in IP address of your Raspberry in inventory/hosts
  6. Run ansible-playbook main.yml to deploy
    1. Optionally use –ask-become-pass for sudo password
  7. Change inventory/hosts to <hostname>.local, this way, Ansible will always find your robot!
The Ansible setups these things:
  1. Installs ros-noetic-ros-base and additional packages for schpin
  2. Installs avahi - we use this to locate robot on network and communicate with it (also as ROS_HOSTNAME)
  3. Downloads schpin repositories and compiles them