Elevated robotic assistive device system and method

An elevated system for providing support and control of a network of mobile robotic apparatus contains a system of tracks attached to an elevated structure with means to connect one or more adjacent tracks for the mobile robotic apparatus to traverse the track system. The mobile robotic apparatus contains one or more mobile robotic units with means to actuate and process sensor input and provide multimedia and communication signal monitoring and tracking capabilities. A remote controller not attached to the track system nor robotic apparatus provides command and control to the robotic units, and provides electronic storage of data generated by the robotic units and/or remote controller.

TECHNICAL FIELD

Several embodiments relate to robotics systems, and in particular, an elevated robotic assistive device (ERAD).

DESCRIPTION OF RELATED ART

Since the advent of robotic systems and devices, the primary application focus has been with enhancing productivity and safety in industrial and agricultural markets such as manufacturing assembly lines (e.g. vehicles, integrated circuits and circuit boards, food preparation), warehouse package/container retrieval and disbursement, and crop harvesting to name a few. Robotic assistance devices have also been deployed in military applications employing various form factors (e.g. tanks, unmanned aerial vehicles) and various levels of artificial intelligence. The popularity of robotic assistance devices in personal and domestic markets comparably have been primarily confined to toys including flying devices (e.g. drones) and cleaning devices (e.g. carpet or pool cleaners). Consequently, these devices typically occupy space in the open air or on the ground. While floor-based mobile robots (e.g. telepresence robots) may have great potential for automating processes and assisting people (i.e. the disabled and infirmed or home/industrial security), their need to navigate around objects (people, furniture, stairs, pets.) makes them expensive while still not alleviating the potential for a sense of obtrusiveness on the part of the users. Consequently, there is more “open real estate” available overhead than on the floor for many types of personal assistant robotics. Accordingly, it would be advantageous to provide an improved system for providing personal assistive services in an elevated robotic system.

SUMMARY

Embodiments disclosed herein address the above stated needs by using an elevated robotic system and method with novel mechanical, electrical and control features.

In one embodiment, a system for providing assistance in a residential, retail, or industrial environment comprises a track system which is elevated off the ground, one or more robotic apparatus attached to the track system for providing a mobile vehicle to traverse the track system, one or more sensors attached to the robotic apparatus for providing sensor input signals to the robotic apparatus, one or more controllers attached to the robotic apparatus for providing motorized movement and processing, one or more communication apparatus attached to the robotic apparatus for providing communication to the robotic apparatus, a remote controller not attached to the track system nor robotic apparatus for providing command and control to the robotic apparatus, and a storage apparatus for providing electronic storage of data generated by the robotic apparatus and/or remote controller.

In another embodiment, an apparatus comprises a lightweight track, rail, or track-support frame (i.e. track system) which is elevated off the ground (e.g. suspended from the ceiling or a wall), and supports connection of one or more relatively small, lightweight, detachable, motorized robotic units that move along the track or rail system in either remote control or autonomous modes, wherein the track system is further comprised of means to connect multiple tracks, rails or track-support frames together and to a support structure (e.g. a ceiling or wall).

In another embodiment, a system comprises one or more relatively small, lightweight, detachable, motorized robotic units and one or more relatively small, lightweight, detachable, non-motorized units attached to the motorized robotic units by means of mechanical coupling, wherein the mechanical coupling may comprise electrical signal connection between the motorized and non-motorized units.

In another embodiment, an apparatus comprises a track switcher connected to a plurality of elevated track systems to support transferring a robotic unit from one track system to another track system.

In another embodiment, a method comprises determining if a robotic unit should transfer from one track system to another track system and subsequently controlling a track switcher.

In another embodiment, a method comprises determining if two or more robotic units are connected to an elevated track system and providing a network through which the units may communicate.

In another embodiment, a method comprises determining if and when two or more robotic units connected to and moving along an elevated track system may collide, and implementing processing to avoid the collision.

In another embodiment, an apparatus comprises a plurality of components connected to an elevated track system to support alignment and position of a connected robotic unit, wherein the components comprises but are not limited to rollers, gear racks, bar-code or other visual markers, infra-red, RF ID markers, magnets, etc.

In another embodiment, a method comprises determining position of and if a robotic unit is out of alignment on a track system and correcting the position or alignment based on processing sensor input from, but not limited to, motor encoders, rollers, gear racks, visual markers (e.g. bar-code), infra-red, RF ID, hall-effect sensors, etc.

In another embodiment, an apparatus comprises an electrical power source connected to a track system, and provides a plurality of battery charging outlets at locations connected to or adjacent to the track.

In another embodiment, a method comprises controlling or determining if an elevated robotic unit is operating in a manual or autonomous mode and executing processing based on the determining.

In another embodiment, a means comprises controlling a robotic unit running in a manual mode by one or more external devices, wherein the external devices may be, but are not limited to, a joystick, gamepad, a voice recognition unit, smart phone or tablet running application software.

