Patent Description:
Precision agriculture uses technologies such as global navigation satellite systems (GNSS), inertial measurement sensors, and computers to guide a tractor through a field following carefully defined paths to improve crop yield, reduce operator fatigue, comply to environmental regulations, and reduce cost. The cost of these systems limits their application to only the largest farms with the economies of large scale required to purchase them.

Reducing the cost of precision agriculture technologies can be accomplished by leveraging common smart devices such as smart-phones and tablet computers. The primary barrier to using these devices is their inherent non-determinism where disruptions to wireless communications, application processor time allocation, and multitasking can block the steering and guidance software. Disruptions to timely operation complicate smart device integration into larger systems.

The disclosure that follows solves this and other problems.

<CIT> discloses a guidance system for a mobile machine that includes a location determining device for determining a location of the machine, a user interface and a controller. The controller is configured to receive location information from the location determining device, detect a path followed by the machine using the location information, present a plurality of preliminary waypoints to a user via the user interface, receive waypoint information from the user via the user interface indicating one or more selected waypoints corresponding to one or more of the preliminary waypoints, and automatically guide the machine using the one or more selected waypoints. The controller may automatically generate the plurality of preliminary waypoints as the machine traverses the path.

<CIT> discloses an autonomous navigation system for a tracked or skid-steer vehicle. The system includes a path planner that computes a series of waypoint locations specifying a path to follow and vehicle location sensors. A tramming controller includes a waypoint controller that computes vehicle speed and yaw rate setpoints based on vehicle location information from the vehicle location sensor and the locations of a plurality of neighboring waypoints, and a rate controller that generates left and right track speed setpoints from the speed and yaw rate setpoints. A vehicle control interface actuates the vehicle controls in accordance with the left and right track speed setpoints.

<CIT> discloses a control system and method to control the trajectory of a transport vehicle to follow the trajectory of a harvester. The harvester can send control information such as the harvester's current position and future position waypoints to the transport vehicle. The control system can then use the information from the harvester to determine the trajectory for the transport vehicle.

In one example, a precision steering computer installed on a tractor uses waypoints generated by the operators hand-held smart-device to navigate around a field. The smart-device may be used as the primary interface for the operator and is one component of an entire precision
agriculture guidance system. Batched, time ordered waypoints generated by the smart-device represent a list of coordinates for steering the tractor.

The explanation below uses the example of a tractor plowing a field. However, it should be understood that the precision agricultural guidance system may be used with any vehicle to perform any type of agricultural or non-agricultural operation. For example, the precision agricultural guidance system may be used on a combine to harvest a crop in a field or may be used with construction machinery on construction sites, such as when building a road.

As the vehicle moves over the field, the waypoints are consumed and discarded by the real-time steering computer in the order received from the non-real-time smart device. The path planned by the operator is generated by the smart device and the progress and status of the tractor are displayed on the same smart-device.

Waypoints, consisting of time ordered geo-location coordinates along the operator defined path, are generated on the smart-device in advance of a tractor arriving at those locations. These waypoints are created in large batches a minute or more before the precision steering computer on the tractor needs them to stay on the commanded path. Batch waypoint generation conform well with the computing architecture of non-real-time devices such as smart-devices, laptops, and desktop computers and can be sent to the real-time computer within the precision steering system using a wired connection or a wireless technology such as Bluetooth or WiFi.

Batched waypoints are stored in the precision steering computer in the order they are used for steering the vehicle along a predetermined path. In the event of a service interruption with the users smart-device or a communication failure between the smart-device and the steering computer, the steering computer can continue to pull future waypoints from the queued waypoint list ensuring the next waypoint is available. If the waypoint queue is depleted prior to the users smart-device providing the next batch of waypoints, the steering computer can notify the user to stop the tractor.

The division of computing between the real time domain of the steering computer and the non-real-time domain of the smart device is facilitated by way of the queue of waypoints are stored and transmitted as batches representing many minutes of future tractor travel.

