Traction control for surface-cleaning robot

The robot's traction control system using speed sensors and PID control maintains wheel speeds within a threshold, addressing slipping issues and ensuring stable operation on ship hulls.

GB2702309APending Publication Date: 2026-06-10JOTUN AS

Patent Information

Authority / Receiving Office
GB · GB
Patent Type
Applications
Current Assignee / Owner
JOTUN AS
Filing Date
2024-10-31
Publication Date
2026-06-10

AI Technical Summary

Technical Problem

Hull-cleaning robots face the risk of slipping and falling due to loss of traction on vertical surfaces, particularly when cleaning ship hulls, which can lead to operational failures and delays.

Method used

A robot with multiple wheels equipped with speed sensors and motors, controlled by a processor to adjust torque based on transformed wheel speeds to maintain traction, using a common reference frame and a PID control function to prevent slipping.

Benefits of technology

The system effectively maintains wheel speeds within a predetermined threshold, preventing slipping and falling, ensuring stable operation on varying surfaces.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A robot 102 for cleaning a surface of a man-made object, such as the hull of a boat or ship or pol rig leg, the robot comprising: a plurality of wheels; for each wheel of the plurality of wheels 206:
Need to check novelty before this filing date? Find Prior Art

Description

FIELD OF THE INVENTION The invention relates to a traction control system for a robot for cleaning the surface of a man-made object, particularly to a robot for cleaning ship hulls. BACKGROUND TO THE INVENTION All surfaces submerged in seawater will experience fouling of organisms such as bacteria, diatoms, algae, mussels, tube worms and barnacles. Marine fouling is the undesirable accumulation of microorganisms, algae and animals on structures submerged in seawater. The fouling organisms can be divided into microfouling (bacterial and diatomic biofilms) and macrofouling (e.g. macroalgae, barnacles, mussels, tubeworms, bryozoans) which live together forming a fouling community. In a simplistic overview of the fouling process, the first step is the development of a conditioning film where organic molecules adhere to the surface. This happens instantaneously when a surface is submerged in seawater. The primary colonizers, the bacteria and diatoms, will settle within a day. The secondary colonizers, spores of macroalgae and protozoa, will settle within a week. Finally, the tertiary colonizers, the larvae of macrofouling, will settle within 2-3 weeks. The development of marine fouling is a known problem. On the hull of an actively trading vessel this will lead to increased drag resistance and increased fuel consumption or reduced speed. Increased fuel consumption will lead to increased CO2, NOX and sulphur emissions. Many commercial vessels (e.g. container ships, bulk carriers, tankers, passenger ships) are trading worldwide. It is known that fouling organisms on the ship hull can be transported from one geographical area to another. This can be problematic if an invasive species is introduced into a new ecosystem with resulting ecological or commercial consequences. Similar marine fouling may affect other man-made objects such as, for example, the legs of oil rigs which are partially submerged in the sea. Traditionally, antifouling coatings have been used to prevent the settlement and growth of marine organisms. The most efficient antifouling coatings contain biocides that will leak out from the coating film and thereby reduce the amount of fouling. Robots, sometimes phrased as “crawlers” or ROVs (remotely operated vehicles), have also previously been used for cleaning of surfaces submerged in water e.g. for use on ship’s hulls. SUMMARY OF THE INVENTION The inventors have recognised that hull-cleaning robots moving over the surface of a man-made object to remove fouling are at the risk of slipping, and consequently falling or becoming detached. Such a fall is likely to render a hull-cleaning robot unable to continue operating, thereby incurring significant difficulty and delay in obtaining a replacement. Slipping may occur during cleaning, or during other operations that involve moving over the surface such as inspection of the surface. In particular, the specific technical context of a hull-cleaning robot with magnetic wheels clinging to a vertical surface results in the particular problem that a loss of traction between the wheels and the surface may result in the robot accelerating downwards under its own weight. This contrasts with, for example, a vehicle travelling over a horizontal surface, wherein the vehicle’s weight points into the surface and does not accelerate the vehicle in the case of a loss of traction. Aspects of the present disclosure therefore relate to a hull-cleaning robot with systems for mitigating the risk of loss of traction and a resultant slip or fall. According to an aspect of the disclosure, there is provided a robot for cleaning a surface of a man-made object, the robot comprising: a plurality of wheels; for each wheel of the plurality of wheels: a respective motor configured to drive the wheel, thereby causing the robot to move over the surface, and a respective speed sensor; and a processor configured to, for each wheel of the plurality of wheels: determine a speed of the wheel based on data from the respective speed sensor; calculate a transformed speed of the wheel in a reference frame; calculate a respective average transformed speed by calculating an average of the transformed speeds of the other wheels of the plurality of wheels in the same reference frame; and control the respective motor to adjust a torque delivered to the wheel such that the transformed speed of the wheel is brought within a predetermined threshold of the respective average transformed speed. This has the advantage that the speeds of all of the plurality of wheels are controlled to prevent any wheel from slipping, thereby reducing the risk of the robot slipping or falling. The claimed robot therefore benefits from traction control to reduce the risk of damage or loss. In particular, the process of transforming speeds to a common reference frame is of particular benefit when the robot turns, as it allows each wheel to be brought to an appropriate speed for the turn being executed (as described further herein). It is particularly noted that traction control is implemented without any need for an absolute measure of the speed of the robot relative to the surface, instead relying on measurements from speed sensors. This is beneficial in embodiments where all wheels of the robot are driven, since in such embodiments there are no undriven wheels to act as a proxy for the speed of the robot. This system also, therefore, avoids assuming that any particular wheel is not slipping; rather, all wheels are treated identically. The use of the predetermined threshold has the further advantage of accounting for wheels taking slightly different paths. For example, if one of the wheels travels over a bump (such as a weld seam in the hull of a vessel) it is advantageous to allow that wheel to travel slightly faster in order to account for the greater distance travelled. The processor may be configured to control each motor to provide an additional torque Ti to the respective / th wheel given by wherein e, is the difference between the transformed speed of the / th wheel and the respective average transformed speed, c, is a control function, and N is a total number of wheels. The inventors have found that such an approach is particularly beneficial for quickly and efficiently bringing the speed of each wheel to the correct value. The control function c, may comprise a PID function. A PID function (a function comprising components proportional to the error, the time derivative of the error, and the integral of the error over time) is a particularly effective choice of control function for reducing the value of the error e,. Of particular benefit is the integral component which prevents a constant offset in the error e, from going uncontrolled. The processor may be configured to adjust the torque delivered to each wheel such that a total torque delivered to all wheels is unchanged. This has the benefit of improving the ease of control of the robot and preventing significant acceleration or deceleration during traction control. Each speed sensor may be configured to measure a speed of the respective motor. Directly measuring the motor speed has the advantage of improved torque regulation, since the torque delivered by the motor may be more precisely measured. The predetermined threshold may be less than or equal to 5% of a maximum speed of the robot, and may preferably be less than or equal to 2% of the maximum speed of the robot. This has the benefit of allowing a wheel following a slightly different path to catch up, as described above, while keeping the threshold sufficiently small that any slip significant enough to risk the robot’s attachment to the surface is prevented. It is noted that the choice of a low value for the threshold is beneficial because only a minimal degree of slip can be tolerated in the context of a hull-cleaning robot, as opposed to for example a road vehicle. This is because, as noted above, even a very minor slide can result in the robot being pulled down or off the surface by its own weight. The plurality of wheels may be magnetic, such that the wheels are operable to create a magnetic attraction when the robot is placed on a magnetic surface, thereby urging the robot onto the magnetic surface. This has the advantage of providing a simple, effective method of adhering the robot to the hull without needing any other equipment. The robot may further comprise a cleaning mechanism for cleaning the surface, and the cleaning mechanism may preferably comprise a brush, a waterjet, or a scraper. This has the benefit of removing marine fouling from the surface as described above. The robot may further comprise, for each wheel of the plurality of wheels, an actuator configured to adjust an angle of the wheel, wherein the processor is configured to control the actuators to steer the wheels and thereby turn the robot; wherein the processor is configured to control the actuators such that, while the robot is turning, all the wheels of the plurality of wheels share a common centre of rotation; and wherein the processor is configured to calculate the transformed speed of the wheel based on the common centre of rotation. This has the advantage that a common centre of rotation provides a favourable geometry for all the wheels of the robot to effect a turn without slipping. The processor may be configured to determine the common centre of rotation based on a position of each respective actuator. This has the advantage of providing an accurate, instantaneous measure of the common centre of rotation for the most accurate traction control possible. The processor may be configured to determine the common centre of rotation based on a user input. This has the advantage of simplicity, avoiding the need to process actuator positions and perform calculations. The user input may comprise a steering command. This has the advantage that a user steering command may specify positions of the actuators, thereby avoiding the need for the processor to determine the actuator positions and calculate the common centre of rotation from these positions. The plurality of wheels may comprise more than two wheels, and may preferably comprise four wheels. Traction control of the kind described above is particularly advantageous when the number of wheels is greater than two, so that the averaging of speeds is more effective. According to a further aspect of the disclosure there is provided a method of traction control for a robot for cleaning a surface of a man-made object, the robot comprising a plurality of wheels, the method performed by a processor of the robot and comprising: for each wheel: determining a speed of the wheel based on data from a respective speed sensor of the robot; calculating a transformed speed of the wheel in a reference frame; calculating a respective average transformed speed by calculating an average of the transformed speeds of the other wheels of the plurality of wheels in the same reference frame; and controlling the respective motor to adjust a torque delivered to the wheel such that the transformed speed of the wheel is brought within a predetermined threshold of the respective average transformed speed. This method provides the same benefits as those described above for the corresponding robot. The object may be a marine vessel. According to a further aspect of the disclosure there is provided a computer program product comprising instructions that, when executed by a processor of a robot for cleaning a surface of a man-made object, cause the processor to any of the methods described herein. According to another aspect of the present disclosure there is provided a non-transitory computer-readable storage medium comprising instructions which, when executed by a processor, cause the processor to perform any of the methods described herein. The instructions referred to herein may be provided on a carrier such as a disk, CD- or DVD-ROM, programmed memory such as read-only memory (Firmware), or on a data carrier such as an optical or electrical signal carrier. Code (and / or data) to implement embodiments of the present disclosure may comprise source, object or executable code in a conventional programming language (interpreted or compiled) such as C, or assembly code, code for setting up or controlling an ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array), or code for a hardware description language. These and other aspects will be apparent from the embodiments described in the following. The scope of the present disclosure is not intended to be limited by this summary nor to implementations that necessarily solve any or all of the disadvantages noted. BRIEF DESCRIPTION OF THE DRAWINGS For a better understanding of the present disclosure and to show how embodiments may be put into effect, reference is made to the accompanying drawings in which: Fig. 1 shows a schematic of a hull-cleaning robot in operation; Fig. 2 shows an example hull-cleaning robot; Fig. 3 shows a block diagram of an example hull-cleaning robot; Fig. 4 shows a hull-cleaning robot executing a turn; Fig. 5 shows a schematic control circuit for traction control of a hull-cleaning robot; and Fig. 6 shows a method of traction control for a robot for cleaning a surface of a manmade object. DETAILED DESCRIPTION Embodiments will now be described by way of example only. Fig. 1 illustrates an aquatic vessel 100 for example a container ship, bulk carrier, tanker, or passenger ship. The aquatic vessel comprises a hull 101. Before operation, a robot 102 may be stationary ata robot station 104 (a docking station) which may be used to charge the robot 102. The robot station 104 may be positioned on the vessel above the sea level as shown in Figure 1. In embodiments, the robot station 104 may allow for parking of the robot 102 when cleaning operations performed by the robot are paused. During cleaning of the surface of the hull 101, the robot 102 may traverse any surface of the hull 101 where marine fouling may form (e.g. a flat bottom or side bottom of the hull). Reference to “cleaning” is used herein to refer to the removal of fouling organisms from the surface of the hull 101.The cleaning may be “reactive cleaning” or “proactive cleaning”. As used herein, reactive cleaning refers to cleaning when fouling has been detected above a certain tolerated level, whereas proactive cleaning refers to cleaning at an early stage and may be regular cleaning even without the detection of fouling. The cleaning is preferably “proactive cleaning”. “Proactive cleaning” is sometimes referred to as “grooming”. By performing “proactive cleaning” of the surface of the hull 101, the robot 102 typically performs removal of fouling at an early stage (e.g. primary colonizers) that has adhered to the surface of the hull 101. However, it will be appreciated that the cleaning performed by the robot 102 may also involve removal of secondary colonizers and any subsequent colonizers. The robot 102 may, for example, clean the surface with a cleaning mechanism such as the cleaning mechanism 206 described below with regard to Fig. 2. The robot 102 may perform other operations not including cleaning. For example, in embodiments, the robot 102 may initially inspect the hull 101 to determine a level of fouling (for example using a camera or a fouling sensor as described below). If fouling is detected, a subsequent cleaning mission may then be scheduled. The methods of traction control described herein may be implemented in both the inspection mission and the cleaning mission, and may further be implemented for any other operation involving the robot 102 moving over the hull 101. As shown in Fig. 1 a computing device 106 may be provided in a deckhouse (or other area) of the vessel for communication with the robot 102. Additionally or alternatively, a computing device 106 may be provided elsewhere, for example ashore. The robot 102 may be controlled or otherwise directed by a user using the computing device 106. Additionally or alternatively, the robot 102 may perform some functions autonomously as described herein. In particular, during normal operation (which may include e.g. cleaning and / or inspecting the surface 101) the robot 102 may operate autonomously, may be remote controlled by a user using the computing device 106, or may perform some functions autonomously and some based on the user’s control. Whilst Fig. 1 illustrates a single robot 102 on the vessel for simplicity, it will be appreciated that there may be multiple robots on the vessel. Similarly, whilst a single robot station 104 is shown in Fig. 1, it will be appreciated that there may be multiple robot stations on the vessel. While Fig. 1 shows a vessel 100, robots such as the robot 102 may be used to clean the surface of other objects instead, such as for example the legs of oil rigs. Fig. 2 shows an example robot 102 for cleaning the hull 101 of a marine vessel. It will be appreciated that the robot 102 described herein may be used for cleaning the surface 101 of other man-made objects such as off-shore drilling platforms. As shown in Fig. 2, the robot 102 comprises a plurality of wheels 202 which are coupled to a frame 204. The example robot 102 shown in Fig. 2 comprises four wheels 202 but the robot 102 may have less, or more than, four wheels. The wheels 202 may be magnetic, in order to adhere to ferrous hulls, in which case the wheels 202 may include permanent magnets arranged around the circumference of the wheel and held within a metal housing. Additionally or alternatively, the wheels 202 may comprise electromagnets. The robot 102 is driven by the wheels 202, and the wheels 202 are driven by respective electric motors (described below with regard to Fig. 3). A thin layer (cover, lining) of a resilient material such as a rubber or polymer material may be formed around the outside of each wheel 202 in order to distribute contact with the hull 101. During a cleaning operation, the robot 102 traverses the hull surface 101 of a vessel at the sides, as well as the bilge in-between the sides and the bottom of the hull 101. The robot 102 includes a cleaning mechanism 206 attached to the frame 204. The cleaning mechanism 206 shown in Fig. 2 is attached to the front of the robot 102, however this is merely an example. The cleaning mechanism 206 may comprise a brush, such as a rotary cylindrical brush; more generally, the cleaning mechanism 206 may comprise any device or mechanism that is operable to remove fouling from a surface 101 of a man-made object such as the hull of a ship. The robot 102 may comprise one or more sealed containers which are waterproof and sealed to prevent water ingress. The sealed containers can therefore house electronics that are vulnerable to water damage, such as for example a power supply. The frame 204 itself may form a sealed container. Alternatively the frame 204 may form a chassis to which a sealed container may be mounted. The frame 204 may be divided into two separate parts that are coupled together. In particular the frame 204 may be divided into a front portion and rear portion that can rotate in relation to each other (e.g. around the x-axis.) Fig. 3 shows a schematic block diagram of a hull-cleaning robot such as the robot 102. As shown, the robot 102 comprises a processor 302, wheels 202, motors 316, and speed sensors 320. The robot 102 may comprise further components such as, for example, a communication interface 318, a cleaning mechanism 206 as described above, a memory 310, one or more sensors 312, a power source 314, or actuators 322. The wheels 202 may be magnetic as described above, in which case they are operable to exert a magnetic force on magnetic objects. For example, if the surface 101 shown in Fig. 1 is magnetic, or if there is a magnetic material beneath the surface (e.g. if the surface 101 is a non-magnetic coating over a ferrous material), magnetic wheels 202 may exert a force capable of attaching the robot to the object. If the wheels 202 are magnetic, they may comprise electromagnets or may comprise permanent magnets. Each motor 316 is operable to drive a respective wheel, and is controlled by the processor 302. In embodiments, there may be one motor 316 for every wheel 202 of the robot 102. For example, if the robot 102 has four wheels 202 as shown in Fig. 2, the robot 102 may comprise four motors 316, which each motor 316 driving a respective wheel. Alternatively, the robot 102 may comprise both driven wheels 202 and non-driven wheels. In this case, there may be a motor 316 for each driven wheel 202, and the nondriven wheels may then not have an associated motor. For each driven wheel 202, the robot 102 further comprises a speed sensor 320. The speed sensor 320 is operable to determine a speed of the respective wheel 202. This may be done directly, by measuring the speed of the wheel 202 itself, or indirectly, by measuring the speed of the motor 316 associated with that wheel 202. The speed sensor 320 may be implemented as an incremental encoder, such as an optical, magnetic, inductive, capacitive, or mechanical encoder, mounted to a rotor of the respective motor 316. The speed sensor 320 may output a quadrature signal that is captured by a controller of the motor 316. For each wheel 202, the robot may further comprise an actuator 322. The actuator 322 may be controlled by the processor to turn the respective wheel 202. Providing a respective actuator for each wheel has the advantage of increased manoeuvrability. Alternatively, it may be that only a subset of the wheels 202 have a respective actuator 322, and may use one or more mechanical linkages to allow each actuator 322 to turn more than one wheel 202. In this manner the wheels 202 may be steered with fewer actuators 322. Additionally or alternatively, it may be that only some wheels of the robot 102 are provided with or linked to actuators, with the other wheels being fixed. This may, for example, allow front-wheel or rear-wheel drive operation of the robot 102. The memory 310 may be configured to store information for retrieval by the processor 302. The sensor(s) 312 may comprise a fouling sensor for sensing the degree of fouling on the hull 101. Additionally or alternatively, the sensor(s) 312 may comprise a location sensor configured to sense a location of the robot 102 on the vessel 100. The location sensor may, for example, be configured to detect a signal emitted from a beacon located on the vessel, and the processor 302 may then correlate the detected signal with a position on the vessel associated with the beacon. Additionally or alternatively, the sensor(s) 312 may comprise an accelerometer operable to determine an acceleration of the robot 102. Additionally or alternatively, the sensor(s) 312 may comprise a gyroscope operable to determine an orientation of the robot 102. The power source 314 may comprise a battery. The power source 314 may be rechargeable e.g. using the robot station 104. The communication interface 318 may be configured to enable the processor 302 to receive and transmit data, wirelessly or via a wired connection. For example, the communication interface 318 may be operable to communicate with the computing device 106 to receive user commands and / or convey information relating to the operation of the robot 102 to a user. Fig. 4 shows a plan view of a hull-cleaning robot such as the robot 102 performing a turn. During such a turn, the wheels 202 are angled, such that when the wheels 202 are driven by the motors 316, the robot 102 turns rather than proceeding straight ahead. Such a turn may be performed by the processor 302 controlling the actuators 322 to turn the wheels 202. While the robot 102 is turning, the wheels 202 do not all travel the same distance. Rather, wheels that are on the inside of the turn (wheels 202a and 202c in Fig. 4) will travel a shorter distance than wheels on the outside (wheels 202b and 202d in Fig. 4). As a result, if all the wheels 202 are driven at the same speed by the motors 316, one or more of the wheels 202 may start slipping, as the inner wheels 202a, 202c may be rotating too fast in relation to the surface 101 while the outer wheels 202b, 202d may be rotating too slowly. The processor 302 is configured to mitigate this effect by controlling the motors 316 to implement a traction control operation that will now be described for the situation shown in Fig. 4. Traction control is implemented in the same manner for each of the wheels 202; for simplicity, the following discussion will focus on traction control for the wheel 202a, but the same procedure is applied simultaneously to each of the other wheels 202b, 202c, 202d. Firstly, to account for the difference in speed between the inner wheels 202a, 202c and the outer wheels 202b, 202d, it is helpful to transform the speed of each wheel 202 into a common frame of reference. For simplicity of calculation, one possible choice is a frame of reference that is comoving with (i.e. has the same velocity as) the centre of mass 402 of the robot 102, and / or is otherwise fixed to the robot 102. It is also convenient to choose a reference frame having an origin that does not coincide with any of the wheels 202, i.e. an origin distinct from the point of contact of each wheel 202 with the surface 101. The transformation to the common reference frame can be performed by any appropriate method of transforming between reference frames, but one possibility will now be described. To ensure the smoothest turn possible, the processor 302 may be configured to control the actuators 322 to ensure that all the wheels 202 are turning around a common centre of rotation 404. That is to say, the processor 302 controls the actuators 322 to angle the wheels 202 such that an axial line drawn from the centre of each wheel 202 crosses at a common point 404 with all of the other wheels 202. As another way of expressing this, the processor 302 may control the wheels 202 such that each wheel describes an arc, all of the arcs having a common centre point 404. For clarity, it is noted that the common centre of rotation 404 is not a part of the robot 102, but is an abstract mathematical point at which imaginary axial lines drawn from each wheel 202 overlap as described. As such, the position of the common centre of rotation 404 may be chosen arbitrarily provided that the wheels 202 are able to turn to appropriate angles to match the chosen centre of rotation 404. For example, if the processor 302 controls the wheels 202 using actuators 322, it may be the angles attainable by the actuators 322 that determine the possible positions of the centre of rotation 404. As shown in Fig. 4, the common centre of rotation 404 may not be within the robot 102, but may be chosen to be an external abstract point. In this case, the transformed speed va of the wheel 202a in the common reference frame is given by rc , Va = —Va ra where va’ is the untransformed rotational speed of wheel 202a in the wheel reference frame and ra is the distance of the wheel 202a from the common centre of rotation 404. rc is the distance between the common centre of rotation 404 and the origin of the common reference frame. The distances rc and ra are indicated on Fig. 4. In Fig. 4 the common reference frame is assumed to have its origin at the centre of mass 402 of the robot 102, but this is merely an example for purposes of illustration. To calculate the transformed speed va, the processor 302 uses the position of the common centre of rotation 404. The processor 302 may obtain the position of this centre in a number of ways. Firstly, the processor 302 may receive data from the actuators 322 (if present) to determine an angle of each wheel 202, and may deduce the position of the common centre of rotation 404 from these angles. Secondly, the processor 302 may determine the position of the common centre of rotation 404 from user input. For example, input may be received from a user using the computing device 106 via the interface 318 of the robot 102. This input may, for example, comprise a steering command instructing the processor 302 to control the wheels 202 in order to steer in a particular direction (for example, by controlling the actuators 322 in order to change the angle of the wheels 202). This steering command may, for example, specify angles of the wheels 202. This may enable the processor 302 to determine the angle of each wheel 202 as instructed by the user without receiving any input from any actuators 322. In an embodiment, the user input may comprise a steering angle, a crab angle, and a steering bias. The processor 302 may determine the common centre of rotation based on this input. In order to perform traction control, the transformed speed va of wheel 202a can be compared to the average of the transformed speeds of the other wheels 202b, 202c, 202d. In particular, we can define an error ea associated with the wheel 202a, where \j*a J wherein / V is the total number of wheels and j is an index for each of the other wheels. In the case of Fig. 4, N = 4 and the summation takes j over the values b, c, d. vj is then the transformed speed of the respective jth wheel (i.e. 202b, 202c, or202d) in the common frame, where the transformation may be performed in the same manner as that described above for va. Calculating ea therefore corresponds to calculating the average transformed speed of each of the other wheels 202b, 202c, 202d in the common reference frame, then finding the difference between this average transformed speed and the transformed speed va of wheel 202a. When the error calculation is performed for each of the other wheels 202b, 202c, 202d, identical formulas for the errors eb, ec, ed may be obtained by replacing a in the above formula with b, c, or d. More generally, this may be regarded as a formula for the error e, associated with the / th wheel (where i can take the values a, b, c, or d in the case of Fig. 4). In order to ensure that wheel 202a is moving at an appropriate speed to avoid slipping, the processor 302 acts to reduce the error ea by controlling the motor 316 corresponding to wheel 202a. Any appropriate method of controlling the error ea may be used. As one example, the processor may adjust the torque to wheel 202a by an amount Ta, where Ta = ca(ea) — | I 9(^) j where ca is a control function and the sum is over j = b,c,d as before. The term control function is used herein to mean any function of a form suitable to reduce the error ea when applied in the manner described herein. The inventors have found that a particularly advantageous choice for ca is a PID function; that is, a function comprising terms proportional to each of ea, the derivative of ea with respect to time, and the integral of ea over time. However, there are many other options; for example, ca(ea) could simply be equal to -ea. It is noted that the additional torque Ta depends only on the errors ea, eh, ec, ed, which in turn are derived from the transformed speeds va, Vb, vc, Vd. As noted above, the transformed speeds are calculated by the processor 302 using information from the speed sensors 320, and optionally using information from either the actuators 322 or from user input to locate the common centre of rotation 404. The traction control system described herein therefore does not require any further information, and in particular does not require any measure of the speed of the robot 102 itself with respect to the surface 101. As traction control is performed for each of the other wheels 202b, 202c, 202d simultaneously, identical formulas for the additional torque Tb, Tc, Td provided to each other wheel 202b, 202c, 202d respectively may be obtained by replacing a in the above formula with b, c, or d. The other control functions Cb, cc, and Cd may be the same as ca or may be any other suitable control functions as described above. More generally, this may be regarded as a formula for the torque T, provided to the / th wheel (where i can take the values a, b, c, or d in the case of Fig. 4). The application of the additional torque Ta to the wheel 202a has the effect over time of reducing the error ea, therefore bringing the transformed speed va of the wheel 202a closer to the average transformed speed of the other wheels 202b, 202c, 202d. If additional torque continues to be applied in this way using a PID function for ca, the effect will be to attempt to bring ea to zero. Alternatively, ca may be chosen such that there is a threshold value for ea, below which the system does not attempt to reduce ea further. This may, for example, be achieved by having ca vanish when eais less than a particular threshold value. Additionally or alternatively, if ca is a PID function, the threshold may be applied by removing the integration (I) term of ca when ea is less than the threshold value. This threshold value corresponds to a level of slip for the wheel 202a that is tolerated during operation. Generally speaking, hull-cleaning robots such as the robot 102 move at slow speeds and low accelerations compared to, for example, road vehicles, and the risks associated with slipping are more severe as described above. As a result, any threshold value of ea must be small, allowing only a very minimal degree of slip. However, this minimal degree of slip can still be advantageous. In particular, tolerating a small variation in speed can make it easier for a wheel that has slipped to regain traction and then match speed with the other wheels, improving the ability of the robot 102 to recover after a slip incident. In practice, the inventors have found that a suitable threshold to achieve this effect is approximately 5% or less of the top speed of the robot 102, and preferably 2% or less. The top speed of the robot 102 may, for example, be 0.5 m / s or 1 m / s. The effect of this traction control system, when applied to all wheels 202 of the robot 102 simultaneously, is to act to bring the transformed speeds vt of each wheel 202 towards the same value (at least to within any threshold permitted fore,). Bringing the transformed speeds vt to the same value means that the actual speeds of the wheels 202 in the reference frame of the surface 101 will differ by exactly the amounts necessary to account for the turning of the robot 102, such as the turn shown in Fig. 4. This allows each wheel 202 to have a stationary point of contact with the surface 101, thereby preventing the wheels 202 from slipping. Additionally, the above system of traction control leaves the total torque Tt unchanged (that is, the additional torques T, sum to zero). This is not a unique feature of the above method, and may be included as a feature of any other approach to traction control implemented by the processor 302. For clarity, it is noted that leaving the total torque Tt unchanged means that the value of Tt at a first time ti before the additional torques T are added is the same as the value of Tt at a later time t2 after the additional torques T are added. It will be appreciated that the term “unchanged" is not intended to imply perfect precision, but rather unchanged within tolerances of calculation, measurement, and the normal variations of mechanical and electronic equipment. In embodiments, a given wheel 202i may have an associated maximum torque that can be delivered by the associated motor 316. The above calculation assumes that no motor 316 is near to this maximum torque. If the result of the calculation would require one or more motors 316 to deliver more torque than is physically possible, that motor or motors may deliver the maximum torque instead. It is noted that the above discussion applies equally to situations other than that shown in Fig. 4. For example, the wheels 202 may be distributed differently around the frame 204 of the robot 102, and / or the number of wheels 202 may be different. The robot 102 may also be turning in a different direction and by a greater or lesser amount. Regardless, as long as the robot 102 has at least two wheels 202 (i.e. a plurality of wheels 202), the above method can be applied to each wheel to implement traction control. Additionally, it is noted that if the robot 102 comprises any undriven wheels in addition to the wheels 202, the undriven wheels may be ignored for the purposes of traction control. The redistribution of torque is only relevant for driven wheels 202 having respective motors 316 and speed sensors 320. Further to the above calculation relating to the robot 102 turning, it is noted that the traction control scheme disclosed herein may also be of benefit when the robot 102 travels in a straight line. In particular, one or more of the wheels 202 may pass over a part of the surface 101 that offers less grip (for example, due to contamination or surface bumps), which may result in that wheel slipping. This will result in a higher speed of that wheel, which will be measured by the respective speed sensor 320 via increased speed of the respective motor 316. The above calculation then allows the processor 302 to compensate for this by reducing the torque provided to the slipping wheel and redistributing this torque to the other wheels. It is noted that, in the instance that the robot 102 is travelling in a straight line, the common centre of rotation 404 may be considered to be at infinity, and the common reference frame may simply be the common frame of the robot and the wheels 202. The above calculation then holds for this situation. Fig. 5 shows a schematic representation of the traction control system described above for wheel 202a. The operations described below with respect to Fig. 5 are a representation of the operations described above with regard to Fig. 4, and may be performed by the processor 302 with regard to the robot 102. At 502 the transformed speeds of the wheels 202b, 202c, 202d are summed. At 504 the sum of transformed speeds is multiplied by 1 / 3 (that is, by 1 / (N-1), since in this example there are four wheels 202) to arrive at the average of the transformed speeds. At 506 the difference ea between the average transformed speed and the transformed speed va of the wheel 202a is calculated. At 508a the difference ea is an input to the control function ca, which may, as noted above, be a PID function. The output ca(ea) of the control function is then used for two purposes. Firstly, it is fed back the wheel 202a as a component of the respective additional torque Ta. Secondly, at 510 the control function output is multiplied by -1 / 3 (again, more generally -1 / (N-1)) and fed back to each of the other wheels 202b, 202c, 202d as part of the respective additional torques Tb, Tc, Td. The overall operation of the traction control system may be appreciated by considering corresponding diagrams for each of the other wheels 202b, 202c, 202d operating simultaneously. In this manner, the sum V*i / presented above is constructed for each wheel 202. In embodiments where the number N of driven wheels 202 is not equal to four but has some other value, one can consider N diagrams equivalent to Fig. 5, with the factors of 1 / 3 replaced by factors 1 / (N-1). Fig. 6 shows a flow chart of a method of traction control for a robot for cleaning a surface of a man-made object, where the robot comprises a plurality of wheels; for example, for the robot 102 cleaning the surface 101. The method 600 may, for example, be performed by the processor 302. At step S602, the method comprises, for each wheel of the plurality of wheels, determining a speed of the wheel based on data from a respective speed sensor of the robot. For example, the processor 302 may determine the speed of each wheel 202 of the robot 102 using data from the respective speed sensor 320. At step S604, the method comprises calculating a transformed speed of the wheel in a reference frame. For example, the processor 302 may calculate a transformed speed of each of the wheels 202 using the methods described herein. At step S606, the method comprises calculating a respective average transformed speed by calculating an average of the transformed speeds of the other wheels of the plurality of wheels in the same reference frame. For example, the processor 302 may calculate the average of the other wheels 202 of the plurality of wheels of the robot 102 using the methods described herein. At step S608, the method comprises controlling the respective motor to adjust a torque delivered to the wheel such that the transformed speed of the wheel is brought within a predetermined threshold of the respective average transformed speed. For example, the processor 302 may control the respective motor 316 of each wheel 202 to adjust the torque delivered to the wheel 202 in accordance with the methods described herein. In embodiments, the processor 302 may be configured to perform the tranction control method 600 at all times when the robot 102 is active and / or powered on. Generally, any of the functions described herein with reference to the robot 102 can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), or a combination of these implementations. The terms “functionality” and “module” as used herein generally represent software, firmware, hardware, or a combination thereof. In the case of a software implementation, the functionality or module represents program code that performs specified tasks when executed on a processor (e.g. CPU or CPUs). The program code can be stored in one or more computer readable memory device (e.g. memory 310). The features of the techniques described below are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors. While the present disclosure has been particularly shown and described with reference to preferred embodiments, it will be understood to those skilled in the art that various changes in form and detail may be made without departing from the scope of the present disclosure as defined by the appendant claims.

