Algoritmo Roboticfest
Algoritmo Roboticfest
/***************************************************************************
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
***************************************************************************/
//librerias
#include <stdio.h>
#include <webots/distance_sensor.h>
#include <webots/light_sensor.h>
#include <webots/motor.h>
#include <webots/robot.h>
// Definiciones
#define TRUE 1
#define FALSE 0
#define IZQUIERDA 0
#define DERECHA 1
#define BLANCO 0
#define NEGRO 1
#define TIME_STEP 32 // [ms]
// Motores
WbDeviceTag motor_izquierdo, motor_derecho;
// Sensor de linea
WbDeviceTag sensor_linea_centro;
//Sensor de proximidad
WbDeviceTag sensor_proximidad_siete;
WbDeviceTag sensor_proximidad_cero;
//------------------------------------------------------------------------------
//
// CONTROLLER
//
//------------------------------------------------------------------------------
////////////////////////////////////////////
// Main
int main() {
// motores y sensores
motor_izquierdo = wb_robot_get_device("left wheel motor");
motor_derecho = wb_robot_get_device("right wheel motor");
sensor_linea_centro = wb_robot_get_device("gs1");
sensor_proximidad_cero = wb_robot_get_device("ps0");
sensor_proximidad_siete = wb_robot_get_device("ps7");
valor_sensor_linea_centro =
wb_distance_sensor_get_value(sensor_linea_centro); // gs1
printf("Sensor central = %d | ", valor_sensor_linea_centro); // valor leido por
gs1
valor_sensor_proximidad_cero =
wb_distance_sensor_get_value(sensor_proximidad_cero); // ps0
printf("Sensor proximidad cero = %d | ", valor_sensor_proximidad_cero); //
valor leido por ps0
valor_sensor_proximidad_siete =
wb_distance_sensor_get_value(sensor_proximidad_siete); // ps7
printf("Sensor proximidad siete = %d | \n", valor_sensor_proximidad_siete); //
valor leido por ps7
int velocidad_izquierda = 0;
int velocidad_derecha = 0;
/* Evación de obstaculos */
velocidad_izquierda = 0;
velocidad_derecha = 0;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(1000);
velocidad_izquierda = -200;
velocidad_derecha = -200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(700);
velocidad_izquierda = 200;
velocidad_derecha = -200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(1800);
velocidad_izquierda = 200;
velocidad_derecha = 200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(2600);
velocidad_izquierda = -200;
velocidad_derecha = 200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(1800);
velocidad_izquierda = 300;
velocidad_derecha = 300;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(4100);
velocidad_izquierda = -200;
velocidad_derecha = 200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(1800);
velocidad_izquierda = 200;
velocidad_derecha = 200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(2600);
velocidad_izquierda = 200;
velocidad_derecha = -200;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
wb_robot_step(1800);
/* Seguidor de línea */
}else {
velocidad_izquierda = 140;
velocidad_derecha = -25;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
}else {
velocidad_izquierda = -25;
velocidad_derecha = 140;
wb_motor_set_velocity(motor_izquierdo, 0.00628 * velocidad_izquierda);
wb_motor_set_velocity(motor_derecho, 0.00628 * velocidad_derecha);
}
wb_robot_step(250);
}
}
return 0;
}