Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SELF-PROPELLED DEVICE WITH CENTER OF MASS DRIVE SYSTEM
Document Type and Number:
WIPO Patent Application WO/2015/094695
Kind Code:
A1
Abstract:
A self-propelled device is disclosed that includes a center of mass drive system. The self-propelled device includes a substantially cylindrical body and wheels, with each wheel having a diameter substantially equivalent to the body. The self-propelled device may further include an internal drive system with a center of mass below a rotational axis of the wheels. Operation and maneuvering of the self-propelled device may be performed via active displacement of the center of mass.

Inventors:
MACGREGOR ROSS (US)
BERNSTEIN IAN H (US)
WILSON ADAM (US)
Application Number:
PCT/US2014/068606
Publication Date:
June 25, 2015
Filing Date:
December 04, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ORBOTIX INC (US)
International Classes:
B62D61/00
Foreign References:
US20130105239A12013-05-02
US20020036104A12002-03-28
US20110308873A12011-12-22
US20110132671A12011-06-09
Attorney, Agent or Firm:
MAHAMEDI, Zurvan (1901 S. Bascom Ave. Suite 60, Campbell California, US)
Download PDF:
Claims:
WHAT IS CLAIMED IS :

1. A self-propelled device comprising :

a substantially cylindrical body;

a drive system comprising a left motor to operate a left wheel, a right motor to operate a right wheel, and one or more power units to power the left and right motors, the drive system having a center of mass below a common rotational axis of both the left and right wheels;

a receiver to receive control inputs from a controller device;

a processor to process the control inputs for maneuvering the self- propelled device, the processor to independently control operation of the left motor and the right motor;

wherein actuation of the left motor and the right motor causes the drive system to pitch rotationally causing a displacement in the center of mass of the drive system in order to cause the self-propelled device to move.

2. The self-propelled device of Claim 1, wherein a height of both the left and right wheels is substantially equivalent to a height of the body.

3. The self-propelled device of Claim 2, wherein the body includes one or more fastening means to fasten one or more attachable accessories to the self-propelled device.

4. The self-propelled device of Claim 3, wherein the one or more attachable accessories includes a light-emitting element.

5. The self-propelled device of Claim 3, wherein the one or more attachable accessories includes a trailer attachment.

6. The self-propelled device of Claim 3 wherein the one or more attachable accessories includes a camera .

7. The self-propelled device of Claim 1, further comprising removable wheel coverings to fit around each of the left and right wheels.

8. The self-propelled device of Claim 1, further comprising detachable wheel covers coupled to a wheel hub on each of the left and right wheels.

9. The self-propelled device of Claim 1, wherein the self-propelled device is operable in a plurality of modes, including an autonomous mode and a controlled mode.

10. The self-propelled device of Claim 1, wherein the processor (i) interprets the control inputs as one or more commands, and (ii) implements a control on the drive system based at least in part on the one or more commands.

11. The self-propelled device of Claim 1, wherein the body is at least partially transparent.

12. The self-propelled device of Claim 11, further comprising a light- emitting element coupled to a fastening means on the drive system and disposed within the body.

13. The self-propelled device of Claim 1, wherein the drive system is rigid to the body, causing the body to rotate in conjunction with the rotational pitch of the drive system .

14. The self-propelled device of Claim 13, further comprising a left gear coupling the left motor to the left wheel, and a right gear coupling the right motor to the right wheel, wherein the left and right gears are respectively rigid to the left and right wheels.

15. The self-propelled device of Claim 14, wherein the motors are configured to engage in concert to rotationally pitch the drive system, allowing for linear motion of the self-propelled device in directions perpendicular to the common rotational axis the left and right wheels.

16. The self-propelled device of Claim 15, wherein the left and right motors are further configured to engage independently in order to cause directional change of the self-propelled device.

17. The self-propelled device of Claim 15, wherein the left and right motors are configured to rotationally pitch the drive system approximately 90 degrees to cause the self-propelled device to move.

18. The self-propelled device of Claim 1, further comprising a memory coupled to the processor, the memory to store programmatic instructions that translate the control inputs into commands for operating each of the left motor and the right motor.

19. The self-propelled device of Claim 18, wherein the control inputs are received from a computing device via a software application unique to controlling the self-propelled device, wherein the computing device is one of (i) a smart phone, (ii) a tablet computer, (iii) a laptop device, (iv) a desktop device, or (v) a specialized remote control.

20. The self-propelled device of Claim 18, wherein execution of the software application automatically links the computing device to the self- propelled device.

Description:
SELF-PROPELLED DEVICE WITH CENTER OF MASS DRIVE SYSTEM

BACKGROUND

[0001] Self-propelled devices have previously been powered by inertia or mechanical energy storage in devices such as coiled springs. Remote controlled devices typically use electric motors to engage one or more wheels of the device in order to cause the device to move. As technology has evolved, new methods of propelling and controlling these devices have been implemented.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] The disclosure herein is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements, and in which :

[0003] FIG. 1 is a block diagram illustrating interior components of an example tubular self-propelled device;

[0004] FIG. 2 is a block diagram illustrating an exploded view of an example tubular self-propelled device;

[0005] FIG. 3 is a schematic depiction of interior components of an example self-propelled device;

[0006] FIG. 4A is a schematic depiction of an example system

comprising a self-propelled device and a computing device;

[0007] FIG. 4B depicts an example system comprising computing devices and self-propelled devices;

[0008] FIG. 4C is a schematic depiction that illustrates an example system comprising a computing device and multiple self-propelled devices;

[0009] FIG. 5 illustrates a mechanism for moving the self-propelled device; [0010] FIGS. 6A and 6B illustrate example mechanisms for causing directional change of the self-propelled device; and

[0011] FIGS. 7A and 7B illustrate examples of a self-propelled device with attached example accessories.

DETAILED DESCRIPTION

[0012] Examples described herein provide for a cylindrical bodied device that is propelled, at least partially, via displacement of its center of mass. The self-propelled device includes a controllable drive system that can rotate in order to cause the self-propelled device to move. Furthermore, the self-propelled device can be controlled by an external computing device operated by a user. Furthermore, the device can include wheels at either end of the cylindrical body. The wheels have a diameter that is

substantially equivalent to the diameter of the cylindrical body. Further still, removable wheel coverings (e.g ., tires) and/or removable hub covers may also be included .