Claims

1. A robot for cleaning a surface of a man-made object, the robot comprising:a plurality of wheels;for each wheel of the plurality of wheels:a respective motor configured to drive the wheel, thereby causing the robot to move over the surface, anda respective speed sensor; anda processor configured to, for each wheel of the plurality of wheels:determine a speed of the wheel based on data from the respective speed sensor;calculate a transformed speed of the wheel in a reference frame;calculate a respective average transformed speed by calculating an average of the transformed speeds of the other wheels of the plurality of wheels in the same reference frame; andcontrol the respective motor to adjust a torque delivered to the wheel such that the transformed speed of the wheel is brought within a predetermined threshold of the respective average transformed speed.

2. The robot of claim 1, wherein the processor is configured to control each motor to provide an additional torque T, to the respective 7th wheel given byTi = )V*i / wherein e, is the difference between the transformed speed of the 7th wheel and the respective average transformed speed, c, is a control function, and N is a total number of wheels.

3. The robot of claim 2, wherein c, comprises a PID function.

4. The robot of any preceding claim, wherein the processor is configured to adjust the torque delivered to each wheel such that a total torque delivered to all wheels is unchanged.

5. The robot of any preceding claim, wherein each speed sensor is configured to measure a speed of the respective motor.

6. The robot of any preceding claim, wherein the predetermined threshold is less than or equal to 5% of a maximum speed of the robot, and is preferably less than or equal to 2% of the maximum speed of the robot.

