jueves, agosto 03, 2017

Programar el robot desde el celular

Se agrega a la buena noticia que hace poco traía a “Expediciones Virtuales” respecto a que MakeBlock estaba disponible para Linux, que ya se existe, también, la versión para Chromebook que funciona de maravillas (algún día escribiré un post sobre mi maravillosa experiencia con esta eficiente y económica maquinita basada en Chrome OS más que ideal para usar en educación cuando se cuenta con buena conectividad).
Pero hoy les quiero contar sobre otra forma de programar MBot: a través del celular. Les contaré de una de las aplicaciones (disponibles para Android e iOS) que permiten programar con un código más simplificado pero ideal para iniciarse en la programación de robots, con la ventaja adicional de ofrecer un tutorial para aprener los comandos antes de zambullirse en la creación de nuevos programas. Esta aplicación se llama simplemente MBlock.


Instalar el Firmware
La app de MBlock para el celular se comunica con el robot utilizando Bluetooth, por lo cual es necesario, antes de utilizalo, que sea actualizado el firmware de Arduino, lo cual se debe hacer desde la PC o la Chromebook con MakeBlock. El firmware es un software que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Como el firmware está muy integrado con la electrónica del dispositivo tiene directa interacción con el hardware y es el encargado de controlarlo para ejecutar correctamente las instrucciones externas. Esto significa que sin la actualización correcta del firmware, el robot no podrá recibir las órdenes por bluetooth.
Esto puede parecer complicado pero no lo es. Actualizar el firmware de Mbot es muy fácil: solo hay que conectar el robot por USB y luego elegir la opción de actualización. Esto carga el programa y el robot ya queda listo para recibir instrucciones desde el celular.


1) Conectar el robot


2 - Seleccionar el board (Mbot)


3 - Cargar el firmware

Eso sí: es muy importante tener en cuenta que cada vez que carguemos otro programa desde dispositivos diferentes al celular, el firmware se borrará y será necesario actualizarlo nuevamente repitiendo el procedimiento para volver a programar el robot desde el celular.


Conexión vía bluetooth
Una vez que hemos actualizado el firmware, lo que sigue es activar la conexión entre el celular y el robot. Para ello, habiendo activado la opción bluetooth en el teléfono, tendremos que acercar el dispositivo a fin de que se establezca la conexión, lo cual, si todo está en orden sucederá muy rapido.


El celular buscando la señal del robot (que, obviamente, debe estar encendido)


Tutorial por niveles o creación libre
Apenas se confirma la conexión, la app ofrece dos opciones.





La primera de ellas, el tutorial, es una secuencia de desafíos secuenciados que permite aprender rápidamente los comandos que controlan el robot.


Cada vez que el pequeño código está resuelto de acuerdo al problema planteado en el desafío, el programa invita a testear el programa.



Si la resolución fue correcta, el robot "festeja" permite avanzar con el siguiente desafío.



En la segunda opción, creación libre, el usuario tiene disponibles todos los comandos y permite programar al robot sin ninguna secuencia limitante. Simplemente se escribe el código deseado utilizando los bloques necesarios para luego transmitir el programa al robot bluetooth mediante para ejecutar el programa. Por supuesto, esta es la parte que más potencial tiene para experimentar y aprender.







lunes, junio 05, 2017

Siga la línea (lo mejor que pueda)


Quizá una de las funciones más interesantes de los robots creados para robótica educativa es la que involucra los sensores de línea a los que había presentado en un viejo post hace ya algún tiempo.

El sensor de líneas permite dectectar "blanco" o "negro" sobre el suelo, lo cual resulta ideal para que el robot circule de acuerdo a un camino (o pista). Un programa básico para hacer funcionar al robot sobre una pista sería el siguiente:



En esta versión, el sensor detecta si se aleja de la línea blanca para corregir el curso con un giro según corresponda. El programa parece funcionar muy bien cuando lo probamos:



Pero... ¿si en vez de utilizar una línea blanca, utilizáramos una línea negra como pista? El desafío parece ser simple: invertimos los colores de detección y los correspondientes giros. Sin embargo, al probar el código en otra pista el robot pierde el curso y en curvas más exigentes se despista. Esto nos pone frente al desafío de intentar un programa más preciso. Veamos este intento:



