Programación y Robótica
Sitio: | Formación en Línea |
Curso: | Kit Digital |
Libro: | Programación y Robótica |
Imprimido por: | Invitado |
Día: | viernes, 3 de mayo de 2024, 20:22 |
1. Introducción a la Programación
La programación informática es la disciplina orientada al desarrollo de aplicaciones, herramientas virtuales o software de cualquier proceso digital. En los últimos años, el uso de las TIC ha adquirido una importancia en la sociedad tal que la demanda
de profesionales en este ámbito ha crecido vertiginosamente.
Además, la programación está asociada al desarrollo de habilidades creativas, a la capacidad en la resolución de problemas, a la planificación estructurada de tareas o al desarrollo del pensamiento computacional.
Es por ello que la programación (anteriormente designada a profesionales especialistas en Informática) ha llegado a niveles inferiores de la educación, con el fin de crear los cimientos en esta disciplina que se desarrollará a lo largo de toda la etapa educativa.
Un programa informático se compone de un conjunto de instrucciones que sigue una secuencia o estrategia determinada para lograr un fin, para obtener un resultado concreto y que están escritas en un código o lenguaje de programación siguiendo unas normas establecidas.
En los últimos años, el desarrollo de distintos lenguajes de programación basados en entornos gráficos amigables ha permitido acercar la programación a los primeros niveles de la educación. Las instrucciones de estos lenguajes de programación se componen de bloques que se arrastran en el lienzo formando el programa. Algunos ejemplos son Scratch, Code.org, Alice, Kodu, AppInventor, Edublocks, etc.
Los lenguajes basados en texto aparecieron antes que los lenguajes gráficos, pero siguen utilizándose, ya que son imprescindibles para ciertas aplicaciones. Algunos de ellos son Python, Java, C++, Processing (basado en Java), etc.
Además, el desarrollo de los lenguajes de programación está asociado a la evolución de los sistemas de control programado; es decir, máquinas cuyos actuadores (por ejemplo motores) son gobernados por un programa en el que se tienen en cuenta otros elementos del sistema (por ejemplo sensores de proximidad). De esta forma, y continuando con el ejemplo, a través del programa instalado en una tarjeta de control, los motores reciben órdenes de movimiento en un sentido u otro, o parada, en función de las señales que envíen los sensores de proximidad. La mayoría de los sistemas robóticos se basan en control programado y por ello, la robótica, también se está incorporando desde hace unos años a la educación en los niveles inferiores.
Algunos programas utilizados en sistemas robóticos o en sistemas de control programado son Robolab, Ardublock, mBot, Bee Bot, Lego Mindstorm, Makeymakey, etc.
Por último, queremos reservar un espacio en este libro a las herramientas relativas a la Inteligencia Artificial, disciplina que ha cobrado muchísimo interés en los últimos años. Presentamos algunas herramientas de machine learning que enseñarán
a tu computador a reconocer imágenes, sonidos, personas, objetos, etc. Podrás incorporar estos módulos en tu programa.
En conclusión, hay muchísimos lenguajes de programación adecuados para la educación. En los siguientes capítulos presentamos algunos de ellos.
2. Programación gráfica
2.1. App Inventor para dispositivos móviles
App Inventor es una herramienta de desarrollo de software que fue creado conjuntamente por el MIT (Massachusetts Institute of Technology) y por Google Education para la elaboración de aplicaciones destinadas al sistema operativo de
Android, aunque las últimas versiones de App Inventor son válidas también en iOs.
Esta herramienta es gratuita y el entorno de programación es gráfico por lo que es muy fácil familiarizarse con él y crear apps para un dispositivo móvil basado en Android. Al igual que Scratch, el sistema de bloques en el que está basado su lenguaje
de programación permite a cualquier usuario crear programas y ponerlos en funcionamiento en su propio dispositivo, lo cual es muy estimulante para los estudiantes. Aunque las aplicaciones creadas con AppInventor están algo limitadas por su simplicidad,
proporcionan un gran número de utilidades.
App Inventor es software libre y podrás acceder a multitud de proyectos elaborados por otros usuarios para poder editarlos, mejorarlos o simplemente comprobar cómo ha sido desarrollado.
- Para empezar a trabajar con App Inventor necesitarás una cuenta de Google.
- Crearemos el programa accediendo al editor.
- Después de crear nuestra App en el editor debemos llevarla al dispositivo y comprobar que funciona correctamente. Para ello, es necesario haber instalado en nuestro dispositivo MlT AI2 Companion.
- Desde el editor en el que hemos creado el programa podemos seleccionar la opción de crear un código QR.
- Así, desde nuestro dispositivo móvil podemos leer el código QR y descargar nuestra propia app en el dispositivo.
Acceso al editor App Inventor>>
Acceso a MIT AI2 Companion>>
Antes de comenzar a utilizar App Inventor te aconsejamos que leas sus Términos de Uso y su Política de Privacidad
Tutoriales:
2.2. Scratch
Scratch es un lenguaje de programación creado por el MIT (Massachusetts Institute of Technology) diseñado especialmente para acercar el mundo de la programación a cualquier usuario, independientemente de sus conocimientos iniciales en este campo. El entorno es totalmente visual y a través de su código se pueden crear historias interactivas, juegos, animaciones, etc.
Scratch es una herramienta totalmente gratuita y de código abierto. Además puedes acceder a su comunidad y utilizar, editar y mejorar programas que otros usuarios hayn compartido públicamente en el sitio web.
Puedes empezar a crear un proyecto en Scratch (sin cuenta de usuario) en este enlace: Empezar a crear
También puedes crear una cuenta de usuario totalmente gratuita y podrás gestionar todas tus creaciones, compartirlas, volver a editarlas y descargarlas cuando tu quieras. Únete a Scratch.
Otra opción es descargar la aplicación en tu propio ordenador. Descargar Scratch.
Antes de comenzar a utilizar esta herramienta te recomendamos que leas la Información publicada para educadores, Información para padres,
los Términos de uso y la Política de Privacidad.
Tutoriales de Scratch:
2.3. Blockly
Google Blockly es un lenguaje de programación visual, basado en bloques. Es Open Source, con licencia Apache License 2.0.
Blockly de basa en programación visual como Scratch y podrás implementar tus algoritmos arrastrando los bloques por el lienzo. Además con blockly podrás ver simultáneamente el código traducido a otros lenguajes de programación como Python, JavaScript, PHP, Lua, Dart... Así que este es un buen lenguaje de programación para iniciarse en la programación textual.
Para comenzar a trabajar con Blockly es aconsejable visitar Blockly Games, una serie de juegos que a través de retos de menor a mayor dificultad ayudarán a los alumnos a familiarizarse con el entorno y con las instrucciones de Blockly. Además, en el siguiente enlace se muestra información específica para que los educadores>>
Puedes empezar a crear un proyecto en Blockly en este enlace: Empezar a crear
Antes de comenzar a utilizar esta herramienta te recomendamos que leas los Términos de uso y la Política de Privacidad.
2.4. Game blox
GameBlox es una herramienta para crear videojuegos para dispositivos móviles. El lenguaje de programación es gráfico.
Puedes empezar a crear un proyecto en Game Blox en este enlace: Empezar a crear
Antes de comenzar a utilizar esta herramienta te recomendamos que leas los Términos de uso y la Política de Privacidad.
2.5. Thunkable
Thunkable es una herramienta basada en App Inventor que permite familiarizar a los alumnos con el desarrollo de aplicaciones para dispositivos Android.
Thunkable es un entorno realmente sencillo, similar a los otros entornos mencionados, basado en bloques.
Acceso a la página de Thunkable>>
Es importante que consultes los Términos de uso y su Política de Privacidad antes de empezar a utilizar esta herramienta.
Tutorial:
2.6. Swift Playgrounds
Swift Playgrounds es una herramienta para macOs y para iOs diseñada para comenzar a programar a través de instrucciones básicas. Esta plataforma está preparada para que los usuarios, sin necesidad de conocimientos previos, pueda aprender los conceptos básicos de la programación usando el lenguaje Swift creado por Apple.
Acceso a la descarga de Swift Playgrounds >>
Antes de comenzar a utilizar esta aplicación te aconsejamos que leas sus Términos de Uso y su Política de Privacidad
Tutoriales:
2.7. Code.org
Code.org® es una organización sin ánimo de lucro dedicada a acercar la programación y la computación a los estudiantes. Además trabaja intensamente para aumentar la participación de las mujeres y las minorías que no están suficientemente representadas en este campo.
Code.org ofrece distintos tipos de proyectos para comenzar a programar. A continuación mostramos algunos de ellos.
Además podrás acceder a multitud de estudios con trabajos públicos realizados por otros usuarios y utilizar el código desarrollado.
Acceso a la página de Code.org (Laboratorio de Sprites)>>
Acceso a la página de Code.org (Artista)>>
Acceso a la página de Code.org (Fiesta de Baile)>>
Es importante que consultes los Términos de uso y su Política de Privacidad antes de empezar a utilizar esta herramienta.
2.8. Tynker
Tynker es un lenguaje de programación gráfico ideado para que los alumnos aprendan a programar de manera fácil e intuitiva, construyendo sus propios juegos, controlando robots y drones y publicando
apps. EL entorno se basa en bloques que se conectan, de forma similar a como se realiza en Scratch. Además Tynker dispone de un sistema de gestión de clases para los docentes.
Tynker también permite programar drones a un nivel básico.
Puedes acceder a la página de Tynker en este enlace>>
Antes de comenzar a utilizar esta herramienta te recomendamos que leas los Términos de uso y la Política de Privacidad.
2.9. Snap!
Snap! es una herramienta de programación gráfica pro bloques, creada en la Universidad de Berkeley, basada en el lenguaje de programación Scratch.
Su manejo es muy sencillo, partes de bloques de instrucciones que pueden ser arrastrados y agrupados a modo de puzzle para crear un programa. Es un lenguaje pensado para desarrollar juegos, animaciones y creaciones multimedia mediante bloques
de acciones, como en Scratch.
Snap! incorpora nuevas y potentes mejoras en algunas de sus funciones, en cualquier ámbito, ya sea educativo, laboral o personal.
Acceso a Snap!>>
Antes de comenzar a utilizar App Inventor te aconsejamos que leas sus Términos de Uso y su Política de Privacidad
Tutoriales:
3. Programación textual
La programación basada en texto o textual se refiere a la secuencia de instrucciones que componen un algoritmo escritas en un lenguaje de programación determinado, basado en las normas establecidas en el propio lenguaje. Este conjunto de sentencias es analizado y "traducido" por el procesador para realizar las tareas para las que ha sido creado.
A diferencia de la programación gráfica, los lenguajes de programación textual requieren unos conocimientos más amplios, así como un alto grado de abstracción. Aprender un lenguaje de programación textual requiere aprender una "sintaxis" y una "gramática" específicas del lenguaje, lo cual dificulta su uso. No obstante, desde la década de los 60 se han ido desarrollando distintos entornos de programación y en la actualidad existen multitud de lenguajes y de entornos visuales más amigables para el usuario.
Ejemplo de un programa basado en texto. En este caso el programa está escrito en Python:
### Voy a decirte si el número que introduces es par o impar num = int(input('Introduce un numero: ')) ifnum % 2 == 0: print('Es Par') else: print('Es Impar')
3.1. PSEINT Pseudocódigo
Antes de presentar lenguajes de programación como Python, Processing o Java, habituales en niveles superiores de ESO o en Bachillerato, podemos introducir la programación basada en texto con un pseudocódigo muy fácil de comprender.
PSeInt es una herramienta para familiarizar a los estudiantes con los lenguajes basados en texto. Con Pseint el estudiante puede crear programas mediante un simple e intuitivo pseudolenguaje en español. Además Pseint dispone de una herramienta de creación y edición de diagramas de flujo que genera el diagrama asociado al algoritmo creado de forma simultánea.
Esto permite a los estudiantes comprender los conceptos fundamentales de la algoritmia computacional y minimizar las dificultades propias de un lenguaje de programación.
Pseint está disponible para Linux, para Windows y para macOS.
Tutoriales:
3.2. Python
3.3. Processing
Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto. Basado en Java, se creó como una herramienta digital para artistas y diseñadores, es decir, inicialmente fue creado para profesionales sin una formación extensa en programación. Esto lo convierte en un lenguaje de programación adecuado para la educación y para la familiarización de los estudiantes con lenguajes basados en texto.
Además, es ideal para la producción de proyectos multimedia e interactivos de diseño digital, dando resultados muy vistosos, que estimulan mucho a los estudiantes
4. Control programado y Robótica
El control programado de un sistema automático se refiere al que, a partir de unas determinadas señales de entrada, se obtienen los valores en los elementos de salida, a través de un programa (conjunto de instrucciones) que ha sido incorporado en una tarjeta
controladora previamente, en vez de hacerlo a través de un circuito cableado.
El control programado se utilizan en multitud de sistemas automáticos que utilizamos habitualmente (apertura de una puerta de garaje, climatización automática, por ejemplo) y, por supuesto, en el ámbito de la robótica.
Esquema de un sistema de control programado
4.1. Ardublock y ArduinoBlocks
Ardublock y ArduinoBlocks son dos herramientas gráficas para programar diferentes modelos de placa controladora Arduino.
Estos lenguaje de programación se basa en bloques (programación gráfica) como Scratch, App Inventor u otros programas mencionados en dicho apartado. Los bloque pueden se arrastrados y enlazados como hemos descrito anteriormente.
Arduino es una plataforma de electrónica basada en hardware y software libres, diseñados de forma totalmente flexible y fácil de aprender, que lo convierten en una herramienta muy versátil para la educación. El hardware libre se refiere a dispositivos cuyas características, diseño, especificaciones y diagramas son de acceso público, de manera que cualquiera puede crear réplicas, mejorarlas, modificarlas, etc. Es decir, Arduino ofrece la base para que cualquier persona o entidad pueda generar placas idénticas.
Acceso a la página de descarga de Ardublock>>
Acceso a la creación de proyectos con ArduinoBlocks>>
Antes de empezar a utilizar estas herramientas te aconsejamos leer sus Términos de Uso y su Política de Privacidad
Tutoriales:
Acceso a los tutoriales del blog de Ardublock>>
Acceso a la documentación de ArduinoBlocks>>
Cómo comenzar con ArduinoBlocks
Cómo empezar con ArduinoBlocks del canal de Youtube ArduinoBlocks
4.2. Tinkercad Circuits
Tinkercad es una colección de Autodesk que engloba diversas herramientas de diseño. Con Tinkercad puedes acceder a aplicaciones para diseñar en 3D, crear y simular circuitos eléctricos y electrónicos, programar, etc.
Todo ello en un entorno muy sencillo de manejar y muy interesante para los alumnos. En este capítulo nos centraremos en Tinkercad Circuits, ya que esta herramienta dispone de los elementos necesarios para crear y simular sistemas de control basados en Arduino. Además. permite la programación online de las placas Arduino del simulador.
Una herramienta muy interesante que ofrece Tinkercad Circuits es el debugger, con ella podemos parar la ejecución de un programa y ver los valores de las variables, algo que con arduino no podemos hacer. Nos permite “parar” el tiempo.
Para comenzar a utilizar Tinkercad debes registrarte una cuenta de correo electrónico y podrás acceder a todas sus herramientas.
Ejemplo de circuito con Tinkercad Circuits_1 Área de Formación en Línea y Competencia Digital
Antes de comenzar a utilizar esta herramienta te recomendamos que leas los Términos de uso y la Política de Privacidad.
Tutoriales:
Primeros pasos con Arduino en Tinkercad Circuits
Arduino en TinkerCad (I) - Hola mundo del canal de Youtube Jose Loureiro
Encender un LED (No olvides seleccionar tu idioma en la configuración de los subtítulos)
LEDs and Breadboards With Arduino in Tinkercad del canal de Youtube Autodesk Tinkercad
Controlar la iluminación de un LED
Fading LED With Arduino in Tinkercad del canal de Youtube Autodesk Tinkercad
4.3. Simuladores de Robótica
Beebot Online
Antes de comenzar a utilizar esta herramienta, te aconsejamos que leas sus Términos de Uso y su Política de Privacidad.
MakeCode Microbit
Antes de comenzar a utilizar esta herramienta, te aconsejamos que leas sus Términos de Uso y su Política de Privacidad.
MakeCode Mindstorms
Antes de comenzar a utilizar esta herramienta, te aconsejamos que leas sus Términos de Uso y su Política de Privacidad.
Coppelia Robotics
Open Roberta Lab
El modelo virtual de Open Roberta es 2D y bastante básico, pero
podrás visualizar tu robot desplazándose por el lienzo, según el
algoritmo desarrollado.
5. Introducción a la Inteligencia Artificial
- En apps y videojuegos, recreando el movimiento de los personajes.
- En industria, aplicada a la optimización de métodos de fabricación y logística.
- En medicina, donde se hacen modelos que pueden preveer la evolución de una enfermedad o los posibles efectos secundarios.
- En la minería de datos, generando patrones en base a una gran cantidad de datos, que un humano no podría gestionar.
- Machine Learning, el aprendizaje automático de las máquinas, proceso en el que los algoritmos pueden mejorar continuamente su desempeño al observar datos relevantes, identificar patrones, crear modelos de datos que pueden hacer predicciones y luego iterar su aprendizaje.
Podemos clasificar el aprendizaje automático (machine learning) en tres tipos:ay tres tipos:
• Aprendizaje automático supervisado: en este caso, el sistema es entrenado medieante un conjunto de datos etiquetados o estructurados. Los datos actúan como un maestro, entrenando a la máuina para mejorar su capacidad a la hora de hacer predu¡iciiones o tomar decisiones. En este caso un supervisor humano debe gestionr el entrenamiento del sistema.
• Aprendizaje automático no supervisado: en este caso, los datos son proporcionados al sistema sin etiquetas y el sistema debe generar los patrones de forma autónoma.
• Aprendizaje automático por refuerzo: el aprendizaje se basa en la retoralimentación recibida. De tal manera que la proximidad al objetivo es premiada y el alejamiento se traduce en una penalización. Con base en la retroalimentación,
el sistema modifica su estrategia y decisiones para para minimizar los errores.
- Educar con IA:
se trata de integrar en la educación tecnologías de IA que puedan ayudar mejorar el proceso de aprendizaje
de los alumnos y mejorar la enseñanza. Por ejemplo, la aplicación de herramientas y algoritmos en el análisis de los datos obtenidos para crear un itinerario de aprendizaje específico para un alumno y adaptar el proceso de aprendizaje a cada situación personal.
- Educar para la IA: busca capacitar a los alumnos en la adquisión de nuevas habilidades necesarias para situaciones cotidianas o profesionales en un
mundo con IA. Es decir, se trata de familizarizar a los estudiantes con la presencia de sistemas basados en Inteligencia Artificial y los cambios que estos sistemas y máquinas pueden incorporar en nuestras visas.
- Enseñar a crear IA: el objetivo es que los estudiantes comiencen a analizar el aspecto técnico de los sistemas basados en algoritmos de IA. La iniciación en la programación informática y en la creación de herramientas tecnológicas es imprescindible desde edades tempranas para la btención de profesionales en esta disciplina, capaces de afrontar los problemas y situaciones del futuro.
5.1. Machine Learning for Kids
Machine Learning for Kids es una herramienta muy interesante para introducir a los estudiantes en la disciplina de la Inteligencia Artifical. Realmente es una aplicación útil para
acceder al mendo del entrenamiento de sistemas de aprendizaje automático.
Con esta herramienta el alumno podrá entrenar a su PC. Le enseñará a reconocer imágenes, a contestar preguntas sobre un tema concreto, a reconocer números en trazado natural o sonidos sencillos.
El proceso se basa en seleccionar el tema sobre el que vamos a enseñar a la máquina. Tendremos que introducir las etiquetas de referencia y los ejemplos relativos a cada etiqueta. Después de un proceso de entrenamiento, la máquina habrá aprendido las relaciones entre patrones y etiquetas.
El procedimiento da como resultado un módulo de código que podrás exportar e incorporar en tu algoritmo de Scratch 3 o de Python. De esta forma, podrás desarrollar juegos capaces de interpretar imágenes, sonidos o texto, es decir, sistemas "semi-inteligentes".
Algunos proyectos de Aprendizaje Automático
5.2. Teachable Machine
Teachable Machine 2.0 es una herramienta de IA desarrolla por Google y basada en la web que hace que la creación de modelos de aprendizaje automático sea
rápida, fácil y accesible para todos.
Con esta herramienta podrás preparar a un ordenador para que reconozca imágenes, sonidos y posturas. Es una forma rápida y sencilla de crear modelos de aprendizaje automático para incorporarlas en sitios web o aplicaciones.
Antes de comenzar a usar esta herramienta, te aconsejamos que leas su Política de Privacidad y los Términos de uso.
5.3. Learning ML
Learning ML es otra herramienta para el aprendizaje atuomático o machine learning, que permite entrenar a la máquina para el reconocimiento de distintos elementos.LearningML facilita enormemente la construcción de modelos de ML. La herramienta se centra en los fundamentos de la programación en un entorno muy sencillo de manejar. En tres pasos, se puede obtener un modelo de ML a partir de conjuntos de textos o imágenes recopilados. Como en las otras herramientas mostradas, el modelo puede incorporarse en un algoritmo de Scratch.
Aunque para usar LearningML no es necesario registrarse, si lo haces podrás acceder a los proyectos que otras personas hayan compartido y, por supuesto, tú mismo puedes compartir los proyectos que desees. Ahora mismo sólo hay algunos ejemplos para que puedas probar la aplicación más rápidamente, pero esperamos contar con vuestra participación para ampliar y enriquecer la herramienta con vuestros proyectos.
Acceso a LearningML>>
Antes de comenzar a utiliza esta herramienta, te aconsejamos leer los Términos de uso y Política de Privacidad.
5.4. IA con App Inventor
Acceso al editor App Inventor>>
Acceso a MIT AI2 Companion>>
Antes de comenzar a utilizar App Inventor te aconsejamos que leas sus Términos de Uso y su Política de Privacidad
Tutoriales:
6. Créditos
Este material "Programación y Robótica" del INTEF, publicado bajo licencia Creative Commons 4.0 International (BY-SA) ha sido elaborado por el Área de Formación en Línea y Competencia Digital Educativa del INTEF con licencia Creative Commons 4.0 International (BY-SA)
Área de Formación en Línea y Competencia Digital Educativa del INTEF