In another embodiment, a method comprises determining if the battery level in an elevated robotic unit is below a threshold and moving the robotic unit to the closest and available charging outlet on the track.

In another embodiment, an apparatus comprises a fixed or pivotally-mounted module attached to the elevated robotic unit, wherein the module comprises a track cleaning apparatus and means.

In another embodiment, an apparatus comprises a fixed or pivotally-mounted module attached to the elevated robotic unit, wherein the module comprises a winch system apparatus and means.

In another embodiment, an apparatus comprises a fixed or pivotally-mounted module attached to a plurality of elevated robotic units, wherein the module comprises a video gaming platform system apparatus and means, wherein the platform on a first elevated robotic unit comprises a laser pen and the platform on a second elevated unit comprises a target screen and camera.

In another embodiment, an apparatus comprises a fixed or pivotally-mounted module attached to an elevated robotic unit, wherein the module comprises but is not limited to apparatus providing one or more displays and/or detections of lighting, audio, speech, video, cooling devices (e.g. fans), container (e.g. medical devices, medicine, oxygen, fluids, tools, etc.), WiFi/LiFi service or fire/smoke detection.

In another embodiment, an apparatus comprises a power distribution system in an elevated robotic unit for providing power to modules attached to the unit.

In another embodiment, an apparatus comprises a fixed or pivotally-mounted module attached to an elevated robotic unit, which includes a processor configured to process a plurality of sensor inputs and executing processing based on the inputs.

In another embodiment, a processor in a fixed or pivotally-mounted module attached to an elevated robotic unit comprises processing user defined instructions based on a set of published application programming interfaces (APIs).

In another embodiment, a method, in a module attached to an elevated robotic unit, comprises searching for a signal or combination of signals, wherein the signal or combination of signals comprises but is not limited to an image, radio, electromagnetic (e.g. infra-red), audio, speech, chemical (e.g. smoke), or combination of image, radio, electromagnetic, audio, speech, chemical, and wherein the searching comprises moving the unit along an elevated track system until a signal is acquired.

In another embodiment, a method comprises determining in a module attached to an elevated robotic unit if a sensor or combination of sensor signals (e.g. one or plurality of WiFi or LiFi signal power levels) received from a transmitting device (e.g. one or a plurality of WiFi LiFi transmitters) is below a threshold and executing processing to move the robotic unit to a location to maximize the one or plurality of received power levels.

In another embodiment, a method for tracking a moving object from an elevated robotic apparatus comprises processing one or more sensor input signals to produce a signature of the moving object, determining the direction of motion of the signature of the moving object, and actuating controller hardware on the elevated robotic apparatus to center the signature within a reference frame related to the type of sensor input.

DETAILED DESCRIPTION

A diagram of an Elevated Robotic Assistive Device (ERAD) System is shown inFIG. 1. A single or plurality of mobile ERADs100are attached to an elevated track400and travel to various points along the track400through either autonomous or manual (user controlled) modes. In an exemplary embodiment, Track400may be affixed to the ceiling or wall in a residence, school, factory, or warehouse. ERAD100may travel to additional tracks connected to track400by way of track switcher410. Track switcher410serves to detach ERAD100from one track and reattach ERAD100to another track. It should be understood that the configuration of track400may take on different patterns, each connected by way of a track switcher410apparatus.

In an exemplary embodiment, ERAD100may function as a manually controlled or autonomous surveillance system, wherein images, video, or audio may be collected and/or transmitted to a local base station, security command center, or cloud based server. Alternatively, ERAD100may function as a medical assistance device, wherein supplies (e.g. medicine or oxygen) are delivered to a disabled user. Alternatively, ERAD100may function as a video gaming platform with a pan/swivel mount for a laser pen (e.g. the weapon) and a second mount with a target screen and camera for use in an interactive application, such as an indoor or outdoor laser tag arena. In support of one or more of the exemplary embodiments described herein, ERAD100may track a moving object in the environment.

InFIG. 1, ERAD100may communicate to one or more ERADs also attached to track400by wireless communication link S100to form a network of autonomous or remotely controlled units. For example, the wireless communication link may comprise but is not limited to standard wireless technologies such as Bluetooth, WiFi, or Infra-red. The link may also be connected through physical connections (e.g. wires or metallic traces) along track400wherein contact of ERAD100on track400establishes communication between ERADs along the physical connections. ERAD100may also communicate to a peer ERAD through wireless device355using the same communication link technologies described herein. ERAD100may communicate to a wireless device355in a master slave fashion in support of a manual mode. In the manual mode, a Control Base Station (CBS) software application1000may be executed on wireless device355, sending commands to ERAD100and receiving responses via communication link S110, using the same communication link technologies described herein. CBS1000may store data received from ERAD100in order to produce analytics or test results, or for other analysis. The data received may be stored in Local Storage360, or to a cloud service existing in Network910through wired or wireless communication link S140or may store data to both Local Storage360and Network910.

