Anda di halaman 1dari 10

UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE

INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 1














UNIVERSIDAD NACIONAL DEL SANTA
FACULTAD DE INGENIERA
E. A. P. INGENIERA DE SISTEMAS E INFORMTICA

Ao de la Promocin de la Industria Responsable y del
Compromiso Climtico

DOCENTE :
Ing. MUOZ CASANOVA Diana
CURSO :
Inteligencia Artificial
TEMA :
Robots mviles - Arduino
ALUMNOS :
AVALOS VEGA Brecia
LOZANO MANTILLA Edwin

CICLO :
VII
AO :
2014

2014
UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 2
PRACTICA DE LABORATORIO

1. Elaborar el cdigo necesario en Arduino para construir un robot mvil.

ROBOT MVIL BSICO CONTROLADO CON ARDUINO
///
/// Robot R1-F1
///
/// by RafaG

/// Definicin de pines
// Pines de HC-SR04
const int trigger = 10;
const int echo = 9;

// Motor A
const int ENA = 5; // Pin PWM
const int IN1 = 2;
const int IN2 = 3;

// Motor B
const int ENB = 6; // Pin PWM
const int IN3 = 4;
const int IN4 = 7;
///
/// Fin de definicin de pines

/// Estados de movimiento y velocidad
///
int dirActualA = 0; // 0->detenido, 1->avanza, -1->retrocede
int velActualA = 0;
int dirActualB = 0; // 0->detenido, 1->avanza, -1->retrocede
int velActualB = 0;

int VELOCIDAD_MAX = 250;
int VELOCIDAD_MIN = 100;
int VELOCIDAD_ARRANQUE = 200;
int VELOCIDAD_NORMAL = 150;

enum estados {
detenido,
avanzando,
girando_izq,
girando_der,
};

estados estadoActual = detenido;
///
/// Fin de estados de movimiento y velocidad
UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 3

float DISTANCIA_MAX = 450.0;

float distancia_anterior = 0.0;

/// Funciones bsicas
///
void setup() {
Serial.begin(9600);

/// Inicializacin de pines
///
// HC-SR04
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);

// Motores
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
///
/// Fin de inicializacin de pines

// Motores parados
detenerAB();
}

void loop() {
/// Medida en sensor ultrasonidos
///
// Trigger inicial
digitalWrite(trigger, LOW);
delayMicroseconds(5);
// Comienzo de la medida
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// Adquisicin y conversin a centmetros
float distancia = pulseIn(echo, HIGH);
distancia = distancia * 0.01657;

if (distancia > DISTANCIA_MAX) { // Filtrado de distancias mal
tomadas
distancia = distancia_anterior;
}
else {
distancia_anterior = distancia;
}
/// Fin medida en sensor ultrasonidos

UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 4
/// Lgica de navegacin de robot
///
int velocidad;

if(distancia > 10.0) { // Distancia de seguridad
avanzaB();
avanzaA();

float velocidadCandidata = distancia * 255.0 / 30.0;
if (velocidadCandidata < VELOCIDAD_MIN) velocidadCandidata =
VELOCIDAD_MIN;
velocidad = (int) velocidadCandidata;
velocidad = (estadoActual != avanzando) ? VELOCIDAD_ARRANQUE :
velocidad;
setVelocidadAB(velocidad);

estadoActual = avanzando; // Actualiza estado de vehculo

Serial.print("- ESTADO: FF");
}
else { // No se puede avanzar
velocidad = VELOCIDAD_NORMAL;

rotar();

velocidad = (estadoActual != girando_izq) ? VELOCIDAD_ARRANQUE :
velocidad;
setVelocidadAB(velocidad);

estadoActual = girando_izq; // Actualiza estado de vehculo

Serial.print("- ESTADO: R-Izq");
}
Serial.print(" - Distancia: ");
Serial.print(distancia);
Serial.print(" - Velocidad: ");
Serial.println(velocidad);
///
/// Fin de lgica de navegacin de robot

delay(100);
}
///
/// Fin funciones bsicas

/// Funciones de motores
///
void detenerA() {
digitalWrite(ENA, LOW);// Motor A desactivado
}
void detenerB() {
digitalWrite(ENB, LOW);// Motor B desactivado
UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 5
}

void detenerAB() {
detenerA();
detenerB();
}

void avanzaA() {
if(dirActualA == 1) return;

detenerA();
dirActualA = 1;
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
}

void retrocedeA() {
if(dirActualA == -1) return;

detenerA();
dirActualA = -1;
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}

void avanzaB() {
if(dirActualB == 1) return;

detenerB();
dirActualB=1;
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}

void retrocedeB() {
if(dirActualB==-1) return;

detenerB();
dirActualB=-1;
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}

void setVelocidadA(int velocidad) {
if(dirActualA == 0) return;
velActualA = (velocidad >= VELOCIDAD_MAX) ? VELOCIDAD_MAX :
velocidad;
analogWrite(ENA, velActualA);
}

