151
How to build Open Hardware Robot with Arduino, RaspberryPi and Hot Glue Tomáš Jukin @Inza

How to build Open Hardware self-navigating car robot

Embed Size (px)

Citation preview

Page 1: How to build Open Hardware self-navigating car robot

How to build Open Hardware Robotwith Arduino, RaspberryPi and Hot Glue

Tomáš Jukin@Inza

Page 2: How to build Open Hardware self-navigating car robot
Page 3: How to build Open Hardware self-navigating car robot
Page 4: How to build Open Hardware self-navigating car robot

Tomáš Jukin@Inza

www.juicymo.cz@JuicymoCZ

Page 5: How to build Open Hardware self-navigating car robot
Page 6: How to build Open Hardware self-navigating car robot
Page 7: How to build Open Hardware self-navigating car robot
Page 8: How to build Open Hardware self-navigating car robot
Page 9: How to build Open Hardware self-navigating car robot
Page 10: How to build Open Hardware self-navigating car robot
Page 11: How to build Open Hardware self-navigating car robot
Page 12: How to build Open Hardware self-navigating car robot

#Probee

Page 13: How to build Open Hardware self-navigating car robot
Page 14: How to build Open Hardware self-navigating car robot
Page 15: How to build Open Hardware self-navigating car robot
Page 16: How to build Open Hardware self-navigating car robot
Page 17: How to build Open Hardware self-navigating car robot
Page 18: How to build Open Hardware self-navigating car robot
Page 19: How to build Open Hardware self-navigating car robot

True evolution…

Page 20: How to build Open Hardware self-navigating car robot

True evolution…GDG ohwHack 2014 mDevCamp 2016

Page 21: How to build Open Hardware self-navigating car robot

True evolution…GDG ohwHack 2014 mDevCamp 2016

Page 22: How to build Open Hardware self-navigating car robot

Robotics 101

Page 23: How to build Open Hardware self-navigating car robot

Robotics 101

Micro-Computervs.

Micro-Controller

Page 24: How to build Open Hardware self-navigating car robot

Robotics 101

Micro-Computervs.

Micro-Controller

Page 25: How to build Open Hardware self-navigating car robot

Robotics 101

Micro-Computervs.

Micro-Controller

Page 26: How to build Open Hardware self-navigating car robot

Robotics 101

Micro-Computervs.

Micro-Controller

Voltage: 3.3V Flash: SD card RAM: 512 MB (CPU & GPU) CPU: ARM11 (BCM2835 SoC) Clock: 700 MHzGPIO: 40 pin HDMI, Ethernet

RaspberryPi 1 B+

Arduino UNO

Voltage: 5V Flash: 32KB (-0.5 bootloader) SRAM: 2KB EEPROM: 1KB Clock: 16 MHzDigital I/O: 14/6 PWM Analog In: 6

Page 27: How to build Open Hardware self-navigating car robot

Robotics 101ways of communication

Page 28: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Page 29: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Serial Peripheral Interface, N+3 wires, N devicesSPI

Page 30: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Serial Peripheral Interface, N+3 wires, N devices

Universal Asynchronous Receiver/Transmitter, 2 wires, 2 devices, <20m

SPI

UART

Page 31: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Serial Peripheral Interface, N+3 wires, N devices

Universal Asynchronous Receiver/Transmitter, 2 wires, 2 devices, <20m

Full Serial Line, 9 wires, 2 devices, <20mRS-232 (COM port)

SPI

UART

Page 32: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Serial Peripheral Interface, N+3 wires, N devices

Universal Asynchronous Receiver/Transmitter, 2 wires, 2 devices, <20m

Full Serial Line, 9 wires, 2 devices, <20mRS-232 (COM port)

Industry, 2 wires, <32 devices, <1200mRS-485 (EIA-485)

SPI

UART

Page 33: How to build Open Hardware self-navigating car robot

Robotics 101IIC (i2c, I2C, I2C)Inter-Inter Circuit, 2 wires, <128 devices, <2m

ways of communication

Serial Peripheral Interface, N+3 wires, N devicesSPI

UART

Industry, 2 wires, <32 devices, <1200mRS-485 (EIA-485)

Universal Asynchronous Receiver/Transmitter, 2 wires, 2 devices, <20m

Full Serial Line, 9 wires, 2 devices, <20mRS-232 (COM port)

