Hemos uilizado la definición de comportamientos que nos han facilitado en la práctica. A continuación vamos a describir las tres clases que hemos utilizado y los métodos que estas contienen:
> DriveForward: La finalidad de esta clase es que el robot ande hacia delante mientras no se encuentre un obstáculo
-takecontrol: Devolverá siempre verdadero, es decir siempre que no haya un obstáculo, tomará el control.
-action: Cuando este método sea llamado, indicará a los dos motores que avancen.
-supress: Parará los motores cuando llegue la clase "pierda" el control.
> HitObstacle: Esta clase evitará el obstáculo rodeándolo
-takecontrol: Comprueba si se ha activado alguno de los dos sensores, para tomar el control.
-action: Cuando tome el control, retrocederá una distancia, y rodeará el obstáculo por la izquierda o por la derecha dependiendo de cuál de los dos sensores se haya activado.
-supress: Las variables booleanas que nos ayudan a saber si se ha detectado un obstáculo pasarán a tener el valor falso.
> BumperCar: En esta clase tendremos el programa principal. Consta de la siguiente declaración
Behavior b1 = new DriveForward();Instanciamos nuestras clases DriveForward y HitObstacle e indicamos que HitObstacle tendrá preferencia sobre DriveForward, dandole el índice más alto en el array bArray.
Behavior b2 = new HitObstacle();
Behavior [] bArray = {b1, b2};
Arbitrator arby = new Arbitrator(bArray);
arby.start();
La forma de evitar el obstáculo ha sido bastante sencilla, hemos retrocedido una distancia, girado 60º y utilizando la función steer, hemos hecho una curva al rededor del objeto. Cuando ha sido ya superado, hemos vuelto a girar 60º para dejarle en la misma orientación antes de encontrarse el obstáculo:
No hay comentarios:
Publicar un comentario