public void calculateNetForce() {
		forces.clear();
		
		// get current location
		Point position = sensorManager.getLastLocation();
		double heading = sensorManager.getLastHeading();
	
		
		// calculate heading to target
		if (position != null && target != null) {
			System.out.println("position: " + position.toString());
			System.out.println("target: " + target.toString());
			
			double worldTargetHeading = position.getHeadingTo(target);
			double relativeTargetHeading = worldTargetHeading - heading;
			relativeTargetHeading = Vector.mod360(relativeTargetHeading);
			
			System.out.println("position: " + position.toString());
			System.out.println("target: " + target.toString());
			feedbackSender.sendHeading((float) relativeTargetHeading);
			
			// sum component forces
			netForce = new Vector(0, 0);
	
			for (Vector v : sensorData) {
				
				double distance = v.getLength();
				double angle = v.getAngle();
				
				double forceMultiplier = distToForce(distance);
				
				Vector force = Vector.vectorFromPolar(forceMultiplier, angle);
				
				if (force.getLength() > FORCE_THRESHOLD) {
					forces.add(force);				
					netForce.add(force);
				}
			}


			// if we are in a corner, add virtual force
			double netAngle = Vector.headingFromZero(netForce.getAngle());			
		
			double targetAngle = relativeTargetHeading;
			Vector netSum = Vector.add(netForce, Vector.vectorFromPolar(TARGET_FORCE, targetAngle));
			
//			System.out.println("netSum: " + netSum.getLength());
			
			if (netSum.getLength() < TRAP_THRESH) {
				if (netAngle >= 90 || (avoidLeft != null && avoidLeft)) {
//					System.out.println("trapped left");
					targetAngle = netAngle - 145;
					avoidLeft = true;
				} else if (netAngle <= -90) {
//					System.out.println("trapped right");
					targetAngle = netAngle + 145;
					avoidLeft = false;
				}
			} else {
				avoidLeft = null;
			}
			
			Vector targetForce = Vector.vectorFromPolar(TARGET_FORCE, targetAngle);
			
			// add forces together
			netForce.add(targetForce);
			
		} else {
			// if we don't have a lock, stop immediately
			movementController.stop();
		}
		
	}