Skip to content

Commit

Permalink
Added project plan and page config
Browse files Browse the repository at this point in the history
  • Loading branch information
gonzafernan committed Dec 31, 2023
1 parent 477cd60 commit c1b43ff
Show file tree
Hide file tree
Showing 16 changed files with 327 additions and 101 deletions.
10 changes: 5 additions & 5 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.

title: Your awesome title
email: your-email@domain.com
author: GitHub User
title: YAT (Yet Another TurtleBot)
email: fernandez.gfg@gmail.com
author: Gonzalo G. Fernandez

# Copyright setting
# You can use any html code, currently below placeholders are available:
Expand All @@ -40,7 +40,7 @@ author: GitHub User
# "Copyright (c) 2017-{currentYear} <a href="https://example.com">{author}</a>"
# "Copyright © 2017-2021 Foobar"
#
copyright: "Unpublished Work (cleft) 2017-{currentYear} {author}"
copyright: "Unpublished Work (cleft) 2023-{currentYear} {author}"

description: >- # this means to ignore newlines until "baseurl:"
Write an awesome description for your new site here. You can edit this
Expand All @@ -49,7 +49,7 @@ description: >- # this means to ignore newlines until "baseurl:"
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. https://example.com
favicon: "" # the favicon for your site
favicon: "/assets/images/yat-favicon-color.png" # the favicon for your site

# Yat date format
# refer to https://shopify.github.io/liquid/filters/date/ if you want to customize this
Expand Down
4 changes: 2 additions & 2 deletions _data/defaults.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
home:
heading: "Your awesome heading"
subheading: "Your awesome subheading"
heading: "Yet Another TurtleBot"
subheading: "Two-wheeled mobile robot based on SoC Zynq 7000"
banner: "Your image url"
75 changes: 0 additions & 75 deletions _posts/2015-01-01-welcome-to-jekyll.md

This file was deleted.

13 changes: 0 additions & 13 deletions _posts/2016-08-12-my-example-post.md

This file was deleted.

196 changes: 196 additions & 0 deletions _posts/2023-04-25-project-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
---
layout: post
title: CESE project plan
subtitle: Development of mobile robot for monocular SLAM
author: Gonzalo G. Fernandez
categories: plan
# banner:
# video: https://vjs.zencdn.net/v/oceans.mp4
# loop: true
# volume: 0.8
# start_at: 8.5
# image: https://bit.ly/3xTmdUP
# opacity: 0.618
# background: "#000"
# height: "100vh"
# min_height: "38vh"
# heading_style: "font-size: 4.25em; font-weight: bold; text-decoration: underline"
# subheading_style: "color: gold"
tags: cese project-planning
top: 1
sidebar: []
---

*Esta planificación fue realizada en el curso de Gestión de proyectos entre el 25 de abril de 2023 y el 13 de junio de 2023*

## Descripción técnica conceptual del proyecto a realizar

La navegación autónoma ha sido un tema de investigación activo durante décadas, pero
recientemente ha ganado una atención sin precedentes gracias a los avances en tecnologı́as
como la inteligencia artificial y la robótica.

La navegación autónoma se refiere a la capacidad de un sistema para planificar y ejecutar sus
propias acciones de manera autónoma, sin la necesidad de una intervención humana constante.
La capacidad de un sistema para tomar decisiones en forma autónoma en su navegación a través
del entorno es crucial para una amplia variedad de aplicaciones, desde los vehı́culos autónomos y
los drones, hasta los robots industriales y los sistemas de logı́stica.

La investigación de técnicas de bajo costo es importante para permitir que la tecnologı́a sea
accesible para un mayor número de aplicaciones y usuarios. Esto es especialmente importante
en paı́ses en desarrollo o en áreas con recursos limitados, donde los sistemas de navegación
autónoma pueden ser prohibitivamente costosos.

La restricción económica en el desarrollo de nuevas técnicas también puede mejorar la eficiencia
y la efectividad de los sistemas de navegación autónoma, al permitir que los recursos sean
utilizados de manera más efectiva y maximizar la vida útil de los componentes del sistema.
La odometrı́a visual es una técnica de localización y navegación que se utiliza en robótica
para estimar la posición y orientación de un robot en su entorno, en función de la información
visual capturada por sus cámaras. La información de las imágenes capturadas permite estimar
la cantidad de movimiento y la dirección del vehı́culo, permitiendo calcular su posición y
orientación en relación con su posición inicial.

