Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
AUTONOMOUS DOCKING OF A VEHICLE TO A LOADING DOCK
Document Type and Number:
WIPO Patent Application WO/2019/005976
Kind Code:
A1
Abstract:
The disclosure provides a method for maneuvering a vehicle in reverse for docking at a loading dock. The method includes identifying one or more loading docks within one or more images and receiving an indication of a selected loading dock from the one or more identified loading dock. The method also includes determining a path from an initial position to a final position. The final position such that the vehicle is docked within the loading dock. The path includes maneuvers configured to move the vehicle along the path. The method also includes transmitting to a drive system of the vehicle-, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

Inventors:
KHASAWNEH LUBNA (US)
HARTMANN STEFFEN (US)
FROEHLICH DOMINIK (US)
MUHAREMOVIC IBRO (US)
Application Number:
PCT/US2018/039767
Publication Date:
January 03, 2019
Filing Date:
June 27, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
CONTINENTAL AUTOMOTIVE SYSTEMS INC (US)
International Classes:
B60D1/24; B62D13/06; B62D15/02
Domestic Patent References:
WO2005021344A12005-03-10
Foreign References:
DE102016105261A12016-09-29
Other References:
None
Attorney, Agent or Firm:
ABI-NADER, Paola et al. (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method for maneuvering a vehicle system in reverse for docking at a loading dock, the vehicle system including a vehicle, the method comprising:

identifying, by data processing hardware, one or more loading docks within one or more images;

receiving, at a user interface in communication with the data processing hardware, an indication of a selected loading dock from the one or more identified loading dock; determining, at the data processing hardware, a path from an initial position to a final position where the vehicle system is docked within the loading dock, the path comprising maneuvers configured to move the vehicle system along the path; and

transmitting, from the data processing hardware to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

2. The method of claim 1, further comprising receiving, at the data processing hardware, the one or more images from one or more cameras positioned on a rear portion of the vehicle system.

3. The method of claim 1, further comprising:

determining, at the data processing hardware, a trailer angle between a trailer connected to the vehicle and a line perpendicular to the selected loading dock;

determining, at the data processing hardware, a vehicle angle between the vehicle and the line perpendicular to the selected loading dock; and

determining, at the data processing hardware, the path based on the trailer angle and the vehicle angle.

4. The method of claim 1, further comprising;

determining, at the data processing hardware, a loading dock position associated with the selected loading dock; determining, at the data processing hardware, a rear position of a rear center of the vehicle system; and

determining, at the data processing hardware, the path based on the loading dock position and the rear position.

5. The method of claim 1, further comprising:

receiving, at the data processing hardware, sensor data from one or more sensors positioned on the vehicle system;

identifying, at the data processing hardware, one or more objects along the path based on the sensor data; and

when one or more objects are identified, adjusting, at the data processing hardware, the path to avoid the one or more objects.

6. The method of claim 5, wherein adjusting the path to avoid the one or more objects comprises determining an adjusted path comprising maneuvers configured to move the vehicle system along the adjusted path while avoiding the one or more objects.

7. A system for maneuvering a vehicle system in a reverse direction, the vehicle system including a vehicle, the system comprising:

a user interface;

data processing hardware in communication with the user interface; and hardware memory in communication with the data processing hardware, the hardware memory storing instructions that when executed on the data processing hardware cause the data processing hardware to perform operations comprising:

identifying one or more loading docks within one or more images;

receiving, from the user interface, an indication of a selected loading dock from the one or more identified loading dock;

determining a path from an initial position to a final position where the vehicle system is docked within the loading dock, the path comprising maneuvers configured to move the vehicle system along the path; and transmitting to a drive system of the vehicle in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

8. The system of claim 7, wherein the operations further comprise:

determining a trailer angle between a trailer attached to the vehicle at a hitch point and a line perpendicular to the selected loading dock;

determining a vehicle angle between the vehicle and the line perpendicular to the selected loading dock; and

determining the path based on the trailer angle and the vehicle angle.

9. The system of claim 7, wherein the operations further comprise;

determining a loading dock position associated with the selected loading dock; determining a rear position of a rear center of the vehicle system; and

determining the path based on the loading dock position and the rear position.

10. The system of claim 7, wherein the operations further comprise:

receiving sensor data from one or more sensors positioned on the vehicle system; identifying one or more objects along the path based on the sensor data; and when one or more objects are identified, adjusting the path to avoid the one or more objects.

11. The system of claim 7, wherein the vehicle system include one of a semi-truck, a truck, and a vehicle-trailer having a vehicle attached to a trailer.

12. A method for managing a fleet of vehicle systems within a vehicle lot having one or more loading docks, each vehicle system comprising a vehicle, the method

comprising:

identifying, by data processing hardware, one or more loading docks within one or more images; receiving, at the data processing hardware, a vehicle indication indicative of a vehicle system entering the vehicle lot;

displaying, on a user interface in communication with the data processing hardware, an environment of the vehicle lot including the one or more loading docks and the vehicle system, the environment of the vehicle lot based on the one or more images and the vehicle indication;

receiving, at the user interface, a first user selection of the vehicle indication and a second user selection of a selected loading dock from the one or more loading docks; determining, at the data processing hardware, a path between the vehicle system and the selected loading dock, the path comprising maneuvers configured to move the vehicle system along the path; and

transmitting, from the data processing hardware to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

13. The method of claim 12, further comprising:

receiving, at the data processing hardware, the one or more images from one or more cameras positioned on a rear portion of the vehicle system; and/or

receiving, at the data processing hardware, the one or more images from one or more cameras configured to capture images of the vehicle lot.

14. The method of claim 12, further comprising:

determining, at the data processing hardware, a trailer angle between a trailer connected to the vehicle at a hitch point and a line perpendicular to the selected loading dock;

determining, at the data processing hardware, a vehicle angle between the vehicle and the line perpendicular to the selected loading dock; and

determining, at the data processing hardware, the path based on the trailer angle and the vehicle angle.

15. The method of claim 12, further comprising; determining, at the data processing hardware, a loading dock position associated with the selected loading dock;

determining, at the data processing hardware, a rear position of a rear center of the vehicle system; and

determining, at the data processing hardware, the path based on the loading dock position and the rear position.

16. The method of claim 12, further comprising:

receiving, at the data processing hardware, sensor data from one or more sensors positioned on the vehicle system and in communication with the data processing hardware;

identifying, at the data processing hardware, one or more objects within the path based on the sensor data; and

when one or more objects are identified, adjusting, at the data processing hardware, the path to avoid the one or more objects.

17. The method of claim 16, wherein adjusting the path to avoid the one or more objects comprises determining an adjusted path comprising maneuvers configured to move the vehicle system along the adjusted path while avoiding the one or more objects.

18. A system for managing a fleet of vehicle systems within a vehicle lot having one or more loading docks, each vehicle system comprising a vehicle, the system comprising: a user interface;

data processing hardware in communication with the user interface; and hardware memory in communication with the data processing hardware, the hardware memory storing instructions that when executed on the data processing hardware cause the data processing hardware to perform operations comprising:

identifying one or more loading docks within one or more images;

receiving a vehicle indication indicative of a vehicle system entering the vehicle lot; displaying, on the user interface, an environment of the vehicle lot including the one or more loading docks and the vehicle system, the environment of the vehicle lot based on the one or more images and the vehicle indication;

receiving a first user selection of the vehicle indication and a second user selection of a selected loading dock from the one or more loading docks;

determining a path between the vehicle system and the selected loading dock, the path comprising maneuvers configured to move the vehicle system along the path; and

transmitting to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

19. The system of claim 18, wherein the operations further comprise:

determining a trailer angle between a trailer connected to the vehicle and a line perpendicular to the selected loading dock;

determining a vehicle angle between the vehicle and the line perpendicular to the selected loading dock; and

determining the path based on the trailer angle and the vehicle angle.

20. The system of claim 18, wherein the operations further comprise;

determining a loading dock position associated with the selected loading dock; determining a rear position of a rear center of the vehicle system; and determining the path based on the loading dock position and the rear position.

21. The system of claim 18, wherein the operations further comprise:

receiving sensor data from one or more sensors positioned on the vehicle system and in communication with the data processing hardware;

identifying one or more objects within the path based on the sensor data; and when one or more objects are identified, adjusting the path to avoid the one or more objects.

22. The system of claim 18, wherein the vehicle systems include at least one of a semi-truck, vehicle, and vehicle-trailer.

Description:
Autonomous Docking Of A Vehicle To A Loading Dock

TECHNICAL FIELD

[0001] This disclosure relates to an automotive vehicle configured to identify one or more loading docks positioned behind the automotive vehicle and autonomously drive to one of the one of the one or more loading docks.

BACKGROUND

[0002] Trailers are usually unpowered vehicles that are pulled by a powered tow vehicle. A trailer may be a utility trailer, a popup camper, a travel trailer, livestock trailer, flatbed trailer, enclosed car hauler, and boat trailer, semi-trailer, among others. The tow vehicle may be a car, a crossover, a truck, a semi-truck, a van, a sports-utility-vehicle (SUV), a recreational vehicle (RV), or any other vehicle configured to attach to the trailer and pull the trailer. The trailer may be attached to a powered vehicle using a trailer hitch. A receiver hitch mounts on the tow vehicle and connects to a trailer hitch to form a connection. The trailer hitch may be a ball and socket, a fifth wheel and gooseneck, or a trailer jack. Other attachment mechanisms may also be used. In addition to the mechanical connection between the trailer and the powered vehicle, in some example, the trailer is electrically connected to the tow vehicle. As such, the electrical connection allows the trailer to take the feed from the powered vehicle's rear light circuit, allowing the trailer to have taillights, turn signals, and brake lights that are in sync with the powered vehicle's lights.

[0003] Some of the challenges that face vehicle drivers, especially tow vehicle drivers, is backing up to a specific location, such as a loading dock of a commercial or an industrial building, or a warehouse, because sometimes more than one person may be needed to maneuver the vehicle towards the loading dock. For example, one person drives the tow vehicle, e.g., the driver, and another one or more people are needed to view the vehicle and the trailer and provide the driver with direction regarding the path that the vehicle has to take to position the trailer (sometimes attached to the vehicle) and itself within the loading dock. In some instances, the people providing directions to the driver may have difficulty providing efficient instructions for directing the path of the vehicle.

[0004] Recent advancements in sensor technology have led to improved safety systems for vehicles. Arrangements and methods for detecting and avoiding collisions are becoming available. Sensors and cameras located on the vehicle and the trailer may be used to alert a driver of possible obstacles when the vehicle is traveling in a forward direction or a rearward direction. Therefore, it is desirable to provide a vehicle system that includes sensors to overcome the challenges faced by drivers of vehicles when backing up to a specific location, such as a loading dog, for example.

SUMMARY

[0005] One aspect of the disclosure provides a method for maneuvering a vehicle system in reverse for docking at a loading dock. The vehicle system includes a vehicle, a truck, or a vehicle connected to a trailer. The method includes identifying, by data processing hardware, one or more loading docks within one or more images and receiving, at a user interface in communication with the data processing hardware, an indication of a selected loading dock from the one or more identified loading dock. The method also includes determining, at the data processing hardware, a path from an initial position to a final position. The final position such that the vehicle system is docked within the loading dock. The path includes maneuvers configured to move the vehicle system along the path. The method also includes transmitting, from the data processing hardware to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to

autonomously move along the path in reverse direction.

[0006] Implementations of this aspect of the disclosure may include one or more of the following optional features. In some implementations, the method further includes receiving, at the data processing hardware, the one or more images from one or more cameras positioned on a rear portion of the vehicle system. For example, the one or more cameras are positioned on a rear portion of the vehicle system such that the one or more cameras capture images of an environment behind the vehicle system. [0007] In some implementations, the vehicle system includes a vehicle and a trailer. In this case, the method includes determining, at the data processing hardware, a trailer angle and a vehicle angle. The trailer angle being an angle between the trailer and a line perpendicular to the loading dock; while the vehicle angle being an angle between the vehicle and the line perpendicular to the loading dock. The method also includes determining, at the data processing hardware, the path based on the trailer angle and the vehicle angle.

[0008] The method may also include determining, at the data processing hardware, a loading dock position. The loading dock position may be relative to the vehicle system, for example by way of a coordinate system. The method may also include determining, at the data processing hardware, a rear position of a rear center of the vehicle system. The rear position may also be by way of a coordinate system. In some example, the method includes determining, at the data processing hardware, the path based on the loading dock position and the rear position.

[0009] In some implementations, the method includes receiving, at the data processing hardware, sensor data from one or more sensors positioned on the vehicle system; and identifying, at the data processing hardware, one or more objects along the path based on the sensor data. When one or more objects are identified, the method includes adjusting, at the data processing hardware, the path to avoid the one or more objects. In some examples, adjusting the path to avoid the one or more objects includes determining an adjusted path including maneuvers configured to move the vehicle system along the adjusted path while avoiding the one or more objects.

[0010] Another aspect of the disclosure provides a system for maneuvering a vehicle system in a reverse direction. The vehicle system may include a vehicle or a vehicle attached to a trailer at a hitch point. The system includes a user interface, data processing hardware in communication with the user interface, and hardware memory in

communication with the data processing hardware. The hardware memory stores instructions that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include identifying one or more loading docks within one or more images, and receiving, from the user interface, an indication of a selected loading dock from the one or more identified loading dock. The operations also include determining a path from an initial position to a final position where the vehicle system is docked within the loading dock. The path includes maneuvers configured to move the vehicle system along the path. The operations also include transmitting to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

[0011] Implementations of this aspect of the disclosure may include one or more of the following optional features. In some implementations, the operations further include determining a trailer angle and a vehicle angle. The trailer angle being an angle between the trailer and a line perpendicular to the loading dock; while the vehicle angle is an angle between the vehicle and the line perpendicular to the loading dock. The operations also include determining the path based on the trailer angle and the vehicle angle.

[0012] In some examples, the operations further include determining a loading dock position (e.g., by way of a coordinate system) and a rear position (e.g., by way of the coordinate system) of a rear center of the vehicle system. The operations also include determining the path based on the loading dock position and the rear position.

[0013] In some implementations, the operations include receiving sensor data from one or more sensors positioned on the vehicle system, and identifying one or more objects along the path based on the sensor data. When one or more objects are identified, the operations further include adjusting the path to avoid the one or more objects.

[0014] Another aspect of the disclosure provides a method for managing a fleet of vehicle systems within a vehicle lot having one or more loading docks. The fleet of vehicle systems may include one or more vehicles and/or vehicles attached to trailers (e.g., a vehicle-trailer system). The method includes identifying, by data processing hardware, one or more loading docks within one or more images. The method also includes receiving, at the data processing hardware, a vehicle indication indicative of a vehicle system entering the vehicle lot, and displaying, on a user interface in

communication with the data processing hardware, an environment of the vehicle lot including the one or more loading docks and the vehicle system. The environment of the vehicle lot is based on the one or more images and the vehicle indication. The method also includes receiving, at the user interface, a first user selection of the vehicle indication and a second user selection of a selected loading dock from the one or more loading docks. The method includes determining, at the data processing hardware, a path between the vehicle system and the selected loading dock. The path includes maneuvers configured to move the vehicle system along the path. The method also includes transmitting, from the data processing hardware to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to autonomously move along the path in reverse direction.

[0015] Implementations of this aspect of the disclosure may include one or more of the following optional features. In some implementations, the method includes receiving, at the data processing hardware, the one or more images from one or more cameras positioned on a rear portion of the vehicle system, and/or receiving, at the data processing hardware, the one or more images from one or more cameras configured to capture images of the vehicle lot.

[0016] In some examples, the method includes determining at the data processing hardware a trailer angle and a vehicle angle. The trailer angle being an angle between the trailer and a line perpendicular to the loading dock, and the vehicle angle being an angle between the vehicle and the line perpendicular to the loading dock. The method includes determining, at the data processing hardware, the path based on the trailer angle and the vehicle angle.

[0017] In some implementations, the method includes determining, at the data processing hardware, a loading dock position and a rear position of a rear center of the vehicle system. The method includes determining, at the data processing hardware, the path based on the loading dock position and the rear position.

[0018] The method may include receiving, at the data processing hardware, sensor data from one or more sensors positioned on the vehicle system and in communication with the data processing hardware, and identifying, at the data processing hardware, one or more objects within the path based on the sensor data. When one or more objects are identified, the method includes adjusting, at the data processing hardware, the path to avoid the one or more objects. Adjusting the path to avoid the one or more objects may include determining an adjusted path that includes maneuvers configured to move the vehicle system along the adjusted path while avoiding the one or more objects. [0019] Yet another aspect of the disclosure provides a system for managing a fleet of vehicle systems within a vehicle lot having one or more loading docks. The system includes a user interface, data processing hardware in communication with the user interface, and hardware memory in communication with the data processing hardware. The hardware memory stores instructions that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include identifying one or more loading docks within one or more images and receiving a vehicle indication indicative of a vehicle system entering the vehicle lot. The operations also include displaying, on the user interface, an environment of the vehicle lot including the one or more loading docks and the vehicle system, the environment of the vehicle lot based on the one or more images and the vehicle indication. The operations include receiving a first user selection of the vehicle indication and a second user selection of a selected loading dock from the one or more loading docks and determining a path between the vehicle system and the selected loading dock. The path includes maneuvers configured to move the vehicle system along the path. The operations also include transmitting to a drive system of the vehicle system in communication with the data processing hardware, one or more commands causing the vehicle system to

autonomously move along the path in reverse direction.

[0020] Implementations of this aspect of the disclosure may include one or more of the following optional features. In some implementations, the operations include determining a trailer angle between the trailer and a line perpendicular to the loading dock and determining a vehicle angle between the vehicle and the line perpendicular to the loading dock. The operations also include determining the path based on the trailer angle and the vehicle angle.

[0021] In some examples, the operations further include determining a loading dock position and a rear position of a rear center of the vehicle system. The operations include determining the path based on the loading dock position and the rear position.

[0022] In some implementations, the operations includes receiving sensor data from one or more sensors positioned on the vehicle system and in communication with the data processing hardware and identifying one or more objects within the path based on the sensor data. When one or more objects are identified, the operations include adjusting the path to avoid the one or more objects.

[0023] The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

[0024] FIGS. 1A and IB are schematic views of an exemplary vehicle system having a user interface displaying an indication of loading docks behind the vehicle system.

[0025] FIG. 2 is a perspective view of an exemplary vehicle system.

[0026] FIG. 3A is a perspective view of an exemplary vehicle system at an initial position.

[0027] FIG. 3B is a perspective view of an exemplary vehicle system at an intermediate position.

[0028] FIG. 3C is a perspective view of an exemplary vehicle system at a final position.

[0029] FIG. 4A is a perspective view of an exemplary vehicle system at an initial position.

[0030] FIG. 4B is a perspective view of an exemplary vehicle system at an intermediate position.

[0031] FIG. 4C is a perspective view of an exemplary vehicle system at a final position.

[0032] FIG. 5A and 5B are schematic views of a vehicle backing up towards a loading dock.

[0033] FIG. 6A and 6B are schematic views of a vehicle-trailer system backing up towards a loading dock.

[0034] FIG. 7 is a schematic view of an exemplary arrangement of operations for a method of maneuvering a vehicle system in a reverse direction.

[0035] FIG. 8 is a perspective view of an exemplary operator controlling multiple vehicle systems. [0036] FIG. 9 is a schematic view of an exemplary arrangement of operations for managing a fleet of vehicles for docking in a docking lot.

[0037] Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

[0038] A vehicle, such as, but not limited to a car, a crossover, a truck, a semi-truck, a van, a sports-utility-vehicle (SUV), and a recreational vehicle (RV) may be configured to tow a trailer. The vehicle connects to the trailer by way of a trailer hitch. It is desirable to have a vehicle system, for example, a vehicle-trailer system, that can autonomously back- up towards a loading dock, such as a loading dock of a commercial or an industrial building, or a warehouse. This eliminates the need for a driver to drive the vehicle system in a rearward direction while another one or more people provide the driver with directions for maneuvering the vehicle system towards the loading dock. As such, a vehicle system with an autonomous rearward driving feature provides the driver with a safer and faster experience when backing up to a loading dock. In some examples, the vehicle system may receive an instruction from the driver of the vehicle associated with the vehicle system, or from an operator being at a location different from the location of the vehicle system to autonomously dock the vehicle system within loading dock.

Moreover, the vehicle system may autonomously maneuver from the loading dock in a forward direction to a driver or operator selected location (determined by way of a user interface).

[0039] Referring to FIGS. 1A, IB and 2, in some implementations, a vehicle system 100 includes a vehicle 102 that may be hitched to a trailer 104. A driver of the vehicle system 100 may want to drive to a loading dock 200, 200a-n, for example, a specific loading dock 200a-n from a group of loading docks 200, 200a-n. The vehicle system 100 may be configured to receive an indication 143 of a driver selection 144 associated with a selected loading dock 200, 200a-n and autonomously drive towards the selected loading dock 200, 200a-n.

[0040] The vehicle system 100 may include a drive system 110 associated with the vehicle 102 that maneuvers the vehicle system 100 across a road surface based on drive commands having x, y, and z components, for example. As shown, the drive system 110 includes a front right wheel 112, 112a, a front left wheel 112, 112b, a rear right wheel 112, 112c, and a rear left wheel 112, 112d. In addition, the drive system 110 may include wheels (not shown) associated with the trailer 104. The drive system 110 may include other wheel configurations as well. The drive system 110 may also include a brake system 120 that includes brakes associated with each wheel 112, 112a-d, and an acceleration system 130 that is configured to adjust a speed and direction of the vehicle system 100. In addition, the drive system 110 may include a suspension system 132 that includes tires associates with each wheel 112, 112a-d, tire air, springs, shock absorbers, and linkages that connect the vehicle system 100 to its wheels 112, 112a-d and allows relative motion between the vehicle system 100 and the wheels 112, 112a-d. The suspension system 132 improves the road handling of the vehicle system 100 and provides a better ride quality by isolating road noise, bumps, and vibrations. In addition, the suspension system 132 is configured to adjust a height of the vehicle 102 and in some example, the height of the trailer 104, allowing the vehicle system 100 to align with the loading dock 200, 200a-n.

[0041] The vehicle 102 may move across the road surface by various combinations of movements relative to three mutually perpendicular axes defined by the vehicle 102: a transverse axis X v , a fore-aft axis Y v , and a central vertical axis Z v . The transverse axis x, extends between a right side R and a left side of the vehicle 102. A forward drive direction along the fore-aft axis Y v is designated as F, also referred to as a forward motion. In addition, an aft or rearward drive direction along the fore-aft direction Y v is designated as R, also referred to as rearward motion. When the suspension system 132 adjusts the suspension of the vehicle 102, the vehicle 102 may tilt about the X v axis and or Yv axis, or move along the central vertical axis Z v . As the vehicle 102 moves, the trailer 104 follows along a path of the vehicle 102. Therefore, when the vehicle 102 makes a turn as it moves in the forward direction F, then the trailer 104 follows along. While turning, the vehicle 102 and the trailer 104 have a turn angle (not shown) between one another about the trailer hitch 160 connecting the vehicle 102 and the trailer 104 together. [0042] In examples where the vehicle system 100 includes the vehicle 102 and a trailer 104 hitched to the vehicle 102, the trailer 104 follows the vehicle 102 across the road surface by various combinations of movements relative to three mutually

perpendicular axes defined by the trailer 104: a trailer transverse axis Χτ, a trailer fore-aft axis Y T , and a trailer central vertical axis Ζτ. The trailer transverse axis Χτ, extends between a right side R and a left side of the trailer 104. A forward drive direction along the trailer fore-aft axis Y T is designated as F, also referred to as a forward motion. In addition, a trailer aft or rearward drive direction along the fore-aft direction Y T is designated as R, also referred to as rearward motion. In this case, movement of the vehicle system 100 (the vehicle 102 and the trailer 104) includes movement of the vehicle 102 along its transverse axis X v , fore-aft axis Y V , and central vertical axis Z v , and movement of the trailer 104 along its trailer transverse axis Χτ, trailer fore-aft axis Y T , and trailer central vertical axis Ζτ.

[0043] The vehicle 102 may include a user interface 140, such as, a display. The user interface 140 may be positioned inside the vehicle 102 (as shown in FIG. 1) or the user interface 140 may be a standalone device in communication with the vehicle 102. The user interface 140 receives one or more user commands from the driver via one or more input mechanisms or a touch screen display 142 and/or displays one or more notifications to the driver. The user interface 140 is in communication with a vehicle system controller 300, which is in turn in communication with a sensor system 400. In some examples, the user interface 140 displays an image of an environment of the vehicle system 100 leading to one or more commands being received by the user interface 140 (from the driver) that initiate execution of one or more behaviors 322-330. The vehicle controller 300 includes a computing device (or processor) 302 (e.g., central processing unit having one or more computing processors) in communication with non-transitory memory 304 (e.g., a hard disk, flash memory, random-access memory) capable of storing instructions executable on the computing processor(s)).

[0044] The vehicle controller 300 executes a driver assistance system 310 configured to assist the driver in performing functions associated with autonomously driving the vehicle system 100. The vehicle controller 300 includes a path planning system 306 that plans a path 308 (FIG. 3) for the vehicle 102 and/or the tow-vehicle 100 to maneuver along based on an instruction from the driver. The controller 300 also includes a path following sub-system 320that receives the planned path 308 from the path planning system 306 and executes behaviors 322-330 that send commands 301 to the drive system 110, causing the vehicle system 100 to autonomously drive along the planned path 308 in a rearward direction R.

[0045] In some implementations, the path following sub-system 320 includes a braking behavior 322, a speed behavior 324, a steering behavior 326, a docking behavior 328, and a suspension adjustment behavior 330. Each behavior 322-330 causes the vehicle system 100 to take an action, such as driving backward, turning at a specific angle, breaking, speeding, slowing down, among others. The vehicle controller 300 may maneuver the vehicle system 100 in any direction across the road surface by controlling the drive system 110, more specifically by issuing commands 301 to the drive system 110. For example, the vehicle controller 300 may maneuver the vehicle system 100 from an initial position (FIG. 3A) to a final position (FIG. 3C). In the final position, the vehicle system 100 aligns with the loading dock 200, 200a-n, where the trailer 104 is partially or fully positioned inside the loading dock 200, 200a-n.