7. The robot of any preceding claim, wherein the plurality of wheels are magnetic, such that the wheels are operable to create a magnetic attraction when the robot is placed on a magnetic surface, thereby urging the robot onto the magnetic surface.

8. The robot of any preceding claim, further comprising a cleaning mechanism for cleaning the surface, the cleaning mechanism preferably comprising a brush, a waterjet, or a scraper.

9. The robot of any preceding claim, further comprising, for each wheel of the plurality of wheels, an actuator configured to adjust an angle of the wheel, wherein the processor is configured to control the actuators to steer the wheels and thereby turn the robot;wherein the processor is configured to control the actuators such that, while the robot is turning, all the wheels of the plurality of wheels share a common centre of rotation; andwherein the processor is configured to calculate the transformed speed of the wheel based on the common centre of rotation.

10. The robot of claim 9, wherein the processor is configured to determine the common centre of rotation based on a position of each respective actuator.

11. The robot of claim 9, wherein the processor is configured to determine the common centre of rotation based on a user input.

12. The robot of claim 11, wherein the user input comprises a steering command.

13. The robot of any preceding claim, wherein the plurality of wheels comprises more than two wheels, and preferably comprises four wheels.

14. A computer-implemented method of traction control for a robot for cleaning a surface of a man-made object, the robot comprising a plurality of wheels, the method performed by a processor of the robot and comprising:for each wheel of the plurality of wheels:determining a speed of the wheel based on data from a respective speed sensor of the robot;calculating a transformed speed of the wheel in a reference frame;calculating a respective average transformed speed by calculating an average of the transformed speeds of the other wheels of the plurality of wheels in the same reference frame; andcontrolling the respective motor to adjust a torque delivered to the wheel such that the transformed speed of the wheel is brought within a predetermined threshold of the respective average transformed speed.

15. The method of claim 14, wherein the object is a marine vessel.

16. A computer program product comprising instructions that, when executed by a processor of a robot for cleaning a surface of a man-made object, cause the processor to execute the method of claim 14 or 15.