Motion Planning and Control with Multi-Stage Construction of Invariant Sets
20250271860 ยท 2025-08-28
Assignee
Inventors
Cpc classification
G05D2105/89
PHYSICS
G05D1/644
PHYSICS
International classification
Abstract
A system and/or a method for controlling the movement of a vehicle in a constrained environment subject to a disturbed vehicle model including uncertainty on the dynamics governing the movement of the vehicle, collects a feedback signal indicative of a state of the vehicle and a setpoint for controlling the vehicle according to a task and determine a robust invariant set centered on the setpoint for the operation of the vehicle in an unconstrained environment using the disturbed vehicle model. The robust invariant set is inflated equally in all directions until a termination condition defined by the constraint environment is met to produce a safe invariant set enabling control of the operation of the vehicle according to the task while maintaining the state of the vehicle within the safe invariant set.
Claims
1. A method for controlling the movement of a vehicle in a constrained environment subject to disturbed vehicle model including uncertainty on the dynamics governing the movement of the vehicle, wherein the method uses a processor coupled with stored instructions implementing the method, wherein the instructions, when executed by the processor, performs the steps of the method, comprising: collecting a feedback signal indicative of a state of the vehicle and a setpoint for controlling the vehicle according to a task; determining a robust invariant set centered on the setpoint for the operation of the vehicle in an unconstrained environment using the disturbed vehicle model; inflating the robust invariant set equally in all directions until a termination condition defined by the constraint environment is met to produce a safe invariant set; and controlling the operation of the vehicle according to the task while maintaining the state of the vehicle within the safe invariant set.
2. The method of claim 1, wherein the robust invariant set is the smallest set of a predetermined shape characterized by a Lyapunov function and a level of the Lyapunov function for the vehicle corresponding to the disturbed vehicle model.
3. The method of claim 2, wherein the robust invariant set is inflated by one or a combination of changing a level of the Lyapunov function and scaling parameters of the Lyapunov function.
4. The method of claim 2, wherein the predetermined shape of the robust invariant set is ellipsoidal or polyhedral.
5. The method of claim 1, wherein the operation of the vehicle is done by closed-loop feedback control, wherein the robust invariant set is determined to have an ellipsoidal volume with geometry computed in the parameters of the disturbed vehicle model.
6. The method of claim 5, wherein the vehicle is controlled by a controller with unknown gains, and wherein the robust invariant set is determined for a set of possible controllers that describe how the dynamical system toward the setpoint, wherein the set of possible controllers describe the gains of the disturbed vehicle model and are defined with polytopic uncertainty.
7. The method of claim 6, wherein the ellipsoidal volume is determined by solving optimization problem that includes bounds on the maximum rotation angle of the attitude tracking error in the closed-loop vehicle control system, bounded input disturbances of the disturbed vehicle model, and the polytopic uncertainties in the gains of the disturbed vehicle model.
8. The method of claim 1, wherein the control is performed using a model predictive controller over a prediction horizon, such that the safe invariant set is determined for each time step, along each point of the prediction horizon or both.
9. The method of claim 1, further comprising: collecting a differentiable trajectory defining the operation of the dynamical system to perform the task, wherein the differentiable trajectory is not guaranteed to be safe or feasible; determining a differential equation having a solution defining a setpoint trajectory, using the safe invariant set, unsafe differentiable trajectory, and the state of the vehicle; integrate the differential equation for each time step of the control to produce the setpoint trajectory; and controlling the vehicle according to the computed setpoint trajectory.
10. The method of claim 9, wherein the differentiable trajectory is determined using an optimization method that minimizes a cost function including a total variation of the movement of the vehicle and its derivatives subject to constraints of define by the constrained environment.
11. The method of claim 9, wherein the differentiable trajectory is determined using a navigation field computed in simplified world geometry having obstacles of the constraint environment represented as spheres, wherein the simplified world geometry is mapped to the obstacles in the constrained environment using one or more diffeomorphisms.
12. The method of claim 11, wherein the diffeomorphisms are partitioned into a first diffeomorphism that scales the world geometry, and a second diffeomorphism that maps the scaled geometry to the simplified world geometry using obstacle and boundary influence functions computed as solutions to an optimization problem.
13. The method of claim 1, further comprising: computing a set of setpoints and a set of safe invariant sets centered on the corresponding set points; and constructing a graph having vertices defined by the set of setpoints; and determining connectivity of the graph based on the safe invariant sets, such that a connection is established if the robust invariant set of one node is contained in the safe invariant set of another; finding a solution path of vertices connecting an initial vertex in the graph to a terminal vertex in the graph corresponding to the specified task; and controlling the vehicle according to the solution on the graph by switching the setpoints based on the Lyapunov function and its size in relation to the safe invariant sets of the nodes along the vertices in the solution path.
14. The method of claim 13, wherein the solution path on the graph is a time-agnostic sequence of setpoints, wherein the controlling uses a switching logic connecting the time-agnostic sequence of setpoints in time based on the errors induced by the disturbances acting on the vehicle.
15. The method of claim 14, wherein the switching logic is defined by checking if the Lyapunov function associated with the robust invariant set of the next node in the solution path is smaller than the safe invariant set of the same node in the path.
16. The method of claim 15, wherein the motion trajectory is computed in simulation and used to control the vehicle along a set-point trajectory defined in time.
17. The method of claim 1, wherein the vehicle is a drone operating in an indoor environment and the robust invariant set is computed in six-dimensional space comprising the positions and velocities of the drone.
18. The method of claim 1, wherein the dynamical system (or a vehicle) is a drone, wherein the constraint environment includes an indoor environment having obstacles defining the constraints.
19. A feedback controller for controlling a movement of a vehicle in a constrained environment subject to disturbed vehicle model including uncertainty on the movement of the vehicle, comprising: at least one processor; and a memory having instructions stored thereon that, when executed by the at least one processor, cause the feedback controller to: collect a feedback signal indicative of a state of the vehicle and a setpoint for controlling the vehicle according to a task; determine a robust invariant set centered on the setpoint for the operation of the vehicle in an unconstrained environment using the disturbed vehicle model; inflate the robust invariant set equally in all directions until a termination condition defined by the constraint environment is met to produce a safe invariant set; and control the operation of the vehicle according to the task while maintaining the state of the vehicle within the safe invariant set.
20. A non-transitory computer readable storage medium embodied thereon a program executable by a processor for performing a method, the method comprising: collecting a feedback signal indicative of a state of the vehicle and a setpoint for controlling the vehicle according to a task; determining a robust invariant set centered on the setpoint for the operation of the vehicle in an unconstrained environment using the disturbed vehicle model; inflating the robust invariant set equally in all directions until a termination condition defined by the constraint environment is met to produce a safe invariant set; and controlling the operation of the vehicle according to the task while maintaining the state of the vehicle within the safe invariant set.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
DETAILED DESCRIPTION
[0051] In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of the present disclosure. It will be apparent, however, to one skilled in the art that the present disclosure may be practiced without these specific details. In other instances, apparatuses and methods are shown in block diagram only to avoid obscuring the present disclosure.
[0052] As used in this specification and claims, the terms for example, for instance, and such as, and the verbs comprising, having, including, and their other verb forms, when used in conjunction with a listing of one or more components or other items, are each to be construed as open ended, meaning that that the listing is not to be considered as excluding other, additional components or items. The term based on means at least partially based on. Further, it is to be understood that the phraseology and terminology employed herein are for the purpose of the description and should not be regarded as limiting. Any heading utilized within this description is for convenience only and has no legal or limiting effect.
[0053] Specific details are given in the following description to provide a thorough understanding of the embodiments. However, understood by one of ordinary skill in the art can be that the embodiments may be practiced without these specific details. For example, systems, processes, and other elements in the subject matter disclosed may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known processes, structures, and techniques may be shown without unnecessary detail to avoid obscuring the embodiments. Further, like reference numbers and designations in the various drawings indicated like elements.
[0054]
[0055] The environment 100a includes obstacles 111a, 112a, 113a, 114a, 115a, and 116a. Some of these obstacles are convex, such as 112a, and others are non-convex, such as 111a. The vehicle 102a may be an autonomous vehicle, such as a differentially driven mobile robot, an aerial vehicle, a water surface vehicle, or an underwater vehicle. The task's performance is contingent on satisfaction of constraints on the vehicle's 102a motion relating to the environment 100a. In other words, the performance of the task is subject to the constraints. Examples of such constraints include reaching the target region 104a, avoiding collision with the obstacles 111a-116a (i.e., a vehicle-obstacle collision avoidance constraint), moving the vehicle 102a such that the state of the vehicle 102a (e.g., position) is within a pre-defined set of admissible states of the vehicle 102a (i.e., a keep-in constraint), and the like. For instance, an airborne vehicle such as a drone can be tasked to reach certain positions to inspect a structure while avoiding collisions with parts of the structure.
[0056]
[0057] In
[0058]
[0059] The mission 110d may comprise of single waypoints or a set of waypoints that the UAV should visit in sequence, or more abstract information such as tasks depending on the embodiment of the unsafe planner. Such tasks may include landing, taking off, acquiring sensory information, among other tasks. Provided that the unsafe trajectory can take the mission and compute a reference trajectory or set points for the vehicle, several types of missions are used either in isolation or conjunction.
[0060] In the following, it is understood that a vehicle that is to track a set-point has one or more controllers operating on a stabilization or tracking error to steer the vehicle towards the desired set-point. The model that takes the set-point as input and models the closed-loop behavior of the vehicle subject to this setpoint and disturbances is known as the disturbed vehicle model. This is a dynamical system with several parameters, hereinafter referred to as gains.
[0061]
where the disturbance is characterized by
and the disturbing force f is bounded as ff.sub.max. In this embodiment, the disturbed vehicle model is characterized by a set of possible controller gains Co({(K.sub.p.sup.i, K.sub.v.sup.i)}N.sub.i=1.sup.N)=K, and it is assumed that the controller gains that best describe the response of the controlled vehicle resides within this set. In this case the true system response characterized by K=(K.sub.p, K.sub.v)K, and only known in approximate sense with the set K spanned by N known elements (K.sub.p.sup.i, K.sub.v.sup.i). Furthermore, the embodiment includes a maximal bound on the attitude tracking error in the sense that
It is understood that all of the parameters f.sub.max, a.sub.max,{(K.sub.p.sup.i, K.sub.p.sup.i)}.sub.i=1.sup.N, N, m, g need not be known, and that some or all of these parameters can be identified or learned from data either online or offline.
[0062] The disturbed vehicle model is used to compute a robust set 131e, in which the closed-loop control system will reside for all future times subject to the disturbed vehicle model 130e. In some embodiments, the robust set 131e is ellipsoidal, and in others it is polyhedral. Based on the geometry of the world in which the vehicle operates 150e safe robust sets are computed 160e. Any vehicle that starts in a safe robust set 161e remains in the set at all future times, and the safe robust sets are computed such that they do not intersect with the obstacles in the world. In some embodiments, the obstacles are convex or non-convex polytopes, in others they are ellipsoidal volumes, and in yet others they are a combination of both.
[0063] Based on the inflated safe sets, a new set-point 171e is evaluated using a safety mechanism 170e based on the inflated obstacles 161e. The modified set-point is sent to the closed loop control system and used to control the vehicle.
[0064]
Computing Invariant Sets
[0065]
[0066] In some embodiments, this optimization problem is defined with decision variables x=(P, ) which characterize an ellipsoidal set. Specifically, the problem is:
subject to
where
[0067] In other embodiments where structured uncertainties are included, the optimization problem is defined with the decision variables x=(P,
subject to
where
[0068] It is understood that the latter formulation manages to incorporate the structured uncertainties generated by nonperfect attitude tracking. In both cases, the procedure results in a quadratic Lyapunov function
[0069] Where the level set V(p, r, v).sub.max.sup.2=V.sub.min is forward invariant and characterizes an inner approximation of the robust invariant set. In the context of the quadrotor UAV dynamics used in this exemplar, this corresponds to a six-dimensional hyper ellipsoid. It is understood that subject to the disturbed vehicle model, a controlled vehicle that starts tracking a set-point r will remain in the robust invariant set at all future times as long as the set-point remains constant. It is also understood that other representations and approximations of the robust invariant sets are possible, such as through zonotopes or polytopic representations.
[0070] Having formulated the optimization problem 250a it is solved 260a and the solution in terms of the Lyapunov matrix P and the bound 261a are used to compute the robust invariant set O.sub.min 270a.
[0071]
[0072] Some such sensors aim to determine a horizontal velocity of the wind flow for each altitude. Given these measurements, an estimate of the horizontal velocity can be determined from the measurements of the radial velocity using a geometrical relationship and assuming that the wind velocity is homogenous on each plane. Here, is the estimated velocity of the wind flow based on homogenous assumption. Some LiDAR sensors are based on recognition that, for complex terrains, such as the terrain 200B, the homogenous velocity assumption leads to a bias in LiDAR estimation of horizontal velocity. The main error is due to variation of the vertical velocity, e.g., along the hill. To that end, some sensors are based on the realization that the homogeneous velocity assumption in sensing wind flow passing over the complex terrain can be corrected using a horizontal derivative of vertical velocity. Such measurements can be used to inform the bounds of the disturbances of the controlled vehicle system.
[0073]
[0074] Based on this smallest level, the safe robust set is computed and reported 280c, as
[0075] It is recognized that for vehicles such as aerial vehicles, input constraints such as the maximum thrust used by the disturbed vehicle model can be considered in the context of a Lyapunov matrix P by solving an optimization problem
subject to
and subsequently computing the additional level .sub.0 as follows
[0076]
[0077] These sets can be used to ensure safety in several ways, and two such methods are described as part of the disclosure, differing in the way in which the set-points are updated. In the first, the set-point is updated continuously as the solution to an ordinary differential equation. In the second, the set-points are updated discontinuously, forming a piece-wise constant reference trajectory for the controlled system to follow. We start by describing the continuous embodiments, then detail the discontinuous embodiments, before giving implementation details.
Continuous Embodiments
[0078]
where V.sub.max.sup.k is the level associated with the safe invariant set computed at r.sub.k. The differential equation governing the time-evolution of the set-point is:
{dot over (r)}.sub.k=M(p,V,r.sub.k)
where is a positive gain. This differential equation can be integrated in time to update the set-point. It is understood that the initial condition of this differential equation is critical to ensuring safety, and that it can be set from on the initial state of the controlled vehicle 340a.
[0079]
[0080] In some embodiments, such trajectories are computed by minimizing objective functions expressing the total variation of the position trajectory, indicated by 315b for the first segment of the trajectory. In others, the trajectory is computed by a weighted sum of the total variation of the position and all higher derivatives. In yet others, the trajectory is computed to minimize a cost combining a total variation objective with a cost functional in the forces, torques and other signals present in the closed-loop vehicle control system. In other embodiments, the optimization minimizes the total time .sub.i T.sub.i. In some embodiments, the optimization objective comprises all or some of these costs, and optimizes the trajectory subject to endpoint constraints 321b, 322b and continuity constraints. It is understood that an optimization of this kind is computed for a vehicle model in an idealized setting and may result in trajectories that are not safe when considering input disturbances and obstacles given a disturbed vehicle model. In the potentially unsafe motion plan depicted in
[0081] In yet other embodiments, the set-point time derivative is encoded as a vector field expressed as a function of the positional space herein referred to as a navigation function.
[0082]
[0083] A diffeomorphism is a structure-preserving mapping between two smooth manifolds of the same type. It is an invertible function that maps one differentiable manifold to another, in this case the original geometry and the sphere world, such that both the function and its inverse are continuously differentiable. Given that such a diffeomorphism 351c exists, and based on the mission information 310c that contains a goal location, a navigation field can be constructed 360c in the sphere world where all trajectories converge to the goal location provided by the mission without intersecting any of the obstacles in the sphere world. The gradient of this navigation field can subsequently be evaluated through the diffeomorphism to produce a vector field in the original geometry. From this navigation vector field, the position set-point time-derivative can be evaluated at any point in space.
[0084] The computation of a navigation field is an alternative to the optimization-based trajectory computation in
[0085]
[0086] This function is defined in the exterior of any obstacle, and one such function is computed for each obstacle. From these obstacle functions, we can construct a set of obstacle influence functions 330d. It is understood that one way of doing this is as follows
where
[0087] The obstacle influence function computed for obstacle 305d is shown as 302d.
[0088] Similarly, it is recognized that the boundary function 303d for the boundary 310d can be defined in terms of a distance from a point in its interior to the boundary. The boundary function is thus defined only in the interior of the boundary. This function can similarly be converted 331d using the above expressions to a boundary influence function 304d. Using these functions, we next detail how to compute the diffeomorphism, which is henceforth split into two components. The first component is a scaling diffeomorphism, and the second is the mapping from the scaled polyhedral world to the sphere world.
[0089]
h.sub.a(r)=ar,
[0090] For a positive scaling parameter a. The second differomorphism is computed based on the obstacle influence functions as follows
where
[0091] The parameters {(r.sub.i, w.sub.i)}.sub.i=0.sup.M determine the shape of the obstacles and boundary in the target sphere world. When passing points in the unscaled polyhedral world first through h.sub.a 320e and then through h.sub. 330e, these points are mapped to unique points in the sphere world 350e, as shown in
[0092]
[0093] When transformed back to the original polyhedral world 320f using a composition of the first diffeomorphism 320e and the second diffeomorphism 330e, the resulting navigation field 332f is such that all solutions moving in the negative gradient of the field converge to the goal position 302f, while avoiding the polyhedral obstacles 331f, 312f, 313f, 314f when moving orthogonality to the level sets 333f in the direction of the negative gradient. Consequently, specifying the goal location in the mission information, and knowing the obstacles, the navigation function of the sphere world and its gradient can be evaluated at any point in the interior of the world boundary, excluding the interior of the obstacles. It is understood that the resulting gradient can be taken as the set-point time derivative used as the unsafe reference to the safety mechanism, with
where
(r;r.sub.G)=({circumflex over ()}h.sub.h.sub.a)(r;r.sub.G).
[0094]
[0095] This represents one embodiment of the safety mechanism, but it is understood that the unsafe reference time derivative can be exchanged for other motion plans, such as the optimization-based motion plan used in other embodiments of the invention.
[0096]
Discontinuous Embodiments
[0097] Another embodiment of the invention is to update the set-point trajectory in a discontinuous manner, where the ordinary differential equation used to integrate the position set-point is replaced by a sequence of constant set-points and logic to switch between the set-points.
[0098]
[0099] Next, we detail how safety can be ensured when switching the set-point 420a using the robust invariant sets 230c and safe invariant set 212d computed in containing a set of vertices
={
}.sub.i=1.sup.L and a set of edges .Math.
connecting some of the vertices. Each vertex in the graph is associated with a set-point in space, r.sub.k, a robust invariant set 230c to which all safe motions converge given the disturbed vehicle model, and a safe invariant set 212d that contains the robust invariant set. The nature of safe invariant set 212d is that all solutions initialized in its interior remains safe for all future times, and eventually converge to the robust invariant set 230c.
[0100] .sub.k 402b is contained in the safe invariant set 112b of another vertex
.sub.k+1 404b, then any.sup.AT trajectory started outside the robust invariant set 411b of the vertex
.sub.k 402.sub.b will, if it remains safe, converge the robust invariant set 411b if the controlled vehicle system is tracking its associated set-point. If so, the system will eventually converge to the interior of the safe invariant set 112b of another vertex
.sub.k+1 404b, at which point it is safe to switch set-points.
[0101] A robust invariant set contained in the interior of the safe invariant set 112b of another vertex thus implies that a transition between the two vertices will be possible in that direction and can be used to define a directed edge in the graph. The construction of this graph will be explained shortly, and with it a solution path connecting the initial vertex 401b and the terminal vertex 403b can be computed.
[0102] Furthermore, if the controlled vehicle is steered toward a set-point associated with the intermediary vertex 402a, then as soon as it enters the safe invariant set 112b of the next vertex 404a in the path, it will be safe to switch the set-points. The distance between the current state of the vehicle and the safe invariant set of the next vertex in the path is referred to as the error margin 430a and dictates how the discrete set-points are updated in 420a. We start by describing how the graph can be constructed and searched, before detailing the switching logic and computation of the error margin.
[0103] .sub.i}.sub.i=1.sup.L 460c containing {(r.sub.l, V.sub.min.sup.l, V.sub.max.sup.l)}.sub.l=1.sup.L. For each pair (
.sub.i,
.sub.j) of candidate vertices in the vertex set {
.sub.i=1}.sup.L, it is checked if the robust invariant set associated with
.sub.i is contained in the safe invariant set of vertex
.sub.j. If this is true, a cost is evaluated 450c and associated with an edge between
.sub.i and
.sub.j that is added to the graph. This procedure is repeated until all possible pairs of vertices have been considered.
[0104] It is understood that the cost associated with the edges of the graph can be evaluated in many ways. In some embodiments, it is taken as a function of the positions of the set-points associated with the two vertices of the edge. This function can for example be a norm of the difference between the set-points. In another embodiment, the cost is computed as the shortest largest distance between the boundary of the robust invariant set of the vertex .sub.i and the sale invariant set of the vertex
.sub.j. In yet other embodiments, the cost is taken to be a function expression of the worst-case tracking errors and control effort necessary for the disturbed system to go from the robust invariant set of the vertex
.sub.i to the next robust invariant set of the vertex
.sub.j. In yet other embodiments, the cost is associated with expected sensing quality in the region of space containing the safe invariant set of the vertex
.sub.i, the vertex
.sub.j, or both. In other embodiments, the cost is set equal in all the edges. Finally, it is understood that the cost can also be expressed using any combination of the above-mentioned methods.
[0105] Once the graph has been computed, a graph-search algorithm is used to compute 460c the optimal path connecting the starting vertex 401b with the terminal vertex 403b given the chosen cost. It is understood that many different graph-search methods can be used for this purpose, such as the Dijkstra or A-star algorithms. It is also recognized that the cost to go in the A-star algorithm can be computed in several ways, and that it can be adapted based on the cost used when constructing the edges of the graph. Once the graph-search method has computed a path 460c, this path 470c is provided as input to the safety mechanism 410a.
[0106]
[0107]
[0108] It is understood that this method of switching ensures that the controlled vehicle always remains in a safe invariant set, thus ensuring safety, and that the controlled system will reach the robust invariant set associated with the terminal vertex in finite time, of there exists a path from the initial to the terminal vertex in the graph.
[0109]
[0110]
Implementation Examples
[0111]
[0112]
[0113]
[0114] The memory 605a can store instructions that are executable by the computing device 600a and any data that can be utilized by the methods and systems of the present disclosure. The memory 605a can include random access memory (RAM), read only memory (ROM), flash memory, or any other suitable memory systems. The memory 605a can be a volatile memory unit or units, and/or a non-volatile memory unit or units. The memory 605a may also be another form of computer-readable medium, such as a magnetic or optical disk.
[0115] The storage device 607a can be adapted to store supplementary data and/or software modules used by the computer device 600a. The storage device 607a can include a hard drive, an optical drive, a thumb-drive, an array of drives, or any combinations thereof. Further, the storage device 607a can contain a computer-readable medium, such as a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configurations. Instructions can be stored in an information carrier. The instructions, when executed by one or more processing devices (for example, the processor 603a), perform one or more methods, such as those described above.
[0116] The computing device 600a can be linked through the bus 609a, optionally, to a display interface or user Interface (HMI) 647a adapted to connect the computing device 600a to a display device 649a and a keyboard 651a, wherein the display device 649a can include a computer monitor, camera, television, projector, or mobile device, among others.
[0117] The high-speed interface 611a manages bandwidth-intensive operations for the computing device 600a, while the low-speed interface 613a manages lower bandwidth-intensive operations. Such an allocation of functions is only an example. In some implementations, the high-speed interface 611a can be coupled to the memory 605a, the user interface (HMI) 648a, and to the keyboard 651a and the display 649a (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 615a, which may accept various expansion cards via the bus 609a.
[0118] In an implementation, the low-speed interface 613a is coupled to the storage device 607a and the low-speed expansion ports 617a, via the bus 609a. The low-speed expansion ports 517, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to the one or more input/output devices 641a. The computing device 600a may be connected to a server 653a and a rack server 655a. The computing device 600a may be implemented in several different forms. For example, the computing device 600a may be implemented as part of the rack server 655a.
[0119] The description provides exemplary embodiments only and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the following description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing one or more exemplary embodiments. Contemplated are various changes that may be made in the function and arrangement of elements without departing from the spirit and scope of the subject matter disclosed as set forth in the appended claims. Specific details are given in the following description to provide a thorough understanding of the embodiments. However, understood by one of ordinary skill in the art can be that the embodiments may be practiced without these specific details. For example, systems, processes, and other elements in the subject matter disclosed may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known processes, structures, and techniques may be shown without unnecessary detail to avoid obscuring the embodiments. Further, like reference numbers and designations in the various drawings indicated like elements.
[0120] Also, individual embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may be terminated when its operations are completed but may have additional steps not discussed or included in a figure. Furthermore, not all operations in any particularly described process may occur in all embodiments. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, the function's termination can correspond to a return of the function to the calling function or the main function.
[0121] Furthermore, embodiments of the subject matter disclosed may be implemented, at least in part, either manually or automatically. Manual or automatic implementations may be executed, or at least assisted, using machines, hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine-readable medium. A processor(s) may perform the necessary tasks.
[0122] Further, embodiments of the present disclosure and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Further, some embodiments of the present disclosure can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non-transitory program carrier for execution by, or to control the operation of, data processing apparatus. Further still, program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
[0123] A computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
[0124] A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub programs, or portions of code. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
[0125] Computers suitable for the execution of a computer program include, by way of example, can be based on general or special purpose microprocessors or both, and any other central processing unit. Generally, a central processing unit will receive instructions and data from a read only memory or a random-access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
[0126] To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., an LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
[0127] Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The system's components can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
[0128] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship with each other.
[0129] Although the present disclosure has been described with reference to certain preferred embodiments, it is to be understood that various other adaptations and modifications can be made within the spirit and scope of the present disclosure. Therefore, it is the aspect of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the present disclosure.