[0046] In some implementations, the vehicle system 100 includes the sensor system 400 to provide reliable and robust autonomous driving. The sensor system 400 may include different types of sensors 410, 420 that may be used separately or with one another to create a perception of the environment of the vehicle 102 and/or the vehicle system 100 that is used for the vehicle system 100 to autonomously drive and make intelligent decisions based on objects and obstacles detected by the sensor system 400. The sensors 410, 420 may include, but not limited to, one or more imaging devices (such as cameras) 410, and sensors 420 such as, but not limited to, radar, sonar, LIDAR (Light Detection and Ranging, which can entail optical remote sensing that measures properties of scattered light to find range and/or other information of a distant target), LADAR (Laser Detection and Ranging), etc. In addition, the camera(s) 410 and the sensor(s) 420 may be used to alert the driver of possible obstacles when the vehicle system 100 is traveling in the forward direction F or in the rearward direction R, by way of audible alerts and/or visual alerts via the user interface 140. Therefore, the sensor system 400 is especially useful for increasing safety in the vehicle system 100 which operate under semi- autonomous or autonomous conditions.

[0047] In some implementations, the vehicle system 100 includes a rear camera 410, 410a that is mounted on a rear portion of the vehicle 102 or the trailer 104 to provide a view of a rear driving path for the vehicle system 100. Additionally, in some examples, the vehicle system 100 includes a front camera 410, 410b mounted on the vehicle 102 to provide a view of a front driving path for the vehicle system 100. Additionally, the vehicle system 100 may include one or more right camera(s) 410, 410c positioned on the right side of the vehicle system 100, and one or more left camera(s) 410, 410d positioned on the left side of the vehicle system 100. The left and right cameras 410, 410c, 410d provide additional side views of the vehicle system 100. In this case, the vehicle system 100 may detect object and obstacles positioned on either side of the vehicle system 100, in addition to the objects and obstacle detected along the front and rear driving paths. The camera(s) 410, 410a-d may be a monocular camera, binocular camera, or another type of sensing device capable of providing a view of the environment and/or front/rear travelling path of the vehicle system 100.