void setVelocidadB(int velocidad) {
if(dirActualB == 0) return;
UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 6
velActualB = (velocidad >= VELOCIDAD_MAX) ? VELOCIDAD_MAX :
velocidad;
analogWrite(ENB, velActualB);
}

void setVelocidadAB(int velocidad) {
setVelocidadA(velocidad);
setVelocidadB(velocidad);
}

void rotar() {
avanzaA();
retrocedeB();
}

void antirotar() {
avanzaB();
retrocedeA();
}
///
/// Fin funciones de motores


2. Mencionar los sensores necesarios que usar y para qu se utilizarn?

Sensor acelermetro:
Este circuito es un sensor acelermetro con un rango de +/-2g. La salida de cada
canal proporciona una tensin entre 0 y 5 V que es proporcional al ngulo en el
plano X e Y en el que se encuentra el sensor. De esta forma, el sensor puede
utilizarse para saber el grado de inclinacin en el que se encuentra el circuito en
dos planos.

Sensor seguidor de lneas:
El kit rastreador de lneas es un circuito electrnico con 3 sensores de infrarrojos
que colocados en la parte frontal de los robots, le permiten detectar una lnea
dibujada en el suelo y hacer que el robot siga el trazo de la lnea.

Sensor brjula digital con acelermetro:
La salida de los tres sensores magnticos se compensa con los valores de
inclinacin de los acelermetros para calcular el rumbo. Los valores de todos los
componentes utilizados en la medicin tambin estn disponibles en formato
RAW.



UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 7
Sensor Potencimetro Multivueltas para Servo:
Este potencimetro de 10 vueltas de alta precisin est especialmente permite
modificar los servos para ampliar su movimiento a varias vueltas mientras
conservamos el control de la posicin. Los servos son unos motores que nos
permiten hacer giros con gran precisin, ya que tienen un potencimetro en el eje
que proporciona al circuito electrnico informacin exacta sobre la posicin.

Sensor mando para potencimetro 6 mm:
Mando de Goma para potencimetro. Este pequeo mando puede emplearse con
cualquier potencimetro con eje de 6 mm. Encastre a presin.

3. A parte de la Tarjeta Arduino uno, que otros SHELLS complementarios
podr usar un robot mvil y mencionar nombre y funcionalidad.

Base con ruedas


Receptor


Controlador



UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 8
Servomotores


4. Se podr construir con Arduino Uno un robot seguidor de luz y de lneas?
Mencionar sus componentes.

Una tarjeta ARDUINO UNO (cualquier versin sirve)



Circuito Integrado L293B



Dos moto-reductores


UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 9

8 diodos 1n4148



5 Sensores ptico-reflectivos QRD1114


5. Qu es lo que puedes realizar con el programa Brazorobot?
El programa Brazorobot simula el movimiento de un brazo robot, de las cuales posee
tres dimensiones (X,Y y Z). Sus funciones son las siguientes:
Este brazo gira 360 grados de derecha a izquierda o viceversa.
Permite mover el ngulo de balanceo del antebrazo.
Permite mover el ngulo de balanceo de la mueca.
Abre y cierra la pinza.
Indica la posicin del ngulo del giro del brazo, el ngulo del brazo, el ngulo del
antebrazo y el ngulo de la mueca.
Carga los registros de posiciones
Guarda los registros de posiciones
Crea un nuevo registro de posiciones
Restaura los valores por defecto




UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE
INGENIERA E. A. P. INGENIERA DE
SISTEMAS E INFORMTICA
2014

pg. 10
6. Bajar algunos programas simuladores de Robots Mvil e Industriales.
Mencionar su nombre, funcionalidad y bajar programa.

Servidor Mobile Robot Simulator
Mobile Robot Simulator es una aplicacin servidor que simula la navegacin de un
robot mvil en un entorno configurable. El controlador del robot mvil es una
aplicacin cliente que se conecta con el servidor a travs de sockets para enviar
rdenes de movimiento y recibir informacin del sistema sensorial.
El controlador se ayuda de un componente para la comunicacin con el servidor.
De esta forma, se libera al programador de las tareas relacionadas con el
establecimiento de la conexin y con la codificacin de los mensajes, encargndose
nicamente de la lgica para el control del robot mvil.
WEBOTS 5
Webots es un simulador avanzado de robtica, trae herramientas para definir
modelos propios, definir la fsica, escribir controladores para los bots y hacer
simulaciones a gran velocidad.
ROBOLOGIX
RoboLogix es un simulador de robtica que utiliza un motor de fsica para emular
el mundo real las aplicaciones de la robtica. Mediante el uso de RoboLogix, es
posible ensear, probar, ejecutar y depurar programas que se han escrito
utilizando una de cinco ejes de robots industriales en una amplia gama de
aplicaciones prcticas. Estas aplicaciones incluyen simulada pick-and-place,
paletizado, soldadura y pintura. RoboLogix permite la ejecucin de software del
robot programas para probar y examinar visualmente la operacin de los
programas de control de robots y algoritmos , mientras planean aceleraciones
instantneas conjunta, velocidades y posiciones.

Anda mungkin juga menyukai