Proyecto RoboComp

Esta página contiene los detalles de un proyecto de redacción técnica aceptado para la temporada de Documentos de Google.

Resumen del proyecto

Organización de código abierto:
RoboComp
Escritor técnico:
Le Thai An
Nombre del proyecto:
Componentes básicos de RoboComp
Duración del proyecto:
Duración estándar (3 meses)

Project description

Motivación

RoboComp es uno de los frameworks de robótica conocidos para investigaciones y aplicaciones prácticas. El repositorio de robocomp incluye una amplia variedad de componentes (que se mantienen en un repositorio más pequeño llamado robocomp-robolab) para diferentes aplicaciones robóticas, como el control motor, la localización y la asignación, la navegación, el reconocimiento, etc. Sin embargo, el repositorio de componentes carece de documentación detallada para la compilación o el uso de cada componente, por lo que los desarrolladores nuevos tienen una usabilidad limitada. El objetivo de la propuesta es resolver este problema documentando los componentes fundamentales de RoboComp y compilando un documento de uso de ejemplo para combinar diferentes componentes a fin de resolver una tarea específica de robótica. Los detalles del proceso de documentación se analizarán en la siguiente sección y, luego, se seguirá con la sección de hitos para planificar el marco de tiempo necesario para completar el proyecto. Por último, se mencionan algunas notas sobre el proceso de documentación.

Descripción

Como se mencionó, este proyecto tiene dos objetivos principales:

  • Documenta la descripción detallada, la compilación y la instalación, la configuración, los usos y los problemas conocidos relacionados con cada componente de RoboComp.
  • Escribe una guía de ejemplo en la que se usen diferentes componentes del entorno de RoboComp para resolver una tarea específica de robótica, es decir, la localización.

La mayoría de los componentes básicos del repositorio robocomp-robolab actualmente no tienen instrucciones detalladas sobre cómo compilar y usar en diferentes configuraciones de parámetros. Esto crea un gran obstáculo para los nuevos desarrolladores que deseen usar componentes en su proyecto o contribuir al framework. Esto se debe a que muchos componentes son wrappers de controladores externos o bibliotecas que tienen muchas dependencias, lo que dificulta la compilación y la instalación de tareas. Además, muchos componentes unen el controlador de dispositivo complejo (es decir, hokuyoComp genérico) para proporcionar una interfaz de mensajes en RoboComp que requiere conocimientos específicos del dispositivo para ajustar los parámetros.

Por lo tanto, la necesidad de documentación detallada, que abarque descripciones de dispositivos, resolución de dependencias y usos, es esencial para la contribución de código abierto. En el vínculo, se encuentra un ejemplo del documento de componente hokuyoComp de mi trabajo:

https://github.com/anindex/robocomp-robolab/tree/master/components/hokuyoComp

Para escribir una documentación de componentes concreta y detallada con un enfoque descendente, al menos se debe poder experimentar el contenido escrito en ese documento, ya que el objetivo final de la documentación es transferir el conocimiento práctico a los desarrolladores heredados. La estructura propuesta para cada documento componente se presenta de la siguiente manera:

  • Descripción
  • Compilación e instalación
  • Parámetros de configuración
  • Cómo iniciar el componente (usos)
  • Errores conocidos

En el ejemplo, uno primero recopila información sobre la especificación del sensor Hokuyo, lee el código de componente para comprender la imagen de las funcionalidades de los componentes y escribir descripciones de componentes. Además, comprender el entorno de RoboComp y conocer los parámetros específicos del dispositivo, así como las dependencias de la biblioteca, ayudaría a documentar el proceso de compilación, instalación y configuración del componente. Por ejemplo, la compilación de hokuyoComp necesita el paquete deb liburg0-dev de Ubuntu 14.04, pero el paquete deb se quita de Ubuntu PPA en una versión posterior, por lo que debemos aplicar la solución alternativa para la compilación como se indica en el documento. En este proceso, también podemos registrar errores conocidos a fin de acelerar la depuración para desarrolladores nuevos. Por último, se documenta el uso de los componentes para diferentes situaciones de uso a fin de integrar fácilmente el componente en el panorama de RoboComp para diferentes tareas de robótica.

Logros

En esta sección, se planifica un plazo inicial para completar los objetivos mencionados del proyecto. Seleccionaremos documentos de componentes para escribir en función de categorías (es decir, componentes de cámara y componentes láser). La estimación actual del tiempo para completar el documento de componentes se basa en el tiempo de completar documentos de ejemplo de hokuyoComp. El horario es el siguiente:

  • Del 1 de ago al 1 de sep: Vinculación con la comunidad:

    1. Organizar una reunión semanal para establecer el alcance del proyecto y las expectativas de los escritores y de los mentores.
    2. Obtén una comprensión profunda del framework de RoboComp.
  • Del 2 de septiembre al 2 de noviembre: Escritura de documentos para cada componente del repositorio robocomp-robolab con perfeccionamiento iterativo entre mentores y escritores a través de reuniones (se espera que completen la mayoría de los documentos sin documentar)

  • 2 al 26 de noviembre: Escritura de un documento general como ejemplo de cómo utilizar diferentes componentes para resolver una tarea de robótica

  • Del 27 al 29 de noviembre: Informes de fin de proyectos.

  • Después de GSoD 2019: Me gustaría seguir conectado con RoboComp para seguir mejorando y mantener mis trabajos.

Notas finales

Es fundamental escribir un ejemplo general de cómo integrar diferentes componentes en el entorno de RoboComp para que los usuarios comprendan el panorama general de las funciones de RoboComp. Este documento de ejemplo se analizará más a fondo con los mentores para decidir qué tarea de robótica es adecuada según la implementación actual de RoboComp.