View on GitHub

dustbot

robot documentation

Introduction

The idea for this project came from living in a dusty environment at college dormitory in Prague. Because of its unfortunate proximity to busy highway, rooms are filled with dusty particles exceptionally fast - fast enough to warrant building an autonomous robot for cleaning them.

drawing

Goals

To sum up our project goals, we want to:

drawing

Parts of Robot

Chassis

We strived for easy design that could be easily modified and adapted. We designed chassis of Dustbot in an easy-to-learn online app Tinkercad.

Here can see bottom part of the Dustbot. It provides support for the whole robot. Notice that motel is rotated by 180 degrees, that is because this is the way it is 3D printed, but actually it is used upside down.

drawing

Because we added components on the fly, we used iterated design. As you can see on this picture, you can see progress of design of bottom part of Dustbot. With 3D printer you can see which parts really holds up in real world or not, and improve them if necessary.

drawing

I also wanted to utilize already created parts, which is raspberry holder and camera holder, and incorporate them into the robot easily.

Thingiverse

Since creating whole chassis at once would be hard to design, hard to 3D print, we split chassis into several parts. These are:

Bottom part

This is the base component, it is holding motors, and all other parts are connected to it. Motors are attached by four M3x20? screws. Side parts are attached by four M3x10 bolts

Dustbot bottom part.

Side parts

They are attached to base components, forming sides of robot. Onto them are attached other parts:

Left and right are symmetrical.

Side part.

Breadboard holder

Breadboard is attached to the breadboard holder by sticky tape. Breadboard holder itself is attached to side parts by four M3x8 nuts.

Side part.

Rear part

This part is subject to change. It prevents robot from falling backward when accelerating forward, and collects dust by kitchen cloth attached by two M3x10 bolts.

Rear part.

Battery holder

This part is attached by M3 nuts to the side parts, and can be removed by pulling it from back. We designed it this way, so you can create your own holder for battery pack and attach it to side parts.

Battery 1st part Battery 2nd part

Raspberry Pi 3 case & camera case

These models are available on thingiverse.

Actuators

We chose differential steering because it is easy to program, and uses only two motors.

We used TT motors, they are available on Ebay or Aliexpress for 2 dollars each. Motors are attached to bottom part by four M3x24 bolts with nuts.

drawing

Sensors

Robot needs information of what is going around him. The most basic is touch, but he also should be able to sense distant objects like furniture so it can avoid them or in case of dirt and dust, go to them and clean them.

Tactile

For detecting touch, we used Zippy VMN 06 micro switch. Switch is attached to bottom part by two M3x10 bolts.

zippy

Odometry

For future implementation of localization, we need to know where we are. Odometry is tool how to help us. We could use motor with built-in encoder, but that is not cheap, so we adapted rotary encoder model from thingiverse for TT motors.

drawing

Side part.

Camera

Camera is data rich, cheap sensor, that could be used in future improvements for object detection and collision evasion. We used [raspberry pi 2 camera] (https://www.raspberrypi.org/products/camera-module-v2/) which costs around 30$. For more info, read documentation

It would be better to use fish lens camera, because it offers vastly bigger field of view.

camera

Ultrasound

We bought several ultrasound sensors that will be added in future versions.

Chassis setup

Here we describe how to build robot from all parts, and how to setup electronics.

  1. print all 3D printed parts
  2. clean nut bevels so nuts go in easily
  3. attach motors to bottom part
  4. attach wheels to motors
  5. attach rear part to the robot
  6. put raspberry into case and screw it into side parts using M3 bolts
  7. glue breadborad onto breadboard holder and screw it on top of side parts
  8. attach rotary encoder onto TT motor
  9. attach optocouplets onto the bottom part
  10. attach switches onto bottom part using four M3x12 nuts

Wiring

Put arduino micro and other parts onto breadboard according to this diagram. Put usb cable from Raspberry Pi to Arduino and from battery pack to Raspberry Pi.

Software:

TODO: