Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I. INTRODUCCIÓN
Crear software para robots es algo difícil, debido a que la escala y el alcance de la robótica
continúa creciendo. Los diferentes tipos de robots pueden tener hardware que varía enormemente,
lo que hace que la reutilización de código no sea trivial. Además, el gran tamaño del código
requerido puede ser desalentador.
Para estos retos, los investigadores de la robótica han creado una amplia variedad de marcos para
manejar la complejidad y facilitar la creación rápida de prototipos de software para experimentos,
dando lugar a los muchos sistemas de software robótico actualmente utilizados en el mundo
académico y la industria.
El énfasis en la investigación robótica integradora a gran escala será útil en una amplia variedad
de situaciones a medida que los sistemas robóticos se vuelven cada vez más complejos. En este
documento, se tratará los objetivos de diseño de ROS, cómo nuestra implementación funciona
para ellos y cómo ROS maneja varios casos de uso común de desarrollo de software robótico.
No afirmamos que ROS es el mejor marco para todos los softwares de robótica. ROS fue creado
para cumplir un conjunto específico de desafíos encontrados al desarrollar robots de servicio a
gran escala como parte del proyecto STAIR en la Universidad Stanford y el Programa Personal
Robots en Willow Garage.
• Punto a punto
• Basado en herramientas
• Multilingüe
• Delgado
• Libre y de código abierto
A. Punto a punto
Un sistema creado utilizando ROS consiste en una cantidad de procesos, potencialmente en una
cantidad de hosts diferentes, conectados en tiempo de ejecución en una topología punto a punto.
Aunque los marcos basados en un servidor central también pueden darse cuenta de los beneficios
del diseño multiproceso y multi-hospitalario, un servidor de datos central es problemático si las
computadoras están conectadas en una red heterogénea.
La topología punto a punto requiere algún tipo de mecanismo de búsqueda para permitir que los
procesos se encuentren entre sí en tiempo de ejecución.
B. Multilingüe
Al escribir código, las personas muestran preferencias para lenguajes de programación, estas
preferencias son el resultado del tiempo de programación, facilidad de depuración, sintaxis,
eficiencia del tiempo de ejecución y una serie de otras razones, tanto técnicas como culturales.
Por ello, se ha diseñado ROS para que sea neutral en cuanto al idioma, actualmente, ROS admite
cuatro lenguajes muy diferentes: C ++, Python, Octave y LISP, con otros puertos de idiomas en
varios estados de finalización.
Para respaldar el desarrollo de idiomas cruzados, ROS utiliza un lenguaje de definición de interfaz
(IDL) de idioma neutro y simple para describir los mensajes enviados entre los módulos. El IDL
usa archivos de texto muy cortos para describir los campos de cada mensaje y permite la
composición de los mensajes.
Como los mensajes se generan automáticamente a partir de archivos de texto simples, es fácil
enumerar nuevos tipos de mensajes que transportan datos que van desde las transmisiones de
sensores a las detecciones de objetos y mapas. El resultado final es un esquema de procesamiento
de mensajes independiente del idioma en el que diferentes idiomas se pueden mezclar y combinar
según se desee.
C. Basado en herramientas
El diseño de microkernel, que utiliza un gran número de pequeñas herramientas para construir y
ejecutar los diversos componentes de ROS, además de construir un entorno monolítico de
desarrollo y tiempo de ejecución.
Las tareas que realizan estas herramientas son por eje.: navegar por el árbol de códigos fuente,
obtener y establecer parámetros de configuración, visualizar la topología de conexión punto a
punto, medir la utilización del ancho de banda, graficar gráficamente los datos del mensaje,
generar automáticamente la documentación.
D. Delgado
El código fuente completo de ROS está a disposición del público que es fundamental para facilitar
la depuración en todos los niveles de la pila de software.
ROS se distribuye bajo los términos de la licencia BSD, que permite el desarrollo de proyectos
tanto comerciales como no comerciales. ROS pasa datos entre módulos utilizando
comunicaciones entre procesos, y no requiere que los módulos se vinculen en el mismo ejecutable.
Los sistemas construidos alrededor de ROS pueden usar la licencia de grano fino de sus diversos
componentes: los módulos individuales pueden incorporar software protegido por varias licencias
que van desde GPL a BSD a propietario, pero la "contaminación" de licencia termina en el límite
del módulo.
II. NOMENCLATURA
Los nodos se comunican entre sí al pasar mensajes. Un mensaje es una estructura de datos
estrictamente tipada. Los mensajes pueden estar compuestos de otros mensajes y matrices de otros
mensajes, anidados de forma profunda. Un nodo envía un mensaje publicándolo en un tema
determinado, puede haber varios editores y suscriptores simultáneos para un único tema, y un solo
nodo puede publicar y/o suscribirse a múltiples temas. En general, los editores y los suscriptores
no conocen la existencia de los demás.
En ROS, llamamos a esto un servicio, definido por un nombre de cadena y un par de mensajes
estrictamente tipeados: uno para la solicitud y el otro para la respuesta.
El alcance de una investigación se limita a un área bien definida del sistema, como un nodo que
realiza algún tipo de planificación, razonamiento, percepción o control. Sin embargo, en un
sistema robótico para experimentos, debe existir un ecosistema de software mucho más grande lo
que agrega una cantidad significativa de dificultad a la investigación integradora de robótica.
ROS está diseñado para minimizar la dificultad de depuración, su estructura modular permite que
los nodos en desarrollo activo se ejecuten junto con los nodos preexistentes y bien depurados.
Debido a que los nodos se conectan entre sí en el tiempo de ejecución, el gráfico se puede
modificar dinámicamente. Lo que puede generar un aumento masivo de la productividad,
especialmente a medida que el sistema robótico se vuelve más complejo e interconectado. La
facilidad de insertar y eliminar nodos de un sistema basado en ROS es una de sus características
más potentes y fundamentales.
B. Registro y reproducción
C. Subsistemas empaquetados
D. Desarrollo colaborativo
ROS proporciona una utilidad llamada rospack para consultar e inspeccionar el árbol de códigos,
buscar dependencias, buscar paquetes por nombre, etc. Se proporciona un conjunto de
expansiones de shell llamado rosbash para mayor comodidad, acelerando la navegación de la
línea de comandos del sistema.
La utilidad rospack está diseñada para admitir el desarrollo simultáneo en múltiples repositorios
de paquetes ROS, y rospack rastrea los árboles de paquetes según sea necesario. Las
compilaciones recursivas, respaldadas por la utilidad rosmake, permiten dependencias de
bibliotecas de paquetes cruzados.
E. Visualización y Monitoreo
ROS puede explotar la naturaleza dinámica del gráfico de conectividad para "aprovechar"
cualquier flujo de mensajes en el sistema; el desacoplamiento entre editores y suscriptores permite
la creación de visualizadores de propósito general. Se pueden escribir programas simples que se
suscriben a un nombre de tema en particular y trazan un tipo particular de datos, como escaneos
láser o imágenes. Sin embargo, un concepto más poderoso es un programa de visualización que
utiliza una arquitectura de complemento: esto se hace en el programa rviz, que se distribuye con
ROS.
F. Composición de la funcionalidad
En ROS, una "pila" de software es un grupo de nodos que hace algo útil, ROS puede crear
instancias de un clúster de nodos con un solo comando; pero, a veces se desean múltiples
instancias de un clúster. ROS admite esto al permitir que los nodos y los archivos de descripción
de clúster roslaunch completos se inserten en un espacio de nombres secundario, que garantiza
que no haya colisiones de nombres. Esto antepone una cadena a todos los nombres de nodo, tema
y servicio, sin requerir ninguna modificación al código del nodo o clúster.
G. Transformaciones
Los sistemas robóticos necesitan rastrear las relaciones espaciales por una variedad de razones:
entre un robot móvil y un marco de referencia fijo para localización. Para simplificar y unificar
el tratamiento de marcos espaciales, se ha escrito un sistema de transformación para ROS, llamado
tf que construye un árbol de transformación dinámica que relaciona todos los marcos de referencia
en el sistema. A medida que la información fluye desde los diversos subsistemas del robot
(codificadores de unión, algoritmos de localización, etc.), el sistema tf puede producir flujos de
transformaciones entre nodos en el árbol al construir una ruta entre los nodos deseados y realizar
los cálculos necesarios.
CONCLUSIONES:
• Este sistema operativo de código abierto, se visualiza como una herramienta para el
avance profundo en los proyectos de investigación académica e industrial.
• ROS permite realizar desde las aplicaciones más básicas, por lo que es muy utilizado ya
que se trata de una estructura muy flexible y adaptable a diversas necesidades.
• Por su variedad de plataformas, lenguajes, compiladores, y paquetes de aplicaciones
desarrolladas por investigadores y empresas de la robótica permiten que otros las puedan
usar y lo mejor, modificar y crear nuevas y mejoradas opciones.
1.1 Introducción
El tiempo real se refiere a aplicaciones o procesos informáticos que pueden responder con una
latencia baja a las solicitudes de los usuarios. Un sistema correcto en tiempo real debe producir
una respuesta de salida funcionalmente (algorítmicamente y matemáticamente) correcta antes de
una fecha límite bien definida en relación con la solicitud de un servicio.
El concepto de sistemas integrados tiene un historial similar y relacionado con los sistemas en
tiempo real y es principalmente un enfoque que limita el alcance para evitar plataformas de
computadora de escritorio generales que podrían incluirse en un sistema en tiempo real. Por
ejemplo, el centro de control de la misión Johnson Space Center de la NASA incluye una gran
cantidad de estaciones de trabajo de escritorio comerciales para el procesamiento de datos de
telemetría casi en tiempo real.
Una vez más, una definición de incrustación de sentido común es útil para entender qué se piensa
por un sistema integrado en tiempo real. Incrustación significa encerrar o implantar como esencial
o característica. Un sistema integrado es una computadora de propósito especial contenida dentro
del dispositivo que controla y que no puede ser observada directamente por el usuario del sistema.
Un sistema integrado realiza servicios predefinidos en lugar de funciones y servicios
especificados por el usuario como lo hace una computadora de propósito general. La industria de
sistemas incorporados en tiempo real está llena de terminología especializada que se ha
desarrollado como un subconjunto de la terminología general de sistemas informáticos.
El origen del tiempo real proviene de la historia reciente del control de procesos usando
plataformas informáticas digitales. El concepto de tiempo real también está arraigado en la
simulación por computadora, que se ejecuta al menos tan rápido como el proceso físico del mundo
real que modela se ejecuta en tiempo real.
El concepto de sistemas duros en tiempo real llegó a comprenderse mejor sobre la base de la
experiencia y los problemas detectados con los sistemas desplegados. Un ejemplo muy claro fue
cuando el sistema Apollo 11 sufrió una sobrecarga de recursos de la CPU que amenazaba con
hacer que los servicios de orientación de descenso incumplieran los plazos y casi provocó la
interrupción del primer aterrizaje en la luna. Durante la bajada del módulo lunar y con el uso del
sistema de radar, el astronauta Buzz Aldrin observó una alarma del sistema de guía por
computadora. En base a su experiencia, la decisión fue seguir adelante y pasar por alto la alarma.
Incrustar es un concepto más antiguo que el tiempo real. Los sistemas informáticos digitales
integrados a menudo son una parte esencial de cualquier sistema integral en tiempo real y de
entrada detectada para producir respuestas como salida a los actuadores. Los sensores y
actuadores son componentes que proporcionan E/S y definen la interfaz entre un sistema integrado
y el resto del sistema o aplicación.
Una estación de trabajo de propósito general proporciona una plataforma para que grupos de
servicios no especificados sean determinados, mientras que un sistema integrado proporciona un
servicio bien definido o un conjunto de servicios tales como control anti bloqueo. Finalmente, el
objetivo de un sistema integrado es la rentabilidad, un conjunto más limitado de servicios en un
sistema más grande, como un automóvil, una aeronave o un centro de conmutación de
telecomunicaciones.
Cuando se utiliza una aplicación de software para múltiples servicios en una sola CPU, el sondeo
de software a menudo se sustituye con hardware de la detección de eventos y codificación de
entrada. Esta máquina de estado de hardware entonces afirma una entrada de interrupción en la
CPU, que a su vez establece un indicador utilizado por una máquina de estado de programación
para indicar que un servicio de procesamiento de datos de software debe ser enviado para su
ejecución.
En última instancia, el estado del mundo real se sondea por una máquina de estados de hardware,
mediante una máquina de estados de software, o por una combinación de ambos. Una
combinación de ambos es a menudo es la mejor solución y es uno de los métodos más populares.
La implementación de servicios de datos en el software proporciona flexibilidad para que las
modificaciones y mejoras se pueden hacer mucho más fácilmente en la comparación con la
modificación de hardware.
Control digital tiene una clara ventaja sobre analógico, ya que puede ser programado sin
modificaciones de hardware. Un sistema de control analógico, o un ordenador analógico, requiere
reverenciar y modificación de los inductores, condensadores y resistencias utilizadas en los
circuitos de control. Los servicios de periódicos en los sistemas de control digitales aplicar la ley
de control de un sistema de control digital. Cuando un microprocesador está dedicado a un solo
servicio, el diseño y la implementación de los servicios son bastante simples.
En última instancia, todos los servicios en tiempo real pueden ser sólo de hardware o una
combinación de hardware y software de procesamiento con el fin de UNK eventos a actuaciones
para monitorear y controlar algún aspecto de un sistema general. Finalmente, después de un
servicio produce una salida digital, habrá algo de latencia en la transferencia de la memoria de
trabajo a la memoria del dispositivo y el potencial de conversión DAC para la salida de
accionamiento.
Hasta el momento, todas las aplicaciones y tipos de servicios considerados han sido periódica.
Uno de los ejemplos más comunes de un servicio en tiempo real que no es periódica, por
naturaleza, es el servicio de control de errores. Normalmente, un sistema no tiene fallas, si
periódica o regularmente lo hace, probable el sistema necesita ser reemplazado. Por lo tanto, el
manejo de errores es a menudo asíncrona. La línea de tiempo y características de un servicio en
tiempo real asincrónica son, sin embargo, no es diferente de las ya estudiadas.
Las normas en tiempo real POSIX (Portable Interfaz de Sistemas Operativos) se han consolidado
en una única actualización 1003.1 estándar a partir de 2013 [POSIX 1003.l]. Originalmente, las
normas en tiempo real reconocidos por el IEEE (Instituto de Ingenieros Eléctricos y Electrónicos),
así como el Open Group fueron escritos como extensiones específicas a las normas básicas de
POSIX, incluyendo:
1. IEEE Std 2003.lb-2000: Pruebas para la especificación POSIX parte 1includ ing
extensiones de tiempo real.
2. IEEE Std 1.003,13 a 1.998: aplicaciones en tiempo real perfil estándar para abordar en
tiempo real y dispositivos huella más pequeña.
3. IEEE Std 1003.lb-1993: Extensión en tiempo real.
4. IEEE Std 1003.lc-1995: Hilos
5. IEEE Std 1003.ld-1999: Extensiones adicionales en tiempo real.
6. IEEE Std 1003.lj-2000: Extensiones de tiempo real avanzada.
7. IEEE Std 1003.lq-2000: Rastreo.
La primera y uno de los cambios más significativos realizados en la norma base original para
sistemas de tiempo real fue designado 1003.lb, que especifica la API (Application Programmer
Interface) que la mayoría de los sistemas operativos RTOS (Real-Time Operating System) y
Linux ponen en práctica en su mayoría. Las extensiones POSIX 1003.lb incluyen la definición de
los mecanismos del sistema operativo en tiempo real:
1. Programación de prioridad
2. Señales en tiempo real
3. Relojes y temporizadores
4. Semáforos
5. Paso de mensajes
6. Memoria compartida
7. Asíncronos y síncronos VO
8. Bloqueo de memoria
Algunas normas adicionales interesantes en tiempo real que van más allá de los RTOS o soporte
del sistema operativo de propósito general incluyen:
Conclusiones:
Como vimos los sistemas de tiempo real desempeñan un papel muy importante ya que
debe tener la capacidad de llevar a cabo tareas en un tiempo de respuesta mínimo y con
gran éxito.
Estos sistemas de tiempo real se encuentran en constante desarrollo ya que con los
avances tecnológicos se fabrican nuevas máquinas que funcionan en tiempo real y que
por consiguiente necesitan tener sistemas controlados por computadores que posean la
capacidad de interactuar con los demás.
La utilidad de los sistemas de tiempo real es muy grande ya que actualmente se aplican
en una gran variedad de áreas como: telecomunicaciones, sistemas multimedia, robóticos,
aviación, automovilismo, electrodomésticos, sistemas médicos, etc.
Aplicación:
Preguntas
a) POSIX
b) ISO
c) ASO
d) ASCII
a) C ++
b) Python
c) Octave
d) LISP
No tiene un lenguaje de programación estricto se puede trabajar con C ++, Python, Octave y LISP
entre otros.
3. Defina lo que es RTOS