0% encontró este documento útil (0 votos)
81 vistas139 páginas

Aron Christian Mauricio Luis Antonio: de La Cruz Vázquez Castillo Estrada Álvarez Oval

Cargado por

SergeiJarponov
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
81 vistas139 páginas

Aron Christian Mauricio Luis Antonio: de La Cruz Vázquez Castillo Estrada Álvarez Oval

Cargado por

SergeiJarponov
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Luis Antonio Christian Mauricio Aron

Álvarez Oval Castillo Estrada De la Cruz Vázquez


UNACH
FACULTAD DE NEGOCIOS, Campus IV,
Grupo de investigación:
Tecnologías en Sistemas Computacionales
Luis Antonio Christian Mauricio Aron
LUIS ANTONIO ÁLVAREZ OVAL Álvarez Oval Castillo Estrada De la Cruz Vázquez
Profesor de tiempo completo, investigador y especialista en Robó-
tica educativa, Cómputo en la nube, Diseño y administración de Palabras clave: iniciación a la robótica, pro- RESUMEN
base de datos y Programación de procedimientos almacenados, gramación básica de robots: tareas, parame-
Big data y Ciencia de datos tros, comportamientos, funciones, variables,
loval@[Link] bucles; sensores infrorrojo y ultrasónico.

CHRISTIAN MAURICIO CASTILLO ESTRADA Keywords: introduction to robotics, basic


Profesor de tiempo completo, investigador y especialista en Inge- robot programming: tasks, parameters, ABSTRACT
niería de software (Arquitectura REST y microservicios), Ingeniería behaviors, functions, variables, loop; infrared
web para el desarrollo de aplicaciones empresariales de tipo web y and ultrasonic sensors.
móviles; Big data y Ciencia de datos.
cmce@[Link]

ARON DE LA CRUZ VÁZQUEZ


Profesor de tiempo completo, investigador y especialista en Teoría
matemática para la computación, Algebra lineal y Estadística para
el diseño de modelos de análisis de datos.
[Link]@[Link]

2
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


Introducción a la robótica, de Luis Antonio Álvarez
Oval, Christian Mauricio Castillo Estrada y Aron De la
Cruz Vázquez es una obra editada por la Universidad
Autónoma de Chiapas, que fue dictaminada por el
método de par ciego externo.

ISBN Colección Sin fronteras: 978-607-561-118-1


ISBN Volumen: 978-607-561-130-3

Dirección editorial: Luis Adríán Maza Trujillo


Corrección de estilo, diseño y edición: José Urióstegui

1ª. edición 2022.

D.R. © Luis Antonio Álvarez Oval


D.R. © Christian Mauricio Castillo Estrada
D.R. © Aron De la Cruz Vázquez IMPORTANTE:
D.R. © Universidad Autónoma de Chiapas
ROBOTC® es una marca registrada de Robomatter, Inc.
LEGO® y MINDSTORMS® son marcas registradas de
Boulevard Belisario Domínguez km 1081, sin número,
Terán, C. P. 29050, Tuxtla Gutiérrez, Chiapas. LEGO Juris A/S Corporation.

La Universidad Autónoma de Chiapas es miembro de la LEGO Educación y el grupo LEGO no patrocinan,


Cámara Nacional de la Industria Editorial con el número respaldan ni apoyan este trabajo, su edición
de afiliación 3932. o difusión.

El diseño y la composición son propiedad de la Universidad


Autónoma de Chiapas.

Editada en México / Edited in Mexico

3
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


CONTENIDO

Resumen / abstract. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 7

Breves currículos de los autores . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 8

PRÓLOGO.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 9

INTRODUCCIÓN GENERAL . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 11

ROBOT VELADOR, LABORATORIO 1


COMPORTAMIENTO BÁSICO: MARCHA
• Recorrido rectilíneo
• Recorrido con giros y vueltas. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . . 13
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 14
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 15
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 16
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 21
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .26

ROBOT VELADOR, LABORATORIO 2


COMPORTAMIENTO BÁSICO: RECORRIDO DE GIROS . . .. . .. . .. . .. . .. . .. . .. . .. . .. . 29
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 30
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 31
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 33
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 38

4
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


ROBOT VELADOR, LABORATORIO 3
UNA VUELTA COMPLETA AL EDIFICIO. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 40
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 41
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 42
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 43
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 45
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 48

ROBOT VELADOR, LABORATORIO 4


TRES VUELTAS COMPLETAS AL EDIFICIO . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 51
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 52
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 53
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 54
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 57
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 61

ROBOT VELADOR, LABORATORIO 5


TRES VUELTAS COMPLETAS AL EDIFICIO CON OBSTÁCULOS
Y ARRANQUE MANUAL.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 64
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 65
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 66
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 67
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 76
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 81

ROBOT VELADOR, LABORATORIO 6


TRES VUELTAS COMPLETAS AL EDIFICIO CON OBSTÁCULOS Y FUNCIONES. . .. . .. . .. 83
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 84
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 85
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 87
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 94
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 99

5
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


ROBOT VELADOR, LABORATORIO 7
BITÁCORA DE VIGILANCIA. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 102
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 103
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 104
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 106
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 116
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 121

ROBOT VELADOR, LABORATORIO 8


MONITOREO DE VIGILANCIA MEDIANTE UNA CÁMARA MÓVIL. . .. . .. . .. . .. . .. . .. .123
Introducción . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 124
Desafío por resolver. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 126
Conceptos básicos . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 127
Solución del desafío . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 127
Trabajo adicional. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. 134

CONSIDERACIONES FINALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

CONCLUSIONES. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . 138

6
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


RESUMEN ABSTRACT

Definir el comportamiento de un robot educativo a través del diseño Defining the behavior of an educational robot through the design of
de algoritmos y su codificación con el lenguaje de programación deno- algorithms and their coding with the programming language called
minado ROBOTC es el ámbito de esta obra. Desde el control del movi- ROBOTC is the scope of this work. From the control of movement and
miento y detección de variables del medioambiente usando los sensores detection of environmental variables using the sensors provided by the
que nos proporciona el robot se le presentarán al lector de manera robot will be presented to the reader in an entertaining way. Let’s do it.
amena. Manos a la obra.

7
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


Breves currículos de los autores
M. C. LUIS ANTONIO ÁLVAREZ OVAL. DR. CHRISTAN MAURICIO CASTILLO ESTRADA. DR. ARON DE LA CRUZ VÁZQUEZ. Se desem-
Ingeniero en Computación por la Universidad Es Licenciado en Sistemas Computacionales por peña como profesor de tiempo completo
Autónoma de Guadalajara; posee el grado la Universidad Autónoma de Chiapas; Maestro en la Facultad de Negocios, Campus IV,
de Maestro en Ciencias de la Computación en Comercio Electrónico con especialidad en de la Universidad Autónoma de Chiapas;
por la Universidad de Houston Campus Tecnologías de Información por el Instituto posee los grados de Maestro en Ciencias de
Clear Lake. Actualmente colabora en la Tecnológico y de Estudios Superiores de la Computación con especialidad en Redes,
Universidad Autónoma de Chiapas como Monterrey, y Doctor en Gestión para el Desarrollo Maestro en Administración con Formación en
profesor de tiempo completo en la Facultad por la Universidad Autónoma de Chiapas. Organizaciones, y el Doctorado en Gestión para
de Negocios, Campus IV. Sus áreas de especia- Actualmente se desempeña como profesor de el Desarrollo por la Universidad Autónoma de
lidad e investigación son: Robótica educativa, tiempo completo en la Facultad de Negocios, Chiapas. También es reconocido como inte-
Cómputo en la nube, Diseño y administración Campus IV, de la Universidad Autónoma de grante del Sistema Estatal de Investigadores
de bases de datos y Programación de proce- Chiapas. Es reconocido como profesor de tiempo (SEI) del Instituto de Ciencia, Tecnología e
dimientos almacenados, Big data y Ciencia completo con Perfil Deseable vigente otorgado Innovación del Estado de Chiapas. Sus áreas
de datos. Es integrante del grupo de investi- por el PRODEP Tipo Superior de la SEP, y como de especialización e investigación son: Teoría
gación denominado Tecnologías en Sistemas integrante del Sistema Estatal de Investigadores matemática para la computación, Algebra
Computacionales. Posee el reconocimiento (SEI) que otorga el Instituto de Ciencia, Tecnología lineal y Estadística para el diseño de modelos
como profesor de tiempo completo con Perfil e Innovación del Estado de Chiapas. Sus áreas de de análisis de datos. Es integrante del Grupo
Deseable vigente otorgado de la Secretaría especialización e investigación son: Ingeniería de Investigación denominado Tecnologías en
de Educación Pública. de software (Arquitectura REST y microservicios), Sistemas Computacionales.
Ingeniería web para el desarrollo de aplicaciones
empresariales de tipo web y móviles; Big data y
Ciencia de datos. Integra el grupo de investiga-
ción Tecnologías en Sistemas Computacionales.

8
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


prólogo
En la actualidad los robots representan un avance largo de sus trayectorias escolares, despertándose
tecnológico relevante; en la sociedad han logrado en ellos la creatividad, razonamiento y lógica; en
captar la atención cuando se han aplicado para faci- otras palabras, la robótica coadyuva al desarrollo
litar tareas de la vida cotidiana, como localización cognitivo de los jóvenes.
de personas, exploración de volcanes, vigilancia Es evidente el crecimiento acelerado de la robó-
y telemedicina, entre muchas otras, convirtién- tica en los últimos años, ampliando su campo de
dose en herramientas complementarias para las aplicación, derivado de los avances significativos
personas. Siguiendo lo anterior, en el ámbito de en computación, electrónica, internet de las cosas
la educación los robots también juegan un papel y software especializado; el internet de las cosas
importante para desarrollar en los estudiantes com- ha permitido ampliar el campo de aplicación de los
petencias, desde genéricas hasta profesionales, a lo robots; estamos en la antesala de una era en la cual

9
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


las personas convivirán todos los días con robots en conforme el lector avanza. Cabe señalar que esta
sus labores o actividades, esto les permitirá elevar publicación digital ha sido elaborado con la finali-
su productividad y facilitar tareas. Por esa razón dad de ser un recurso educativo para fortalecer el
resulta importante aprender su funcionamiento y proceso de enseñanza de las unidades de compe-
programación de los mismos. tencia de metodología de la programación y pro-
La división temática de esta obra comprende la gramación estructurada. Los diversos desafíos que
aplicación de conceptos básicos de programación se presentan en cada uno de los laboratorios, son
para manipular el comportamiento de un robot el resultado de experiencias educativas generadas
educativo denominado lego® Mindstorms EV3 a en ciclos escolares anteriores, y toman como refe-
través del diseño de algoritmos y codificación de rencia los recursos de capacitación y manuales de
los mismos mediante el lenguaje de programación usuario que proporcionan la empresa Robomatter
(robotc®) iniciando con el control de movimientos Inc. y la Universidad Carnegie Mellon, respetando
básicos del robot y toma de decisiones hasta desa- en todo momento sus derechos de autor.
rrollar rutinas avanzadas de monitoreo usando una Finalmente, manifestamos que este compen-
webcam móvil. dio de ejercicios tiene el objetivo es comprobar la
Por lo anterior, se ha incluido en cada tema una correcta adquisición de conocimientos de robótica
sección de ejercicios enfocada a resolver un reto y su aplicación a través del diseño de un algoritmo
distinto porque cambia su grado de complejidad propio por parte de los estudiantes.

10
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
introducción general
Desde los inicios del programa educativo de Licenciatura en Derivado de la incorporación de un nuevo programa educa-

Sistemas Computacionales, que se ofertaba en la Facultad de tivo a la oferta académica de la Facultad de Negocios, nuevos

Negocios del Campus IV de la Universidad Autónoma de Chia- retos surgen y la necesidad de dar solución a cada uno de

pas, se identificaba en el proceso de enseñanza-aprendizaje la ellos es prioritario. Los laboratorios de prácticas académicas

necesidad de utilizar herramientas educativas complementarias, que se han elaborado para la unidad de competencia deno-

para coadyuvar al reto que representa para los estudiantes el minada Metodología de la Programación, la cual forma parte

aprendizaje y aplicación de los principios de la programación de la Licenciatura en Ingeniería en Desarrollo y Tecnologías de

estructura y metodología de programación, muchas genera- Software tratan de resolver la problemática mencionada;

ciones alertaban de diferentes problemas, pero una constante estos laboratorios de prácticas consideran como elemento

aparece siempre: el razonamiento de pasar de las nociones abs- educativo innovador, el uso de robots LEGO EV3 programables,

tractas de la computadora a la implementación práctica. Limi- permitiendo la aplicación del Razonamiento Computacional

tar esta brecha entre teoría y práctica resulta una decisión vital como una técnica que se requiere para resolver problemas en

para controlar el arte de programar computadoras. las diferentes etapas de formación de los estudiantes. Cada

11
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


una de las prácticas plasmadas en el laboratorio, inician con la actualidad, existe un número reducido de libros relacionados con

descripción de un problema o reto, posteriormente se repre- el lenguaje ROBOTC® en idioma español; no obstante, en inglés

senta de manera gráfica la solución a través de Diagramas de existe una vasta documentación generada por la Universidad

Flujo, y finalmente se escribe un programa en un lenguaje Carnegie Mellon. Estos laboratorios se basan en los materiales

de programación denominado ROBOTC®, el cual es cargado o educativos y manuales de usuario, sin ser su copia, a los que se

transferido al robot LEGO® para su correspondiente ejecución. puede acceder mediante los sitios web oficiales señalados en las

Lo anterior permite una sinergia de la teoría y la práctica como secciones de bibliografía de este libro. Todos los programas aquí

una herramienta para desarrollar proyectos de programación; el presentados han sido debidamente probados para asegurar la

estudiante no es un simple observador, sino todo lo contrario, calidad del trabajo. Debido a que no existe bibliografía en idioma

es el responsable de diseñar el algoritmo correcto y codificarlo español, hemos buscado cómo estos materiales pueden formar

para que el robot pueda cumplir con el reto propuesto en cada la base de este libro.

una de las prácticas que conforman al laboratorio. En estos laboratorios algunos desafíos de programación

Por todo lo anterior, en este libro didáctico se contempla se han tomado de los publicados en el sitio web de ROBOTC® y

el uso del lenguaje de programación ROBOTC®, en virtud de que LEGO®, otros son parte de la experiencia de programación de

provee un entorno de desarrollo fácil para fortalecer el apren- computadoras de los autores y la necesidad de explicar a los

dizaje del estudiante, y que pueda aplicar los fundamentos de estudiantes el plan de estudios de la asignatura y todos se han

programación, asociándolos con el lenguaje de programación C, resuelto con programas desarrollados por los autores.

el cual es usado en los semestres subsecuentes en otras unidades También es necesario comentar que este material ha sido

competencias tales como: Estructura de Datos, Sistemas probado con estudiantes de la Escuela Secundaria General “16

Operativos, Bases de Datos, Diseño de interfaces, etcétera. En la de Septiembre”, en el ejido La Libertad, municipio de Ciudad

12
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Hidalgo, Chiapas. También se ha usado para capacitar estudiantes preparar a nuestros estudiantes para que programen una amplia

del CONALEP plantel Tuxtla Chico. En ambos casos tuvimos exce- variedad de robots, participen en las competencias que organizan

lentes resultados. Es nuestra intención reproducir este curso los fabricantes de los dispositivos y los prepara para enfrentar

fuera de las aulas universitarias para la mayor cantidad de los retos de programación que presenta el programa académico

educandos posible. que se oferta.

Además se explotará la amplia infraestructura robótica Finalmente, esperamos que los materiales preparados para

que posee la facultad. En su inventario cuenta con robots de las los estudiantes universitarios puedan permear a estudiantes de

marcas VEX®, LEGO® y ARDUINO®; todos se pueden programar nivel medio superior, y que nuevos retos se implementen para

con el mismo lenguaje de programación ROBOTC®. También enriquecer la asignatura, como la programación de otros disposi-

contamos con licencias de ROBOTC® para VEX® y LEGO®, y licen- tivos robotizados aéreos, mejor conocidos como drones. ¡Manos

cias para ARDUINO®, que son gratuitas. Esta estrategia permite a la obra!

13
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 1

COMPORTAMIENTO
BÁSICO: MARCHA
• RECORRIDO RECTILÍNEO
• RECORRIDO CON VUELTAS Y GIROS

OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:


→ Desarrollar el pensamiento lógico necesario para analizar el
comportamiento básico del robot en cuanto a velocidad y dirección.

→ Diseñar un algoritmo y construir un programa de computadora


apropiado con lenguaje de programación ROBOTC®.

→ Implementar ese algoritmo en un robot Lego® y probar que


el robot ejecuta las instrucciones adecuadas.

14
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

De acuerdo al sitio de documentación oficial de Robomatter dose a un lenguaje máquina. Finalmente, estos comandos ya

Inc. La tecnología ROBOTC® es considerada como un lenguaje traducidos serán cargados en el robot para ser ejecutados.

de programación eficaz con base en los principios y sintaxis del ROBOTC® y el robot nos permiten trasladar la programa-

lenguaje de programación C. Esta tecnología ofrece un entorno ción del mundo abstracto dentro de la computadora al mundo

de programación integrado (IDE, por sus siglas en inglés) orien- real, en donde cada orden que se escribe puede ser percibida

tado al sistema operativo Windows utilizado para escribir y como la actividad que desarrolla el robot. El estudiante debe

depurar códigos. comprender la programación de computadoras como una acti-

Así también, es importante señalar que ROBOTC es un vidad lógica sencilla de entender y aplicar, esa comprensión le

lenguaje de programación que expone un depurador con búsqueda permitirá desarrollar conceptos mucho más abstractos tales

paso a paso en tiempo real. Es una solución multiplataforma para como la comunicación entre procesos remotos, programación

que los estudiantes tengan acceso al aprendizaje de robótica orientada a objetos, programación web, etcétera.

básica aplicando los principios de la programación estructurada El robot que usaremos a lo largo de este curso tiene una

(Robomatter 2016). configuración de dos ruedas, cada una con su propio motor,

Cabe señalar que el estudiante debe consultar la lista de que serán los actuadores, y una rueda de arrastre omnidirec-

comandos que se visualizan en el IDE, escribirlos en pantalla, cional; en el tema de sensores, para percibir su ambiente, el robot

posteriormente serán procesados por el compilador traducién- dispone de un sensor táctil, ultrasónico, y otro de luz/color.

15
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
DESAFÍO POR RESOLVER cubo que se te proporciona, y debe regresar a su posición inicial

La compañía ACME Robotics ha ganado un proyecto para dise- en reversa. Finalmente, ya en la posición inicial, debe depositar

ñar un robot programable que patrulle los alrededores de un el cubo en el piso. Esto nos permitirá ganar comprensión del

edificio rectangular que almacena autos, por lo que ACME te comportamiento de la mecánica del robot.

ha contratado para desarrollar el programa para que ese robot

prototipo pueda, de forma autónoma, “vigilar” los alrededores Figura 1.

del edificio. Otro equipo de trabajo ya ha desarrollado el pro- RECORRIDO DEL ROBOT VELADOR.

totipo mecánico-electrónico del robot y está disponible para

su uso. El proceso de ingeniería implica que la solución se vaya

construyendo paso a paso, así que la rutina de vigilancia cons-

tante será desarrollada en laboratorios posteriores.

Es necesario que imprimas este documento ya que debes

responder las preguntas de las secciones “Solución del desafío”.

El administrador de este proyecto ha dividido en seis etapas

el proceso de ingeniería para el desarrollo del sistema que va

a controlar el robot y que resolverá la problemática planteada

por el cliente.

La problemática que se debe resolver en esta sección es la

siguiente: el robot debe arrancar de su posición inicial hasta

la zona objetivo, ahí debe recoger, con la mandíbula frontal, el

