This disclosure relates to autonomous coverage robots for cleaning floors or other surfaces.
Autonomous robots are robots which can perform desired tasks in unstructured environments without continuous human guidance. Many kinds of robots are autonomous to some degree. Different robots can be autonomous in different ways. An autonomous coverage robot traverses a work surface without continuous human guidance to perform one or more tasks. In the field of home, office and/or consumer-oriented robotics, mobile robots that perform household functions such as vacuum cleaning, floor washing, patrolling, lawn cutting and other such tasks have been widely adopted.
Mobile robots for cleaning floors have been described in, for example, U.S. Pat. No. 6,883,201 to JONES et al. (“JONES”), which discloses an autonomous floor-cleaning robot that traverses a floor while removing debris using rotating brushes, vacuums, or other cleaning mechanisms. JONES further describes a robot having a generally round form factor supported by three wheels, which can rotate freely to maneuver around obstacles, inter alia.
Presently disclosed is a compact mobile robot for cleaning floors, countertops, and other related surfaces, such as tile, hardwood or carpeted flooring. The robot has a rectangular front form factor that facilitates cleaning along wall edges or in corners. In one example, the robot includes both a rounded section and a rectangular section, in which a cleaning mechanism within the rectangular section is disposed proximally to opposite side corners of the rectangular section. As an advantage, the robot can maneuver so as to bring the rectangular section flush with a wall corner or wall edge, with the cleaning mechanism extending into the wall corner or wall edge.
In one aspect, an autonomous coverage robot includes a chassis having forward and rearward portions and a drive system carried by the chassis. The forward portion of the chassis defines a substantially rectangular shape. The robot includes a cleaning assembly mounted on the forward portion of the chassis and a bin disposed adjacent the cleaning assembly. The bin is configured to receive debris agitated by the cleaning assembly. A bin cover is pivotally attached to a lower portion of the chassis and configured to rotate between a first, closed position providing closure of an opening defined by the bin and a second, open position providing access to the bin opening. The robot includes a body attached to the chassis and a handle disposed on an upper portion of the body. A bin cover release is configured to control movement of the bin cover between its first and second positions. The bin cover release is actuatable from substantially near the handle.
Implementations of this aspect of the disclosure may include one or more of the following features. In some implementations, the bin cover release is configured to move between a first, locking position which locks the bin cover in its first, closed position and a second, disengaged position which allows the bin cover to move to its second, open position. The bin cover release may be a spring biased latch. In some examples, the bin cover release includes a button disposed on the handle configured to actuate the latch, thereby allowing actuation of the bin cover release while holding the handle. In some implementations, the drive system includes right and left differentially driven drive wheels rotatably mounted to the rearward portion of the chassis. The drive system is capable of maneuvering the robot to pivot in place.
In another aspect, an autonomous coverage robot includes a chassis having forward and rearward portions, and a drive system carried by the rearward portion of the chassis. The drive system is configured to maneuver the robot over a cleaning surface. The robot includes a controller in communication with the drive system. The controller is configured to maneuver the robot to pivot in place. The robot includes a cleaning assembly mounted on the forward portion of the chassis. The robot includes a bump sensor in communication with the controller which is configured to detect movement in multiple directions. A body is flexibly attached to the chassis and substantially covers the chassis. Contact with the body is translated to the bump sensor for detection. The controller is configured to alter a drive direction of the robot in response to a signal received from the bump sensor. The bump sensor includes a sensor base, a sensor shroud positioned adjacent the sensor base and connected to the body, an emitter housed by the sensor shroud, and at least three detectors carried by the sensor base. The emitter emits a signal onto the sensor base, and the detectors are configured to detect the emitted signal. Movement of the sensor shroud causes movement of the emitted signal over the detectors. In some implementations, the robot includes a bin disposed adjacent the cleaning assembly and configured to receive debris agitated by the cleaning assembly.
Implementations of this aspect of the disclosure may include one or more of the following features. In some implementations, the bump sensor detects 360 degrees of movement of the body about the bump sensor. Preferably, the bump sensor includes four detectors arranged in a rectangular configuration with respect to each other. The sensor shroud defines an orifice through which the emitter emits its signal onto the sensor base. The emitter comprises an infrared light emitter and the detectors comprise infrared light detectors, the orifice collimating the emitted signal onto the sensor base. In some examples, the robot includes a bumper guide configured to confine body movements to along two directions. The bumper guide may include two orthogonal grooves defined by the body and configured to receive a guide pin disposed on the chassis. The forward portion defines a substantially rectangular shape, in some examples. The drive system, in some examples, includes right and left drive wheels differentially driven by corresponding right and left motors.
In yet another aspect, an autonomous coverage robot includes a chassis having forward and rearward portions, and a drive system carried by the rearward portion of the chassis. The forward portion defines a substantially rectangular shape and the rearward portion of the chassis defines an arcuate shape. The drive system is configured to maneuver the robot over a cleaning surface and includes right and left drive wheels differentially driven by corresponding right and left motors. The robot includes a controller in communication with the drive system. The controller is configured to maneuver the robot to pivot in place. The robot includes a cleaning assembly mounted on the forward portion of the chassis. The robot includes an accelerometer in communication with the controller, which controls the drive system in response to a signal received from the accelerometer. In some implementations, the robot includes a bin disposed adjacent the cleaning assembly and configured to receive debris agitated by the cleaning assembly.
Implementations of this aspect of the disclosure may include one or more of the following features. In some implementations, the controller alters a drive direction of the robot in response to a signal received from the accelerometer indicating an abrupt speed change. The controller alters a drive direction of the robot in response to a signal received from the accelerometer indicating stasis of the robot. The controller reduces a drive speed of the robot in response to a signal received from the accelerometer indicating a maximum speed. In some examples, the maximum speed is between about 200 mm/s and about 400 mm/s.
Implementations of the above aspects of the disclosure may include one or more of the following features. In some implementations, the cleaning assembly includes a first roller brush rotatably mounted substantially near a front edge of the chassis. The cleaning assembly may include a second roller brush rotatably mounted substantially parallel to and rearward of the first roller brush, the first and second roller brushes rotate in opposite directions. The bin is disposed rearward of the first and second roller brushes and forward of the drive system. Each roller brush includes right and left end brushes extending from respective ends of the roller brush beyond a lateral extend of the body, each end brush extending at angle ϕ of between 0° and about 90° from a longitudinal axis defined by the roller brush. In other implementations, the cleaning assembly includes a front roller brush rotatably mounted substantially near the front edge of the chassis, and right and left side roller brushes rotatably mounted orthogonal to the front brush substantially near the respective right and left side edges of the chassis. The bin is disposed rearward of the front roller brush and substantially between the right and left side roller brushes and forward of the drive system.
In another aspect, an autonomous coverage robot includes a chassis having forward and rearward portions, and a drive system carried by the rearward portion of the chassis. The forward portion defines a substantially rectangular shape and the rearward portion defines an arcuate shape. The drive system is configured to maneuver the robot over a cleaning surface and includes right and left drive wheels differentially driven by corresponding right and left motors. The robot includes a controller in communication with the drive system. The controller is configured to maneuver the robot to pivot in place. The robot includes a cleaning assembly mounted on the forward portion of the chassis and includes a first roller brush rotatably mounted substantially near a front edge of the chassis and a second roller brush rotatably mounted substantially parallel to and rearward of the first roller brush. The first and second roller brushes rotate in opposite directions. A bin is disposed rearward of the cleaning assembly and is configured to receive debris agitated by the cleaning assembly. A bin cover is pivotally attached to a lower portion of the chassis and is configured to rotate between a first, closed position providing closure of an opening defined by the bin and a second, open position providing access to the bin opening. The robot includes a bin cover release configured to control movement of the bin cover between its first and second positions. A handle is disposed on the chassis. The bin cover release is actuatable from substantially near the handle. A body is flexibly attached to the chassis and substantially covers the chassis. The body is movable in relation to the handle and the chassis. The robot includes a bump sensor in communication with the controller and configured to detect movement in multiple directions. Contact with the body is translated to the bump sensor for detection. The controller is configured to alter a drive direction of the robot in response to a signal received from the bump sensor.
Implementations of this aspect of the disclosure may include one or more of the following features. In some implementations, the bump sensor includes a sensor base, a sensor shroud positioned adjacent the sensor base and connected to the body, an emitter housed by the sensor shroud, and at least three detectors carried by the sensor base. The emitter emits a signal onto the sensor base and the detectors detect the emitted signal. Movement of the sensor shroud causes movement of the emitted signal over the detectors.
In some implementations, the robot includes a bumper guide configured to confine body movements to along two directions. The bumper guide may include two orthogonal grooves defined by the body and configured to receive a guide pin disposed on the chassis.
The robot may include an idler wheel disposed on the bin cover. In some examples, the rearward portion of the chassis defines a substantially semi-circular shape and the idler wheel is position at least ⅓ the radius of the substantially semi-circular shaped rearward portion forward of the drive wheels.
In specific examples, the drive wheels are disposed less than 9 cm rearward of the cleaning assembly. The robot may include a power source disposed in the rearward portion of the chassis substantially between the right and left wheels. The power source is disposed adjacent and rearward of the bin. The cleaning assembly further comprises a brush motor configured to drive the first and second roller brushes. In some examples, the brush motor is disposed substantially near a forward edge of the chassis. The first roller brush may be disposed substantially near a forward edge of the chassis.
Implementations of the disclosure may include one or more of the following features. In some implementations, the right and left drive wheels are rotatably mounted to the rearward portion of the chassis, and the drive system is capable of maneuvering the robot to pivot in place. Preferably, the rearward portion of the chassis defines an arcuate shape; however other shapes are possible as well, such as rectangular or polygonal. In some examples, the rearward portion of the chassis defines a substantially semi-circular shape and the axes of the right and left drive wheels are disposed on or rearward of a center axis defined by the rearward portion of the chassis. In some implementations, the chassis and the body together have a length of less than 23 cm and a width of less than 19 cm.
In some implementations, the robot includes at least one proximity sensor carried by a dominant side of the robot. The at least one proximity sensor responds to an obstacle substantially near the body. The controller alters a drive direction in response to a signal received from the at least one proximity sensor.
In some implementations, the robot includes at least one cliff sensor carried by a forward portion of the body and arranged substantially near a front edge of the body. The at least one cliff sensor responds to a potential cliff forward of the robot. The drive system alters a drive direction in response to a signal received from the cliff sensor indicating a potential cliff In some examples, right and left front cliff sensors are disposed at the respective right and left corners of a forward portion of the robot. This allows the robot to detect when a either of the front corners swing over a cliff edge, so as to avoid moving the drive wheels any closer to the cliff edge. In some implementations, the robot includes at least one cliff sensor carried by a rearward portion of the body and arranged substantially near the rear edge of the body. The at least one cliff sensor responds to a potential cliff rearward of the robot. The drive system alters a drive direction in response to a signal received from the cliff sensor indicating a potential cliff. In some examples, right and left rear cliff sensors are disposed directly rearward of the respective right and left drive wheels. This allow the robot to detect a cliff edge while driving in reverse at an angle or in an arc, in which the drive wheel may encounter the cliff edge before the rear center portion of the robot.
In some implementations, the robot includes an idler wheel disposed on the bin cover. Preferably, the rearward portion of the chassis defines a substantially semi-circular shape, which allows the robot to spin in place without catching any portion of the rearward portion of the chassis on a detected obstacle. The idler wheel is position at least ⅓ the radius of the substantially semi-circular shaped rearward portion forward of the drive wheels. In some examples, the idler wheel is a stasis detector including a magnet disposed in or on the idler wheel, and a magnet detector disposed adjacent the wheel for detecting the magnet as the idler wheel rotates.
In other more general aspects that are combinable with any of the above implementations, an autonomous coverage robot includes a chassis and a drive system carried by the chassis. The drive system is configured to maneuver the robot over a cleaning surface. In some examples, the drive system includes right and left differentially driven drive wheels; however other means of driving the robot are applicable as well, such as skid steer tracks. In some examples, the chassis has forward and rearward portions with the forward portion defining a substantially rectangular shape. Optionally, the rearward portion can define an arcuate shape.
In some implementations, the robot includes a cleaning assembly mounted on the forward portion of the chassis (e.g. substantially near a forward edge of the chassis). A bin is disposed adjacent the cleaning assembly and configured to receive debris agitated by the cleaning assembly. In some examples, a bin cover is pivotally attached to the robot and is configured to rotate between a first, closed position providing closure of an opening defined by the bin and a second, open position providing access to the bin opening. In other examples, the bin cover is slidably attached to the robot and slides between the first, closed position and the second, open position.
In some implementations, a body is attached to the chassis. The body may conform to the profile of the chassis. In some examples, the body is flexibly or movably attached to the chassis. The robot may include a handle for carrying the robot. The handle can be disposed on the body or on the chassis. If the handle is disposed on the chassis, the body is allowed to move in relation to the handle and/or the chassis. The robot may include a bin cover release configured to control movement of the bin cover between its first and second positions. Preferably, the bin cover release is actuatable from substantially near the handle. However, the bin cover release may be actuatable from substantially near or on the bin cover.
In some implementations, the robot includes a bump sensor, which may be configured to detect movement in multiple directions. In some examples, contact with the body is translated to the bump sensor for detection. The robot may include a controller configured to alter a drive direction of the robot in response to a signal received from the bump sensor. In some examples, the robot includes an accelerometer in communication with the controller, such that the controller controls the drive system in response to a signal received from the accelerometer.
The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Referring to
Referring to
Referring to
The advantage of the conventional cylindrical robot with drives wheels disposed on the diameter of the robot is that it is not hindered from turning in the presence of obstacles. This enables a simple and effective escape strategy—spin in place until no objects are detected forward of the robot. If the robot is non-cylindrical or the axes of wheel rotation are not on a diameter of the robot then the normal and tangential forces on the robot change as the robot rotates while in contact with an object. To ensure that such a non-conventional robot is able to escape an arbitrary collision, the forces and torques applied to the robot by the environmental cannot combine with the robot-generated forces and torques to halt robot motion. In practice this means that the robot shape should be constant width (to within the shell compliance distance) and that the robot's wheels be capable of lateral motion. Particular shapes then yield different requirements for maximum lateral wheel forces and maximum allowable environmental coefficient of friction. However, the robot 100 presently disclosed, in some examples, has a rectangular forward portion 210 to allow cleaning fully into corners.
Referring again to the example shown in
Referring to
Referring to
Preferably, the debris chamber/bin 610 is defined by, and thus formed integrally with, the chassis 200. In an alternative configuration, the robot 101 may include a modular, removable cartridge or bag serving as the debris chamber/bin 610, such that the user can remove the debris by removing and emptying the cartridge or bag. The cartridge or bag 610 is removably secured to the chassis 200.
A bin cover 620 is pivotally attached to a lower portion 203 of the chassis 200 and configured to rotate between a first, closed position providing closure of an opening 612 defined by the bin 610 and a second, open position providing access to the bin opening 610. In some examples, the bin cover 620 is releasably connected to the chassis 200 by one or more hinges 622. The bin assembly 600 includes a bin-cover release 630 configured to control movement of the bin cover 620 between its first and second positions. The bin-cover release 630 is configured to move between a first, locking position which locks the bin cover 620 in its first, closed position and a second, disengaged position which allows the bin cover 620 to move to its second, open position (see
The robot 100 includes a power source 160 (e.g., battery) in communication with the drive system 400 and/or the controller 450, and removably secured to the chassis 200. In the examples shown in
Referring to
The cliff sensors 710 may be used to sense when the robot 100 has encountered the edge of the floor or work surface, such as when it encounters a set of stairs. The robot 100 may have behaviors that cause it to take an action, such as changing its direction of travel, when an edge is detected. In the examples shown in
Robots defining shapes of constant width can turn in place about their centroid locus of the respective shape. A shape of constant width is a convex planar shape whose width, measured by the distance between two opposite parallel lines touching its boundary, is the same regardless of the direction of those two parallel lines. The width of the shape in a given direction is defined as the perpendicular distance between the parallels perpendicular to that direction. The Reuleaux triangle is the simplest example (after the circle) of shapes of constant width. However, in the examples shown, the robot 100 has a rectangular shaped forward portion 210 of the chassis 200, and thus not a robot of constant width, which can prevent the robot from spinning in place to escape from various stuck positions, such as with canyoning situations, inter alia. Canyoning situations arise when the robot 100 drives down a narrow corridor (with side walls) or plank (with side cliffs) that is slightly wider than the robot 100. When the robot 100 reaches the end of the corridor or plank it can only escape by driving in reverse back out of the corridor or off of the plank. If the robot 100 tries to spin in place (e.g., to rotate 180°)one of the robot's corners will hit a wall or go off a cliff In the case of cliffs, the placement of cliff sensors 710 substantially along a rearward edge 304 of the body 300 or a rearward edge 204 of the chassis 200 allows the robot 100 to backup intelligently to escape without backing off a cliff. Similarly, the bump sensor 800, which will be described below, detects reward bumps, allowing the robot 100 to back out of narrow corridors.
Referring to
Again due to the compact nature of the robot 100 and the compact positioning of components, the stasis wheel 722 acts as a third wheel for stable ground contact. If the stasis wheel 722 was placed forward of the cleaning assembly 500, it would need to be a caster wheel, rather than a directional wheel, which would drag in an arc when the robot 100 turns. However, the need for a rectangular forward portion 210 of the chassis 200, so as to fully clean in corners, prohibits placement of the stasis wheel 722 forward of the cleaning assembly 500 (e.g., which would result in a shape other than rectangular). A wheel is needed forward of the drive wheels 410, 420 to lift the forward portion 210 of the chassis 200 to an appropriate height for cleaning and brush rotation.
Referring to again
The examples shown in
Referring to
In a preferred implementation, as shown, the side of the robot 100 having the proximity sensor 730 is the dominant side of the robot 100, which in this case is the right-hand side relative to a primary direction of travel 105. In some examples, the wall proximity sensor 730 is an infrared light sensor composed of an emitter and detector pair collimated so that a finite volume of intersection occurs at the expected position of a wall. This focus point is approximately three inches ahead of the drive wheels 410, 420 in the direction of robot forward motion. The radial range of wall detection is about 0.75 inches. The proximity sensor 730 may be used to execute wall following behaviors, examples of which are described in U.S. Pat. No. 6,809,490, the entire contents of which is hereby incorporated by reference in its entirety.
In some implementation, the proximity sensor 730 includes an emitter and a detector disposed substantially parallel. The emitter has an emission field projected substantially parallel to a detection field of the detector. The proximity sensor 730 provides a signal to the controller 450, which determines a distance to a detected object (e.g., a wall). The proximity sensor 730 needs to be calibrated to accurately detect and allow the controller 450 to determine an object distance. To calibrate the proximity sensor 730 to the albedo (e.g., color or reflectivity) of an adjacent object, the robot 100 bumps into the object on its dominant side and records a reflection characteristic. In the example of an infrared emitter and detector, the controller 450 records a reflection intensity at the moment of contact with the object, which is assumed to be a wall. Based on the recorded reflection intensity at the known calibration distance between the edge of the body 300 and the proximity sensor 730, the controller 450 can determine a distance to the wall thereafter while driving alongside the wall. The controller 450 can implement servo control on the drive motors 412, 422 to drive at a certain distance from the wall, and hence wall follow. The robot 100 may periodically turn into the wall to side-bump the wall and re-calibrate the proximity sensor 730. If the proximity sensor 730 senses an absence of the wall, the robot 100 may decide to re-calibrate the proximity sensor 730 upon recognition of the wall again.
The robot 100 can actively wall follow on its dominant side by using the proximity sensor 730. The robot 100 can passively wall follow on its non-dominant side (or the dominant side if the proximity sensor 730 is not present or active). After bumping into an object (e.g., sensed by the bump sensor 800), the robot 100 can assume that the object is a wall and turn to follow the wall. The robot 100 may back-up before turning, so as to not catch a front corner of the body 300 on the object/wall, thus re-triggering the bump sensor 800 in a forward direction. After turning (e.g., about 90°), the robot 100 drives straight (e.g., along the wall) and slightly turns into the wall, so as to scrape along the wall. The robot 100 can sense that it's scraping along the wall by detecting a side-bump via the multi-directional bump sensor 800, which will be described below. The robot 100 can continue to passively wall follow until the bump sensor 800 no longer detects a side-bump on the current wall-following side of the robot 100 for a certain period of time.
The robot 100 can passively wall follow due in-part to its flat sides of the body 300 and the rear placement of the drive wheels 410, 420. The flat sides allow the robot 100 to scrape along the wall (e.g., substantially parallel to the wall). The positioning of the drive wheels 410, 420 in the rear portion 220 of the chassis 200 allows the robot 100 to swing its forward portion 210 of the chassis 200 into the wall, so as to scrape along the wall. Referring to
τ=rF(cosθ sinθ=μsin2θ)
Where μ is the coefficient of friction between the wall and the robot. Given a value for μ there is some critical angle θc where the torques are balanced. For θ<θc the first term to the right in the equation is larger and the robot tends to align with the wall. If θ>θc then the second term is larger and the robot 100 tends to turn into the wall.
Certain robot geometries, such as the tombstone shape of the robot disclosed can achieve useful values for θc. Note that the standard cylindrical geometry has θc=π/2 regardless of the robot's approach angle to the wall. Thus, passive wall following cannot be achieved with this configuration. To successfully passively wall follow, the offset between the natural axis of robot rotation and the contact point with the wall should be as far forward as possible when robot motion is aligned with the wall. Also, the maximum wall step height that allows passive recovery is an important consideration and is affected by robot shape.
In some examples, the robot 100 can semi-passively wall follow. The robot 100 wall follows on its dominant side, which has the side proximity sensor 730. After detecting an object, assumed to be a wall, by either the bump sensor 800 or the proximity sensor 730, the robot 100 turns to align the dominant side of the robot 100 with the assumed wall. The robot 100 then proceeds to drive along the wall while turning slightly into the wall so as to scrape along the wall. The robot 160 maintains contact with the wall by sensing contact with the wall via the bump sensor 800 or the proximity sensor 730 and the controller 450 implements servo control or the drive motors 412, 422 to drive accordingly along the wall.
In some examples, as shown in
The bump sensor 800 is used to determine when the robot 100 has physically encountered an object. Such sensors may use a physical property such as capacitance or physical displacement within the robot 100 to determine when it has encountered an obstacle. In some implementations, the bump sensor 800 includes contract sensors disposed about the periphery of the body 300. In preferred implementations, the bump sensor 800 is configured to detect movement of the body 300 over the chassis 200. Referring to
In the example shown in
In the examples shown in
The robot 100 has a forward drive direction and carries the omni-directional receiver 900 on an upper portion 305 of the body 300 above the forward portion 202 of the chassis 200.
The controller 450 may be configured to propel the robot 100 according to a heading setting and a speed setting. Signals received from the navigational sensor system 700 may be used by a control system to issue commands that deal with obstacles, such as changing the commanded speed or heading of the robot 100. For instance, a signal from the proximity sensor 730 due to a nearby wall may result in the control system issuing a command to slow down. In another instance, a collision signal from the bump sensor 800 due to an encounter with an obstacle may cause the control system to issue a command to change heading. In other instances, the speed setting of the robot 100 may be reduced in response to the contact sensor and/or the heading setting of the robot 100 may be altered in response to the proximity sensor 730.
The controller 450 may include a first independent behavioral routine configured to adjust the speed setting of the robot 100; and a second independent behavioral routine configured to alter the heading setting of the robot 100, in which the first and second independent behavioral routines are configured to execute concurrently and mutually independently. The first independent behavioral routine may be configured to poll the proximity sensor 730, and the second independent behavioral routine may be configured to poll the bump sensor 800. While implementations of the robot 100 discussed herein may use behavioral based control only in part or not at all, behavior based control is effective at controlling the robot to be robust (i.e. not getting stuck or failing) as well as safe.
In an example configuration, the form factor of the robot 101 is about 15 cm in diameter, about 7.5 cm in height, and functions on battery power to clean for about six hours before requiring recharge. Also, for example, the robot 101 may effectively clean the floor of a single average-size room in about 45 minutes, or several smaller areas.
Referring to
The robot 101 includes a cleaning assembly 500 mounted on the front portion 210 of the chassis 200 includes a first, front roller brush 510 rotatably mounted substantially near and substantially parallel to the front edge 202 of the chassis 200. The cleaning assembly 500 includes second and third side roller brushes 550, 560 rotatably mounted orthogonally to the front roller brush 510 substantially near respective right and left side edges 306, 308 of the body 300. The roller brushes 510, 550, 560 are driven by a cleaning motor 530 coupled to the roller brushes 510, 550, 560 by a gear box 532. The cleaning motor 530 is positioned rearward of the front roller brush 510 and between the side roller brushes 550, 560.
The robot 101, in a preferred implementation, includes only one kind of cleaning mechanism. For example, the robot 101 shown in
In the some examples, the front roller brush 510 and the side roller brushes 550, 560, each rotate about a horizontal axis parallel to the work surface, thereby providing a horizontal cleaning assembly 500, although the main work width of the coverage robot 100 may include vertically rotating brushes, no brushes in lieu of a vacuum, a reciprocating brush, a circulating belt member, and other known cleaning implements. Each roller brush 510, 520, 550, 560 may have a cylindrical body that defines a longitudinal axis of rotation. Bristles are attached radially to the cylindrical body, and, in some examples, flexible flaps are attached longitudinally along the cylindrical body. As the roller brush 510, 520, 550, 560 rotates, the bristles and the flexible flaps move debris on the work surface, directing it toward the bin 610 in the robot 100. In examples including a vacuum unit, the brushes 510, 520, 550, 560 may also direct debris or dirt toward a suction path under the cleaning robot 100. In the case of a wet cleaning robot, the brushes 510, 520, 550, 560 may have instead a scrubbing function, and a vacuum or other collector may collect waste fluid after scrubbing.
In the examples shown, the effective components of the cleaning assembly 500 such as the brushes 510, 550, 560 are disposed toward the extreme front corners of the forward portion 210 of the chassis 200. As a result, the area of floor that the rectangular forward portion 210 of the chassis 200 can cover is maximized, and portions of the floor that are not covered are minimized, as illustrated in
By including only a single cleaning mechanism, such as the cleaning assembly 500, rather than a combination of two or more varieties of cleaning mechanisms (such as, for example, both a roller brush and a vacuum; or both wet and dry cleaning mechanisms, which may necessitate two or more storage chambers, inter alia), the robot 101 may be made more compact relative to otherwise.
Referring to
The bin cover 620, in the example shown, is releasably connected to the chassis 200 by one or more hinges 622 (e.g., living hinge, peg and socket, etc.). In some implementations, the bin-cover release 630 is actuatable from substantially near or at the handle 330, thereby allowing actuation of the bin-cover release 630 while holding the handle 330. In other implementations, the bin-cover release 630 is actuatable near or on the bin cover 620, such that a user holds the handle 330 with one hand and opens the bin cover 620 via the bin-cover release 630 with another hand (see
In the examples shown, the robot 101 includes a handle 330 is disposed on or defined by an upper portion 305 of the body 300. A user can grasp the handle 330 to lift the robot 101 and transport it manually. In addition, the robot 101 may include one or more buttons 632 proximal to the handle 330. The button 632 is preferably operable by one hand, while the user's hand grips the robot 101 by the handle 330. The button 632 is configured to actuate a bin-cover release 630, which is operable to control holding the bin cover 620 in its closed position and releasing the bin cover 620 to move to its open position. In one example, as illustrated in
The robot 101 includes a power source 160 (e.g., battery) in communication with the drive system 400 and/or the controller 450, and removably secured to the chassis 200. In the examples shown in
The compact dimensions of the robot 101 allow the robot 101 to navigate under potential obstacles such as chairs, tables, sofas, or other household objects, and perform floor cleaning in these hard-to-reach areas. In addition, the robot 101 may include a clearance sensor disposed on a top surface thereof, such as a sonar range-finder or light-sensitive diode, that scans directly overhead. When the clearance sensor detects the presence of an object within a threshold distance—such as, for example, two feet—the robot 101 may continue moving until the overhead space is clear. Accordingly, the robot 101 may avoid becoming “lost” underneath furniture, out of view of the user, for example.
As the drive system 400 propels the robot 101 over the floor, the front roller brush 510 preferably rotates in the same direction as the drive wheels 410, 420 but at a rate faster than the rate of the robot 101 traversing over the floor, so as to sweep debris into the debris chamber 610. In addition, the side brushes 550, 560 also sweep debris inward at the same time. In one example, the bristles of the brushes 510, 550, 560 may extend downward by about 0.015 to 0.025 inches beyond the extent of the wheels 410, 420, while rotating at between about 600 and about 1600 RPM.
The form factor of the robot 101 may be made more compact by omitting a caster wheel or other support structure. Due to the width of the front brush roller 510, as well as the side brushes 550, 560 disposed at opposite lateral sides of the robot 101, the robot 101 may omit a third caster or free wheel aside from the drive wheels 410, 420 without significantly impacting the balance or stability of the robot 101. Alternatively, the robot 101 may further include support bearings 490, as shown in
Referring to
The bump sensor 800 is used to determine when the robot 100 has physically encountered an object. Such sensors may use a physical property such as capacitance or physical displacement within the robot 100 to determine when it has encountered an obstacle. In the example shown in
Since the robot 101 preferably has a compact and lightweight form, the momentum carried by the robot 101 may be lighter than a standard-size robot. Accordingly, the robot 101 preferably includes “light touch” or contactless bump sensors. For example, the robot 101 may include one or more accelerometers 458 in communication with the controller 450 (see
In some examples, the robot 101 may utilize the accelerometer 458 as a stasis detector 720. As a benefit, processing accelerometer data for stasis detection may require only a processing rate of about 30 hertz. For example, as the robot 101 is moving over a floor, vibrations cause the accelerometer 458 to detect acceleration of a particular amplitude profile. However, when the robot 101 stops moving, because of either a normal state or it has been blocked by an obstacle, the amplitude of the vibrations detected by the accelerometer 458 decrease accordingly. Therefore, the robot 101 can respond to such decreased acceleration according to a stasis-escape behavior, for example. By monitoring a single accelerometer 458 for purposes of both bump detection and/or stasis detection, the robot 101 may omit bump switches and/or other stasis detection hardware, thus potentially requiring less space aboard the robot 101.
Referring to
The operation of the robot 101 is preferably controlled by a microcontroller 450, such as a FREESCALE™ QG8 or other microcontroller suitable to receive input from the robot's sensors and operate the motors or other output devices of the robot 101. As illustrated in
The rectangular outline of the front portion 210 of the chassis 200 may cause the corners thereof to collide with obstacles which might not be detected by bump sensors or cliff sensors, in contrast to round-outline robots that can rotate freely without such risk, the robot 101 preferably responds to bumps detected while rotating in place by halting the rotation and backing up directly in reverse. As a result, the robot 101 may be less likely to become inextricably wedged or stuck, notwithstanding the square corners of the front portion 210 of the chassis 200. Alternatively, the robot 101 may behave in accordance with control software generally similar to the ROOMBA™ or SCOOBA™ robots, as examples.
In accordance with a further example, the robot 100, 101 may automatically return to a cradle or base station for storage after completing a cleaning cycle. The robot 100, 101 may also include an electrical interface for recharging on-board batteries. Additionally, the cradle or base station may include a receptacle positioned below a “home” position of the robot 100, 101. When the robot 100, 101 interfaces the cradle and stops at the home position, the robot 100, 101 may automatically actuate the bin-cover release 630 and evacuate the debris from the debris chamber 610 into the cradle's receptacle positioned below the robot 100, 101.
In robot implementations using the omni-directional receiver 900, the base station may include an omni-directional beam emitter and two navigational field emitters. The robot 100 may maneuver towards base station by detecting and advancing along one of the lateral field edges of the overlapping fields aligned with a docking direction until docked with the base station. The robot 100 may detect the emissions of base station with the omni-directional receiver 900 and maneuver to detect an outer lateral field edge of at least one field emission. The robot 100 may then advance along the outer lateral field edge to the aligned lateral field edge of the overlapping fields. Upon detecting the aligned lateral field edge, the robot 100 advances along the aligned lateral field edge until docked with base station.
The reactive behaviors have, as their enabling conditions or triggers, various sensors and detections of phenomena, but, in general, not (arbitrary) states of a sequence. As shown in
Actual physical sensors may be represented in the architecture by “virtual” sensors synthesized from the conditioning and drivers. Additional “virtual” sensors that are synthesized from detectable or interpreted physical properties, proprioceptive or interpreted upon the robot 100, 101, such as over-current of a motor, stasis or stuck condition of the robot 100, 101, battery charge state via coulometry, and other virtual sensors “virtual N.”
In some implementations, the robot 100 includes the following behaviors listed in priority order from high to low: 1) User Interface Group 1100, 2) Factory Test Group 1200, 3) Reverse Bump Follow Group 1300, 4) Cliff Avoid Group 1400, 5) Bounce Rear 1500, 6) Bump Follow Group 1600, 7) Bounce 1700, and 8) Drive 1800. A behavior group refers to a set of behaviors that work together to implement an overall behavior. For example, the “User Interface Group” behavior is a set of three behaviors that handles the user interface while the robot is at rest.
The robot may include a user interface 370, which is a single clean/power button in the examples shown in
The following sub-behaviors, prioritized from high to low, implement the Reverse Bump Follow escape behavior 1300: 1) Reverse Bump Follow Escape Swing 1310, 2) Reverse Bump Follow Turn Out 1320, and 3) Reverse Bump Follow Arc In 1330. Due to the rectangular shape of the front portion 210 of the chassis 200, it is possible for the robot 100 to drive into a space that is too narrow to turn around in (e.g., like a parking space). These confinement areas are referred to as canyons. The term “canyon” refers generically to any narrow confinement source. If a cliff is similarly confining the robot 100 to a narrow space, this is referred to as a plank. Since the strategy for escaping these confinement obstacles is the same, the directional cliff sensor and bumper sensor data is aggregated into a set of four “directional confinement” sensors which are the basis for the discussion below. The four sensors are front-left, front-right, rear-left and rear-right. The direction of a reverse bump follow is clockwise if the Reverse Bump Follow Arc In behavior 1330 is driving the robot 100 backward while rotating clockwise. The direction of a reverse bump follow is counterclockwise if the Reverse Bump Follow Arc In behavior 1330 is driving the robot 100 backward while rotating counterclockwise.
The Reverse Bump Follow Escape Swing behavior 1310 causes the robot 100 to turn in place with enough angular progress to deduce that the presence of a canyon. The activation condition for the Reverse Bump Follow Escape Swing behavior 1310 is evaluated at the end of the Reverse Bump Follow Turn Out behavior 1320. After the Reverse Bump Follow Escape Swing behavior 1310 is armed, it executes once and then disables itself until armed again by the Reverse Bump Follow Turn Out behavior 1320. At the start of the Reverse Bump Follow Escape Swing behavior 1310, an escape angle is set to a random number between 120 and 160 degrees. The robot 100 then turns in place in the opposite direction of the reverse bump follow direction until the escape angle is achieved. If any rear directional confinement sources appear while turning in place, the robot 100 moves forward to avoid them. If a front directional confinement source is encountered, the turn in place is aborted. After completion of the turn in place, the success of the escape is determined in the following order. First, if the turn in place was aborted due to detection of a front confinement source, the angular progress of the turn in place is compared to a minimum escape angle which is computed by generating a random number between 80 and 120 degrees. If the angular progress does not exceed this amount, a similar maneuver for the Reverse Bump Follow Turn Out behavior 1320 is performed. This is done to return the robot 100 back to an orientation conducive to continuing the reverse bump follow. Second, if the turn in place was aborted due to detection of a front confinement source, and the angular progress exceeded the minimum escape angle computed above but fell short of the escape angle computed at the beginning of the behavior, the following is done. The reverse bump follow activation is cancelled, and a forward bump follow is triggered if the confinement source that stopped the turn in place was a bump. This improves the chances that the robot 100 will find its way out of a tight spot without detecting a new canyon and retriggering the reverse bump follow. Third, if the turn in place completed due to achieving the escape angle computed at the start of the behavior, the reverse bump follow activation is cancelled.
The Reverse Bump Follow Turn Out behavior 1320 attempts to orient the robot 100 relative to an obstacle such that forward progress can be made while arcing toward the obstacle again. Simply turning in place as a circular robot would is not sufficient for the robot 100 since the rectangular forward portion 210 of the chassis 200 would, at some point, hit the obstacle and prevent the robot 100 from turning in place further. To avoid this problem, the robot 100 instead follows a tight arc to maintain space from the obstacle. The Reverse Bump Follow Turn Out behavior 1320 begins after the backing up along an arc that is performed in the Reverse Bump Follow Arc In behavior 1330 finishes as a result of the rear bumper getting activated. The first task of the Reverse Bump Follow Turn Out behavior 1320 is to release the bumper 300 from the rear hit. This is done by driving the robot 100 forward until the bumper 300 is released. In the course of doing this, front confinement sources are handled in the following way. A front-left confinement source causes the robot 100 to turn clockwise. A front-right confinement source causes the robot 100 to turn counterclockwise. After the bumper 300 is released, the robot 100 computes a constrained random arc radius and angular progress that it must travel in the forward direction in order to reorient the robot 100 for the next iteration of the Reverse Bump Follow Arc In behavior 1330. The robot 100 travels along this arc until the computed angular progress is achieved. While doing this, the robot 100 responds to the front confinement sensor 710, 730, 800 (e.g., cliff sensor 710, proximity sensor 730, and/or bump sensor 800) on the opposite side of the robot 100 to the obstacle being followed. When this is detected, the robot 100 turns in place in the same rotational direction as the arc it is following. The Reverse Bump Follow Turn Out behavior 1320 ends when the computed angular progress is achieved or the front confinement sensor 710, 730, 800 on the same side of the robot 100 as the obstacle being followed is triggered. At the end of the behavior, a random number generator is used to decide whether or not to trigger a Reverse Bump Follow Escape Swing behavior 1310. At a minimum, the probability of triggering the Reverse Bump Follow Escape Swing behavior 1310 will be about 20%. If the angular progress of the Reverse Bump Follow Turn Out behavior 1320 was between about 2 and about 5 degrees, the probability increases to about 50%. If the angular progress is less than 2 degrees, the probability is about 100%.
The Reverse Bump Follow Arc In behavior 1330 attempts to make forward progress while keeping an obstacle close to one side of the robot 100 by driving backward in an arc that begins shallow and gets progressively more severe with elapsed time in the behavior. The Reverse Bump Follow Arc In behavior 1330 executes when the robot 100 is in the reverse bump following mode 1300 and none of the other reverse bump follow behaviors 1310, 1320 are activated. While traveling in the arc, the robot 100 will respond to the front confinement sensor 710, 730, 800 (e.g., cliff sensor 710, proximity sensor 730, and/or bump sensor 800) on the opposite side of the robot 100 to the obstacle. It does this by turning in place in the opposite rotational direction to the arc being followed. The Reverse Bump Follow Arc In behavior 1330 ends when a rear confinement sensor 710, 800 (e.g., cliff sensor 710 and/or bump sensor 800) is triggered or the arc has made over 120 degrees of angular progress.
The Cliff Avoid Group behavior 1400 is a group of escape behaviors that includes the following sub-behaviors, prioritized from high to low: 1) Cliff Avoid Rear 1410, and 2) Cliff Avoid 1420. Referring to
The Cliff Avoid Rear behavior 1410 executes whenever the rear cliff sensors 710C, 710D are triggered. Front cliffs sensors 710A, 710B are also handled in this behavior 1410 since it is higher priority than Cliff Avoid 1420. At the beginning of the Cliff Avoid Rear behavior 1410, an escape direction of clockwise or counterclockwise is selected. The decision is made in the following order. 1) If front-left cliff sensor 710B is triggered, set to clockwise. 2) If front-right cliff sensor 710A is triggered, set to counterclockwise. 3) If rear-right cliff sensor 710C is triggered, set to clockwise. 4) If rear-left cliff sensor 710D is triggered, set to counterclockwise. After the direction is set, the robot 100 turns in the specified direction along an arc that is centered on a drive wheel 410, 420. While traveling, the front cliff sensors 710 are monitored and used to alter the direction of travel as follows. If the front-right cliff sensor 710A is triggered, the robot 100 turns in place counterclockwise. If the front-left cliff sensor 710B is triggered, the robot 100 turns in place clockwise. The robot 100 continues to travel as described above until both rear cliff sensors 710C, 710D are not triggering.
The Cliff Avoid behavior 1420 only handles the front cliff sensors 710A, 710B of the robot 100 and typically executes when the robot 100 is driving forward. At the beginning of the Cliff Avoid behavior 1420, an escape direction is chosen based on which front cliff sensors 710A, 710B have been triggered. If only the front-left cliff sensor 710B is triggered, the clockwise escape direction is chosen. If only the front-right cliff sensor 710A is triggered, counterclockwise escape direction is chosen. If both front cliff sensors 710A, 710B are triggered, the escape direction is randomly selected. An escape angle is randomly chosen between about 25 and about 50 degrees. The Cliff Avoid behavior 1420 starts by backing up straight until both of the front cliff sensors 710A, 710B are not triggering. Then, the robot 100 turns in place until the escape angle is achieved. If any of the front cliff sensor 710A, 710B is retriggered as part of the turn in place, the entire Cliff Avoid behavior 1420 is retriggered and hence re-executed.
The Bounce Rear behavior 1500 runs when the bumper 300 is activated from the rear direction. This most commonly happens when the robot 100 drives backward to release the front part of the bumper 300 as part of the Bounce behavior 1700. The robot 100 drives forward until the bumper 300 is released, and then continues forward another 5 mm in order to reduce the chance that the turn in place about to be performed will not retrigger a rear bump. A rotational direction for the turn in place is decided based on the direction of the original rear bumper hit. If the hit came from the rear-right side of the robot 100, counterclockwise is chosen. If the hit came from the rear-left side of the robot 100, clockwise is chosen. If the hit was in the center part of the rear, the direction is randomly chosen. An escape angle is randomly chosen between about 10 degrees and about 200 degrees. The robot 100 turns in the chosen direction until the escape angle is achieved.
The Bump Follow Group 1600 includes the following sub-behaviors prioritized from high to low: 1. Bump Follow Wall Align 1610, 2. Bump Follow Arc In 1620. Bump following is used to escape from and clean cluttered areas. It is also used to follow a wall with the goal of dispersing the robot 100 evenly through its floor space.
The Bump Follow Wall Align behavior 1610 is designed to align the side of the robot 100 with an obstacle such as a wall. If the bump-follow-direction is clockwise, the goal is to have the robot's left side against the wall. If the direction is counterclockwise, the goal is to have the robot's right side against the wall. When bump following is enabled, the Bump Follow Wall Align behavior 1610 begins when a front bump is triggered. The location of the bumper hit is used to decide how much the robot 100 should turn in place before performing another iteration of the Bump Follow Arc In behavior 1620. If the bumper 300 is triggered on the side of the bumper 300 that should not be near the obstacle, the robot 100 sets a turn in place goal of between about 25 and about 45 degrees. This larger increment saves time in the alignment process. If the bumper 300 is triggered on the side that should be near the obstacle, the robot 100 turns in place in the direction that swings the bumper 300 into the obstacle even more. The goal of this maneuver is to see if the bumper 300 tends to stay engaged or releases. If it releases, it suggests that the robot 100 is not yet at a very shallow angle to the wall, and a turn in place goal of between about 5 and about 25 degrees is selected. Otherwise, the robot 100 is probably at a shallow angle to the wall, and a turn in place goal of between about 1 and about 5 degrees is selected. If the turn in place goal was selected to be greater than 5 degrees, the robot 100 backs up until the bumper 300 is released. The robot 100 turns in place in the direction that swings the front of the robot 100 away from the obstacle until the target angle is achieved. If the bumper 300 is retriggered during the turn in place, the robot 100 backs up enough to release it.
The Bump Follow Arc In behavior 1620 runs when the bump following mode 1600 is enabled and Bump Follow Wall Align 1610 is not active. The robot 100 drives forward in a shallow arc, at first, in order to make forward progress. As more time elapses, the arc gradually tightens to bring the robot 100 back in contact with the obstacle. This allows the obstacle to be followed closely which can help the robot 100 find its way around it. If the bump follow mode 1600 was selected to maneuver through clutter, the robot 100 can continue arcing in without a bumper hit for up to about 100 degrees of angular progress. At that point, the bump follow 1600 is considered ended due to the robot escaping. If the bump follow mode 1600 was selected to help disperse the robot 100 through its space, it can continue arcing in without a bumper hit for up to about 210 degrees to allow for turning wall corners. At that point, the wall is considered lost and the bump follow behavior 1600 ends.
The Bounce behavior 1700 runs when the bumper 300 is activated from the front direction. The robot 100 drives backward until the bumper 300 is released. It then continues backward another 30 mm in order to reduce the chance that the turn in place about to be performed will not retrigger the bumper 300 from the front. This large additional clearance is required due to the rectangular shape of the forward portion of the bumper 300 creating the potential for the corner of the bumper 300 to swing into contact with the obstacle when turning in place. A rotational direction for the turn in place is decided based on the direction of the original front hit on the bumper 300. If the hit came from the front-right side of the robot 100, counterclockwise is chosen. If the hit came from the front-left side of the robot 100, clockwise is chosen. If the hit was in the center part of the front, the direction is randomly chosen. An escape angle is randomly chosen between about 10 degrees and about 200 degrees. The robot 100 turns in the chosen direction until the escape angle is achieved.
The drive behavior 1800 may run when no other behavior is active. The robot 100 drives straight until it experiences an event that triggers another behavior.
The robot 100 maintains concurrent processes 2000, “parallel” processes that are not generally considered reactive behaviors. As noted, filters and conditioning 2400 and drivers 2500, can interpret and translate raw signals. These processes are not considered reactive behaviors, and exercise no direct control over the motor drives or other actuators.
Some parallel processes 2000 are important in assisting the activation and execution of various behaviors. These processes are software finite state machines that are evaluated at a frequency of 64 Hertz, for example. The period is referred to as the processing interval.
In some implementations, the robot 100 includes a Canyon Detect process 2100, which assists in identifying canyons. A canyon is declared by monitoring four signals. Each of these signals is evaluated every processing interval. When the input signal is true, the output signal becomes true. The output signal becomes false after 100 consecutive processing intervals of the input signal being false. The four input signals are evaluated as follows: 1) The front-left cliff sensor 710B is active and the front-right cliff sensor 710A is inactive, or the rear-left cliff sensor 710D is active and the rear-right cliff sensor 710C is inactive. 2) The front-right cliff sensor 710A is active and the front-left cliff sensor 710B is inactive, or the rear-right cliff sensor 710C is active and the rear-left cliff sensor 710D is inactive. 3) The bumper 300 is depressed at the front-left side of the robot 100. 4) The bumper 300 is depressed at the front-right side of the robot 100. The processed versions of these signals are named, respectively, as follows: 1) cliff-left-held; 2) cliff-right-held; 3) bump-left-held; and 4) bump-right-held. A canyon is detected when cliff-left-held or bump-left-held are true while cliff-right-held or bump-right-held are true. When a canyon is detected, the Reverse Bump Following Group 1300 is enabled.
In some implementations, the robot 100 includes a Forward Progress process 2200. In the Forward Progress process 2200, every processing interval, the forward progress of the robot 100 is added to an accumulator while a fixed distance quantity corresponding to 1 millimeter is subtracted. When this accumulator reaches 100 millimeters, forward progress is declared to be true. The accumulator is not allowed to exceed 200 millimeters. When forward progress is true for 10 seconds, the Reverse Bump Following Group 1300 is enabled to escape the excessively cluttered environment the robot 100 is traveling in.
In some implementations, the robot 100 includes a Reverse Bump Follow Arc In Progress process 2300. While the robot 100 is in the reverse bump following mode 1300, the forward progress of each iteration of the Reverse Bump Follow Arc In behavior 1330 is fed into a low pass filter. At the beginning of a reverse bump follow, this filter is initialized to 60 millimeters. When the output falls below 50 millimeters, the arc in progress is considered poor. This triggers a toggle in the reverse bump follow direction, i.e. the side of the robot 100 where the primary obstacle is assumed to be.
Other robot details and features combinable with those described herein may be found in the following U.S. patent applications, entitled “AUTONOMOUS COVERAGE ROBOT,” filed on May 9, 2008, having assigned Ser. No. 12/118,219, and published as U.S. Pat. App. Pub. 2008/0276408 A1; and “AUTONOMOUS COVERAGE ROBOT SENSING” filed on May 9, 2008, having assigned Ser. No. 12/118,250, and published as U.S. Pat. App. Pub. 2008/0281470 A1; the entire contents of the aforementioned applications are hereby incorporated by reference.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
This U.S. patent application is a continuation, and claims priority under 35 U.S.C. § 120, from U.S. patent application Ser. No. 13/719,784, filed on Dec. 19, 2012, entitled Compact Autonomous Coverage Robot, which is a continuation of U.S. patent application Ser. No. 13/245,118, filed Sep. 26, 2011, entitled Compact Autonomous Coverage Robot, which is a continuation of U.S. patent application Ser. No. 12/118,117, filed May 9, 2008 (now U.S. Pat. No. 8,239,992), which claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application 60/938,699, filed on May 17, 2007 and U.S. Provisional Application 60/917,065, filed on May 9, 2007. The disclosure of each of these prior applications is considered to be part of the disclosure of this application and each of these prior applications is hereby incorporated by reference in its entirety. The contents of U.S. Pre-grant Publications 2003/0192144, 2006/0200281, and 2007/0016328, and also U.S. Pat. No. 6,748,297 and U.S. Pat. No. 6,883,201 are hereby incorporated herein by reference in their entireties.
Number | Date | Country | |
---|---|---|---|
60938699 | May 2007 | US | |
60917065 | May 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15331965 | Oct 2016 | US |
Child | 16120903 | US | |
Parent | 14456293 | Aug 2014 | US |
Child | 15331965 | US | |
Parent | 13719784 | Dec 2012 | US |
Child | 14456293 | US | |
Parent | 13245118 | Sep 2011 | US |
Child | 13719784 | US | |
Parent | 12118117 | May 2008 | US |
Child | 13245118 | US |