[0048] In some implementations, the controller 300, in communication with the sensor system 400, receives the one or more images 412 captured by the camera 410, 410a-d and analyzes the received images 412 to identify the one or more loading docks 200, 200a-n within the received images 412. As such, the controller 300 is capable of determining the location of the one or more loading docks 200, 200a-n based on the received images 412 and/or sensor data 422.

[0049] In some examples, the controller 300 receives sensor system data 402 (including images 412 and/or sensor data 422) and based on the received data 402 provides an image output 404 to the user interface 140. The controller 300 analyzes the image 412 and identifies one or more loading docks 200 in the received image 412. The controller 300 may also receive sensor data 420 from the sensors 420 in communication with the controller 300, and analyze the received sensor data 420. Based on the analyzed images 412 (or the analyzed images 412 and the sensor data 422), the controller 300 identifies the location of each identified loading dock 200 relative to the vehicle system 100, a. As such, the image output includes the received images 412 displaying representations 146, 146a-c of the identified loading dock 200, 200a-c located at a distance behind the vehicle system 100. As shown in FIG. 1, first, second, and third loading docks 200a, 200b, 200n are positioned behind the vehicle system 100. As such, the user interface 140 displays first, second, and third trailer representations 146a, 146b, 146n associated with the first, second, and third loading docks 200a, 200b, 200n respectively.