16
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Para este desafío el estudiante necesita los siguientes CONCEPTOS BÁSICOS
materiales: Aquí encontrarás material de apoyo para entender el objetivo

• Cinta aislante de color negro primario de este documento. En general, los apuntes provienen

• Flexómetro de los documentos que el Laboratorio Nacional de Ingeniería

• Transportador Robótica de la Universidad Carnegie Mellon ha proporcionado

• Lenguaje de programación ROBOTC® en los cursos de robótica que imparte y en la página web del

• Robot LEGO® armado. lenguaje ROBOTC® (Carnegie Mellon University 2020).

• Editor de diagramas DIA. Liga de descarga:

[Link]

17
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Diagramas de flujo Tabla 1.

Los diagramas de flujo son un conjunto de símbolos gráficos que PRINCIPALES SÍMBOLOS DE UN DIAGRAMA DE FLUJO.

representan un algoritmo, por tal motivo, representan de manera


Inicio y fin. El primer y último paso
gráfica a una secuencia de pasos para solucionar un problema. Estos
de cada algoritmo, suelen indicarse
diagramas comúnmente están integrados por una combinación de INICIO/FIN
visualmente a través de rectángu-
símbolos estandarizados (bloques y flechas). Los bloques típica- los redondeados, que contienen
mente exponen procesos, es decir, tareas específicas; y el orden las palabras inicio o fin.
o secuencia de las acciones se representan utilizando las flechas.
Acciones. Las acciones son repre-
En este apartado es necesario manifestar la posibilidad que de un sentadas con rectángulos y actúan
ACCIÓN
mismo bloque se deriven diferentes flechas de dirección donde cada como comandos básicos: “wait1Msec
(1000)”; “increment line count
una de ellas representa una opción o ruta. La notación que se usa para
by 1” o “motor full ahead”.
construir un diagrama de flujo se detalla a continuación (Tabla 1).
Decisiones. Los bloques de decisiones

Comportamientos son representados mediante la figura de


rombos; estos bloques suelen ser una DECISIÓN
Un comportamiento es cualquier cosa que un robot hace; tan
estructura selectiva doble, es decir, eva-
solo encender un motor es un comportamiento, moverse hacia
lúan el valor de una variable y el resultado
delante, seguir una línea y navegar un laberinto son, cada uno, se traduce en una respuesta verda-
comportamientos. Hay tres principales tipos de comportamientos: dero/falso o sí/no; con base a esa res-
puesta se toma la decisión de elegir una
básicos, simples y complejos. La figura 2 muestra los tres tipos de
u otra ruta en el flujo de un programa.
comportamiento.

18
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Comportamientos básicos prender y realizar directamente. En ROBOTC®, estos son los

En el nivel más básico, todo en un programa tiene que ser divi- comportamientos de un solo enunciado, como encender un

dido en pequeños comportamientos que tu robot pueda com- solo motor o reajustar un cronómetro.

Figura 2. Comportamientos simples


LOS TRES TIPOS DE COMPORTAMIENTO DE UN ROBOT. Estos comportamientos son pequeños, su tamaño aproximado

es un bit, y permiten a tu robot realizar una simple pero signifi-

Comportamiento cativa tarea, como moverse hacia delante por un tiempo. Son,
5 task main () básico
6 quizá, los comportamientos más útiles en los que debes pensar,
7 // Paso 1. Avanzar derecho 35 cm
porque son suficientemente grandes para describir acciones úti-
8 motor [Izquierda] = 63;
9 motor [Derecha] = 63; les, y suficientemente pequeños para programarlos fácilmente
10 wait1Msec (1200);
con órdenes básicas de ROBOTC®.
11 // Paso 2. Girar izquierda 45 grados
12 motor [Izquierda] = -63;
Comportamiento
13 motor [Derecha] = 63;
14 wait1Msec (170);
simple Comportamientos complejos
15 // Paso 3. Avanzar derecho 145 cm Estos son comportamientos en los niveles más altos, como
16 motor [Izquierda] = 63;
Comportamiento navegar todo un laberinto. Pueden parecer complejos, pero
17 motor [Derecha] = 63;
complejo
18 wait1Msec (4350);
una buena propiedad de los comportamientos complejos es
19 // Paso 4. Girar derecha 135 grados
20 motor [Izquierda] = 63; que están compuestos de otros más pequeños. Si los observas
21 motor [Derecha] = -63;
con detalle, verás que puedes dividirlos en comportamientos
22 wait1Msec (460)
más y más pequeños y, con práctica, llegarás a reconocer todos.

19
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Cuerpo de un programa Comando motor Comando wait1sec()
en ROBOTC® El comando  motor  indica al robot El comando wait1sec() le indica al
La ejecución de un programa en encender un motor a un determinado robot cuánto esperar antes de que
ROBOTC® inicia en la línea identificada nivel de potencia. El ejemplo del pro- ejecute el siguiente comando, por
por el comando “task main”, por omi- grama 1 configura los puertos B y C, a un tiempo dado en milisegundos. El
sión el compilador lo buscará y si no lo los que están conectados los motores número entre paréntesis representa
encuentra marcará error. Después eje- izquierdo y derecho, respectivamente, los milisegundos que el robot tendrá
cuta el siguiente comando hacia abajo y para que corran a toda potencia hacia que esperar para ejecutar el siguiente
así sucesivamente. En el programa que delante. Recuerda que cada comando comando.
se muestra en la figura 3 puedes ver en ROBOTC® termina con punto y coma
dos comandos: motor y wait1msec. ( ; ).

Figura 3.

CUERPO DE UN PROGRAMA EN ROBOTC®.

4
Task main. Esta línea crea {Cuerpo} los corchetes
5 task main()
una tarea llamada task 6 { [ ] encierran el cuerpo
main, la cual contiene 7 de la estructura. Entre
los comportamientos que 8 // Paso 2. Girar izquierda los corchetes se indica al
9 motor[Izquierda] = 0;
queremos que el robot programa qué comandos seguir
10 motor[Derecha] = 63;
realice. Task main marca el 11 wait1Msec (170); como parte de la task main.
inicio de una estructura. 12
13 }
14

20
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
A continuación se muestra un resumen del Programa Resultado

motor[Izquierda] = 126;
comportamiento que se puede lograr variando
motor[Derecha] = 126;
la potencia que se aplica a cada motor. En cada
Avanzar a toda
caso es necesario agregar el tiempo que dedi- potencia

cará el robot a ejecutar dicho comportamiento motor[Izquierda] = 63;


motor[Derecha] = 63;
(Figura 4).
Avanzar a media
potencia

motor[Izquierda] = -126;
motor[Derecha] = -126;

Reversa a toda
potencia

motor[Izquierda] = -126;
motor[Derecha] = 126;
Giro
de pivote
Figura 4.
motor[Izquierda] = 126;
COMPORTAMIENTO motor[Derecha] = 0;
VARIANDO POTENCIA Giro de punto

DE LOS MOTORES.
motor[Izquierda] = 126;
motor[Derecha] = -63;
Giro de
semipunto

21
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
SOLUCIÓN DEL DESAFÍO comportamiento del robot, y para eso tienes que hacer otras

Puesto que nunca haz enfrentado un proyecto de ingeniería investigaciones.

de este tipo es necesario que apliques el concepto de “divide

y vencerás”: dividiremos el desafío en varias etapas para que Investigación de la distancia


vayas construyendo el conocimiento necesario y resuelvas la recorrida vs. nivel de potencia
problemática de esta sección. para recorrido rectilíneo
En esta investigación tienes que encontrar la relación entre el

Velocidad y dirección nivel de potencia del motor y la distancia recorrida. Determina

Lograr que el robot vaya derecho no es simple. Hay muchas la relación programando tu robot para que corra a 25, 50, 75, y a

variables que entran en juego: 100% de potencia por 1, 3, y 5 segundos. Considera que la poten-

• Los motores pueden generar diferentes empujes, cia máxima del robot es de 127, si es necesario, aplica redon-

• Puede haber más fricción en un eje que en otro, deo al número inmediato inferior. Marca la zona de arranque

• El peso del robot podría no estar equilibrado o parejo, para que obtengas resultados consistentes en todas las prue-

• Las llantas pueden estar fuera de balance, etcétera. bas. El valor numérico asignado al comando motor representa

la fuerza con la que el motor funciona, 127 indica a toda poten-

Eventualmente recibirás respuesta de los sensores que cia mientras que un valor de 63 indica aproximadamente media

te pueden ayudar a enderezar el movimiento de tu robot, potencia. Llena la tabla 2 con los valores de potencia faltantes

pero mientras tanto tendrás que programarlo manualmente. (usa la regla de tres). Usa el Programa 1 (véase) para llenar la

Para lograrlo hay que variar ligeramente la potencia que tabla 3 con los valores resultantes al momento de ejecutar las

se aplica a los motores. Primero tenemos que conocer el pruebas.

22
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1 #pragma config(Motor, motorB, Derecha. tmotorNormal)
Programa 1.
2 #pragma config(Motor, motorC, Izquierda, tmotorNormal1)
PROGRAMA 1 3
4
PARA LLENAR
5 task main (){
LA TABLA 2. 6 // Activación de los motores
7 motor[motorB] = 126; Nivel de potencia.
8 motor[motorC] = 126; Modificar valores para: 100, 75,
9 // Tiempo de espera de 50 y 25%
10 // concluir el programa
11 // Igual al tiempo de recorrido Tiempo de recorrido.
12 wait1Msec (1000); Modificar para 1, 3 y 5 segundos
13 }

Tabla 2.
Porcentaje Potencia
VALORES DE POTENCIA
100% 127
POR CADA PORCENTAJE.
75%

50% 63

25%

23
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tiempo recorrido Distancia Tabla 3.
Nivel de potencia
milisegundos) recorrida RESULTADOS DE NIVEL DE POTENCIA

25% 1000 VS. DISTANCIA RECORRIDA.

50% 1000

75% 1000
Para que el robot mueva el brazo, aplica los comandos que
100% 1000
ya conoces (se mueve con un motor en puerto D), aplica una
-------------------
potencia baja (25%). Documenta el movimiento circular del brazo
25% 3000 en la tabla 4.

50% 3000

75% 3000 Tabla 4.


TIEMPO DE RECORRIDO
100% 3000
VS. GRADOS DE GIRO DEL BRAZO.
-------------------

25% 5000
Tiempo de recorrido Grados de giro
50% 5000 100
75% 5000 200

100% 5000 300

24
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Ahora se te proporcionan tres herramientas que permiten Tabla 5.

resolver el problema. SOLUCIÓN PARECIDA

1. Solución del problema con una serie de pasos (Tabla A UNA RECETA DE COCINA.

5) explicados en idioma español, como una receta de

cocina. 1. Inicio del programa

2. Solución con pseudocódigo (Tabla 6), expresado 2. Esperar 2 segundos

también en idioma español, concreto. 3. Avanzar x segundos

3. Solución con algoritmo usando la notación de 4. Levantar el brazo y grados

diagramas de flujo (Figura 5). 5. Retroceder x segundos

6. Bajar el brazo y grados

Asegúrate de estudiar completamente cada solución, ya 7. Final del programa

que el siguiente paso es que generes el programa que resuelva

el desafío.

Relaciona estos conceptos con el proceso de ingeniería que

se te ha presentado en la sección “Conceptos básicos”.

Todas las soluciones se explican usando la técnica del compor-

tamiento simple. Tu tarea es convertirla en comportamiento

básico (observa la sección “Conceptos básicos-Comportamientos”.

A continuación, las tres herramientas mencionadas.

25
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 6. Figura 5.

PSEUDOCÓDIGO PARA EL DESAFÍO. ALGORITMO PARA EL DESAFÍO.

8 task main() INICIO

9 {

10 Esperar 2 segundos
AVANZAR X SEG
11 Avanzar x segundos

12 Levantar brazo x segundos

13 Retroceder x segundos LEVANTAR BRAZO Y°


14 Bajar brazo y grados

15 }

RETROCEDER X SEG

BAJAR BRAZO Y°

FIN

26
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anota en este recuadro el programa resultante con el que Construyendo el conocimiento
diste solución a los pasos de este desafío: del recorrido rectilíneo
1. Crea tres gráficas separadas (una para cada tiempo de

recorrido) colocando el nivel de potencia vs. distancia

recorrida.

2. ¿Existen relaciones entre el nivel de potencia, distan-

cia recorrida y el tiempo de recorrido? Explícalas, o

explica porqué no hay relaciones.

3. Selecciona un nivel de potencia y calcula el desnivel

de su línea en cada una de las tres gráficas. ¿Los desni-

veles son los mismos? Si no es así, especula porqué

existen estas diferencias.

4. ¿Cómo se corrige la desviación del robot en recorrido

rectilíneo cuando avanza a toda potencia?

TRABAJO ADICIONAL
Modifica tu programa para que ejecute el siguiente desafío.

El robot debe arrancar de su posición inicial hasta la zona

objetivo, ahí debe recoger con la mandíbula frontal el cubo que

se le proporciona; dará un giro de 180° y regresará a su posición

27
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
inicial. Finalmente, debe dar otro giro de 180° grados y depositar

el cubo en el piso. Esto te permitirá comprender el comporta-

miento de la mecánica del robot.

Explora los comportamientos que obtienes al variar la

potencia de los motores, documentados en la sección “Conceptos

básicos”.

Referencias

RobotC for LEGO Mindstorms Web Help. (s.f.). ROBOTC Downloads. Consultado 2 de enero de 2018: [Link]

[Link]/WebHelpMindstorms/[Link]#Resources/topics/ROBOTC_Interface/[Link]

Curriculum for Tetrix and Lego Mindstorm Product Overview. (s.f.). Consultado el 2 de enero de 2018: http:// www.

[Link]/products/teaching_ROBOTC_tetrix/home/ROBOTC_TETRIX_Curriculum.pdf

Cairó O. Metodología de la programación. Algoritmos, diagramas de flujo y programas. Alfaomega. 3ª. edición.

28
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 2

COMPORTAMIENTO BÁSICO:
RECORRIDO DE GIRO

OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:


→ Analizar el comportamiento básico del robot en cuanto a velocidad
y dirección para desarrollar pensamiento lógico

→ Conseguido ese pensamiento lógico, con él diseñar un algoritmo y construir un programa


de computadora apropiado con lenguaje de programación ROBOTC®. Diseñar un algoritmo y
construir un programa de computadora apropiado con lenguaje de programación ROBOTC®.

→ Implementar ese algoritmo en un robot Lego® y probar que el


robot ejecuta las instrucciones adecuadas al desafío.

29
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

ROBOTC® y el robot nos permiten trasladar la programación la comunicación entre procesos remotos, programación orien-

del mundo abstracto dentro de la computadora al mundo real, tada a objetos, programación web, etcétera.

en donde cada orden que se escribe puede ser percibida como El robot que estaremos usando a lo largo de este curso

la actividad que desarrolla el robot. El estudiante debe com- tiene una configuración de dos ruedas, cada una con su propio

prender la programación de computadoras como una actividad motor, que serán los actuadores, y una rueda de arrastre omni-

lógica, sencilla de entender y aplicar; esa comprensión le per- direccional; en el tema de sensores, para percibir el ambiente el

mitirá desarrollar conceptos mucho más abstractos tales como robot dispone de un sensor táctil, ultrasónico, y otro de luz/color.

30
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
DESAFÍO POR RESOLVER

La compañía ACME Robotics ha ganado un proyecto para dise- La problemática que se debe resolver en esta sección

ñar un robot programable que patrulle los alrededores de un es la siguiente: el robot debe arrancar de su posición inicial

edificio rectangular que almacena autos, por lo que ACME te hasta la posición final, el recorrido lo obliga a evadir algunos

ha contratado para que desarrolles el programa para que ese obstáculos. El recorrido adopta una forma de una equis.

robot prototipo pueda, de forma autónoma, “vigilar” los alre- Solucionar el desafío incrementará tu comprensión del

dedores del edificio. Otro equipo de trabajo ya ha desarrollado comportamiento de la mecánica del robot durante los giros.

el prototipo mecánico-electrónico del robot y está disponible

para su uso. El proceso de ingeniería implica que la solución

se vaya construyendo paso a paso, así que la rutina de vigilan- Para este desafío necesitas los siguientes materiales:

cia constante será desarrollada en laboratorios posteriores. Es • Cinta aislante de color negro
necesario que imprima este documento ya que debes respon- • Flexómetro
der las preguntas que se te hacen en la sección “Solución del • Transportador
desafío”. El administrador de este proyecto ha planteado divi- • Lenguaje de programación ROBOTC®
dir en seis etapas el proceso de ingeniería para el desarrollo • Robot LEGO® armado
del sistema que va a controlar el robot y que resolverá la pro- • Editor de diagramas DIA. Liga de descarga: http://
blemática planteada por el cliente. [Link]/

31
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 1. Es interesante abordar el concepto de diagramas de flujo

RECORRIDO DEL ROBOT VELADOR nuevamente en este laboratorio, el estudiante debe conocer cada

símbolo para representar de manera visual cada uno de los pasos

de su algoritmo; para esto es necesario combinar un conjunto de

bloques y flechas para representar las acciones. Así también, debe

cuidar el orden en el cual las acciones ocurren, y para ello hacer

Obstáculo uso de flechas de dirección que apuntan de una acción a otra. Hay

que considerar que de un mismo bloque pueden derivar varias

flechas de dirección, y cada una de ellas indicará la trayectoria o

camino por seguir.

• Inicio y fin. Son representados mediante las figuras

Obstáculo o símbolo de rectángulos redondeados; y dentro del


Ruta 2 Ruta 1
mismo deberá contener las palabras “inicio o fin”.

• Acciones. Se debe usar la figura de rectángulo para

representarlas, mismas que} actúan como acciones

básicas: “wait1Msec (1000)”; “increment line count


Posición Posición by 1” o “motor full ahead”.
final inicial
• Decisiones. Los bloques de decisiones son represen-

tados como rombos; los cuales indican la toma de

decisión de una u otra ruta en el flujo de un programa,

32
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
indicando los posibles caminos a seguir. Las flechas Recorrido de giro
deben ser siempre etiquetadas de adecuadamente. Hay dos tipos de giros que nuestro robot puede ejecutar: giro

de pivote y giro de punto. El primero ocurre cuando una rueda

gira mientras la otra permanece estacionaria. El segundo ocurre

SOLUCIÓN DEL DESAFÍO cuando a los dos motores se les asignan valores opuestos, a uno

Puesto que nunca nos hemos enfrentado a un proyecto de se asigna un valor positivo mientras que al opuesto uno negativo.

ingeniería de este tipo, es necesario que apliquemos el con- Determina los tiempos de recorrido para diferentes poten-

cepto de “divide y vencerás”; dividiremos el desafío en varias cias de motor para lograr una vuelta a la izquierda de 90, 180 y

etapas para ir construyendo el conocimiento necesario para 360 grados. Modifica el programa 1 para llenar las tablas 1 y 2

resolver la problemática de esta sección. con tus resultados. Recorta la plantilla para resolver esta tarea.

Programa 1.
5 task main()⎨
6 // activación de los motores. Giro de Punto
7 motor [motorB] = -126;
Nivel de potencia. Modificar valores
8 motor [motorC] = 126;
para: 100, 75, 50, y 25% de potencia.
9 // Tiempo de espera antes de
10 // Concluir el programa
11 // Igual al tiempo de recorrido
Tiempo de recorrido. Modificar para
12 wait1msec(1000);
1, 3 y 5 segundos.
13 ⎬
14 |

33
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1. Tabla 2.
RESULTADOS DE NIVEL DE POTENCIA RESULTADOS DE NIVEL DE POTENCIA
VS. GRADOS CON GIRO DE PIVOTE. VS. GRADOS CON GIRO DE PUNTO.

Nivel de potencia Grados de giro Tiempo Nivel de potencia Grados de giro Tiempo

de recorrido de recorrido

25% 90° 25% 90°

50% 90° 50% 90°

75% 90° 75% 90°

100% 90° 100% 90°

