Cleaning Robot Brain

Cleaning Robot Brain

filippo 01/09/2021

Let’s build a new Arduino brain for a LG VR6260LV vacuum cleaning robot as the original board is now bricked!

Processing simulation of the cleaning robot moving around. Since the value outputted by the sensor is random, areas previously marked as free (green) can later be marked as obstructed (red).
Processing simulation of a distance sensor moving around. Since the value outputted by the sensor is random, areas previously marked as free (green) can later be marked as obstructed (red).

The robot has five Sharp GP2Y0A51SK0F distance measuring sensors (2 to 15 cm). The viewing angle is about 30 degrees. Three of them are pointed towards the ground (left, center, right) and two of them are pointed forward (left right). Looking from the top from left to right the sensors are arranged in this order:

  • Down left
  • Forward left
  • Down center
  • Forward right
  • Down right

The robot has a EAX64466801 ultrasound sensor composed of one central transmitter and two lateral receiver.

Arduino pins

  • Right Motor
    • Pin 2 (Int) : Encoder Right motor
    • Pin 3 (Int) : Encoder Right motor
    • Pin 5 (PWM) : Right motor
    • Pin 6 (PWM) : Right motor
  • Left Motor
    • Pin 18 (Int) : Encoder Left motor
    • Pin 19 (Int) : Encoder Left motor
    • Pin 7 (PWM) : Left motor
    • Pin 8 (PWM) : Left motor
  • Proximity Infrared Sensors
    • Pin A15 : Right Down Proximity Sensor
    • Pin A14 : Right Forward Proximity Sensor
    • Pin A13 : Central Down Proximity Sensor
    • Pin A12 : Left Forward Proximity Sensor
    • Pin A11 : Left Down Proximity Sensor
  • Proximity Ultrasound Sensor
    • Pin 9 : trigger
    • Pin 10 : echo left
    • Pin 11 : echo right
  • Pin 9 (PWM) : Vacuum Fan motor
  • Pin XXX (PWM) : Vacuum Brush motor
The inside of the LG VR6260LV robot with motors and encoders connected to an Arduino and a H-Bridge motor driver.

Kinematic model
The kinematic model of a two wheel robot was found on Mobile Robot Wheel Configurations and Kinematics:

ω = ( V_R - V_L ) / 2d\\
R = d ( V_R + V_L ) / ( V_R - V_L )\\
V = \omega R = ( V_R + V_L ) / 2
\theta(t) = \int \omega(t) dt\\
x(t) = \int V(t) cos(\theta(t)) dt\\
y(t) = \int V(t) sin(\theta(t)) dt\\