While this summary describes a specific instance with a smart device generates an entire planned path of waypoints, it should be apparent that any source of waypoints could be used either onboard the tractor or remotely. Removing the non-real-time planning activities from the real-time steering system enables the use of internet-based control including remote operation as well as fully autonomous control from internet software-as-a-service or cloud computing sources.

Additional aspects and advantages will be apparent from the following detailed description of preferred embodiments, which proceeds with reference to the accompanying drawings.

<FIG> shows a precision guidance system <NUM> used for steering a tractor <NUM>. A steering computer <NUM> changes the attitude of tractor <NUM> by sending commands to a steering actuator <NUM> to turn a steering wheel of tractor <NUM> or to regulate a hydraulic steering actuator. Steering controller software <NUM> operated by steering computer <NUM> uses inputs from an inertial measurement unit (IMU) <NUM> and a global navigation satellite system (GNSS) <NUM> to compute a steering correction based on a computed error in the location of tractor <NUM> versus a current waypoint command from a waypoint queue <NUM>. Steering computer <NUM> is known to those skilled in the art and are therefore not described in further detail. One example steering computer is sold by AgJunction, Inc. Del Camino Dr. #<NUM> Scottsdale, AZ USA <NUM>.

A tractor operator <NUM> uses a smart device <NUM> to plan a route for tractor <NUM> through a field. Smart device <NUM> may be a smart phone, tablet computer, laptop computer, or any other portable or handheld device. The tractor operator <NUM> uses path planner software <NUM> operating in smart device <NUM> when prepare the path for automatically steering tractor <NUM>. Path planning software, such as chart plotters, are known to those skilled in the art and are therefore not described in further detail.

The output of path planner <NUM> is a time ordered series of waypoints <NUM> stored in an output waypoint queue <NUM> of smart device <NUM>. Smart device <NUM> transmits waypoints <NUM> in output waypoint queue <NUM> via wireless or wired communication channel to a receiving input waypoint queue <NUM> in steering computer <NUM>. For example, waypoints <NUM> may be transmitted via a WiFi or Bluetooth wireless connection or via a universal serial bus (USB) wired connection.

To facilitate efficient data transfers, smart device <NUM> may send waypoints <NUM> in batches to steering computer <NUM>. Steering controller <NUM> consumes received waypoints <NUM> from local input waypoint queue <NUM> as tractor <NUM> travels over the commanded location within each waypoint <NUM>. For example, steering controller <NUM> steers from a current location to a next waypoint <NUM> in waypoint queue <NUM>. After reaching the next waypoint <NUM>, steering controller <NUM> steers to a next subsequently stored waypoint <NUM> in waypoint queue <NUM>.

<FIG> shows an overall process <NUM> for computing, communicating, and executing steering operations based on a series of waypoints <NUM>. Referring to <FIG> and <FIG>, tractor operator <NUM> in operation <NUM> initiates automatic steering process <NUM> where smart device <NUM> generates waypoints <NUM> and steering computer <NUM> generates steering commands based on waypoints <NUM>.

In operation <NUM>, path planner <NUM> in smart device <NUM> uses a previously defined path through a field defined by tractor operator <NUM> to generate a time series of waypoints <NUM>. For example, smart device <NUM> may include a user interface <NUM> with a display and keyboard or touch screen input. Path planner <NUM> may display an electronic map of a field on user interface <NUM>. Operator <NUM> then may select points on the electronic map to create a field path for tractor <NUM>. Path planner <NUM> may generate a set of waypoints <NUM> that each include a latitude, longitude, and a time identifier indicating the order waypoints <NUM> were selected by operator <NUM>.

In operation <NUM>, smart device <NUM> pushes waypoints <NUM> into waypoint queue <NUM> prior to transmission. Smart device <NUM> then transmits a group or batch of the waypoints <NUM> for the field path to waypoint queue <NUM> in steering computer <NUM>.

