# Open Roberta

Open Roberta es un proyecto dentro de la iniciativa educativa alemana "Roberta: aprender con robots", iniciado por Fraunhofer IAIS, que es un instituto perteneciente a la Sociedad Fraunhofer . Con Open, Roberta, Fraunhofer IAIS busca alentar a los niños a codificar mediante el uso de robots como Lego Mindstorms y otros sistemas de hardware programables como Arduino, BBC micro:bit y Calliope mini. El enfoque en la nube del Open Roberta Lab tiene como objetivo simplificar los conceptos de programación y facilitar que los maestros y las escuelas enseñen a codificar. Open Roberta es gratuito y no requiere ninguna instalación. El proyecto fue fundado inicialmente con 1 millón de euros por Google.org.

## Open Roberta Lab

Open Roberta Lab es un entorno de programación basado en la nube y es el middleware orientado al usuario en una cadena de porciones de software y firmware que hacen que un robot funcione en un entorno de aula. Este entorno permite a niños y jóvenes sin conocimientos técnicos previos programar un robot LEGO MINDSTORMS EV3 y NXT, así como el robot basado en Arduino Bot'n Roll ONE A, el micro:bit de la BBC, y el Calliope mini. A partir de la versión 2.3.0, la microplaca BOB-3 y, a partir de la versión 3.0, las microplacas Arduino Uno, Arduino Nano y Arduino Mega también se pueden programar mediante Open Roberta. Hay una variedad de diferentes bloques de programa disponibles para programar los motores, sensores y el bloque EV3. Open Roberta Lab utiliza el enfoque de la programación visual . Este enfoque hace que sea más fácil, especialmente para los principiantes sin experiencia, aprender a codificar. Como entorno de programación basado en la nube, no se necesita instalación y se puede utilizar cualquier sistema operativo (MacOS, Windows, Linux) y cualquier dispositivo de hardware.
Una de las ventajas de Open Roberta Lab es que se puede utilizar con cualquier tipo de dispositivo (PC, tablet, smartphone); solo se necesita un navegador web . El laboratorio se puede usar sin registrarse y no se necesita una cuenta de usuario. A partir de la versión 2.2.1, el sistema operativo basado en Linux EV3dev es oficialmente compatible con el robot LEGO MINDSTORMS EV3. Open Roberta Lab está disponible en los siguientes idiomas: catalán, checo, danés, holandés, inglés, finlandés, francés, alemán, italiano, polaco, portugués, ruso, español y turco.

## Comunidad de código abierto

La plataforma de programación Open Roberta Lab es desarrollada en código abierto. Tanto el software como las herramientas de desarrollo de código abierto están disponibles en un servidor de Fraunhofer Society. El equipo de desarrollo de Fraunhofer trabaja junto con profesores y expertos en educación de la red Roberta. Por lo tanto, también las universidades y los estudiantes están involucrados en el desarrollo. Debe dirigirse especialmente a las alumnas, el principio rector del proyecto Roberta.

## Lenguaje de programación NEPO®

NEPO es un metalenguaje de programación gratuito de código abierto que pueden utilizar estudiantes, académicos, profesores y otras personas interesadas dentro del Open Roberta Lab. NEPO se traduce como New Easy Programming Online (en inglés, Nueva Programación Fácil en Línea), o simplemente OPEN, (abierto en inglés), leído al revés. NEPO es el nombre del lenguaje de programación gráfico y su capa de conexión de hardware acoplada. NEPO utiliza la biblioteca Blockly disponible gratuitamente. Además, dentro de NEPO hay funcionalidades y mejoras adicionales que se han adaptado para Open Roberta. El paradigma de programación de NEPO está inspirado en Scratch, que fue desarrollado por el Instituto de Tecnología de Massachusetts . Un bloque NEPO siempre representa y encapsula una determinada funcionalidad del robot. Un conjunto de características de bloques se puede reconocer fácilmente a través de la categoría de bloque asociada, por ejemplo, "sensores". La programación con NEPO sigue un principio simple. Los bloques están interconectados y serán ejecutados por el robot según su orden. Este principio se llama "operación secuencial".

### Categorías de bloques en NEPO