A network of ERADs100attached to a track system400may communicate to each other autonomously or through remotely controlled software to established a coordinated system to accomplish tasks such as using multiple ERADs to carry a large load along the track, providing stereo audio sampling or playback (e.g. for a surround sound speaker system or game), or providing coordinated video feeds (e.g. for surveillance or gaming) to name a few. In supporting the coordinated tasking of the network of ERADs attached to a track system, a collision avoidance system must be in place. A collision avoidance system may comprise but is not limited to a local vision recognition/detection system (i.e. local to the ERADs) of a vision marker (e.g. another ERAD, a bar code, an infra-red beacon) or remote logging of ERAD historical positions on the track (e.g. the control software knows where each and every ERAD has been on the track and knows where it is headed so can predict if and when two ERADs are on a collision course and send appropriate commands to move each of the ERADs accordingly).

Alternatively, a network of ERADs100may comprise one or more motorized units and one or more non-motorized units attached to the motorized units by means of mechanical coupling, wherein the mechanical coupling may comprise electrical signal connection between the motorized and non-motorized units. Communication between the motorized and non-motorized units may occur through S100, wherein S100comprises a wired link, and communicates via protocols, which may include but are not limited to USB, Ethernet, or FireWire. In an exemplary embodiment, motorized ERAD may provide basic control and mobility functionality, whereas attached non-motorized ERADs may provide advanced features, such as image, audio, or communication processing.

InFIG. 1, user900may interact with CBS software app1000executing on wireless device355via touch or voice command link S120. Actions issued by user900may flow from CBS software app1000executing on wireless device355to ERAD100via wireless link S110. Similarly, ERAD100may respond to commands or send unprompted status to user900through CBS software app1000executing on wireless device355by way of wireless link S110. User900may also communicate directly to ERAD100through audio (e.g. voice) or video (e.g. image detection) command link S130.

A perspective view of an Elevated Robotic Assistive Device comprising a track, track switcher apparatus, track brackets, robot apparatus, and charging station is shown inFIG. 2A. ERAD100is attached to track400. Track400may comprise a rigid vertical plate attached to a rigid horizontal plate, forming an inverted “T” shape, wherein ERAD100travels upon the horizontal plate. Track400is attached to an elevated structure (e.g. a ceiling or a wall) by mounting brackets420. An alternate mounting bracket assembly may attach to a drop ceiling stringer by a tension clip or similar mechanism or a threaded clamp assembly. In the alternate mounting bracket assembly, a swivel mechanism may be mounted to the clip or clamp assembly to allow the attached mounting bracket to turn at angles relative to the stringer. In this configuration, the track system could be mounted to a drop ceiling at any angle referenced to the stringers. A plurality of tracks400, each of identical or different lengths, may be constructed to form a unique latitudinal and longitudinal path along the elevated structure. The latitudinal and longitudinal tracks100are connected by track switcher410. Track switcher410may comprise a fixed section attached to an elevated structure, and the fixed section attached to a rotating disk and section of track400, which is attached to the underside of the rotating disk, and wherein track switcher410may be rotated to align with latitudinal or longitudinal tracks100, and wherein ERAD100traverses from a latitudinal track400to a longitudinal track400by positioning itself on the section of track400attached to the bottom of track switcher410and activating track switcher410to rotate until it is aligned with the longitudinal track400. ThoughFIG. 2Ashows straight track400sections, it should be understood that track400may comprise curved sections, such that a ERAD100may traverse around a corner on a single track without the need for a track switcher410. Further, though track400is described as an inverted “T” shape, it should be understood that track400may take on other shapes such as an I-beam such that ERAD100may be attached to an existing beam in a building support structure. In an I-beam track system, ERAD100is attached to the bottom horizontal plate of the I-beam in the same fashion as the inverted “T” track.

InFIG. 2A, charging station430may be mounted to the elevated structure and attached to track400. ERAD100may traverse track400to charging station430and remain docked at charging station430while its battery is charging, and wherein ERAD100may be considered docked at charging station when a contact switch located on the charging station430is activated by the ERAD housing apparatus or if contact pads located on the ERAD housing apparatus connect with corresponding contact pads on charging station430.

InFIG. 2A, a detachable track cleaner may be attached to ERAD100in order to remove debris from track400. The detachable track cleaner may comprise, but is not limited to mounting hardware and apparatus comprised of brushes, plows, squeegee, or swabs.

Another perspective view of an Elevated Robotic Assistive Device comprising a track, track switcher apparatus, track brackets, robot apparatus, and charging station is shown inFIG. 2B. Track switcher410displays an exemplary rotating section described herein with section of track400attached to the underside. Charging station430displays an exemplary contact switch and pads for connecting to ERAD100.

