Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHODS AND SYSTEMS FOR AGRICULTURAL SUBSTANCE APPLICATION
Document Type and Number:
WIPO Patent Application WO/2022/097053
Kind Code:
A1
Abstract:
A method is provided comprising receiving configuration settings from a remote server corresponding to at least one defined geographic area. The settings include an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas. A location is obtained associated with the mobile device it is determined that the location is located within the bounds of one of the defined geographic areas. Settings derived from the configuration corresponding with the relevant defined geographic area are sent to a controller node of an agricultural substance application device that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance. The controller node is configured to modulate the rate of application of an agricultural substance by the application device to correspond to the desired application in response to receiving the configuration.

Inventors:
REID JAMES MICHAEL CEDRIC (ZA)
SMITH RAPHAEL V (ZA)
Application Number:
PCT/IB2021/060197
Publication Date:
May 12, 2022
Filing Date:
November 04, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
REID AND VERWEY CC (ZA)
International Classes:
G06Q50/02; A01B79/02; A01C21/00; A01D91/00
Foreign References:
US20200156100A12020-05-21
US20180024549A12018-01-25
US20150282423A12015-10-08
US20190047010A12019-02-14
US20180129987A12018-05-10
US20200134485A12020-04-30
Other References:
RAJESWARI S.; SUTHENDRAN K.; RAJAKUMAR K.: "A smart agricultural model by integrating IoT, mobile and cloud-based big data analytics", 2017 INTERNATIONAL CONFERENCE ON INTELLIGENT COMPUTING AND CONTROL (I2C2), IEEE, 23 June 2017 (2017-06-23), pages 1 - 5, XP033332830, DOI: 10.1109/I2C2.2017.8321902
Attorney, Agent or Firm:
VON SEIDELS INTELLECTUAL PROPERTY ATTORNEYS (ZA)
Download PDF:
Claims:
35

CLAIMS:

1 . A method performed at a mobile communication device and comprising: receiving configuration settings from a remote server corresponding to at least one defined geographic area and including an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; obtaining a location associated with the mobile device and determining that the location is located within the bounds of one of the defined geographic areas; and sending settings derived from the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by the application device to correspond to the desired application in response to receiving the configuration.

2. The method as claimed in claim 1 wherein the location associated with the mobile device is a location of a dispenser of the agricultural substance application device, the mobile device being positioned at a configured position or distance relative to the dispenser.

3. The method as claimed in claim 1 or 2 further including determining that the location associated with the mobile communication device is not located in any of the at least one defined geographic areas, and sending a setting to the controller node to modulate the application rate of the agricultural substance at a nominal or default rate; and optionally generating an alert to an operator that the location associated with the mobile communication device is not located in any of the at least one defined geographic areas.

4. The method as claimed in any one of the previous claims wherein the received configuration settings corresponds to a plurality of bordering defined geographic areas that are adjacent to and/or nested in one another.

5. The method as claimed in claim 4 wherein the step of determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic areas includes determining that the location associated with the mobile communication device has crossed a border between bordering defined geographic areas, and wherein the step of sending settings derived from the configuration to include sending settings derived from the configuration corresponding with the newly 36 entered relevant defined geographic area. The method as claimed in claim 4 or 5 wherein the bounds of the defined geographic areas are polygons, and wherein the step of determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic area includes applying the winding number algorithm point-in-polygon method. The method as claimed in any one of claims 4 to 6 wherein the step of determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic area includes obtaining location coordinates, a speed, and a bearing from a global navigation satellite system component of the mobile communication device, and if a refresh rate of the global navigation satellite system component is greater than about 100 milliseconds, extrapolating an estimated location based on the last known location coordinates, speed, and bearing about every 100 milliseconds. The method as claimed in any one of the previous claims wherein the settings derived from the received configuration are sent to the controller node upon the occurrence of a preconfigured event and optionally periodically. The method as claimed in claim 8 wherein the preconfigured event is a border crossing between different defined geographic areas. The method as claimed in any one of the previous claims wherein the settings derived from the received configuration includes one or more of: application rate parameters, and a distance or location of the dispenser of the agricultural substance application device relative to the mobile phone; and wherein the method includes sending a synchronisation message to the controller node periodically, the synchronisation message including one or more of: application rate parameters, and information relating to the status of the controller node. The method as claimed in any one of the previous claims wherein the settings derived from the configuration and/or the synchronisation message includes a setting to enable or disable tree detection by the controller node, wherein the controller node is configured, if tree detection is enabled, to only commence application of the agricultural substance in response to it sensing the proximity of a tree. The method as claimed in claim 11 wherein the configuration and/or the synchronisation message includes one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time, wherein the controller node is configured to determine the proximity of a tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

13. The method as claimed in claim 10 wherein the application rate parameters include speed or power settings of actuators of the agricultural substance application device used for the application of the substance.

14. The method as claimed in claim 13 wherein the actuators are motors, and the application rate parameters include one or more of: motor speed and motor direction.

15. The method as claimed in any one of the previous claims further including receiving periodic status messages from the controller node, the status message including one or more of: sensor measurements of sensors of the controller node, a calibration status, a calibration progress, a tree detection status, and a firmware version of the controller node.

16. The method as claimed in any one of the previous claims further including the step of the mobile communication device sending a ping message to a remote database, the sending triggered by one or more of: the entering, exiting, or changing of a defined geographic area; the lapsing of a period of time without the sending of a ping message; and a change in bearing exceeding a threshold.

17. The method as claimed in claim 16 wherein the ping message includes one or more of: the ping trigger; an identifier of an operator of the mobile device and control node; a unique identifier of a defined geographic area in which the mobile device is presently located; a unique identifier and version of a configuration of the mobile communication device and/or controller node; mobile communication phone manufacturer, model, operating system, and version information; one or more geohash of the current location of the mobile communication device; a location accuracy indicator, an altitude, a speed, a speed accuracy indicator, a heading, a current time, a controller node identifier, a connection status between the mobile communication device and the controller node; a calibration status of the controller node; tree detection settings; and a location and magnitude of a maximum g-force experienced by the mobile communication device since a previous ping message was sent.

18. The method as claimed in claim 16 or 17 wherein the ping messages are buffered on the mobile communication device if it does not have network connectivity to the remote database, and to send the buffered ping messages when network connectivity to the remote database is established or restored.

19. The method as claimed in any one of the previous claims including sending a calibration instruction, wherein the controller node is configured to, in response to receiving the calibration instruction, modulate actuators used for the application of the agricultural substance at 2 or more speeds, power settings or positions; and recording an application rate associated with each speed, power setting or position.

20. A method performed at a controller node of an agricultural substance application device and comprising: receiving configuration settings from a mobile communication device that is in close proximity to the controller node, the configuration settings including a desired application rate of an agricultural substance; and modulating the rate of application of the agricultural substance to correspond to the desired application.

21 . The method as claimed in claim 20 wherein the received configuration settings include a tree detection setting, and for the method to include, if tree detection is enabled, detecting the proximity of a tree, commencing application of the agricultural substance in response to sensing the proximity of a tree; and to cease application when no tree is detected.

22. The method as claimed in claim 21 wherein the configuration settings include one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time, and wherein the controller node is configured to determine the proximity of a tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

23. The method as claimed in claim 21 or 22 wherein the detecting of the proximity of the tree is performed by means of a proximity sensor.

24. The method as claimed in claim 23 wherein the proximity sensor is an ultrasonic sensor.

25. The method as claimed in any one of claims 20 to 24 including sending periodic status 39 messages to the mobile communication device, the status message including one or more of: sensor measurements of sensors of the controller node, a calibration status, a calibration progress, a tree detection status, and a firmware version of the controller node.

26. The method as claimed in any one of claims 20 to 25 including receiving a calibration instruction, modulating actuators used for the application of the agricultural substance at 2 or more speeds or power settings, and recording an application rate associated with each speed or power setting.

27. A computer-implemented method comprising: displaying a map; receiving an input defining at least one geographic area; receiving an input providing at least an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; and sending configuration settings including the defined geographic areas and the application quantity parameters to a remote mobile communication device, wherein the remote communication device is configured to receive the configuration settings, obtain a location associated with the mobile device and determining that the location is located within the bounds of one of the defined geographic areas, and sending settings derived from the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by the application device to correspond to the desired application in response to receiving the configuration.

28. The method as claimed in claim 27 wherein receiving an input defining at least one geographic area includes receiving a plurality of inputs corresponding to points on a polygon that defines the bounds of the at least one geographic area; and wherein the plurality of inputs includes pointing device clicks or touch screen touch event inputs.

29. The method as claimed in claim 27 or 28 wherein receiving an input defining at least one geographic area includes receiving a geographic information system (GIS) file as an input; wherein the GIS file includes metadata associated with each defined geographic area; and wherein receiving an input providing at least an application quantity parameter corresponding to a desired application of an agricultural substance includes deriving the application quantity parameter for the at least one geographic area from the metadata of 40 the GIS file.

30. The method as claimed in claim 29 wherein metadata includes one or more of: agricultural input data relating to soil samples, watering maps, drone and/or satellite imagery, and agricultural substance application recommendations.