In operation <NUM>, smart device <NUM> enters a loop waiting for waypoint queue <NUM> in smart device <NUM> to be empty <NUM> which indicates the last waypoints <NUM> of the path have been transmitted by smart device <NUM> to steering computer <NUM>.

Prior to transmitting waypoints <NUM> to steering computer <NUM>, smart device <NUM> in operation <NUM> queries steering computer <NUM> for the status of waypoint queue <NUM>. If input queue <NUM> in steering computer <NUM> is full, or steering computer <NUM> is busy, smart device <NUM> will hold-off transmitting additional waypoints <NUM> and wait before querying steering computer <NUM> again. This buffering protocol allows use of a low-cost shallow buffer depth for waypoint queue <NUM> in steering computer <NUM>.

In operation <NUM>, smart device <NUM> may receive a message back from steering computer <NUM> indicating steering computer <NUM> is ready to receive more waypoints. Smart device <NUM> in operation <NUM> then bundles a next number of waypoints from output queue <NUM> into a batch appropriate to the size of memory used as waypoint input queue <NUM>. Smart device <NUM> in operation <NUM> then transmits the batch of waypoints <NUM> to queue <NUM> in steering computer <NUM> prior to returning to operation <NUM>.

Smart device <NUM> starts operation <NUM> after the last waypoint <NUM> is transmitted from waypoint queue <NUM> to waypoint input queue <NUM> in the steering computer <NUM>. Smart device <NUM> then continuously queries steering computer <NUM> in operation <NUM> waiting for tractor <NUM> to reach the last waypoint. When smart device <NUM> receives a message back from steering computer <NUM> indicating the last waypoint has been reached, smart device <NUM> in operation <NUM> may display a message on user interface display <NUM> indicating tractor <NUM> has reached the end of the selected path.

As mentioned above, precision steering system <NUM> according to the invention includes a first navigation computing device <NUM> configured to generate a time series of geo-location waypoints <NUM> for a path. Second steering computing device <NUM> includes input buffer <NUM> configured to receive the geo-location waypoints from first navigation computing device <NUM>. Second computing device <NUM> is configured to generate steering commands for steering vehicle <NUM> based on waypoints <NUM> received by input buffer <NUM>.

According to the invention, first navigation computing device <NUM> is a non-real-time computer configured to run path planning software on a best-effort schedule and second computer <NUM> is a real-time computer running steering control software at a periodic rate. In one example, first navigation computing device <NUM> may operate on a handheld smart device and the second steering computing device <NUM> may operate on a dedicated vehicle steering control system coupled to steering actuator <NUM> that steers vehicle <NUM> based on the steering commands.

First navigation computing device <NUM> may transmit geo-location waypoints <NUM> to input buffer <NUM> on second computer <NUM> over a wireless network. According to the invention first navigation computing device <NUM> transmits geo-location waypoints <NUM> in batches to input buffer <NUM> in second computer <NUM>.

In one example, second steering computing device <NUM> uses input buffer <NUM> as a First-In-First-Out (FIFO) queue for processing geo-location waypoints <NUM>. In another example, second steering computing device <NUM> is configured to send status messages to first navigation computing device <NUM> indicating when the First-In-First-Out queue is ready to accept additional geo-location waypoints <NUM>.

In one example, first navigation computing device <NUM> includes output buffer <NUM> for storing the geo-location waypoints <NUM>. First navigation computing device <NUM> also may operate output buffer <NUM> as a First-In-First-Out (FIFO) queue first buffering geo-location waypoints <NUM> and then transmitting the buffered geo-location waypoints <NUM> to second steering computing device <NUM>.