[0013] Examples also provide a self-propelled device that has a substantially cylindrical body with various components disposed therein that cause the self-propelled device to move. These components include a center of mass drive system contained within the body, a pair of wheels coupled to the drive system and disposed on either end of the self-propelled device, and a pair of motors to independently operate each of the wheels. The motors are powered by one or more power units included in the drive system . Furthermore, the drive system can have a center of mass below a common rotational axis of both of the wheels. Also, the wheels may have a diameter that is substantially equivalent to the diameter of the cylindrical body.

[0014] Additionally, the self-propelled device can include a wireless communication port and receiver to receive control inputs from a controller device. The control inputs may be processed by a processor coupled to the wireless communication port to ultimately maneuver the self-propelled device. Further, the processor translates the control inputs to

independently operate the left motor and the right motor and/or rotationally pitch the entire drive system so as to displace the center of mass of both the drive system and the self-propelled device in order to cause the self- propelled device to move.

[0015] One or more embodiments described herein provide that methods, techniques, and actions performed by a computing device are performed programmatically, or as a computer-implemented method .

Programmatically, as used herein, means through the use of code or computer-executable instructions. These instructions can be stored in one or more memory resources of the computing device. A programmatically performed step may or may not be automatic.

[0016] One or more embodiments described herein can be implemented using programmatic modules or components of a system . A programmatic module or component can include a program, a sub-routine, a portion of a program, or a software component or a hardware component capable of performing one or more stated tasks or functions. As used herein, a module or component can exist on a hardware component independently of other modules or components. Alternatively, a module or component can be a shared element or process of other modules, programs or machines.

[0017] Some embodiments described herein can generally require the use of computing devices, including processing and memory resources. For example, one or more embodiments described herein can be implemented, in whole or in part, on computing devices such as digital cameras, digital camcorders, desktop computers, cellular or smart phones, personal digital assistants (PDAs), laptop computers, printers, digital picture frames, and tablet devices. Memory, processing, and network resources may all be used in connection with the establishment, use, or performance of any

embodiment described herein (including with the performance of any method or with the implementation of any system).

[0018] Furthermore, one or more embodiments described herein may be implemented through the use of instructions that are executable by one or more processors. These instructions may be carried on a computer- readable medium. Machines shown or described with figures below provide examples of processing resources and computer-readable mediums on which instructions for implementing embodiments can be carried and/or executed . In particular, the numerous machines shown with embodiments include processor(s) and various forms of memory for holding data and instructions. Examples of computer-readable mediums include permanent memory storage devices, such as hard drives on personal computers or servers. Other examples of computer storage mediums include portable storage units, such as CD or DVD units, flash memory (such as carried on smart phones, multifunctional devices or tablets), and magnetic memory. Computers, terminals, network enabled devices (e.g., mobile devices, such as cell phones) are all examples of machines and devices that utilize processors, memory, and instructions stored on computer-readable mediums. Additionally, embodiments may be implemented in the form of computer-programs, or a computer usable carrier medium capable of carrying such a program.

[0019] As used herein, the term "substantially" means at least almost entirely. In quantitative terms, "substantially" may be deemed to be at least 50% of a stated reference (e.g., quantity of size or shape).

[0020] FIG. 1 is a block diagram illustrating interior components of an example tube-shaped self-propelled device 100. Central components of the self-propelled device 100 includes a drive system 102 having a pair of adjacent motors 104, 106 each corresponding to a respective wheel 108, 110. Furthermore, each wheel 108, 110 can include an attached gear 114, 116 that couples to a respective motor 104, 106. The self-propelled device further includes a receiver 118 to receive control inputs from an external computing device. The control inputs can be processed by a processor supported on a circuit board 112 which can translate the control inputs into commands to operate the motors 104, 106 either in conjunction and/or independently. One or more of the components of the self-propelled device, such as the motors 104, 106, components of the circuit board 112, and/or the receiver 118, may be powered by one or more power units 122, 124. Components of the circuit board 112 can include one or more memory resources and/or processing means implementing control logic for translating the control inputs received from the external computing device into commands in order to operate the motors 104, 106.

[0021] Referring still to FIG. 1, the drive system 102 can be mounted or otherwise attached to a carrier 126. The carrier 126 can include a plurality of mount points upon which components of the self-propelled device 100 may be mounted . As an addition or alternative, select components of the self-propelled device 100 can be bonded or otherwise connected to the carrier 126. As described in detail below, the self-propelled device can also include an external body to be mounted rigidly to the carrier 126 or drive system 102.

[0022] The drive system 102 can be comprised of a left motor 104 and a right motor 106. The motors 104, 106 can be standard electric motors or customized electric motors capable of producing any power output. Thus, the scale or size of each of the respective components of the self-propelled device can be modified in order to conform to any desired use. For example, the self-propelled device 100 may include relatively small electric motors for use as a remote controlled vehicle. Alternatively, for example, the self-propelled device may include relatively large motors, such as petroleum powered engines for any variety of industrial or practical uses.

[0023] The left motor 104 and the right motor 106 include a respective left axle 128 and a right axle 130. The axles 128, 130 may be toothed or otherwise configured to couple to the gears 114, 116 such that rotational energy of the motors 104, 106 directly causes the wheels 108, 110 and/or the drive system 102 itself to rotate accordingly. Additionally or as an alternative, a mass ratio of the motors 104, 106 with respect to the wheels 108, 110 may be such that when the motors 104, 106 engage the wheels, the entire drive system 102 is rotationally pitched such that a center of mass 120 of the drive system 102 and/or the self-propelled device 100 is displaced so as to cause the self-propelled device 100 to move.

Furthermore, the left motor 104 and the right motor 106 are configured to operate independently and in conjunction. [0024] For example, control logic can interpret control inputs from a user of the external computing device instructing the self-propelled device 100 to move linearly in a direction perpendicular to a common rotational axis of both the left wheel 108 and the right wheel 110. The control logic can translate the inputs into commands to operate the motors 104, 106 in conjunction, causing the drive system 102, along with other components of the self-propelled device 100, to rotationally pitch, thereby displacing its center of mass 120 accordingly and causing the self-propelled device 100 to move linearly. For example, rotationally pitching the drive system 102 upwards and forwards causes the center of mass 120 of the entire device to move forward, thus causing the self-propelled device 100 to move linearly. Additionally, the control logic may interpret control inputs instructing the self-propelled device 100 to move in any number of directions perpendicular to a vertical axis of the device 100. Accordingly, the control logic can translate the inputs into commands to operate the motors 104, 106 independently to individually deliver power to each wheel 108, 110 in order to cause the self-propelled device 100 to change direction. Independent and conjunctive operation of the motors 104, 106 can be performed dynamically in response to a user's control inputs on an external computing device.