A detailed perspective view illustration of the Elevated Robotic Assistive Device Track Switcher410is shown inFIG. 6. A fixed section412comprises brackets to mount to an elevated structure (e.g. a ceiling or wall), a motor box and bracket411to rotate the rotating section413, and a track414which is a short length but mechanically identical or similarly dimensioned track structure to track400. Track switcher410serves to detach ERAD100from one track and reattach ERAD100to another track as described herein.

A perspective and detail view illustration of an alternative embodiment Elevated Robotic Assistive Device System comprising a slotted track, slotted track with exit port, and ERAD chassis is shown inFIG. 3AandFIG. 3B. ERAD chassis1100displays an exemplary frame, wheel and axle configuration, and pin structure, wherein the dimensions of frame, wheels and pin are such that ERAD chassis1100may be inserted in slotted track1201or slotted track with exit port1200. Slotted track with exit port1200and slotted track1201may be attached to an elevated structure, and are comprised of rigid plates attached together to form a rectangular shape. Slotted track with exit port1200and slotted track1201include a slot positioned in the center and bottom of the track, wherein ERAD chassis1100pin structure inserted in track1200or1201protrudes through the slot, and serves to provide a structure from which an ERAD housing including, but not limited to, electronics, motors, gears, and sensors may be attached, and to provide alignment for robot apparatus1100on track1201or1202. Slotted track with exit port1200and slotted track1201may be connected together with one track assuming a “male” configuration and the other track a “female” configuration such that one track may be inserted and attached to the other track, and provide a latitudinal and longitudinal track path configuration.

InFIG. 3B, slotted track with exit port1200provides a path for ERAD chassis1100to traverse from a latitudinal track to longitudinal track without the need for a track switcher described herein. Traversing this alternative track configuration assumes an ERAD chassis as shown inFIG. 5AandFIG. 5B, wherein the drivetrain wheels comprise a specific construction. For example, the wheels1101shown inFIG. 5Bare of omni type, wherein the wheels are comprised of a hub with small disks attached along the circumference of the hub and perpendicular to the turning direction. This construction allows the wheel to rotate in the forward direction of rotation as well as slide laterally (perpendicular to the wheel hub) along the small disks attached to the hub. ThoughFIG. 5Bshows an apparatus with omni wheels, it should be recognized that any wheel types or drive systems that allows lateral movement are included in this disclosure, such as swerve drive, holonomic drive, kiwi drive, x-drive, mecanum drive, which are all well known to those skilled in the art.

FIG. 5Bdisplays an exemplary chassis configuration for robot apparatus1100. Those skilled in the art will recognize other configurations could be considered, such as a triangular shape with only 3 wheels1101as implemented in a kiwi drive system.FIG. 5Balso displays an exemplary pin1102structure which is attached to chassis1100. As described herein, the pin protrudes through slot in slotted tracks1200or1201inFIG. 5Band serves to hold a robot housing for electronics, motors, gears, and sensors as well as to align robot apparatus1100within tracks1200or1201.

A detailed perspective view illustration of an Elevated Robotic Assistive Device is shown inFIG. 4, corresponding to robot apparatus100ofFIG. 1. Housing121serves to provide a rigid structure to traverse along track400ofFIG. 1, and provide a protective enclosure for items including, but not limited to, electronics, motors, gears, and sensors. In an exemplary embodiment, ERAD100is propelled by electronic motor box122, which is attached to and rotates drive motor axle124, which in turn is attached to and rotates drive motor gear123. In an exemplary embodiment, drive motor gear123may mesh with and rotate drive roller gear125, which is attached to and rotates drive roller axle126, which in turn is attached to and rotates drive roller127. Implementing a multiple gear drive train as described with drive motor gear123and drive roller gear125allows for implementing a gear ratio to increase the speed or torque of drive roller127. Drive roller127rests on the horizontal plate of track400and rotates when ERAD100traverses along track400. It should be understood that motor box122may be directly attached to drive roller127through an axle to reduce the need for a gear mesh and additional roller components. In an exemplary embodiment, free roller axle128and free roller129serve to stabilize ERAD100on track400, and may or may not be driven by a motor box. Free roller129rests on horizontal plate of track400and rotates when ERAD100traverses along track400.

In an exemplary embodiment, track alignment sensor130inFIG. 4is mounted either inside or outside housing121and serves to provide sensor feedback to a control module for track alignment processing. The track alignment sensor130may comprise, but is not limited to, light-emitting-diode, bar-code reader, infra-red detector, RF ID detector, or hall-effect sensors, wherein markers placed on track100activate the sensors (e.g. magnet markers for hall-effect sensor).FIG. 7displays an exemplary embodiment of the track markers411on a track400. The track markers411may be placed at regular, periodic positions on track400or may be positioned more sparsely at points of interest such as, but not limited to, where high traffic areas exist underneath (e.g. where multiple people or objects are positioned at particular instances in time), where beacons exist nearby, where charging stations430exist on track400, prior or after a track switcher410, within a track switcher410, or at the end of a track400.

