Reporte: Por que no funciona.

En esta actividad se quiere realizar un analisis sobre un bug presente al trabajar con gazibo, simulador de turtlebot de ros. El error consiste en que al realizar una modificación en las variables de entorno para cambiar la version del turtlebot, existio un pŕoblema con teleop pues los comandos ingresados no generaban efecto en el simulador, es decir, el turtlebot no se movia. Para corregir este error, se trator de abordar el problema de dos maneras.

Primera manera: comparar con el sano

En esta ocación se tiene un modelo que funciona correctamente (que corresponde a la versión sin modificaciones), la idea de esto es comparar la simulación que falla con la que funciona y ver donde esta el error. Mediante el comando rqt_graph se realizo la comparacion entre los modelos y sin mayor problema se vio que en el modelo que falla, el nodo gazebo no estaba comunicado con teleop (cosa que si ocurre en el modelo que funciona). Este metodo fue efectivo pues se tenia una version que funcionaba, pero esto no siempre es posible. Por esta razon se busco otra manera de encontrar que nos llevo al metodo dos.

Modelo que funciona

Modelo que no funciona

Segunda manera: Debugging

Suponiendo que no se tiene conocimiento del error, si el simulador no se mueve puede deberse a que el robot no escucha o bien, teleop no envía las señales. Para chequear esto, se analizo por separado los nodos para ver en cual de estos estaba presente el problema. En el caso de teleop, primero se reviso el nodo con rosnode lo cual nos permitio encontrar el tópico que publica, luego con rostopic usamos el comando echo para ver si el nodo teleop estaba publicando en el tópico encontrado. Lo anterior si realizaba correctamente por lo cual el problema no estaba en teleop. Revisamos los nodos subcritos a teleop dado que este sí estaba enviando mensajes, luego de revisar la lista de tópicos conectados a teleop notamos que no se encontraba gazebo ni mediante topicos intermediarios, lo cual nos llevo a revisar con rosnode a gazebo para confirmar la suspechado, el cual solo estaba conectado consigo mismo.

Al terminar el análisis se puede afirmar cual es el error: No hay conexión entre gazebo y teleop lo cual se puede arreglar implementando un nodo que sirva de intermediario entre ambos nodos que deberían sus respectivos tipos de mensajes. Esto se logro gracias a las herramientas de ros en particular: rqt, rostopic, rosnode, roslist. Los cuales nos permitieron revisar si existía una conexión, además de ver el estado y lo que esta haciendo cada nodo. Fue difícil comprender las interacciones entre los nodo por el exeso de informacion que da cada comando. Como crítica a rqt_graph, este no entrega la informacion clara (palabra sobrepuestas, sobre-representacion de nodos) lo cual dificulta notoriamente la información que intenta mostrar.