[0025] FIG. 1 further illustrates a structural example of the wheels 108, 110 of the self-propelled device. As an example, the wheels 108, 110 may be formed of any suitable material, such as a composite plastic and/or rubber compound . However, the material used to form the wheels 108, 110 are not limited to any particular compound, but rather can be any cylindrical body which can be configured to be fastened to the drive system 102. The wheels 108, 110 may further be formed with a treaded contact surface to increase grip. Additionally or as an alternative, removable wheel coverings or tires can be fitted over the wheels 108, 110 to further increase grip while the self-propelled device 100 is being maneuvered. Further, the gears 114, 116 can be formed at least partially within an interior surface of each wheel 108, 110 such that the wheel and gear combination may be inserted, and/or fastened to the drive system 102. Alternatively, the gears 114, 116 can be removable from the wheels 108, 110 and provided as separate components of the self-propelled device 100. Each wheel 108, 110 can further include a wheel hub 132 upon which a removable hub cover can be attached, as further described below. The wheel hub 132 is formed within and outer surface of each wheel 108, 110, or the wheel hub 132 can be removable from each wheel 108, 110. Alternatively, the wheels of the self-propelled device can be formed with a hollow inner radius, within which gears and wheel hubs can be fitted or formed . For example, the gear 114 and wheel hub 132 can be combined as a single part to be fitted or formed within the inner radius of the wheel 108.

[0026] The self-propelled device 100 further includes a circuit board 112 upon which any number of electronic components may be installed or supported . These electronic components can include any combination of a memory resource, a processing means, sensors, a wireless communication port, and connection ports providing leads to the power units 122, 124, the motors 104, 106, and/or other components of the self-propelled device, as discussed in further detail below. A receiver 118 is provided and is coupled to the wireless communication port to allow for wireless communication with an external computing device providing control inputs for the self-propelled device 100. The receiver 118 can be an antenna array, and/or can be configured for a variety of communication standards, such as any radio frequency (RF) communication, including BLUETOOTH, short-range RF communication, and/or line of sight communication. Additionally or as an alternative, the receiver 118 may allow for the self-propelled device 100 to wirelessly connect to a variety of network technologies, including the Internet, World Wide Web, wireless links, wireless radio-frequency communications utilizing network protocol, optical links, or any available network communication technology. Examples of such network links comprise various radio frequency data communication systems, including, for example, those known as WI-FI, IEEE 802.11a, IEEE 802.11b, IEEE 802. l lg, IEEE 802.11η, IEEE 802.11ac, IEEE 802. Had, and/or 802. Hah. Other radio frequency data links may be formed using cellular telephone service or serial communication protocols using radio modems.

Furthermore, optical communication links may be employed, including modulating properties of light and LASER beams. [0027] One or more power units 122, 124 are included to store energy for operating the electronics and electromechanical components of the device 100. The power units 122, 124 can be any type of battery or energy storage unit suitable for installation within the device 100. For example, the power units 122, 124 can be rechargeable batteries such as lithium ion batteries. Additionally or as an alternative, the power units 122, 124 can be rechargeable via an inductive or wired charge port, which can be included to recharge the power units 122, 124 without the need for a wired electrical connection.

[0028] FIG. 2 is a block diagram illustrating an exploded view of an example cylindrical self-propelled device 200. When describing certain examples and details of FIG. 2, reference may be made to features and reference characters of FIG. 1. Furthermore, the self-propelled device 200 of FIG. 2 may include any combination of the previously discussed features with respect to FIG. 1. These include, without limitation, the drive system 205 including a left motor 202 and a right motor 204 with respective axles, one or more power units 208, a carrier 234, a circuit board 216 with any number of electronic components, and an receiver 218 which can be configured or included as any variety of wireless communication standards and/or technologies. Hereinafter, the above features may be referred individually or collectively as the "interior components" of the self-propelled device 200.

[0029] Referring to FIG. 2, the above features are included within a body 214 of the self-propelled device 200. Furthermore, any combination of the above features can be configured to be rigid to the body 214. For example, the carrier 234 can be mounted or otherwise attached to an inner portion of the body 214. Alternatively, any number interior components of the self- propelled device 200 can be coupled to the inner portion of the body 214. Accordingly, due to the interior components being rigid to the body 214, the body 214 can rotate in conjunction with the rotational pitch of the drive system 205 when the self-propelled device 200 is being maneuvered.

[0030] The body 214 is substantially cylindrical in shape and can include any number of designs and features. For example, the body can be at least partially transparent such that light from an internal light emitting component disposed within the body is apparent from outside of the device 200. The internal light emitting component can be any type of illuminating element, such as one or more light-emitting diodes (LEDs) or one or more LED arrays. The illuminating element can be affixed to the carrier 234, or any other interior component of the self-propelled device 200. As an addition or alternative, the body 214 can be comprised of sealed

polycarbonate plastic or other composite that can be textured to diffuse light from the internal illuminating element.

[0031] Furthermore, the body 214 may be composed of a material that allows for transmission of signals used for wireless communication. Still further, an outer surface of the body 214 can be comprised of a material that is substantially impervious to moisture and every day wear and tear. The body 214 can be detachable from the self-propelled device 200 to allow for access to the interior components, and may further be durable, washable, and/or shatter resistant.

[0032] Additionally or as an alternative, the body 214 can include fastening or attachment points to allow for removable accessories to be attached to the exterior of the body 214. As discussed in further detail below, these accessories may include, for example, an attachable head lamp or a trailer attachment.

[0033] As shown in FIG. 2 for illustrative purposes, the gear 212 for a particular wheel 208 can be molded or formed at least partially within an interior portion of a wheel, such as illustrated by wheel 208. Alternatively, the gear 210 can be included as a portion of a power train in which the motor 202 is coupled to an axle 234 and gear 210 combination.

Accordingly, the axle 234 and gear 210 combination may then be fitted to the wheel 206. Alternatively, an axle and gear combination can be formed at least partially within an interior portion of a wheel .

[0034] Still further, a wheel hub can be (i) formed at least partially within an outer portion of a respective wheel (not shown), (ii) formed in combination with a gear within an inner radius of a wheel (also not shown), or (iii) part of the power train attached to the gear 210 and axle 234. In the latter example, the wheel hub 236 can be a part of or coupled to the axle 234, and can further be configured to protrude from the outer portion of the wheel 206. The self-propelled device 200 can further incorporate removable hub covers 222, 224 that can be readily attached and detached from the wheel hubs 236. The hub covers 222, 224 may come in a variety of different colors and/or styles accordingly to a user's preference.