25% 180° 25% 180°

50% 180° 50% 180°

75% 180° 75% 180°

100% 180° 100% 180°

25% 360° 25% 360°

50% 360° 50% 360°

75% 360° 75% 360°

100% 360° 100% 360°

34
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Construyendo Figura 2.
tu conocimiento sobre los giros PLANTILLA PARA LA INVESTIGACIÓN

1. ¿Cuál de los dos tipos de giro es más preciso? DE LOS GIROS.

2. ¿Cómo determinaste en la práctica los grados recorridos por

el robot durante el giro?

3. ¿Cómo determinarías la distancia lineal que recorrió el robot

en el giro?

4. ¿Qué deberías hacer para que tu robot ejecute un giro hacia

atrás? Construye un programa.

5. ¿Qué le pasaría a tu programa si le cambiaras el diámetro de

las ruedas a tu robot?

6. ¿Qué pasa con la potencia cuando se carga la batería del robot?

35
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Ahora se te proporcionan tres herramientas que permiten

resolver el problema. Tabla 3.

1. Solución del problema con una serie de pasos (Tabla SOLUCIÓN PARECIDA

3) explicados en idioma español, como una receta de A UNA RECETA DE COCINA.

cocina.

2. Solución con pseudocódigo (Tabla 4), expresado 1. Inicio del programa


también en idioma español concreto. 2. Esperar 2 segundos
3. Avanzar x segundos
3. Solución con algoritmo usando la notación de Diagra-
4. Girar a la izquierda y grados
mas de flujo (Figura 3). Asegúrate de estudiar comple-
5. Avanzar x segundos
tamente cada solución, ya que el siguiente paso es que 6. Girar a la derecha Y grados.
generes el programa que resuelva el desafío. Rela- 7. Avanzar x segundos

ciona estos conceptos con el proceso de ingeniería que 8. Girar a la derecha y grados.
9. Avanzar x segundos
se te ha presentado en la sección “Conceptos básicos”.
10. Girar a la izquierda y grados
Todas las soluciones se explican usando la técnica del 11. Avanzar x segundos
comportamiento simple, su tarea es convertir esta en 12. Fin del programa
comportamiento básico (ver sección “Conceptos bási-

cos-comportamientos”). Con cinta aislante marca la

ruta que debe seguir el robot y con el transportador

determina los grados que debe girar el robot. A conti-

nuación, las tres herramientas ya mencionadas.

36
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 4. Figura 3.

PSEUDOCÓDIGO PARA EL DESAFÍO. ALGORITMO PARA EL DESAFÍO.

Inicio
8 task main () Avanzar
9 ⎨ x segundos

10 Esperar 2 segundos Avanzar


11 Avanzar x segundos x segundos
Girar
12 Girar a la izquierda y grados Izquierda y°
13 Avanzar x segundos
Girar
14 Girar a la derecha y grados Izquierda y°
Avanzar
15 Avanzar x segundos
x segundos
16 Girar a la derecha y grados
Avanzar
17 Avanzar x segundos
x segundos
18 Girar a la izquierda y grados
Inicio
19 Avanzar x segundos
20 ⎬ Girar
Derecha y°
21

Avanzar
x segundos

Girar
Derecha y°

37
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anota en el recuadro el programa resultante con el que TRABAJO ADICIONAL
solucionaste este desafío. Modifica tu programa para resolver una nueva situación. El

robot ejecuta las mismas funciones que el desarrollado previa-

mente, sólo que después de recolectar el cubo, el robot debe

dar un giro de 180° y viajar en reversa hasta su posición final

(las líneas rojas indican el recorrido en reversa). Tal como se

aprecia en la figura 4.

Cubo
LEGO Figura 4.

LOS RECORRIDOS

DEL ROBOT
Obstáculo EN EL TRABAJO

ADICIONAL.

Obstáculo
Ruta 2 Ruta 1

Posición Posición
final inicial

38
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el sitio web:

[Link]

Carnegie Mellon University (2020). ROBOTC for TETRIX & LEGO® [Link]://[Link]/roboticsacademy/

roboticscurriculum/Lego%20Curriculum/ROBOTC-Tetrix_Mindstorms.html

Cairó, O (2005). Metodología de la programación. Algoritmos, diagramas de flujo y programas. Alfaomega. 3ª. edición.

Joyanes, L. (2008). Fundamentos de Programación. Algoritmos y estructura de datos, Mc Graw Hill.

39
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 3

UNA VUELTA COMPLETA


AL EDIFICIO

OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:


→ Desarrollar el pensamiento lógico necesario para diseñar un algoritmo,
y construir un programa de computadora apropiado con ROBOTC

→ Implementar ese algoritmo en un robot Lego y probar que el robot ejecuta


las instrucciones adecuadamente para que el robot ejecute una vuelta
completa a la maqueta de un edificio de forma rectangular.

40
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

En este tercer laboratorio, el estudiante deberá utilizar el len- programas, y es el único que depura exhaustivamente en

guaje de programación ROBOTC® para diseñar el algoritmo y tiempo real. Es una solución multiplataforma que permite que

codificarlo; así también, hará uso de ciertos materiales com- los estudiantes aprendan el tipo de programación con base en

plementarios: bloque de madera, flexómetro y cronómetro C, usada en educación avanzada y aplicaciones profesionales.

con la finalidad de desarrollar una solución para el reto plan- Los comandos para el robot primero se escriben en la

teado, y finalmente, realizar las pruebas del correcto funcio- pantalla, después son procesados por el compilador de ROBOTC®

namiento del algoritmo, con el robot en ejecución. en un archivo de lenguaje de máquinas que el robot comprende.

Así también, el estudiante debe hacer uso del IDE que Finalmente, son cargados en el robot en donde pueden ejecutarse.

ofrece ROBOTC®, consultando el apartado de ayuda, mismo ROBOTC® y el robot nos permiten trasladar la programación

que despliega una lista de comandos disponibles y su corres- del mundo abstracto de la computadora al mundo real, en donde

pondiente descripción; cada uno de estos comandos se traduce cada orden escrita puede percibirse como actividad del robot.

a lenguaje máquina con la finalidad que el robot los pueda inter- El estudiante debe comprender la programación de computa-

pretar y ejecutar. doras como una actividad lógica sencilla de entender y aplicar;

ROBOTC® es un poderoso lenguaje de programación con esa comprensión le permitirá desarrollar conceptos mucho más

base en C, en ambiente Windows® para escribir y depurar abstractos.

41
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
El robot que estaremos usando a lo largo de este curso DESAFÍO POR RESOLVER
tiene una configuración de dos ruedas, cada una con su propio La compañía ACME Robotics ha ganado un proyecto para dise-

motor, que serán los actuadores, y una rueda de arrastre omni- ñar un robot programable que patrulle los alrededores de

direccional; en el tema de sensores, percibe el ambiente que un edificio rectangular que almacena autos, por lo que ACME

lo rodea con un sensor táctil, ultrasónico, y otro de luz/color. te ha contratado para desarrollar el programa para que ese

Para este desafío necesitas los siguientes materiales: robot prototipo pueda, de forma autónoma, “vigilar” los alre-

• Marco de madera (que representará el edificio). dedores del edificio. La figura 1, explica paso a paso la solu-

• Flexómetro. ción del problema. Otro equipo de trabajo ya ha desarrollado

• Teléfono celular con sistema operativo Android y el prototipo mecánico-electrónico del robot y está disponible

con la aplicación StopWatch (cronómetro) instalada. para su uso.

Enlace para descargar la aplicación móvil: https:// El programa que debes construir en ROBOTC® , debe

[Link]/store/apps/details?id=[Link]. contener las instrucciones para dar una vuelta completa al

stopwatch&hl=en_US&gl=US edificio; como se trata de un prototipo no es necesario que

• [Link] ejecute una rutina de vigilancia constante. El proceso de inge-

[Link]&hl=es niería implica que la solución se vaya construyendo paso a paso,

• Lenguaje de programación ROBOTC®. así que la rutina de vigilancia constante será desarrollada en

• Robot Lego® armado. laboratorios posteriores.

• Editor de diagramas DIA. Liga de descarga: [Link] Es necesario que imprimas este documento ya que deberás

[Link]/ responder las preguntas de la sección “Solución del desafío”.

42
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 1. CONCEPTOS BÁSICOS
RECORRIDO DEL ROBOT VELADOR. Aquí encontrarás material de apoyo para entender el objetivo

Paso 4 primario de este documento. En general los apuntes provienen

Paso 5 Paso 3 de los documentos que el Laboratorio Nacional de Ingeniería

Robótica de la Universidad Carnegie Mellon ha proporcionado

C B en los cursos de robótica que imparte.

Pseudocódigo
El pseudocódigo es una técnica para expresar la serie de pasos

o acciones que integran un algoritmo, y ocupa diversas estruc-


Edificio
Paso 6 por vigilar Paso 2 turas de control, selección y repetitivas usando expresiones ver-

bales informales sin depender de un lenguaje de programación

en particular. La importancia radica en expresar rápidamente el

comportamiento o resultado de cada uno de los pasos o accio-

nes del algoritmo a través del uso de palabras comunes; en vez

D A de invertir gran cantidad de tiempo en aprender y codificar con

una correcta sintaxis de cierto lenguaje de programación.

Paso 7 Paso 9 En el ámbito de la programación, el pseudocódigo resulta

Paso 8 Punto ser una técnica para delimitar un programa antes de codificarlo

de partida usando el conjunto de palabras reservadas y sintaxis propia. Esto

43
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
representa un beneficio durante la etapa de análisis y INVESTIGAR Figura 2.
1. Identificar problema
planeación. Otro beneficio adicional del pseudocódigo 2. Investigarsoluciones actuales PROCESO
3. Lluvia de ideas
5. Desarrollar prototipos
es la facilidad que ofrece para poder traducirlo a dife- DE INGENIERÍA.
Idea seleccionada
rentes lenguajes de programación; en otras palabras,

es posible señalar que el pseudocódigo se enfoca en


PLANEAR
capturar la lógica de una solución propuesta. 1. Definir estrategia
2. Identificar especificaciones
En los laboratorios anteriores se ha mencionado 3. Desarrollar calendario
Emitir una propuesta
que los diagramas de flujo suelen ser representaciones

visuales de los pasos o acciones de un programa; en

ese sentido, estará integrado por diversos símbolos PROTOTIPO


1. Construir prototipo funcional
2. Revisar diseño
o figuras, bloques y flechas de dirección para indicar
Revisar según comentarios
la secuencia de cada paso o acción. Por otra parte,

en ocasiones de un mismo bloque es posible derivar


PRUEBAS PROBAR
diversas flechas de dirección para representar cada una 1. Ciclo de pruebas REVISAR
PROBAR
de las rutas o trayectorias por seguir. Demostrar prototipo final

• Inicio y fin. Estos términos son representados

mediante símbolos de figuras geométricas, de COMERCIALIZAR


1. Documentar y publicar resultados
manera particular un rectángulo redondeado, 2. Mercadotecnia
3. Solicitar retroalimentación del cliente
usualmente contienen las palabras “inicio o
Innovar solución existente
fin”; sin embargo, no es limitativo para incluir

44
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
otras palabras como por ejemplo “potencia del robot SOLUCIÓN DEL DESAFÍO
apagada” o “detener todos los motores”. Ahora se te proporcionan las tres herramientas que permiten

• Cada tarea o acción es simbolizada a través de resolver el problema.

figuras de rectángulos y funcionan como comandos 1. Solución del problema con una serie de pasos (Tabla

elementales. 1) explicados en idioma español, como una receta de

• Decisiones. Los bloques de decisiones son represen- cocina.

tados por el símbolo o figura de rombo; evaluando 2. Solución con pseudocódigo (Tabla 3), expresado también

un valor mediante el uso de expresiones booleanas en idioma español concreto.

que ayudarán a tomar la decisión de elegir el camino 3. Solución con algoritmo usando la notación de diagra-

correcto de acuerdo las flechas de dirección. mas de flujo (Figura 3).

Proceso de ingeniería Asegúrate de estudiar completamente cada solución,

Con base en lo manifestado en el diccionario de la Real Academia ya que el siguiente paso es que generes el programa que

de Lengua Española, el término proceso se define como “con- resuelva el desafío. Relaciona estos conceptos con el proceso

junto de las fases sucesivas de un fenómeno natural o de una de ingeniería que se te ha presentado en la sección “Conceptos

operación artificial”. Observa la figura 2, que te describe todos básicos”.

los pasos que debes llevar a cabo para proyectos de ingeniería. A continuación, las tres herramientas ya mencionadas.

45
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1. Tabla 2.

SOLUCIÓN DEL PROBLEMA COMO UNA RECETA DE COCINA SOLUCIÓN DEL PROBLEMA COMO UNA RECETA DE COCINA

(sigue en la página siguiente) (finaliza)

1. Mide el extremo más largo del rectángulo. cuánto tiempo necesita el robot para alcanzar
Anota cuánto mide: _____________ la siguiente esquina del edificio. Haz los ajustes
2. Haz que el robot viaje del punto A al B a ½ necesarios a su programa. Anota tu primera res-
potencia. Usa el cronómetro del celular para puesta: _____________
determinar el tiempo que le toma al robot. Apaga 5. Ahora, haz que el robot gire a la izquierda
el motor al llegar al extremo contrario del marco. (aplica ¼ de potencia del motor del robot). Usa
Considera que al llegar al extremo contrario del los datos que obtuviste en el punto 3.
punto de partida el robot deberá dar vuelta a la 6. Haz que el robot viaje del punto C al D a ½
izquierda, por lo que debes darle suficiente espa- potencia. Usa los datos que obtuviste en el paso 2.
cio para que el dispositivo no choque con el edifi- 7. Ahora, que el robot gire a la izquierda (aplique
cio. Describe tus acciones: _____________ ¼ potencia al motor del robot). Usa los datos del
3. Ahora, haz que el robot gire a la izquierda (aplica punto 3.
¼ de potencia del motor del robot). ¿Cuánto 8. Haz que el robot viaje del punto D al A a ½
tiempo debes aplicar fuerza a las ruedas para dar potencia. Usa los datos obtenidos en el paso 4.
un giro de 90°? Anota tu respuesta: _____________. 9. Ahora, haz que el robot gire a la izquierda (apli-
4. Haga que el robot viaje del punto B al C a que ¼ potencia del motor del robot). Use los
½ potencia. Usa los conceptos de matemáti- datos que obtuviste en el punto 3.
cas que ya conoces (regla de tres) y determina

46
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 3. Figura 3.

PSEUDOCÓDIGO PARA EL DESAFÍO. ALGORITMO PARA EL DESAFÍO.

8 // Desafío Robot Velador


9 // Mueve el robot intentando seguir un rectángulo
INICIO Avanzar
10 // por lo que el tiempo de recorrido puede variar x segundos
11 // En cada esquina gira 90 grados
12 task main()
13 {
Avanzar Vuelta
14 // Movimiento del punto A al punto B x segundos a la izquierda
15 avanzar el robot x segundos
16 // Giro en la esquina
17 girar a la Izquierda
Vuelta Avanzar
18 // Movimiento del punto B al punto C
a la izquierda x segundos
19 avanzar el robot x segundos
20 // Giro en la izquierda
21 girar a la Izquierda
22 // Movimiento del punto C al punto D Avanzar Vuelta
x segundos a la izquierda
23 avanzar el robot x segundos
24 // Giro en la esquina
25 girar a la izquierda
26 // Movimiento del punto D al punto A Vuelta
FIN
a la izquierda
27 avanzar el robot x segundos
28 // Giro en la esquina
29 girar a la Izquierda
30 }
31

47
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anota en el recuadro el programa resultante con el que TRABAJO ADICIONAL
diste solución a los pasos de este desafío. Los desafíos que se encuentran en esta sección deben ser resueltos

por el estudiante, es necesario crear un algoritmo y el programa

que da solución a cada desafío. La finalidad de este ejercicio es la

de ir construyendo programas cada vez más complejos y verificar

el avance que el estudiante tiene.

El Ejército de los Estados Unidos posee un edificio conocido

como el “Pentágono” ahí se concentra el poder militar de dicho

país. Si ACME Robotics tuviera que vigilar dicho complejo con el

mismo robot, ¿qué cambios tendrías que hacer a tu programa

para que el robot dé una vuelta completa al edificio? Construye

tu algoritmo y el programa en ROBOTC® para hacer el recorrido.

Dibuja en un cartón un pentágono con lados de 40 centímetros

para probar el recorrido del robot, construye paredes de 10 cm

de altura para que el pentágono sea tridimensional. Observa la

figura 4, para que tengas una idea del recorrido del robot. Aunque

no se muestran las vueltas en la figura, considera que el robot

debe girar en las aristas.

48
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 4. 1) Un proyecto adicional ha sido asignado a ACME Robotics,

RECORRIDO DEL ROBOT el edificio ahora tiene la forma de una cruz.

PARA EL EDIFICIO DEL “PENTÁGONO”.

Figura 5.

RECORRIDO DEL ROBOT

PARA EL EDIFICIO CON FORMA DE CRUZ.

49
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
¿Qué cambios tendrías que hacer a tu programa para reco-

rrer el perímetro completo del edificio? Construye tu algoritmo

y el programa en ROBOTC® para hacer el recorrido. Recorta una

cruz con lados de 30 centímetros en un cartón para probar el

recorrido del robot, construye paredes de 10 cm de altura para

que el modelo sea tridimensional. Observa la figura 5, para que

tengas una idea del recorrido del robot. Aunque no se muestran

las vueltas en la figura, considera que el robot debe girar al dar

vuelta en las aristas.

Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el

sitio web: [Link]

Interface/[Link]

Carnegie Mellon University (2020). ROBOTC for TETRIX & LEGO® [Link]://[Link]/

roboticsacademy/roboticscurriculum/Lego%20Curriculum/ROBOTC-Tetrix_Mindstorms.html

50
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 4

TRES VUELTAS COMPLETAS


AL EDIFICIO
OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:
→ Desarrollar el pensamiento lógico necesario para
diseñar un algoritmo usando CICLOS®.

→ Construir un programa de computadora apropiado con ROBOTC®


para implementar dicho algoritmo en un robot LEGO®.

→ Probar que el robot ejecuta las instrucciones


adecuadamente para que el robot ejecute una vuelta
completa a un edificio de tipo rectangular.

51
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

El desafío por resolver en este cuarto laboratorio consiste en ROBOTC® es un poderoso lenguaje de programación basado

diseñar y codificar un algoritmo que permita al robot efectuar en C con un ambiente Windows para escribir y depurar programas,

una vuelta completa a la representación de un edificio de tipo y es el único que ofrece un depurador exhaustivo en tiempo real.

rectangular, que haremos con un bloque de madera; el estu- Es una solución multiplataforma que permite a los estudiantes

diante debe aplicar los principios teóricos de las estructuras aprender el tipo de programación basada en C usada en educa-

repetitivas e identificar los valores de potencia idóneos para ción avanzada y aplicaciones profesionales.

ser asignados a los motores, que permitan realizar los giros con Los comandos para el robot los escribes primero en la

precisión en cada esquina del edificio. pantalla, después los procesas en el compilador de ROBOTC®, que

De igual manera que en los laboratorios anteriores, el estu- es un archivo de lenguaje de máquinas que el robot comprende.

diante debe seleccionar el conjunto de comandos necesarios para Finalmente, los cargas en el robot para que pueda ejecutarlos.

codificar el algoritmo, posteriormente debe efectuar el proceso El robot que estaremos usando a lo largo de este curso

de compilación para traducir los comandos al lenguaje-máquina; tiene una configuración de dos ruedas, cada una con su propio

y finalmente, realizar las pruebas evaluando el comportamiento motor, que serán los actuadores, y una rueda de arrastre omni-

del robot al ejecutar el programa direccional; en el tema de sensores, para percibir el ambiente

52
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
que lo rodea, el robot dispone de un sensor táctil, ultrasónico, Figura 1.

y de otro de luz/color. RECORRIDO PARA SOLUCIONAR EL PROBLEMA

Para este desafío necesitas los siguientes materiales: Paso 4


• Marco de madera (para simular el edificio). Paso 5 Paso 3
• Lenguaje de programación ROBOTC®.

• Robot Lego® armado.


C B

• Editor de diagramas DIA. Liga de descarga: [Link]

[Link]/

DESAFÍO POR RESOLVER


Edificio
La compañía ACME Robotics ha ganado un proyecto para dise- Paso 6 Paso 2
por vigilar
ñar un robot programable que patrulle los alrededores de un

edificio rectangular que almacena autos, por lo que ACME te

ha contratado para que desarrolles el programa y que ese

robot prototipo pueda de forma autónoma “vigilar” los alre-

dedores del edificio. D A


La figura 1 explica paso a paso la solución del problema.
Paso 7 Paso 9
Otro equipo de trabajo ya ha desarrollado el prototipo
Paso 8 Punto
mecánico-electrónico del robot y está disponible para tu uso.
de partida

53
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
El programa que debes construir en ROBOTC® debe contener puede ser un problema cuando necesitas usar la misma varia-

las instrucciones para dar tres vueltas completas al edificio. Como ble en muchos lugares diferentes, por ejemplo, una función

se trata de un prototipo no es necesario que ejecute una rutina que creaste, y task main.

de vigilancia constante. El proceso de ingeniería implica que vayas

construyendo la solución paso a paso, así que la rutina de vigi- Alcance


lancia constante será desarrollada en laboratorios posteriores. Las variables existen únicamente entre ciertos límites, por

Es necesario que imprimas este documento ya que debes ejemplo, sólo dentro de las funciones en las que fueron decla-

responder las preguntas de la sección “Solución del desafío”. radas. El “alcance” es la “definición” de estos límites: que tan

ampliamente aplicable (o visible) es un valor o variable. El

CONCEPTOS BÁSICOS alcance existe para prevenir los conflictos entre las funciones

Aquí vas a encontrar material de apoyo para entender el con variables de nombres parecidos, y más importante, para

objetivo primario de este documento. En general los con- evitar que las variables de diferentes funciones intervengan

ceptos básicos provienen de los documentos que el Labo- accidentalmente unas con las otras, o incluso con ellas mismas

ratorio Nacional de Ingeniería Robótica de la Universidad si la misma función es ejecutada más de una vez.

Carnegie Mellon ha proporcionado en los cursos de robótica En general, la regla es que una variable puede ser usada

que imparte. solamente dentro de la tarea o función en la que es declarada,

incluyendo la tarea principal (task main). Si tratas de usar una

Variables globales variable en una locación fuera de su alcance, ROBOTC® te dará

Cuando se crea una variable, ésta puede ser usada únicamente un error y declara que tal variable no existe, porque el programa

dentro de la función o tarea en la que fue declarada. Esto en ese punto no es capaz de “verla”.

54
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Declarar una variable global. La variable
global es declarada fuera de cualquier tarea o
2 |int variable;
función, permitiendo que todas las “vean”.
3 void cambiar valor(){
4 variable = 2000;
La variable es visible dentro de las funciones.
La variable global puede ser usada y modificada 5 {

dentro de las funciones 6


7 task main(){
La variable es visible dentro de la tarea prin- 8 variable = 1000;
cipal. La variable global puede ser usada y 9 cambiarValor();
modificada dentro de las tareas, por ejemplo,
10 wait1msec(variable);
task main.
11 }

55
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Ciclo while
Un bucle while es una estructura dentro de ROBOTC® la cual permite que una porción de código se ejecute una y otra vez mientras

una condición permanezca verdadera.

Condición
1
2 while(condicion)
Ya sea “true” o “false” (veáse referencia > lógica
3 {
booleana).
4 // Comandos que se ejecutan
5 // repetidamente Comandos repetidos
6 }
7 Los comandos colocados aquí se ejecutarán una y
otra vez mientras la (condición) sea verdad cuando
el programa valida al principio cada paso por el
bucle.

56
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1.
SOLUCIÓN DEL DESAFÍO SOLUCIÓN PARECIDA A UNA RECETA DE COCINA
Ahora se te proporcionan tres herramientas que permiten (continúa en la pagina siguiente)

resolver el problema.
1. Inicio del programa.
1) Solución del problema con una serie de pasos (Tabla 1)
2. Numero de vuelta es igual a 0.
explicados en idioma español, como en una receta de cocina.
3. Medir el lado más largo del rectángulo. Anótalo:
2) Solución con pseudocódigo (Tabla 2), expresado también ______________________________________________
en idioma español, concreto. 4. Si ya va en la cuarta vuelta ir al paso 15.

3) Solución con algoritmo usando la notación de diagramas 5. Haz que el robot viaje del punto A al B a ½
potencia. Usa el cronómetro del celular y deter-
de flujo (Figura 2).
mina cuánto tiempo le toma al robot. Apaga el
Asegúrate de estudiar completamente cada solución, ya motor al llegar al lado contrario del marco. Consi-
que en el siguiente paso generarás el programa que resuelva el dere que al llegar ahí, desde el punto de partida, el

desafío. Relaciona estos conceptos con el proceso de ingeniería robot deberá dar vuelta a la izquierda, por lo que
debe haber suficiente espacio para que el disposi-
que se te ha presentado en la sección “Conceptos básicos” del
tivo no choque con el edificio. Anota tus observa-
Laboratorio 3 (véase página 43).
ciones y acciones: _____________________________
A continuación, las tres herramientas ya mencionadas. _____.
6. Ahora haz que el robot gire a la izquierda (aplica
¼ de potencia del motor). ¿Cuánto tiempo debe
aplicar fuerza a las ruedas para que dé un giro de
90°? Anota tu respuesta: ______________________.

57
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1.
SOLUCIÓN PARECIDA A UNA RECETA DE COCINA
(finaliza)

7. Haz que el robot viaje del punto B al C a ½


potencia. Usando los conceptos de matemáti-
cas que ya conocese (regla de tres) determina
cuánto tiempo necesitará el robot para alcanzar la
siguiente esquina del edificio. Haz los ajustes nece-
sarios a su programa. Anota tu primera respuesta:
______________________________.
8. Haz que el robot gire a la izquierda (aplica ¼ de
potencia del motor).
9. Haz que el robot viaje del punto C al D a ½
potencia.
10. Ahora haz que gire a la izquierda (aplica ¼ de
potencia del motor).
11. Haz que el robot viaje del punto D al A a ½
potencia.
12. Ahora que gire el robot a la izquierda (aplica ¼
de potencia al motor).
13. Número de vuelta = Número de vuelta + 1.
14. Vé al paso 4.
15. Fin del programa.

58
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 2.
// Desafío Robot Velador
PSEUDOCÓDIGO
// El robot da 3 vueltas alrededor del edificio rectangular
PARA EL DESAFÍO. // por lo que el tiempo de recorrido en cada recta puede variar
// En cada esquina gira 90 grados
task main()
{
it NoVuelta = 0;
// Se darán 3 vueltas
While(NoVuelta > 4)
{
// Movimiento del punto A al punto B
avanzar el robot x segundos
// Giro en la esquina
girar a la Izquierda
// Movimiento del punto B al punto C
avanzar el robot x segundos
// Giro en la esquina
girar a la Izquierda
// Movimiento del punto C al punto D
avanzar el robot x segundos
// Giro en la esquina
girar a la Izquierda
// Movimiento del punto D al punto A
avanzar el robot x segundos
// Giro en la esquina
girar a la Izquierda
//Contador de vueltas
NoVuelta = NoVuelta + 1

59
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
INICIO Figura 2. Anota en el recuadro el programa resultante con el que

ALGORITMO PARA EL DESAFÍO. diste solución a cada paso de este desafío.

Avanzar
x segundos

Sí ¿Número de
vueltas >3? Avanzar
x segundos

No
Vuelta a
Avanzar la izquierda
x segundos

Avanzar
Vuelta a x segundos
la izquierda

Vuelta a
Avanzar la izquierda
x segundos

Número de vuelta =
Vuelta a Número de vuelta +
la izquierda

FIN

60
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
TRABAJO ADICIONAL Figura 3.

Los desafíos de esta sección debe resolverlos el estudiante. Es RECORRIDO DEL ROBOT

necesario crear un algoritmo y que el programa dé solución PARA EL EDIFICIO DEL “PENTÁGONO”.

a cada desafío. La finalidad de este ejercicio es que construya

programas cada vez más complejos y verificar sus avances.

1. El Ejército de los Estados Unidos posee un edificio

conocido como el “Pentágono”; ahí se concentra el

poder militar de dicho país. Si ACME Robotics tuviera

que vigilar dicho complejo con el mismo robot, ¿qué

cambios tendrías que hacer a su programa para que dé

tres vueltas completas al edificio? Construye tu algo-

ritmo y el programa en ROBOTC® para hacer el reco-

rrido. Usa la maqueta desarrollada en el Laboratorio 3

para probar que el robot está funcionando adecuada-

mente. Observa la figura 5, para que tengas idea del

recorrido del robot, y aunque no muestra las vueltas

en la figura, tú considera que el robot girará al dar


Punto
vuelta en las aristas. de partida
2. Un proyecto adicional ha sido asignado a ACME Robo-

tics. El edificio ahora tiene la forma de una cruz. ¿Qué

61
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
cambios tendrías que hacer a su programa para que dé Figura 4.

tres vueltas completas al edificio? Construye tu algo- RECORRIDO DEL ROBOT

ritmo y el programa en ROBOTC® para hacer el reco- PARA EL EDIFICIO CON FORMA DE CRUZ.

rrido. Usa la maqueta desarrollada en el Laboratorio

3 para probar que el robot funciona adecuadamente.

Observa la figura 6, para que tengas idea del recorrido

del robot, y aunque no muestra las vueltas en la figura

considera que el robot debe girar al dar vuelta en las

aristas.

30 cm

Punto
de partida

62
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el

sitio web: [Link]

Interface/[Link]

Cairó, O (2005). Metodología de la programación. Algoritmos, diagramas de flujo y programas. Alfao-

mega. 3ª. edición.

Joyanes, L. (2008). Fundamentos de Programación. Algoritmos y estructura de datos, Mc Graw Hill.

63
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 5

TRES VUELTAS COMPLETAS


AL EDIFICIO, CON OBSTÁCULOS
Y ARRANQUE MANUAL
OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:
→ Desarrollar el pensamiento lógico necesario
para diseñar un algoritmo usando SENSORES.

→ Construir un programa de computadora apropiado con ROBOTC®


para implementar dicho algoritmo en un robot Lego.

→ Probar que el robot ejecuta las instrucciones adecuadamente


y que da una vuelta completa a un edificio de tipo rectangular.

64
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

El desafío que corresponde a este quinto laboratorio de prác- decisiones que le permitan al robot evadir el obstáculo a través

ticas, resulta ser una continuación al anterior; considerando de la implementación de estructuras de decisión simple.

como principal reto la evasión de obstáculos por parte del ROBOTC® es un poderoso lenguaje de programación basado

robot durante el recorrido de vigilancia que realiza. Por lo ante- en C con un ambiente Windows para escribir y depurar programas,

rior, el estudiante deberá incorporar a la estructura del robot, y es el único que ofrece un depurador exhaustivo en tiempo real.

un sensor de contacto que le permita identificar obstáculos Es una solución multiplataforma que permite que los estudiantes

localizados en la parte frontal en relación a la trayectoria que aprendan el tipo de programación basada en C usada en educa-

debe seguir. ción avanzada y aplicaciones profesionales.

En virtud de lo anterior, el estudiante debe seleccionar la El robot que estaremos usando a lo largo de este curso

lista de comandos que ofrece ROBOTC para la manipulación de tiene una configuración de dos ruedas, cada una con su propio

sensores de contactos, los cuales emitirán valores que deben motor, que serán los actuadores, y una rueda de arrastre omni-

ser evaluados en tiempo de ejecución, y con base a ellos, tomar direccional; en el tema de sensores, para percibir el ambiente

65
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
que lo rodea, el robot dispone de sensor táctil, ultrasónico, y olvidado los “pallets” en donde se transportaban dichos equi-

de luz/color. pos (se desconoce la ubicación exacta de los obstáculos). Sabe-

Para este desafío necesitas los siguientes materiales: mos que no hay obstáculo cuando el robot está girando, pero

• Marco de madera (para simular el edificio). puede estar en cualquier otro lugar. El robot debe estar prepa-

• Lenguaje de programación ROBOTC®. rado para evadir dicho obstáculo.

• Robot LEGO® armado. También ha surgido un nuevo requerimiento, el robot debe

• Editor de diagramas DIA. Liga de descarga: [Link] estar “encendido” al inicio de la jornada, pero debe empezar a

[Link]/ moverse hasta que un interruptor del robot sea presionado. La

• Cinta aislante de color negro. figura 1, explica paso a paso el problema, las líneas de color verde

muestran en dónde se deben ubicar las marcas en las esquinas del

DESAFÍO POR RESOLVER edificio. Otro equipo de trabajo ya ha desarrollado el prototipo

La compañía ACME Robotics ha ganado un proyecto para dise- mecánico-electrónico del robot y está disponible para su uso.

ñar un robot programable que patrulle los alrededores de un El programa que debes construir en ROBOTC® debe contener

edificio rectangular que almacena autos, por lo que ACME te ha las instrucciones para que el robot inicie el recorrido hasta que

contratado para desarrollar el programa que permita que ese el usuario presione un interruptor, dé tres vueltas completas al

robot prototipo pueda, de forma autónoma, “vigilar” los alre- edificio, eludiendo obstáculos. Puesto que se trata de un proto-

dedores del edificio, desde las 20:00 horas de un día hasta las tipo no es necesario que ejecute una rutina de vigilancia cons-

6:00 horas del siguiente. Para este desafío hemos agregado “mar- tante. El proceso de ingeniería implica que vayas construyendo

cas” en las esquinas del edificio. También “sabemos” que algunos la solución paso a paso, así que la rutina de vigilancia constante

trabajadores, que instalaron equipos de aire acondicionado, han será desarrollada en laboratorios posteriores.

66
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Es necesario que imprimas este documento ya que se deben Figura 1.

responder las preguntas que se te hacen en la sección “Solución RECORRIDO DEL ROBOT VELADOR.

del desafío”.

CONCEPTOS BÁSICOS Paso 4


Paso 5 Paso 3
Aquí vas a encontrar material de apoyo para entender el obje-

tivo primario de este documento. En general estos conceptos C B


provienen de los documentos que el Laboratorio Nacional de

Ingeniería Robótica de la Universidad Carnegie Mellon ha pro-

porcionado en los cursos de robótica que imparte.

Edificio
Paso 6 Paso 2
por vigilar
Percibir, planear y actuar (PPA)
Percibir, planear y actuar es el proceso más importante de los

robots abreviado como PPA. Este concepto tiene la finalidad Pallet

de resaltar las tres capacidades difíciles o críticas que deben


D A
ser consideras para que un robot pueda operar con eficacia y

eficiencia: Paso 7 Paso 9


Paso 8
Punto
de partida

67
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
• Percibe. En esta actividad el robot requiere de la habili-

dad para percibir objetos a su alrededor, es decir, percibir

la existencia de obstáculos o indicadores de trayectoria;

esto nos lleva a plantear las siguientes preguntas: ¿qué

información necesita conocer el robot en relación a su

entorno? y ¿qué estrategia se debe implementar para

recolectar la información?

• Planea. Es necesario generar una estrategia para ser

implementada en el robot, y que le permita responder

apropiadamente de acuerdo a los sucesos del entorno

en donde se encuentre. Por lo anterior, se generan las

siguientes preguntas: ¿tienes alguna estrategia?, ¿el

robot determina la respuesta idónea con base a esa

esa estrategia?

• Actúa. En esta última actividad el robot debe reali-

zar acciones establecidas dentro el plan o estrategia;

y surge el siguiente cuestionamiento: ¿el robot se ha

construido para que haga lo que necesita hacer de

acuerdo al algoritmo diseñado?

68
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
¿Dónde están S, P y A en este programa? Tabla 1.

CÓDIGO PERCIBIR, PLANEAR Y ACTUAR.


1 task main(){
2 while (true) {
3 if(SensorValue(Toque) = = 0){
4 // Mientras no se enciende el sensor
5 motor[Izquierda] = 33;
6 motor[Derecha] = 33;
7 }
8 else{
9 // Cuando choca, el sensor se activa, se activa reversa
10 motor[Izquierda] = -33;
11 motor[Derecha] = -33;
12 wait1msec(1500);
13 // Gira a la izquierda, el sensor se desactiva
14 motor[Izquierda] = -33; motor[Derecha] = 33;
15 }
16 }
17 } /* Fin del amin */
Percibe. El robot usa el sensor de contacto para descubrir

o identificar que ha topado con algún objeto.

Planea. La estrategia para el robot es ir hacia delante, a

menos que haya algo en su camino, y lo detectará usando el

sensor de contacto. Si el sensor de contacto no es presionado, los

69
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
motores marcharán hacia delante; si ese sensor es presionado, Enunciados if-else
el robot se mueve en reversa y luego girará para alejarse del Un enunciado “if-else” es una manera de permitirle a tu

obstáculo. Esto está capturado dentro del programa que ejecuta computadora que tome una decisión. Con este comando el

el robot, al tiempo que lee los datos del sensor y emplea los programa checará la (condición) y después ejecutará una

comandos de motor apropiados. de las dos partes del código, dependiendo si la condición es

Actúa. El robot actúa moviendo sus motores en respuesta true o false.

de los comandos dados, los motores hacen combinaciones para Abajo está el pseudocódigo que da una idea general de un

producir los movimientos hacia delante y giros apropiados. enunciado IF-ELSE

(condición) ya sea VERDADERA o FALSA


1 if(condicion){
(véase Referencia > lógica booleana).
2 // Si la condición es VERDADERA
3 //poner los comandos a ejecutar Comandos (true).
4 }
5 else{ Los comandos que se encuentran aquí
6 // Si la condición es FALSA serán ejecutados si la condición es
7 // poner los comandos a ejecutar verdadera.
8 }
Comandos (false).
9

Los comandos que se encuentran aquí


serán ejecutados si la condición es
falsa.

70
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Abajo, un ejemplo de programa que contiene un enunciado IF–ELSE

1 task main(){ (Condición) True si el sensor lee más de


2 while (true) { 25. False si es lo contrario
3 if(SensorValue(Sonar) > 25){
4 motor[Izquierda] = 33; Comandos (True). Estos comandos se ejecutan
5 motor[Derecha] = 33; si la condición es verdadera. Se activan
6 } los motores.
7 else{
8 motor[Izquierda] = 0; Comandos (False). Estos comandos se ejecu-
9 motor[Derecha] = 0; tan si la condición es falsa. Se apagan los
10 } motores.
11 } /*Fin del while */
12 } /* Fin del main */

Este enunciado if-else indica al robot que encienda Sensores


ambos motores a toda potencia si el objeto más cercano al Los sensores suelen ser uno de los componentes más impor-

sensor ultrasónico está a más de 25 pulgadas de distancia. tantes de cualquier máquina a la que se considere o denomine

Si el sensor ultrasónico detecta un objeto a menos de 25 robot; los cuales le proporcionan información relacionada al
pulgadas, entonces la parte “else” del código será ejecutada ambiente en el cual interactua el procesador central del robot.

y el robot dejará de moverse. El bucle while (true), que está Estos componentes son una extensión del robot y en ocasiones

más afuera, hace que el enunciado se ejecute una y otra vez simulan los sentidos del cuerpo humano, y resultan de vital impor-

para siempre. tancia para que el robot decida la siguiente acción a ejecutar con

71
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
base a la información emitida por los sensores. En el

kit LEGO EV3 Existen diferente sensores, a continua-

ción, se describen algunos de ellos.

Sensor ultrasónico Figura 2.

El sensor ultrasónico ofrece exactamente esta capa- LOS SENSORES INSTALADOS

cidad. Usando el mismo principio físico de un mur- EN EL ROBOT LEGO.

ciélago o del sonar de un submarino, el sensor

ultrasónico mide las distancias usando sonido. Manda

una señal de sonido, después espera a escuchar el eco

del sonido sobre un objeto sólido alrededor. Al medir

en cuánto tiempo el sonido rebota, el sensor puede

calcular la distancia que debe ser recorrida, y por lo

tanto, qué tan lejos estaba el objeto cuando fue refle-

jado. El programa de la página previa muestra el uso

del sensor ultrasónico en un programa. Mientras que

la figura 2 identifica cada sensor instalado en el robot

para que el programador los conozca.

Este sensor digital genera ondas de sonido de alta

frecuencia y lee el tiempo en que regresa el eco para

72
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
detectar y medir la distancia de objetos, de la misma manera en • Retorna un valor de verdadero o true al identificar

que lo hacen los murciélagos. Es capaz de enviar ondas de sonido otro sonido ultrasónico.

individuales lo que permite que funcione como un sonar, también

puede funcionar como un micrófono esperando un sonido para Sensor de tacto


iniciar la ejecución de un programa. El sensor analógico de contacto que posee el Robot LEGO

Con la ayuda del sensor ultrasónico, los estudiantes tienen Mindstorms EV3, resulta ser un elemento simple, pero al mismo

los elementos necesarios para diseñar un modelo de simula- tiempo excepcional para detectar las acciones de pulsar o sol-

ción de un sistema de monitorización de tráfico, el cual permite tar un botón frontal; así también, proporciona información

calcular distancias entre autos. Así también, los estudiantes acerca del número de presiones simples y múltiples que ha

descubrirán el impacto significativo que genera el uso de este detectado. Con este sensor, el robot adquiere una nueva fun-

tipo de sensores aplicados a la vida cotidiana. cionalidad que le permitirán a los estudiantes construir mode-

Aspectos por considerar: los de robots con capacidad de dar solución a desafíos de

• Precisión de +/- 1 cm. laberintos o crear interfaces de interacción con diversos dispo-

• Rango de medida de distancia (1 - 250 cm). sitivos tales como: instrumentos musicales, teclados de com-

• Iluminación frontal es constante mientras se realiza la putadoras, entre otros.

lectura (escucha).

73
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1 task main(){ Variable para la velocidad inicial de los
2 int velocidad = 50; motores.
3 while (true) {
4 if(SensorValue(Toque) = = 1){ Si el sensor está activo(presionado) se
5 velocidad = velocidad * -1; invierte la velociad del motor (reversa).
6 else
7 velocidad = 50; Cuando se deja de presionar el sensor, el
8 } /* Fin del IF */ motor regresa a velocidad normal (hacia
9 motor[Izquierda] = velocidad; adelante).
10 motor[Derecha] = velocidad;
11 } Los motores avanzan de acuerdo al valor
12 } /* Fin del main */ almacenado en la variable velocidad.

Sensor de luz probando con diferentes colores, y adquirir experiencia con una

Este sensor digital de color es capaz de distinguir hasta ocho tecnología que se utiliza ampliamente en industrias.

colores. Otra de sus funciones es ocupar el rol de sensor de luz, El sensor de luz tiene un rango de estados entre 0 y 100.

es decir, permite la identificación de diversas intensidades de Mientras más bajo sea el número, el color que “ve” es más oscuro;

la misma. Por lo anterior, existe la posibilidad que los estudian- mientras más alto el número, el color que “ve” es más claro.

tes puedan incorporar este tipo de sensor al robot, con la fina- Por esto debe ser calibrado para la cantidad de luz en donde

lidad de construir modelos de clasificación de objetos con base esté operando, usando como referencia el color que se quiere

al color o robots seguidores de líneas. Así también, usar estos detectar.

sensores ayuda al proceso de aprendizaje, permitiendo al estu- • Capaz de detectar ocho colores.

diante experimentar con el reflejo derivado de la captura de luz • Frecuencia de muestreo de 1 kHz

74
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
2 task main(){ Si la lectura del sensor de luz es
3 while (true) { inferior a 45,lo que corresponde a un
4 while(SensorValue(SensorLuz) < 45){ color que tiende al negro, el robot
5 motor[Izquierda] = 65; da vueltas hacia la derecha.
6 motor[Derecha] = 0;
7 } Si la lectura del sensor de luz es
8 while(SensorValue(SensorLuz) > = 45){ superior a 45, lo que corresponde a
9 motor[Izquierda] = 0; un color que tiende al blanco, el
10 motor[Derecha] = 65; robot da vuelta hacia la izquierda.
11 } /* Fin del IF */
12 }
13 } /* Fin del main */

75
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
SOLUCIÓN DEL DESAFÍO B) Solución con pseudocódigo (Tabla 3), expresado también

Con la cinta aislante agrega las marcas en las esquinas del en idioma español concreto.

edificio, tal y como puedes verlo en el diagrama de la figura C) Solución con algoritmo usando la notación de diagramas

