There's the need to design a horizontal plane cleaning system that is controlled by positioning servos. Two in two of three floor rollers and three in the x, y, and z positioning of a wiping device. Cleaning fluid may be dispensed or vacuumed away, and the rollers can be concurrently locked so that the position of the cleaning system relative to the floor can be held steady or unlocked.
To keep device cost low, primitive lidar is used for ranging at each extremity most exposed by positioning extremes. For instance, ranging is detected pointing upward so that the position in z is sensitive to headroom, and ranging is detected on the front, left, and right sides of the wiping device to ensure it doesn't hit walls at full speed or knock over items on the horizontal plane surface.
There is no pixel based input to the AI. Ranges are reported as two 32 bit integers approximately representing two measurements in millimeters. One is the distance to the closest point of reflection and the other is the mean distance of reflection. Only by comparing them can walls can be distinguished from objects placed on the surface.
Positioning targets for the entire system rolling on the floor and for the wiping device relative to the entire system are provided as 32 bit integers to the driving systems of each servo.
What the system does to clean is roll over to a location, given a programmed of approach and line of movement in front of the horizontal surface, clean the surface area, constrained by the fixed parameters below, and roll back to the original system position.
Objects on the surface may change from cleaning to cleaning, but not walls. There may be a need to lock the rollers, wipe in several motions, unlock the rollers, move over, lock again, wipe some more, and do this a few times.
There are three things we need to minimize that could be used in a loss function.
- Time to complete the cleaning of a horizontal surface
- Cleaning fluid consumption
- Variance in cleaning fluid distribution on the surface
What kind of network could learn to send the right positions to the servos to perform the cleaning? Is Q-learning best? How is the example data to be collected? Is there a way to learn without training, allowing performance to be poor at first but still get the job done and then improve each time afterward? How can AI be used to make this a practical cleaning system?
There are eight numbers programmed into the firmware.
- The overlap of wiping in mm
- The minimum time cleaning fluid remains on surface before vacuuming it up
- The rate of cleaning fluid use in microns (One milliliter is one cubic centimeter, so one milliliter of fluid per square meter horizontal surface has the unit cm cubed over meters square, which is one cm over 10,000 square cm per square meter, which is one micron.)
- The maximum speed and acceleration of wiping motion changes relative to the horizontal surface
- The maximum speed and acceleration of movement of the device center relative to the floor
- The maximum permissible speed when the wiping device reaches a wall
- The minimum clearance to maintain between the wiping device from items on the horizontal surface to avoid knocking one over