Alternatively, the hub covers 222, 224 can be affixed semi-permanently to the wheel hubs 236. The hub covers 222, 224 may be made from a hard or soft plastic, plastic/rubber composite or compound, metal, or any other suitable material .

[0035] The wheels 206, 208 can allow for wheel coverings 226, 228 (e.g., tires) to be fitted over them . The wheel coverings 226, 228 can be removable and be formed of a soft rubber compound . However, the wheel coverings 226, 228 are not limited to soft rubber, and may be made of any compound. The wheel coverings 226, 228 may include any number of tread patterns for specialized or simply stylistic purposes. The wheel coverings 226, 228 can also come in a variety of different styles and/or colors according to a user's preference. In variations, the wheels 206, 208 have the same or substantially the same height as the body 214, and the wheel coverings 226, 228 can allow for a slight height advantage of the wheel and tire combination with respect to the body. Alternatively, the wheels 206, 208 can be significantly larger in height than the body 214.

ELECTRONICS

[0036] FIG. 3 is a schematic depiction of interior components of an example self-propelled device 300. The interior components can be supported on, for example, the circuit boards (126, 234) of FIGs. 1 and 2. Alternatively, certain interior components of the self-propelled device 300 can be mounted or otherwise attached or connected to any other interior component or even the inner surface of the body 214. Referring to FIG. 3, the self-propelled device 300 may be operated to move under the control of another device, such as an external computing device operated by a user. Furthermore, the self-propelled device 300 can be configured with resources that enable one or more of the following : (i) maintain self-awareness of orientation and/or position relative to an initial reference frame after the device initiates movement; (ii) process control inputs programmatically, so as to enable a diverse range of program-specific responses to different control inputs; (iii) enable another device to control its movement using software or programming logic that is communicative with programming logic on the self-propelled device; and/or (iv) generate an output response for its movement and state that it is software interpretable by the control device.

[0037] Additionally, the self-propelled device 300 includes several interconnected subsystems and modules. For example, a processor 314 can execute programmatic instructions from a program memory 304. The instructions stored in the program memory 304 can be changed, for example to add features, correct flaws, or modify behavior. Furthermore, the program memory 304 can store programming instructions that are communicative or otherwise operable with software executing on a computing device. The processor 314 can further be configured to execute different programs of programming instructions, in order to alter the manner in which the self-propelled device 300 interprets or otherwise responds to control input from another computing device. Additionally or as an alternative, the computing device executes a software application specific to controlling the self-propelled device 300 that automatically links the computing device to the self-propelled device 300.

[0038] The wireless communication port 310, in conjunction with a communication receiver 302, can serve to exchange data between the processor 314 and other external devices. The data exchanges, for example, provide communications, control, logical instructions, state information, and/or updates for the program memory 304. As an addition or alternative, the processor 314 can generate an output corresponding to state and/or position information, which can be communicated to the external computing device via the wireless communication port 310 and the receiver 302. The mobility of the device may make wired connections undesirable, so the term "connection" may be understood to mean a logical connection made without a physical attachment to self-propelled device 300.

[0039] The wireless communication port 310 may implement

BLUETOOTH communications protocol and the receiver 302 may be suitable for transmission and reception of BLUETOOTH radio signals. However, alternatively, other wireless communication mediums and protocols may also be used.

[0040] The interior components may include sensors 312 that can provide information about the surrounding environment and condition to the processor 314. The sensors 312 can include inertial measurement devices, including a gyroscope, one or more accelerometers, and/or one or more magnetometers. The sensors 314 can provide inputs to enable the processor 314 to maintain awareness of the device's 300 orientation and/or position relative to an initial reference frame after the device initiates movement. Additionally or as an alternative, the sensors 312 include instruments for detecting light, temperature, humidity, and/or measuring chemical concentrations or radioactivity.

[0041] The self-propelled device can include a state/variable memory 306 which can store information about the present state of the device 300, including, for example, position, orientation, and rates of rotation. The state/variable memory 306 can also store information corresponding to an initial reference frame of the device upon, for example, the device being put in use (e.g ., the device being switched on), as well as position and orientation information once the device is in use. In this manner, some embodiments provide for the device 300 to utilize information of the state/variable memory 306 in order to maintain position and orientation information of the device 300 when the device 300 is being controlled

[0042] A clock 308 can be included to provide timing information to the processor 314. As such, the clock 308 provides a time-base for measuring intervals and rates of change. Additionally or alternatively, the clock 308 can provide day, date, year, time, and alarm functions, and can allow the device 300 to provide an alarm or alert at pre-set times. [0043] An expansion port 320 can be included to provide a connection for additional accessories or devices. The expansion port 320 provides for future expansion, as well as flexibility to add options or enhancements. For example, the expansion port 320 can be used to add peripherals, sensors, processing hardware, storage, displays, or actuators to a basic self- propelled device 300. As such, the expansion port 320 can provide an interface capable of communicating with a suitably configured component using analog or digital signals. Additionally, the expansion port 320 can provide one or more electrical interfaces and/or protocols that are standard or well-known. The expansion port 320 can also implement an optical interface. Example interfaces that for the expansion port 320 include Universal Serial Bus (USB), Inter-Integrated Circuit Bus (I2C), Serial Peripheral Interface (SPI), or ETHERNET.

[0044] As an addition or alternative, a display 318 can be included to present visual cues or information to external devices or persons. For example, the display 318 can produce light in colors and patterns, and may be implemented in conjunction with an audio device and/or a vibrating component providing haptic responses to various conditions. The display 318 can further operate in conjunction with motors 326 to communication information by physical movements of the device 300.

[0045] In variations, the display 318 is a light emitting element, either in the visible or invisible range. Invisible light in the infrared or ultraviolet range may be useful, for example, to send information invisible to human senses but available to specialized detectors. Alternatively, the display 318 can include an array of LEDs and emit various frequencies of visible light, and can be arranged such that their relative intensity can vary and the light emitted may be blended to form color mixtures. As an addition or alternative, the display 318 includes an LED array comprising several LEDs. The processor 314 can be configured to vary the relative intensity of each of the LEDs or LED arrays to produce a wide range of colors. Primary colors of light can be emitted by each LED array and can be blended qualitatively to produce a wide gamut of apparent colors. For example, respective red, green, and blue LEDs comprise a usable set of three available primary-color devices comprising the display 318. However, other sets of colors and white LEDs can be utilized. Further, the display 318 can include an LED used to indicate a reference point on device 300 for alignment.