In one example, path planner <NUM> repeatedly sends queries to steering controller <NUM> to check for available space in queue <NUM>. Additional batches of waypoints <NUM> are sent to queue <NUM> based on the available space. For example, second steering computing device <NUM> may send a first message to first navigation computing device <NUM> indicating input buffer <NUM> is approaching capacity for storing the geo-location waypoints <NUM>. The message may cause first navigation computing device <NUM> to stop sending additional geo-location waypoints <NUM> until receiving a second continue transmitting message from second steering computing device <NUM>.

In another example, second steering computing device <NUM> is configured to send a message to first navigation computing device <NUM> indicating a current capacity of input buffer <NUM>. First navigation computing device <NUM> may decide to send additional geo-location waypoints <NUM> to second steering computing device <NUM> based on the current capacity of input buffer <NUM>. In one example, first navigation computing device <NUM> is configured to encode geo-location waypoints <NUM> transmitted to second steering computing device <NUM> to reduce transmission errors. For example, first navigation computing device <NUM> may use orthogonal frequency-division multiplexing (OFDM) to overcome errors in mobile communication channels.

As also explained above, a first program, such as path planner <NUM>, generates a time series of future geo-location waypoints <NUM> for a selected vehicle path and transmits waypoints <NUM> over a communication channel to an asynchronous buffer <NUM>. A second program, such as steering controller <NUM>, generates steering commands for steering vehicle <NUM> based on the geo-location waypoints <NUM> in buffer <NUM>.

In another embodiment, a same computing device <NUM> or <NUM> runs first program <NUM> and second program <NUM>. In another example according to the invention, first computing device <NUM> runs first program <NUM> and second computing device <NUM> operating asynchronously from first computing device <NUM> runs second program <NUM>. In one example, first program <NUM> and second program <NUM> run on separate processor cores in a same physical central processing unit.

In another example, first program <NUM> and second program <NUM> run on a same processing device <NUM> or <NUM> controlled by a time partitioned operating system. In yet another example, first program <NUM> and second program <NUM> may run on a same processing device <NUM> or <NUM>. An operating system running on the processing device <NUM> or <NUM> may asynchronously generate target waypoints <NUM> with first program <NUM> and the steering commands with second program <NUM>.

Utilizing smart device <NUM> in conjunction with steering computer <NUM> provides many technical computing advantages. For example, a large amount of memory storage can be offloaded onto start device <NUM>. Further, the computational and memory requirements for operating electronic maps, chart plotters/path planners, and display and user input interfaces can all be offloaded to smart device <NUM> or to cloud based services accessed by smart device <NUM>. In addition, any wireless communication hardware or software needed to communicate with a central server or cloud based services that may provide electronic maps and path planning software can also be offloaded to smart device <NUM> and/or the cloud based service.

Precision agriculture guidance system <NUM> lowers the cost of precision agriculture to improve yield, reduce fatigue, and lower ecological impact of farming. It enables a commodity processing platform such as a smart-phone or tablet to act as the user interface and path planning element of an agricultural guidance system. It maintains the safety capabilities of existing systems while adding flexibility to use lower cost, non-proprietary hardware for the user interface, path planning, logging, diagnostics, and connectivity functions. These advantages also include the ability to scale a single guidance system into a larger coordinated fleet without requiring expensive on-premises computing or communications hardware.

<FIG> shows a computing device <NUM> that may be used for implementing or operating steering computer <NUM> or smart device <NUM> used in precision guidance system <NUM> discussed above. The computing device <NUM> may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. In other examples, computing device <NUM> may be a personal computer (PC), a tablet, a Personal Digital Assistant (PDA), a cellular telephone, a smart phone, a web appliance, central processing unit, programmable logic device, or any other machine or device capable of executing instructions <NUM> (sequential or otherwise) that specify actions to be taken by that machine.

While only a single computing device <NUM> is shown, the computing device <NUM> may include any collection of devices or circuitry that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the operations discussed above. Computing device <NUM> may be part of an integrated control system or system manager, or may be provided as a portable electronic device configured to interface with a networked system either locally or remotely via wireless transmission.