Las técnicas de odometrı́a visual son particularmente útiles en entornos donde el movimiento
del robot es predominantemente lateral. Además, se pueden utilizar en combinación con otras
técnicas de localización y navegación, como la odometrı́a inercial o la SLAM (Simultaneous
Localization and Mapping), para mejorar la precisión y la fiabilidad de la localización del robot.
La SLAM es una técnica de visión por computadora que permite a un robot móvil construir un
mapa del entorno en el que se encuentra, mientras estima en simultaneo su propia posición y
orientación en ese entorno. En el caso de SLAM monocular, se utiliza una única cámara para
capturar imágenes del entorno.

La Fundación Fulgor realiza diversas actividades de investigación. Dentro del campo de
navegación autónoma, una de las ramas de interés es la de algoritmos de SLAM monocular
en conjunto con la odometrı́a inercial, por las diferentes ventajas que presenta sobre otros
métodos. Es por esto que se han realizado experimentos en el marco de la Práctica Profesional
Supervisada de la estudiante de grado Evangelina Castellano, implementando y analizando el
desempeño de diferentes algoritmos en entornos de simulación.

Actualmente, uno de los objetivos en esta lı́nea de investigación es poder migrar los algoritmos estudiados en un entorno virtual a un sistema fı́sico, para evaluar su desempeño en un entorno real. La experimentación en entornos virtuales se llevó a cabo con el framework ROS 2 (Robot Operating System 2 ). Dada la naturaleza modular de este framework, la migración consiste en el reemplazo de un módulo encapsulado que contenga el algoritmo.

## Identificación y análisis de los interesados

| Rol | Nombre y Apellido | Organización | Puesto |
|-----|-------------------|--------------|--------|
| Cliente | Ing. Leandro Borgnino | Fundación Fulgor | Investigador |
| Responsable | Ing. Gonzalo Gabriel Fernandez | FIUBA | Estudiante |
| Orientador | Dr. Ing. Fabio Ardiani | Nimble One | Director de Trabajo Final |
| Equipo | Evangelina Castellano | Universidad Nacional de Córdoba | Pasante |
| Equipo | Fabio Gazzoni | Universidad Nacional de Córdoba | Pasante |
| Usuario final | Grupos de investigación | Fundación Fulgor | - |

- **Cliente:**

El Ing. Leandro Borgnino realizando su doctorado en la Fundación Fulgor y posee conocimiento sobre los algoritmos utilizados para navegación autónoma a alto nivel. Domina el área de aplicación y puede resolver dudas específicas sobre los requerimientos funcionales que debe cumplir el proyecto.

- **Orientador:**

El Dr. Ing. Fabio Ardiani finalizó en el año 2022 su doctorado en Mecatrónica, Robótica e Ingeniería de Automatización en Isae-Supaero, Toulouse, Francia. Actualmente se encuentra trabajando en Nimble One como investigador especialista en locomoción robótica. Se encuentra ubicado en Tolouse, Fracia. Se mantendrán reuniones una a uno cada dos semanas y reuniones con todo el equipo cuando se considere necesario y de acuerdo a su disposición. La periodicidad de las reuniones se ajustará segun lo demanden las actividades del proyecto y la disponibilidad del responsable y el orientador.

- **Equipo:**

Los estudiantes Evangelina Castellano y Fabio Gazzoni se encuentran realizando su Práctica Profesional Supervisada (PPS) en la Fundación Fulgor. Al finalizar su PPS continuarán en la institución para realizar su proyecto final de grado. Es necesario planificar teniendo en cuenta que la dedicación es simple, es decir, entre 4 y 5 horas diarias. Integrarán el equipo de trabajo junto con el responsable.

- **Usuario final:**

No esta representado por una persona particular. Una vez finalizado el proyecto el prototipo quedará disponible en la Fundación Fulgor para su uso de parte de grupos de investigación.

## Entregables principales del proyecto

