Slide 1

Slide 1 text

Controlling Robots with Ruby

Slide 2

Slide 2 text

Andrew Nesbitt @teabass github.com/andrew

Slide 3

Slide 3 text

Controlling Robots with Ruby

Slide 4

Slide 4 text

Why Ruby?

Slide 5

Slide 5 text

High LEvel

Slide 6

Slide 6 text

Lower Barriers

Slide 7

Slide 7 text

Fun!

Slide 8

Slide 8 text

http://artoo.io

Slide 9

Slide 9 text

http://celluloid.io

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Arduino

Slide 12

Slide 12 text

Firmata

Slide 13

Slide 13 text

Hello World

Slide 14

Slide 14 text

require 'artoo' connection :arduino, :adaptor => :firmata, :port => '/dev/cu.usbmodemfd121' device :led, driver: :led, pin: 9 work do loop do led.toggle sleep 1 end end Hello World

Slide 15

Slide 15 text

Sparkfun Inventors Kit hobbytronics.co.uk/sparkfun-inventors-kit-v3

Slide 16

Slide 16 text

Sparkfun Inventors Kit hobbytronics.co.uk/sparkfun-inventors-kit-v3

Slide 17

Slide 17 text

Sumobot http://www.pololu.com/catalog/product/2506

Slide 18

Slide 18 text

require 'artoo' require 'curses' Curses.noecho # do not show typed keys Curses.init_screen Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down) keys = { 260 => :left, 261 => :right, 259 => :up, 258 => :down, 'x' => :exit, ' ' => :stop } connection :arduino, :adaptor => :firmata, :port => '/dev/cu.usbmodemfd121' device :board, :driver => :device_info device :left_motor, :driver => :motor, :forward_pin => 6, # hack! :backward_pin => 8, :speed_pin => 10 device :right_motor, :driver => :motor, :forward_pin => 6, # hack! :backward_pin => 7, :speed_pin => 9 MAX_SPEED = 60

Slide 19

Slide 19 text

work do loop do key = keys[Curses.getch] case key when :left left_motor.backward MAX_SPEED right_motor.forward MAX_SPEED when :right left_motor.forward MAX_SPEED right_motor.backward MAX_SPEED when :up left_motor.forward MAX_SPEED right_motor.forward MAX_SPEED when :down left_motor.backward MAX_SPEED right_motor.backward MAX_SPEED when :stop left_motor.stop right_motor.stop when :exit Curses.close_screen exit! end end end

Slide 20

Slide 20 text

AR Drone http://ardrone2.parrot.com

Slide 21

Slide 21 text

require 'artoo' connection :ardrone, :adaptor => :ardrone, :port => '192.168.1.1:5556' device :drone, :driver => :ardrone, :connection => :ardrone work do drone.start drone.take_off after(10.seconds) { drone.hover.land } after(15.seconds) { drone.stop } end AR DRONE

Slide 22

Slide 22 text

Sphero https://github.com/hybridgroup/artoo/blob/master/examples/conway_sphero.rb

Slide 23

Slide 23 text

Dance Dance Drone

Slide 24

Slide 24 text

Lego Controlled Rabbit

Slide 25

Slide 25 text

NoDebots.io

Slide 26

Slide 26 text

http://www.meetup.com/bathruby Programming Languages I've Been Meaning To Try But Haven't Got Around To Yet Saturday 30th November

Slide 27

Slide 27 text

http://www.meetup.com/bathruby PLIBMTTBHGATY Saturday 30th November

Slide 28

Slide 28 text

http://www.meetup.com/bathruby

Slide 29

Slide 29 text

Thanks! code: github.com/andrew/artoo-experiments slides: speakerdeck.com/andrew/ruby-on-robots