Este es otro modo de pensar el código en el cual se coloca como condición a la eventual situación en la que se encontrarían ambos sensores para decidir giros y nivel de velocidad. El resultado es más preciso. El robot ya no pierde la línea tan facilmente como con la versión anterior.



Sin embargo, subsiste una falla... si el robot pierde la línea comienza a girar sobre sí mismo, lo cual reduce sus posiblidades de volver a encontrar la línea por la cual circulaba. ¿Cómo podría solucionarse esto?


Preguntas como esta se sucederán una y otra vez al probar el programa en pistas distintas. Y así es como el desafío se renueva y puede volverse más exigente. Porque no hay una única solución. No sirve con que funcione "teóricamente", el robot tiene lograrlo, hay que identificar el problema y proponer una hipótesis para corregirlo. Y cada vez que lo volvemos a pensar, hay algo nuevo que aprender. 



lunes, mayo 22, 2017

"MakeBlock" para Linux

Hoy retomo los desafíos de robótica educativa, que dejamos pendientes y con una excelente noticia. MakeBlock está disponible para Linux y resuelve en un solo paso todos los trucos que en su momento explicaba en este viejo post.

"MakeBlock" le da la bienvenida a mi Ubuntu

Eso significa que, ya no tendremos que utilizar Wine y que además no será necesario copiar y pegar el código en un IDE para cargarlo en la placa Arduino del Robot sino que esto esto se podrá hacer directamente desde el mismo entorno.
La forma de cargar el programa a través de un cable USB es muy simple:
  1. Hacer click sobre el bloque “mBot Program” aparecerá automáticamente la “traducción del código” en una columna ubicada a la derecha
  2. Conectar la placa de Arduino al Robot con el cable USB (¡no se olviden de encender la placa!)
  3. Asegurar que el puerto está conectado. Para ello verificar en el menú superior la habilitación del puerto USB.
  4. Hacer click sobre el botón “upload to Arduino”.

Carga del programa en cuatro pasos



El programa comenzará a cargarse mientras se muestra el código binario al pie de la columna derecha. Cuando esté listo, aprecerá un cartel que dirá “upload finish”. Entonces, ya podemos desconectar el cable y verificar si el programa funciona como lo deseamos.


Y si cuando arranca nuestro robot… lo que pasa no es lo imaginado, ya saben, a revisar el programa ¡y a volver a empezar con una nueva versión!

Por último, solo una cosita: para editar directamente el código (hemos mostrado algunos ejemplos de como esto podría ser necesario en nuestro post “Música Robótica”) ahí sí deberán utilizar el IDE de Arduino porque MakeBlock solo permite la edición del programa uitlizando los bloques.

Este es el sexto post sobre nuestras experiencias con mBot. Si te interesa conocer como llegamos aquí podés vistar nuestros post anteriores: “Primeras experiencias en robótica educativa”,  “Con ojos de robot”,  “¡Alto ahi”: Programando con el control remoto” y “Música Robótica” y “Bailando por un programa” en este mismo blog.

lunes, mayo 08, 2017

Programar para aprender: el diseño de una capacitación docente en línea


En los últimos años se han conocido diversos programas con el propósito de introducir la enseñanza de la programación en la escuela. El interés por estos contenidos se funda, entre otras cuestiones, en las ventajas de promover habilidades lógico matemáticas propias del pensamiento computacional en etapas tempranas.

A fin de capacitar a los docentes se ofrecen cursos y talleres generalmente en formatos presenciales e híbridos. Pero para ampliar geográficamente este alcance se requería una propuesta complementamente en línea. 

En alianza con Chicos Net, el PENT de Flacso Argentina asumió esta tarea, cuyo desarrollo y alcance fueron abordados en este artículo que referimos y que  escribimos para el Congreso Interfaces de la UP junto a mi colega Juan Pablo Baraga.

Hemos desarrollado en este artículo el enfoque de la Programación Creativa, que busca la convergencia entre la tradición pedagógica desarrollada la última década en materia de inclusión de TIC con sentido pedagógico y este interés emergente por la enseñanza de la programación.


En segundo lugar, hemos descripto las estrategias de eLearning que tomamos para abordar esta capacitación en "Programación Creativa" buscando una solución intermedia entre el enfoque de la Educación en Línea y los cursos MOOC.



jueves, enero 26, 2017

¿De eso no se habla? Hablemos de la Deep Web.