31 . An agricultural substance application device comprising: a bin for storing an agricultural substance to be dispensed; at least one applicator in communication with the bin and arranged for the application of the agricultural substance; and a controller node that includes: a receiver arranged to receive a configuration from a mobile communication device in proximity to the controller node, the configuration including a desired application rate, and an applicator modulator arranged to control the at least one applicator so as to modulate the application rate of the agricultural substance, wherein the device is provided in a housing on a trailer and is connectable to a drawing vehicle.

32. The agricultural substance application device as claimed in claim 31 arranged for the application of a granular agricultural substance, wherein the at least one applicator includes: an auger or a paddle wheel arranged to feed the granular agricultural substance from the bin into a dispenser; a blower arranged to eject the granular agricultural substance out of the dispenser; and a motor arranged to drive the auger or paddle wheel, wherein the applicator modulator of the controller comprises a motor controller module arranged to control a speed of each motor.

33. The agricultural substance application device as claimed in claim 32 including a gate provided intermediate the bin and the auger or paddle wheel, the gate being actuatable so as to selectively enable the agricultural substance to be fed from the bin into the dispenser, via the auger or paddle wheel.

34. The agricultural substance application device as claimed in claim 32 or 33 including two applicators, and wherein the respective dispensers of the applicators are arranged to eject the granular agricultural substance to the respective sides of the housing.

35. The agricultural substance application device as claimed in claim 34 wherein the dispenser is a pipe or a pipe manifold. 41

36. The agricultural substance application device as claimed in any one of claims 31 to 35 including a proximity sensor in communication with the controller node, the controller node including a level sensing module arranged to utilise the proximity sensor to determine a fill level of the bin; and wherein the proximity sensor is an ultrasonic sensor.

37. The agricultural substance application device as claimed in any one of claims 31 to 36 wherein the controller node includes a tree detection module arranged to utilise the proximity sensor to detect the proximity of a tree to the trailer and thus the dispenser, wherein the received configuration includes a setting to enable or disable tree detection by the controller node, and wherein the controller node is configured, if tree detection is enabled, to only commence application of the agricultural substance in response to it sensing the proximity of a tree.

38. The agricultural substance application device as claimed in claim 37 wherein the received configuration includes one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time; and wherein the controller node is configured to determine the proximity of tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

39. A system for applying an agricultural substance, the system including a memory for storing computer-readable program code and a processor for executing the computer-readable program code, the system comprising: a receiver for receiving configuration settings from a remote server corresponding to at least one defined geographic area and including an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; a location determining module for determining that the mobile communication device is located within the bounds of one of the defined geographic areas; and a transmitter arranged to send at least a subset of the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by an application device to correspond to the desired application in response to receiving the configuration.

Description:
METHODS AND SYSTEMS FOR AGRICULTURAL SUBSTANCE APPLICATION

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority from South African provisional patent application number 2020/06865 filed on 4 November 2020, which is incorporated by reference herein.

FIELD OF THE INVENTION

This invention relates to methods and systems for the automated or semi-automated application of agricultural substances, such as fertilizer, pesticides, fungicides and other agrochemicals, and seeds. It may find particular (although not exclusive) application in agricultural substance application in orchards, vineyards, or other row-based agriculture, and more particularly in the application of fertiliser.

BACKGROUND TO THE INVENTION

The targeted and automated application of agricultural substances is desirable for a number of reasons.

Firstly, it ensures that the correct quantity of the relevant substance is repeatably and reliably applied, which is essential for optimal crop yield. The sub-optimal application of an agricultural substance may result in a lower yield, or lower quality product. Even worse, the over-application of an agricultural substance not only causes a direct over-expenditure, but may cause damage to crops, trees, or vines. The over-application of an agricultural substance can also lead to environmental damage, including the polluting of ground water.

What is more, conditions in certain areas within a particular orchard or plantation may differ. Some areas may have poorer soil, or may be worse affected by a disease, and may accordingly require a different dosage of the relevant substance to remedy the problem.

Particularly in row-based agriculture, merely scattering the substance may also not ensure its correct application. For example, when applying fertilizer in an orchard, it may be more desirable to apply the fertilizer in the direct vicinity of the tree roots to ensure its availability to the tree. If applied in a scattered fashion, at least some of the fertiliser may fall beyond the reach of the roots.

The Applicant considers there to be room for improvement. The preceding discussion of the background to the invention is intended only to facilitate an understanding of the present invention. It should be appreciated that the discussion is not an acknowledgment or admission that any of the material referred to was part of the common general knowledge in the art as at the priority date of the application.

SUMMARY OF THE INVENTION

In accordance with an aspect of the invention there is provided a method performed at a mobile communication device and comprising: receiving configuration settings from a remote server corresponding to at least one defined geographic area and including an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; obtaining a location associated with the mobile device and determining that the location is located within the bounds of one of the defined geographic areas; and sending settings derived from the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by the application device to correspond to the desired application in response to receiving the configuration.

Further features provide for the location associated with the mobile device to be a location of a dispenser of the agricultural substance application device, the mobile device being positioned at a configured position or distance relative to the dispenser.

Further features provide for the method to include determining that the location associated with the mobile communication device is not located in any of the at least one defined geographic areas, and sending a setting to the controller node to modulate the application rate of the agricultural substance at a nominal or default rate; and optionally generating an alert to an operator that the location associated with the mobile communication device is not located in any of the at least one defined geographic areas.

Further features provide for the received configuration settings to correspond to a plurality of bordering defined geographic areas that are adjacent to and/or nested in one another, for the step of determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic areas to include determining that the location associated with the mobile communication device has crossed a border between bordering defined geographic areas, and for the step of sending settings derived from the configuration to include sending settings derived from the configuration corresponding with the newly entered relevant defined geographic area.

Further features provide for the bounds of the defined geographic areas to be polygons, and for determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic area to include applying the winding number algorithm point-in-polygon method.

Further features provide for determining that the location associated with the mobile communication device is located within the bounds of one of the defined geographic area to include obtaining location coordinates, a speed, and a bearing from a global navigation satellite system component of the mobile communication device, and if a refresh rate of the global navigation satellite system component is greater than about 100 milliseconds, extrapolating an estimated location based on the last known location coordinates, speed, and bearing.

Further features provide for the settings derived from the received configuration to be sent to the controller node upon the occurrence of a preconfigured event (such as a border crossing between different defined geographic areas) and optionally periodically; for the settings derived from the received configuration to include one or more of: application rate parameters, and a distance or location of the dispenser of the agricultural substance application device relative to the mobile phone; and for the method to include sending a synchronisation message to the controller node periodically, preferably once per 100ms to 200ms, the synchronisation message including one or more of: application rate parameters, and information relating to the status of the controller node.

Further features provide for the settings derived from the configuration and/or the synchronisation message to include a setting to enable or disable tree detection by the controller node, wherein the controller node is configured, if tree detection is enabled, to only commence application of the agricultural substance in response to it sensing the proximity of a tree; for the configuration and/or the synchronisation message to include one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time, wherein the controller node is configured to determine the proximity of a tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

Further features provide for the application rate parameters to include speed or power settings of actuators of the agricultural substance application device used for the application of the substance. In some embodiments, the actuators are motors, and the application rate parameters may include one or more of: motor speed and motor direction.

Further features provide for the method to further include receiving periodic status messages from the controller node, the status message including one or more of: sensor measurements of sensors of the controller node, a calibration status, a calibration progress, a tree detection status, and a firmware version of the controller node.

Further features provide for the communication between the mobile communication device and the controller node to be via short-range wireless communication such as Bluetooth or Wi-Fi.

Further features provide for the mobile communication device to send a ping message to a remote database, the sending triggered by one or more of: the entering, exiting, or changing of a defined geographic area, the lapsing of a period of time without the sending of a ping message (e.g. if a ping message has not been sent within the last 30 seconds), a change in bearing exceeding a threshold, such as a change in bearing greater than 10 degrees.

Further features provide for the ping message to include one or more of: the ping trigger; an identifier of an operator of the mobile device and control node; a unique identifier of a defined geographic area in which the mobile device is presently located; a unique identifier and version of a configuration of the mobile communication device and/or controller node; mobile communication phone manufacturer, model, operating system, and version information; one or more geohash of the current location of the mobile communication device; a location accuracy indicator, an altitude, a speed, a speed accuracy indicator, a heading, a current time, a controller node identifier (such as a serial number), a connection status between the mobile communication device and the controller node; a calibration status of the controller node; tree detection settings; and a location and magnitude of a maximum g-force experienced by the mobile communication device since a previous ping message was sent.

Further features provide for the ping messages to be buffered on the mobile communication device if it does not have network connectivity to the remote database, and to send the buffered ping messages when network connectivity to the remote database is established or restored.

Further features provide for the method to include sending a calibration instruction, wherein the controller node is configured to, in response to receiving the calibration instruction, modulate actuators used for the application of the agricultural substance at 2 or more speeds or power settings, preferably 3, and for the method to further include recording an application rate associated with each speed or power setting. In accordance with a further aspect of the invention there is provided a method performed at a controller node of an agricultural substance application device and comprising: receiving configuration settings from a mobile communication device that is in close proximity to the controller node, the configuration settings including a desired application rate of an agricultural substance; and modulating the rate of application of the agricultural substance to correspond to the desired application.