1. Ahora el robot no se moverá con tiempo, lo hará hasta que de flujo (Figura 3).

el robot detecte el cambio de color del fondo blanco al color Asegúrate de estudiar completamente cada solución, ya el

negro de la cinta aislante. Incluso las vueltas pueden ser contro- siguiente paso es que generes un programa que resuelva el

ladas hasta que el sensor detecte el cambio de color. desafío y relaciones estos conceptos con el proceso de inge-

Ahora se te proporcionan tres herramientas que te permi- niería que se te ha presentado en la sección “Conceptos básicos“

tirán resolver el problema. del Laboratorio 3.

A) Solución del problema, como una receta de cocina (serie A continuación, las tres herramientas ya mencionadas.

de pasos, observa la tabla 2) explicada en idioma español.

76
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1. Inicio del programa
2. Leer el estado del interruptor Tabla 2.
3. Si el interruptor está apagado vaya al paso 2
SOLUCIÓN PARECIDA
4. Numero de vuelta es igual a 0
5. Si ya va en la cuarta vuelta ir al paso 64. A UNA RECETA DE COCINA.
6. -- Viaje del punto A al B.
(continúa en la pagina siguiente)
7. Ciclar mientras el sensor no “vea” color negro
8. Avanzar a media potencia
9. Si el robot se acerca a un obstáculo al menos a 10 cm
10. Girar a la derecha
11. Avanzar
12. Girar a la Izquierda
13. Avanzar
14. Girar a la Izquierda
15. Avanzar
16. Girar a la Derecha
17. Fin Si
18. Fin de Ciclo. Vaya al paso 7
19. Ahora gire el robot a la izquierda (aplique media potencia al motor del robot).
20. -- Viaje del punto B al C.
21. Ciclar mientras el sensor no vea color negro
22. Avanzar a media potencia
23. Si el robot se acerca a un obstáculo al menos a 10 cm
24. Girar a la derecha
25. Avanzar
26. Girar a la Izquierda
27. Avanzar
28. Girar a la Izquierda
29. Avanzar
30. Girar a la Derecha
31. Fin Si
32. Fin de Ciclo. Vaya al paso 21

77
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
33. Ahora gire el robot a la izquierda (aplique media potencia al motor del robot).
34. -- Viaje del punto C al D Tabla 2.
35. Ciclar mientras el sensor no vea color negro
SOLUCIÓN PARECIDA
36. Avanzar a media potencia
37. Si el robot se acerca a un obstáculo al menos a 10 cm A UNA RECETA DE COCINA.
38. Girar a la derecha
(finaliza)
39. Avanzar
40. Girar a la Izquierda
41. Avanzar
42. Girar a la Izquierda
43. Avanzar
44. Girar a la Derecha
45. Fin Si
46. Fin de Ciclo. Vaya al paso 35
47. Ahora gire el robot a la izquierda (aplique media potencia al motor del robot)
48. -- Viaje del punto D al A
49. Ciclar mientras el sensor no vea color negro
50. Avanzar a media potencia
51. Si el robot se acerca a un obstáculo al menos a 10 cm
52. Girar a la derecha
53. Avanzar
54. Girar a la Izquierda
55. Avanzar
56. Girar a la Izquierda
57. Avanzar
58. Girar a la Derecha
59. Fin Si
60. Fin de Ciclo. Vaya al paso 49
61. Ahora gire el robot a la izquierda (aplique media potencia al motor del robot).
62. Numero de vuelta = Numero de vuelta + 1.
63. Vaya al paso 5.
64. Fin del Programa.

78
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
19 // Desafío Robot Velador Tabla 3.
20 // El robot da 3 vueltas alrededora el edificio retangular
21 // por lo que el tiempo de recorrido en cada recta puede variar PSEUDOCÓDIGO
22 // En cada esquina 90 grados
23 task main ()(
PARA SOLUCIONAR EL DESAFÍO.
24 int NoVuelta = 0;
25 int valorInt = 0
26 // Evaluando el interruptor 65 // Giro en la esquina
27 while (valorInt = )( 66 GirarIzq(15);
28 if SensorValue( interruptor ) = 1{ 67 // Movimiento del punto C al punto D
29 valorInt = 1; 68 While (sensor no vea color Negro){
30 } 69 Avanzar(50);
31 } 70 // Librando al pallet
32 // Solo debe dar tres vueltas 71 IF SensorValue(sonarSensor) < 10 {
33 while(NoVuelta < 4) 72 GirarDerecha(15);
34 { 73 Avanzar();
35 // Movimiento del punto A al punto B 74 GirarIzq();
36 While (sensor no vea color Nero)( 75 Avanzar();
37 Avanzar(50); 76 GirarIzq();
38 // Librando el pallet 77 Avanzar(50);
39 IF SensorValue(sonarSensor) < 10 { 78 GirarDerecha();
40 GirarDerecha(15); 79 }
41 Avanzar(); 80 }
42 GirarIzq() 81 // Giro en la esquina
43 Avanzar(); 82 GirarIzq(15);
44 GirarDerecha(); 83 // Movimiento del punto D al punto A
45 Avanzar(50); 84 While (sensor no vea color Negro)(
46 GirarDerecha(); 85 Avanzar(50);
47 } 86 // Librando el pallet
48 } 87 IF SensorValue(sonarSensor) < 10 {
49 //Giro en la esquina 88 GirarDerecha(15);
50 GirarIzq(15); 89 Avanzar();
51 // Movimiento del punto B al punto C 90 Girar()
52 While (sensor no ea color Negro){ 91 Avanzar()
53 Avanzar(50); 92 GirarIzq();
54 // Librando el pallet 93 GirarDerecha();
55 IF SensorValue(sonarSensor) < 10 { 94 GirarDerecha();
56 GirarDerecha (15); 95 }
57 Avanzar(); 96 }
58 GirarIzq(); 97 // Giro en la esquina
59 Avanzar(50); 98 GirarIzq(15);
60 GirarIzq(); 99 // Contador de vueltas
61 Avanzar(50); 100 NoVuelta = NoVuelta + 1
62 GirarDerecha(); 101 }
63 } 102 }
64 } 103

79
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
INICIO

Figura 3.
Número
de vuelta = 0
DIAGRAMA DE FLUJO

PARA EL DESAFÍO.

¿Número
de vueltas
> 3?
Girar_Der(15) Girar_Der(15) Girar_Der(15) Girar_Der(15)
No


Sí Sí
¿Ve color

¿Ve color ¿Ve color ¿Ve color Girar_Der(15)
negro? negro? negro? negro?

No No No No

Avanzar(50) Girar_Der(15) Girar_Der(15) Girar_Der(15)

No No No No
¿Está a ¿Está a ¿Está a ¿Está a
10 cm de 10 cm de 10 cm de 10 cm de
obstáculos? obstáculos? obstáculos? obstáculos?

Sí Sí Sí Sí

Girar_Der(15) Girar_Der(15) Girar_Der(15) Girar_Der(15)

Avanzar(50) Avanzar(50) Avanzar(50) Avanzar(50)

Girar_Izq(15) Girar_Izq(15) Girar_Izq(15) Girar_Izq(15)

Avanzar(50) Avanzar(50) Avanzar(50) Avanzar(50)

Girar_Izq(15) Girar_Izq(15) Girar_Izq(15) Girar_Izq(15)

Avanzar(50) Avanzar(50) Avanzar(50) Avanzar(50)

Girar_Der(15) Girar_Der(15) Girar_Der(15) Girar_Der(15)

CO N T E N I D O FIN
GENERAL Viaje de A −> B Viaje de B −> C Viaje de C −> D Viaje de D −> A
Anota en el recuadro el programa resultante con el que TRABAJO ADICIONAL
diste solución a los pasos de este desafío. Desarrolla el programa para que el giro del robot se ejecute

al detectar que ha llegado a la esquina del edificio y hasta que

vuelva a detectar la segunda marca que se encuentra al doblar

la esquina. Integra ese programa al código desarrollado en

este laboratorio.

81
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta

en el sitio web: [Link]

ROBOTC_Interface/[Link]

Carnegie Mellon University (2020). ROBOTC for TETRIX & LEGO® [Link]://[Link]/

roboticsacademy/roboticscurriculum/Lego%20Curriculum/ROBOTC-Tetrix_Mindstorms.html

82
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 6

TRES VUELTAS COMPLETAS


AL EDIFICIO, CON OBSTÁCULOS
Y FUNCIONES
OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:
→ Desarrollar el pensamiento lógico necesario
para diseñar un algoritmo usando FUNCIONES.

→ Construir un programa de computadora apropiado con ROBOTC®


para implementar dicho algoritmo en un robot Lego.

→ Probar que el robot ejecuta las instrucciones adecuadamente y que da


tres vueltas completas al modelo de un edificio de forma rectangular.

83
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

Con la finalidad de que el estudiante aprenda el diseño e sencilla de entender y aplicar; esa comprensión le permitirá desa-

implementación de funciones, o procedimientos dentro del rrollar conceptos mucho más abstractos, como la Comunicación

programa, usando el lenguaje de programación robotc; en este entre procesos remotos, Programación orientada a objetos,

sexto laboratorio el desafío consiste en optimizar el código a Programación web, etcétera.

través del uso de funciones que ejecuten las tareas que permi- El robot que estaremos usando a lo largo de este curso

tan dar cumplimiento al objetivo principal. tiene una configuración de dos ruedas, cada una con su propio

Para dar solución al desafío planteado, es importante iden- motor, que serán los actuadores, y una rueda de arrastre omni-

tificar las tareas más relevantes y transformarlas en funciones; direccional; en el tema de sensores, para percibir el ambiente

posteriormente, el estudiante debe usar los comandos necesa- que lo rodea, el robot dispone de sensores táctil, ultrasónico, y

rios para mandar llamar a las funciones, reflexionando acerca de luz/color.

del ahorro y optimización del código. Finalmente, es necesario Para este desafío necesita los siguientes materiales:

realizar las pruebas de funcionamiento. • Marco de madera (para simular el edificio).

ROBOTC® y el robot nos permiten trasladar la programación • Lenguaje de programación ROBOTC®.

del mundo abstracto dentro de la computadora al mundo real, • Robot LEGO® armado.

en donde cada orden que se escribe puede ser percibida en la • Editor de diagramas DIA. Liga de descarga: [Link]

actividad que desarrolla el robot. El estudiante debe comprender [Link]/

la programación de computadoras como una actividad lógica • Cinta aislante de color negro.

84
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
DESAFÍO POR RESOLVER sea presionado. La figura 1 explica paso a paso el problema, las

La compañía ACME Robotics ha ganado un proyecto para dise- líneas de color verde muestran en dónde se deben ubicar las

ñar un robot programable que patrulle los alrededores de un marcas en las esquinas del edificio. Otro equipo de trabajo ya

edificio rectangular que almacena autos. ACME te ha contra- ha desarrollado el prototipo mecánico-electrónico del robot y

tado para desarrollar el programa para que ese robot proto- está disponible para su uso.

tipo pueda, de forma autónoma, “vigilar” los alrededores del El programa que debes construir en ROBOTC® contendrá

edificio desde las 20:00 horas de un día hasta las 6:00 horas del las instrucciones para que se mueva hasta que el usuario

siguiente. Para este desafío hemos agregado “marcas” en las presione un interruptor e inicie el recorrido, que será de tres

esquinas del edificio. También debemos suponer que algunos vueltas completas al edificio, evadiendo obstáculos. Puesto

trabajadores que instalaron equipos de aire acondicionado que se trata de un prototipo no es necesario que ejecute una

han olvidado los “pallets” en donde se transportaban dichos rutina de vigilancia constante. Se aplicará el concepto “crear

equipos (se desconoce la ubicación exacta del obstáculo). Una funciones” para completar el desafío. El proceso de ingeniería

condición con la que se cuenta es que el obstáculo no estor- implica que vayas construyendo la solución paso a paso, así que

bará los giros del robot, y que sí puede estorbarlo en cual- la rutina de vigilancia constante será desarrollada en laborato-

quier otro lugar. El robot debe estar preparado para evadir rios posteriores.

dicho obstáculo. También ha surgido un nuevo requerimiento, Es necesario que imprimas este documento ya que debes

el robot debe estar “encendido” al inicio de la jornada, pero responder las preguntas que se te hacen en la sección “Solución

debe empezar a moverse hasta que un interruptor del robot del desafío”

85
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 1.

RECORRIDO DEL ROBOT VELADOR.

Paso 4
Paso 5 Paso 3

C B

Paso 6 Edificio Paso 2


por vigilar

Pallet

D A

Paso 7 Paso 9

Paso 8
Punto
de partida

86
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
CONCEPTOS BÁSICOS Las funciones ofrecen diversas ventajas, por mencionar

Aquí encontrarás material de apoyo para entender el objetivo algunas:

primario de este documento. Cabe señalar que ciertas ideas • Ahorro de tiempo permitiendo que tareas comunes sean

plasmadas en este libro se relacionan con los apuntes en los escritas como funciones, y después sean ejecutadas juntas

manuales de usuario y guías de aprendizaje redactadas por el como un solo enunciado.

Laboratorio Nacional de Ingeniería Robótica de la Universidad • La separación de tareas o comportamientos en diferentes

Carnegie Mellon, que se encuentran para libre consulta de los funciones permite el código cumpla con los objetivos del

usuarios y utilizados como referencia en los diversos cursos de plan establecido.

robótica que imparten (Carnegie Mellon University 2020). • Diferentes tareas relacionadas pueden ser controladas con

una sola función.

Funciones • Las funciones puede recibir parámetros, los cuales permiten

Es importante comprender el concepto de función o procedi- controlar y modificar el resultado de una tarea.

miento, expresándose como el conjunto de enunciados o ins-

trucciones que son ejecutadas en una sola unidad, por ejemplo, Utilizando las funciones
task main(). Por otra parte, es necesario considerar que cada Para poder usar las funciones dentro de un programa codifi-

función representa una tarea o comportamiento específico; y cado con el lenguaje ROBOTC, deben ser declaradas, desarro-

en la mayoría de las ocasiones retornará un valor como resul- lladas y finalmente ejecutadas de forma independiente. Se

[Link] funciones ofrecen varias ventajas sobre codificación considera que una función es creada al momento de declararla,

básica paso por paso. y ejecutada al momento de mandar llamarla.