[0050] The driver may make a selection 144 of one of the trailer representations 146, 146a-c indicating that the driver wants the vehicle system 100 to autonomously drive towards and enter the loading dock 200, 200a-n associated with the selected loading dock representation 146. In some examples, the user interface 140 is a touch screen display 142; as such, the driver may point his finger and select the loading dock representation 146. In other examples, the user interface 140 is not a touchscreen and the driver may use an input device, such as, but not limited to, a rotary knob or a mouse to select one of the trailer representations 146, 146a-c.

[0051] When the driver makes a selection 144 of a loading dock representation 146, 146a-n, a path planning system 306 plans a path 308 (FIGS. 3A-3C) between the vehicle system 100 and the loading dock 200, 200a-n associated with the selected representation 146, 146a-n. The path 308 is based on the location of the selected loading dock 200, 200a-n (determined by the controller 300 from the received sensor system data 402) relative to a position of the vehicle system 100 (e.g., orientation and distance). The path planning system 306 plans the path 308 for the vehicle system 100 to autonomously maneuver such that the vehicle system 100, in an intermediate position P M within a predetermined distance D M from the loading dock 200, is in an orientation aligned generally parallel with the loading dock 200, 200a-n and facing away from the loading dock 200, 200a-n.

[0052] Referring to FIGS. 1-3C, the driver makes a selection 144 of a trailer representation 146, 146a-n, for example, the first trailer representation 146a, associated with the first loading dock 200a that the driver wants the vehicle system 100 to autonomously drive towards. The controller 300 receives an indication 143 of the driver selection 144 which includes the selected loading dock 200a and the location of the selected loading dock 200a with respect to the vehicle system 100. In this case, the path planning system 306 plans the path 308 between the vehicle system 100 and the selected loading dock 200a. The path planning system 306 may use several methods to determine the path 308 and takes into consideration the sensor data 402 received from the cameras 410, 410a-d and the sensors 420. In some examples, when the vehicle system 100 is autonomously driving along the planned path 308, the controller 300 may continuously receive the sensor system data 402. Therefore, the controller 300 continuously updates the location of the selected loading dock 200a with respect to the vehicle system 100 as the vehicle system 100 moves along the planned path 308 based on the received sensor system data 402, i.e., images 412. Since the images 412 are updated as the vehicle system 100 approaches the selected loading dock 200a, the location of the selected loading dock 200a with respect to the vehicle system 100 also changes as the vehicle system 100 moves closer to the selected loading dock 200a. In some examples, the controller 300 identifies one or more objects (not shown) along the planned path 308 and sends the path planning system 306 data relating to the position of the one or more objects. In this case, the path planning system 306 may recalculate the planned path 308 to avoid the one or more objects. In some examples, the path planning system 306 determines a probability of collision and if the probability of collision exceeds a predetermined threshold, the path planning system 306 adjusts the path 308 and sends the adjusted path 308 to the path following sub-system 320.