Page 34: How to build Open Hardware self-navigating car robot

What does a4 wheels self driving car robotconsist of?

Page 35: How to build Open Hardware self-navigating car robot
Page 36: How to build Open Hardware self-navigating car robot
Page 37: How to build Open Hardware self-navigating car robot
Page 38: How to build Open Hardware self-navigating car robot
Page 39: How to build Open Hardware self-navigating car robot
Page 40: How to build Open Hardware self-navigating car robot
Page 41: How to build Open Hardware self-navigating car robot
Page 42: How to build Open Hardware self-navigating car robot
Page 43: How to build Open Hardware self-navigating car robot
Page 44: How to build Open Hardware self-navigating car robot
Page 45: How to build Open Hardware self-navigating car robot
Page 46: How to build Open Hardware self-navigating car robot
Page 47: How to build Open Hardware self-navigating car robot
Page 48: How to build Open Hardware self-navigating car robot
Page 49: How to build Open Hardware self-navigating car robot
Page 50: How to build Open Hardware self-navigating car robot
Page 51: How to build Open Hardware self-navigating car robot

1x RaspberryPi 1 B+ Starter Set https://goo.gl/jaTY70

1x Chinese 4WD Car Kit with Funduino UNO http://goo.gl/qetuW5

5x Ultrasonic Sensor HC-SR04 http://goo.gl/YojTTp

1x Wi-Fi dongle D-Link DWA-127 https://goo.gl/9d9BPo

1x Arduino Micro https://goo.gl/yjVqgC

1x I2C Level Converter http://goo.gl/9i4jCK

1x RTC module DS1307 http://goo.gl/esKm7t

1x PIR sensor HC-SR501 http://goo.gl/LyYGmb

1x 4D Touch TFT Display 4DPi-35 Rev. 1 http://goo.gl/RWs7rI

1x Skewers

1x Hot Glue

*plus PiCamera and PowerBank to power Pi… (and cables)

Page 52: How to build Open Hardware self-navigating car robot

http://goo.gl/tnXteh

Page 53: How to build Open Hardware self-navigating car robot

The Idea

Page 54: How to build Open Hardware self-navigating car robot
Page 55: How to build Open Hardware self-navigating car robot
Page 56: How to build Open Hardware self-navigating car robot

I2C

Page 57: How to build Open Hardware self-navigating car robot

I2C

PWM

Page 58: How to build Open Hardware self-navigating car robot

I2C

PWM12V

Page 59: How to build Open Hardware self-navigating car robot

I2CUSB

PWM12V

Page 60: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

PWM12V

Page 61: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

PWM

PWM12V

Page 62: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

PWM

PWM12V

Page 63: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

PWM

PWM12V

Page 64: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

I2C PWM

PWM12V

Page 65: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

I2C PWM

PWM12V

Page 66: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

I2C PWM

PWM12V

Page 67: How to build Open Hardware self-navigating car robot

I2C

SPI

USB

I2C PWM

PWM12V

I2C

PWM

Page 68: How to build Open Hardware self-navigating car robot

I2C

5V USB 7V

5V3.3V

Page 69: How to build Open Hardware self-navigating car robot

The Heart

Page 70: How to build Open Hardware self-navigating car robot

The Heart

Page 71: How to build Open Hardware self-navigating car robot

The Heart

Hardware

Page 72: How to build Open Hardware self-navigating car robot

The Heart

Hardware

HAL

Page 73: How to build Open Hardware self-navigating car robot

The Heart

Hardware

HAL

Events

Page 74: How to build Open Hardware self-navigating car robot

The Heart

Hardware

HAL

Events

Pre-Emptive Multi-Tasking

Page 75: How to build Open Hardware self-navigating car robot

The Heart

Hardware

HAL

Events

Pre-Emptive Multi-Tasking Config

Page 76: How to build Open Hardware self-navigating car robot

How do we develop in Arduino?

Page 77: How to build Open Hardware self-navigating car robot

Wiring / Processing

Page 78: How to build Open Hardware self-navigating car robot

C / C++

Page 79: How to build Open Hardware self-navigating car robot

C / C++

Page 80: How to build Open Hardware self-navigating car robot

C / C++

Page 81: How to build Open Hardware self-navigating car robot

5 Circles of Hell

Page 82: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

Page 83: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