Todos los bloques disponibles se enumeran y clasifican como Acción, Sensores, Control, Lógica, Matemáticas, Texto, Colores, Variables, Funciones y Mensajes, como se muestra en la siguiente tabla.
| Categoría | notas | Categoría | notas |
| Acción | Incluye bloques para que el robot realice directamente. | Texto | Incluye bloques para escribir cadenas de caracteres en la pantalla del robot. |
| Sensores | Contiene bloques para todos los sensores estándar del sistema EV3. | Colores | Bloques de colores estándar para comparar las entradas de los sensores. |
| Control | Incluye bloques para el control de la secuencia del programa. La categoría incluye los siguientes bloques: Si .. hacer, Si .. hacer .. si no, repetir indefinidamente, repetir .. veces, esperar .. ms, esperar hasta . . | Variables | Se pueden definir variables locales y globales. |
| Lógica | Con los bloques de "lógica", se pueden crear condiciones. Con esta condición se pueden interrelacionar estados, valores y eventos entre sí. | Funciones | Se pueden definir funciones con parámetros de entrada y salida. |
| Matemáticas | Operadores matemáticos y bloques de parámetros. | Mensajes | Incluye bloques para enviar y recibir mensajes por bluetooth. |
| Lista | Incluye bloques para crear una lista y para buscar u ordenar los elementos de la lista. | Inicio del programa | Cada programa comienza con este bloque. Este bloque siempre está disponible en el espacio de trabajo. |

### Conector NEPO de entrada/salida

Dependiendo del bloque, se pueden pasar diferentes valores a un bloque. El tipo del valor se puede identificar por los compuestos coloreados (llamados incluidos conectores) de un bloque. Solo si los colores de la entrada y el conector de salida coinciden, estos bloques se pueden conectar.
Opcionalmente, un bloque también puede pasar un valor a otro bloque. Estos bloques tienen conectores de salida de colores. Solo si los colores de la entrada y el conector de salida son iguales, estos bloques se pueden conectar.

### Tipos de datos

En total, hay seis tipos de entrada y salida dentro de NEPO. Estos tipos pueden tener los siguientes valores:
* Valor lógico (celeste)
* Número (azul oscuro)
* Cadena / Texto (verde)
* Color (amarillo)
* Lista (púrpura)
* Conexión (rosa)

## Simulador de Open Roberta

Desde la versión beta 1.3.0, Open Roberta Lab también ofrece un entorno de simulación. Esta es una simulación de un modelo de robot bidimensional equipado con dos ruedas (accionamiento diferencial). Para programar el robot simulado también se puede utilizar el lenguaje de programación NEPO. El modelo 2D simulado incluye la simulación de un sensor ultrasónico, un sensor táctil, un sensor de color y la visualización de un LED. Además, se pueden elegir diferentes ambientes. Desde la versión beta 1.4.0, los bloques NEPO se pueden usar sin ningún cambio para la simulación 2D y el robot real.

## Open Roberta Gallery

A partir de la versión 2.3.0, está disponible la "Galería", lo que permite a los usuarios compartir sus propios programas con todos los demás. Los usuarios registrados con una cuenta verificada pueden compartir sus programas haciendo clic en "editar" en la barra de menú, seguido de un clic en el punto de menú "mis programas".
Para cargar un programa de la Galería, los usuarios, que hayan iniciado sesión o no, hacen doble clic en el programa elegido y luego pueden ver, cambiar o descargar su contenido.

## Sistemas integrados

| Sistema | Lenguaje de programación | Simulación presente | Conectividad | Firmware | Compilador |
| LEGO Mindstorms EV3 | JAVA, Python, C/C++ | sí | USB, WLAN | leJOS, EV3dev, c4ev3 | NXC |
| LEGO Mindstom NXT | Not eXactly C (NXC) | sí | USB | NXC | LEGO originales |
| Calliope mini | C++ | sí | USB, Bluetooth | | Micro:Bit |
| micro: bit | MicroPython | sí | USB | arduino-builder | Micro:Bit |
| NAO | Python | no | WLAN, Ethernet | | Original de NAO |
| Bot'n Roll | C++ | | | | Arduino + Bibliotecas Bot'n Roll |
| edison | Python, MicroPython | no | Audio | | Original de Edison |
| Lego WeDo2 | JASON Stackmaschine | no | Bluetooth | original de Lego | original de Lego |
| Arduino Uno/Nano/Mega | C/C++ | no | USB | | arduino original |

## Historia

Open Roberta es una extensión tecnológica del "concepto Roberta". Roberta (abreviatura de: "Roberta - Aprendiendo con robots") es una iniciativa educativa de Fraunhofer fundada en 2002 por el Ministerio de Educación e Investigación de Alemania . Desde 2002, más de 350.000 alumnos han participado en los cursos de Roberta.

## Premios

Open Roberta fue galardonada con el "Bundessieger 2015" en el desafío "Alemania Tierra de Ideas" en la categoría de educación. En 2016, Open Roberta ganó el premio bitkom "d-elina" en la categoría profesional.