Further features provide for the received configuration settings to include a tree detection setting, and for the method to include, if tree detection is enabled, detecting the proximity of a tree, to commence application of the agricultural substance in response to sensing the proximity of a tree; and to cease application when no tree is detected; for the detecting of the proximity of the tree to be performed by means of a proximity sensor; for the configuration settings to include one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time, and wherein the controller node is configured to determine the proximity of a tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

A further feature provides for the proximity sensor to be an ultrasonic sensor.

Further features provide for the method to further include sending periodic status messages to the mobile communication device, the status message including one or more of: sensor measurements of sensors of the controller node, a calibration status, a calibration progress, a tree detection status, and a firmware version of the controller node.

Further features provide for the method to include receiving a calibration instruction, and for the method to include modulating actuators used for the application of the agricultural substance at 2 or more speeds or power settings, preferably 3, and recording an application rate associated with each speed or power setting.

In accordance with an aspect of the invention there is provided a computer-implemented method comprising: displaying a map; receiving an input defining at least one geographic area; receiving an input providing at least an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; and sending configuration settings including the defined geographic areas and the application quantity parameters to a remote mobile communication device, wherein the remote communication device is configured to receive the configuration settings, obtain a location associated with the mobile device and determining that the location is located within the bounds of one of the defined geographic areas, and sending settings derived from the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by the application device to correspond to the desired application in response to receiving the configuration.

Further features provide for receiving an input defining at least one geographic area to include receiving a plurality of inputs corresponding to points on a polygon that defines the bounds of the at least one geographic area; and for the plurality of inputs to be pointing device clicks, such as mouse clicks, or touch screen touch event inputs.

Further features provide for receiving an input defining at least one geographic area to include receiving a geographic information system (GIS) file as an input; and for the GIS file to include metadata associated with each defined geographic area, and for receiving an input providing at least an application quantity parameter corresponding to a desired application of an agricultural substance to include deriving the application quantity parameter for the at least one geographic area from the metadata of the GIS file. The metadata may include one or more of: agricultural input data relating to soil samples, watering maps, drone and/or satellite imagery, and application recommendations.

In accordance with a further aspect of the invention there is provided an agricultural substance application device comprising: a bin for storing an agricultural substance to be dispensed; at least one applicator in communication with the bin and arranged for the application of the agricultural substance; and a controller node that includes: a receiver arranged to receive a configuration from a mobile communication device in proximity to the controller node, the configuration including a desired application rate, and an applicator modulator arranged to control the at least one applicator so as to modulate the application rate of the agricultural substance, wherein the device is provided in a housing on a trailer and is connectable to a drawing vehicle. Further features provide for the application device to be arranged for the application of a granular agricultural substance, and for the at least one applicator to include: an auger or a paddle wheel arranged to feed the granular agricultural substance from the bin into a dispenser, and a blower arranged to eject the granular agricultural substance out of the dispenser; and a motor arranged to drive the auger or paddle wheel, wherein the applicator modulator of the controller comprises a motor controller module arranged to control a speed of each motor.

Further features provide for a gate to be provided intermediate the bin and the auger or paddle wheel, the gate being actuatable so as to selectively enable the agricultural substance to be fed from the bin into the dispenser, via the auger or paddle wheel.

Further features provide for the application device to include two applicators, and for the respective dispensers of the applicators to be arranged to eject the granular agricultural substance to the respective sides of the housing. The dispenser may be a pipe or a pipe manifold.

Further features provide for the device to include a proximity sensor in communication with the controller node, the controller node including a level sensing module arranged to utilise the proximity sensor to determine a fill level of the bin; and for the proximity sensor to be an ultrasonic sensor.

Further features provide for the controller node to include a tree detection module, the tree detection module arranged to utilise the proximity sensor to detect the proximity of a tree to the trailer and thus the dispenser, wherein the received configuration includes a setting to enable or disable tree detection by the controller node, wherein the controller node is configured, if tree detection is enabled, to only commence application of the agricultural substance in response to it sensing the proximity of a tree.

Further features provide for the received configuration to include one or more of: a tree detection range, a tree detection time delay from detection to the commencement of application, and an application time, wherein the controller node is configured to determine the proximity of tree based on the tree detection range setting, to commence application of the agricultural substance as indicated by the delay setting, and to cease application after the lapsing of the application time following the commencement of application.

In accordance with a further aspect of the invention there is provided a system for applying an agricultural substance, the system including a memory for storing computer-readable program code and a processor for executing the computer-readable program code, the system comprising: a receiver for receiving configuration settings from a remote server corresponding to at least one defined geographic area and including an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas; a location determining module for determining that the mobile communication device is located within the bounds of one of the defined geographic areas; and a transmitter arranged to send at least a subset of the configuration corresponding with the relevant defined geographic area to a controller node of an agricultural substance application device that is arranged to modulate the rate of application of the agricultural substance, wherein the controller node is configured to modulate the rate of application of an agricultural substance by an application device to correspond to the desired application in response to receiving the configuration.

Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

Figure 1 is a schematic representation of a system for agricultural substance application;

Figure 2A to 2D are schematic representations of four variants of an application device for an agricultural substance;

Figure 3A and 3B are schematic representations of hardware components and functional components of a controller node, respectively;

Figure 4 is a schematic representation of functional components of a mobile communication device;

Figure 5A to 5H are exemplary screens displayed by a mobile communication device;

Figure 6A to 6M are exemplary screens displayed by a web application accessed via a computing device;

Figure 7 is a flow chart illustrating a method for the application of an agricultural substance; and

Figure 8 illustrates an example of a computing device in which various aspects of the disclosure may be implemented.

DETAILED DESCRIPTION WITH REFERENCE TO THE DRAWINGS

The methods and systems disclosed herein provide an loT-based solution for the precision application of agricultural substances, including spreading media or granular substances such as fertilisers.

Figure 1 is a schematic diagram which illustrates an exemplary system (100) for agricultural substance application. The agricultural substance may be agrochemicals, or fertilisers (in granular, powder or liquid form), or even seeds. Throughout the description, the example of granular fertiliser will be used.

The system includes an agricultural substance application device (102) comprising a housing carried on a trailer and arranged to be attached and drawn by a drawing vehicle (104). The application device (102) and its sub-components and systems receive hydraulic and electric power from the drawing vehicle (104). An operator (106), and driver of the drawing vehicle (104), has a mobile communication device (108) which may be mounted in the cabin of the drawing vehicle for safely viewing its display during use. The agricultural substance application device (102) includes a controller node (110) which is arranged to control various hardware modules and components described in further detail below. The controller node (110) is in data communication with the mobile communication device (108) by means of a short-range wireless communication such as Bluetooth or Wi-Fi.

The application device (102) spreader houses the agricultural substance (presently granular fertilizer) medium in a bin. This fertilizer may be dispersed from the bin in various manners. A first exemplary option is a paddlewheel system, a second exemplary option is an auger system, a third exemplary option is a belt (such as a conveyor belt), and a fourth exemplary option is a chain. The rate of application (or dispersion) is controlled by a (stepper) motor for each “dispersion stack” (i.e. the combination of stepper motor, paddlewheel/auger/belt/chain, and manifold/dispenser). The fertilizer is dispersed into two dispensers or manifolds. The dispensers are connected to an air blower that is powered hydraulically, either directly from the hydraulic system of the drawing vehicle (104) or from an onboard hydraulic pump powered by the power take-off (PTO) of the drawing vehicle. The resulting air flow in the dispensers (or manifolds) draws the dispersed fertilizer into the dispenser by the venturi principle and dispenses it, via its outlets, onto the orchard floor.

Typically, one dispersion stack (motor, paddlewheel/auger/belt/chain, manifold, and dispenser) dispenses to the left side and the other dispensed to the right side. However, the system can be configured such that both stacks dispense to either the left or right sides. In both instances each stack is controlled independently, to allow single-sided spreading and low and high rate spreading, respectively.

In use, the controller node (110) is therefore in close proximity to the mobile communication device (108), or at least sufficiently so to enable close-range communication between them. In a typical real-world application, the distance between the mobile communication device (108) and the controller node (110) will be between 1 and 3 metres, depending on the size of the trailer and the size of the drawing vehicle (104). The mobile communication device (108) is also, in use, located a distance from the dispensers of the application device (102), the relevance of which is discussed in further detail below.

The controller node (110) is mounted onto the application device (102) and is connected to the 12-volt power supply of the drawing vehicle (104). The controller node (110) is also connected to the two (stepper) motors and optionally to the proximity sensor for the purposes of tree detection or bin level monitoring. The controller node (110) may be mounted such that it has sufficient line of sight with the mobile communication device (108) to ensure adequate wireless communication between them.

The controller node (1 10) is configured to for limited decision making and, to some extent, performs as a child device that is continuously, periodically, or in an event-driven manner instructed by the (parent) mobile communication device (108) as to how to control the hardware of the application device (102). These instructions are guided by a configuration that resides on a remote database (112) that is accessible via a network connection which, in the present embodiment, is the internet (1 14). The remote database (112) may be accessible, or administered by, a remote (cloud) server (116). The configuration may be prepared and submitted via a web interface accessed through a computing device (118).