[0046] One or more power units 324 store energy for operating the electronics and electromechanical components of the device 300. The power units 324 can be comprised of one or more rechargeable lithium ion batteries. However, any type of energy storage units may be suitable for use as the power units 324, including alkaline, dry cell, aluminum ion, nickel oxyhydroxide, silver oxide, zinc, lead-acid, polymer-based, nickel iron, or nickel zinc batteries. Furthermore, a charge port 328 (e.g ., inductive or USB) can be included to allow for recharging the power units 324 without a wired electrical connection. As such, the charge port 328 can recharge the power units 324 through an induction coil in the device 300 via an

externally generated electromagnetic field of an induction charger.

[0047] In some variations, device 300 may further include a deep sleep sensor 322 to place the self-propelled device 300 into a very low power or "deep sleep" mode where most of the interior electrical components use little or no battery power. The deep sleep sensor 322 can sense through the body of the device 300 without a wired connection, and as such may be provided as a Hall Effect sensor mounted so that an external magnet can be applied at a pre-determined location on device 300 to activate the deep sleep mode. Additionally or as an alternative, the device 300 is placed in the deep sleep mode automatically upon placement on an induction charger, or otherwise upon activation of the charge port 328. Further still, the device can be placed in the deep sleep mode via a user input through an external computing device.

[0048] As an alternative or variation, a Bluetooth Low Energy

mechanism can be utilized to maintain a low current draw that is responsive to a wireless signal . Such a variation can, for example, provide an

alternative to the deep sleep mode.

[0049] Motors 326 are included to convert electrical energy from the power units 324 into mechanical energy and can be controlled by the processor 314. For example, the motors 326 can be in the form of the left and right motors (104, 106, 202, 204) of FIGS. 1 and 2. The primary purpose of the motors 326 is to activate the drive system in order to propel and steer the self-propelled device 300. However, the motors 326 also provide weight to the drive system and hang below the carrier to lower the center of mass of the self-propelled device. As such, the motors 326 can activate the drive system, the body, and/or other interior components of the self-propelled device to pitch rotationally, displacing the center of mass and causing the device 300 to move. Furthermore, the motors 326 can be variable-speed motors and apply power independently to each of the wheels through a reduction gear system. Each of the wheels can be mounted to an axle connected to a respective variable speed motor. As such, the delivered power of the motors can be controlled by the processor 314 to maneuver the device in any given direction.

[0050] Furthermore, the motors 326 can produce a variety of

movements in addition to merely rotating and steering the device 300. Thus, control logic stored in the program memory 304 can implement the processor to actuate the motors 326 to cause the device 300 to execute a variety of complex movements and gestures, including nodding, shaking, trembling, spinning, or flipping. As such, the processor 314 can coordinate the motors 326 with the display 318 in order to provide visual association for such movements and gestures. For example, the processor 314 can provide signals to the motors 326 and the display 318 to cause the device 300 to spin or tremble and simultaneously emit patterns of colored light synchronized with the movements.

[0051] The self-propelled device 300 may be used as a controller for other network-connected devices. As such, the device 300 can include sensors and/or wireless communication capabilities to perform a controller role for other devices. For example, self-propelled device 300 can be held in a user's hand and used to sense gestures, movements, rotations, combination inputs and the like. OPERATION AND COMMUNICATION LINKS

[0052] FIG. 4A is a schematic depiction of an embodiment comprising a self-propelled device 414 and a computing device 408 under control of a user 402. More specifically, the self-propelled device 414 can be controlled in its movement by programming logic and/or controls that can originate from the computing device 408. The computing device 408 can wirelessly communicate control data to the self-propelled device 414 using a standard or proprietary wireless communication protocol . In variations, the self- propelled device 414 may be at least partially self-controlled, utilizing sensors and internal programming logic to control the parameters of its movement (e.g ., velocity, direction, etc.). Still further, the self-propelled device 414 can communicate data relating to the device's position and/or movement parameters for the purpose of generating or alternating content on the computing device 408. In additional variations, the self-propelled device 414 can control aspects of the computing device 408 by way of its movements and/or internal programming logic.

[0053] As described herein, the self-propelled device 414 can have multiple modes of operation, including those of operation in which the device is controlled by the computing device 408, is a controller for another device (e.g., another self-propelled device or the computing device 408), and/or is partially or wholly self-autonomous.

[0054] Additionally, the self-propelled device 414 and the computing device 408 may share a computing platform on which programming logic is shared in order to enable, among other features, functionality that includes: (i) enabling the user 402 to operate the computing device 408 to generate multiple types of inputs, including simple directional input, command input, gesture input, motion or other sensory input, voice input or combinations thereof; (ii) enabling the self-propelled device 414 to interpret inputs received from the computing device 408 as a command or set of

commands; and/or (iii) enabling the self-propelled device 414 to

communicate data regarding that device's position, movement and/or state in order to effect a state on the computing device 408 (e.g., display state, such as content corresponding to a controller-user interface). Additionally or as an alternative, the self-propelled device 414 can further include a programmatic interface that facilitates additional programming logic and/or instructions to use the device. The computing device 408 can further execute programming that is communicative with the programming logic on the self-propelled device 414.

[0055] Additionally, the self-propelled device 414 can include an actuator or drive mechanism causing motion or directional movement. The self- propelled device 414 can be referred to by a number of related terms and phrases, including controlled device, robot, robotic device, remote device, autonomous device, and remote-controlled device. Furthermore, the self- propelled device 414 can be structured to move and be controlled in various media. For example, the self-propelled device 414 can be configured for movement in media such as on flat surfaces, sandy surfaces rocky surfaces, etc..

[0056] The self-propelled device 414 can be implemented in various forms. As described above with respect to FIGS. 1 and 2, the self-propelled device 414 can correspond to a tube-shaped object that can roll and/or perform other movements such as spinning . In variations, the device 414 can correspond to a radio-controlled aircraft, such as an airplane,

helicopter, hovercraft or balloon. In other variations, the device 414 can correspond to a radio controlled watercraft, such as a boat or submarine. Numerous other variations may also be implemented, such as those in which the device 414 is a robot. Further still, the device 414 can include a sealed hollow body, roughly cylindrical in shape, and capable of directional movement by action of actuators or motors inside the enclosed body.

[0057] Continuing to refer to FIG. 4A, the device 414 can be configured to communicate with the computing device 408 using network

communication links 410 and 412. For example, link 410 transfers data from the computing device 408 to the self-propelled device 414.