87
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1. Declara la función con el tipo de
dato de retorno void: En el código
de ejemplo se escribe el tipo de
22 void girarIzquierda90()[
dato, y después el nombre que tendrá
23 nMotorEncoder[Derecha] = 0;
la función. Se recomienda elegir un
24 while [nMotorEncoder[Derecha] < = 170)[
nombre adecuado para la función, mismo
25 motor[Izquierda] = -31;
que represente el comportamiento o la
26 motor[derecha] = 31;
tarea que ejecutará. Dentro de los
27 ]
[corchetes] de la función escribe
28 motor[Izquierda] = 0;
los comandos de la misma manera en
29 motor[derecha] = ;
que lo harías normalmente. Cuando la
30 ]
función es invocada, ejecutará las
31
líneas entre los corchetes en orden,
32 task main()[
tal y como task main lo hace con el
33 // Avanzar de punta A → B
código entre sus propios corchetes.
34 avanzarConGrados(60);
35 girarIzquierda90();
2. Invoca tu función: Acto posterior
a la declaración de una función, esta
es identificada o representada como
un nuevo comando en el lenguaje de
ROBOTC. Por tal motivo, para invocar
o llamar a la función, es necesario
escribir el nombre incluyendo parén-
tesis con sus respectivos valores
de los parámetros y finalizando por
punto y coma.

88
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1. Declara un parámetro. 12 void GirarIzq(int ptiempo)[
Se recomienda realizar la declaración 13 motor[motorB] = -50;
de un parámetro del mismo modo que 14 motor[motorC] = 50;
una variable, es decir, en primera 15 wait1msec[ptiempo];
instancia especificar el tipo 16 ]
de dato, después del nombre del 17
parámetro, todo ello dentro de los 18 task main()[
paréntesis de la función. 19 int NoVuelta = 0;
20 // Se darán 3 vueltas
21 While(NoVuelta < 4)
2. Uso de parámetros. 22 [
El valor del parámetro se comporta 23 Avanzar(50);
como un “guarda valores”. Cualquier 24 GirarIzq(15);
valor que se asigne al parámetro 25 Avanzar(50);
cuando la función es invocada
aparece aquí.

3. Invocar la función con parámetros. Funciones avanzadas


Cuando es invocada, se debe proveer Parámetros
un valor dentro de los paréntesis
Los parámetros son un medio para el paso de valores o datos a una función;
para que tome el lugar del parámetro
dentro de la función. son representados por variables locales, es decir, su ámbito de validez es

el cuerpo de la función, y permiten que una función se ejecute de distintas

maneras. Cabe señalar que los valores se asignan a cada uno de los paráme-

tros que posee la función, en el momento en que es invocada, respetando el

orden y el tipo de dato de cada uno.

89
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Sustitución 12 void Girar(Izq int ptiempo)
En el código ejemplificado, se 13 motor[motorB] = -50
observan dos flechas que indican 14 motor[motorC[ = 50;
15 wait1msec[ptiempo[;
el camino que sigue el valor
16 ]
asignado al parámetro; partiendo
17
desde la posición donde fue
18 task main()[
asignado, hasta donde su valor 19 int NoVuelta = 0;
es sustituido en la función. 20 // Se darán 3 vueltas
21 while(NoVuelta < 4)
22 [
23 Avanzar(50);
24 GirarIzq(15);
25 Avanzar(50);

1
La función será ejecutada de 2 motor[motorB] = -50;
acuerdo al orden en que fueron 3 motor[motorC] = 50;
invocadas en el código. 4 wait1msec[15];
5

Valores de retorno el tipo de información o valor que desea obtener al ejecutar la

En relación a los tipos de datos de retorno utilizados al momento función; por ejemplo, si la función efectúa un cálculo matemá-

de declarar una función, es importante señalar que el tipo void tico entonces se obtendrá como valor de salida un dato de tipo

es usualmente elegido; sin embargo, el estudiante debe analizar entero, en esa situación se debe utilizar la palabra int.

90
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
1. Declara el tipo de retorno. 1 int Cuadrado(int tiempo)[
2 int cuad;
Como la función dará un valor de 3 cuad = tiempo * tiempo;
retorno al final, ésta debe ser 4 return cuad;
declarada con un tipo que no sea 5 ]
“void”, indicando qué tipo de 6
valor dará. 7 task main()[
8 motor[Derecha] = 63;
9 motor[Izquierda] = 63;
2. Valor de retorno. 10 waitmsec (Cuadrado(25));
11 ]
La función debe “devolver” un
valor. En este caso, significa
devolver el resultado de la
fórmula, el cuadro del parámetro.

3. el nombramiento
de funciones es un valor.

El nombramiento de funciones se
vuelve un valor en la parte del
programa que la nombra. Aquí está
actuando como un valor entero por
el comando de wait1Msec.

91
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Substitución 1 int Cuadrado(int tiempo)[
El código de ejemplo de la función 2 int cuad;
denominada Cuadrado, posee una 3 cuad = tiempo = tiempo;
serie de flechas que indican la 4 return cuad;
trayectoria del valor de salida 5 ]
cuando es retornado y regresa 6
hasta la función principal. 7 task main()[
8 motor[Derecha] = 63;
9 motor[Izquierda] = 63;
Para este ejemplo el valor de 25 es 10 wait1msec(Cuadrado(25));
usado como un intervalo de tiempo 11 ]
dentro de la función, y la salida
que genere la función depende de
ese parámetro.
1
2 wait1msec(Cuadrado(625));
3

92
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Substitución tencia del movimiento lineal del robot. Vea el programa 1 de este
Lego EV3 Encoder (sensor de rotación) laboratorio para una mejor comprensión del funcionamiento del

Los motores que permiten que el robot LEGO® se desplace sensor de rotación.

poseen un sensor de rotación de su eje (encoder), (Figura 2). Figura 2.

En realidad, miden en grados el movimiento de las ruedas, por SENSORES DEL ROBOT VELADOR.

consiguiente, miden el desplazamiento del robot. El giro de las

llantas es lo que impulsa el robot hacia adelante, la superficie

exterior de las llantas genera una gran cantidad de fricción al

rozar con el suelo. Si consideramos que la superficie exterior

de la llanta es en realidad el perímetro de un círculo (Figura 3),

es posible hacer predicciones correctas acerca de la distancia

que el robot recorre con cada giro de 360° de la llanta. El sensor

entrega mediciones en incrementos de 4° y registrará 90 lectu- Figura 3.

ras por cada rotación completa de la llanta. RUEDA DEL ROBOT VELADOR.

Que seas capaz de medir directamente los giros de las

llantas te permite dictar el movimiento del robot en términos

de distancia más que simplemente controlar el tiempo en el que

el robot debe moverse. Este es un método efectivo ya que no

es afectado por factores como la velocidad o la potencia de la

batería. Medir los grados de giro resulta en una mejor consis-

93
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
SOLUCIÓN DEL DESAFÍO
Con la cinta aislante agrega las marcas en las esquinas del edificio,
task main()
tal y como se ven en la figura 1. Ahora el robot no se moverá con
[
tiempo; lo hará hasta que detecte el cambio de color del fondo
int lectura = 0;

int grados = 0;
blanco al color negro de la cinta de aislar. Incluso las vueltas pue-

// Inicializando el encoder del motor izquierdo den controlarse hasta que el sensor detecte el cambio de color.

nMotorencoder[Izquierda] = 0; Ahora se te proporcionan tres herramientas que te permi-


// Evaluando los grados recorridos por el motor tirán resolver el problema.
while (nMotorEncoder[Izquierda] < grados)[ a) Solución del problema, como una receta de cocina
displayBigTextLine(3,”Lectura = %d”, lectura); (serie de pasos, observa la Tabla 1), explicada en
motor[Izquierda] = 33;
idioma español.
motor[derecha] = 33;
b) Solución con pseudocódigo (Tabla 2), también expre-
lectura = nMotorEncoder[Izquierda];
sado en idioma español.
]
c) Solución con algoritmo usando la notación de diagra-
// apagando los motores cuando se alcanza la meta

motor[Izquierda] = 0;
mas de flujo (Figura 4).

motor[derecha] = 0; Asegúrate de estudiar completamente cada solución, ya que el

] siguiente paso es que generes el programa que resuelva el desafío.

Relaciona estos conceptos con el Proceso de ingeniería que se te

ha presentado en la sección “Conceptos básicos” del Laboratorio

3. A continuación, las tres herramientas ya mencionadas.

94
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1.

SOLUCIÓN PARECIDA

A UNA RECETA DE COCINA.

1. Inicio del programa 22. Función AvanzarLado()


2. Leer el estado del interruptor 23. Ciclar mientras el sensor no “vea” color negro
3. Si el interruptor está apagado vaya al paso 2 24. Avanzar a media potencia
4. Número de vuelta es igual a 0 25. Si el robot se acerca a un obstáculo al menos
5. Si ya va en la cuarta vuelta ir al paso 21 a 10 cm
6. -- Viaje del punto A al B. 26. Girar a la derecha
7. Ir a función AvanzarLado() 27. Avanzar
8. -- Viaje del punto B al C 28. Girar a la Izquierda
9. Ir a funcion AvanzarLado() 29. Avanzar
10. -- Viaje del punto C al D 30. Girar a la Izquierda
11. Ir a funcion AvanzarLado() 31. Avanzar
12. -- Viaje del punto D al A 32. Girar a la Derecha
13. Ir a función AvanzarLado() 33. Fin Si
14. Número de vuelta = Numero de vuelta + 1. 34. Fin de Ciclo. Vaya al paso 23
15. Vaya al paso 5. 35. Dar Vuelta a la Izquierda
16. Fin del Programa. 36. regresar a programa principal

95
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
// Función AvanzarLado. Da una vuelta completa al edificio rectangular
// Espera una marca (cinta aislante) al llegar al extremo opuesto
// Si ahy obstáculo detectado por el sensor sónico, lo evade por la derecha
void AvanzarLado()[
while(no vea color negro)
// Avanzar en línea recta hasta encontrar marca de esquina
Tabla 2.
Avanzar(50);
PSEUDOCÓDIGO
// Dar vuelta a 10 cm del obstáculo
IF (distancia obstáculo < = 10)[ PARA SOLUCIONAR EL DESAFÍO.
GirarDer(15); (continúa en la página siguiente)
// Avanzar línea recta
Avanzar(50);
// Giro Izquierda en la esquina
GirarIzq(15);
// Avanzar línea recta
Avanzar(50);
// Giro Izquierda en la derecha
GirarIzq(15);
// Avanzar línea recta
Avanzar(50);
// Giro Derecha en la esquina
GirarDer(15);
]
]

96
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
// Girar a la izquierda
GirarIzq(50);
]
// Desafío Robot Velador
// El robot da 3 vueltas alrededor del edificio rectangular
// por lo que el tiempo de recorrido en cada recta puede variar
Tabla 2.
// En cada esquina gira 90 grados
PSEUDOCÓDIGO
task main()[
int NoVuelta = 0; PARA SOLUCIONAR EL DESAFÍO.
int valorInt = 0 (finaliza)
// Evaluando el interruptor
while (valorInt = 0 )[
if SensoValue( interruptor ) = 1[
valorInt = 1;
]
]
while(NoVuelta = 4)
[
// una vuelta completa
AvanzarLado(50);
// contador de vueltas
NoVuelta = NoVuelta = 1
]
]

97
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
FUNCIÓN AVANZAR LADO ()

INICIO
Figura4.
Girar _izq(15)
DIAGRAMA DE FLUJO
SALIDA

PARA SOLUCIONAR ¿Está Sí A −> B
presionado Número
el sensor? de vuelta = 0 ¿Ve color
EL DESAFÍO.. B −> C negro?

No C −> D
¿Número
de vueltas
Sí > 3? Girar_Der(15)
D −> A
No

A −> B ¿Está a
Viaje de A −> B Avanzar Lado () 10 cm de
obstáculo?

Viaje de B −> C B −> C No


Avanzar Lado () Sí
ENTRADA
Viaje de C −> D Girar_Der(15)
C −> D
Avanzar Lado ()
Avanzar(50)
Viaje de D −> A

D −> A Girar_Izq(15)
Avanzar Lado ()

Avanzar(50)

Número vuelta =
Número vuelta = 1 Girar_Izq(15)

Avanzar(50)
FIN
Girar_Der(15)

98
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anota en el recuadro el programa resultante con el que TRABAJO ADICIONAL
diste solución a los pasos de este desafío. Los desafíos que se encuentran en esta sección los debes resol-

ver; te será necesario crear un algoritmo y el programa que da

solución a cada desafío. La finalidad de este ejercicio es que

vayas construyendo programas cada vez más complejos y que

verifiques tus avances.

1) Para el problema propuesto en este laboratorio es posible

crear funciones que controlen el movimiento del robot. Propón

un diagrama de flujo y programa el comportamiento básico.

Demuestra que es posible aplicar aún más el concepto de gene-

ralización del razonamiento computacional, para simplificar aún

más tu proyecto.

2) Un proyecto adicional ha sido asignado a ACME Robotics.

El edificio ahora tiene la forma de una cruz. ¿Qué cambios tendrías

que hacer a tu programa para que el robot dé tres vueltas

completas al edificio? ¿Qué nuevas funciones necesitas cons-

truir? Trata de que el proyecto trabaje con solo dos funciones, una

para avanzar y otra para girar (en cualquier dirección). Construye

su diagrama de flujo y el programa en ROBOTC® para hacer el

recorrido. Usa la maqueta desarrollada en el laboratorio 3 para

99
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
probar que el robot está funcionando adecuadamente. Observa Figura 5.

la figura 5 para que tengas idea del recorrido del robot; aunque no RECORRIDO DEL ROBOT

se muestran las vueltas en la figura, considera que el robot debe PARA EL EDIFICIO CON FORMA DE CRUZ.

girar al dar vuelta en las aristas. Las marcas de color verde indican

el lugar en donde debes poner las marcas de cinta aislante.

3) Finalmente, construye un programa en ROBOTC® para tu

maqueta del almacén de autos (rectángulo) en el que sólo le indi-

ques la distancia por recorrer (en centímetros) y que el programa

determine automáticamente los grados que debe contar para


30 cm
avanzar la distancia indicada. Usa funciones y el sensor de rota-

ción del motor del robot. Deberás entregar el diagrama de flujo

y el programa que solucionan el problema.

Punto
de partida

100
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el sitio web: https://

[Link]/WebHelpMindstorms/[Link]#Resources/topics/ROBOTC_Interface/[Link]

Carnegie Mellon University (2020). ROBOTC for TETRIX & LEGO® [Link]://[Link]/roboticsacademy/

roboticscurriculum/Lego%20Curriculum/ROBOTC-Tetrix_Mindstorms.html

101
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 7

BITÁCORA DE VIGILANCIA

OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:


→ Desarrollar el pensamiento lógico necesario para usar estructura
de datos que alamcenará una bitácora de movimientos del robot.

→ Diseñarás programas usando funciones, variables, estructuras, arreglos


y punteros con ROBOTC® e implementarás dicho programa en un robot LEGO EV3.

→ Probarás que el robot ejecuta las instrucciones adecuadamente


y almacena correctamente los datos del recorrido.

102
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

En este séptimo laboratorio el estudiante se enfrenta al desa- real, en donde cada orden que se escribe puede percibirse como

fío de mejorar su técnica de programación incorporando actividad del robot. El estudiante debe comprender la progra-

estructuras estáticas y elementos avanzados que permitan el mación de computadoras como una actividad lógica sencilla de

almacenamiento de datos en tiempo real, tales como: varia- entender y aplicar; esa comprensión le permitirá desarrollar

bles, arreglos, punteros y estructuras; sin perder de vista la conceptos mucho más abstractos como la comunicación entre

relación que existe con los fundamentos teóricos de la meto- procesos remotos, programación orientada a objetos, progra-

dología de la programación y el desarrollo de habilidades cog- mación web, etcétera.

nitivas en los estudiantes. El robot que estaremos usando a lo largo de este curso

Para poder implementar los elementos mencionados el estu- tiene una configuración de dos ruedas cada una con su propio

diante debe identificar las palabras reservadas y los comandos motor, que serán los actuadores, y una rueda de arrastre omni-

necesarios que le permitan declarar las diferentes estructuras direccional; en el tema de sensores. Para percibir el ambiente

estáticas para el almacenamiento de información. Así también, que lo rodea el robot dispone de un sensor táctil, ultrasónico, y

es necesario que realice las pruebas de funcionamiento evitando de otro para luz/color.

errores de acceso a segmentos de memoria no permitidos en el Para este desafío necesita los siguientes materiales:

computador central del robot. • Lenguaje de programación ROBOTC®.

ROBOTC® y el robot nos permiten trasladar la programa- • Robot Lego EV3 armado.

ción del mundo abstracto dentro de la computadora al mundo • Cinta aislante de color negro.

103
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
DESAFÍO POR RESOLVER Figura 1.

La compañía ACME Robotics ha ganado un proyecto para RECORRIDO DEL ROBOT VELADOR.

diseñar un robot programable que patrulle los alrededores

de un edificio rectangular que almacena autos. ACME te ha

contratado para desarrollar el programa para que ese robot Paso 4


Paso 5 Paso 3
prototipo pueda, de forma autónoma, “vigilar” los alrededo-

res del edificio, desde las 20:00 horas de un día hasta las 6:00 C B
horas del siguiente. Además de que el robot pueda evadir

obstáculos en su ruta. Ha surgido un nuevo requerimiento:

es necesario crear una bitácora que guarda el número de

vuelta y el contador de grados acumulados por el sensor Edificio


Paso 6
por vigilar Paso 2
de rotación del motor; los datos se deben tomar al llegar a

cada esquina del edificio. Estos datos deben ser mostrados

en la pantalla del robot al finalizar la última vuelta. La figura Pallet

1 explica paso a paso el problema, las líneas color verde eti-


D A
quetadas con la nota “almacenar datos” muestran en dónde

se deben adquirir datos del robot y almacenar en variables, Paso 7 Paso 9


Paso 8
arreglos y apuntadores. Otro equipo de trabajo ya ha desa- Punto
de partida
rrollado el prototipo mecánico-electrónico del robot y está

disponible para su uso.

104
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Es necesario que el robot recorra tres vueltas completas al nibles dos arreglos de tipo entero con 12 posiciones cada uno,

edificio, eluda obstáculos y debe iniciar el recorrido hasta que uno para almacenar el número de vuelta y otro para almacenar

el usuario presione un interruptor. Puesto que se trata de un los grados recorridos por el sensor de rotación.

prototipo no es necesario que ejecute una rutina de vigilancia

constante. Sólo que estará aplicando el concepto almacenar Tercer problema. Uso de arreglos
datos usando primero variables, arreglos, estructuras y después con estructuras
apuntadores para completar el desafío. El proceso de ingeniería El robot debe ser capaz de ejecutar tres vueltas y en cada

implica que la solución la vayas construyendo paso a paso, por vuelta debe tomar cuatro lecturas, así que el robot debe tener

lo que el problema lo resolverás en tres pasos, mismos que te disponibles un arreglo de tipo estructura con 12 posiciones

explicaremos más adelante. cada uno, la estructura debe manejar una variable para almace-

nar el número de vuelta y otra para almacenar los grados reco-

Primer problema. Uso de variables rridos por el sensor de rotación.

El robot debe ser capaz de ejecutar tres vueltas y en cada una de

tomar cuatro lecturas; así que debe tener disponibles 12 varia- Cuarto problema. Uso de apuntadores
bles para almacenar el número de vuelta y otras 12 variables El robot debe ser capaz de ejecutar n vueltas y en cada una

para almacenar los grados recogidos por el sensor de rotación. debe tomar cuatro lecturas, así que el robot debe tener dispo-

nibles un apuntador de tipo estructura con 12 posiciones cada

Segundo problema. Uso de arreglos uno, la estructura debe manejar una variable para almacenar el

El robot debe ser capaz de ejecutar tres vueltas y en cada una número de vuelta y otra para almacenar los grados recorridos

debe tomar cuatro lecturas, asi que el robot debe tener dispo- por el sensor de rotación.

105
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
CONCEPTOS BÁSICOS Por ejemplo:

Aquí encontrarás material de apoyo para que entiendas el long foo = 79876;

objetivo primario de este documento. En general la sección float pi = 3.1416;

Conceptos básicos proviene de los documentos que el Labora- string saludo = “hola”;

torio Nacional de Ingeniería Robótica de la Universidad Carnegie

Mellon ha proporcionado en los cursos de robótica que imparte. En efecto, cuando se declara una variable, el compilador

reserva una cantidad de memoria del tamaño adecuado y le da

Apuntadores y estructuras de datos un nombre simbólico, definido por el usuario, como “saludo” o

En esta sección se te introducirá a los conceptos variables y “foo” o “pi”. Un entero (int) tiene cuatro bytes de tamaño, un

apuntadores, usando diagramas, ejemplos y programas desarro- número de punto flotante (float) también tiene cuatro bytes,

llados en lenguaje C estándar. La versión 3.5 de ROBOTC® trajo pero una cadena de caracteres (string - en el caso de ROBOTC®)

una miríada de nuevas características, incluyendo la tan espe- suele tener 20 bytes de tamaño. Observa la figura 2 (verá los

rada implementación de punteros a variables. Teniendo esta fun- bloques de memoria, las etiquetas asignadas a ellos, sus conte-

cionalidad abre una amplia gama de nuevas posibilidades, como nidos y la dirección de memoria para ese bloque (los números

la implementación de estructuras de datos complejas. hexadecimales debajo de los bloques).

Una variable tiene dos partes, un valor a la derecha (valor -d)

Variables y un valor a la izquierda (valor -i). El término valor -d se refiere

Antes de la versión 3.5, ROBOTC® solo soportaba variables norma- al lado derecho de la declaración de asignación y el valor-i se

les; en otras palabras, una variable, ya sea un int, float o cual- refiere al lado izquierdo. Considera como referencia el programa

quier otra cosa, solo tenía un valor, como 712, 0,383 o “howdy”. 1, para la explicación que se ofrece abajo.

106
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Programa 1.
Figura 2. EJEMPLO DE USO DE VARIABLES EN ROBOTC®.
LAS VARIABLES
Saludo “HOLA”
// Ejemplo 1 Apuntadores
Y LA DIRECCIÓN
0 x 4576
task main(){
DE MEMORIA EN DONDE int i, j;
SE ALOJAN. i = 10;
Foo 79876 j = 51;
// Este comando debe imprimir - i: 10, j: 51
0 x 5891
writeDebugStreamLine(“i: %d, j: %d”, i, j);
// Asignar el valor r de i a j
π (pi) 3.1416 j = i;
// Este comando debe imprimir - i: 10, j: 10
0 x 7458 writeDebugStreamLine(“i: %d, j: %d”, i, j);
i++;
// Este comando debe imprimir - i: 11, j: 10
Cuando se ejecuta el programa 2, la salida a “Debug Stream”* writeDebugStreamLine(“i: %d, j: %d”, i, j);
de ROBOTC® debería verse así: }

i: 10, j: 51

i: 10, j: 10 (sección 16 , página 44 ) para que obtengas una descripción

i: 11, j: 10 más detallada.

Para abrir el ROBOTC® “Debug Stream”, asegúrate de Al mirar las ubicaciones de la memoria y su contenido

que la interfaz de ROBOTC® esté en el modo “Experto” o después de cada operación del programa 1, deberás ver algo

“Súper usuario” y abre el flujo de depuración desde el cómo lo que se describe en la figura 3. En la primera asignación

menú de ventanas del depurador normal. Lee tu antología al inicio del programa, la variable i en el valor derecha (valor-d)

107
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
se le ha asignado un 10. Justo debajo de esta asignación, hay una En la primera asignación al comienzo del programa, variable.

segunda asignación donde valor -d de la variable j se le asigna Su valor r tiene el valor 10. Justo debajo de esta asignación, hay

un 51. Esto se considera como establecer un valor inicial. Más una segunda asignación donde el valor r de la variable j recibe

adelante en el programa, ¿qué pasará con la línea “j = i”? Simple, el valor 51.

el valor -d de i se copia y se asigna al valor-d de j. Ahora ambos Esto se considera establecer un valor inicial. Más adelante

valores de j e i son 10. ¿Qué sucede cuando se incrementa? ¿Se en el programa, ¿Qué pasará con la línea “j = i”?

cambia el valor de j? En resumen, no, los dos valores -d, tanto Simple, el valor r de i se copia y se asigna al valor -d de j.

de i como de j están completamente separados. Ahora ambos son los valores de j e i son 10. ¿Qué sucede cuando

incrementamos? ¿Lo hace cambiar el valor r de j? En resumen,

Figura 3. no, los dos valores -d son entidades completamente separadas.

DIRECCIONES DE MEMORIA DE LA EJECUCIÓN DEL PROGRAMA 2. Cuando el compilador asigna el valor de la variable i a la variable

j, “copiará” ese valor de una variable a la otra.

Estado inicial j = i i + + Como ya mencionamos, cuando se declara una variable el

compilador le asigna un trozo de memoria de tamaño adecuado.


i 10 10 11 Este pedazo tiene una dirección, un número, muy parecido a una

0 x 4576
casa. Si quieres que acceda a esta dirección, puede hacerlo con el
0 x 4576 0 x 4576

El valor - d se copia
operador de referencia (&). Sin embargo, esto no es muy útil en

sí mismo. Los creadores de C no agregaron esta capacidad para


j 51 10 10 obtener la dirección sin poder hacer algo práctico con eso también.

0 x 5891 0 x 5891 0 x 5891 Aquí es donde el puntero (*) del operador entra en la imagen.

108
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anteriormente, vimos que el valor-d de una variable variable a la que estamos apuntando? Podemos hacer eso

contiene el valor real que le asignamos. Con un apuntador, con el operador de referencia, también un “ * “. Combinando

el valor-d es de hecho la dirección de la variable a la que todo este nuevo conocimiento encontrado, obtenemos el

estamos apuntando. Pero, ¿y si queremos ver el valor de esta programa 2.

Programa 2.

task main() { EJEMPLO RELACIONADO AL USO PUNTEROS EN ROBOTC®.

int numi = 10;


int *intnumPtr;
intnumPtr = &i; // intnumPtr ahora apunta a la dirección de i
// Este comando debe imprimir:
// numi: 10, intnumPtr: 674F4839, *intnumPtr: 10
// (el valor de intnumPtr puede variar)
writeDebugStreamLine(“numi: %d, intnumPtr: %p, *intnumPtr:%d”, numi, intnumPtr, *intnumPtr);
i++;
// Este comando debe imprimir:
// numi: 11, intnumPtr: 656F6968, *intnumPtr: 11
// (el valor de intnumPtr puede variar)
writeDebugStreamLine(“i: %d, intnumPtr: %p, *intnumPtr:%d”, numi, intnumPtr, *intnumPtr);

109
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
La salida en el ROBOTC Debug Stream debería verse así:

numi: 10, intnumPtr: 674F4839, *intnumPtr: 10

numi: 11, intnumPtr: 674F4839, *intnumPtr: 11

Si lo miras desde la perspectiva de la memoria, el programa

3 debería verse como en la figura 6.

Estado
inicial iPtr = &i i + +

i 10 10 11
0 x 4576 0 x 4576 0 x 4576
La dirección de memoria se copia

iPtr Null 0 x 4576 0 x 4576

0 x 5891 0 x 5891 0 x 5891

* iPtr indefinido 10 11

0 x 5891 0 x 5891 0 x 5891

110
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Apuntador aritmético
Ahora que ya sabe cómo son los apuntadores, puedes

empezar a divertirte un poco con ellos.

Considera el siguiente programa:

Programa 3.
// programa ejemplo USO DE APUNTADORES.
// Ejemplo 2 relacionado al uso de punteros
task main(){
ubyte arrNumeros[3] = {1, 2, 3};
ubyte *punteroArrNum;
// El puntero declarado apunta a la dirección de memoria de arrNumeros[0]
punteroArrNum = &arrNumeros[0];
// Esto debe imprimir
// arrNumeros[0]: 1, punteroArrNum: F4DF6933, * punteroArrNum: 1
// (el valor de punteroArrNum puede variar dependiendo del valor que se desea obtener)
writeDebugStreamLine(“arrNumeros[0]: %d, punteroArrNum: %p, * punteroArrNum: %d”, arrNu-
meros[0], punteroArrNum, * punteroArrNum);

// Incrementar el valor para pasar al siguiente elemento de arrNumeros[1]


punteroArrNum ++;
// Esto debe imprimir arrNumeros[1]: 2, punteroArrNum: F4DF7031, * punteroArrNum: 2
// (el valor de punteroArrNum puede variar)
writeDebugStreamLine(“arrNumeros [1]: %d, punteroArrNum: %p, * punteroArrNum: %d”, arrNu-
meros[1], punteroArrNum, *punteroArrNum);

111
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
El programa 4 debería imprimir algo como esto en la

consola del Debug Stream:

arrNumeros [0]: 1, punteroArrNum: F4DF6933, * punteroArrNum: 1

arrNumeros [1]: 2, punteroArrNum: F4DF7031, *punteroArrNum: 2

Considera que la dirección arrPtr puede ser diferente en

cada ejecución. Es importante que, en la segunda línea, la direc-

ción a la que apunta arrPtr sea más alto que en el primero. Cuando

miras cómo se ve en la memoria, puedes obtener una buena idea

de lo que está pasando, así que estudia la figura 5.


Estado
inicial arrPtr = arr[0]
Figura 5.

DIRECCIONES DE MEMORIA 1 2 3 1 2 3
arr
0x4576 0x4577 0x4578 0x4576 0x4577 0x4578
DEL PROGRAMA 4.
La dirección de memoria se copia

arrPtr Null 0 x 4576

0 x 5891 0 x 5891

* arrPtr indefinido 10

0 x 5891 0 x 5891

112
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Hechos interesantes de un apuntador typedef struct{

Cuando use sizeof () en una variable normal, como ubyte, int int velocidadBrazo;

o long, se obtiene la cantidad de bytes que ocupa este tipo. En int valoresSensorReversa[10];

el caso de un ubyte eso es un byte, int ocupa dos y un long usa int posicionMaxima;

cuatro. Hacer un “tamaño de” de un puntero es, inútil; no obten- int posicionMinima;

drás el tamaño del elemento al que apunta, siempre será 4 en el } brazoRobot;

caso de ROBOTC®. Esto se debe a que la dirección almacenada

en el puntero es un número de 4 bytes, uno largo. Considera En el código de ejemplo anterior, se realiza la declaración

esto cuando quieras usar sizeof ( ) para obtener el número de de una estructura integrada por 4 atributos o variables, para ello,

bytes que deseas borrar con la función memset( ), por ejemplo. se utiliza la palabra reservada struct; tomando en consideración

esa estructura, es posible dar solución al problema de controlar

Estructuras múltiples brazos en el robot al mismo tiempo, para ello, se puede

Las estructuras son variables que se componen de una colec- usar una estructura que almacene los valores de las propiedades

ción de otras variables. También son conocidas como registros. de cada uno de los brazos. Al implementar una estructura, la

Nuevamente, esta no es una característica única de ROBOTC®, sintaxis para acceder a cada componente es la siguiente:

sino que es útil en general, y no es ampliamente conocida entre

los programadores principiantes. Te mostramos su uso con el brazoRobot brazo_Central;

siguiente ejemplo: [Link] = 2000;

[Link] = 750;

[Link] = 700;

113
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Arreglos [Tipo de datos] [Nombre del arreglo] [Tamaño]

Los bucles permiten al programador ejecutar multitud de ins-

trucciones y manipular grandes cantidades de información Esto es como una declaración de variable ordinaria, pero el

de forma controlada. Supongamos que quisiéramos escribir nombre de la variable va seguido de un entero entre corchetes

un programa que recopila mediciones de luz, una vez cada 15 que indica el número de elementos asociados con el nombre de

minutos durante todo un día. Supongamos, además, que al la matriz. En el caso de nuestras mediciones de luz, que serán de

final del período de medición queremos crear un gráfico de tipo entero, podríamos usar la declaración

barras de las mediciones de luz para poder visualizar la varia-

ción de las mismas a lo largo del día. Para crear el gráfico de int lectura_luz[96]

barras, necesitaríamos poder recuperar todas y cada una de las

mediciones de luz, de principio a fin. Un total de 96 valores. Por Esta declaración directa le da al programador 96 variables

lo general, la forma en que almacenamos y recuperamos valo- de la forma lectura_luz[0], lectura_luz[1], lectura_

res es en variables. Sería tedioso tener que declarar 96 varia- luz[2], ..., lectura_luz[95] trabajar con . Observe

bles en un programa, por lo que la mayoría de los lenguajes de que el primer elemento de la matriz tiene índice 0 , que el

programación, incluido ROBOTC®, le permiten al programador elemento subsiguiente índice cada incremento en uno, y que el

declarar matrices de variables. Una matriz es una colección último elemento tiene índice 95. Los índices de matriz siempre

indexada de variables del mismo tipo de datos. Indexado sig- comienzan en 0 y terminan con un índice menor que el tamaño

nifica que se puede acceder a cada variable (también llamada declarado de la matriz.

elemento) de la matriz usando un índice entero. Se produce un desborde del arreglo si intenta usar un

La sintaxis para declarar una matriz de variables (arreglo) es índice fuera de rango para acceder a un elemento del mismo.

114
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Este error común puede ser difícil de encontrar porque el compi- Programa 4.

lador no puede detectarlo. Dichos errores pueden conducir a LECTURA DE LUZ CADA 15 MINUTOS.

un comportamiento impredecible, de la misma manera que las


#pragma config (Sensor, SenLuz1, luzSensor ,
variables no inicializadas. La corrección de los excesos vincu-
sensorLuzInactivo)
lados al arreglo implica que inspecciones cuidadosamente todas
task main() {
las operaciones y la determinación clara del valor de cualquier int lectura_luz[
variable de índice.

El programa 4 muestra el conjunto de instrucciones que // Ciclo infinito

recopila mediciones de luz cada 15 minutos durante 24 horas. while(true) [

Inicializa una variable de contador de tipo entero, count a 0, y // Almacenando la lectura del sensor

declara una matriz de 96 elementos para las lecturas de luz. El lectura_luz[cuenta] = SensorValue[lightsensor];

// Incremento al contador de lecturas


ciclo While infinito, toma una lectura, incrementa el contador
cuenta ++;
y hace una pausa de 15 minutos antes de repetir. Cuando el
// Si el arreglo está lleno... terminar el ciclo
arreglo está lleno, la declaración de interrupción hace que el
if(cuenta == 95) [ break ]
ciclo termine. Considera que podemos usar el recuento de varia-
wait10Msec (30000);
bles como el índice de matriz. Comienza en 0 e incrementa en wait10Msec (30000);
1 cada vez a través del bucle, de modo que cada lectura de luz wait10Msec (30000);
se asigna a un elemento de matriz diferente. Observa también ]

que la declaración de interrupción se produce después del incre- // Fin del programa

mento del contador, pero antes de las llamadas wait10Msec ( ) ]

115
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
SOLUCIÓN DEL DESAFÍO
Con la cinta aislante agrega las marcas en las esquinas del edi- Tabla 1.

ficio, tal y como se ven en la figura 1 (pág. 101). Pero ahora el SOLUCIÓN PARECIDA A UNA RECETA DE COCINA

robot no se moverá con tiempo, va a moverse hasta que detecte (continúa en la página siguiente).

el cambio de color del fondo blanco al color negro de la cinta

aislante. Incluso las vueltas pueden ser controladas hasta que el 1. Inicio del programa
2. Leer el estado del interruptor
sensor detecte el cambio de color.
3. Si el interruptor está apagado vaya al paso 2
Ahora se te proporcionan tres herramientas que te permiten
4. Número de vuelta es igual a 0
resolver el problema. 5. Si ya va en la cuarta vuelta ir al paso 21
A) Solución del problema como una receta de cocina (Tabla 6. -- Viaje del punto A al B.
7. Ir a función AvanzarLado()
1), explicada en idioma español.
8. -- Viaje del punto B al C
B) Solución con pseudocódigo (Tabla 2), expresado también
9. Ir a función AvanzarLado()
en idioma español concreto. 10. -- Viaje del punto C al D
C) Solución con algoritmo usando la notación de diagramas 11. Ir a función AvanzarLado()
de flujo (Figura 6). 12. -- Viaje del punto D al A
13. Ir a función AvanzarLado()
14. Numero de vuelta = Numero de vuelta + 1.
Asegúrate de estudiar completamente cada solución ya que el
15. Vaya al paso 5.
siguiente paso es que generes el programa que resuelva el desafío. 16. Desplegar Datos
Relaciona estos conceptos con el proceso de ingeniería que se te 17. Fin del Programa.

ha presentado en la sección Conceptos básicos del Laboratorio 3.

116
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1.

SOLUCIÓN PARECIDA A UNA RECETA DE COCINA

(finaliza).

22. Funcion AvanzarLado ()


23. Ciclar mientras el sensor no “vea” color negro
24. Avanzar a media potencia
25. Si el robot se acerca a un obstáculo al menos a 10 cm
26. Girar a la derecha
27. Avanzar
28. Girar a la Izquierda
29. Avanzar
30. Girar a la Izquierda
31. Avanzar
32. Girar a la Derecha
33. Fin Si
34. Fin de Ciclo. Vaya al paso 23
35. Almacenar Datos
36. Dar Vuelta a la Izquierda
37. regresar a programa principal

117
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 2.

PSEUDOCÓDIGO PARA EL DESAFÍO.

(continúa en la página siguiente)

// Función Avanzando. Da una vuelta completa al edificio rectangular


// espera una marca (cinta adhesiva) al llegar al extremo opuesto
// Si hay obstáculo detectado por el sensor sónico, lo evade por la derecha
void AvanzarLado()[
while(no vea color negro)[
// Avanzar en línea recta hasta encontrar marca de esquina
Avanzar(50);
// Dar vuelta a 10 cm del obstáculo
IF (distancia obstáculo < = 10){
// Giro Derecha en la esquina
GirarDer(15);
// Avanzar línea recta
Avanzar(50);
// Giro Izquierda en la esquina
GirarIzq(15);
// Avanzarlínea recta
Avanzar (50);
// Giro Izquierda en la esquina
GirarIzq(15);
// Avanzar línea recta
Avanzar(50);
// Giro Derecha en la esquina
GirarDer(15);

118
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
]
Tabla 2. ]
PSEUDOCÓDIGO PARA EL DESAFÍO. AlmacenarDatos();
// Giro a la Izquierda
(finaliza) GirarIzq(50);
]
// Desafio Robot Velador
// El robot da 3 vueltas alrededor del edificio rectangular
// por lo que el tiempo de recorrido en cada recta puede variar
// En cada esquina gira 90 grados
task main()[
int NoVuelta = 0;
int valorInt = 0
// Evaluando el interruptor
while(valorInt = 0 )[
if Sensorvalue( interruptor )= 1[
valorInt = 1;
]
]
while(NoVuelta) < 4)
[
// Una vuelta completa
AvanzarLado(50);
// Contador de vueltas
NoVuelta = NoVuelta = 1
]
DesplegarDatos();
]