The database (112) may be a NoSQL Firebase FireStore database. This choice of database has several advantages over conventional SQL databases and several challenges that must be overcome. The advantages include:

• fully scalable;

• integrated off-line support;

• integrated security rules; and near real-time with change listening support.

However, the data is not structured and each database read and write is billed for. As a result, data duplication is a typical feature of this type of database and the data structure may be optimised to minimise the number of read and write operations. There are also restrictions on the type of queries that can be made. The two primary advantages of this database are that it is fully scalable and that it has integrated off-line support. Conventional SQL databases required a nonlinear increase in server capacity as the data size increases and query speed nevertheless decreases, there are also finite restrictions on the database size. Due to the volume of data created by active application devices (102) a fully scalable NoSQL database is preferable.

Read, write, and edit access to the database (112) may be carefully restricted to the appropriate parties.

The mobile communication device (108) is connected to the database (112) via the internet (114), and telecommunication networks shown schematically by the cellular communication tower (107). The mobile communication device (108) may retrieve the relevant configuration from the database (112) and, in turn, send at least a subset of this configuration (possibly settings derived from this configuration) to the controller node (110) so that the application of the fertilizer is performed as per the configuration.

The configuration includes at least one defined geographic area, defined by a user via the web interface accessed on the computing device (118) as shown in more detail below. The geographic areas are defined by the user specifying boundaries on a map. Typically, these geographic areas delineate orchards, which may have irregular outlines. The user may therefore navigate the web interface to display the relevant orchard and define a polygon by clicking along the borders of the orchard displayed on the map (for example with a mouse or on a touch screen). Once the polygon is completed, the geographic area will be defined thereby. A user may then input a desired application quantity (for example expressed as an absolute number), or may specify a multiplication factor or percentage of a nominal (or default) application rate.

The user may furthermore define nested geographic areas (or child areas) within another defined geographic area (a parent area). Typically, this finds application where the parent area is an orchard, and the child areas are areas within the relevant orchard that require different applications of fertilizer. For example, one particular area may have poorer soil, or be underperforming. The user may therefore desire a higher than nominal application of fertiliser in such an area. During operation, the operator (106) uses the mobile communication device (108) to access the configuration relevant to the particular application device (102), and orchards. The mobile communication device (108) then continuously monitors whether the application device (102) and, more particularly, the dispensers of the application device, are currently located within any of these define geographic areas. Configuring the mobile communication device (108) may include configuring a distance between the mobile communication device (108), or mobile communication device offset, from the application device (102) (or its dispensers). The mobile communication device may therefore first determine its own location, and then determine or estimate a location of the dispensers. The location of the dispensers may therefore be associated with the location of the mobile communication device, with the relation being configured with the offset (or relative distances or positions) of the mobile communication device (108) and the (dispensers of) the application device (102). Upon determining that this location associated with the mobile communication device (108), i.e. the determined or estimated position of the dispenser or dispensers is in one of the defined geographic areas, it will instruct the controller node to modulate the application rate so as to obtain the desired application for that particular geographic area. Due to the continuous monitoring, the mobile communication device (108) will detect when the dispensers have exited the relevant geographic area; or when it has entered into another defined geographic area. The mobile communication device will then, as before, send the relevant configuration instruction to the controller node (110) to modulate the application of fertilizer accordingly.

While this location computation is performed by the mobile communication device (108), it therefore also makes the decision making as to whether to change the modulation of the application, and instructs the controller node (110) to do so. Limited decision making may be left to the controller node (110).

The application device (102) may be equipped with a proximity sensor, such as an ultrasonic sensor for example (not shown in Figure 1), which the controller node (110) may utilise to detect the proximity of a tree (120). While the mobile communication device (108) may instruct the controller node (1 10) to enable or disable this functionality, the tree proximity sensing is ultimately performed by the controller node. The controller node (110) may then limit the application of fertiliser only to instances where a tree is in proximity to the application device (102) and, more particularly, in such proximity as to effectively apply the fertiliser only to a desired area around the tree (such as within the vicinity of the roots).

When configured to detect trees, the proximity sensor is typically mounted forward of the dispenser or dispensers, for example on the drawing vehicle (104). The distance from the proximity sensor to the dispenser(s) is used as a configuration parameter to determine the resulting application (or spreading) area relative to the detected tree.

In some embodiments, the system may provide a “no-tree-no-spread” functionality. In such an embodiment, the system my include two (or more) proximity sensors, for example ultrasonic sensors, with at least one mounted on each side of the drawing vehicle or application device. The ultrasonic (proximity) sensors may be used to detect the absence of a tree in which case application (or spreading) will be suspended for a configurable distance or time; and/or until trees are once again detected. This functionality may find particular application in older or poorer quality orchards where some trees have died.

In some embodiments, the application device (102) may utilise the proximity sensor (or an additional proximity sensor) to monitor the content level of a bin or reservoir of the application device (102) within which the relevant agricultural substance (presently granular fertilizer) is stored carried. When configured to detect a bin level, the proximity sensor is mounted on the inside surface of the bin’s lid.

The mobile communication device (108) may furthermore periodically and/or in an event-driven fashion send instantaneous status data and location data to the database (112). The web interface viewed on the computing device (118) may display this information in real-time or near real-time, so that a user (such as a supervisor) can track the drawing vehicle (104) and application device (102) as well as see information such as the application rate presently being applied by the application device.

The mobile communication device (108) may be mounted to the drawing vehicle (104) such that it is accessible to the operator (106) (i.e. the driver). The distance from the mobile communication device (108) to the dispensers is used as a configuration parameter to ensure the application (or spreading) rate is based on the position of the dispensers and not the mobile communication device (108). The mobile communication device (108) may be powered by its battery or be powered via an automotive charging device from the 12-volt power supply of the drawing vehicle ( 4).

In addition to a host of other functionality, the mobile communication device (108) may provide visual feedback to the operator (106) on his position, the state of the system, and the spreading configuration and rate. Moreover, the operator (106) can independently and jointly enable and disable the two stepper motors.

The mobile communication device (108) can also be used to configure and trigger a calibration run. This rotates the motors at three configurable speeds for a configurable number of rotations. The amount of agricultural substance (fertilizer in this case) dispensed can then be measured and used as a parameter in the creation of application configurations.

Although the database (112) is shown in Figure 1 to be associated with a server (116), in some instances a write operation to the database may trigger serverless processing of the relevant data. The database (112) may have integrated support for serverless processing. Specifically, certain database actions can trigger additional computational actions. One such example is the nested deletion of the full configuration record including all sub-collections when the master configuration document is deleted. The database (112) may also interface with 3 rd party integrations.

Figure 2A to 2D show schematic representations of four respective variants of the application device (102). For convenience, the wheels of the trailer, optional onboard hydraulic pump, towing system, and alternate dispensing configurations are not shown.

The application device (102) includes a bin (202) in which the agricultural substance to be applied (e.g. fertilizer) is stored. If fitted, the level of the substance in the bin (202) may be monitored by a proximity sensor, presently an ultrasonic sensor (204), which is wired to the controller node (110). The bin (202) shape is not necessarily uniform, and a calibration curve may be used to compute the remaining substance and rate of deposition from the bin level. A time-based trailing average filter may be applied to the level measurement to account for disturbances to the medium in the bin resulting from the expectedly uneven driving surface.

The flow of substance out of the bin (202) is controlled by the paddlewheels (208) (in the embodiment of Figure 2A) and augers (210) (in the embodiment of Figure 2B), respectively. For the paddlewheel variant, gates (212) are provided which can be opened and closed to enable or disable individual dispensing channels. This feature can be used to rough-adjust the application or deposition rates and/or enable/disable one side of the system. The left and right paddlewheels (208)/augers (210) are driven by independently controlled motors (214). Specifically, stepper motors are used for their ability to provide low-speed, high-torque, and open-loop speed control. However, in other embodiments the system could be implemented with any open/closed loop actuators. The motors are wired to, and controlled by, the controller node (110).

The dispensed substance is drawn into dispensers (216) by the venturi effect resulting from the high flow rate of air through the dispensers, as indicated by the broken-line arrows. The air flow is provided by a hydraulically driven blower (218). The blower (218) may be driven directly by the hydraulic system of the drawing vehicle (104) or by an onboard hydraulic pump driven by the PTO of the drawing vehicle. The orientation of the dispensers (216) can be manually configured and fine-tuned to suit the required application (or deposition) rate and the layout, bank height and configuration of the orchard.

In other embodiments, as described below with reference to Figure 2C and 2D, the flow of the agricultural substance may be controlled with one or more gate valve or sluice to dispense the agricultural substance onto a conveyor belt, which further conveys the substance into a dispenser. The rate of application of the agricultural substance may therefore be proportional to the speed of the conveyor belt, and the degree to which the gate of the gate valve or sluice is opened.

In the embodiment shown in Figure 2C, the bin (202) is provided with a gate valve (224), the gate of which may be controlled with a high torque electronic actuator (225). In the present embodiment, the actuator (225) is a worm drive that causes the gate of the gate valve (224) to open and close. A belt (226), such as a conveyor belt, is positioned proximate the gate valve (224) such that the agricultural substance falls onto the belt (226) via the opened gate valve (224). The belt (226) has an encoder (227) on a belt roller shaft which communicates a speed of the belt (226) to the controller node (110). The belt (226) may be hydraulically driven and a proportional hydraulic valve (228) is operable to control the speed of the belt (226), with the encoder providing feedback of the belt’s speed.