In an exemplary embodiment, control device350inFIG. 4is attached to a control device holder300and serves to provide sensor and processor functionality to ERAD100for use in autonomous or manual operational modes. The control device350may include, but is not limited to, a smart phone, tablet, off-the-shelf sensor circuit or custom sensor circuit. The control device350and holder300are rotated along a “yaw” axis by rotating control module holder250, which is rotated by yaw rotation motor131by way of an axle that runs through control module holder base200and is attached to rotating control module holder250. Control module holder base200serves to attach rotating control module holder250to housing121. Control device350is rotated along the “pitch” axis by control device pitch rotation motor and axle265.

In an exemplary embodiment, yaw rotation motor131inFIG. 4is mounted to housing121by yaw rotation motor bracket132, however it should be understood that yaw rotation motor131may also be mounted directly to rotating control module holder250.

In an exemplary embodiment, a detachable track cleaner may be attached to housing121inFIG. 4in order to remove debris from track400. In another exemplary embodiment, a detachable track cleaner may be attached to rotation control module holder250or control device holder300to provide rotation along a pitch and yaw axis. The detachable track cleaner may comprise, but is not limited to, mounting hardware and brushes, plows, squeegee, or swabs.

As shown inFIG. 1, wireless device355comprises CBS software application1000. CBS software exists as an application1310on software stack shown inFIG. 12, and includes, but is not limited to, application examples shown inFIG. 13such as Robot Configuration1312to setup the electronic profile of the ERAD, Multimedia Monitoring1314to transmit or receive audio or video signals in an environment, ERAD/Track Maintenance1316to run ERAD diagnostics or clean the track, or Security1318to detect and track audio or video signals in an environment. Applications1310on software stack access software managers and providers via application framework1320. Application framework1320includes, but is not limited to, display manager1322to setup and control display layouts, notifications1324to manage communication to application1310such as user input, access to resources1326such as uniform resource locators (URLs), and content1328such as animations, audio or video. Application framework1320on software stack accesses libraries/OS Runtime1330components, including but not limited to, databases1332such as structured query language (SQL) for efficient storage and retrieval of data, security protocols such as secure socket layer or transport layer security (SSL/TLS)1334for secure access to web sites and cloud based networks, media1336for access to audio or video playback engines, webkit1338for access to web browsers, virtual machine1352such as a java virtual machine (JVM) used to run java compiled code, basic device drivers in core OS libraries1354. Library/OS Runtime1330component accesses device hardware through OS kernel management/HW drivers1360and includes, but is not limited to, power manager1362to setup and control energy use in the device, memory manager1364to allocate and deallocate memory, processes1364to manage and secure multiple tasks running simultaneously in a multi-tasking or multi-threaded environment, display1372to setup and control display hardware, and multimedia1374to setup and control audio, video, graphics and other multimedia based hardware.

A flow diagram of an Elevated Robotic Assistive Device Control Base Station Software Application is shown inFIG. 14. The algorithm begins with an initialization routine1600, with detailed flow diagram shown inFIG. 15and as described subsequently. The initialization sequence serves to setup the system including the track and all ERADs, create database entries for each ERAD, and configure each ERAD with a profile. InFIG. 15, a user is prompted to setup the system track in1602. If the user has not yet setup a track or needs to modify an existing track (e.g. sections added/removed) then YES is selected and a track training routine1604is executed. In1602, if the user has already setup a track or simply wants to setup an ERAD then NO is selected and the user is then prompted in1606to setup the ERADs in the system. If the user selects NO in1606then the initialization routine is terminated,1608, and control is passed back to the CBS software application1500. In1606, if YES is selected then the initialization routine scans for ERAD(n) in1610where n ranges from 1 to N+1 (i.e. one to the total number of ERADs that exist in the system plus one). Scanning for an ERAD(n) may include, but is not limited to, attempting to establish a wireless connection (e.g. WiFi, Bluetooth), attempting to establish a wired connection, or attempting to establish a connection using another communication protocol. In1612, if an ERAD(n) is not found within a timeout interval, then the initialization routine is terminated,1608, and control is passed back to the CBS software application1500. The timeout interval may include, but is not limited to, an absolute timer period (e.g. 20 seconds) or a number of attempts to connect (e.g.10attempts). An ERAD(n) may not be found if there is an error in the communication link or if n=N+1 (i.e. one more ERAD than exists in the system). Finding a ERAD(n) may include, but is not limited to, establishing a communication link with a unique WiFi Media Access Control (MAC) address or some other unique communication signature. If an ERAD(n) is found in1612, a database entry is created for the ERAD(n) and stored either in local storage360or cloud storage in network910ofFIG. 1. It should be understood that if an ERAD(n) has already been scanned (i.e. a database entry already exists) then the existing database entry may be updated to log the repeated scan, but a new database entry would not be created. Once a database entry has been created for ERAD(n),1614, a profile for ERAD(n) is created and uploaded to ERAD(n),1616. The profile for ERAD(n) may include all or a subset of, but not limited to, name, identifier, mac address (if WiFi enabled), sensor thresholds (e.g. low battery level, communication link power levels, microphone input volume level, video input resolution), output audio volume levels, video display brightness, speed settings, alignment algorithm parameters, mode (e.g. manual or autonomous). Once the profile has uploaded to ERAD(n) in1616, the ERAD index n is incremented and the process starting at1610is repeated until n=N+1 (i.e. one more ERAD than exists in the system), after which the initialization routine is terminated,1608, and control passed back to the CBS software application1500.