[0053] Once the path planning system 306 plans the path 308, the path following subsystem 320 executes behaviors 322-330 that cause the drive system 110 to autonomously follow the planned path 308. Therefore, the path following sub-system 320 includes one or more behaviors 322-330 that once executed allow for the autonomous driving of the vehicle system 100 along the planned path 308. The behaviors 322-330 may include, but are not limited to a braking behavior 322, a speed behavior 324, a steering behavior 326, a docking behavior 328, and a suspension adjustment behavior 330.

[0054] The braking behavior 322 may be executed to either stop the vehicle system 100 or to slow down the vehicle system 100 based on the planned path 308. The braking behavior 322 sends a signal or command 301 to the drive system 110, e.g., the brake system 120, to either stop the vehicle system 100 or reduce the speed of the vehicle system 100. [0055] The speed behavior 324 may be executed to change the speed of the vehicle system 100 by either accelerating or decelerating based on the planned path 308. The speed behavior 324 sends a signal or command 301 to the brake system 120 for decelerating or the acceleration system 130 for accelerating.

[0056] The steering behavior 326 may be executed to change the direction of the vehicle system 100 based on the planned path. As such, the steering behavior 326 sends the acceleration system 130 a signal or command 301 indicative of an angle of steering causing the drive system 110 to change direction.

[0057] The suspension adjustment behavior 330 may be executed to change the height or tilt of the vehicle 102. For example, the suspension adjustment behavior sends a command to the drive system (e.g., the suspension system 132) causing the suspension system 132 to adjust the suspension of the vehicle 102. This results in the vehicle 102 tilting about the X v axis and or Y v axis, or move along the central vertical axis Z v .

[0058] FIGS. 3A-3C show the vehicle system 100 at an initial position Pi (FIG. 3 A), an intermediate position P M (FIG. 3B), and a final position P F (FIG. 3C) or a docketed position, with respect to the selected loading dock 200a. As shown, the vehicle system 100 includes the vehicle 102 towing the trailer 104; however, the same applies for a vehicle system 100 that includes the vehicle 102 that is not towing the trailer 104.

Referring to FIG. 3A, the vehicle system 100 is at the initial position Pi relative to the loading dock 200a prior to initiating autonomous maneuvering towards the selected loading dock 200a. In some examples, an initial distance Di between the vehicle system 100 and the selected loading dock 200a is about 15 meters. The vehicle system 100 autonomously maneuvers along the planned path 308 until the vehicle system 100 reaches an intermediate position P M being an intermediate distance D M from the selected loading dock 200a, as shown in FIG. 3B. In the intermediate position P M , the vehicle system 100 is in an orientation aligned generally parallel with the selected loading dock 200a to allow the vehicle system 100 to drive rearward R and allow the trailer 104 to enter the loading dock 200.

[0059] When the controller 300 determines that the vehicle system 100 is

substantially parallel to the loading dock 200a, the controller 300 executes the docking behavior 328. The docking behavior 328 issues a command 301 to the drive system 110 to maneuver along the remainder of the path 308, i.e., from the intermediate position P M to the final position P F (FIG. 3C) in a rearward straight path, positioning the vehicle system 100 within the selected loading dock 200a. In some examples, after docking the trailer 104 in the loading dock 200, the controller 300 may execute a behavior (not shown) to unhitch the vehicle 102 from the trailer 104 and then execute a drive behavior (not shown) causing the vehicle 102 to proceed to a predetermined location, such as a vehicle 102 parking location.