Solemos creer que una de las características de nuestros tiempos es la facilidad de acceso a la información. Por cierto, todo parece estar al alcance de Google. Pero esto no es tan exacto ya que gran parte del contenido en la red se encuentra oculto o difícil de acceder. Es por esto que la parte de la Web conocida como Deep Web (Web profunda) se fue ganando todo el misterio de una leyenda urbana. Para algunos es el territorio de criminales de todo tipo y, para otros, el último refugio de la privacidad y la libertad. Y así están las cosas hoy por hoy. Pero antes de sacar conclusiones, revisemos las definiciones...


¿Profunda o oscura? Deep Web vs. Dark Web
Como en tantos otros órdenes, las cosas no suelen ser blanco o negro. En efecto, aquí también existen diferentes niveles de profundidad… o de luz, si se quiere. En línea con las metáforas de océanos y navegantes, es frecuente representar la web como un iceberg, donde solo existe una pequeña superficie visible mientras que gran parte permanece desconocida y oculta en las profundidades.




La superficie visible (Surface Web)
La superficie visible de la web está formada por esos sitios con los que estamos más familiarizados porque allí se encuentra todo lo que puede ser indexado por un motor de búsqueda como Google (o Bing, o Yahoo). Estos motores de búsqueda se basan en páginas que contienen enlaces que permiten identificar contenido, organizarlo y, luego, encontrarlo cuando lo buscamos. Pero no todos los contenidos son indexados de este modo ya que no todos cumplen con los requisitos técnicos que requiere la indexación. ¿Qué sucede, entonces, con los contenidos que permanecen por fuera de la indexación? Para saberlo, es necesario sumergirnos un poco hacia el sector invisible del témpano.


Comenzamos a sumergirnos (Deep Web)
Por contraste de definiciones, en un sentido estricto, se dice que así como la Web superficial (Surface Web) es aquello que cualquier motor de búsqueda puede encontrar, la Web profunda (Deep Web) es todo lo que, al no estar indexado, resulta un poco más dificil de hallar para el usuario. ¿Cuando sucede esto? Veamos algunos ejemplos:
  • Cuando los contenidos están organizados a través cajas de búsqueda y son invisibles para los motores de los buscadores que solo utilizan links y por lo tanto no pueden reconocerlos ni organizarlos.
  • Cuando los contenidos están dispuestos en bases de datos que no son técnicamente preparadas para que los datos sean indexados por lo que permanecen fuera del rastreo sistemático de los buscadores. Suelen ser datos no indexados gran parte de la información académica, médica, documentos legales, reportes científicos, bases multilingües, fuentes gubernamentales, repositorios particulares, etc.
En síntesis, los motores de búsqueda no siempre pueden indexar los contenidos publicados en la web y pueden permanecer ciegos frente a estos datos. La mayor parte del contenido ubicado en la Web Profunda (Deep Web) se refiere a este tipo de datos y no necesariamente se trata de información ilegal o espeluznante. En términos prácticos, solo se trata de datos a los que resulta más difícil acceder.


Oscuras profundidades (Dark Web)


Pero la cuestión cambia bastante cuando llegamos a la Web Oscura (Dark Web) que es esa porción de la Deep Web que, por motivos diversos, fue deliberadamente escondida y la razón por la cual resulta inaccesible a través del uso de un navegador web estándar. El contenido más célebre de la Dark Web es el que se encuentra en la red TOR, una red anónima a la que sólo se puede acceder con un navegador web especial: el navegador TOR. Este navegador, se presenta desde su página Web como un refugio para la libertad y el derecho al anonimato:


Tor es un software libre y una red abierta que contribuye a defenderse del análisis del tráfico en la web, una forma de vigilancia que amenaza la libertad personal y la privacidad, las actividades y relaciones comerciales confidenciales y la seguridad.


La presentación de TOR concluye con una apología del anonimato que se logra en la red evitando la identificación de la conexión a Internet del usuario y a partir de ello, el reconocimiento de los sitios que visita o su ubicación física.


De esta forma, TOR permite acceder a sitios que permanecen ocultos y hacerlo desde el anonimato. En sí mismo, esto no parece tener nada de malo, sin embargo,es aquí donde aparece la misteriosa Dark Web. Se dice que en esa parte de la web pueden hallarse servicios al margen de toda ley en los cuales, involucrarse puede dejar al usuario con muy pocos recursos para defenderse:la pregunta es entonces... ¿qué tanta libertad y seguridad nos permite la Dark Web?