Returning to CBS software application1500ofFIG. 1, and after CBS Initialization1600, the application enters the main processing loop starting with1502wherein any new ERADs added to the system are detected, added to the database, and initialized if needed, using all or a subset of the initialization routine,1600. Control is then passed to1504where each ERAD(n) is queried for status and statistics are recorded in the database entry assigned to ERAD(n), either in local storage360or cloud storage in network910ofFIG. 1. Control is then passed to determine if a user generated command should be sent to ERAD(n), as determined by user input query,1506. If the user has input a command, then control is passed to1508where the user input is decoded and a command is generated and transmitted to ERAD(n) if needed. If a user input has not occurred in1506, then control is passed to1510where the database entry for ERAD(n),1510, is evaluated and a command is generated and transmitted to ERAD(n) if needed.

If a user selects the option to setup a track in1602ofFIG. 15, control is passed to1700ofFIG. 16, which shows an activity flow diagram of an Elevated Robotic Assistive Device Track Training algorithm comprising the interaction between a base station controller and ERAD controller. The activity flow diagram begins with a single ERAD (e.g. ERAD(1)) powered up, positioned on the track, and initialized through either configuration via CBS or execution of local initialization software on the ERAD. It should be understood that multiple ERADs could be powered up to participate in the track training algorithm. The base station device, executing track training software, continually scans,1702, and creates a track database entry,1704, once ERAD(1) is detected. A command is then sent by the base station to ERAD(1) to move to the next track marker. A track marker may include, but is not limited to bar-code, light, infra-red, magnet, etc. as described herein. ERAD(1) receives the command and moves to the next track marker,1709. Once ERAD(1) reaches the next track marker, it sends a response,1711, to the base station indicating a track marker number identifier and track marker type identifier (e.g. mid-track, end-track, track-switcher, charging station). The base station receives the response and records the track marker information in the track database,1712. If the received track marker type identifier is not an end-track, then control is passed back to1708and a new commands is sent to the ERAD(1) to move to the next track marker and the process repeats until an end-track type identifier is received by the base station. If an end-track type identifier is received by the base station, control is passed to1714and a commands is sent by the base station to ERAD(1) to move to the track switcher. The ERAD(1) receives the command and moves to the track switcher and activates the track switch,1715. Control is then passed to1709and the ERAD(1) moves to the next track marker and repeats the process at1711.

A diagram of an Elevated Robotic Assistive Device ERAD Software Stack is shown inFIG. 17, and may include, but is not limited to a development environment comprised of user applications2100, published libraries2120, runtime library2140, and hardware drivers2160. Alternatively, the software stack may be comprised of a monolithic application1900, runtime library2140, and hardware drivers2160. An exemplary embodiment of a development environment with detailed diagram of a user application2100as it exists in the software stack is shown inFIG. 20. User functions,2102, may include algorithms written by developers to control ERAD behavior, such as residential security monitoring, medical assistance or multimedia record and/or playback. User functions2102access published libraries (i.e. application programmer interfaces, APIs),2120which may include, but are not limited to, functions executed by an ERAD such as autonomous functions,2122, to assist with automatic, stand-alone ERAD processing, multimedia functions,2124to assist with audio, video, and graphics processing, maintenance functions,2126, to assist with diagnostic and other ERAD health processing, manual functions,2128, to assist with user controlled processing, and communication functions,2130, to assist with ERAD-ERAD, ERAD-wireless access point, or ERAD-CBS communication processing. Published libraries,2120, on the software stack access a runtime library,2140, which includes but is not limited to media framework,2142for access to audio or video playback engines, memory management,2144, to allocate and deallocate memory for the applications, and process management,2146, to manage and secure multiple tasks running simultaneously in a multi-tasking or multi-threaded environment. Runtime library,2140, on the software stack accesses hardware drivers,2160, which includes but is not limited to, display drivers,2162, to setup and control display hardware, wireless drivers,2164, to setup and control wireless hardware and protocols, and multimedia drivers,2166, to setup and control audio, video, graphics and other multimedia based hardware.