119
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
INICIO
FUNCIÓN AVANZAR LADO ()

Figura 6.
¿Está
Sí Girar _izq(15)
Número
DIAGRAMA DE FLUJO presionado de vuelta = 0
el sensor? SALIDA Sí
PARA SOLUCIONAR A −> B
No ¿Ve color
EL DESAFÍO.. ¿Número
de vueltas negro?
Sí > 3? B −> C

No C −> D

Girar_Der(15)
Viaje de A −> B Avanzar Lado ()
A −> B D −> A

Viaje de B −> C No ¿Está a


Avanzar Lado () 10 cm de
B −> C
obstáculo?
Viaje de C −> D

Avanzar Lado () Sí
C −> D
Viaje de D −> A
ENTRADA Girar_Der(15)

Avanzar Lado ()
D −> A
Avanzar(50)

Número vuelta = Girar_Izq(15)


Número vuelta = 1

Avanzar(50)

FIN
Girar_Izq(15)

Avanzar(50)

Girar_Der(15)

120
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Anote en el recuadro el programa resultante con que diste TRABAJO ADICIONAL
solución a los pasos de este desafío. Los desafíos que se encuentran en esta sección deben ser

resueltos por el estudiante, es necesario que crees un algo-

ritmo y el programa que da solución a cada desafío. La finali-

