Publicado el 30 de Julio del 2018
851 visualizaciones desde el 30 de Julio del 2018
954,7 KB
15 paginas
Creado hace 8a (26/10/2016)
https://www.flickr.com/photos/125992663@N02/14597682251/
Programación Paralela y Computación de Altas
Prestaciones
Departamento de Informática y Sistemas
Control de Plataformas de Stewart y programación en
Raspberry Pi
Murcia, Octubre 2016
Agenda
1. Motivación
2. Conceptos matemáticos
3. Descripción del problema
4. Metodología
5. Raspberry Pi
6. Otras opciones de paralelismo con Pi
3
4
6
8
(1 diap.)
(2 diap.)
(2 diap.)
(3 diap.)
11
(3 diap.)
14
(1 diap.)
2
Motivación
• Se ha identificado un problema en robótica que requiere un alto
coste computacional para su resolución
• En concreto se trata de modelar una Plataforma de Stewart (un
tipo de robot manipulador paralelo)
• Se controlan los 6 grados de libertad, tres de posición (x y z) y
tres de orientación (θ ψ ϕ), de una parte del mecanismo, en
concreto el terminal
• Se usan en la simulación de sistemas
mecánicos, como por ejemplo:
o Barcos
o Aviones
o Helicópteros
3
Conceptos matemáticos utilizados
• Imprescindibles: el álgebra lineal y los sistemas de coordenadas
espaciales, y sus transformaciones
• Se debe poder:
o Expresar la situación de los cuerpos del robot, los unos
respecto a los otros
o Especificar la situación que debe tomar el sistema de
coordenadas del terminal, así como su velocidad
• Cinemática directa e inversa:
modelos matemáticos para
calcular la relación entre la
posición de los actuadores y
el elemento final, y viceversa
4
Conceptos matemáticos utilizados
• Ej. Cinemática directa:
• Todas las coordenadas son referenciadas respecto a la base
• La configuración mecánica (actuadores y bielas) determina:
o Las ecuaciones de traslación y rotación
o Las ecuaciones de restricción (p.e. posiciones máximas
alcanzables según la longitud de los elementos)
o Que pueden aportar soluciones múltiples, Ej:
5
Descripción del problema
• Se deben resolver los sistemas de ecuaciones planteadas
• Nuestro robot está formado por 6 brazos, cada uno con un
actuador rotativo y una biela. Empleando notación matricial:
o Las ecuaciones del terminal se pueden expresar como
matrices de 12x12
o Las ecuaciones de las manivelas se pueden expresar como
matrices de 18x18
• Se usa un método iterativo obteniendo pequeños Δ que se
suman a la posición actual, hasta obtener un error menor a un
valor prefijado. El caso de no convergencia es controlado por
un tiempo límite de ejecución
• Primero se calcula el terminal, y luego los brazos, que no
tienen dependencia entre ellos PARALELIZACION
6
Descripción del problema
7
Metodología
• La UPCT de Cartagena nos entrega la versión secuencial del
programa de control del robot en Intel© Fortran, desarrollado
con Microsoft© Visual Studio, usando la librería MKL (Lapack)
• Analizamos la estructura del código fuente e identificamos las
rutinas de cálculo y las funciones de álgebra matricial: DGETRF
(factorización LU) y DGETRS (resolución de sistemas)
• Desarrollamos un simulador que contiene la misma carga de
computación que el original, pero le añadimos la opción de:
o Tomar tiempos de ejecución
o Parametrizar el tamaño del problema: dimensión de las
matrices, número de grupos estructurales y número de
iteraciones
o Poderse ejecutar en secuencial o en paralelo, para
comparativas
8
Metodología
Los datos de los grupos estructurales se almacenan en arrays
indexados por número de grupo podemos abordar paralelismo en
memoria compartida
Ejemplo OpenMP de llamadas al cálculo de cada brazo o grupo
estructural:
9
Metodología
10
Raspberry Pi
11
Raspberry Pi
• El sistema operativo usado en las pruebas ha sido Raspbian, una
versión de Linux basada en Debian y optimizada para el
hardware de las Pi
• La portabilidad del código fuente desde Intel© Fortran en
Windows© hacia GNU Fortran sobre Raspbian supuso los
siguientes cambios:
o Incluir el parámetro -std=legacy para asegurar la
compatibilidad de algunas funciones
o Prescindir del uso de la librería MKL ya que no es posible
instalar el SDK de Intel©. En su lugar instalaremos la
liblapack-dev
o Reemplazar la función QueryPerformanceCounter (propietaria de
Windows©) por una librería desarrollado en C para la toma
de tiempos de ejecución
GNU Fortran soporta OpenMP desde la versión 4.9
12
Raspberry Pi
Escenario de test:
• Número de ejecuciones: 300 iteraciones
• Bucle secundario (simulando la búsqueda de un error por debajo de una
tolerancia prefijada): 20 iteraciones
• Variando tamaños de las matrices
13
Otras opciones de paralelismo con Pi
Cluster MPI
https://www.lab7.io/rpi-cluster-1/
14
http://pixabay.com/es/pregunta-signo-de-interrogaci%C3%B3n-298479/
15
Comentarios de: Programación Paralela y Computación de Altas Prestaciones (0)
No hay comentarios