Furthermore, link 412 transfers data from the self-propelled device 414 to the computing device 408. Links 410 and 412 are shown as separate unidirectional links for illustrative purposes, however, a single bi-directional communication link can be utilized to perform communication in both directions. Furthermore, links 410 and 412 are not necessarily identical in type, bandwidth or capability. For example, the communication link 410 from the computing device 408 to the self-propelled device 414 can be capable of a higher communication rate and bandwidth compared to the link 412 from the self-propelled device 414 to the computing device 408. In some situations, only one unidirectional link can be established between the computing device 408 and the self-propelled device 414 such that the self- propelled device 414 is capable of being controlled via the computing device 408.

[0058] The computing device 408 can correspond to any device comprising at least a processor and communication capability suitable for establishing at least unidirectional communications with the self-propelled device 414. Examples of such devices include, without limitation : mobile computing devices (e.g., multifunctional messaging/voice communication devices such as smart phones), tablet computers, portable communication devices and personal computers. Thus, the computing device 408 may be an IPHONE available from APPLE COMPUTER, INC. of Cupertino, California. Alternatively, the computing device 408 may be an IPAD tablet computer, also from APPLE COMPUTER. Alternatively, the computing device 408 may be any of a variety of handheld computing devices and communication appliances executing an ANDROID operating system from GOOGLE, INC. of Mountain View, California.

[0059] Alternatively, the computing device 408 may be a personal computer, in either a laptop or desktop configuration. For example, the computing device 408 may be a multi-purpose computing platform running a MICROSOFT WINDOWS operating system, or a LINUX operating system, or an APPLE operating system, configured with an appropriate application program to communicate with the self-propelled device 414 . However, in variations, the computing device 408 can be a specialized device, dedicated for enabling the user 402 to control and interact with the self-propelled device 414.

[0060] Additionally or as an alternative, multiple types of computing devices can be used interchangeably to communicate with the self-propelled device 414. Thus, the self-propelled device 414 may be capable of communicating and/or being controlled by multiple devices (concurrently or one at a time). For example, the self-propelled device 414 can link with an IPHONE in one session and with an ANDROID device in a later session, without modification of the self-propelled device 414.

[0061] Accordingly, the user 402 can interact with the self-propelled device 414 via the computing device 408 in order to control the self- propelled device 414 and/or to receive feedback or interaction on the computing device 408 from the self-propelled device 414. Furthermore, the user 402 may be enabled to specify input 404 through various mechanisms that are provided with the computing device 408. Examples of such inputs include text entry, voice command, touching a sensing surface or screen of the computing device 408, physical manipulations, gestures, taps, shaking and combinations of the above. Additionally or alternatively, the input 404 is made via an application specific to controlling the self-propelled device 414. Such an application can provide a graphical interface that allows for powering and steering the self-propelled device 414.

[0062] Further still, the user 402 can interact with the computing device 408 in order to receive feedback 406. The feedback 406 can be generated on the computing device 408 in response to the user input 404. As an addition or alternative, the feedback 406 can also be based on data communicated from the self-propelled device 414 to the computing device 408, regarding, for example, the self-propelled device's 414 position or state. Without limitation, examples of feedback 406 include text display, graphical display, sound, music, tonal patterns, modulation of color and/or intensity of light, haptic, vibrational, and/or tactile stimulation. The feedback 406 can be combined or otherwise synchronized with input that is generated on the computing device 408. For example, the computing device 408 may output content that is modified to reflect position or state information communicated from the self-propelled device 414.

[0063] In some embodiments, the computing device 408 and/or the self- propelled device 414 can be configured such that the user input 404 and the feedback 406 can maximize usability and accessibility for the user 402, who may have limited sensing, thinking, perception, motor skills, or other limited abilities. This can allow users with handicaps or special needs to operate within the system 400 as described .

[0064] Example configurations described and illustrated in FIG. 4A are only a few of many possible configurations of networks including a self- propelled device 414 with wireless communication capability. Furthermore, while numerous embodiments described herein provide for the user 402 to operate or otherwise directly interface with the computing device 408 in order to control and/or interact with the self-propelled device 414, variations to embodiments described encompass enabling the user 402 to directly control or interact with the self-propelled device 414 without the use of an intermediary device such as the computing device 408.

[0065] FIG. 4B depicts a system 418 comprising a plurality of computing devices (420, 428) and self-propelled devices (424, 432, 436, 438). In the examples provided by FIG. 4B, system 418 includes a first computing device 420, a second computing device 428, four self-propelled devices 424, 432, 436, and 438, and communication links 422, 426, 430, 434 and 439. The communication of the first computing device 420 with the self-propelled device 424 using the link 422 is similar to the embodiment depicted in the system 400 of FIG. 4A. However, additional communication can be established between the two computing devices 420, 428 via the network link 426.

[0066] Further, the first and second computing devices 420, 428 can optionally control more than one self-propelled device. Further still, each self-propelled device 424, 432, 436, 438 can be controlled by more than one computing device 420, 428. For example, the second computing device 428 can establish multiple communications links, including with the self- propelled devices 432 and 436, and the first computing device 420.

[0067] In variations, the first and second computing devices 420, 428 can also communicate with one or more self-propelled devices using a network such as the Internet, or a local wireless network (e.g ., a home network). For example, the second computing device 428 is shown to have a communications link 439, which can connect the seconding computing device 428 to an Internet server, a web site, or to another computing device at a remote location. As such, the second computing device 428 can serve as an intermediary between the network source and one or more self- propelled devices. For example, the second computing device 428 can access programming from the Internet and communicate that programming to one of the self-propelled devices.

[0068] As an alternative or variation, the computing device 428 can enable a network user to control the second computing device 428 in controlling one or more of the self-propelled devices 432, 436, etc. Still further, the computing device 428 can access the network source in order to receive programmatically triggered commands, such as a command initiated from a network service that causes one or more of the self-propelled devices to update or synchronize using the computing device 428. For example, the self-propelled device 432 can include image capturing resources, and a network source can trigger the computing device 428 to access the images from the self-propelled device, and/or to communicate those images to the network source over the Internet.

[0069] In variations, such remote network functionality can alternatively be communicated directly from a network source to the self-propelled devices 424, 432, 436. Thus, the first and second computing devices 420, 428 may be optional . Alternatively, the first and second computing devices 420, 428 may be separated from the self-propelled devices 424, 432, 436 by a network such as the Internet. Thus, the computing devices 420, 428 can alternatively be the network sources that remotely control and/or communicate with the self-propelled devices.