.ino includes

Page 84: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

.ino includesLCD_i2c.h

Page 85: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

.ino includesLCD_i2c.hCrappy China goods

Page 86: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

.ino includesLCD_i2c.hCrappy China goodsHW bugs

Page 87: How to build Open Hardware self-navigating car robot

5 Circles of Hellin Arduino

.ino includesLCD_i2c.hCrappy China goodsHW bugsThe need of switch

Page 88: How to build Open Hardware self-navigating car robot

The Heart

Page 89: How to build Open Hardware self-navigating car robot

v0 - Procedural (by MacGyver on ohwHack)

The Heart

Page 90: How to build Open Hardware self-navigating car robot

v0 - Procedural (by MacGyver on ohwHack)

The Heartv0.5 - “Spagetka” (was to ugly to Git -> lost :-(…)

Page 91: How to build Open Hardware self-navigating car robot

v0 - Procedural (by MacGyver on ohwHack)

The Heartv0.5 - “Spagetka” (was to ugly to Git -> lost :-(…)v1 - “Spagetti MAS” (in Git repo)

Page 92: How to build Open Hardware self-navigating car robot

v0 - Procedural (by MacGyver on ohwHack)

The Heartv0.5 - “Spagetka” (was to ugly to Git -> lost :-(…)v1 - “Spagetti MAS” (in Git repo)v2 - “The Platform” (in Git repo, in progress)

Page 93: How to build Open Hardware self-navigating car robot

v0 - Procedural (by MacGyver on ohwHack)

The Heartv0.5 - “Spagetka” (was to ugly to Git -> lost :-(…)v1 - “Spagetti MAS” (in Git repo)v2 - “The Platform” (in Git repo, in progress)

https://github.com/Juicymo/probee

Page 94: How to build Open Hardware self-navigating car robot
Page 95: How to build Open Hardware self-navigating car robot
Page 96: How to build Open Hardware self-navigating car robot
Page 97: How to build Open Hardware self-navigating car robot
Page 98: How to build Open Hardware self-navigating car robot
Page 99: How to build Open Hardware self-navigating car robot

http://goo.gl/lZuAzn

Page 100: How to build Open Hardware self-navigating car robot
Page 101: How to build Open Hardware self-navigating car robot
Page 102: How to build Open Hardware self-navigating car robot

https://goo.gl/OhNByp

I2C

Page 103: How to build Open Hardware self-navigating car robot

https://goo.gl/QzYRjs

https://goo.gl/lG0ggl

I2C

Page 104: How to build Open Hardware self-navigating car robot

The Brain

Page 105: How to build Open Hardware self-navigating car robot

The Brain

Page 106: How to build Open Hardware self-navigating car robot

How do we develop for RaspberryPi?

Page 107: How to build Open Hardware self-navigating car robot

In Ruby

Page 108: How to build Open Hardware self-navigating car robot

But not only. It is a full featured* Linux.

Page 109: How to build Open Hardware self-navigating car robot

But not only. It is a full featured* Linux.

*running on ARM… :-(

Page 110: How to build Open Hardware self-navigating car robot

5 Circles of Hell

Page 111: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

Page 112: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

USB driven computer

Page 113: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

USB driven computerUnstable

Page 114: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

USB driven computerUnstableMore features madness

Page 115: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

USB driven computerUnstableMore features madnessWi-Fi dongle

Page 116: How to build Open Hardware self-navigating car robot

5 Circles of Hellin RaspberryPi

USB driven computerUnstableMore features madness

Unstable!!!Wi-Fi dongle

Page 117: How to build Open Hardware self-navigating car robot

Multi-Agent System

The Brainbuild on aActor-based concurrentobject framework in Ruby

https://github.com/Juicymo/probee

Page 118: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

Page 119: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

Page 120: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

ruby

Page 121: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

ruby

celluloid

Page 122: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

ruby

celluloid

agens

Page 123: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

ruby

celluloid

agens

probee MAS

Page 124: How to build Open Hardware self-navigating car robot

The Brain

Raspbian

rvm

ruby

celluloid

agens

probee MAS

https://github.com/Juicymo/probee

https://rubygems.org/gems/agens

https://github.com/celluloid/celluloid

https://rvm.io

Page 125: How to build Open Hardware self-navigating car robot

The Brain

ObjectRuby OOP

Page 126: How to build Open Hardware self-navigating car robot

The Brain

Object

Cell

Ruby OOP

Celluloid

Page 127: How to build Open Hardware self-navigating car robot

The Brain

Object

Cell

Actor

Ruby OOP

Celluloid

Celluloid

Page 128: How to build Open Hardware self-navigating car robot

The Brain

Object

Cell

Actor

Agent

Ruby OOP

Celluloid

Celluloid

agens

Page 129: How to build Open Hardware self-navigating car robot

The Brain

Object

Cell

Actor

Agent

MovementAgent

Ruby OOP

Celluloid

Celluloid

agens

probee

Page 130: How to build Open Hardware self-navigating car robot

The Brain

MovementAgent

Probee MAS

Page 131: How to build Open Hardware self-navigating car robot

The Brain

Motors

MovementAgent

Probee MAS

Page 132: How to build Open Hardware self-navigating car robot

The Brain

Motors

SteeringAgent

MovementAgent

Probee MAS

Page 133: How to build Open Hardware self-navigating car robot

The Brain

Motors

SensorsSteeringAgent

MovementAgent

Probee MAS

Page 134: How to build Open Hardware self-navigating car robot

The Brain

Motors

Sensors

CollisionAgent

SteeringAgent

MovementAgent

Probee MAS

Page 135: How to build Open Hardware self-navigating car robot

The Brain

Motors

Sensors

CollisionAgent

SteeringAgent

MovementAgent

Probee MAS

Page 136: How to build Open Hardware self-navigating car robot

The Brain

Motors

Sensors

CollisionAgent

SteeringAgent

MovementAgent

Probee MAS

Simple Agents can perform complex tasks

Page 137: How to build Open Hardware self-navigating car robot

The Brain

Page 138: How to build Open Hardware self-navigating car robot

The Brain

Page 139: How to build Open Hardware self-navigating car robot

How to make AI LogicScripting

HFSM HeuristicsMAS GA ANN

HTN

Page 140: How to build Open Hardware self-navigating car robot

How to make AI LogicScripting

HFSM HeuristicsMAS GA ANN

HTN

?

Page 141: How to build Open Hardware self-navigating car robot

HFSM

Movement FSMStop Drive Slowly Drive Fast

Page 142: How to build Open Hardware self-navigating car robot

HFSM

Movement FSMStop Drive Slowly Drive Fast

Turn Turret FSMStop Scan Target

Page 143: How to build Open Hardware self-navigating car robot

HFSM

Movement FSMStop Drive Slowly Drive Fast

Turn Turret FSMStop Scan Target

How to combine them??

Page 144: How to build Open Hardware self-navigating car robot

HFSM

Movement FSMStop Drive Slowly Drive Fast

Turn Turret FSMStop Scan Target

How to combine them??Modularity sucks too…

Page 145: How to build Open Hardware self-navigating car robot

How to make AI LogicScripting

HFSM HeuristicsMAS GA ANN

HTN

?

Page 146: How to build Open Hardware self-navigating car robot

How to make AI LogicScripting

HFSM HeuristicsMAS GA ANN

HTN

Behavior Trees

Page 147: How to build Open Hardware self-navigating car robot
Page 148: How to build Open Hardware self-navigating car robot

Behavior Trees

http://aigamedev.com/open/article/bt-overview/

http://behavior3js.guineashots.com/

http://aigamedev.com/open/article/behavior-trees-part1/

Page 149: How to build Open Hardware self-navigating car robot

Neural Nets

HFSM

MAS

HTN

Behavior Trees

https://github.com/Inza/agenshttps://en.wikipedia.org/wiki/Multi-agent_system

https://github.com/aasm/aasmhttps://en.wikipedia.org/wiki/Finite-state_machine

https://github.com/Maumagnaguagno/HyperTensioNhttps://en.wikipedia.org/wiki/Hierarchical_task_network

https://github.com/jvoegele/behavior_treehttps://en.wikipedia.org/wiki/Behavior_tree

https://github.com/SergioFierens/ai4rhttps://en.wikipedia.org/wiki/Artificial_neural_network

Page 150: How to build Open Hardware self-navigating car robot

Questions?

Page 151: How to build Open Hardware self-navigating car robot

Tomáš Jukin@Inza

www.juicymo.cz@JuicymoCZ