dad de este ejercicio es que vayas construyendo programas

cada vez más complejos y verifiques tus avances.

Construye un robot que use el sensor ultrasónico y el sensor

de rotación, aplica tu conocimiento de funciones y apuntadores.

Es necesario que entreges un diagrama de flujo y el programa

en ROBOTC®. El robot debe avanzar indefinidamente hasta que

se encuentre un obstáculo, cuando se encuentre a 15 cm del

mismo debe frenar, retroceder 5 segundos y girar a la izquierda;

en este momento debe hacer un registro del tiempo de ejecución

del programa sobre el robot (nPgmTime) en un apuntador con

estructuras y de los grados que tiene acumulados el sensor de

rotación, para después continuar con su avance recto. El robot

sólo debe funcionar durante tres minutos. Al finalizar su ejecu-

ción debe mostrar los datos recolectados en la pantalla del robot.

121
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el sitio web:

[Link]

Carnegie Mellon University (2020). ROBOTC for TETRIX & LEGO® [Link]://[Link]/roboticsacademy/

roboticscurriculum/Lego%20Curriculum/ROBOTC-Tetrix_Mindstorms.html

Cairó, O (2005). Metodología de la programación. Algoritmos, diagramas de flujo y programas. Alfaomega. 3ª. edición.

122
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ROBOT VELADOR, LABORATORIO 8

MONITOREO DE VIGILANCIA
MEDIANTE UNA CÁMARA MÓVIL
OBJETIVOS DEL DESAFÍO QUE SE TE PLANTEA:
→ Analizar el entorno, tomar decisiones y establecer comunicación remota en acciones
que coadyuven al desarrollo del pensamiento cognitivo y a la creatividad.

→ Mejorar la estructura física del robot, usar estructuras selectivas de decisión e


incorporar otras tecnologías complementarias para añadir mayores funcionalidades.

→ Diseñar un algoritmo para controlar a un robot Lego EV3 y probar que ejecute las instrucciones
en el orden adecuado y de forma precisa para simular la vigilancia mediante cámara móvil.

→ Enviar imágenes en tiempo real a un equipo de cómputo central (servidor), mediante el


uso de una red inalámbrica local.

123
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


INTRODUCCIÓN

Este último laboratorio de prácticas, presenta un desafío de alto iVCam es una aplicación móvil comercial que se instala en dispo-

grado de dificultad para el estudiante; en virtud de incorporar sitivos móviles con sistema operativo IOS o Android, que permite

un componente electrónico para simular la capacidad de visión realizar transmisión de video en tiempo real haciendo uso de la

por parte del robot, para ello, es necesario el uso de una cámara cámara del dispositivo en formato HD hacia un equipo de cómputo

móvil o web cam que permita tomar imágenes del entorno en (PC). En unos segundos, la cámara del dispositivo se comportará

tiempo real, y posteriormente seas procesadas a nivel código de exactamente como una cámara web, enviando señal de video y

programación. audio a una computadora, sin requerir ningún tipo de configura-

Para poder codificar correctamente el algoritmo a través del ción avanzada, tan sólo una conexión a una red inalámbrica WI-FI.

Lenguaje ROBOTC, el estudiante debe seleccionar los comandos De acuerdo al sitio web oficial de la empresa de tecnología

relacionados con el procesamiento de imágenes. Además deberá CISCO, el término de ACCESS POINT (AP) se define como un dispo-

hacer uso de estructuras de control, selectivas, repetitivas y sitivo de red que permite que un conjunto de dispositivos con

estructuras para el almacenamiento de datos, es decir, aplicar capacidad inalámbrica se conecten a una red cableada (CISCO,

todos los fundamentos de programación aprendidos durante 2019). Así también, el autor Enrlich realiza la definición de este

el desarrollo de cada laboratorio, con la finalidad de diseñar el término AP, como punto de acceso inalámbrico (WAP) por sus

algoritmo idóneo para este último desafío. siglas en inglés Wireless Access Point; en ese sentido, resulta

124
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
ser un dispositivo que permite interconectar varios dispositivos • Editor de diagramas DIA. Liga de descarga: [Link]

o equipos de comunicación inalámbrica para implementar una [Link]/

red local. En otro orden de ideas, este concepto representa la • 1 dispositivo móvil con cámara integrada y tarjeta de

única ruta de acceso que facilita o permite la comunicación de un red inalámbrica WI-FI.

grupo de dispositivos, en cierto rango de distancia dependiendo • 1 equipo de cómputo portátil o de escritorio con tarjeta

de la capacidad y características del mismo (Enrlich 2011). de red inalámbrica WI-FI.

La estructura de robot que usaremos en este laboratorio, • Aplicación iVCam para transmisión de video (instalación

debe poseer una configuración de cuatro ruedas, dos de ellas en dispositivo móvil y en PC). Liga de descarga: https://

con su propio motor, que serán los actuadores, y dos ruedas al [Link]/ivcam/

frente; en el tema de sensores, para percibir el ambiente que lo Figura 1.

rodea, el robot debe disponer de sensor táctil, ultrasónico, y de ESTRUCTURA DE SOPORTE PARA DISPOSITIVO

luz/color, además, se deberá construir una base giratoria para MÓVIL GIRATORIO USANDO UN SERVO MOTOR.

dar soporte a un dispositivo móvil (teléfono) usando dos ligas y

algunas piezas de Lego® en forma de un contenedor; montado


Dispositivo
móvil
sobre un motor independiente que permitirá realizar un moni-

toreo de 360°. Tal como puedes observar en la figura 1.

Para este desafío necesita los siguientes materiales:


LEGO 6008577
Servo motor
• Lenguaje de programación ROBOTC®. mediano

• Robot Lego EV3 con soporte para dispositivo móvil.

• 1 dispositivo de comunicación inalámbrico Access Point (AP). Fuente: elaboración propia.

125
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
DESAFÍO POR RESOLVER Figura 2.

La compañía ACME Robotics desea mejorar al proyecto de un RECORRIDO DEL ROBOT

robot programable que patrulla los alrededores de un edificio DE VIGILANCIA CON CÁMARA MÓVIL

rectangular y que almacena datos; sus directivos desean comu-

nicar el robot con las oficinas de vigilancia usando la red inalám- Paso 4
Paso 5 Paso 3
brica de ese edificio. ACME te ha contratado para que adaptes

a la estructura del robot un prototipo de base y desarrolles el


C B
programa que permita de, forma autónoma, “vigilar” los alrede-

dores del edificio, transmitiendo una señal de video en tiempo

real y en cada esquina del edificio se deberá efectuar una pausa

en su trayectoria para realizar un giro de 360° de la cámara del


Edificio
dispositivo móvil acoplado, que estará conectado vía WI-FI a la Paso 6 Paso 2
por vigilar
red inalámbrica LAN de la empresa. La figura 2, te explica paso

a paso el problema. Los directivos de la empresa adquirieron un

software de comunicación denominado iVCam, que han insta-

lado en el dispositivo móvil y en un equipo de cómputo en las


D A
oficinas de vigilancia y que actuará como un servidor de video.
Paso 7 Paso 9
El programa que debes construir en ROBOTC® debe contener
Paso 8
las instrucciones para dar CINCO vueltas completas al edificio; Punto
de partida
como se trata de un prototipo no es necesario que ejecute cons-

126
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
tantemente. El proceso de ingeniería implica que construyas la antes de ejecutar el siguiente comando. Deberás calcular el

solución paso a paso, por tal motivo, en este laboratorio se diseña tiempo necesario para que el soporte del dispositivo móvil rea-

la rutina de vigilancia mediante transmisión de señal de video lice un giro de 360°, así decidirá el valor de potencia del motor

en tiempo real. más efectivo para el giro de la cámara y que la señal de video

no sea perturbada por un movimiento brusco.

CONCEPTOS BÁSICOS Asegúrate de estudiar completamente cada solución, ya

Aquí encontrarás material de apoyo para entender el objetivo que en el siguiente paso generarás el programa que resuelva el

primario de este documento. En general, los apuntes provienen desafío. Relaciona estos conceptos con el proceso de ingeniería

de los documentos que el Laboratorio Nacional de Ingeniería que se te ha presentado en la sección “Conceptos básicos” del

Robótica de la Universidad Carnegie Mellon ha proporcionado Laboratorio 3.

en sus cursos de robótica.

SOLUCIÓN DEL DESAFÍO


Comando wait1sec() Ahora se te proporcionan tres herramientas que permiten

El comando wait1sec ( ) jugará un papel importante en este resolver el problema.

laboratorio, le indicarás al robot el tiempo —en milisegundos— 1) Solución del problema con una serie de pasos (Tabla 1)

que debe esperar antes de que ejecute el siguiente comando. explicados en idioma español.

El número dentro de los paréntesis representa el número de 2) Solución con pseudocódigo (Tabla 2), expresado también

milisegundos que tu robot debe esperar para poder ejecutar en idioma español concreto.

otra acción; en ese sentido, 3000 milisegundos equivalen a 3 3) Solución con algoritmo usando la notación de diagramas

segundos, así que el robot enciende su motor por tres segundos de flujo (Figura 3).

127
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 1.

SOLUCIÓN PARECIDA A UNA RECETA DE COCINA.

(continúa en la pagina siguiente)

1. Inicio del programa

2. Número de vuelta es igual a 0

3. Medir el extremo más largo del rectángulo. Anota tu respuesta: _____________

4. Si ya va en la sexta vuelta ir al paso 18.

5. Haz que el robot viaje del punto A al B a media potencia. Usando el cronómetro del

celular determina cuánto tiempo le toma al robot. Apaga el motor al llegar al extremo

contrario del marco. Considera que al llegar al extremo contrario del punto de partida

el robot deberá realizar una pausa y activar el motor de soporte del dispositivo móvil

que sostiene la cámara para efectuar un giro de 360°. Anota el tiempo en milisegundos

y la potencia de motor necesarios para el giro: ______________

6. El robot debe continuar su recorrido, y para esto debe dar vuelta a la izquierda,

por lo que debe tener suficiente espacio para no chocar con el edificio.

7. Ahora, que gire el robot a la izquierda (aplica un ¼ de potencia al motor del

robot). ¿Cuánto tiempo debe aplicar fuerza a las ruedas para dar un giro de 90°? Anota

tu respuesta: _____________.

128
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 3.

SOLUCIÓN PARECIDA A UNA RECETA DE COCINA.

(finaliza)

8. Haz que el robot viaje del punto B al C a ½ potencia. Usando los conceptos de matemá-

ticas que ya conoces (regla de tres) determina cuánto tiempo le toma al robot alcanzar

la siguiente esquina del edificio. Haz los ajustes necesarios a tu programa. Anota tu

primera respuesta: _____________

9. Ahora, que gire el robot a la izquierda (aplique un ¼ de potencia al motor del robot).

10. Haz que el robot viaje del punto C al D a ½ potencia.

11. Activa el motor del soporte del dispositivo con cámara y que gire 360°.

12. Ahora, que gire el robot a la izquierda (aplica ¼ potencia al motor del robot)

13. Haz que el robot viaje del punto D al A a ½ potencia

14. Activa el motor del soporte del dispositivo con cámara y que gire 360°.

15. Ahora, que gire el robot a la izquierda (aplica ¼ de potencia al motor del robot).

16. Número de vuelta = número de vuelta + 1.

17. Ve al paso 4.

18. Final del programa.

129
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]

Fuente: Elaboración propia.


Tabla 2.

PSEUDOCÓDIGO PARA EL DESAFÍO

DEL ROBOT DE VIGILANCIA CON VIDEO.

(continúa en la pagina siguiente)

// Desafío Robot de Vigilancia con Video

// El robot da 5 vueltas alrededor del edificio rectangular

// por lo que el tiempo de recorrido en cada recta puede variar

// En cada esquina debe realizar una pausa y realizar giro del soporte del dispositivo

// Posteriormente realizar gire 90 grados para continuar recorrido

task main()

int no Vuelta = 0;

// Se daran 3 vueltas

While (NoVuelta < 6)

// Movimiento del punto a al punto B

130
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 2.

PSEUDOCÓDIGO PARA EL DESAFÍO

DEL ROBOT DE VIGILANCIA CON VIDEO.

(continúa en la pagina siguiente)

Avanzar el robot x segundos

// Detener y esperar x segundos

activar motor de soporte de cámara de video y girar 360 grados

// Giro en la esquina activando motores de ruedas

girar a la Izquierda

// Movimiento del punto B al punto C

avanzar el robot x segundos

// Detener y esperar x segundos

activar motor de soporte de cámara de video y girar 360 grados

// Giro en la esquina

girar a la Izquierda

// Movimiento del punto C al punto D

avanzar el robot x segundos

// Detener y esperar x segundos

131
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Tabla 2.

PSEUDOCÓDIGO PARA EL DESAFÍO

DEL ROBOT DE VIGILANCIA CON VIDEO.

(finaliza)

activar mortor de soporte de cámara de video y girar 360 grados

// giro en la esquina

girar a la Izquierda

// Movimiento del punto D al punto A

avanzar el robot x segundos

// Detener y esperar x segundos

activar motor de soporte de cámara de video y girar 360 grados

// Giro en la esquina

girar a la Izquierda

// Contador de vueltas

NoVueltas = NoVuelta + 1

132
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Figura 3.
INICIO
DIAGRAMA DE FLUJO Anote en el recuadro el programa resultante con que diste

PARA SOLUCIONAR EL DESAFIO. solución a los pasos de este desafío.


Número
de vuelta = 0


¿Número
de vuelta Vuelta
> 5? a la izquierda

No
Avanzar
x segundos

Avanzar
x segundos Detener y girar motor
de soporte de cámara

Detener y girar motor


de soporte de cámara Vuelta a la
izquierda

Vuelta
a la izquierda Avanzar
x segundos

Avanzar
x segundos Detener y girar motor
de soporte de cámara

Detener y girar motor


de soporte de cámara Vuelta
a la izquierda

Número de vuelta =
número de vuelta - 1

FIN

133
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
TRABAJO ADICIONAL Figura 4.

Los desafíos que se encuentran en esta sección deben ser RECORRIDO DEL ROBOT DE VIGILANCIA

resueltos por el estudiante, es necesario crear un algoritmo y PARA EL EDIFICIO DEL GOBIERNO DE RUSIA.

el programa que da solución a cada desafío.

* El Gobierno de Rusia posee un edificio que concentra

oficinas de inteligencia y su poder militar. Si ACME Robotics


Edificio
tuviera que vigilar dicho complejo con el mismo robot y enviar Gobierno de la Federación
de Rusia
la señal de video del entorno en tiempo, ¿qué cambios tendría

que hacer a su programa para dar cinco vueltas completas al

edificio? Construye tu algoritmo y el programa en ROBOTC® para

hacer el recorrido. Usa la maqueta desarrollada en el laboratorio


Punto
3 para probar que el robot está funcionando adecuadamente. de partida

Observa la figura 4, para que tengas idea del recorrido del robot

y consideres que en las aristas principales del edificio, el robot

se detendrá y efectuará un giro de 360° del soporte que contiene

el dispositivo móvil (cámara). Fuente: elaboración propia.

134
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Un proyecto adicional ha sido asignado a ACME Robotics. El Figura 5.

Gobierno de Rusia desea implementar un segundo robot para RECORRIDO DEL ROBOT

vigilancia autónoma dentro del edificio, que recorrerá durante el DE VIGILANCIA PARA PASILLO DE OFICINAS

horario nocturno. ¿Qué cambios tendrías que hacer a tu programa

para que el robot dé tres vueltas completas al pasillo de las


Oficina Sala de
oficinas principales? Construye tu algoritmo y el programa en
Presidencia Juntas
ROBOTC® para hacer el recorrido. Usa la maqueta desarrollada

en el laboratorio 3. Observa la figura 5, para que tengas idea del

recorrido del robot; debes considerar una pausa en la puerta de


Oficina Oficina de
acceso de cada oficina, y efectuar un movimiento giratorio de la Vicepresidencia Vigilancia

cámara para trasmitir la señal de video de esa esa zona, poste-

riormente debe continuar el recorrido a la siguiente puerta más

próxima. Oficina
Oficina
Mando Militar de
Inteligencia

Punto
de partida

Fuente: elaboración propia.

135
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
Referencias

Robomatter Inc. (2016). ROBOTC for LEGO Mindstorms 4.X - Users Manual. Disponible para consulta en el sitio

web: [Link]

[Link]

Acerca de iVCam. (s.f). Consultado en el mes de agosto de 2020, en el sitio web [Link]

Enrlich, S.D. (2011). Access Points: An Institutional Theory of Policy and Policy Complexity. New York: Oxford.

CISCO (2019). ¿Qué es un access point? Disponible para consulta en el sitio web: [Link]

es_mx/solutions/small-business/resource-center/networking/[Link]

136
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
[Link] Disponible en: [Link]
CONSIDERACIONES FINALES

Con el objetivo de tener un mayor impacto en el lector, se le soluciomar los problemas que se plantean en los diferentes

recomienda utilizare un kit completo del Robot LEGO Minds- temas; y con esto, crear una guía de referencia para futuros

torm EV3, adquirir una licencia del lenguaje de programación algoritmos que el lector pueda desarrollar para perfeccionar

ROBOTC®, usar un dispositivo móvil con cámara y WIFI, y que su aprendizaje.

aprenda el armado del robot, identificando las piezas y senso- Finalmente, se recomienda al lector implementar un repo-

res que lo integran para facilitar su toma de decisiones durante sitorio de códigos, utilizando herramientas open source como

el proceso de codificación. github , para que pueda llevar un control de sus avances y

Otro aspecto que consideramos relevante es crear un respaldo de los mismos. Así mismo, es fundamental la valida-

cuadernillo de ejercicios o bitácora de control para tomar ción e instalar el firmware correcto en el robot antes de iniciar

nota de ciertos parámetros o datos de control que permitan con las pruebas del código.

137
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


CONCLUSIONES

En una sociedad globalizada donde la innovación tecnología mación, como: estructuras secuenciales, decisión y repetitivas;

avanza de manera significativa día a día, resulta inevitable que manipulación de datos en arreglos multidimensionales, diseño

el ámbito de la educación primordial no se vea afectado por la de funciones y archivos de texto.

misma. Consideramos que la robótica será un área de conoci- Como profesores investigadores y autores de esta obra de

miento que se implementará desde la educación básica en sus texto educativa, estamos conscientes de que es neceario desarro-

planes de estudios en los próximos años. llar en los jóvenes nuevas competencias relacionadas con la lógica

Estamos convencidos de que esta obra literaria despertará de programación y mejorar sus capacidades cognitivas, aprove-

en el lector, y principalmente en los estudiantes, el interés por chando esa inmensa capacidad que poseen de explorar nuevas

mejorar sus habilidades en programación con un enfoque en los cosas. Todo esto permitirá formar nuevas generaciones de inge-

principios de la robótica mejorando su razonamiento y creati- nieros que se apasionen por la ciencia y tecnología, capaces de

vidad; aplicando los fundamentos y metodologías de la progra- resolver los retos del futuro.

138
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica,
Sin fronteras, núm. 3, UNACH, México, 2022, 180 pp. ISBN: 978-607-561-130-3

[Link] Disponible en: [Link]


Introducción a la robótica,

de Luis Antonio Álvarez Oval, Christian Mauricio

Castillo Estrada y Aron De la Cruz Vázquez, se terminó

de editar en junio de 2022 y se usaron tipos Ubuntu y

JetBrains mono.

Aron 
De la Cruz Vázquez
Christian Mauricio
Castillo Estrada
Luis Antonio
Álvarez Oval
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica, 
Sin fr
Luis Antonio Álvarez Oval, Christian Mauricio Castillo Estrada y Aron de la Cruz Vázquez, Introducción a la robótica
las pers

También podría gustarte