The rate at which the agricultural substance is dispensed may therefore be controlled through either or both of varying the gate of the gate valve (224) and/or by varying the speed of the belt (226). In some embodiments, where only one of these control mechanisms are used to vary the dispensing rate, the gate valve (224) may have a fixed opened size (that is, without the capability of controlling the degree to which the gate is opened). In such a case, the speed of the belt (226) may be varied to control the rate of application of the agricultural substance through the proportional hydraulic valve (228).

Conversely, in some embodiments the conveyor belt (226) speed may be proportional to the ground speed of the trailer through a gear system and thus not directly controllable by the controller node (1 10). It is envisaged that in some embodiments the belt (226) may have a fixed speed. In such embodiments, the actuator (225) may be used to control the degree to which the gate of the gate valve (224) is opened, thereby controlling the dispensing rate.

In the embodiment of Figure 2C, the (first) belt (226) further conveys the agricultural substance onto one or a pair of dispenser belts (230). In this embodiment, showing a pair of dispenser belts (230), the one belt may be arranged to dispense the substance from the left side of the application device (102), and the other dispenser belt (230) arranged to do so from the right side of the application device (102). In the embodiment of Figure 2D, the (first) belt (226) further conveys the agricultural substance onto one or more spinner disks (232) that rotate at high speed and having radial fins that drives the agricultural substance radially outwards from the spinner disk (232), thereby dispensing the substance from the application device (102).

Figure 3A shows a schematic representation of the hardware of the controller node (110). The controller node (110) may include a processor (302) for executing the functions of components described below, which may be provided by hardware or by software units executing on the controller node (110). The software units may be stored in a memory component (305) and instructions may be provided to the processor (302) to carry out the functionality of the described components.

The controller node (110) is housed in a housing (not shown), that provides mechanical, electrical, and chemical isolation from the harsh operating environment the controller node is expected to operate in. The housing may be mounted to the application device (102) via vibration isolating mounts. The housing and all connectors may be IP-rated (ingress protection-rated) to ensure the electronic components are protected from the corrosive agricultural substances as well as the elements. The housing may be manufactured from a radiolucent material to ensure good wireless communications with the mobile communication device (108)

Electrical connectors (306) are accessible via the housing to simplify installation, maintenance, and repair and provide IP-rated electrical connections to the motors (214), ultrasonic sensor (204) and 12-volt power supply. A power switch (308), an indicator LED (310), and a buzzer (312) are also provided on the housing. Internal to the housing a buzzer (312), a DC-to-DC power supply (314) and two motor drivers (316) are provided. Relays (317) are used to connect the LED (310) and buzzer (312) to the power supply.

The power switch (308) connects the 12-volt external power supply to the internal components. The switch (308) is illuminated and indicates the power status to the operator (106). The LED (310) and buzzer (312) provide an audio-visual user interface and different flashes and beeps are used to communicate information to the operator (106) about the state of the system, including wireless communication status, tree detection, and calibration notifications.

The DC-to-DC power supply (314) steps up the voltage to that required by the motor drivers (316). It also provides electrical isolation and protection for the motor drivers (316). The motor drivers (316) provide open loop speed and direction control of the stepper motors (214) based on control signals from the processor (302). The controller node (110) receives 12-volt power via a power input. This supply is typically directly from the battery of the drawing vehicle (104) and is subject to large fluctuations resulting from the alternator of the drawing vehicle (104), the battery’s state of charge and the current draw of this and other systems. Accordingly, the several layers of protection circuitry (318) is provided. The protection circuitry (318) protects the onboard DC-to-DC power supply (314) as well as an external step-up power supply for the motor drivers (316). The onboard DC-to-DC power supply (314) generates the 5 volts that may be required by the processor (302), motor drivers (316), ultrasonic sensor (204), relays (317) and the like.

Another layer of protection circuitry (318) provides protection to all downstream components. The processor (302) (or microcontroller) has yet another layer of onboard protection circuitry and a DC-to-DC converter down from 5 volts to 3.3 volts. Level shifting circuitry is implemented to enable integration of the 5-volt peripherals (motor drivers, US sensor and relays).

The processor (302) includes two independent processing cores and has integrated wireless WiFi (320) and Bluetooth (322) modules. Bluetooth low energy (BLE) is used for bidirectional communication with the mobile communication device (108). The first core is a non-deterministic interrupt-based core (303) and second is a real-time core (304). The primary responsibility of the real-time core (304) is precise control of the motors.

Figure 3B is a schematic representation of the functional components of the controller node (110) and more particularly, the functional components implemented in the firmware of the controller node (110) that is executed by the processor (302).

The interrupt-based core (303) includes a state machine (330) and communication modules (332). The real-time core (304) includes a motor control module (334) and a calibration module (336).

An EEPROM module (338), relay module (340) and proximity sensor module (342) execute across both cores. The state machine (330) puts the system into one of three states: waiting for connection, running, and calibrating.

The communication module (332) handles BLE-based bidirectional communication with the mobile communication device (108) application. The information transmitted from the mobile communication device (108) to the controller node (110) may include: an identifier of the type of message; the enabled state and direction of both motors; the motor speeds; • the enabled state of tree detection;

• the tree detection range of interest;

• the tree detection time delay from detection to deposition;

• the tree detection deposition time;

• mobile communication device to dispenser offset distance;

• motor directions;

• proximity sensor mode (tree detection or bin height);

• bin type (used for bin level calibration curve);

• calibration cancellation; and

• calibration parameters (3 x speeds and number of rotations per speed).

The information transmitted from the controller node (110) to the mobile communication device (108) may include:

• an identifier of the type of message;

• proximity sensor measurements;

• proximity sensor connected status;

• tree detected status;

• calibrating status;

• calibrating progress;

• firmware version;

• mobile communication device to dispenser offset distance;

• motor directions;

• proximity sensor mode (tree detection or bin height); and

• bin type (used for bin level calibration curve).

These messages may be sent back and forth periodically and, preferably between every 100ms and 200 ms; or may be event driven.

The real-time core (304) is intended to loop through its modules as quickly as possible and none of the modules are blocking. This is because the last module in the loop, the motor control module (334) will step the motor (214) to the setpoint and slow execution in any of the other modules will stack the required steps resulting in motor jitter.

Based on the state of the state machine (330) and the configuration parameters the direction and enabled state of the motors is set. The calibration module (336) only runs if a calibration has been triggered from the mobile communication device (108) which puts the system into the calibration state. If so, it configures the motors to be enabled, computes the run speeds and times for the three speeds, triggers an audio-visual alarm via the shared relay module (340), cycles through the three speeds and triggers an audio-visual alarm on the completion of the calibration.

The EEPROM module (338) runs independently of the two cores (303, 304). It is used to store and read the device configuration which may include:

• the device serial number;

• the motor directions;

• mobile communication device to dispenser offset distance;

• the proximity sensor mode; and

• the bin type.

The relay module (340) is used across both cores (303, 304) to provide user feedback including:

• indicating an initialisation error;

• indicating the system is waiting for, or has lost a connection to, the mobile communication device (108);

• indicating the start and end of a calibration run; and

• indicating a tree has been detected.

The proximity sensing module (342) has two distinct submodules. The first runs on the interruptbased core (303) and is responsible for monitoring the electronic signals from the proximity sensor, presently an ultrasonic sensor (204), computing the ultrasonic sensor distance reading from this data and, based on the configuration of the sensor for tree detection or bin depth sensing, either reporting the bin depth or processing the data further for tree detection.

In the case of tree detection, the algorithm must detect no objects in the range of interest for a configured time, followed by an object inside the configured range of interest for a configured time followed again by no object in the range of interest for a configured time. If a tree is detected, a flag is set to be handled by the real-time submodule. The interrupt submodule also monitors for a communication failure with the ultrasonic sensor and sets this flag for transmission by the communication module (332). The real-time submodule does nothing if tree detection is disabled (ultrasonic sensor disabled and/or configured as a bin level sensor). If tree detection is enabled, the motors (214) are stopped pending the detection of a tree. If the tree detection flag has been set by the interrupt submodule then the real-time module will trigger the audio-visual alarm via the relay module (340) upon tree detection and enable and disable the motors (214) based on the times sent from the mobile communication device (108). The motor speed is also sent from the mobile communication device (108).

The proximity sensing module (342) may also be configured to detect the absence of a tree in which case it will cause the motor control module (334) and motor drivers (316) to suspend application of the substance (fertilizer) for a configurable distance or time and/or until trees are once again detected.

Figure 4 shows a schematic representation of functional units of a mobile communication device (108). The mobile communication device (108) may include a processor (402) for executing the functions of components described below, which may be provided by hardware or by software units executing on the mobile communication device (108). The software units may be stored in a memory component (404) and instructions may be provided to the processor (402) to carry out the functionality of the described components. In some cases, for example in a cloud computing implementation, software units arranged to manage and/or process data on behalf of the mobile communication device (108) may be provided remotely. Some or all of the components may be provided by a software application downloadable onto and executable on the mobile communication device (108).