En un próximo post hablaremos de ello, porque vale retomarlo...


Referencias:



miércoles, enero 25, 2017

¿Qué es la “neutralidad de la red”?

El término aparece con frecuencia y su mismo nombre invoca una preocupación que generalmente, se intuye, posee una carga ideológica. No es novedad para nosotros (y no profundizaremos al respecto en este post) que la tecnología no es neutral e implica, necesariamente, un posicionamiento ideológico. Sin embargo, esta mirada, en mi opinión, no debería hacer que esquivemos la explicación técnica, porque de lo contrario, terminamos debatiendo sobre algo que no podemos ejemplificar. Muchas veces he observado en congresos y foros a los que he asistido que intelectuales de la red de redes y los nuevos medios, con honradas excepciones, asumen posiciones radicales aún con ciertas debilidades técnicas que los llevan, a mi entender, a conclusiones un poco apresuradas o, por lo menos, fundamentadas de forma insuficiente.
Sin profundizar aquí en las razones, es cierto que, en nuestro medio, es más fácil imaginar, simplemente, el control de contenidos con fines políticos o ideológicos. Sin embargo, una explicación técnica más precisa nos permite ver como una red no neutral puede afectar la competitividad y, con ella, el desarrollo económico y tecnológico.
A fin de esclarecer estas ideas y hacer un aporte al debate, traduzco al castellano (y adapto para su mejor comprensión) un post publicado por Rajan Bhavani en Quora que me pareció muy útil para discutir este tema.
Dos palabras: Net Neutrality (neutralidad de la red)
La mayoría de la gente no comprende qué es la "neutralidad de la red", sin embargo, se trata de algo que tendrá un enorme impacto en la vida cotidiana muy pronto, afectando, por ejemplo, el costo de los servicios de acceso doméstico a Internet.

A fin de explicar estas razones se propone una analogía histórica relacionada con el sistema ferroviario: en los EEUU, en los tiempos anteriores al avión y al automóvil, la gente utilizaba el tren como principal medio de transporte. Pequeñas compañías locales de ferrocarriles eran creadas y cada una de ellas poseía sus propias vías férreas. De este modo, cada una de ellas tenía un pequeño porcentaje del total de vías ferroviarias de los EEUU y todas tenían que negociar tarifas justas para los trenes propios cuando necesitaban atravesar las vías de los competidores o corrían el riesgo de no tener acceso a la gran parte de las vías del sistema. A medida que fue pasando el tiempo, algunas compañías ferroviarias comenzaron a crecer y a comprar a las competidoras para formar empresas nacionales. Esto es lo que en un sistema capitalista se llama "consolidación" y representa una etapa normal en la evolución de un mercado. Pero este crecimiento, cambiaría dramáticamente cuando Vanderbilt, una empresa dedicada al transporte en aquellos tiempos, comenzó a sacar una ventaja excesiva. Por entonces, existía un solo puente de ferrocarril de conexión en Nueva York: el puente del río Hudson, que era propiedad de Vanderbilt. Dado que el puerto de Nueva York era el más grande de los EEUU en esa época, Vanderbilt decidió bloquear el acceso a las vías férreas de ese puente a todas las compañías competidoras.

Mapa antiguo de la red de ferrocarriles de Nueva York
New York Central y Hudson River Railroad (1876)

Consecuentemente, Vanderbilt tenía el poder de decidir qué cosas entraban o salían del puerto de Nueva York. Y nada había que hacer si, por ejemplo, una compañía no le convenía a Vanderbilt: los competidores obtenían un acceso más fácil y económico al puerto de Nueva York de modo tal que la mercadería de la compañía bloqueada nunca podía acceder.