[0060] Similar to autonomously backing up the vehicle system 100 to the selected loading dock 200a, once loading and unloading operations are complete, the driver may instruct the vehicle system 100 (through the user interface 140) to drive to a selected location shown on the user interface 140, for example, back to the initial position Pi of the vehicle system 100.

[0061] FIGS. 5A-6B show the vehicle system 100 docking at the loading dock 200. FIGS. 5A and 5B show the vehicle system 100 including the vehicle 102, while FIGS. 6A and 6B show the vehicle system 100 including the vehicle 102 attached to the trailer 104. The controller 300 considers the position of the loading dock (Xdock, Ydock), the vehicle angle Gvehicie, and a rear position (X re ar, Yrear) of the rear of the center of the vehicle system 100 for determining the path 308. For example, in FIGS. 5A and 5B, the rear position (X re ar, Yrear) of the vehicle system 100 is the center of the vehicle 102; while in FIGS. 6A and 6B the rear position (X re ar, Yrear) of the vehicle system 100 is the center of the trailer 104. In addition, when the vehicle system 100 includes a trailer 104, the controller 300 also considers the trailer angle Gtraiier for determining the path 308. The vehicle angle Gvehicie is an angle between the vehicle 102 and a line perpendicular to the loading dock. The trailer angle Gtraiier is an angle between the trailer 104 and a line perpendicular to the loading dock. The vehicle system 100 is at an initial position (as described in FIG. 3A) and backs up while being steered by the controller 300 until it reaches a final position P M , i.e., the loading dock 200 shown in FIG. 3C. The controller 300 steers the vehicle system 100 such that it avoids jackknifing along the path 308. At its final position P M , the back of the vehicle system 100 is parallel to the loading dock 200. In some examples, the position of the loading dock (Xdock, Ydock) and the position of the rear of the center of the vehicle system 100 (Xrear, Yrear) are aligned. [0062] FIG. 7 provides an example arrangement of operations for a method 700 of maneuvering a vehicle system 100 in reverse for docking at a loading dock 200 using the vehicle system 100 of FIGS. 1-4B. The vehicle system 100 includes a vehicle 102 connected to a trailer 104. At block 702, the method 700 includes identifying, by data processing hardware (e.g., controller 300 that includes a processor 302), one or more loading docks 200, 200a-n within one or more images 412. In some examples, one or more cameras 410, 410a-d are positioned on a rear portion of the vehicle system 100 (e.g., a rear portion of the vehicle 102 or a rear portion of a trailer 104 that is part of a vehicle-trailer system) such that at least one camera 410, 410a-d captures images of an environment behind the vehicle system 100. The one or more cameras 410, 410a-d are in communication with the data processing hardware 300.

[0063] At block 704, the method 700 includes receiving, at a user interface 140 in communication with the data processing hardware 300, an indication 143 of a selection 144 of a representation 146, 146a-n of a loading dock 200, 200a-n from the one or more identified loading dock 200, 200a-n. At block 706, the method 700 includes determining, at the data processing hardware 300, a path 308 from an initial position Pi to a final position P F . The final position P F such that the vehicle system 100 is docked within the loading dock 200, 200a-n. In some examples, the path 308 includes an intermediate position P M being a position of the vehicle system 100 that is at a predetermined distance D M from the loading dock 200, 200a-n, in an orientation aligned generally parallel with the loading dock 200, 200a-n and facing away from the loading dock 200, 200a-n. In the intermediate position P M , the vehicle system 100 is positioned to drive rearward R and allow the vehicle system 100 to enter the loading dock 200. The path 308 includes maneuvers configured to move the vehicle system 100 along the path 308.

[0064] At block 708, the method 700 also includes transmitting, from the data processing hardware 300 to a drive system 110 of the vehicle system 100 in

communication with the data processing hardware 300, one or more commands 301 causing the vehicle system 100 to autonomously move along the path 308 in reverse direction.

[0065] In some implementations, the method 700 includes determining, at the data processing hardware 300, a trailer angle Gtraiier and a vehicle angle Gvehicie. The trailer angle Gtraiier being an angle between the trailer and a line perpendicular to the loading dock; while the vehicle angle being an angle between the vehicle 102 and the line perpendicular to the loading dock 200, 200a-n. The method 700 also includes

determining, at the data processing hardware 300, the path 308 based on the trailer angle Otraiier and the vehicle angle Θ vehicle.

[0066] The method 700 may also include determining, at the data processing hardware 300, a loading dock position (Xdock, Ydock). The loading dock position (Xdock, Ydock) may be relative to the vehicle system 100, for example by way of a coordinate system. The method 700 may also include determining, at the data processing hardware 300, a rear position (X re ar, Yrear) of a rear center of the vehicle system 100. The rear position (X re ar, Yrear) may also be by way of a coordinate system. In some example, the method 700 includes determining, at the data processing hardware 300, the path 308 based on the loading dock position (Xrear, Yrear) and the rear position (Xrear, Yrear).

[0067] In some implementations, the method 700 includes receiving, at the data processing hardware 300, sensor data 422 from one or more sensors 420 positioned on the vehicle system 100, and identifying, at the data processing hardware 300, one or more objects along the path 308 based on the sensor data 420 (and images 412). When one or more objects are identified, the method 700 includes adjusting, at the data processing hardware 300, the path 308 to avoid the one or more objects. In some examples, adjusting the path 308 to avoid the one or more objects includes determining an adjusted path 308 including maneuvers configured to move the vehicle system 100 along the adjusted path 308 while avoiding the one or more objects.