Los entregables del proyecto son:
- Plataforma de hardware que conforma el prototipo funcional
- Documentación del hardware e interconexión de los módulos componentes
- Código fuente del driver de la IMU
- Documentación del driver de la IMU
- Código fuente del driver de la cámara
- Docummentación del driver de la cámara
- Código fuente del firmware con el algoritmo de SLAM monocular y micro-ROS
- Código fuente del agente de ROS 2 utilizado
- Documentación y manual para configuración y uso del entorno de ROS 2
- Documentación del estado del arte de SLAM y del algoritmo seleccionado
- Manual de uso del hardware
- Informe final

## Desglose del trabajo en tareas

1. Planificación del proyecto (70 h)
1. Identificación y contacto con los interesados (7 h)
2. Definición del propósito y alcance del proyecto (10 h)
3. Definición de los requerimientos y entregables (20 h)
4. Desglose del trabajo en tareas y obtención del diagrama de Gantt (20 h)
5. Análisis de riesgos, gestión de calidad y definición de procesos de cierre (13 h)
2. Definición técnica del robot móvil a diseñar
1. Investigación del estado del arte de la robótica móvil
2. Selección del tipo de robot móvil a desarrollar
3. Descripción matemática del robot seleccionado
2. [Selección y documentación del hardware necesario]({% post_url 2023-12-30-hardware-selection %})
2. Setup del entorno de trabajo para desarrollo del software necesario (5 h)
3. Implementación de micro-ROS en el sistema embebido (18 h)
1. [Introducción a micro-ROS]({% post_url 2023-05-12-microROS-and-ROS-2 %}) (4 h)
2. Incorporación de micro-ROS en el microcontrolador (8 h)
3. Setup de agente de ROS 2 y comunicación con el sistema embebido (2 h)
4. Documentación del proceso (4 h)
4. Desarrollo de driver para la IMU (40 h)
1. Selección y adquisición de la IMU a utilizar (2 h)
2. Implementación de driver en lenguaje C para el sistema embebido (30 h)
3. Documentación del driver (8 h)
5. Integración de la IMU en el sistema (60 h)
1. Integración del driver de la IMU con el sistema con micro-ROS (4 h)
2. Repaso (e investigación) de técnicas de fusión sensorial (8 h)
3. Implementación de algoritmos de fusión sensorial (30 h)
4. Visualizacion de la información obtenida con la IMU mediante las herramientas de ROS 2 (10 h)
5. Evaluación parcial y documentación de resultados (milestone) (8 h)
6. Desarrollo de driver para la cámara (53 h)
1. Selección y adquisación de cámara a utilizar (3 h)
2. Implementación de driver en lenguaje C para el sistema embebido (40 h)
3. Documentación del driver (10 h)
7. Integración de la cámara en el sistema (26 h)
1. Integración del driver de la cámara con el sistema con micro-ROS (6 h)
2. Visualización de la información obtenida con la cámara mediante las herramientas de ROS 2 (12 h)
3. Evaluación parcial y documentación de resultados (milestone) (8 h)
8. Implementación de algoritmo de SLAM monocular (305 h)
1. Introducción a la navegación inercial y SLAM monocular, investigación de estado del arte (15 h)
2. Investigación de algoritmos de SLAM monocular y selección de uno de ellos (30 h)
3. Implementación del algoritmo seleccionado en un entorno de simulación (40 h)
4. Optimización del algoritmo implementado en el entorno de simulación (40 h)
5. Evaluación integral de los componentes del sistema (20 h)
6. Implementación del algoritmo seleccionado en el sistema embebido (40 h)
7. Optimización del algoritmo implementado en el sistema embebido (40 h)
8. Evaluación final de resultados (milestone) (40 h)
9. Documentación técnica del algoritmo sleccionado y resumen del estado del arte (40 h)
9. Proceso de cierre (91 h)
1. Análisis de cumplimiento de objetivos y requerimientos con el director (2 h)
2. Análisis de cumplimiento del plan original (diagrama de Gantt) (2 h)
3. Análisis de cumplimiento de objetivos y requerimientos con el cliente (2 h)
4. Capacitación del cliente sobre el prototipo realizado
5. Elaboración de memoria técnica (40 h)
6. Corrección de memoria técnica (20 h)
7. Preparación de defensa pública (20 h)
8. Defensa pública (2 h)
9. Reunión de cierre con el director (1 h)
10. Reunión de cierre con el cliente y el equipo de trabajo (2 h)

Cantidad total de horas: 668 h

## Diagrama de Activity On Node