Logotipo de AT&TEl control del puente sobre el río Hudson permitió a Vanderbilt obtener ganancias extraordinarias en perjuicio del consumidor promedio que tenía que pagar precios mucho más altos por cualquier producto que tuviera algún componente que requería ingresar o salir a través del puerto de Nueva York en tren. Vanderbilt invirtió las ganancias obtenidas de este modo en ferrocarriles mucho más competitivos que le permitieron explotar otros puntos críticos similares al puente de Nueva York en otros sitios de la red ferroviaria nacional. Esta situación injusta que afectaba la competencia entre diferentes empresas se resolvió con las leyes antimonopolio en las que prácticas como las de Vanderbilt fueron consideradas ilegales. Muchos años después, las leyes antimonopolio fueron aplicadas también a AT&T que buscó sacar ventaja excesiva de los puntos críticos de la infraestructura telefónica de los EEUU. En consecuencia, AT&T debió, por entonces, dividirse en pequeñas empresas (lo que informalmente se conoció como “Baby Bells”) .

Logotipo de ComcastDe regreso a nuestros días, se observa que está sucediendo lo mismo con Internet. Hay un punto crítico en la infraestructura de Internet llamada la "última milla", la parte física de la red que se conecta con los hogares. La mayoría de las personas sólo tiene una opción para el Internet de alta velocidad por cable en el hogar y en el trabajo a través de la compañía de cable local. En EEUU, Comcast es el mayor propietario de esta infraestructura y controla casi la cuarta parte de todas las conexiones a Internet y el 40% de todas las conexiones de más de 25 Mbps.

logotipo de Netflix
Esto significa que mañana, Comcast puede decidir que Netflix no está permitido en su red, o que para ver sus contenidos, Netflix (o sus clientes) estarían obligados pagar un precio más alto a Comcast (ya que Netflix compite con los contenidos de Comcast y su estudio de producción NBC). Comcast, incluso, podría decidir bloquear sitios web como Fox, CNN, CBS y otras redes de noticias, ya que compiten con NBC News! Y nada podría hacerse al respecto puesto que sería una maniobra legal.

Imaginemos, entonces, algo más que Comcast podría hacer legalmente:
Oferta hipotetica en forma de publicidad gráfica.
Hipotetica oferta al consumidor de precios diferenciados por proveedor de contenidos
La neutralidad de la red es un principio postulado para evitar este tipo de prácticas monopólicas. Afirma que debe existir un transporte común para todos los puntos críticos de la red, de manera tal que realizar algo como lo que acabamos de imaginar, sería ilegal.

800px-Simbolo_de_la_red_neutral_espanol.svg.png

La neutralidad de red es el principio por el cualquier los proveedores de servicios de internet y los gobiernos que regulan Internet deberían tratar a todo tráfico de datos que transita por la red por igual, sin discriminarlo o cargar al usuario de manera diferente según el contenido, página web, plataforma, aplicación tipo de equipamiento utilizado para el acceso, o modo de comunicación.
El término fue acuñado en la Universidad de Columbia por el profesor Tim Wu in 2003, como una extensión del concepto de una operadora común que era utilizado para describir el papel de los sistemas telefónicos.
Wikipedia, Neutralidad de la red

Lo relevante del tema es que no se trata de una preocupación hipotética inspirada en viejas experiencias. Estas situaciones ya comenzaban a suceder en los EEUU antes de que se establecieran las reglas de neutralidad de la red. Veamos como: Comcast redujo el tráfico de video (afectando su calidad) a sus suscriptores en casi un 30% hasta que Netflix aceptó pagar a Comcast millones de dólares en honorarios adicionales para que los clientes de Comcast (las personas que ya pagaban por el servicio de Internet) pudieran acceder a los contenidos de Netflix con su calidad original:
Porcentaje de reducción de la velocidad de descarga de Netflix desde enero de 2013

En términos muy concretos, desconocer el principio de la neutralidad de la red significa un costo más alto para los servicios de Internet, y un serio freno para empresas innovadoras o disruptivas de Internet. ¿Por qué? Porque cuando Google, Amazon, Facebook y todas esas empresas eran jóvenes emprendimientos no estaban en condiciones de pagar millones en tarifas de acceso. El próximo despegue innovador no será capaz de pagar esas sumas tampoco… y esos nuevos servicios no tendrán la oportunidad y fracasarán sin que sus potenciales usuarios lleguen a conocerlos ya que nunca sabrán qué es lo que ha sido bloqueado.
Hasta aquí, mi traducción adaptada. El post de Rajan Bhavnani concluye expresando su preocupación por las medidas que podría adoptar Donald Trump como presidente de los EEUU ya que se muestra favorable a limitar las implicancias del principio de neutralidad de la red. Pero ese... es otro debate, y para ello, los remito a la fuente, en Quora.