Drivers

Artoo has a extensible system for connecting to hardware devices.

Sphero


Allows user to interact with the Sphero robotic sphero using Artoo.

How To Connect

That is pretty simple once the Sphero is ready (connected and listening), you just need three lines of code and you are set, Artoo and the Sphero driver take care of the rest.

require 'artoo'
connection :sphero, :adaptor => :sphero, :port => '127.0.0.1:8023'
device :sphero, :driver => :sphero

How To Use

Example to roll the sphero in a random direction and change direction every 3 seconds.

require 'artoo'

connection :sphero, :adaptor => :sphero, :port => '127.0.0.1:4567'
device :sphero, :driver => :sphero

work do
  @rolling = false

  every(3.seconds) do
    puts "Rolling..."
    unless @rolling
      sphero.roll 90, rand(360)
      @rolling = true
    else
      sphero.stop
      @rolling = false
    end
  end
end

How to use events and call them on your drivers

Pretty simple, when the connection and the driver have been setup (as explained above) you can call events on the sphero driver as follows:

# :contact is the name of a previously defined method containing the code to execute.
on sphero, :collision => :contact

Commands

roll(speed, direction)

Starts the sphero rolling at the provided speed (value between 0 and 255) and direction (value between 0 and 360).

Params
  • speed - params
  • direction - params
Returns

true or nil

stop

Stops the sphero.

Returns

true or nil

detect_collisions

Sets the sphero to detect collisions and report them.

Returns

true or nil

messages → [sphero_event]

Returns an array of sphero events, the messages reported by the sphero.

Returns

sphero_event

color(:color_symbol | [red, green, blue]) → [red_int, green_int, blue_int]

You can pass a color as a symbol or an array containing RGB colors from 0 to 255 ([255, 0, 0] == red), if passed a symbol returns the array of RGB corresponding to the color, if passed an array of colors it returns the same array (used when setting colors to the sphero).

Params
  • color_symbol - params
  • red - params
  • green - params
  • blue - params
Returns

[red_int, green_int, blue_int]

set_color([red, green, blue]) → true | nil

REVISION PENDING: You can either use it in tandem with color to set the color of the sphero or just pass an array containing RGB colors on the range 0 to 255 ([255, 0, 0] == red).

Params
  • red - params
  • green - params
  • blue - params
Returns

true or nil

Events

start_driver

Starts the driver.

handle_collision_detected(data)

Gets triggered when the Sphero has data to send to the user, related to "collision".

Data
  • data- The returned data

handle_power_notification(data)

Gets triggered when the Sphero has data to send to the user, related to "power".

Data
  • data- The returned data

handle_sensor_data(data)

Gets triggered when the Sphero has data to send to the user, related to "sensor".

Data
  • data- The returned data

Sphero Colors (R,G,B)