Las tareas expuestas en el diagrama de *Activity On Node*, se encuentran detalladas en la siguiente tabla, con su código, duración y tareas predecesoras.

| Código | Predecesora | Descripción | Duración |
|--------|-------------|-------------|----------|
| 1 | | Planificación del proyecto | 70 h |


## Proceso de cierre

Una vez finalizado el proyecto se realizarán las siguientes actividades:

- Análisis del grado de cumplimiento de los objetivos y requerimientos junto con el Dr. Ing. Fabio Ardiani.
- Análisis de cumplimiento de la versión original del plan de trabajo, contrastando el registro de actividades realizadas con el diagrama de Gantt original.
- Análisis del grado de cumplimiento de los objetivos y requerimientos junto con el cliente, el Ing. Leandro Borgnino.
- Elaboración de un documento con todos los problemas que surgieron durante el desarrollo del proyecto y las soluciones encontradas.
- Elaboración de un documento con las actividades que no se alcanzaron a realizar en el tiempo estimado y todas aquellas actividades realizadas que no se contemplaron en el plan original.
- Elaboración de un documento con el trabajo a futuro, que sirva como base de un plan de proyecto que continue la misma línea de investigación y desarrollo.
- Defensa pública del proyecto por parte del responsable.
- Reunión privada con el equipo de trabajo para compartir *feedback* sobre la experiencia obtenida en el lapso del proyecto.
- Reunión virtual, organizada por el responsable, con el Dr. Ing. Fabio Ardiani como acto de agradecimiento.
- Reunión con el Ing. Leandro Borgnino y el equipo de trabajo, organizada por el responsable, para dar un cierre al proyecto y evaluar los próximos proyectos y actividades a realizar en conjunto.
36 changes: 36 additions & 0 deletions _posts/2023-05-12-microROS-and-ROS-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
layout: post
title: microROS and ROS 2
subtitle: Development of mobile robot for monocular SLAM
author: Gonzalo G. Fernandez
categories: cese
excerpt_image: /assets/images/ros-humble.jpg
# banner:
# video: https://vjs.zencdn.net/v/oceans.mp4
# loop: true
# volume: 0.8
# start_at: 8.5
# image: images/banners/ROS-Industrial-Logo.png
# opacity: 0.618
# background: "#000"
# height: "100vh"
# min_height: "38vh"
# heading_style: "font-size: 4.25em; font-weight: bold; text-decoration: underline"
# subheading_style: "color: gold"
tags: cese microROS ROS2
sidebar: []
---

![banner](/assets/images/banners/ROS-Industrial-Logo.png)

## Introducción

El entorno ROS es un framework de software libre y de código abierto diseñado para permitir el desarrollo de aplicaciones robóticas distribuidas. Este framework proporciona un conjunto de herramientas para la creación, gestión, depuración y análisis de sistemas robóticos.

La segunda versión de la herramienta, denominada ROS 2, fue desarrollada por la comunidad con el objetivo de mejorar la escalabilidad, la fiabilidad y la seguridad del software. Una de sus principales caracterı́sticas es que está diseñado para ser modular y extensible, lo que significa que los desarrolladores pueden elegir los componentes que necesitan para sus aplicaciones y utilizarlos de manera flexible. También se enfoca en proporcionar una abstracción de hardware más clara y permitir el uso de diferentes sistemas operativos y arquitecturas.

La herramienta micro-ROS es una implementación de ROS 2 diseñada especı́ficamente para sistemas embebidos y de tiempo real. A diferencia de ROS 2, que se ejecuta en sistemas operativos de propósito general, micro-ROS se ejecuta en sistemas operativos de tiempo real (como NuttX y FreeRTOS), lo que permite el desarrollo de sistemas robóticos en entornos de baja potencia y recursos limitados.

Como puede observarse en la figura 2, micro-ROS proporciona una capa de abstracción que permite la comunicación entre los sistemas embebidos y los nodos de ROS 2 en otros sistemas. Esto significa que los desarrolladores pueden crear sistemas robóticos distribuidos, que utilicen tanto sistemas embebidos como sistemas de propósito general y que todos ellos puedan comunicarse a través de la misma plataforma.

![micro-ROS architecture](/assets/images/micro-ROS_architecture.png)
Loading

0 comments on commit c1b43ff

Please sign in to comment.