The mobile communication device (108) includes a user interface module (406) for displaying a number of various pages, status screens, and displays associated with the administration and use of the system. The mobile communication device (108) includes a global satellite navigation module (408) for determining a position, speed, bearing, and time of the mobile communication device (108).

The mobile communication device (108) further includes a communication module (410), comprising a transmitter and a receiver, arranged to transmit and receive data from the database (112), as well as the controller node (110). The receiver may receive configuration settings from a remote server (116), or a remote database (112) corresponding to at least one defined geographic area and including an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas. The transmitter may send at least a subset of the configuration corresponding with the relevant defined geographic area to the controller node (110), such that the controller node modulates the rate of application of the agricultural substance. The communication module (410) manages the connection layer by establishing the connection to the controller node (110) and monitoring the communication period and handling termination and recovery of the connection. It also coordinates transmission of data to and from the controller node (110) including data integrity checks in the form of cyclical redundancy checksum computation and verification.

The mobile communication device (108) further includes a location determining module (412) for determining that the mobile communication device (108), and thus the application device (102), is located within the bounds of one of the defined geographic areas. The bounds of the defined geographic areas may be polygons, and the location determining module (412) may be arranged to determine whether the mobile communication device (108) is located within the bounds of one of the defined geographic areas (polygons) by applying the winding number algorithm point-in-polygon method.

The location determining module (412) may further be arranged to obtaining location coordinates, a speed, and a bearing from the global satellite navigation module (408), and if a refresh rate of the global satellite navigation module (408) is greater than about 100 milliseconds, will extrapolate an estimated actual position based on the last known location coordinates, speed, and bearing. The location determining module (412) checks that the device’s location services are enabled and prompts the operator (108) accordingly. It configures the device’s location provider to give the maximum location accuracy and refresh rate supported by the device. The refresh rate is typically once per second. The lag resulting from this refresh rate would result in a shift in the deposition (application) factor boundaries (orchard and zone polygons). To counteract this, the location data is oversampled, and the location is estimated at a rate of 10 times per second by computing a pseudo position from the last known position, speed, and direction. Finally, the location determining module (41 ) assesses the quality of the location data including the precision of the location and speed data as well as the refresh rate. These assessments are made available for display by the user interface module (406) and logging to the database (112).

The mobile communication device further includes an accelerometer module (414) arranged to monitor the g-forces the mobile communication device is exposed to. The location and magnitude of the maximum g-force is tracked. This information is sent to the database (1 12) periodically and then the maximum is reset. This is used to provide a map of maximum g-forces. This information can be used to identify problematic driving and road conditions.

The user interface module (406) may be arranged to display a number of different pages and statuses to the operator (106). Figures 5A to 5H show a number of such pages. Figure 5A and 5B shows a sign in page (before, and while processing). Operators (106) may, for example, sign in using their ID number. Security may be improved by restricting the access to the database (112) enjoyed by operators (106). After authentication of the operator (106), the operator’s profile and associated sites and configurations are loaded from the database (112). The status of this process is displayed on the bottom left of the display. This information may provide critical feedback to the operator (106) on the progress of the process, especially in areas with poor internet access.

Once this information is collected, if the operator is listed on more than one site, they will be asked to select a site on the sites page before moving to the scan page (see Figure 5C). If they are only listed on one site, they will jump to the scan page (Figure 5D). The scan page checks that BLE exists and is enabled on the device, providing prompts to the operator (106). It then starts scanning for nearby application devices (102) which are displayed in the list (Figure 5D). A demo application device (106) may be shown for use in marketing, training, and demonstration purposes.

On selection of an application device (106) on the scan page, the application device (106) page is displayed (Figure 5E). This page has a live map as the background, a top panel of information, a left column of floating action buttons and a bottom panel of control buttons. Additional information and menus are accessible from a side panel.

The location of the application device (106) is shown on the map by the blue arrow and tail. The centre of the arrow shows the location of the mobile communication device (108) and the tail represents the configurable offset. The accuracy of the location is shown by the blue circle. The orchards and zones are also shown on the map. Finally, the historical path of the application device (106) is shown by a line. The colour of the line is grey when outside an orchard, green when inside an orchard and takes the colour of the zone when inside a zone. A dashed line indicates both motors are off, a dotted line indicates one motor is on and a solid line indicates both motors are on.

The top panel displays the configuration status and details. The panel displays a warning if the operator has not yet received a spreading configuration or if the operator is currently located outside the orchards included in the configuration. The panel displays the name of the configuration and zone which the operator is currently in. The following additional information may be displayed:

• the active deposition (application) factor;

• the motor speed;

• the active deposition rate;

• the configuration name and description; and

• the configuration code: {site}/{configurate unique identifier}/{configuration version}.

The left column of floating action buttons shows status information from the various services (from top to bottom):

• location accuracy;

• speed;

• BLE status; and

• proximity sensor status. The location accuracy button displays the quality of the location accuracy. The circumferential gauge shows the refresh rate of the GPS position (the global satellite navigation module (408)). Pressing on the button shows the numerical refresh rate, bearing and accuracy. The speed button shows the vehicle speed in km/h. Pressing on the button shows the numerical refresh rate, and accuracy.

The BLE status button shows the connection status to the node. The circumferential gauge shows the communication period. Pressing on the button shows the numerical communication period. The ultrasonic status button shows the status of the ultrasonic module: disabled, bin level, or tree detection. In bin level mode, the button will display a warning if connection to the ultrasonic sensor is lost and can be pressed to see the numerical bin level. In tree detection mode, the button can be pressed to enable and disable tree detection. When a tree is detected the button goes green for the duration of the deposition (application) run.

The bottom panel is topped by a horizontal line gauge that is a graphical representation of the ultrasonic sensor reading. Below this are three buttons for enabling and disabling the motors (214). The left and right buttons control the left and right motors, respectively. The central button disables both motors if one or more motor (214) is enabled and enables both motors if both motors are disabled.

The side panel and additional menus are shown in Figures 5F to 5H. The side panel may show:

• the operator’s name and ID number;

• the application device serial number and firmware version;

• a calibrate button;

• a settings button; and

• a log out button.

Pressing the calibrate button opens the calibration dialog (Figure 5G). The three calibration speeds and the revolutions per speed must be entered before pressing the calibrate button. During calibration, the progress of the calibration is displayed, and the calibration can be cancelled by pressing the calibrate button. Pressing the node settings button in the side panel opens a password protected settings panel.

The settings may include:

• the mobile communication device to dispenser offset;

• the motor directions;

• the proximity sensor mode; and

• the bin configuration number (used to select the depth sensing calibration curve). The push button is used to transfer this configuration to the controller node (1 10). This information is saved on the node’s memory (305, 338).

A web application accessible via a computing device may be utilised to configure and monitor application devices (102). Figures 6A to 6M show a number of pages or interfaces that may be provided by the web application.

The sign in page (Figure 6A) provides email and password-based sign up and sign in functionality as well as password recovery features. It also displays the platform version number. This helps users to ensure they are on the latest version.

If the active user has access to more than one site, the home module provides a drop-down for selection of a site (Figure 6B). The user can also navigate between modules using the left-hand menu button (Figure 6C).

The dashboard page is shown in Figure 6D. It has a map centrally and an operators’ panel on the right-hand side. The map shown the status of all the site’s operators. Offline operators are represented by grey arrows and online operators are represented by blue arrows. Operators with slow connections are shown with orange arrows. The GPS accuracy of online operators is represented by a circle around them. The colour of the circle changes based on the location accuracy.

Each arrow is trailed by a path showing the 100 most recent pings. The colour if the line is grey when outside an orchard, green when inside an orchard and the colour of the zone (from the configuration) when inside a zone. A dashed line indicates both motors are stopped, a dotted line indicates one motor is running and a solid line indicates both motors are running. The map supports zooming, panning, and switching between map and satellite views.

The operators’ panel shows all the site’s operators split into three categories:

• online - operators that are currently transmitting to the database (note some operators may be actively spreading but with no internet connection and will appear offline);

• offline - operators who have received a configuration but are not currently spreading and/or connected to the internet; and

• inactive - operators that have never received a configuration (the platform provides support for other systems and some operators may never use the application device (102)).

Each operator’s name, ID number, controller node (110) serial number, current orchard and zone and configuration site, unique identifier and version is displayed if available. The user can click on the crosshairs next to each operator to centre and zoom the map to said operator’s location.

Clicking on a particular operator brings up a detailed status bar for said operator which displays much of the information contained in the latest ping message (Figure 6E). This information is geared toward supervisor overview of operators and remote support and fault-finding services provided by a service provider. In this regard, some of the applications of the information are discussed below.

The top progress bar gives a visual indication of the time since the last ping message and this can assist in identifying and resolving issues related to poor internet connectivity. The same applies to the last message time and date field. The version allows support staff to ensure customers are using the latest version of the mobile application executing on the mobile communication device (108). When the mobile communication device (108) is a smartphone, and more particularly an Android smartphone, the device details allow support staff to ensure customers are not using unsupported Android devices and Android versions.