[0070] Data communication links depicted in FIGS. 4A, 4B, and 4C are shown as short and direct for purposes of illustration. However, actual links may be much more varied and complex. For example, link 426 connecting the two computing devices 420, 428 can be a low-power wireless link if the computing devices 420 and 428 are in close proximity. However, the computing devices 420, 428 can be spaced a great distance apart (e.g ., separated by miles or geographic barriers) so long as suitable network communication can be established. Thus, the link 426, and all other links 422, 430, 434, and 439 can employ a variety of network technologies, including the Internet, World Wide Web, wireless links, wireless radio- frequency communications utilizing network protocol, optical links, or any available network communication technology. The final connection to self- propelled devices 424, 432, 436 and 438 may also be wireless so

connecting wires do not restrict mobility.

[0071] For example, the communication links 422, 426, 430 and 434 may be based on the BLUETOOTH wireless communication standard.

BLUETOOTH is widely available and provides a flexible communication platform for establishing data networks using short-wavelength radio transceivers and data encoding . Furthermore, BLUETOOTH incorporates security features to protect the data sent on the links from unauthorized observers or interference. Alternative wireless communication medium may also be employed, such as wireless USB, Wi-Fi, or proprietary wireless communications. Furthermore, one or more of the communication links 422, 426, 430 and 434 may utilize short-range radiofrequency (RF) communication, and/or line-of-sight communications.

[0072] Additionally or alternatively, the communication links may be based on other wireless communication systems, such as Wi-Fi, IEEE

802.11a, 802.11b, 802. l lg, 802.11η, 802.11ac, 802. Had, and/or

802. Hah standards. However, other radio frequency data links may be created using other cellular telephone service or serial communication protocols using radio modems. Alternatively, optical communication links may be employed, including modulating properties of light and LASER beams. Further, any suitable communication technology can be used to form the network links, whether presently known or available in the future. As such, the features described herein are not dependent on any particular networking technology or standard .

[0073] Further still, the communication established amongst the devices, such as amongst the computing devices 420, 428 and/or the self-propelled devices 424, 432, 436, can be temporary, flexible, and/or reconfigurable. A resulting network of such devices can be considered an "ad-hoc" network, or alternatively a "piconet" or "personal area network." In this respect, some implementations provide that the computing device's 420, 428 and the self-propelled devices 424, 432, 436 can be considered nodes of the network, such as an ad-hoc network. In such configurations, network components, topology and communications paths are flexible and can be readily adjusted to accommodate addition or removal of devices, changing communication requirements or channel interference. For example, the self-propelled device 438 in FIG. 4B is shown with no present network connection. However, the self-propelled device 438 may have connected to the network 418 in the past and received instructions to enable it to operate without a persistent network link.

[0074] FIG. 4C is a schematic that illustrates a system 468 comprising a computing device 440 and multiple self-propelled devices 444, 450, 454. The computing device 440 can be operable to communicate with one or more self-propelled devices 444, 450, 454. The computing device 440 can communicate commands or other control data, and receive feedback similar to variations described above. The self-propelled devices 444, 450, 454 can be configured to communicate and/or be controlled by the computing device 440. Additionally, the self-propelled devices 444, 450, 454 can be configured to communicate and/or control one another.

[0075] In examples shown by FIG. 4C, the computing device 440 can communicate with a primary self-propelled device 444 using

communications link 442. The primary self-propelled device 444 can then communicate with another self-propelled device 450 using a separate link 446 and with a third self-propelled device 454 using another separate link 448. Also, the self-propelled devices 450, 454 can communicate with each other using the communication link 452. The computing device 450 can send data to any of the other self-propelled devices 450, 454, using the primary self-propelled device 444 as a relay. Alternatively, the computing device 440 can communicate with the other self-propelled devices 450, 454 directly.

[0076] The system 468 can include various configurations. For example, a user can operate the computing device 440 to control the primary self- propelled device 444. Movement of the primary self-propelled device 444 can be communicated both to the computing device 440 and to one or more of the other self-propelled devices 450, 454. Each of the self-propelled devices can be preprogrammed to react in a specific manner based on state or position information communicated from another one of the self- propelled devices. For example, the self-propelled devices 450, 454 can each be operated in a repel mode, so that the movement of the primary self-propelled device 444 (as controlled from the computing device 440) results in a repel motion by the other self-propelled device 450. In other variations, the self-propelled devices 444, 450, 454 may be preprogrammed to maintain a specific distance apart from one another, so that movement by one device automatically causes movement by the other two devices. Still further, the self-propelled devices 444, 450, 454 may be configured so as to perform a variety of activities, such as, for example, (i) one self- propelled device automatically moving when another approaches a threshold distance; (ii) one self-propelled device programmatically moving to bump another self-propelled device; (iii) the self-propelled devices automatically moving in tandem based on input received by each of the self-propelled devices from the other self-propelled devices or from the computing device 440, and/or variations thereof.

[0077] The various systems 400, 418, 468 are for illustrative purposes. With any of the systems described, variations include the addition of more or fewer computing devices, and/or more or fewer self-propelled devices. As described with some variations, additional sources or nodes can be provided from a remote network source. Additionally, in some operational environments, the presence of the computing device is optional. For example, the self-propelled devices can be partially or completely

autonomous, using programming logic to function.

[0078] FIG. 5 illustrates a mechanism for moving the self-propelled device 500. As illustrated in FIG. 5, the cylindrical self-propelled device 500 is shown from a side perspective along a center of rotation 502, or along an axis corresponding to the wheel axles. As further illustrated in FIG. 5, the self-propelled device 500 has an "at rest" center of mass 506 that is below the center of rotation 502, with the outer circumferences of the wheels or tires 510 in contact with a surface 512. The drive mechanism for the self- propelled device 500 can include two independently-controlled motors 508 (second motor not shown), each providing power to a respective wheel. Several components of device 500 are not shown in FIG. 5 for simplicity of illustration.

[0079] The cylindrical self-propelled device 500 can move linearly forward by essentially displacing the at rest center of mass 506 (first point) to the "actual" center of mass 514 (second point) by pitching the entire drive system 518 and/or the other interior components of the self-propelled device 500 forward and upward relative to center of rotation 502 by action of the motors 508. For example, the motors 508 can actuate in conjunction to pitch the drive system 518 forward and upward such that the center of mass is displaced from the first point 506 to the second point 514. Such displacement of the center of mass causes the self-propelled device 500 to roll forward in the direction of movement 516. For practical purposes, the angle of pitch can be any angle between 0-90 degrees, although angles higher than 90 degrees may result from rapid acceleration of the self- propelled device 500.