Processors <NUM> may comprise a central processing unit (CPU), a graphics processing unit (GPU), programmable logic devices, dedicated processor systems, micro controllers, or microprocessors that may perform some or all of the operations described above. Processors <NUM> may also include, but may not be limited to, an analog processor, a digital processor, a microprocessor, multi-core processor, processor array, network processor, etc..

Some of the operations described above may be implemented in software and other operations may be implemented in hardware. One or more of the operations, processes, or methods described herein may be performed by an apparatus, device, or system similar to those as described herein and with reference to the illustrated figures.

Processors <NUM> may execute instructions or "code" <NUM> stored in any one of memories <NUM>, <NUM>, or <NUM>. The memories may store data as well. Instructions <NUM> and data can also be transmitted or received over a network <NUM> via a network interface device <NUM> utilizing any one of a number of well-known transfer protocols.

Memories <NUM>, <NUM>, and <NUM> may be integrated together with processing device <NUM>, for example RAM or FLASH memory disposed within an integrated circuit microprocessor or the like. In other examples, the memory may comprise an independent device, such as an external disk drive, storage array, or any other storage devices used in database systems. The memory and processing devices may be operatively coupled together, or in communication with each other, for example by an I/O port, network connection, etc. such that the processing device may read a file stored on the memory.

Some memory may be "read only" by design (ROM) by virtue of permission settings, or not. Other examples of memory may include, but may be not limited to, WORM, EPROM, EEPROM, FLASH, etc. which may be implemented in solid state semiconductor devices. Other memories may comprise moving parts, such a conventional rotating disk drive. All such memories may be "machine-readable" in that they may be readable by a processing device.

"Computer-readable storage medium" (or alternatively, "machine-readable storage medium") may include all of the foregoing types of memory, as well as new technologies that may arise in the future, as long as they may be capable of storing digital information in the nature of a computer program or other data, at least temporarily, in such a manner that the stored information may be "read" by an appropriate processing device. The term "computer-readable" may not be limited to the historical usage of "computer" to imply a complete mainframe, minicomputer, desktop, wireless device, or even a laptop computer. Rather, "computer-readable" may comprise storage medium that may be readable by a processor, processing device, or any computing system. Such media may be any available media that may be locally and/or remotely accessible by a computer or processor, and may include volatile and non-volatile media, and removable and non-removable media.

Computing device <NUM> can further include a video display <NUM>, such as a liquid crystal display (LCD) or a cathode ray tube (CRT) and a user interface <NUM>, such as a keyboard, mouse, touch screen, etc. All of the components of computing device <NUM> may be connected together via a bus <NUM> and/or network.

Computing device <NUM> may include any combination of sensors <NUM> including, but not limited to, GSP, IMU, video camera, LIDAR, and radar. Computing device <NUM> also may include a wireless transceiver <NUM> for wirelessly transmitting and receiving commands to and from other computing devices.

For the sake of convenience, operations may be described as various interconnected or coupled functional blocks or diagrams. However, there may be cases where these functional blocks or diagrams may be equivalently aggregated into a single logic device, program or operation with unclear boundaries. Having described and illustrated the principles of a preferred embodiment, it should be apparent that the embodiments may be modified within the scope of the appended claims.

Claim 1:
A method implemented in a steering computing device (<NUM>) for processing batches of geo-location waypoints (<NUM>) for a path generated by a navigation computing device (<NUM>) in a non-real time domain on a best-effort schedule, the steering computing device (<NUM>) being a real-time computer executing the method at a periodic rate and including an input buffer (<NUM>), the method comprising:
receiving, at the input buffer (<NUM>), the batches of geo-location waypoints (<NUM>) from the navigation computing device (<NUM>); and
generating steering commands for steering a vehicle (<NUM>) based on the geo-location waypoints (<NUM>) from the input buffer (<NUM>).