The (controller) node details allow support staff to verify the quality of the connection with the controller node (110), the version of firmware used on the controller node, the controller node serial number, and the configuration of said controller node.

The configuration details allow support staff and supervisors to monitor the operator’s current orchard and zone as well as deposition (application) rate, motor speed and active configuration. If an operator’s configuration is out of date it is displayed in red here. The user can jump to the configuration by clicking on it.

The location details, speed plot, and location accuracy plot allow support staff and supervisors to monitor the quality of the location and speed tracking as well as providing an indication of an operators driving style. The motor detail allows support staff and supervisors to see if an operator is actively spreading and if the motor speed in within the expected range.

The ultrasonic sensor detail allows support staff to verify the configuration of the bin level or tree detection service as well as the connectivity status of the hardware. The configuration detail may be used by support staff and supervisors to remotely ensure the calibration operation is being executed correctly. The above detailed information is critical to the high level of remote support and training that the application device (102) and a service provider may provide.

The reports page is shown in Figure 6F. The page features a filter bar, with many configurable filters on the left and a date filter on the right. A map showing the resulting data is shown below. The map can be zoomed and panned. Clicking on any path on the map brings up the same details shown on the dashboard for the selected path/ping. The filter menu is shown in Figure 6G. The left most panel shows the filter categories, the central panel allows for the selection, creation and enabling/disabling of filters. The filter allows the user to select specific data and to produce clean reports showing only the applicable spreading data.

The filters are detailed below:

• switch filters include: o hide stopped - hides portions of the data where both motors were stopped. o hide out of orchard - hides portions of the data where the application device (102) was not inside an orchard; o show g-force tracking - shows a subset of the dynamics data - typically the highest 40 impact points above 4g;

• the operators filter allows the user to select one or more operators to restrict the data to;

• the configurations filter allows the user to select a specific configuration and version for which they would like to see the spreading data;

• the nodes filter allows the user to restrict the data to that created by said node;

• the sessions filter allows the user to limit the data to a specific session; and

• the areas filter allows the user to create and edit polygon areas on the map which are then used to filter the data to said area.

The mechanism of the area filter is unique in its implementation. NoSQL databases do not allow for the database to be queried based on coordinates or geofencing. To achieve this, each ping is tagged with the 5, 6, 7, 8, 9, 10, and 11 -character geohash of the current location. A geohash defines a rectangular area on the surface of earth. As the number of characters in the geohash increases from 5 to 11 the corresponding area shrinks as follows:

• 5 < 4.89km x 4.89km

• 6 < 1.22km x o.61km

• 7 < 153m x 153m

• 8 < 38.2m x 19.1 m

• 9 < 4.77m x 4.77m

• 10 < 1.19m x 0.596m

• 1 1 < 149mm x 149mm

The user defined area filter is then converted into a list of no more than 9 geohashes by iteratively decreasing the size of the geohash until the 9 geohash threshold is reached. As the geohashes define a grid of rectangular areas and the user defined area may take any shape, it is expected that the query resulting from this method will return some data that lies outside the area defined by the user. This data is filtered out by testing each point to ensure it lies inside the user’s specified area. Because one may be billed for each read, this unused data may be commercially wasteful. The number of unused points can be reduced by using more, smaller, geohash blocks. However, this increases the number of database queries - especially when other nested filters are set - and there is an associated performance cost. Accordingly, the 9 geohash limit has been set and provides a good balance of cost and performance.

The configurations page (Figure 6H) shows a list of all of a site’s configurations with the configuration’s name, description, the latest version number and creation date and time as well as the creator, and the unique identifier. Configurations can be created, deleted, and opened from this page.

The configuration page is shown in Figure 61. There is a map centrally, topped with an action bar above, and bounded by an input data panel on the left and a configuration panel on the right.

The purpose of the configuration page is to allow users to define the nominal spreading rate and precision spreading orchards and zones with deposition (application) factors. The page also allows this information to be pushed to operators, copied to a new configuration, and exported for quality control and audit purposes.

The input data panel on the left allows users to input one or more input layer files. These files may be in the “Shapefile” format and any one of the Shapefile columns can be selected, on import, to be displayed as the colour intensity for that layer.

Each layer is assigned a different colour, name, and description. The nominal intensity of each layer and its visibility can be set. This allows users to create a weighted map of different agricultural input data such as soil samples, watering maps, drone and satellite imagery and even spreading recommendations.

The configuration panel on the right is used to gather the minimum required input data from the user to generate the spreading configuration. It is split into three sections. The configurations details section shows the configuration name, description, and list of versions. The user can also select previous versions. Once a version is saved it cannot be modified other than through deletion of the entire configuration. This ensures the integrity of the configuration is retained for future review from the reporting module. The configuration section is used to configure the nominal spreading rate and it outputs information about the configuration. The orchards section is used to import and/or create orchards and zones and configure their deposition factors. Information about the area and nominal versus variable deposition rates is also displayed. The configuration section is shown in Figure 6J and 6K. There is a green tick displayed on the right of the section heading. This tick changes to an error warning if the configuration is missing information and/or contains errors. Clicking on the tick in this state, jumps to the first missing/incorrect field. This assists users in successful completion of the configuration and prevents invalid configurations from being pushed to operators.

Considering the details of the configuration shown in Figures 6J and 6K, the motor speed is shown as a sanity check for users to ensure they are not expecting the spreader motors to rotate too quickly. It also provides an estimate of what speeds to run the calibration at. The area and nominal and variable spreading rates and loads provide the user with an overview of what effect the variable spreading is having on the consumption of spreading medium.

The remaining parameters are self-explanatory and are used in the calculation of the nominal motor speed and hence deposition rate.

The orchards section along with the configuration map is shown in Figure 6L. The orchards bar contains buttons to create a new orchard (new defined geographic area), import orchards (defined geographic areas) and the same validation check provided for the configuration section.

The create button creates a new defined geographic area (presently an orchard) and presents the user with a crosshair for drawing a polygon representation of the orchard on the map. This is represented by a thick green line. The operator is required to provide a name for the orchard and then the area and nominal and variable spread rates are automatically calculated for interpretation by the user. The user can edit, clear, and delete the orchard by clicking on the three dots.

The operator can also import one or more orchards (and child zones) using the import button and providing a file in one of the accepted formats and, more particularly, geographic information system (GIS) file formats. The GIS files may define the geographic areas and may include metadata associated with each defined geographic area. The GIS file may be in a variety of file formats, including “shapefile”, “GeoJSON”, and the like.

Alternately, the user can manually create and outline zones in the same manner described above for the orchards.

Finally, each zone needs to have a deposition factor. The nominal deposition rate is multiplied by this factor to get the final spreading rate in each zone. For example, with a nominal deposition rate of 40 kg per hectare:

• a deposition factor of 0.5 yields a deposition rate of 20 kg per hectare; a deposition factor of 1 .0 yields a deposition rate of 40 kg per hectare; and a deposition factor of 2.0 yields a deposition rate of 80 kg per hectare.

When a geographic information system (GIS) file input is used, the metadata in the GIS file associated with each defined geographic area in the GIS file may be processed (or used as a starting point) for configuring the deposition factors (or application rates). The metadata may, for example, include agricultural input data relating to soil samples, watering maps, drone and/or satellite imagery, and application recommendations (such as fertiliser application recommendations).

Each zone is shown on the map by a polygon. The outline and fill colour of each zone is set based on the deposition factor. All zones with the same deposition factor will have the same colour.

To assist in linking zones and orchards on the map to the corresponding item in the right-hand panel, users can double click on a zone on the map and the corresponding orchard and zone will be highlighted by a thin bar to the left of said orchard and zone in the right-hand panel. Conversely, double clicking on an orchard or zone in the panel will zoom and centre the map on said orchard/zone.

To allow users to see the input data more clearly, the zones for each orchard can be hidden by the button on the top of each zones list. Additionally, the zones can be toggled between transparent and solid. This is useful in instances of overlapping zones as the solid view shows the order in which the spreader will select zones and this facilitates the creation of zones within zones (parent/child zones or nested zones).

Having completed the configuration, the action bar (see Figure 6I) provides several options to the user. The save button is used to save a version of the configuration to the database and can be pressed irrespective of the validation state of the configuration. The push button is used to push configurations to operators. It is only enabled after all changes have been saved. Pressing the push button displays the push dialog shown in Figure 6M. The dialog contains two tabs: the operators tab and the configuration tab. The configuration tab shown the configuration detail in raw JSON format which is invaluable for technical support debugging. The operators tab allows the user to select which operator/s they would like to push the configuration to. Once an operator/s has been selected, the user can choose to push or push and export. The former simply pushes the configuration to the operator. The latter pushes the configuration and generates a PDF summary of the configuration for quality control and auditing purposes. The go to dashboard button is provided as a convenience as this is typically the user’s next step. Importantly, the latest configuration pushed to each operator is shown below their name. The configuration is shown in orange until it is received by the operator at which time it changes to green. Some of the advantageous features of the system therefor include:

• The system of generating a configuration (including the application device (102) calibration) from a collection of input data and/or by importing spreading maps from 3rd parties.

• The ability to remotely push the configuration to the operator.

