Stap 6: Code Overview
Voor obstakel te vermijden de eyeRobot maakt gebruik van een methode waar objecten in de buurt van de robot uitoefenen een virtuele kracht op de robot het afgestapt van het object. Objecten duwen met andere woorden, de robot uit de buurt van zichzelf. In mijn uitvoering is de virtuele kracht die uitgeoefend wordt door een object omgekeerd evenredig met de afstand kwadraat, dus de sterkte van de druk neemt toe naarmate het object dichter en een niet-lineaire responscurve creëert:
PushForce = ResponseMagnitudeConstant/afstand2
De duwt vanuit elke sensor samengeteld; sensoren aan de linker kant duwen rechts, en vice versa, om een vector voor de robot de reizen. Wiel snelheden zijn vervolgens gewijzigd zodat de robot naar deze vector draait. Om ervoor te zorgen dat objecten dood in voorkant van de robot geen vertonen een "geen reactie" (omdat de krachten op beide zijden evenwicht), objecten aan de dode voorzijde duw de robot naar het meer open kant. Wanneer de robot het object is verstreken dan gebruikt de Roomba de encoders om te corrigeren voor de verandering en weer op de oorspronkelijke vector.