Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BathRuby on Robots

BathRuby on Robots

Andrew Nesbitt

June 12, 2014
Tweet

More Decks by Andrew Nesbitt

Other Decks in Programming

Transcript

  1. Controlling
    Robots with Ruby

    View Slide

  2. Andrew Nesbitt
    @teabass
    github.com/andrew

    View Slide

  3. Controlling
    Robots with Ruby

    View Slide

  4. Why Ruby?

    View Slide

  5. High LEvel

    View Slide

  6. Lower
    Barriers

    View Slide

  7. Fun!

    View Slide

  8. http://artoo.io

    View Slide

  9. http://celluloid.io

    View Slide

  10. View Slide

  11. Arduino

    View Slide

  12. Firmata

    View Slide

  13. Drivers

    View Slide

  14. Hello World

    View Slide

  15. require 'artoo'


    connection :arduino, :adaptor => :firmata, 

    :port => '/dev/cu.usbmodem1411'

    device :led, driver: :led, pin: 9


    work do

    loop do

    led.toggle

    sleep 1

    end

    end
    Hello World

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. !
    require 'artoo'
    !
    connection :arduino, :adaptor => :firmata, :port => '/dev/cu.usbmodem1411'
    !
    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
    !
    connection :keyboard, adaptor: :keyboard
    device :keyboard, driver: :keyboard, connection: :keyboard

    View Slide

  20. def keypress(sender, key)
    puts key
    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 'space'
    left_motor.stop
    right_motor.stop
    end
    end
    !
    work do
    puts "Ready!"
    on keyboard, :key => :keypress
    end

    View Slide

  21. AR Drone
    http://ardrone2.parrot.com

    View Slide

  22. 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

    View Slide

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

    View Slide

  24. Dance Dance Drone

    View Slide

  25. Lego Controlled Rabbit

    View Slide

  26. http://gobot.io
    Gobot

    View Slide

  27. http://cylonjs.com
    Cylon

    View Slide

  28. NoDebots.io

    View Slide

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

    View Slide