• The ability for the operator to wirelessly and securely receive the spreading (application) configuration with the mobile communication device (e.g. smartphone) in the absence of the physical spreader adds value in that the spreader does not need to be located in an area with internet access.

• The operator’s ability to see where they are on a satellite enabled map and to tell if they are in the correct orchard as well as the other user interface features on the spreading page.

Offline support for the spreading operation.

The real-time dashboard provides invaluable monitoring information to farm managers and enables a superior level of remote training and tech support.

The collection of “as-spread” data for comparison against the configuration.

The filtered display of “as-spread” data.

The online nature of the platform which supports access control and remote updating and feature enhancement.

The calibration protocol with iterative guidance on the calibration speeds provided by the dashboard.

The oversampling of the location.

The tree detection algorithm and associated computation of deposition delay and deposition times.

The tree detection algorithm that ceases spreading when no tree is detected.

The application of the winding number point-in-point algorithm for real-time zone identification. A grid-based system would yield potentially poorer precision and requires larger data files which would be problematic for wireless transfer in regions with poor internet access.

• Another feature that supports the limited internet access environment is the optimisation of the number of ping messages required to produce high quality graphics. This is achieved by only transmitting pings when key changes occur including changes in direction.

• An algorithm was developed to bifurcate the report page filtering into queries suitable for NoSQL databases. This includes the creation and inclusion of geohashes in the ping messages and the method of querying these geohashes in combination with the other filters. Prior art exists conceptually for this technique but the merged application to geohashes and other filters is not known to the applicant and certainly not for this application.

The system described above may implement a method for the application of an agricultural substance. An exemplary method (700) for the application of an agricultural substance is illustrated in the flow diagram of Figure 7. The method may be executed at a mobile communication device (108) and includes receiving (702) configuration settings from a remote server (116, 112). The configuration corresponds to at least one defined geographic area and includes an application quantity parameter corresponding to a desired application of an agricultural substance in each of the defined geographic areas. The mobile communication device (108) determines (704) that it is located within the bounds of one of the defined geographic area.

The mobile communication device (108) then sends (706) at least a subset of the configuration corresponding with the relevant defined geographic area to a controller node (110) of an agricultural substance application device (102) that is in close proximity to the mobile device and that is arranged to modulate the rate of application of the agricultural substance.

Figure 8 illustrates an example of a computing device (800) in which various aspects of the disclosure may be implemented. The computing device (800) may be embodied as any form of data processing device including a personal computing device (e.g. laptop or desktop computer), a server computer (which may be self-contained, physically distributed over a number of locations), a client computer, or a communication device, such as a mobile phone (e.g. cellular telephone), satellite phone, tablet computer, personal digital assistant or the like. Different embodiments of the computing device may dictate the inclusion or exclusion of various components or subsystems described below.

The computing device (800) may be suitable for storing and executing computer program code. The various participants and elements in the previously described system diagrams may use any suitable number of subsystems or components of the computing device (800) to facilitate the functions described herein. The computing device (800) may include subsystems or components interconnected via a communication infrastructure (805) (for example, a communications bus, a network, etc.). The computing device (800) may include one or more processors (810) and at least one memory component in the form of computer-readable media. The one or more processors (810) may include one or more of: CPUs, graphical processing units (GPUs), microprocessors, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs) and the like. In some configurations, a number of processors may be provided and may be arranged to carry out calculations simultaneously. In some implementations various subsystems or components of the computing device (800) may be distributed over a number of physical locations (e.g. in a distributed, cluster or cloud-based computing configuration) and appropriate software units may be arranged to manage and/or process data on behalf of remote devices. The memory components may include system memory (815), which may include read only memory (ROM) and random access memory (RAM). A basic input/output system (BIOS) may be stored in ROM. System software may be stored in the system memory (815) including operating system software. The memory components may also include secondary memory (820). The secondary memory (820) may include a fixed disk (821), such as a hard disk drive, and, optionally, one or more storage interfaces (822) for interfacing with storage components (823), such as removable storage components (e.g. magnetic tape, optical disk, flash memory drive, external hard drive, removable memory chip, etc.), network attached storage components (e.g. NAS drives), remote storage components (e.g. cloud-based storage) or the like.

The computing device (800) may include an external communications interface (830) for operation of the computing device (800) in a networked environment enabling transfer of data between multiple computing devices (800) and/or the Internet. Data transferred via the external communications interface (830) may be in the form of signals, which may be electronic, electromagnetic, optical, radio, or other types of signal. The external communications interface (830) may enable communication of data between the computing device (800) and other computing devices including servers and external storage facilities. Web services may be accessible by and/or from the computing device (800) via the communications interface (830). The external communications interface (830) may be configured for connection to wireless communication channels (e.g., a cellular telephone network, wireless local area network (e.g. using Wi-Fi™), satellite-phone network, Satellite Internet Network, etc.) and may include an associated wireless transfer element, such as an antenna and associated circuitry. The external communications interface (830) may include a subscriber identity module (SIM) in the form of an integrated circuit that stores an international mobile subscriber identity and the related key used to identify and authenticate a subscriber using the computing device (800). One or more subscriber identity modules may be removable from or embedded in the computing device (800).

The external communications interface (830) may further include a contactless element (850), which is typically implemented in the form of a semiconductor chip (or other data storage element) with an associated wireless transfer element, such as an antenna. The contactless element (850) may be associated with (e.g., embedded within) the computing device (800) and data or control instructions transmitted via a cellular network may be applied to the contactless element (850) by means of a contactless element interface (not shown). The contactless element interface may function to permit the exchange of data and/or control instructions between computing device circuitry (and hence the cellular network) and the contactless element (850). The contactless element (850) may be capable of transferring and receiving data using a near field communications capability (or near field communications medium) typically in accordance with a standardized protocol or data transfer mechanism (e.g., ISO 14443/NFC). Near field communications capability may include a short-range communications capability, such as radiofrequency identification (RFID), Bluetooth™, infra-red, or other data transfer capability that can be used to exchange data between the computing device (800) and an interrogation device. Thus, the computing device (800) may be capable of communicating and transferring data and/or control instructions via both a cellular network and near field communications capability.

The computer-readable media in the form of the various memory components may provide storage of computer-executable instructions, data structures, program modules, software units and other data. A computer program product may be provided by a computer-readable medium having stored computer-readable program code executable by the central processor (810). A computer program product may be provided by a non-transient or non-transitory computer- readable medium, or may be provided via a signal or other transient or transitory means via the communications interface (830). Interconnection via the communication infrastructure (805) allows the one or more processors (810) to communicate with each subsystem or component and to control the execution of instructions from the memory components, as well as the exchange of information between subsystems or components. Peripherals (such as printers, scanners, cameras, or the like) and input/output (I/O) devices (such as a mouse, touchpad, keyboard, microphone, touch-sensitive display, input buttons, speakers and the like) may couple to or be integrally formed with the computing device (800) either directly or via an I/O controller (835). One or more displays (845) (which may be touch-sensitive displays) may be coupled to or integrally formed with the computing device (800) via a display or video adapter (840).

The computing device (800) may include a geographical location element (855) which is arranged to determine the geographical location of the computing device (800). The geographical location element (855) may for example be implemented by way of a global positioning system (GPS), or similar, receiver module. In some implementations the geographical location element (855) may implement an indoor positioning system, using for example communication channels such as cellular telephone or Wi-Fi™ networks and/or beacons (e.g. Bluetooth™ Low Energy (BLE) beacons, iBeacons™, etc.) to determine or approximate the geographical location of the computing device (800). In some implementations, the geographical location element (855) may implement inertial navigation to track and determine the geographical location of the communication device using an initial set point and inertial measurement data.

The foregoing description has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure. Any of the steps, operations, components or processes described herein may be performed or implemented with one or more hardware or software units, alone or in combination with other devices. In one embodiment, a software unit is implemented with a computer program product comprising a non-transient or non-transitory computer-readable medium containing computer program code, which can be executed by a processor for performing any or all of the steps, operations, or processes described. Software units or functions described in this application may be implemented as computer program code using any suitable computer language such as, for example, Java™, C++, or Perl™ using, for example, conventional or object- oriented techniques. The computer program code may be stored as a series of instructions, or commands on a non-transitory computer-readable medium, such as a random access memory (RAM), a read-only memory (ROM), a magnetic medium such as a hard-drive, or an optical medium such as a CD-ROM. Any such computer-readable medium may also reside on or within a single computational apparatus, and may be present on or within different computational apparatuses within a system or network.

Flowchart illustrations and block diagrams of methods, systems, and computer program products according to embodiments are used herein. Each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may provide functions which may be implemented by computer readable program instructions. In some alternative implementations, the functions identified by the blocks may take place in a different order to that shown in the flowchart illustrations. Some portions of this description describe the embodiments of the invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations, such as accompanying flow diagrams, are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. The described operations may be embodied in software, firmware, hardware, or any combinations thereof.

The language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments of the invention is intended to be illustrative, but not limiting, of the scope of the invention set forth in any accompanying claims. Finally, throughout the specification and any accompanying claims, unless the context requires otherwise, the word ‘comprise’ or variations such as ‘comprises’ or ‘comprising’ will be understood to imply the inclusion of a stated integer or group of integers but not the exclusion of any other integer or group of integers.