[0080] Actuation of the motors 508 allowing for rotational pitch of the drive system 518 may be achieved in any number of ways. For example, a mass of the wheels, tires 510, and hub covers collectively may be greater than a mass of the body and interior components of the self-propelled device 500. This causes rotation of the body and interior components initially, which in turn causes the center of mass to be displaced, allowing the self-propelled device 500 to "fall" towards the displaced center of mass. A weight ratio between the wheels and the interior components may be substantially equivalent, between 1 : 1 and 2 : 1. However, any suitable weight ratio between the wheels and interior components can be utilized to drive the self-propelled device 500 in the above manner.

[0081] Referring still to FIG. 5, motion of the self-propelled device 500 can be visualized in simple a vector diagram 520. The vector diagram 520 illustrates a simplified view of the forces acting on the self-propelled device 500 as the drive system 518 is rotationally pitched . At rest, the center of mass is located at crrii with only the force of gravity (F g0 ) acting on the device 500. When power is applied by the motors 508 in conjunction, the drive system 518 is pitched at an angle Θ, displacing the center of mass from crrii to cm 2 . Given that the F g vector has a constant direction, a net force acting on the self-propelled device (F ne t) can be visualized in the direction from the axis of rotation to cm 2 (as shown) with a value equal to Fg 0 . As shown in the vector diagram 520, a net gravitational force acting on the device 500 can be visualized as F g i, leaving only a lateral force (F x ) acting on the self-propelled device 500 in the direction of movement 516.

[0082] FIGS. 6A and 6B illustrate examples for causing directional change of the self-propelled device viewed from above. Referring to FIG. 6A, the cylindrical self-propelled device 600 can initially be at rest or moving linearly. With respect to linear motion, the right and left motors 602, 604 may act on the wheels 606, 608 in conjunction. As viewed from above, a control on the self-propelled device 600 to turn left, for example, may be processed via programmatic commands to add more power to the right motor 602 in relation to the left motor 604, causing the self-propelled device 600 to turn left. Alternatively, the programmatic commands may instruct the left motor 604 to reduce power relative to the right motor 602, also causing the self-propelled device 600 to turn left.

[0083] Similarly, FIG. 6B illustrates a similar process for causing directional change of the self-propelled device 610. In examples of FIG. 6B, the cylindrical self-propelled device 610 may also initially be at rest or moving linearly. With respect to linear motion, the left and right motors 612, 614 can act on the wheels 616, 618 in conjunction. As viewed from above, a control on the self-propelled device 610 to turn right, for example, can also be processed via programmatic commands to add more power to the left motor 612 in relation to the right motor 614, causing the self- propelled device 610 to turn right. Alternatively, the programmatic commands can instruct the right motor 614 to reduce power relative to the left motor 612, also causing the self-propelled device 610 to turn left.

[0084] FIGS. 7A and 7B illustrate examples of self-propelled devices 700, 710 with attached example accessories. The self-propelled devices 700, 710 are cylindrical in shape and at least substantially the same as those discussed above. As shown in FIG. 7A, the cylindrical self-propelled device 700 can include a fastening means 702 such as a clasp or other suitable fastener to attach any number of accessories. The example of FIG. 7A shows an illuminating element 704, such as a headlamp, fastened to the body of the self-propelled device 700. The example of FIG. 7B shows a trailer 714 being towed behind the self-propelled device 710. In such examples, the fastening means 712 can be more complex and involve any number of components allowing for proper attachment of a variety of accessories.

CONCLUSION

[0085] It is contemplated for embodiments described herein to extend to individual elements and concepts described herein, independently of other concepts, ideas or system, as well as for embodiments to include

combinations of elements recited anywhere in this application. Although embodiments are described in detail herein with reference to the

accompanying drawings, it is to be understood that this disclosure is not limited to those precise embodiments. As such, many modifications and variations will be apparent to practitioners skilled in this art. Accordingly, it is intended that the scope of this disclosure be defined by the following claims and their equivalents. Furthermore, it is contemplated that a particular feature described either individually or as part of an embodiment can be combined with other individually described features, or parts of other embodiments, even if the other features and embodiments make no mentioned of the particular feature. Thus, the absence of describing combinations should not preclude the inventor from claiming rights to such combinations.

[0086] One or more embodiments described herein provide that methods, techniques and actions performed by a computing device are performed programmatically, or as a computer-implemented method .

Programmatically means through the use of code, or computer-executable instructions. A programmatically performed step may or may not be automatic. [0087] One or more embodiments described herein may be implemented using programmatic modules or components. A programmatic module or component may include a program, a subroutine, a portion of a program, or a software component or a hardware component capable of performing one or more stated tasks or functions. As used herein, a module or component can exist on a hardware component independently of other modules or components. Alternatively, a module or component can be a shared element or process of other modules, programs or machines.

[0088] Furthermore, one or more embodiments described herein may be implemented through the use of instructions that are executable by one or more processors. These instructions may be carried on a computer- readable medium. Machines shown or described with FIGs below provide examples of processing resources and computer-readable mediums on which instructions for implementing embodiments can be carried and/or executed . In particular, the numerous machines shown with embodiments include processor(s) and various forms of memory for holding data and instructions. Examples of computer-readable mediums include permanent memory storage devices, such as hard drives on personal computers or servers. Other examples of computer storage mediums include portable storage units (such as CD or DVD units), flash memory (such as carried on many cell phones and tablets)), and magnetic memory. Computers, terminals, network enabled devices (e.g ., mobile devices such as cell phones) are all examples of machines and devices that utilize processors, memory and instructions stored on computer-readable mediums.

Additionally, embodiments may be implemented in the form of computer- programs, or a computer usable carrier medium capable of carrying such a program.

[0089] Although illustrative embodiments have been described in detail herein with reference to the accompanying drawings, variations to specific embodiments and details are encompassed by this disclosure. It is intended that the scope of the invention is defined by the following claims and their equivalents. Furthermore, it is contemplated that a particular feature described, either individually or as part of an embodiment, can be combined with other individually described features, or parts of other embodiments. Thus, absence of describing combinations should not preclude the inventor(s) from claiming rights to such combinations.

[0090] While certain embodiments have been described above, it will be understood that the embodiments described are by way of example only. Accordingly, this disclosure should not be limited based on the described embodiments. Rather, the scope of the disclosure should only be limited in light of the claims that follow when taken in conjunction with the above description and accompanying drawings.