[0068] Referring to FIG. 6, in some implementations, logistic companies have a fleet of vehicle systems 100, 100a-n, such as vehicle 102 and/or vehicle-trailer systems that they manage. Therefore, to increase the efficiency of operating and managing the vehicle systems 100, 100a-n, it is desirable that the vehicle systems 100, 100a-n can autonomously drive to their respective loading dock 200 or to a manager selected loading dock 200. In addition, it is desirable for an operator 800 to manage the vehicle systems 100, 100a-n by way of an operator interface 610 that is in communication with each one of the vehicle systems 100, 100a-n, for example, via a network (not shown). The operator 800 includes a computing device (or processor) 802 (e.g., central processing unit having one or more computing processors) in communication with non-transitory memory 804 (e.g., a hard disk, flash memory, random-access memory) capable of storing instructions executable on the computing processor(s)). In some example, the operator 800 is associated with a human manager who is sitting in a control tower or command center and manages the vehicle systems 100, 100a-n via the operator interface 810. The operator 800 may include an operator interface 810 similar to the user interface 140 described above.

[0069] In some examples, the operator 800 receives images 412 from cameras 410 positioned on the vehicle systems 100, 100a-n and/or from cameras (not shown) positioned around a parking lot that includes the loading docks 200. As such, the operator 800 can generate and display a representation of the environment of the parking lot. Therefore, when a vehicle system 100, 100a-n enters the parking lot, the controller 800 causes the operator interface 810 to display a representation of the vehicle system within the representation of the environment of the parking lot. The human manager can identify the vehicle representation 146 and a selected a loading dock 200, 200a-n causing the operator 800 to plan a path 308 between the selected vehicle 100, 100a-n and the selected loading dock 200, 200a-n, similar to the path 308 described above. In some

implementations, as shown in FIG. 7, the path planning system 306 is part of the vehicle system 100; however, in other examples (not shown) the path planning system 306 may be part of the operator 800.

[0070] In some examples, the operator 800 plans the path 308, then sends the path 308 to the vehicle system 100, 100a-n so that the vehicle system 100, 100a-n follows the path 308. In other examples, the operator sends the vehicle system 100, 100a-n an indication of a selected loading dock 200, 200a-n based on the human manager input, and the vehicle system 100, 100a-n plans the path 308 to dock at the selected loading dock 200, 200a-n. In some examples, the operator 800 may manage and instruct several vehicle systems 100, 100a-n to simultaneously plan a path 308 to a selected loading dock 200, while considering the planned path 308 of the other vehicle systems 100, 100a-n to prevent one or more vehicle systems 100, 100a-n from colliding with another one or more vehicle systems 100, 100a-n. Therefore, by allowing an operator 800 to control the one or more vehicle systems 100, 100a-n, the logistic companies reduce the number of accidents that are caused by the vehicle systems 100, 100a-n hitting a loading dock 200 when backing up towards the loading dock 200.

[0071] FIG. 9 provides an example arrangement of operations for a method 900 of managing a fleet of vehicle systems 100, such as vehicle sl02, semi-trucks, and/or vehicle-trailer systems, within a vehicle lot having one or more loading docks 200, 200a- n using the vehicle system 100 of FIGS. 1, 3-4B, and 6. At block 902, the method 900 includes identifying, by data processing hardware (e.g., operator 800 having a processor 802), one or more loading docks 200, 200a-n within one or more images 412. The one or more images 412 may be from one or more cameras 410 positioned on a rear portion of the vehicle system 100, 102, and/or from one or more cameras (not shown) configured to capture images of the vehicle lot. At block 904, the method 900 includes receiving, at the data processing hardware 300, a vehicle indication indicative of a vehicle system 100 entering the vehicle lot. At block 906, the method 900 includes displaying, on a user interface 810 in communication with the data processing hardware 800, an environment of the vehicle lot including a representation 146, 146a-n of the one or more loading docks 200, 200a-n and a representation of the vehicle system 100. The environment of the vehicle lot is based on the one or more images 412 and the vehicle indication. At block 908, the method 900 includes receiving, at the user interface 810, a first user selection of the vehicle indication (not shown) and a second user selection 144 of a selected loading dock representation 146, 146a-n from the one or more of loading dock representations 146, 146a-n. At block 910, the method 900 includes determining, at the data processing hardware 300, 800, a path 308 between the vehicle system 100, 100a-n and the selected loading dock representation 146, 146a-n. The path 308 includes maneuvers configured to move the vehicle system 100, 102 along the path 308. At block 912, the method 900 also includes transmitting, from the data processing hardware 300, 800 to a drive system 110 of the vehicle system 100, 102 in communication with the data processing hardware 300, 800, one or more commands 301 causing the vehicle system 100 to autonomously move along the path 308 in reverse direction.

[0072] In some examples, the method 900 includes determining at the data processing hardware a trailer angle Gtraiier and a vehicle angle Gvehicie. The trailer angle Gtraiier being an angle between the trailer and a line perpendicular to the loading dock, and the vehicle angle Gvehicie being an angle between the vehicle 102 and the line perpendicular to the loading dock 220. The method 900 includes determining, at the data processing hardware, the path based on the trailer angle Gtraiier and the vehicle angle Gvehicie.

[0073] In some implementations, the method 900 includes determining, at the data processing hardware, a loading dock position (Xdock, Ydock) and a rear position (X re ar, Yrear) of a rear center of the vehicle system 100, 102. The method 900 includes determining, at the data processing hardware 800, the path 308 based on the loading dock position (Xdock, Ydock) and the rear position (X re ar, Yrear).

[0074] The method 900 may include receiving, at the data processing hardware 300, 800, sensor data 422 from one or more sensors 420 positioned on the vehicle system 100, 102 and in communication with the data processing hardware 300, 800, and identifying, at the data processing hardware 800, one or more objects within the path 308 based on the sensor data 422. When one or more objects are identified, the method 900 includes adjusting, at the data processing hardware 300, 800, the path 308 to avoid the one or more objects.

[0075] The above disclosure is described mainly with respect to a vehicle system 100, 100a-n; however, the system may also apply to smaller scale operations or individually owned vehicles without a trailer such as pickup trucks.

[0076] Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs

(application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

[0077] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a

programmable processor, including a machine-readable medium that receives machine instructions as a machine -readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and/or data to a programmable processor.

[0078] Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Moreover, subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The terms "data processing apparatus", "computing device" and "computing processor" encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus.

[0079] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multi-tasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

[0080] 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.