UNIVERSIDAD PRIVADA DEL VALLE
FACULTAD DE INFORMATICA Y ELECTRONICA
INGENIERIA ELECTRONICA Evaluación
CAMPUS TIQUIPAYA
ROBOTICA
Informe de Practica de Laboratorio N.º 3
MOVIMIENTO DE TRAYECTORIA
CIRCULAR DEL ROBOT MÓVIL
Grupo “B”
Estudiante: Johan Jairo Duran Galarza
Docente: Ing. Erick Benítez Garaca
Cochabamba 11 de mayo de 2025
Gestión I – 2025
MOVIMIENTO DE TRAYECTORIA CIRCULAR DEL ROBOT MÓVIL
1. COMPETENCIAS
Describe las funciones básicas del programa BricxCC, usando la programación de la célula
de trabajo de LEGO, realizada por el docente.
Desarrolla programas de movimiento de trayectoria circular de robot
2. MARCO TEORICO
NXC
Es un lenguaje sencillo para programar el producto LEGO MINDSTORMS NXT. NXT cuenta con
un intérprete de bytecode (proporcionado por LEGO) que permite ejecutar programas. El
compilador de NXC traduce el programa fuente a bytecodes NXT, que posteriormente pueden
ejecutarse en el programa de destino. Aunque el preprocesador y las estructuras de control de NXC
son muy similares a las de C, NXC no es un lenguaje de programación de propósito general; existen
numerosas restricciones derivadas de las limitaciones del intérprete de bytecode de NXT.
(Benedettelli D, 7 junio 2007)
Lógicamente, NXC se define como dos partes independientes. El lenguaje NXC describe la sintaxis
que se utiliza al escribir programas. La Interfaz de Programación de Aplicaciones (API) de NXC
describe las funciones del sistema, las constantes y las macros que pueden utilizar los programas.
Esta API se define en un archivo especial conocido como "archivo de encabezado" que, por defecto,
se incluye automáticamente al compilar un programa. (Benedettelli D, 7 junio 2007)
Figura 1. Uso de robots para hacer el uso de códigos con BrixCC
Escritura del programa presenta:
task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
OnRev(OUT_AC, 75);
Wait(4000);
Off(OUT_AC);
}
(Benedettelli D, 7 junio 2007)
Los programas en NXC constan de tareas, cada programa debe tener una tarea llamada "main", que
será la que ejecutará el robot. Las sentencias se encierran entre corchetes para que quede claro que
todas pertenecen a esta tarea, cada sentencia termina con un punto y coma. De esta manera, queda
claro dónde termina una sentencia y dónde comienza la siguiente. (Benedettelli D, 7 junio 2007)
Esta instrucción le indica al robot que active la salida A (el motor conectado a la salida A del NXT)
para avanzar, el número que sigue establece la velocidad del motor al 75 % de la velocidad máxima.
La misma instrucción, pero ahora activamos el motor C. Después de estas dos instrucciones, ambos
motores están en funcionamiento y el robot avanza. (Benedettelli D, 7 junio 2007)
Ahora es momento de esperar un rato. Esta instrucción nos indica que esperemos 4 segundos. El
argumento, es decir, el número entre paréntesis da una milésima de segundo: así, puedes indicarle al
programa con mucha precisión cuánto tiempo debe esperar. Durante 4 segundos, el programa está
en reposo y el robot continúa avanzando. (Benedettelli D, 7 junio 2007)
El robot ya se ha movido lo suficiente, así que le indicamos que se mueva en dirección inversa, es
decir, hacia atrás. Tenga en cuenta que podemos configurar ambos motores a la vez usando
OUT_AC como argumento. También podríamos haber combinado las dos primeras instrucciones de
esta manera. (Benedettelli D, 7 junio 2007)
Y finalmente apagamos ambos motores, ese es el programa completo. Mueve ambos motores hacia
adelante durante 4 segundos, luego hacia atrás durante 4 segundos y finalmente los apaga.
(Benedettelli D, 7 junio 2007)
Figura 2. Movimiento lineal del robot por unos 4 segundos. Fuente: Elaboración propia
3. MATERIALES
4. TÉCNICA Ó PROCEDIMIENTO
Parte 1.
Utilizando el robot móvil LEGO MINDSTORMS NXT o LEGO EV3 o LEGO SPIKE PRIME
(Prototipo
armado con sensores y actuadores) para completar el laboratorio, programe el robot en BRICX CC
o ROBOTC o SPIKE - PYTHON para que se mueva por el exterior de cada bandera sin golpearla
mediante trayectorias circulares. La ruta correcta para seguir se muestra en la siguiente figura.
Figura 3. Seguimiento del robot
Para realizar el siguiente del robot se tuvo que realizar su programación en lenguaje en C para su
funcionamiento del robot
Siendo la estructura de programación la siguiente la cual nos indica de cada una de una de las
posiciones para que cumpla el circuito con el robot.
task main()
{
//Inicio
motor[motorB] = 0; // Motor derecho
motor[motorC] = 30; // Motor izquierdo
wait1Msec(1000);
motor[motorB] = 30;
motor[motorC] = 30; wait1Msec(3500);
//Cono1
motor[motorB] = 30;
motor[motorC] = 0;
wait1Msec(1000);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(700);
motor[motorB] = 30;
motor[motorC] = 0;
wait1Msec(1500);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(4000);
//Cono2
motor[motorB] = 0;
motor[motorC] = 60;
wait1Msec(1000);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(300);
motor[motorB] = 0;
motor[motorC] = 100;
wait1Msec(700);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(4000);
//Cono3
motor[motorB] = 0;
motor[motorC] = 0;
wait1Msec(500);
motor[motorB] = 55;
motor[motorC] = 0;
wait1Msec(1000);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(700);
motor[motorB] = 60;
motor[motorC] = 0;
wait1Msec(1000);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(4000);
//Cono4
motor[motorB] = 0;
motor[motorC] = 90;
wait1Msec(700);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(400);
motor[motorB] = 0;
motor[motorC] = 180;
wait1Msec(700);
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1000);
}
Figura 4. Seguimiento del robot cumpliendo la prueba
Figura 5. Indicando que, si cumple el seguimiento del robot de manera exitosa,
verificación en el software
5. TABLA Y RESULTADOS
Video que si cumple con la pista de obstáculos
[Link]
usp=sharing.
6. CUESTIONARIO
Describa la función OnFwdSync de BRICX CC
La función OnFwdSync es utilizado en BriCX CC para controlar dos motores de manera
sincronizada es decir que vayan al mismo tiempo, esta función en la línea de código es escrita
como: OnFwdSync (Out_BC, 75, 0);
Siendo que este nos permite especificar que los motores a controlar son B y C contemplando
la velocidad de 75, mientras que 0 es el nivel de sincronización, donde 0 es la sincronización total,
de esta manera hace que dos motores giren hacia adelante al mismo tiempo, con un grado de
sincronización definido
Describa la función OnFwdReg de BRICX CC
Esta es una función de parte NXC y se usa para encender un motor con control de velocidad
regulado con la estructura siendo:
OnFwdReg (OUT_B, 75, OUT_REGMODE_SPEED);
Siendo controlado por el motor B el cual enciende ese motor, el 75 viene a ser la velocidad,
mientras que RegMode_Speed es un modo de regulación que puede este cambiar por Speed, Sync
o Idle, activa un motor hacia adelante usando regulación PID interna de NXT, lo que permite
mantener una velocidad constante, aunque haya resistencia
Describa la función nMotorPIDSpeedCtrl de RobotC
Es una variable de configuración global que permite habilitar o deshabilitar el control PID de
velocidad de los motores con la estructura siendo:
nMotorPIDSpeedCtrl[motor] = mtrSpeedReg:
mtrNoreg sin regulación PID, mientras que mtrSpeedReg con regulación PID de velocidad, siendo
como se mencionó que activa o desactiva el control automático de velocidad PID del motor, lo que
permite mantener una velocidad constante ante cargar variables
7. CONCLUSIONES
En el laboratorio se aprendió bastante a realizar el funcionamiento del robot BrixCC el
cual nos permitió a entender como llegan a funcionar los robots de lego ya que presentan
estos una automatización a un código de programación que se realiza en este sentido es
que se hizo un robot el cual permitía esquivar una pista la cual debía de cumplir los
obstáculos que este presente con la finalidad de llegar a la final de la pista es de esta
manera que nos ayudo bastante a comprender como es la automatización de un robot y
que más con un entorno el cual nos permitía comprender y ayudar para los comandos que
este llegase a presentar es por ello que nos ayuda bastante su función del Brixcc para
que este llegase a cumplir con todas las tareas que se requieren y el límite es la lógica de
programación que uno llegase a presentar para superar y cumplir cada obstáculo u algo
que se desee superar es por ello que nos ayuda bastante a el uso de robots como se
puede observar en el video
8. BIBLIOGRAFÍA
Benedettelli D, 7 junio 2007. Programming LEGO NXT Robots using NXC. Obtenido de
Pagina 2 - 10
9. ANEXO