Programación Paralela y Computación de Altas Prestaciones
Control de Plataformas de Stewart y programación en Raspberry Pi
Murcia, Octubre 2016
https://www.flickr.com/photos/125992663@N02/14597682251/
Departamento de Informática y Sistemas
Agenda
2
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
11
14
(1 diap.)
(2 diap.)
(2 diap.)
(3 diap.)
(3 diap.)
(1 diap.)
Motivación
3
• 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:
oBarcos
oAviones
oHelicópteros
Conceptos matemáticos utilizados
4
• Imprescindibles: el álgebra lineal y los sistemas de coordenadas
espaciales, y sus transformaciones
• Se debe poder:
oExpresar la situación de los cuerpos del robot, los unos
respecto a los otros
oEspecificar 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
Conceptos matemáticos utilizados
5
• 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)
oQue pueden aportar soluciones múltiples, Ej:
Descripción del problema
6
• 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
7
Descripción del problema
Metodología
8
• 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
oParametrizar el tamaño del problema: dimensión de las
matrices, número de grupos estructurales y número de
iteraciones
oPoderse ejecutar en secuencial o en paralelo, para
comparativas
Metodología
9
Ejemplo OpenMP de llamadas al cálculo de cada brazo o grupo
estructural:
Los datos de los grupos estructurales se almacenan en arrays
indexados por número de grupo podemos abordar paralelismo en
memoria compartida
Metodología
10
Raspberry Pi
11
Raspberry Pi
12
• 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
oPrescindir del uso de la librería MKL ya que no es posible
instalar el SDK de Intel©. En su lugar instalaremos la
liblapack-dev
oReemplazar 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
Raspberry Pi
13
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
Otras opciones de paralelismo con Pi
14
https://www.lab7.io/rpi-cluster-1/
Cluster MPI
15
http://pixabay.com/es/pregunta-signo-de-interrogaci%C3%B3n-298479/