Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I
Diseño e implementación
┊
┊
┊
┊
┊
┊
┊
┊
┊
II
El diseño e implementación de
un software genérico de simulación de movimiento
┊
┊
┊ RESUMEN
┊
┊ En las últimas cuatro décadas, los simuladores de movimiento controlados por hardware se han
desarrollado y
┊ se utilizan ampliamente en los campos de la aviación civil y militar. Sin embargo, el movimiento controlado
por software
┊
Los simuladores dirigidos al uso comercial y personal carecen de suficiente atención, lo que se convierte en
┊
un activo
┊ demanda hoy en día bajo el desarrollo y popularización de la realidad virtual y la realidad aumentada
┊ tecnología.
┊
Este artículo presentó el diseño de la arquitectura y la implementación de una simulación de
┊
movimiento genérica.
┊ software para controlar plataformas de movimiento. En primer lugar, la teoría y el enfoque de
Atuendo se dan simuladores de movimiento, junto con las adaptaciones a realizar para ser implementadas con
softwares.
┊
Se presenta el diseño e implementación de nuestro software de simulación de movimiento, basado en
módulos
┊
┊ programación y arquitectura de acoplamiento flexible para lograr configuraciones, reemplazables y
extensibles
┊ funcionalidades, lo cual es difícil cuando se usan controladores de hardware. Finalmente, para mostrar que
nuestra
┊
el software es lo suficientemente adaptable para satisfacer una demanda específica, probamos el
rendimiento del vuelo personal
Orden
┊ simulaciones de movimiento conectando nuestro software con Microsoft Flight Simulator X.
┊
┊
Palabras clave: indicación de movimiento, algoritmo de lavado, simulación de vuelo
┊
┊
lí
ne
a
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Tabla de contenido
┊
┊ 1. Introducción..............................................................................................................................................1
┊ 1.1 La fuente del tema y el propósito y significado de la investigación.................................................1
┊ 1.2 Historial de desarrollo y estado de la investigación.........................................................................2
┊ 1.2.1 Simulador somatosensorial....................................................................................................2
┊ 1.2.2 Plataforma deportiva..............................................................................................................2
┊ 1.2.3 Algoritmo de simulación somatosensorial............................................................................3
┊ 1.3 Estructura del artículo.......................................................................................................................4
┊ 2 Teoría básica..............................................................................................................................................5
┊ 2.1 Resumen............................................................................................................................................5
┊ 2.2 Plataforma de movimiento paralelo de seis grados de libertad Stewart...........................................5
┊ 2.2.1 Tipo........................................................................................................................................5
┊ 2.2.2 Mecanismo en serie y paralelo..............................................................................................6
Atuendo 2.2.3 Grados de libertad..................................................................................................................7
┊ 2.2.4 Sistema de coordenadas.........................................................................................................7
┊ 2.2.5 Posición y actitud de la plataforma........................................................................................8
┊ 2.2.6 Solución de cinemática inversa...........................................................................................10
┊ 2.3 Teoría de la percepción del movimiento humano...........................................................................10
┊ 2.3.1 Propioceptores......................................................................................................................11
Orden 2.3.2 El sistema vestibular............................................................................................................11
┊ 2.3.3 Sistema de visión.................................................................................................................13
┊ 2.4 Teoría de la simulación somatosensorial........................................................................................13
┊ 2.4.1 Desplazamiento simulado....................................................................................................13
┊ 2.4.2 Simulación de una aceleración lineal repentina..................................................................13
┊ 2.4.3 Simular aceleración lineal continua.....................................................................................13
línea 2.4.4 Simular rotación...................................................................................................................14
┊ 2.4.5 Simulación de aceleración angular......................................................................................14
┊ 2.5 Algoritmo de lavado clásico............................................................................................................14
┊ 2.5.1 Flujo del algoritmo...............................................................................................................14
┊ 2.5.2 Sistema de coordenadas del cuerpo.....................................................................................15
┊ 2.5.3 Zoom....................................................................................................................................15
┊ 2.5.4 Filtro.....................................................................................................................................17
┊ 2.5.5 Coordinación de inclinación de la plataforma de movimiento...........................................17
┊ 2.5.6 Movimiento de desplazamiento de la plataforma de movimiento......................................19
┊ 2.5.7 Movimiento giratorio de la plataforma de movimiento...........................................veintiuno
┊ 2.6 Desarrollo de software escalable.........................................................................................Veintitres
┊ 2.6.1 Modularidad.............................................................................................................Veintitres
┊ 2.6.2 Cohesión y acoplamiento.........................................................................................Veintitres
┊ 2.6.3 Principios SOLID.................................................................................................veinticuatro
2.6.4 Modelo IO.............................................................................................................veinticuatro
3 Análisis de requisitos de software y diseño de esquemas.......................................................................26
3.1 Resumen de demanda.....................................................................................................................26
3.1.1 Requerimientos funcionales.........................................................................................26
3.1.2 Entorno operativo...........................................................................................................26
3.2 Diseño general.............................................................................................................................27
3.2.1 Diagrama de flujo de datos.........................................................................................27
3.2.2 Arquitectura.........................................................................................................................27
3.2.3 La relación entre requisitos funcionales y módulos............................................................29
┊ 4 Investigación sobre la implementación de software del algoritmo de simulación somatosensorial......31
┊ 4.1 Realización digital de filtro analógico............................................................................................31
┊ 4.2 Realización digital de puntos..........................................................................................................33
┊ 4.3 Análisis de complejidad de algoritmos...........................................................................................34
┊ 5 Implementación detallada del marco básico del lado del servidor.........................................................35
┊ 5.1 Tecnología de servidor y selección de componentes......................................................................35
┊ 5.2 Tecnología de interfaz de configuración del servidor y selección de componentes......................35
┊ 5.3 Implementación del sistema impulsado por eventos......................................................................36
┊ 5.3.1 Flujo de datos del módulo....................................................................................................36
┊ 5.3.2 Lista de eventos....................................................................................................................36
┊ 5.3.3 Implementación específica..................................................................................................37
┊ 5.4 Implementación del sistema de complementos..............................................................................38
┊ 5.4.1 Formulario de complemento................................................................................................38
Atuendo 5.4.2 Descubrimiento de complementos.......................................................................................39
┊ 5.4.3 Carga de la capa lógica del complemento...........................................................................40
┊ 5.4.4 Clase base de la capa lógica del complemento....................................................................40
┊ 5.4.5 Carga de la capa de interfaz de complemento.....................................................................41
┊ 5.4.6 Comunicación entre la capa de interfaz de complemento y la capa de interfaz de marco. 43
┊ 5.4.7 Comunicación entre la capa de interfaz de complemento y la capa lógica.........................46
Orden 5.4.8 Implementación de selección de plug-in.............................................................................46
┊
┊ 6 Implementación detallada del módulo plug-in........................................................................................48
┊ 6.1 Módulo FSX....................................................................................................................................48
┊ 6.1.1 Mecanismo SimConnect y FSUIPC....................................................................................48
┊ 6.1.2 Muestreo en tiempo real de la actitud de vuelo...................................................................48
línea 6.1.3 Implementación de la comunicación entre complementos de señal FSX...........................51
┊ 6.2 Módulo de entrada de actitud de vuelo estándar.............................................................................62
┊ 6.2.1 Almacenamiento de posiciones y posturas..........................................................................62
┊ 6.2.2 Entrada de señal de posición y actitud.................................................................................63
┊ 6.3 Módulo de algoritmo de lavado clásico..........................................................................................64
┊ 6.3.1 Descripción general del proceso..........................................................................................64
┊ 6.3.2 Configuración de parámetros de filtro.................................................................................64
┊ 6.3.3 Cálculo de filtros.............................................................................................sesenta y cinco
┊ 6.3.4 Implementación de algoritmos........................................................................sesenta y cinco
┊ 6.4 Módulo de salida de simulación visual de la plataforma de movimiento Stewart.........................66
┊ 6.4.1 Tecnología WebGL y marco Three.js.................................................................................66
┊ 6.4.2 Construcción de formas geométricas...................................................................................67
┊ 6.4.3 Cálculo de posición y actitud...............................................................................................69
┊ 6.4.4 Mecanismo de comunicación del módulo...........................................................................70
6.4.5 Visualización de efectos......................................................................................................71
7 Pruebas y optimización............................................................................................................................72
7.1 Módulo FSX....................................................................................................................................72
7.1.1 Resultado de muestreo...................................................................................................72
7.1.2 Eficiencia de muestreo.................................................................................................75
1 Introducción
1.1 La fuente del tema y el
┊
propósito y significado de la investigación
┊ La simulación de movimiento también se denomina simulación de movimiento y
simulación de movimiento. Simulación somatosensorial a través del espacio físico limitado
┊
Simule diferentes aceleraciones y direcciones de vez en cuando, engañando al cerebro del
┊
usuario para proporcionar una sensación de movimiento, como cambios de posición, cambios de velocidad,
┊ Cambios de aceleración, etc.[1]. En la actualidad, con la popularización y aplicación de la
tecnología de realidad virtual y realidad aumentada, usuarios comerciales e individuales
┊ El precio puede realizar simulación visual y auditiva, y sobre esta base, existe una
necesidad urgente de simulación somatosensorial de bajo costo. Simulación somatosensorial
┊
Sistema desde el siglo pasado Desde la década de 1970, ha logrado resultados y aplicaciones muy
┊ en los campos de la aviación civil y militar, pero debido a su costo
ricos
┊ Generalmente más de $ 100,000 dólar estadounidense[2], Los usuarios personales o
empresariales son insoportables.
┊ El alto costo de los simuladores somatosensoriales existentes proviene
principalmente de:
┊
Personalizado según las características y necesidades del campo
┊
┊ Un conjunto completo de hardware de simulación de control de conducción para
fines de formación o investigación.
Atuendo Plataforma de movimiento de alta precisión, alto rendimiento y gran capacidad de
carga
┊
Costos de mantenimiento y costos de capacitación del personal
┊
┊ Desde el siglo XXI, algunas empresas y entusiastas de los vuelos individuales han comenzado a
explorar simuladores somatosensoriales de gama baja para los entusiastas del bricolaje.
┊ Los entusiastas del bricolaje eligen el hardware apropiado para ensamblar y depurar por sí mismos, y
utilizan software de simulación somatosensorial comercial para realizar la simulación somatosensorial. Esta
┊
El costo de un simulador somatosensorial de gama baja se ha reducido a $ 10,000 USD
┊ el seguimiento[3], Pero requiere que los usuarios tengan una habilidad práctica muy fuerte,
que sigue siendo un producto de nicho y no se puede adaptar a las necesidades actuales. Además, estos
┊ El software de simulación somatosensorial tampoco tiene la capacidad de ajustar el
algoritmo de simulación somatosensorial y la capacidad de expandirse. El efecto de simulación
somatosensorial dependerá completamente del software
┊
En sí misma, la función también es limitada[4, 5].
┊
┊ Este artículo propone que para un simulador somatosensorial a nivel personal, el
software de simulación somatosensorial debe ser similar al sistema operativo de este simulador.
línea Para las computadoras personales, el software de simulación somatosensorial controla el
hardware y no se limita a un hardware específico, y proporciona un entorno operativo básico para el
software de aplicación.
┊
No limitado a aplicaciones específicas. Entre ellos, el hardware del simulador
somatosensorial es principalmente una plataforma deportiva, y el software de aplicación es
principalmente para diferentes necesidades.
┊
┊ Se desarrollaron varios componentes.
Total 88 Primero 1
Diseño e implementación del
Total 88 Primero 2
Por razones históricas, la mayoría de los algoritmos de simulación
somatosensorial existentes están diseñados en base a señales analógicas, que se
implementan directamente a través de hardware, y el análisis de simulación se
realiza en software a través de software de simulación numérica. Este artículo se
basa en las sugerencias dadas en artículos anteriores. [6], Estudió el principio de
realización de software del algoritmo de simulación somatosensorial, y dio la
realización de operación de alto rendimiento, para proporcionar una referencia para
el tema de seguimiento de dicho software de simulación somatosensorial.
┊ Permite a los investigadores de algoritmos de simulación somatosensorial continuar utilizando
procesos y herramientas familiares para diseñar e investigar algoritmos basados en señales
analógicas.
┊ D. Dar un diseño detallado de la arquitectura y un plan de implementación de este tipo de software de
simulación.
┊
Proporcionar una referencia para la investigación de seguimiento de este tipo,
┊
especialmente la formulación de estándares de interfaz.
┊ 1.2 Historial de desarrollo y estado de la investigación
┊
┊ 1.2.1 Simulador somatosensorial
┊
┊ Motion Simulator fue el primer simulador de vuelo para entrenamiento de pilotos [7].
1910
┊ Nació un simulador somatosensorial Sanders Teacher[8], El piloto puede realizar tres grados
de libertad cuando hay viento(3 grados de libertad,
┊
3-DOF) Simulación de control de vuelo. En 1929, Link Trainer se desarrolló con éxito. Implementó un
┊
sistema de movimiento que permitía a los pilotos utilizar
┊ Usa el controlOperación de palanca y, en consecuencia, utilice la plataforma de
accionamiento eléctrico para una rotación de tres grados de libertad [9]. El cometa IV
desarrollado en 1958 se actualizóAtuendo Para el uso de la unidad hidráulica y para darse
cuenta del sentido real de la simulación de movimiento, y luego realizar gradualmente un
simulador de movimiento de mayor grado de libertad[7].
┊
Desde la década de 1960, en el contexto del Proyecto Apollo, las agencias de la NASA en los Estados
Unidos han realizado muchas investigaciones sobre simulación somatosensorial. [7],liberación
┊
┊ Se presentan varios algoritmos y modelos importantes de simulación somatosensorial.
Después de eso, como simulador de conducción de automóviles, simulador de conducción de
motocicletas,
┊ Simuladores de conducción de tanques, simuladores de movimiento de barcos, simuladores
de conducción de trenes, etc. se han desarrollado uno tras otro. [10].
┊
Orden
┊
┊
┊
┊
┊
lí
ne
a
┊
┊
┊ Figura 1.1 Entrenador de enlaces Simulador de vuelo Figura 1.2 Simulador de vuelo del
cometa 4
┊
┊
┊ 1.2.2 Plataforma deportiva
┊
┊Plataforma deportiva ( Motion Platform, Motion Base) es la base de los simuladores somatosensoriales
modernos, e incluso en muchos casos, "somatosensory
┊ El término "simulador" se refiere a una plataforma deportiva. [1]. La plataforma
deportiva generalmente consta de una parte fija fija en el suelo (llamado plano fijo).
┊
┊ Plataforma, plataforma fija, plataforma fija) y una parte que puede moverse una cierta
distancia o girar en un ángulo (llamada plataforma de carga,
┊ Composición de plataforma móvil, plataforma de carga útil)[1]. El estándar de
clasificación de la plataforma de movimiento es generalmente el grado de libertad, es decir, la
plataforma gira en tres direcciones.
┊ La capacidad de rotar y trasladar en tres direcciones. El mayor grado de libertad
de la plataforma de movimiento es de seis grados de libertad, pero en los últimos
años también se ha propuesto el concepto de ocho grados de libertad, que enfatiza
principalmente la provisión de dos direcciones adicionales de desplazamiento
extendido.[11].
Gough-Stewart La plataforma (conocida como la plataforma Stewart, también
conocida como la plataforma Hexapod) es una plataforma común de seis grados de
libertad. El famoso artículo "Una plataforma con seis grados de libertad" publicado
por D Stewart en 1965[12]Criado en. La plataforma Stewart se compone de una
plataforma superior e inferior, seis patas retráctiles y bisagras que las conectan.
Es una conexión paralela
Estructura. Debido a su estructura compacta, su gran capacidad de carga y su fácil
solución cinemática inversa, se ha convertido en la opción estándar para los
simuladores somatosensoriales de alta gama.[13].
┊
┊
┊
┊
┊
┊
┊
┊
┊ Figura 1.3 UnoStewart típico Plataforma deportiva Figura 1.4 CableRobot Plataforma de
movimiento de seis grados de libertad
┊
┊
┊ Aunque las plataformas deportivas tienen una larga historia de desarrollo, todavía
se están inventando nuevas plataformas deportivas, como Investigación alemana 2016
┊ Los investigadores han desarrollado un nuevo tipo de plataforma de movimiento
basada en cuerdas con seis grados de libertad. CableRobot[14], Porque se deshizo de la
instalación de base fija
Es limitado y tiene un amplio rango de movimiento, mostrando un gran potencial en la
┊
simulación somatosensorial.
┊
1.2.3 Algoritmo de simulación somatosensorial
┊
┊ El algoritmo de señalización de movimiento (MCA) se refiere a la capacidad de
convertir el movimiento de un vehículo o modelo de vehículo en
┊
Un algoritmo que mantiene el movimiento del cuerpo humano mientras mantiene la
postura de la plataforma de movimiento.[15], Es el algoritmo central del simulador
somatosensorial, que determina directamente la configuración somatosensorial
┊ La fidelidad de la simulación.
┊ El rango de movimiento de la plataforma de movimiento es extremadamente limitado y
el rango de movimiento del vehículo excede en gran medida el rango de movimiento de la
plataforma de movimiento, por lo que
┊
Desde un punto de vista físico, la plataforma de movimiento no puede simular
completamente el movimiento del vehículo. El algoritmo de simulación somatosensorial aprovecha
los defectos de la percepción humana,
┊
┊ Bajo las limitaciones físicas de la plataforma móvil, es posible simular los factores
requeridos por el cuerpo humano para percibir el movimiento tanto como sea posible, y "engañar" al
cuerpo humano para que el cuerpo humano tenga
línea Sensación de movimiento[dieciséis].
┊
El algoritmo de simulación somatosensorial corriente principal actual es el
algoritmo de lavado(Algoritmo de lavado), incluye principalmente el algoritmo de lavado clásico,
adaptativo
┊
┊ Algoritmo de lavado, algoritmo de lavado óptimo, etc.
┊ A. Algoritmo de lavado clásico
┊ A l g o r i t m o d e l a v a d o c l á s i c o (Algoritmo de lavado clásico) también se llama
algoritmo de simulación lineal (algoritmo de señalización lineal)
┊
┊ Algoritmo)[17, 18], Es el algoritmo de simulación somatosensorial más antiguo y más
utilizado. La fórmula del algoritmo es simple, con menos parámetros,
┊Después de la calibración, puede tener un buen efecto de simulación somatosensorial.
┊ El algoritmo de lavado clásico toma la aceleración lineal y la velocidad angular
como entrada, y la aceleración lineal abrupta se integra doblemente y se usa como
┊
┊ Reproduzca la aceleración para el desplazamiento de la plataforma móvil; la velocidad
lineal fija es fácil de hacer que la plataforma se mueva más allá del límite físico, así que use
┊ Ajuste de inclinación en lugar de desplazamiento para reproducir la aceleración; la
velocidad angular fija se descarta porque el cuerpo humano no la percibe fácilmente; ángulo
abrupto
┊ Una vez integrada la velocidad, se utiliza como ángulo de rotación de la plataforma de
movimiento para reproducir.
B. Algoritmo de lavado adaptativo
Algoritmo de lavado adaptativo[19]sí El Centro de Investigación Langley de la NASA mejoró
el algoritmo de lavado clásico e introdujo cambios adaptativos a los parámetros del filtro. El algoritmo
de lavado adaptativo tiene un mayor grado de fidelidad que el algoritmo de lavado clásico cuando la
plataforma está en el origen. Según estudios [6], El algoritmo de lavado adaptativo puede
lograr en comparación con el algoritmo de lavado clásico
Mayor fidelidad. Sin embargo, debido a que el algoritmo de lavado adaptativo
introduce fórmulas más complejas y más parámetros, es más difícil ajustar los
parámetros y el tiempo de cálculo es más largo.
C. Algoritmo de lavado óptimo
┊ Algoritmo de lavado óptimo[20]Utilice principalmente la investigación sobre la
percepción del movimiento humano para poner el cuerpo humano frente a
┊ El modelo del sistema de cancha se introduce en el algoritmo de lavado, con el
objetivo de minimizar la brecha de percepción motora bajo este modelo. El efecto del algoritmo
de lavado óptimo es directo
┊
La conexión depende de la precisión del modelo vestibular y es difícil ajustar la
┊
referencia al algoritmo de lavado clásico.
┊ La Tabla 1.1 compara la complejidad de los tres algoritmos de simulación somatosensorial anteriores.
Entre ellos, el tiempo de ejecución está enCálculo de Perkin Elmer 3250
┊ Dibuja en el avión.
┊
┊
┊ mesa 1.1 Comparación de tres
┊ algoritmos de lavado[6]
┊ algoritmo Número de horas de operación/ Número de Transparen
┊ ecuaciones Iteración (ms) parámetros cia de
┊ diferenciales libres parámetros
Pa por resolver
qu Algoritmo de 13 1.0 veintiuno Muy bueno
et lavado clásico
e
┊
┊
┊
1.3 Estructura del artículo
┊
┊ Este artículo se divide en ocho capítulos, organizados según la siguiente
estructura:
Orden
El primer capítulo describe los antecedentes, el propósito, la importancia, el
historial de desarrollo de los campos relacionados, el estado de la investigación de campo y la
estructura de este artículo;
┊
┊ El segundo capítulo describe la teoría y la tecnología básicas del tema, incluido
el modelo de plataforma de movimiento, la teoría de simulación somatosensorial y el algoritmo de
simulación somatosensorial.
┊ Modelo, principio de desarrollo modular;
┊
El Capítulo 3 presenta el análisis de la demanda y el diseño del esquema del
software que se implementará en este artículo;
┊
línea El cuarto capítulo estudia y realiza un método de aplicación de algoritmo de
simulación somatosensorial en software para un cálculo eficiente;
┊ Los capítulos quinto y sexto dan el diseño detallado del software y la
implementación del código de las partes clave del módulo;
┊
El Capítulo 7 muestra el software implementado en este trabajo y realiza la prueba
de efecto y análisis de optimización;
┊
┊ El Capítulo 8 resume los resultados y la importancia de este proyecto y espera con
interés el trabajo futuro.
┊
┊
┊
┊
┊
┊
┊
┊
┊
2 Teoría básica
2.1
┊
Resumen
┊ El simulador somatosensorial es un tipo de equipo que proporciona al personal una
sensación de movimiento similar a la de un vehículo en un espacio limitado.
┊
Una plataforma de movimiento que permite a las personas moverse o rotar en un espacio
┊
limitado. Debido al espacio limitado del simulador somatosensorial, el vehículo simulado será
┊ Movimiento en un espacio virtual infinito, por lo que físicamente el simulador
somatosensorial no puede aplicar directamente el movimiento del vehículo simulado para controlar
el movimiento.
┊ Movimiento de plataforma. Esto convierte la postura de movimiento del modelo de
vehículo en la postura de la plataforma de movimiento (incluido el ángulo de desplazamiento y
rotación) mientras se mantiene
┊
El algoritmo de percepción del movimiento humano se denomina algoritmo de simulación
┊
somatosensorial, que es el algoritmo central del simulador somatosensorial, que determina
directamente la simulación somatosensorial.
┊ Realismo.
┊
┊ 2.2 Plataforma de movimiento paralelo de seis grados de libertad Stewart
┊
La plataforma de movimiento se puede dividir en una plataforma en serie y una
plataforma paralela según el mecanismo. Según el grado de libertad, se puede dividir en una
plataforma de seis grados de libertad y una plataforma de cinco grados de libertad .
┊
Atuendo Plataforma, plataforma de cuatro grados de libertad, plataforma de tres grados de
libertad, etc. La plataforma Stewart a la que se adapta el software de este artículo es una de
las más avanzadas en simuladores somatosensoriales.
┊ La plataforma de movimiento paralelo de seis grados de libertad ampliamente utilizada,
también conocida como plataforma Hexapod, fue desarrollada por primera vez por el investigador
alemán D Stewart.
┊
En la revista británica en 1965 Publicado en IMECHE[12]. Los primeros robots industriales
utilizaban principalmente formas en tándem. Los robots tándem tienen mayor
┊
┊ Espacio para el movimiento, mientras que los robots paralelos tienen espacio limitado,
por lo que La plataforma Stewart no se ha utilizado ampliamente. Posteriormente con el simulador somatosensorial
┊Conviértete en un hotspot de investigación, Plataforma Stewart debido a su buen efecto en espacios
reducidos y mayor capacidad de carga.[10], Poco a poco conviértete en el maestroOrden Plataforma
de transmisión de movimiento para simulador somatosensorial.
┊
┊ 2.2.1 Tipo
┊
┊ La plataforma Stewart consta de dos plataformas superior e inferior y múltiples varillas de soporte que
conectan las plataformas en paralelo. Varias varillas de soporte pueden ser independientes
┊ Realiza ejercicios telescópicos. La plataforma superior es la
plataforma móvil y la plataforma inferior es la plataforma fija, como
se muestra en la figura.2.1 como se muestra. línea
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Figura 2.1 Modelo de plataforma Stewart
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Figura 2.2 Dos comunes Modelo de estructura de plataforma Stewart
┊
Atuendo
┊ Debido a diferentes tipos de Stewart Los parámetros de la estructura de la plataforma
son diferentes, por lo que si no hay una explicación, este artículo usa la figura como se muestra en
la figura. 2.2
┊
Mostrado Plataforma Stewart de estructura 6-6-UPS.
┊
┊ 2.2.2 Mecanismo en serie y paralelo
┊
Orden Serial Manipulator (Serial Manipulator) es la estructura de robots industriales
más utilizada.
┊ Dos cadenas cinemáticas están conectadas en serie; el manipulador paralelo es la
estructura más utilizada en simuladores somatosensoriales.
┊
Varias cadenas cinemáticas están conectadas en paralelo entre la punta y la base. Figura
┊
2.3 Figura 2.4 Demostrado una máquina tándem típica
┊ Estructura y un mecanismo paralelo típico.
┊
lí
ne
a
┊
┊
┊
┊
┊
┊
┊ Figura 2.3 Un mecanismo en tándem Figura 2.4 Un mecanismo paralelo
┊
┊
┊ En el simulador somatosensorial, el uso del mecanismo paralelo tiene las
siguientes ventajas:
┊
La plataforma móvil del simulador somatosensorial debe tener una gran
┊
capacidad de carga para transportar la pantalla, el controlador, el conductor, etc.
┊ El terminal (plataforma) del mecanismo paralelo está soportado por múltiples
cadenas cinemáticas. Comparado con el mecanismo en serie, tiene las ventajas de
estructura estable, gran rigidez y fuerte capacidad de carga;
El simulador somatosensorial requiere que cuanto mayor sea la precisión del movimiento, mejor. El
error de movimiento del mecanismo tándem es la superposición de cada cadena cinemática, El mecanismo
paralelo no tiene el problema de la amplificación del error y tiene una mayor
precisión de movimiento;
El simulador somatosensorial necesita realizar una solución de cinemática inversa en tiempo real, es
decir, la longitud objetivo de la cadena cinemática se calcula mediante la postura de la plataforma
conocida.
Luego controle la plataforma de movimiento para lograr la postura deseada. El
mecanismo en serie es difícil de resolver el movimiento a la inversa y la solución
de avance es fácil, mientras que el mecanismo paralelo es fácil de resolver el
movimiento en retroceso y la solución de avance es difícil, por lo que tiene una
mayor velocidad de cálculo.
Figura 2.5 6-6 Diagrama esquemático del sistema de coordenadas de la plataforma UPS
Stewart
Donde ¯O¯B→ Es el punto central de la plataforma fija y el origen del sistema de
coordenadas;
O¯P→ Es el punto central de la plataforma móvil;
B¯→7 (I A 1. .6) son los seis puntos de articulació n de la
plataforma fija;
┊ P¯→7 (I A 1. .6) son los seis puntos
de articulació n de la plataforma mó vil;
┊ LI = | P¯ → 7 - B¯ → 7 | (i ∈ 1. .6) es la longitud de seis varillas de soporte.
┊
┊ 2.2.5 Posición y actitud de la plataforma
┊
┊ A. Parámetros estructurales
┊ Como se muestra en la Figura 2.5 En la estructura Stewart, la plataforma móvil y la plataforma fija
están cortadas por un triángulo regular y un círculo.
┊
Polígono, se puede determinar por el radio del círculo. ry la mitad del á ngulo central del lado
corto α para describir, como se muestra en la figura Como se muestra en 2.6.
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊ Figura 2.6 Gráficos planos de plataforma móvil y plataforma fija.
┊
┊
┊ Definir los parámetros de la plataforma móvil y la plataforma fija. r, α son
respectivamente rP, αP, rB, αB, luego en la situació n inicial, en la vista superior del sistema de coordenadas Oxz
línea Debajo de la imagenEl modelo se muestra en la Figura 2.7.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊ C. Postura
┊ Este artículo utiliza el vector r de ángulo de Euler→
Describa el á ngulo de rotació n de actitud de la plataforma mó vil en
cualquier momento:línea
┊ r→ = [α, β, γ] T (2,7)
┊
Entre ellos, α, β, γ son los ángulos de rotación en las direcciones de los ejes
X, Y y Z, respectivamente.
┊
┊ Defina el ángulo de rotación inicial de la plataforma móvil r¯7¯¯n¯7¯t¯7¯a¯ →l por:
┊ r¯7¯¯n¯7¯t¯7¯a¯ →l = [0, 0, 0] T (2,8)
┊
┊ Entonces el vector normal unitario del plano donde se ubica la plataforma móvil en
cualquier momento es:
┊
V¯P→ = RX ∙ RY ∙ RZ ∙ V¯P
┊
¯ ¯→ ()2.9
7n7t7al
┊ Donde ¯ ¯→ Es el vector normal unitario del plano donde se ubica la plataforma
V¯PAG móvil en la situación inicial:
7n7t7al
┊
¯ ¯→ = [0, 1, 0] T
7n7t7al
┊
V¯PAG
┊
RX es la matriz de rotació n que
gira alrededor del eje X:
1 0 0
RX = [0 cos α pecad
o α]
0 - Sin α cos α
porque β0 - Sin β
RY = [ 010 ]
pecado β0cos β
┊ yo ∈ 1. .6
┊
De la foto 2.5 Se puede observar que la longitud de la varilla de soporte en cualquier momento es:
┊ ¯L→7 = | P¯ '→' - B¯ →|, yo ∈ 1. .6
┊ (2,16)
77
┊
La longitud de cada barra de soporte cuando se conoce la situación inicial. En el caso
de LiO (i ∈ 1. .6), la expansió n y contracció n ΔLi de cada barra de soporte es:
ΔLI = LiO - | P¯ '→'
7 - B¯ → 7 |, i ∈ 1. .6 (2,17)
Lo visual es una fuente importante de percepción del movimiento de las personas. El cerebro
juzga la visión al ver el tamaño y la dirección del paisaje circundante.
Sienta la posición espacial absoluta y la dirección del cuerpo humano. La señal visual simulada
proporcionada por la simulación somatosensorial debe ser la misma que la aceleración y la
velocidad angular proporcionadas.
┊
Paso, de lo contrario, debido a que el cerebro no puede coordinar las señales
introducidas por estos receptores, las personas se sentirán mareadas y con una fuerte
incomodidad.[1].
┊
┊ 2.4 Teoría de la simulación somatosensorial
┊
┊ El rango de movimiento de la plataforma de movimiento está limitado físicamente,
por lo que la mayoría de las veces debe basarse en la teoría de percepción del movimiento humano
descrita en la sección anterior.
┊ En teoría, utilizar los defectos de la percepción del movimiento humano para simular
el movimiento del vehículo de forma somatosensorial, en la medida de lo posible para "engañar"
al cerebro para que produzca
┊
Los estudiantes tienen un sentido de movimiento similar. Esta sección describe
┊
específicamente los métodos de simulación de varios deportes.
┊ 2.4.1 Desplazamiento simulado
┊
┊ Dado que el sistema vestibular humano y los propioceptores no pueden percibir la
posición y la velocidad absolutas, solo pueden percibir cambios en la velocidad relativa (es
decir, aumentar
┊
velocidad)Por lo tanto, el cerebro depende completamente del sistema visual para
proporcionar la base para el movimiento. Por ejemplo, en un automóvil que se mueve a velocidad
constante, además del sistema de visión
┊
Atuendo Además, el sentimiento es el mismo que el estado estático.
┊ En base a esto, el desplazamiento se puede simular mediante simulación visual.
┊
┊ 2.4.2 Simulación de una aceleración lineal repentina
┊
La aceleración lineal repentina se puede reproducir directamente. Sin embargo, la
┊
máxima aceleración que puede alcanzar la propia plataforma deportiva es limitada, lo que
determina la repentina
Orden La fidelidad de la aceleración lineal.
┊ Además, debido a que el espacio de la plataforma de movimiento es limitado,
después de que ocurre la aceleración lineal repentina, la plataforma debe ser invisible para los
humanos.
┊
La aceleración vuelve al origen para que haya suficiente espacio para la siguiente
┊
simulación de aceleración.
┊ 2.4.3 Simular aceleración lineal continua
┊
línea El espacio de la plataforma es limitado, por lo que la aceleración lineal continua
no se puede simular directamente, sino porque las personas no pueden percibir la composición de
la aceleración.
┊
Y una aceleración precisa, para que pueda confiar en la plataforma basculante para
convertir parte de la aceleración gravitacional en las direcciones delantera y trasera o
izquierda y derecha.
┊
┊ La aceleración da a las personas una sensación constante de aceleración. Además, la
presión sobre la persona por la inclinación del respaldo del asiento aumentará o disminuirá, lo
que aún más
┊ Los pasos mejoran la sensación de movimiento del cuerpo humano. Este método se llama
Coordinación de inclinación.
┊
┊
┊
┊
┊
┊
┊
┊
┊
(A) Antes del ajuste de inclinación (B) Después del ajuste de inclinación
Figura 2.10 Ejemplo de coordinación de inclinación
Como se muestra Como se muestra en 2.10, el tamaño del cuerpo humano en la dirección vertical
antes de la inclinación es La aceleració n gravitacional de g. La aceleració n gravitacional del cuerpo
humano no cambia después de la inclinació n, pero la aceleració n en la direcció n vertical es g '= g ∙
cos θ y la aceleració n en las direcciones delantera y trasera es
┊ a = aceleració n de g ∙ sin θ. Siempre que el ángulo de inclinació n no sea demasiado grande, la
aceleració n en la direcció n vertical no se reduce significativamente y los humanos no pueden percibir
┊ A este cambio.
┊
Por ejemplo, para una aceleración de 1 m / s2 en la dirección de adelante hacia
┊
atrás que dura 10 segundos, el desplazamiento después de 10 segundos es S =
┊ 50 m, la plataforma de movimiento general no puede lograr un desplazamiento tan grande, por lo que
se utiliza la simulació n de coordenadas de inclinació n. Si la inclinació n es de 5,8 °, la posteridad se inclinará
┊ La aceleración en la dirección vertical del cuerpo es g '= g ∙ cos (5.8 °) = 0.995g,
la diferencia es muy pequeña y no se puede sentir; las direcciones frontal y posterior del
cuerpo
┊
Allí a '= g ∙ sin (5.8 °) = 1m / s2 se puede detectar una aceleració n, lo que proporciona una sensació n
de aceleració n lineal continua.
┊
┊ La coordinación inclinada tiene ciertas limitaciones:
┊ Solo puede simular la aceleración en las direcciones delantera y trasera e
izquierda y derecha, y no puede simular la aceleración en la dirección vertical;
┊
La velocidad de inclinación y la aceleración no pueden exceder la mesa. 2.1
┊
Umbral de rotación hacia adentro, de lo contrario se detectará la inclinación;
┊ Sólo se pueden simular pequeñas aceleraciones, cambios evidentes
en la aceleración en la dirección vertical harán que se detecte la inclinación.Atuendo
2.4.4 Simular rotación
┊
┊
En la actualidad, la rotación no se puede simular, solo se puede dar visualmente
el sentido de rotación.
┊
┊ 2.4.5 Simulación de aceleración angular
┊
Orden En la actualidad, no es posible engañar al cuerpo humano para que produzca una
sensación de aceleración angular, y solo puede reproducir directamente una aceleración angular
repentina. Una vez finalizada la recurrencia, para
┊ Para poder reproducir la siguiente aceleración angular, no debe exceder la tabla 2.1
Realice la operación de lavado por debajo del umbral dado para permitir que la plataforma regrese
┊
Bit de restauración.
┊
┊ Cabe señalar que, dado que el ángulo de inclinación de la plataforma se ha
utilizado para la simulación de la aceleración lineal, el ángulo de simulación se incrementa en
algunos casos.
┊ La velocidad será ambigua con la aceleración
lineal simulada, lo que reducirá el efecto de simulación.
línea
┊ 2.5 Algoritmo de lavado clásico
┊
┊ Con base en la teoría de simulación somatosensorial de la sección anterior, los
investigadores han propuesto una variedad de algoritmos de simulación somatosensorial, es decir, el
vehículo o modelo de vehículo puede ser
┊ Un algoritmo que convierte el movimiento en la postura de la plataforma de movimiento
mientras mantiene el sentido del movimiento humano. El algoritmo clásico de lavado se aplica en un
simulador somatosensorial
┊ El algoritmo más extendido y uno de los primeros propuestos. El algoritmo de lavado clásico
tiene fórmulas simples, pocos parámetros, ajuste de parámetros conveniente y efectos de simulación
┊
┊ Buen cálculo rápido y otras ventajas.
┊
2.5.1 Flujo del algoritmo
┊
┊ El flujo del algoritmo de lavado clásico se muestra en la figura Como se muestra en 2.11.
┊
entre ellos, ingresar ƒ¯Æ→ Es el vector de fuerza específico en el sistema de
┊
coordenadas del cuerpo;
┊ ingresar ω¯Æ→ Es el vector de velocidad angular en el sistema de coordenadas
del cuerpo;
constante gramo→ Es el vector de aceleració n gravitacional;
Producción S→ Es el vector de desplazamiento de posición de
la plataforma de movimiento, es decir, la fórmula(2.4) El
vector definido; salida θ→ Es el vector de ángulo de
rotación de actitud de la plataforma de movimiento, a
saber(2.7) El vector definido;
s ¿Es el operador de Laplace (Laplace Operador), todas las entradas y salidas están en s
Bajo el dominio (dominio-s).
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊ Figura 2.11 Flujo del algoritmo de lavado clásico
┊
Atuendo
En la mayoría de los casos, la señal de entrada original del algoritmo de
Æ
simulación de movimiento es la aceleración de línea absoluta en el sistema de coordenadas del
cuerpo.Grado a¯ →. Según Bi Li
┊
┊ Fórmula de cálculo (2.18), la fuerza específica de entrada ƒ¯Æ → se puede calcular de
la siguiente manera:
┊
ƒ¯Æ→ = ¯Æ→ (2,19)
a¯Æ→ - G
┊
┊Entre ellos, ¯g¯Æ→ Es el vector de aceleració n
gravitacional en el sistema de coordenadas del
cuerpo.Orden
┊ 2.5.2 Sistema de coordenadas del cuerpo
┊
Las direcciones delantera y trasera del vehículo se especifican como El eje x, las
┊
direcciones izquierda y derecha son el eje y, la direcció n vertical es el eje z, y hacia adelante, izquierda y hacia
arriba son positivas
┊ Dirección; alrededor El á ngulo de Euler de la rotació n del eje x es α, el á ngulo de Euler de la rotació n
del eje y es β, y el ángulo de Euler de la rotació n del eje z es γ, y hacia la derecha
┊ Rodar, zambullirse y guiñar hacia la izquierda son
direcciones positivas, como se muestra en la figura. Como se
muestra en 2.12. línea
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊ Figura 2.12 Sistema de coordenadas del vehículo
┊
2.5.3 Zoom
{c1
┊ ┊
┊
cual es:
┊
┊
┊
línea
líneaEl efecto de zoom se
muestra en la Figura 2.13.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
cO = 0
ƒ (x) = ymax ∙ X
(2,22)
Xmax
Figura 2.13 Utilice la función de escala lineal para escalar (Xmax = 10, ymax = 6)
El
coeficient c = x – 3 (kx -añ2os + k X)
e es:
┊
┊ 3
ﻟ max O max max 1 má ximo
c2 = x – 2 (—2k + 3 - K X)
┊
x añ
s o
max O max max 1 má ximo
┊ (c1 = kO
lcO =
┊
0
┊ Entre ellos: kO, k1 son las pendientes cuando x = 0, x = xmax, generalmente kO
= 1, k1 = 0.1.
┊
El efecto de zoom de tres veces se muestra en la figura Como se muestra en 2.14, se puede
ver en la figura que la transición de la señal después de escalar con la función cúbica es relativamente suave.
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
Figura 2.14 Utilice la función de zoom cúbico para hacer zoom (Xmax = 10, ymax = 6)
┊
┊
┊
línea 2.5.4 Filtro
┊
El filtrado de paso alto generalmente se incluye en el algoritmo de lavado(Filtro
de paso alto) y Filtro de paso bajo (Filtro de paso bajo). Ampliamente alto
┊
┊ El filtrado de paso se refiere a un filtro que permite que las señales de alta
frecuencia pasen y debilite las señales de baja frecuencia. El filtrado de paso bajo se refiere
a un filtro que permite que pasen las señales de baja frecuencia,
┊ Un filtro que atenúa las señales de alta frecuencia.
┊
En el simulador somatosensorial, la señal de alta frecuencia en el dominio del
tiempo significa una señal de ráfaga y la señal de baja frecuencia significa una señal continua.
cual es
┊
┊ El filtrado de paso alto atenúa la señal continua y deja una señal de ráfaga, mientras
que el filtro de paso bajo atenúa y filtra la señal de ráfaga para dejar una señal continua.
┊ De acuerdo con la teoría de la simulación somatosensorial descrita en la sección
anterior de este artículo, debido a las limitaciones físicas de la plataforma de movimiento, con
el fin de maximizar el efecto de la simulación somatosensorial
┊ Como resultado, la aceleración lineal continua y la aceleración lineal repentina
requieren diferentes estrategias de simulación: la aceleración lineal continua es muy fácil de
usar
┊
┊ Debido a que la plataforma de movimiento está fuera de rango, es necesario confiar en
la simulación de inclinación, y la aceleración lineal repentina no es fácil para hacer que la
plataforma de movimiento esté fuera de rango.
┊Por lo tanto, se puede usar directamente en la plataforma de movimiento sin simulación.
Mediante el uso de un filtro de paso alto y un filtro de paso bajo, la línea de ráfaga se puede
┊ Se utilizan diferentes estrategias para la aceleración y la aceleración lineal
continua.
Cabe señalar que el filtro en el simulador somatosensorial se usa para usar un
filtro analógico, es decir, la entrada del filtro es una señal analógica continua y
la función de transferencia utilizada para describir el filtro es una función en el
dominio s.
x, y
┊ ƒLP 2
ωnorte (2,24)
=
┊ ƒ x, y 2
s + 2Çωns + ωn 2
S
┊
┊ entre ellos, ωn es la frecuencia de
corte del filtro;
┊ Ç es la relació n de
amortiguació n.
┊
Según estudios[6], Los parámetros
┊
recomendados del filtro son:
┊
┊ mesa 2.2 Parámetros recomendados del
┊ filtro de paso bajo de aceleración[6]
┊
filtrar en C
┊
┊ x direcció n 5,0 1.0
Pa direcció n y 8.0 1.0
qu
et
e
┊
┊ Para probar el filtro de paso bajo, ahora configure la actitud del vehículo para
que sea consistente con el marco de referencia, sin escalar, y tenga el siguiente movimiento: 0s
┊ Sin aceleración, se obtiene instantáneamente una aceleración lineal absoluta de 1 m /
s2 a 1 s, y volverá instantáneamente a ninguna aceleración después de 5 s. La suerte
┊ Señal de naceleración lineal que
aceleració lineal filtrada ƒx como se se mueveenhacia
muestra adelante
la figura Como se y muestra
hacia atrás.
en 2.15.ƒx = ƒx y la señ al de
┊ SÆLP
Orden
┊
┊
┊
┊
┊
lí
ne
a
┊
┊
┊
┊
┊
┊
┊
┊ Figura 2.15 Entrada y salida de filtro de paso bajo de segundo orden
┊
┊
Ahora calcule la relación entre la señal filtrada de paso bajo y el ángulo de
inclinación. De acuerdo con la Figura 2.10, cuando el ángulo de inclinación delantero y trasero
es the, el peso puede ser
┊
┊ La fuerza de aceleración se genera en la dirección frontal y posterior del sistema de
coordenadas del cuerpo x = g sin θ es el componente de magnitud, por lo que para simular el anverso y el
reverso de x
┊ Componente direccional, el ángulo de inclinación requerido θ es:
θ = sin – 1 x
gramo (2,25)
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊ Figura 2.16 Comparación de la salida de la señal de pulso mediante filtros de paso alto de
segundo y tercer orden
┊
┊
Atuendo Como se muestra en la Figura 2.16 Como se muestra, la salida de aceleración de los
filtros de paso alto de segundo y tercer orden son muy similares.
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊
┊
┊
lí
ne
a
┊
Figura 2.17 Comparación del desplazamiento de salida de la señal de pulso mediante filtros de
paso alto de segundo y tercer orden
┊
┊
┊ Como se muestra en la Figura 2.17 Como se muestra, para la entrada de aceleración de
pulsos, la salida de desplazamiento de los filtros de paso alto de segundo y tercer orden puede
volver al origen.
┊
La ventaja del filtro de paso alto de tercer orden es que, para una aceleración
continua, el desplazamiento de salida también puede volver al origen. Ahora pruebe la
aceleración de entrada
┊
┊ Cuando la señal de grado es una señal de paso, la curva se muestra en la figura Como se
muestra en 2.18.
┊ Como se muestra Como se muestra en 2.19, bajo la condición de aceleración continua, la salida de
desplazamiento del filtro de tercer orden puede regresar lentamente al origen, y el filtro de segundo orden
┊ No se pudo volver al origen.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Figura 2.18 Entrada de aceleración escalonada
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
Figura 2.19 Comparación del desplazamiento de salida de la señal de paso por filtros de paso
┊ de segundo y tercer orden
alto
┊
┊
línea 2.5.7 Movimiento giratorio de la plataforma de movimiento
┊
La rotación de baja frecuencia en las tres direcciones del vehículo simulado no se
puede simular ni reproducir, por lo que se descarta y no se simula, y la rotación de alta
frecuencia es directamente
┊
┊ Reproducir en la plataforma deportiva. Para la velocidad angular ampliada de entrada ω¯
¯S→, Utilice un filtro de paso alto para extraer la parte de alta frecuencia,
┊ Señal de ¯H¯P→ Después de una integración, ¯R→. El ángulo de rotación es el
velocidad angular de alta se puede obtener el ángulo de mismo quePérdida coordinada inclinada en
frecuencia ω rotación.
la sección 2.5.5
┊ →
El ángulo θ¯¯T¯¯C Después de la adición, el ángulo de rotación final de la plataforma θ
→:
┊
┊ θ→ ¯R→ + θ¯¯T¯¯C→ (2,31)
=θ
┊ ┊
Filtros en los papeles de los algoritmos clásicos de
┊
lavado[17]El filtro de paso alto de primer orden se utiliza en: s
(2,32)
┊ ¯ω¯ s + ωn
┊ S→
┊ entre ellos, ωn es la frecuencia
de corte del filtro.
mesa 2.4 Parámetros recomendados del filtro de paso alto de primer orden
de velocidad angular[6]
filtrar en
Todas las direcciones 1.0
Según estudios[6], Los parámetros recomendados del filtro se muestran en la tabla 2.4
como se muestra.
El ángulo obtenido por el filtro paso alto de primer orden tras una integración
no tiene la característica de volver al origen. Si el vehículo puede girar en
cualquier dirección en un rango grande en una dirección determinada y no gira hacia
atrás, el filtro debe ser reemplazado por un filtro de paso alto de segundo orden
para asegurar el ángulo de lavado.
┊ El grado es cero. Generalmente va a dar la vueltaLa rotació n del eje z, el á ngulo de guiñ ada γ, se
actualiza a un filtro de paso alto de segundo orden:
┊
¯γ¯→ s2
¯ω
┊ HP
=2 2 (2,33)
┊ ¯γ s + 2Çωns + ωn
→
S
¯ω
┊
┊ entre ellos, ωn es la frecuencia de corte del filtro;
┊ Ç es la relació n de amortiguació n del filtro y Ç = 1.
┊
Suponga que la señal de entrada es la señal de velocidad angular escalonada. Ahora
compare la salida de velocidad angular entre los filtros primario y secundario y la integración
de salida
┊
┊ La diferencia de ángulo.
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊
┊
┊ Figura 2.20 Comparación de la salida de filtros de paso alto de primer y
segundo orden con señales escalonadas
línea
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
F i gu r a 2.21 Comparación de los ángulos de salida de los filtros de paso alto de
primer y segundo orden con las señales escalonadas
De la Figura 2.20 Puede verse que las velocidades angulares emitidas por los filtros
de primer y segundo orden para señales escalonadas pueden volver a cero al final.
De la foto 2.21 Se puede observar que el filtro de primer orden para señales escalonadas no tiene la
característica de regresar lentamente el ángulo al origen, mientras que el filtro de segundo orden
El dispositivo puede hacer que el ángulo integrado regrese lentamente al origen.
Esta asignatura necesita desarrollar un software altamente escalable, que sea diferente
┊
del software que se usa habitualmente para lograr un objetivo específico.
┊ Al mismo tiempo, es necesario tener una arquitectura e interfaz bien diseñadas para
satisfacer las necesidades actuales y adaptarse a los cambios futuros a un costo relativamente
pequeño. Llegar
┊ Una de las formas de escalabilidad es componer funciones de software a partir de
módulos altamente independientes.
┊
┊ 2.6.1 Modularidad
┊
┊ El módulo es una colección de objetos de grado, como descripción de datos y
declaraciones ejecutables. La modularización consiste en dividir el programa en varios
┊ Cada módulo tiene una determinada subfunción y la combinación de estos módulos puede
completar la función especificada. En el departamento de software
┊ Cuando el sistema está modularizado, el principio más importante es el grado de
independencia del módulo, y sus estándares de medición cualitativa incluyen la cohesión y el
acoplamiento.[33].
┊
┊ 2.6.2 Cohesión y acoplamiento
┊
┊ Cohesión (Cohesión) es uno de los estándares de medición del grado de
independencia del módulo, que mide la rigidez de la integración entre las funciones internas del
módulo.
Atuendo [33]. La cohesión tiene las siguientes categorías:
┊
Cohesión accidental (Coincidente Cohesión): las unidades en el módulo simplemente se
juntan;
┊
┊ Cohesión lógica(Lógico C ohesion): Cada unidad en el módulo es lógicamente la misma, que
se completa con el módulo de determinación de parámetros
┊ Función
┊
Recolección de tiempo (Temporal Cohesión): Cada unidad del módulo debe
ejecutarse dentro del mismo período de tiempo;
┊ Cohesión del proceso (Procesal Cohesión): cada unidad del módulo debe ejecutarse en un
orden específico;
┊ Cohesión comunicativaunicacional Cohesion): Cada unidad en el módulo procesa los mismos
datos de entrada, o produce
┊
Genere los mismos datos de salida;
┊
┊ Cohesión secuencial (Secuencial Cohesión): la salida y la salida de cada unidad en el
módulo están relacionadas entre sí, como una tubería
línea Hacer lo mismo
┊
Cohesión funcional (Funcional Cohesión): cada unidad del módulo cumple una función
única y clara.
┊
┊ La cohesión funcional es el grado más alto de cohesión y la cohesión accidental es
el grado más bajo de cohesión. Cuanto mayor sea el grado de cohesión, más independiente será el
módulo.
┊ Fuerte.
┊ El acoplamiento es otra medida del grado de independencia del módulo, que mide el
grado de interdependencia entre diferentes módulos.[33].
┊
┊ El acoplamiento tiene las siguientes categorías:
┊ Acoplamiento de contenido: un módulo usa directamente los datos de otro módulo, y hay una
parte del código
┊ Superponer o ingresar a otro módulo a través de una entrada anormal;
┊
┊ Acoplamiento público (Común Acoplamiento): un grupo de módulos accede a los mismos
datos globales;
┊ Acoplamiento externo: un grupo de módulos comparte formato de datos o protocolo;
┊ Acoplamiento de control(Control Acoplamiento): cuando un módulo llama a otro
módulo, se pasa la variable de control, que esEl módulo de llamada realiza una determinada
función de acuerdo con la variable de control;
Acoplamiento de sellos: registros compartidos mediante transferencia de
parámetros entre varios módulos; Acoplamiento de datos (Datos Acoplamiento):
intercambio de datos entre módulos a través de parámetros;
Sin acoplamiento: el módulo no intercambia datos con otros módulos en absoluto.
Ningún acoplamiento es el grado más bajo de acoplamiento y el acoplamiento de
contenido es el grado más alto de acoplamiento. Cuanto menor sea el grado de
acoplamiento, mayor será la independencia del módulo. El principio general es
utilizar el acoplamiento de datos tanto como sea posible, menos acoplamiento de
control y ningún acoplamiento de contenido.[33].
gráfico 3.1 Describe los requisitos ambientales mínimos necesarios para garantizar el
funcionamiento normal del software.
mesa 3.1 Entorno mínimo requerido para el funcionamiento normal
Componente RAM UPC Sistema operativo Retraso Ancho de
de la banda de la
red red
Complemento 4GB + 2+ Windows 7 o superior <10 ms > = 1 Mbps
FSX
┊ Componentes 1GB + 2+ De acuerdo con el <10 ms > = 1 Mbps
del controlador de
controlador hardware
de hardware
┊ Todos los demás componentes 4GB + 2 + Windows ┊
7+ ┊
┊
┊
Ubuntu 14.04+ flujo de datos de capa 0
┊
┊ ┊
┊ ┊ 3.2.2
┊ 3.2 Diseño general Arquitectura
┊ ┊
3.2.1 Diagrama de flujo de datos
┊
┊ El diagrama de flujo de datos de este software sujeto
se muestra en la figura 3.1 y Figura 3.2.
┊
┊
┊
P
a
q
u
e
t
e
┊
┊
┊
┊
┊
Orden Figura 3.1 Diagrama de
flujo de datos de nivel superior
┊
┊
┊
┊
┊
l
í
n
e
a
┊
┊
┊
┊
<10 ms> = 5 Mbps
┊ El software en cuestión se compone de tres partes: parte de entrada del vehículo,
parte de cálculo somatosensorial y parte de salida de la plataforma. Sección de entrada del
vehículo
┊ Se genera el estado del vehículo, la parte de cálculo somatosensorial utiliza un algoritmo
para calcular el estado de la plataforma de acuerdo con el estado del vehículo, y la parte de
salida de la plataforma se basa en la plataforma.
┊
Estado de control de hardware específico, hardware virtual o pasado a otro software, como
el sistema de simulación visual. Los datos se generan o ingresan desde la parte de
entrada del vehículo, fluyen a la parte de cálculo somatosensorial para el cálculo
y, finalmente, el resultado del cálculo fluye a la parte de salida de la plataforma
para la salida, como se muestra en la Figura 3.3. Entre ellos, cada parte es
reemplazable, configurable y expandible, y solo hay una única entrada del vehículo
y una parte de cálculo somatosensorial, y puede haber múltiples partes de salida de
la plataforma.
┊ Figura 3.3 Composición del software
┊
┊
┊ Para lograr tal diseño en ingeniería, el módulo de diseño de patrón de adaptador
en el patrón de diseño se utiliza en la arquitectura para diseñar
┊ La arquitectura general se muestra en la figura. 3.4 como se muestra. Para facilitar la
comprensión general, lo que se muestra aquí es la división de módulos de alto nivel, es decir, las funciones de los
módulos.
┊
Puede ser completado específicamente por una o más clases, en lugar de un módulo
correspondiente a una clase.
┊
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊
┊
┊
lí
ne
a
┊ Figura 3.4 Arquitectura de software
┊
┊
La función de cada módulo se explica en detalle a continuación.
┊
┊ A. Módulo adaptador de entrada
┊ Este módulo se encarga de descubrir, gestionar y acoplar un módulo de entrada
específico según la configuración del usuario. El acoplamiento incluye aceptar módulos de
entrada
┊
Bloquear la entrada de datos en tiempo real, aceptar la interfaz de configuración
definida por el módulo y transmitir la configuración del usuario del módulo.
┊
┊ B. Complemento de generación de señal FSX
┊ El módulo es en tiempo real desde un sistema actual en ejecución. Leer la posición de la
aeronave en la instancia de Microsoft Flight Simulator X
┊
Y los datos de actitud se utilizan como estado de entrada del vehículo.
┊
┊ C. Plug-in de recepción de señal FSX
Como FSX se ejecuta en sistemas Windows. Para permitir que el servidor no se limite a este sistema
operativo, el "complemento de generación de señal FSX" no forma parte del servidor. El servidor solo
contiene el "plug-in receptor de señal FSX", es decir, un módulo remoto que coincide con el "plug-in
generador de señal FSX". Se comunica con el "plug-in generador de señal FSX" para obtener datos en
tiempo real . Además, la configuración del "plug-in de generación de señal FSX" también es
proporcionada y gestionada por el módulo en el lado del servidor. De esta forma, el usuario
Se pueden realizar varias configuraciones en un solo lugar en el lado del servidor.
D. Complemento de entrada de actitud de vuelo
El módulo tiene cambios de posición y actitud incorporados en cuatro estados de la aeronave:
despegue, aterrizaje y guiñada de izquierda a derecha. El usuario puede
┊ Una vez que se completa un cambio de estado, cambie a otro estado a través de la
interfaz. Estos estados se utilizarán como estados de entrada del vehículo en tiempo real. Además
┊ El módulo también proporciona las funciones de configuración correspondientes, lo que
permite a los usuarios definir nuevamente otros datos de estado o modificar los datos de estado
de la aeronave existentes.
┊
E. Módulo de adaptación de algoritmos
┊
┊ Este módulo se encarga de descubrir, gestionar y acoplar un módulo de algoritmo
específico según la configuración del usuario. El acoplamiento incluye la entrada del vehículo.
┊ Transferencia en tiempo real al módulo de algoritmo para el cálculo, obtener los datos de
estado de la plataforma calculados del módulo de algoritmo en tiempo real y aceptar la configuración
definida por el módulo.
┊
Interfaz, configuración de usuario de transferencia del módulo, etc.
┊
┊ F. Complemento de algoritmo de lavado clásico
┊ Este módulo proporciona una simulación somatosensorial basada en el algoritmo
clásico de lavado y calcula los datos de estado de la plataforma basándose en el estado del
vehículo en tiempo real.
┊
Permite ajustar parámetros mediante configuración.
┊
┊ G. Módulo adaptador de salida
Atuendo Este módulo se encarga de descubrir, gestionar y acoplar un módulo de salida
específico según la configuración del usuario. El acoplamiento incluye el estado de la
plataforma
┊
Los datos se pasan al módulo de salida, se acepta la interfaz de configuración
definida por el módulo y se pasa la configuración del módulo por parte del usuario.
┊
┊ H. Complemento de simulación visual para plataforma de movimiento
┊ Este módulo presenta una simulación tridimensional en tiempo real basada en la
actitud de la plataforma. La posición y postura de la plataforma de movimiento de seis grados de libertad Stewart
┊
Expresar. Los usuarios pueden observar esta plataforma de movimiento simulado desde
cualquier ángulo. Con este módulo, los usuarios pueden observar el orden somatosensorial sin
hardware
┊ Simular la situación, analizar el funcionamiento de la entrada, el cálculo y otros
pasos. Los usuarios también pueden ejecutar la plataforma de movimiento simulado con la
plataforma real
┊ El estado se compara para proporcionar una referencia para el ajuste de parámetros.
┊
Controlador de hardware
┊
┊ Este módulo es un conjunto de módulos imaginarios, que se utilizan para impulsar
módulos de acoplamiento requeridos por hardware de plataforma de movimiento específico, y sus
responsabilidades son similares a
línea Los controladores del sistema operativo deben ser desarrollados por desarrolladores o
proveedores de hardware. Dado que no existe un hardware de plataforma de movimiento adecuado
para este tema,
┊
Por lo tanto, aquí no se proporcionan módulos de muestra para controladores de
hardware.
┊
┊ Varios escenarios comunes de este módulo:
┊ Si el hardware específico es de seis libertades de alto nivel que recibe directamente los datos de
posición y actitud de la plataforma a través de la comunicación en serie
┊ Si el hardware de la plataforma de movimiento es alto, el módulo del controlador debe
realizar una comunicación en serie con el hardware y transmitir los datos de posición y actitud
de la plataforma;
┊
┊ Además, sobre la base de (1), si la comunicación con el hardware solo puede
Ventanas En el sistema operativo, necesitas
┊Para dividir el módulo de la unidad en dos partes, a saber, una parte remota y una parte de
control, para garantizar que el servidor pueda ejecutarse entre plataformas;
┊ Si el hardware específico es un conjunto de varillas de transmisión
ensambladas por el usuario(Actuador), la varilla de transmisión solo acepta la posición a través
del puerto serie
┊
┊ Y el control de velocidad para formar un hardware de plataforma de movimiento de seis
grados de libertad de bajo nivel, entonces el módulo de la unidad debe realizar la solución de
posición inversa y combinar con esto
┊ Estas varillas de transmisión realizan la comunicación en serie y transfieren los
datos de posición de la varilla de transmisión después de la solución inversa.
┊
3.2.3 La relación entre requisitos funcionales y módulos
Desarrollar y usar - - - - - ✔ -
complementos de
salida
Desarrollar y - - - - - ✔ - ✔
utilizar un
controlador de
plataforma de
movimiento
Desarrollar y - - - ✔ - - -
utilizar un
algoritmo de
simulación
somatosensorial.
funcionales y relación del
módulo
┊
Diseño e implementación
Total 88 Primero 32
0.000596z2 + 0.001190z + 0.000596
H (z) =
z2 - 1.902439z + 0.904819 (4,7)
= 0,000596 + 0,001190z – 1 + 0,000596z
–2
┊ 1 - 1,902439z – 1 + 0,9048192z – 2
Por lo tanto, de acuerdo con la ecuación (4.3), la fórmula
┊
de diferencia de filtro es:
┊ ym = 0.000596xm + 0,001190xm – 1 + (4,8)
0,000596xm – 2
┊
- (—1,902439) ym – 1 - 0,904819ym – 2
┊
┊ De acuerdo con la fórmula (4.3), el código 4.1 implementa la clase de cálculo de
filtro, y su parámetro de inicialización es el parámetro de coeficiente de filtro digital, que
proporciona
┊
┊ La interfaz debe pasar un nuevo valor como señal de entrada y calcular la respuesta de
salida.
┊
┊ clase RealtimeFilter():
┊ def en eso (uno mismo, b, a):
┊ afirmar(len(B) == len(a)) uno
┊ mismo.norte = len(B) # n =
Pa orden + 1 uno mismo.B = B
qu uno mismo.a
= a uno
et
mismo.Reinic
e iar()
┊
┊ def Reiniciar(uno mismo):
┊ uno mismo.aporte = notario público.cerosuno
┊ mismo.n, dtype=notario público.flotador) uno
┊ mismo.producción = notario público.cerosuno
mismo.n, dtype=notario público.flotador)
Or
de def aplicar(uno mismo, v):
n uno mismo.aporte[uno
┊ mismo.norte - 1] = v uno
┊ mismo.producción[uno
┊ mismo.norte - 1] = 0
┊ producción = 0
por yo en abarcar(0, uno mismo.norte):
┊ producción = producción + \
lí uno mismo.bi] * uno mismo.aporte[uno
ne mismo.norte - 1 - I] - \ uno mismo.ai] *
a
┊
┊
┊
┊
Código 4.1 Realización de la clase de cálculo de filtro digital
┊
┊
┊ Para facilitar al usuario el ajuste de los parámetros, los parámetros del filtro
analógico deben usarse directamente como parámetros, y el filtro digital debe calcularse.
┊
Parámetros, se necesita software para realizar el cálculo de transformación bilineal.
┊
usarLa biblioteca de computación científica de Python scipy puede completar el cálculo de manera fácil y eficiente.
┊ Calcule, como se muestra en el código 4.2. Entre ellos, los parámetros de entradab_analog y
a_analog son el numerador y la función de transferencia del filtro analógico, respectivamente
┊ El coeficiente del denominador; el parámetro de entrada fs es la frecuencia; la salida
b_digital y a_digital son el numerador de la función de transferencia después de la transformación bilineal
┊
Y el coeficiente del denominador.
┊
┊ pluginsByCategory [categoría].añadir
┊ (complemento) pluginsById [identificación] =
┊ enchufar
Código 5.7 Utilización yapsy encuentra y carga el complemento
┊
┊
┊ Una vez que se ejecuta el código, la variable pluginsById contiene el complemento
Un par clave-valor con ID como clave y objeto de complemento como valor,
┊ Y cada complemento está de acuerdo con la categoría dada en el archivo de descripción La
categoría se clasifica para facilitar la consulta rápida de un cierto tipo de complemento en el seguimiento.
┊
┊ 5.4.3 Carga de la capa lógica del complemento
┊
┊ usar Característica de lenguaje dinámico Python, el código contenido en el complemento se puede
ejecutar dinámicamente y se puede combinar con otros módulos en el lado del servidor
┊ Interoperar. Por lo tanto, solo es necesario cargar el módulo de entrada especificado de
acuerdo con el archivo de descripción. de acuerdo a yapsy Solicitud, entrada
┊
El módulo debe seguir las siguientes
interfaces, como se muestra en la figura 5.2
como se muestra.Atuendo
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊ Figura 5.2 diagrama de clases del complemento yapsy
┊
┊
activar (): se llama cuando el usuario activa el complemento. Puede
comenzar a comunicarse con otros módulos. línea
┊ deactivate (): se llama cuando el usuario deshabilita el complemento. Se debe terminar la
comunicación con otros módulos.
┊ En yapsy, pm.collectPlugins () La función de carga de la capa lógica se ha incluido en.
┊
┊ 5.4.4 Clase base de la capa lógica del complemento
┊
La responsabilidad del complemento de entrada es generar señales de entrada, y la
┊
responsabilidad del complemento del algoritmo es generar señales de actitud de la plataforma basadas
en las señales de entrada y el complemento de salida
┊ La responsabilidad del software es aceptar la señal de actitud de la plataforma antes de
continuar con el procesamiento. Basado en esto, en la figura 5.2 Sobre la base de las clases base
mostradas, respectivamente
┊ Encapsulan la implementación del método de clase base, el diagrama de clases se muestra en
la figura 5.3 Mostrado. Entre ellos, BasePlugin La clase base es para todos los complementos
definidos en este tema.
┊
La clase base, que encapsula la carga y el guardado de la configuración actual del
┊
complemento, proporciona el objeto de enrutamiento del complemento actual y proporciona el archivo de
descripción del complemento.
┊ contenido. La clase InputPlugin es la clase base de todos los complementos de entrada,
encapsulando la función de distribución de eventos; la clase MCAPlugin son todos los algoritmos
┊ La clase base del complemento encapsula la función de distribución de eventos y la
función de recepción de eventos; la clase OutputPlugin es la clase base de todos los complementos
de salida, sellando
┊
Función de recepción de eventos instalada. Esta encapsulación de la recepción y distribución
de eventos oculta los detalles específicos de la arquitectura impulsada por eventos y
proporciona
Forma de interfaz abstracta de nivel superior.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊ Figura 5.3 Diagrama de clases de plug-in
┊
┊
┊
Or
de
n
┊
┊ 5.4.5 Carga de la capa
de interfaz de complemento
┊
┊ Para el front-end, para cargar correctamente una sección El archivo de código JavaScript
incluye dos tareas:
┊ Permitir que se acceda a archivos de código a través de una URL específica;
línea
Bajo la premisa de que se conoce la URL, importe el archivo de código a
través de la etiqueta <script> en el archivo HTML, o mediante
┊
┊ JavaScript se introduce de forma dinámica.
┊ De la misma manera, las dos tareas anteriores también son aplicables para cargar otros
recursos en la interfaz, como estilos, imágenes, fuentes, etc. Pero debido a
┊
Hasta Webpack empaqueta el código de la capa de interfaz, por lo que se han empaquetado otros recursos
como estilos, imágenes, fuentes, etc.
┊
┊ Código JavaScript, o ya contiene el código necesario para cargar el recurso, así que asegúrese de lo
siguiente:
┊ El código JavaScript puede pasar Se accede a la URL y se introduce en HTML;
┊
Por no incluido enLos recursos en JavaScript, como imágenes, fuentes y otro contenido
binario, les permiten pasar URL
┊
┊ Ser visitado
┊ Entonces se puede realizar la carga completa de la capa de interfaz. También
empaquetado por WebpackCódigo JavaScript y recursos distintos del código
┊
Los archivos están en el mismo directorio, por lo que la implementación solo debe
garantizar:
┊
Se puede acceder a cada archivo del directorio de recursos;
Introduzca la URL de JavaScript en
HTML.A continuación, se describirá
la implementación específica de los
dos pasos anteriores.
A. Se puede acceder a los archivos del directorio de recursos.
El requisito implícito de este paso son los archivos de recursos de diferentes
complementos Las URL se pueden distinguir y no entrarán en conflicto entre sí. Por supuesto, la URL
del archivo de recursos del complemento no puede entrar en conflicto con la URL involucrada en el
marco del software, por lo que se definen las reglas de enrutamiento estático que se muestran en la
Tabla 5.2.
┊
┊ Cuadro 5.2 Reglas de enrutamiento estático definidas en este tema
┊
Enrutamiento de URL Ruta del sistema de descripción
┊ archivos
┊
/ core / static ./hexi/.ui_built Directorio
┊
de recursos
┊ del marco
┊
┊ Según esta regla de enrutamiento, cada complemento solo necesita tener un
identificador independiente, es decir plugin_id, puede garantizar el acceso al archivo de recursos
┊ Sin conflicto, implementación como código Como se muestra en 5.8.
┊
┊
┊ bp = Plano('centro', url_prefix='/centro')
Pa bp.estático('/estático', 'hexi /
qu .ui_built') aplicación.plano (bp)
et
e
bp = Plano('complemento- {0}'.formato(identificación), prefijo_url='/
┊ plugins / {0}'.formato(identificación)) pb.estático('/estático',
┊ os.camino.unirse (os.camino.dirname (complemento.camino), '.ui_built'))
┊ aplicación.plano (bp)
┊
┊
Orden Código 5.8 Crear diferentes rutas para frameworks y complementos
┊
┊
┊ Murciélago Introducción a la URL de JavaScript en HTML
┊ En este tema, dado que la lista de complementos se desconoce de antemano y depende de la
cantidad de usuarios instalados, debe ser dinámica Contenido HTML.
┊ En circunstancias normales, puede utilizar el motor de plantillas para lograr. Pero
en este tema, el costo de usar un motor de plantillas es demasiado alto y su línea de
renderización de bloqueo
┊ Afectará el buen funcionamiento del resto de la lógica del software, por lo que no se
utiliza el motor de plantilla, sino contenido HTML estático combinado con dinámico
┊ El script se carga dinámicamente. Entre ellos, la carga dinámica se divide en modo
síncrono y modo asíncrono, porque la capa de interfaz debe cargarse en todos los complementos.
┊ Una vez completada la operación, es más conveniente utilizar el método de carga
síncrona.
┊
┊ a. Contenido HTML estático
┊ Estático HTML C ó d i g o s r e l a c i o n a d o s e n e l c o n t e n i d o c o m o c ó d i g o 5.9
M o s t r a d o , d o n d e e l p r i m e r o 1, 2 El gremio cargará el marco y la tercera línea cargará todos
┊ Hay complementos y el contenido de loadPlugins.js es generado dinámicamente por el
servidor.
┊
┊
┊ <texto src="/core/static/core_dll.js"> </texto>
<texto src="/core/static/main.js"> </texto>
<texto src="/core/plugin/loadPlugins.js"> </texto>
┊
┊
┊ Listado 5.9 Estático Código clave HTML
┊ @ bp.route('/loadPlugins.js')
┊ asincrónico def get_plugins
┊ (petición):
┊ pluginIdList = [enchufar.detalles.obtener('Centro', 'Identificación')
┊ por complemento en pm.getAllPlugins ()]
responseText = 'var EXTERNAL_PLUGINS = {0}; \ n'.formato (json.volcados
┊ (pluginIdList));
┊ por identificación en pluginIdList:
┊ responseText + = ('try {{document.write (\' <script src = "/ plugins / {0}
┊ Código 5.10
/static/main.js"> </script> \ ');}} catchGenerar
(e) código
{{}} \para loadPlugin
n'.formato(identificación))
┊
┊
┊ var EXTERNAL_PLUGINS = ["input_flight_attitude", "input_fsx"];
┊ tratar{documento.escribir('<script src = "/ plugins / input_flight_attitude / static /
main.js"> </script>');}captura(mi){} tratar{documento.escribir('<script src = "/
Pa plugins / input_fsx / static / main.js"> </script>');}captura(mi){}
qu
et
e
┊
┊
Código 5.11 Muestra de contenido LoadPlugin
┊
┊
┊
5.4.6 Comunicación entre la capa de interfaz de complemento y la capa de interfaz de marco
Orden
┊ Una vez que se carga el complemento, debe poder proporcionar uniformemente la
entrada de configuración del complemento en una interfaz de nivel de marco. Por ejemplo, el
complemento puede
┊
┊ Es posible que deba agregar una entrada en la barra lateral, o puede que necesite
agregar una entrada en la interfaz de "lista de complementos". Esta función utiliza el adaptador
para configurar
┊ Para lograr el modo de diseño, la entrada de la interfaz del complemento debe
implementarse como se muestra 5.3 La interfaz que se muestra. Entre ellos, la estructura de clases de Ruta y Menú se
muestra en la figura
┊ Como se
muestra en 5.4.línea
Todos los elementos contienen su propio nombre único (Base.name), el nombre
┊
único del padre (Base.parent) y el peso de clasificación
┊ (Base.order), almacene los datos de la estructura de árbol que respaldan la prioridad
de manera plana, como se muestra en la Figura 5.5.
┊
┊
Cuadro 5.3 Convención de interfaz de capa de interfaz de complemento
┊
┊ Nombre de la firma descripción
┊ interfaz
┊ registrarseRoutes void (Ruta [] rutas) El complemento registra la ruta en esta función y
┊ la interfaz principal de la interfaz se puede
┊ especificar en la ruta.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊ Figura 5.4 Diagrama de clase de elemento de ruta y elemento de menú
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊
┊
┊
lí
ne
a
┊
┊
┊ Figura 5.5 Estructura de árbol de almacenamiento plano
┊
┊
Para los complementos, debido al orden de carga diferente, es posible que el padre
┊
dependiente aún no se haya cargado, por lo que el complemento en sí tiene una estructura plana
┊ Es una solución más razonable definir débilmente el padre y convertirlo uniformemente
en una estructura de árbol después de que se carguen todos los complementos. Por lo tanto, cada
elemento en sí
┊ Necesita definir el nombre y el nombre del padre. Además, el enrutamiento y las barras
laterales tienen un orden de prioridad, y los complementos que se cargan antes pueden desear
estar al final de la estructura.
┊
Las entradas se agregan al final, por lo que cada elemento puede admitir opcionalmente
┊ peso de clasificación específico.
un
┊ Para el marco, la esperanza final es realizar un procesamiento recursivo en una
estructura de árbol, como se muestra en la figura Como se muestra en 5.6. Código 5.12 Utilización de
funciones
┊ Programación de ideas, mapeo conciso La estructura plana descrita en 5.4 se transforma en una
estructura de árbol.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
Figura 5.6 Estructura de árbol
┊
┊
┊ importar _ desde 'lodash';
┊
┊ exportar función predeterminada buildTreeFromPlain (lista, idField = 'nombre',
Or orderField = 'orden', parentField = 'padre') {
de constante sortedList = _(lista)
n .map (elemento => {
artículo [orderField] = artículo [orderField] || 0;
┊
regreso Articulo;
┊ })
┊ .sortBy ([orderField])
┊ .map (elemento => {
┊ Eliminar item [orderField];
lí regreso Articulo;
ne })
.valor();
a
┊ constante cartografía = _.keyBy (sortedList, idField);
┊ constante raíz = [];
┊
┊ sortedList.forEach (item => {
┊ constante Identificación de los padres = item [parentField];
si (Identificación de los padres) {
┊
constante padre = mapeo [parentId];
┊ si (padre) {
┊ padres.niños = padres.niños || [];
┊ parent.children.push (elemento);
┊ }
┊ } demás {root.push
┊ (elemento);
}
┊ });
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Pa
qu Figura 6.2 Diagrama de tiempos del mecanismo de los latidos del corazón
et
e
┊
┊
┊ C. Procesamiento
de paquetes adhesivos TCP
┊
┊ TCP es un protocolo de transmisión basado en flujo de bytes conectados. El significado de flujo es que
no hay bloque de datos. Por un lado, si
Orden Envió un8 bytes de datos a la vez, luego el otro extremo puede recibir 8 bytes de datos
a la vez, o puede recibir 3 bytes a la vez,
┊ Restante 5 El byte se recibe la segunda vez y puede recibirse junto con los datos enviados
la próxima vez. En resumen, el receptor de datos no tiene
┊
El método sabe exactamente cuántos datos envía el remitente cada vez.
┊
┊ Para analizar correctamente cada instrucción, es necesario insertar un prefijo de
longitud en la instrucción para la segmentación, como se muestra en la figura. Como se muestra en
6.3. Prefijo de longitud
┊ Es un número entero cuya longitud se fija en 4 bytes y el orden de los bytes es little-
endian, que representa la longitud de una sola instrucción. La siguiente longitud
correspondientelínea
Los datos son el contenido de la instrucción. Para el extremo receptor, se puede llenar
primero.4
┊ bytes, analice la longitud y luego continúe recopilando los bytes correspondientes, de
┊ Constituye una instrucción completa.
┊
┊
┊
┊
┊
┊
┊
┊ Figura 6.3 Diagrama de prefijo de longitud
┊
┊
D. Pérdida de paquetes UDP y procesamiento fuera de secuencia
┊
UDP es un protocolo sin estado y poco confiable. Los paquetes de datos recibidos por el "complemento
de recepción de señales" pueden estar fuera de servicio o
Puede haber pérdida de paquetes. Sin embargo, debido a que los datos de postura de
FSX no dependen de la secuencia, cuando se reciben los datos de postura más
recientes, los datos de postura antiguos no tienen sentido, por lo que no hay
necesidad de lidiar con la pérdida de paquetes y los paquetes de datos fuera de
secuencia pueden descartarse. .
Aquí se utiliza un contador incrementado para identificar situaciones fuera de
secuencia y descartarlas. Al enviar paquetes de datos mediante el "complemento de
generación de señal" en el extremo de envío,
Con un número de serie creciente, representa el orden en el que se envían los
paquetes. El "complemento de recepción de señal" en el extremo receptor solo
necesita registrar el número de serie máximo recibido actualmente. Si un paquete de
datos que no excede el actual se recibe el número de serie máximo, significa un
paquete de datos caducado, se ha recibido un nuevo paquete de datos, por lo que el
paquete de datos se descarta directamente; si se recibe un paquete de datos que
excede el número de secuencia máximo actual, significa un nuevo paquete de datos
┊ Se pueden utilizar paquetes de datos.
┊ Como se muestra en la Figura 6.4, el extremo receptor recibe paquetes de datos en secuencia 0, 3, 2, 4 y
el paquete 1 se pierde, luego en este proceso
┊
Los paquetes de datos se utilizan realmente 0, 3 y 4 se utilizan como señales de entrada.
┊
┊
┊
┊
┊
┊ Figura 6.4 Diagrama esquemático del trastorno de UDP y caída de paquetes
┊
┊
E. Protocolo de serialización
┊
┊ Búfer de protocolo utilizado en la comunicación[39]Realice la serialización binaria.
Protocol Buffer es un tipo diseñado por Google
Atuendo Formato de serialización universal multiplataforma y aplicación cruzada, comúnmente
utilizado en aplicaciones con requisitos de alto rendimiento, como clientes de juegos y servicios
de juegos
┊
Entre[40]. Después de la serialización del búfer de protocolo, los datos se organizan
estrechamente, el tiempo de serialización y deserialización es corto, pero requiere una secuencia
┊
┊ Ambas partes han negociado una estructura de datos por adelantado.
┊ Código 6.5 Muestra la estructura de datos y el código de la solicitud de control del
"complemento de recepción de señal" al "complemento de generación de señal" en este tema.
┊
6.6 muestra la estructura de datos en respuesta a la solicitud. El código 6.7 muestra el orden de
transmisión del "complemento
mensaje de generación{ de señal" al "complemento de recepción de señal".
TcpRequestMessage
┊ Estructura de datos
enumeración UDP. {
MsgType
┊ MSG_TYPE_SET_CONFIG =
┊ 0;
MSG_TYPE_PING = 1;
┊ MSG_TYPE_TEST_CONNECTION = 2;
┊ }
lí
ne mensaje SetConfigBody {
a int32 el puerto UDP =
┊ 1; int32 udpToken =
2;
┊
}
┊
┊ mensaje PingBody {
┊ int32 timeStamp = 1;
┊ }
┊
┊ mensaje TestConnBody {
int32 magicToken = 1;
┊ }
┊
MsgType msgType = 1;
uno de msgBody {
SetConfigBody setConfigBody = 2;
PingBody pingBody = 3;
TestConnBody testConnBody = 4;
┊
┊
┊
Código 6.5 Definición de código que controla la estructura de datos de
la solicitud
mensaje TcpResponseMessage {
bool éxito = 1;
┊ int32 timeStamp = 2;
┊ }
┊
Código 6.6 Definición de código para controlar la estructura de datos de
┊
respuesta
┊
┊ mensaje UdpResponseMessage {
┊ enumeración MsgType {
┊ MSG_TYPE_TEST_CONNECTION_CALLBACK = 0;
┊ MSG_TYPE_TRANSMISSION_DATA = 1;
┊ }
┊
mensaje TestConnCallbackBody {
┊ int32 magicToken = 1;
┊ }
Pa
qu mensaje TransmissionDataBody {
et doble x Aceleración = 1;
e doble yAceleración = 2;
doble zAceleración = 3;
┊
doble pitchVelocity = 4;
┊ doble rollVelocity = 5;
┊ doble yawvelocidad = 6;
┊ }
┊
Or MsgType msgType = 1;
de int32 número de serie =
2; int32 simbólico = 3;
n
uno de msgBody {
┊ TestConnCallbackBody testConnCallbackBody = 4;
┊ TransmissionDataBody TransmissionDataBody = 5;
┊ }
┊ }
┊
lí
ne
a
┊
┊ Código 6.7 Definición del código de la estructura de datos de actitud de vuelo
┊
┊
┊ F. C o m p l e m e n t o d e g e n e r a c i ó n d e s e ñ a l e s a s i n c r ó n i c o Implementación del
servidor TCP
┊ asincrónico La tarea principal del servidor TCP es recibir la solicitud, procesar y retroalimentar la
respuesta exitosa. Donde para cada conectado
┊
El cliente conectado debe mantener una lista de configuración. Según el código 6.5 Hay
tres tipos de solicitudes para la estructura especificada:
┊
┊ Actualice la configuración del "complemento de recepción de señal", incluido
el número de puerto, etc., correspondiente a la estructura de datos msgType palabra
┊ El segmento es MSG_TYPE_SET_CONFIG Caso;
┊ Mantener el latido, correspondiente al campo msgType en la estructura de datos
como MSG_TYPE_PING Caso;
┊
┊ Pruebe la ruta de conexión, correspondiente a la estructura de datos en
msgType El campo es
El caso de MSG_TYPE_TEST_CONNECTION. Esta función no está implementada en este artículo.
El Listado 6.8 muestra la lógica central de la implementación específica. Debido al uso
deCon la función async / await, el código asincrónico se puede escribir en un estilo sincrónico, lo que
no solo mantiene la legibilidad del código sino que también tiene un alto rendimiento.
mientras (cierto)
{
// Leer tamaño
esperar networkStream.ReadAsync (bufferReqSize, 0, 4,
┊
token); Int32 reqSize = BitConverter.ToInt32
┊ (bufferReqSize, 0);
┊
┊ // Leer cuerpo
┊ bufferReqBody = nuevo byte[reqSize];
┊ esperar networkStream.ReadAsync (bufferReqBody, 0,
┊ reqSize); TcpRequestMessage request = TcpRequestMessage
.Parser
┊ .ParseFrom (bufferReqBody);
┊
┊ bool responseSuccess = falso;
┊ cambiar (request.MsgType)
┊ {
┊ caso TcpRequestMessage.Types.MsgType.Ping:
responseSuccess =
Pa
cierto; descanso;
qu caso TcpRequestMessage.Types.MsgType.SetConfig:
et client.SetTransmissionTarget (
e request.SetConfigBody.UdpPort,
┊ request.SetConfigBody.UdpToken);
┊ responseSuccess =
┊ cierto; descanso;
caso TcpRequestMessage.Types.MsgType.TestConnection:
┊
responseSuccess = cierto;
┊ descanso;
Or }
de
n Respuesta de TcpResponseMessage = nuevo TcpResponseMessage
┊ {
┊ Éxito = respuesta Éxito,
TimeStamp = Utils.GetTimeStamp (DateTime.UtcNow),
┊ };
┊
┊ // Escribe el tamaño y el cuerpo
lí bufferResBody = response.ToByteArray ();
ne bufferResSize = BitConverter.GetBytes (bufferResBody.Length);
a esperar networkStream.WriteAsync (bufferResSize, 0, 4, token);
┊ esperar networkStream.WriteAsync (bufferResBody, 0, bufferResBody.Length, token);
}
┊
┊
┊
┊
┊ Código 6.8 Implementación clave del servidor TCP asíncrono
┊
┊
Debido a que se ejecuta de forma asincrónica en varios subprocesos, las estructuras
de datos compartidas (como la lista de clientes conectados) deben bloquearse, como la generación
┊
┊ c ó d i g o 6,9 Mostrado. Aquí se utiliza el bloqueo de lectura y escritura asincrónico, que
puede esperar de forma asincrónica.
┊
┊ vacío asíncrono privado HandleTcpClientConnectionAsync(TcpClient
┊ tcpClient, token de CancellationToken)
{
Cliente HexiUdpClient = nuevo HexiUdpClient (((IPEndPoint)
tcpClient.Client.RemoteEndPoint) .Address.MapToIPv4 (). ToStri ng ());
usando (esperar ValueBag.HexiClientsLock.WriterLockAsync ())
{
ValueBag.HexiClients.Add (cliente);
}
tratar
{
mientras (cierto)
┊ {
┊ // ......
}
┊
}
┊ captura (OperationCanceledException)
┊ {
┊ lanzar;
┊ }
┊ finalmente
{
┊
si (tcpClient.Connected)
┊ {
┊ tcpClient.Close ();
┊ }
┊ client.Close ();
Pa usando (esperar ValueBag.HexiClientsLock.WriterLockAsync ())
qu {
ValueBag.HexiClients.Remove (cliente);
et
}
e }
┊ }
┊
┊
┊ Código 6.9 Uso de bloqueos de lectura y escritura asíncronos para resolver condiciones de
carrera de subprocesos múltiples
┊
Or
de
n
┊
┊
┊
┊
┊
lí
ne
a
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Figura 6.5 Asíncrono Diagrama de secuencia del servidor TCP
El diagrama de tiempos 6.5 describe la relación de tiempos del servidor TCP asíncrono. Diagrama de
tiempoEl "objeto de conexión" en 6.5 es el del código 6.8
TcpClient. Tenga en cuenta el cliente TCP y TCPEl servidor se implementa de forma asincrónica, por lo
que el cliente no esperará a recibir la información anterior.
Una vez que se solicita la respuesta, se envía la siguiente solicitud y el servidor no
esperará a que se envíe la respuesta antes de procesar la siguiente solicitud. Esto
reduce
IO espera para mejorar la eficiencia.
G. Complemento de generación de señal asíncrono Implementación de cliente UDP
┊ Cliente UDP según La configuración determinada por la conexión TCP envía datos e incrementa el
contador La lógica central se muestra en el código 6.10.
┊ por Para UDP, no existe el concepto de flujo, por lo que no es necesario escribir un prefijo de longitud.
Dado que el muestreo en tiempo real de la actitud de vuelo se realiza simultáneamente
┊
El código 6.10 También se implementa una función asíncrona especial SendMessage para entornos
┊
síncronos, y sus tareas se ejecutarán de forma asíncrona en el grupo de subprocesos.
┊ De acuerdo, no bloquee el código de hilo actual.
┊
┊
público Tarea <En t> SendAsync (byte[] bytes, En t norte)
┊
{
┊ si (Válido)
┊ {
┊ regreso client.SendAsync (bytes, n);
┊ }
┊ regreso Task.FromResult <En t> (0);
Pa }
qu
async público Tarea SendMessageAsync(Mensaje UdpResponseMessage)
et {
e // No es necesario agregar un prefijo de longitud ya que el tamaño del paquete es
┊ <MTU
┊ SerialNumber = SerialNumber + 1;
┊ message.Token = Token;
┊ message.SerialNumber = SerialNumber;
var cuerpo = mensaje.ToByteArray ();
┊ esperar SendAsync(cuerpo, cuerpo
Or Longitud);
de }
n
┊ vacío público Enviar mensaje(Mensaje UdpResponseMessage)
┊ {
┊ Task.Run (() => SendMessageAsync (mensaje));
┊
┊
línea GeneracionImplementación clave del cliente UDP asíncrono del código
6.10
┊
┊
┊ H. Reconexión asíncrona y automática del complemento de recepción de señal Implementación del
cliente TCP
┊ La reconexión automática incluye intentos repetidos cuando se establece la conexión
inicial y intentos repetidos después de que se desconecta la conexión. Y debido a que el
complemento puede ser en cualquier momento
┊
Deshabilitado y vuelto a habilitar por el usuario, por lo que el cliente TCP, incluido
┊ mecanismo de reconexión, debe admitir la cancelación y el reinicio. Este tema se basa en
el
┊ La máquina de estado finito realiza la reconexión automática, y el diagrama de transición
de estado se muestra en la figura Como se muestra en 6.6.
┊
┊
┊
┊
┊
┊
Una vez establecida correctamente la conexión, las corrutinas de trabajo y latido se ejecutan
de forma asincrónica al mismo tiempo. En esta asignatura, debido al soporte de reconexión
asincrónica
La lógica del cliente TCP es más complicada, por lo que es un módulo independiente. No le importa cuándo enviar
qué datos, solo a
Proporciona una interfaz para enviar datos y la persona que llama decide el momento
del envío, por lo que No se envía contenido en la corrutina de trabajo, solo se intenta leer la
respuesta de forma asincrónica y generar el evento correspondiente, como se muestra en el Listado 6.13.
Entre ellos, debido a la necesidad de lidiar con la situación del paquete pegajoso, se lee en forma de
flujo, y la longitud de los datos que se leerán posteriormente se determina según el prefijo de longitud.
En consecuencia, la interfaz para enviar mensajes se implementa como
┊ Código 6.14 Mostrado.
┊
┊
┊ asincrónico def work_async(uno mismo):
tratar:
┊ mientras Cierto:
┊ size_buffer = esperar uno mismo.lector.readexactamente4)
┊ Talla = En t.from_bytes (tamaño_buffer,
┊ byteorder='poco') body_buffer = esperar uno
┊ mismo.lector.readexactly (tamaño)
┊ msg = fsx_pb2.TcpResponseMessage ()
msg.ParseFromString (body_buffer) uno
┊
mismo.ee.emitir('tcp_received_message', msg)
┊ excepto (asyncio.IncompleteReadError, ConnectionResetError, ConnectionAbortedError):
┊ pasar Código 6.13 Implementación de la co-rutina de recepción de mensajes
Atuendo
┊
┊ def escribe un mensaje(uno mismo, msg):
datos = msg.SerializeToString ()
┊
datos = len(datos).to_bytes (4, orden de bytes = 'poco')
┊ + datos uno mismo.escritor.escribir (datos)
┊
Código 6.14 Implementación de la interfaz de envío de mensajes
Orden
┊
┊ El módulo de latido necesita enviar paquetes de datos de forma activa periódicamente para mantener la
conexión, como el código Como se muestra en 6.15.
┊
┊
┊ asincrónico def heartbeat_async(uno mismo):
lí mientras Cierto:
ne espera asyncio.dormir(10)
a msg = fsx_pb2.TcpRequestMessage ()
msg.msgType = fsx_pb2.TcpRequestMessage.MSG_TYPE_PING
┊
msg.pingBody.timeStamp = En t(hora.hora()) uno
┊ mismo.escribir_mensaje (msg)
┊
┊
┊ Código 6.15 Realización de latidos del corazón
┊
┊
┊ La última es la lógica de desconexión y reconexión. Cuando se interrumpe la conexión,
el códigoLa función readexactamente asincrónica en 6.13 generará una excepción,
┊ La excepción es asyncio.IncompleteReadError, ConnectionResetError, ConnectionAbortedError
┊
Esto interrumpe el bucle sin fin de intentar leer el flujo de datos, lo
q┊u e r e s u l t a e n La función work_async finaliza y se activa
┊ función de devolución de llamada on_work_done. Cabe señalar que, además de que la función work_async
puede finalizar después de la desconexión, también puede estar deshabilitada.
┊ Después de usar el complemento, On_work_done necesita determinar si está desconectado
pasivamente o cerrado activamente. En el último caso, no se puede volver a conectar, como se muestra
en el código 6.16; en el primer caso, es necesario cambiar el estado y volver a conectar, como se
muestra en el código 6.17.
{
"$ esquema": "http: // jsonorte‐Schema.org/draft‐04/schema# ",
┊ "escribe": "objeto",
┊ "propiedades": {
┊ "identificación": { "escribe": "cuerda" },
┊ "texto": { "escribe": "cuerda" },
┊ "orden": { "escribe": "entero" },
"fromState": {
┊ "escribe": "formación",
┊ "artículos": { "escribe": "cuerda" }
┊ },
┊ "actitudes": {
┊ "escribe":
┊ "formación",
"artículos": {
┊
"escribe": "formación",
┊ "minItems": 6,
Pa "maxItems": 6,
qu "artículos": { "escribe": "número" }
et }
e }
┊ },
"requerido": [ "identificación", "texto", "actitudes" ]
┊
}
┊
┊ Código 6.19 Descripción del formato de archivo de estado del módulo de entrada de actitud
de vuelo
┊
Orden
┊ Tabla 6.2 Archivo de estado del módulo de entrada de actitud de vuelo Descripción del campo de
actitudes
┊ Descripción del tipo de datos de subíndice
┊
0Doble Aceleració n en direcció n X ( m / s ^ 2)
┊
┊ 1Doble Aceleració n en direcció n Y ( m / s ^ 2)
línea 2Doble Aceleració n en direcció n Z ( m / s ^ 2)
┊
3Ddoble α Velocidad angular direccional ( rad / s)
┊
┊ 4Doble Velocidad angular en direcció n β ( rad / s)
┊ 5Doble γ Velocidad angular direccional ( rad / s)
┊
┊
┊ {
┊ "identificación": "despegar",
┊ "texto": "despegar",
┊ "actitudes": [
┊ [0, 0, 0, 0, 0, 0],
[0,5, 0, 0, 0, 0, 0],
┊
[1, 0, 0, 0, 0, 0],
┊ [2, 0, 0, 0, 0, 0],
.......
]
}
Código 6,20 Ejemplo de archivo de estado del módulo de entrada de actitud
de vuelo
6.2.2 Entrada de señal de posición y actitud
El código 6.21 comienza con 20Hz es la frecuencia para generar la señal de entrada de forma
asincrónica a partir del contenido del archivo de estado.
SLEEP_INTERVAL = 1 / 20
┊
asincrónico def send_signal_async(uno mismo,
┊ state_id): estado = uno mismo.estados
┊ [state_id]
┊ por actitud en el estado
┊ ['actitudes']: uno
┊ mismo.emit_input_signal (actitud)
Códi go 6.21 Realización de la señal de entrada generada por el módulo de
┊ entrada de actitud de vuelo
┊ 6.3 Módulo de
algoritmo de lavado clásico
┊
6.3.1 Descripción
general del proceso
┊
┊ Establezca el vector de pose inicial como 0;
┊
Cuando haya una señal de entrada, calcule un nuevo vector de actitud;
┊
Atuendo Basado en el nuevo vector de pose, llame a la interfaz para generar el vector
de pose de plataforma de movimiento.
┊
┊ 6.3.2 Configuración de parámetros de filtro
┊
Para facilitar al usuario la modificación de los parámetros del filtro, el filtro
utiliza archivos de configuración para describir los parámetros. Cada configuración de filtro
tiene como se muestra en la tabla
┊
┊ 6.3S e m u e s t r a n l o s e l e m e n t o s d e c o n f i g u r a c i ó n . L a c o n f i g u r a c i ó n
de parámetros inicial de todos los filtros de este módulo se muestra en
l a t a b l a 6.4 Mostrado.
Orden
┊
mesa 6.3 Descripción de los elementos de configuración del filtro
┊
Nombre del Tipo Opcional descripción
┊
elemento s de
┊ de
┊ configurac
lí ión
ne orden En t No Orden de filtro, valor 1 ~ 3
a
┊ lp bool No Ya sea un filtro de paso bajo, tome Falso significa
filtro de paso alto
┊
┊ zeta flota sí Relación de amortiguación, solo 2, 3 E l f i l t r o
┊
┊
┊ Ruta del mesa 6.4 Configuración
descripción de parámetros
orden lp inicial de todos omega
zeta los filtros omega_1
┊ elemento de
┊ configuraci
ón
┊
┊ tilt.x Coordinación de 2 Ciert 1.0 5,0 /
inclinación Filtro de o
┊
direcció n X
┊
tilt.y Coordinación de 2 Ciert 1.0 8.0 /
┊
inclinación Filtro de o
direcció n Y
movimiento.x Movimiento de 3 Falso 1.0 2.5 0,25
desplazamiento Filtro
de direcció n Z
El código 6.22 puede basarse en la tabla Los elementos de configuración que se
muestran en 6.3 construyen la clase de cálculo de filtro que se muestra en el
código 4.1.
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Pa
qu
et
e
┊
┊
┊
┊
┊
Or
de
n
┊
┊
┊
┊
┊
lí
ne
a
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
Gracias
┊
┊ La tesis de graduación (diseño) es una manifestación integral de las diversas
habilidades aprendidas a nivel de pregrado. Este proyecto de graduación me dio una comprensión
profunda de esto.
┊ En el proceso de investigación, diseño e implementación del proyecto, los profesores de
la Escuela de Software me dieron el conocimiento y la capacidad de aprender conocimiento.
┊
Mi gran ayuda me ha permitido finalmente construir de forma sistemática un software que
supera todos los niveles de los proyectos de mis cursos de pregrado.
┊
┊ En primer lugar, agradezco sinceramente al Sr. Yin Changqing, el instructor de este
proyecto de graduación. Cuando estaba perdido en la elección de un tema, el maestro Yin nunca
┊ Las sugerencias profesionales se dan desde el mismo ángulo, y luego el contenido de
investigación y diseño de este artículo está disponible. El maestro Yin tiene muchas de mis
habilidades y potencial personales.
┊
La evaluación está en su lugar, incluso mejor que yo. Hablando francamente, cuando me
decidí por primera vez sobre el tema, no tenía ni idea.
┊
┊ Me preocupaba no poder terminar bien el proyecto porque no era bueno en el campo y
falta de habilidad, además, también estaba preocupado por el tema en ese momento.
┊ Existen muchas dudas sobre hasta qué punto se ha desarrollado y mejorado la capacidad
profesional. Pero a medida que la investigación se profundizó, gradualmente vi la imagen completa
del problema.
┊
Descubrí sus partes interesantes, desafiantes y valiosas, combinadas con mi propio
conocimiento y capacidad de aprendizaje, y finalmente completé el
┊
Atuendo Sujeto. Durante el proceso de investigación, los consejos dados por el profesor Yin
también me hicieron muy gratificante y me dejaron una profunda impresión.
┊ En segundo lugar, me gustaría agradecer a Xiong Dehao de la Escuela de Ingeniería
Mecánica que me ha brindado mucha ayuda en la investigación. La dirección de simulación
somatosensorial está disponible
┊
La mayoría de los artículos están escritos por investigadores en el campo de la
ingeniería mecánica Hay un gran número de hipótesis cognitivas sobre el conocimiento mecánico en
los artículos.
┊
┊ Los diversos conocimientos profesionales que he aportado son un gran desafío para mí,
que no estoy familiarizado en absoluto con el campo de la mecánica y, a menudo, hay sesgos en
términos de comprensión.
┊Pobre, incapaz de captar temas clave, sin comprender conceptos y otros temas. El compañero
de clase Xiong Dehao usó su conocimiento profesional mecánico para responderme mucho Orden
Estaba más confundido y señalé la dirección de exploración que luego resultó ser la
dirección correcta para el problema clave, lo que me ayudó a evitar muchos problemas.
┊
┊ Los desvíos provocados por la familiaridad ahorran mucho tiempo precioso. Fue con su
ayuda que pude en un tiempo relativamente corto
┊ Aprendió, comprendió y verificó con éxito la teoría de la tecnología somatosensorial y
contribuyó al resto de la asignatura, como los sistemas enchufables y el diseño de comunicaciones
de alto rendimiento.
┊ Se ha reservado suficiente tiempo para la planificación y la implementación.
┊
línea Una vez más, me gustaría agradecer a los profesores que me enseñaron varios
conocimientos profesionales, métodos de aprendizaje y me brindaron todas las oportunidades para
practicar en los últimos cuatro años.
┊ El curso del profesor Liu Yan me dio la oportunidad de diseñar y practicar
completamente una arquitectura de sistema impulsada por eventos, que comenzó en este tema.
┊ Ha alcanzado un papel extremadamente crítico; los cursos de Hou Jie me han brindado un
aprendizaje y una comprensión profundos de varios patrones de diseño de software, y me han
convertido en
┊
Puedo diseñar arquitectura de software desde una perspectiva muy profesional, estas
┊
ideas técnicas me han beneficiado mucho y han penetrado en todos los aspectos del proyecto.
┊ Face; El curso del profesor Huang Jie me brindó una comprensión profesional y
sistemática de la ingeniería de software, lo que me permitió aplicar los conocimientos relevantes
en este artículo.
┊ Conocimiento y teoría para escribir contenido profesional; el maestro Rao Weixiong, el
maestro Du Qingfeng, el maestro Zhu Hongming, el maestro Xia Boyong y otras escuelas de software
┊
Los cursos ofrecidos por los profesores también me proporcionaron los conocimientos y
┊
métodos de aprendizaje necesarios para completar la asignatura. Este tema usa C #,
┊ Python, JavaScript y otros lenguajes de programación, combinados con Web, renderizado 3D, WinForm,
multiproceso asíncrono, TCP,
┊ Varias tecnologías, como UDP, utilizan las herramientas o tecnologías más adecuadas para lograr diversas
funciones. Es por la predicación de estos maestros
┊
Confundido, pude aprender por analogía, acumular una habilidad tan completa y completar
esta asignatura con alta calidad.
┊
┊ Finalmente, me gustaría agradecer a mis padres que han estado ayudando y apoyando
silenciosamente mi desarrollo de intereses, sin su continuo apoyo para los intereses personales.
Definitivamente no lograré lo que soy ahora; gracias a los compañeros y amigos que
han estado a mi alrededor en los últimos cuatro años, especialmente a los
compañeros de cuarto y compañeros que se unieron a varios cursos. Todos ustedes han
dejado una profunda impresión en mi vida. La huella me ha traído buenos recuerdos y
me ha permitido afrontar diversos retos con una actitud positiva y optimista.