Example Name Code Example Name Code
aliceblue (240, 248, 255)
antiquewhite (250, 235, 215)
aqua (0, 255, 255)
aquamarine (127, 255, 212)
azure (240, 255, 255)
beige (245, 245, 220)
bisque (255, 228, 196)
black (0, 0, 0)
blanchedalmond (255, 235, 205)
blue (0, 0, 255)
blueviolet (138, 43, 226)
brown (165, 42, 42)
burlywood (222, 184, 135)
cadetblue (95, 158, 160)
chartreuse (127, 255, 0)
chocolate (210, 105, 30)
coral (255, 127, 80)
cornflowerblue (100, 149, 237)
cornsilk (255, 248, 220)
crimson (220, 20, 60)
cyan (0, 255, 255)
darkblue (0, 0, 139)
darkcyan (0, 139, 139)
darkgoldenrod (184, 134, 11)
darkgray (169, 169, 169)
darkgreen (0, 100, 0)
darkkhaki (189, 183, 107)
darkmagenta (139, 0, 139)
darkolivegreen (85, 107, 47)
darkorange (255, 140, 0)
darkorchid (153, 50, 204)
darkred (139, 0, 0)
darksalmon (233, 150, 122)
darkseagreen (143, 188, 143)
darkslateblue (72, 61, 139)
darkslategray (47, 79, 79)
darkturquoise (0, 206, 209)
darkviolet (148, 0, 211)
deeppink (255, 20, 147)
deepskyblue (0, 191, 255)
dimgray (105, 105, 105)
dodgerblue (30, 144, 255)
firebrick (178, 34, 34)
floralwhite (255, 250, 240)
forestgreen (34, 139, 34)
fuchsia (255, 0, 255)
gainsboro (220, 220, 220)
ghostwhite (248, 248, 255)
gold (255, 215, 0)
goldenrod (218, 165, 32)
gray (128, 128, 128)
green (0, 128, 0)
greenyellow (173, 255, 47)
honeydew (240, 255, 240)
hotpink (255, 105, 180)
indianred (205, 92, 92)
indigo (75, 0, 130)
ivory (255, 255, 240)
khaki (240, 230, 140)
lavender (230, 230, 250)
lavenderblush (255, 240, 245)
lawngreen (124, 252, 0)
lemonchiffon (255, 250, 205)
lightblue (173, 216, 230)
lightcoral (240, 128, 128)
lightcyan (224, 255, 255)
lightgoldenrodyellow (250, 250, 210)
lightgreen (144, 238, 144)
lightgrey (211, 211, 211)
lightpink (255, 182, 193)
lightsalmon (255, 160, 122)
lightseagreen (32, 178, 170)
lightskyblue (135, 206, 250)
lightslategray (119, 136, 153)
lightsteelblue (176, 196, 222)
lightyellow (255, 255, 224)
lime (0, 255, 0)
limegreen (50, 205, 50)
linen (250, 240, 230)
magenta (255, 0, 255)
maroon (128, 0, 0)
mediumaquamarine (102, 205, 170)
mediumblue (0, 0, 205)
mediumorchid (186, 85, 211)
mediumpurple (147, 112, 219)
mediumseagreen (60, 179, 113)
mediumslateblue (123, 104, 238)
mediumspringgreen (0, 250, 154)
mediumturquoise (72, 209, 204)
mediumvioletred (199, 21, 133)
midnightblue (25, 25, 112)
mintcream (245, 255, 250)
mistyrose (255, 228, 225)
moccasin (255, 228, 181)
navajowhite (255, 222, 173) navy (0, 0, 128)
oldlace (253, 245, 230)
olive (128, 128, 0)
olivedrab (107, 142, 35)
orange (255, 165, 0)
orangered (255, 69, 0)
orchid (218, 112, 214)
palegoldenrod (238, 232, 170)
palegreen (152, 251, 152)
paleturquoise (175, 238, 238)
palevioletred (219, 112, 147)
papayawhip (255, 239, 213)
peachpuff (255, 218, 185)
peru (205, 133, 63)
pink (255, 192, 203)
plum (221, 160, 221)
powderblue (176, 224, 230)
purple (128, 0, 128)
red (255, 0, 0)
rosybrown (188, 143, 143)
royalblue (65, 105, 225)
saddlebrown (139, 69, 19)
salmon (250, 128, 114)
sandybrown (244, 164, 96)
seagreen (46, 139, 87)
seashell (255, 245, 238)
sienna (160, 82, 45)
silver (192, 192, 192)
skyblue (135, 206, 235)
slateblue (106, 90, 205)
slategray (112, 128, 144)
snow (255, 250, 250)
springgreen (0, 255, 127)
steelblue (70, 130, 180)
tan (210, 180, 140)
teal (0, 128, 128)
thistle (216, 191, 216)
tomato (255, 99, 71)
turquoise (64, 224, 208)
violet (238, 130, 238)
wheat (245, 222, 179)
white (255, 255, 255)
whitesmoke (245, 245, 245)
yellow (255, 255, 0)
yellowgreen (154, 205, 50)

Compatibility