A detailed diagram of an Elevated Robotic Assistive Device ERAD Monolithic software application is shown inFIG. 18. Control is first passed to an initialization routine2000and is shown in detail inFIG. 19. The initialization routine2000may include, but is not limited to, running a diagnostics routine2002. The diagnostics may be run on hardware and software. If an error or fault is detected2004, the fault message is displayed on a local display or sent via communication link (e.g. wired or wireless) to a connected computer or base station controller, then control is passed back to the monolithic software application, where an idle state is entered1902and the application waits for a command. The wait may be implemented in software as an infinite loop checking for a message to be received or may be implemented as event driven based on receiving a hardware or software interrupt. If the application receives a command, the command is executed, then status and other data may be collected and sent back to the controller issuing the command along with an acknowledge message. In an exemplary embodiment, commands that may be issued by a controller and received, executed, and acknowledged by the monolithic software application may include, but are not limited to, updating the ERAD profile1906(e.g. setting up database entries), hardware configuration1908(e.g. setting motor speed, sensor setup, communication link setup), mode setup1910(e.g. manual or autonomous), send status1912(e.g. sending current health of hardware, position of ERAD, etc.), move to a position on the track1914, activate multimedia1916(e.g. turn on audio record or playback, turn on video capture or playback), activate sensor1918(e.g. turn on a microphone, camera, etc.), optimize WiFi1920(e.g. as described herein and inFIG. 10andFIG. 11).

In an exemplary embodiment, the Elevated Robotic Assistive Device may be used to provide wireless service or determine optimal physical wireless receiver position between multiple transmitting devices in an environment. For example, an ERAD may be used as a mobile wireless access point (AP) such as WiFi, wherein the ERAD moves to an optimal physical point on the track in order to most efficiently service multiple users. An example diagram of multiple users of a transmitting source such as WiFi,901,902in an environment (e.g. residence, coffee shop, book store, etc.) is shown inFIG. 8, wherein an AP is attached to an ERAD and travels either autonomously or manually along a portion of track400(i.e. along markers411a,411b,411c). As shown inFIG. 8, the received signal strength by an AP attached to an ERAD positioned at each of the markers411a,411b,411con track400varies and is depicted by the varying width of the signal arrows. For example, if the AP is positioned at track marker411a, the signal S200received from user901, is much stronger than the signal S214of user902(i.e. S200has a much thicker arrow than S214). Similarly, if the AP attached to an ERAD is positioned at track marker411c, the signal S204received from user901is comparable to the signal S210received from user902.

In some cases, the signal strength becomes too weak to support the required data rate for the application (e.g. on-line game or streaming video) or may drop the communication link altogether. In order to position the ERAD to provide adequate service to all users a controller may be used to manually move the ERAD to a position or an autonomous optimization algorithm may be implemented. Further, if a mobile AP (i.e. AP attached to an ERAD) is realized with an autonomous optimization algorithm and the optimum physical position is found on the track, the algorithm should be adaptable to detect if a user has moved, new users have begun to use the AP, or if a user has ceased using the AP.

An exemplary WiFi Optimization Algorithm1100for a mobile AP using an ERAD is shown inFIG. 10. The algorithm determines the number of WiFi sources1102(i.e. the number of users accessing the AP). Control is then passed to processing block1104which calculates the power of each of the WiFi sources as well as the direction to each source, and is shown in detail inFIG. 11. Once the power and direction is determined for each of the users, control passes to1106where the optimum position is determined that maximizes the power to each of the WiFi sources. Methods to determine the optimum position may include, but are not limited to, calculating the Euclidean distance, calculating the centroid (center of mass), or calculating the center of gravity in non-uniform fields. The optimum position determined in1106may not be physically possible to move to by the ERAD so a track position that is closest to the optimum position is calculated1108.

An exemplary embodiment of the processing for determining the power and direction of each of the WiFi sources1104is shown inFIG. 11. An initialization is performed1202wherein an identifier cycles through the number of WiFi sources, denoted by n where n ranges from 1 to the total number of WiFi sources N, and the number of track positions, denoted by k where k ranges from 1 to the max number of track positions K. The K positions may be all the positions identified by track markers as described herein, or may be a subset of the positions identified by the track markers (e.g. only the track positions in the hallway of a residence) as shown inFIG. 8. Track positions are stored in memory either on the ERAD directly or in a database on a wireless device,355, or in the cloud,910, as described herein. The ERAD is moved to position k and the received WiFi power for each user n (n={1 . . . N}) is measured and stored1204(i.e. the environment is surveyed). The process starting from1204is repeated for all track positions {1 . . . K} by incrementing k, and moving the ERAD to the updated position k,1206, until the power of all users have been measured for each of the positions1208. It should be understood that a single user power may be measured and stored for each track location k (k={1 . . . K}) before moving the ERAD back to the start position and repeating the process starting at1204. Once all the track positions have been surveyed, processing in1212determines the direction of each of the users based on the power levels stored for each of the track positions. Note that the calculated direction may include an ambiguity along an axis perpendicular to the axis of the track, and can be resolved by apriori knowledge on usable space under the track (e.g. the ambiguous position may be inside a wall and not possible). Alternatively, processing in1214determines the position corresponding to the minimum power difference between the users, resulting in the position corresponding to the most uniformly distributed power among the users. In an exemplary embodiment, a priority scheme may be executed which distributes power to each of the users in a non-uniform fashion (e.g. user 1 is allocated 6 dB more power than user 2).

It should be understood that the WiFi optimization technique described herein may be applied to other fixed or mobile positioned wireless devices such as Bluetooth beacons, infra-red transceivers, or the like. The technique may also be applied to finding an optimum audio position (e.g. moving towards a user for the purpose of enhancing voice recognition accuracy). Further, the technique may also be applied to finding an optimum image position (e.g. moving towards a person, pet or landmark for the purpose of enhancing image recognition accuracy). Similar algorithmic methods as described herein (e.g.FIG. 8,FIG. 9A,FIG. 9B,FIG. 10,FIG. 11) can be used for such alternative wireless technologies.

A diagram of a rotating sensor module attached to an ERAD is shown inFIG. 9Awith a detailed diagram of the underside of the module shown inFIG. 9B. An alternate signal strength determination method to that which is described herein may utilize a configuration shown inFIG. 9AandFIG. 9B, which allows for determining the direction of motion of a moving object without the need for the ERAD to traverse track400. In the alternate apparatus and method, the controller hardware on the ERAD is actuated to rotate the sensor module, wherein one or more sensors is mounted on the module. A processor measures the signal strength at fixed angles along the rotation to produce a plurality of signal strength measurements. The processor determines the direction to the object by comparing the signal strength measurements, and subsequently determines the motion of the object by repeating the determination of direction over several time epochs. For example, if the sensor104was an audio directional microphone, the processor actuates hardware to rotate the microphone and measures the received signal at periodic angles comprising the current position at104and subsequent positions along the rotation at106a,106c,106d,106e,106f,106g, and106h. In the example, if the object was positioned along a vector originating from the center of the rotating module (i.e. the center of the circle inFIG. 9B) and extending through the position at104then the expected signal level read from the sensor would be highest at the position at104and the expected levels at positions106aand106cwould be comparable but slightly less than that at position104. Similarly, the expected signal levels at positions106dand106hwould be comparable and slightly less than positions106aand106c, and so on. The determination of decreasing signal levels at the positions would allow for centering a vector in the direction of the object by originating the vector at the center of the rotating module (i.e. the center of the circle inFIG. 9B), extending through the position at the highest measured signal level, and adjusting the angle so that levels between the two adjacent positions are comparable. In a similar example, if the sensor104was a WiFi antenna, the processor actuates hardware to rotate the antenna and measures the received radio signal at the positions along the rotation and determines the direction of the signal source using the technique described herein.

In an alternate embodiment to the rotating sensor module described herein, the sensor module is attached to control device holder300to provide rotation along a pitch and yaw axis. This provides a more precise positioning of the sensors than if the module was attached to housing100.

In an alternate embodiment using the rotating sensor module described herein, the sensor module is not rotated, but instead held in a fixed position and comprises a plurality of sensors mounted at the specific angles identified at106a-106hinFIG. 9B. In this embodiment, instead of rotating the sensor module and taking measurements with the single attached sensor, the measurements are taken from each of the plurality of mounted sensors in a fixed sequence around the sensor module. The algorithm to determine the signal strength and direction may then be identical to that described herein.

A flow diagram of an ERAD Base Station battery maintenance algorithm is shown inFIG. 21. The battery maintenance algorithm may be run on an ERAD100directly as part of an autonomous maintenance routine or may be controlled via wireless device355running a CBS software app1000. The ERAD battery level is retrieved from either local storage on the ERAD100or from a database existing in local storage,360, on the wireless device355, or in the cloud910. The battery level is checked against a minimum threshold2204. If the battery level is greater than the minimum threshold then the maintenance routine is terminated2212. If the battery level is less than the minimum threshold, then the route along track400is determined such that ERAD100may move to the battery charging station. The current or last known position of ERAD100is retrieved from local storage or database2206. The known position on track400of the battery charging station is then used to calculate the route from the ERAD's current position to the charging station. The ERAD then moves to the charging station,2210, either on its own in an autonomous mode, or via MoveTo command,1914issued by a CBS software app1000.

The electronic and algorithmic techniques introduced herein can be implemented by, for example, programmable circuitry (e.g., one or more microprocessors) programmed with software and/or firmware, or entirely in special-purpose hardwired circuitry, or in a combination of such forms. Special-purpose hardwired circuitry may be in the form of, for example, one or more application-specific integrated circuits (ASICs), integrated or stand-alone graphics processing units (GPUs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc.

The term “logic,” as used herein, can include, for example, programmable circuitry programmed with specific software and/or firmware, special-purpose hardwired circuitry, or a combination thereof.