ForceSeatMI est une interface facile Ă utiliser mais puissante, qui permet dâajouter la prise en charge dâune plateforme de mouvement Ă nâimporte quelle application ou jeu (appelĂ© SIM dans les sections suivantes). Dans la plupart des applications, il nâest pas nĂ©cessaire de contrĂŽler le matĂ©riel directement depuis le SIM. Câest pourquoi ForceSeatMI sert uniquement Ă envoyer des donnĂ©es de tĂ©lĂ©mĂ©trie ou des demandes de positionnement Ă ForceSeatPM. Cette approche dĂ©lĂšgue au ForceSeatPM la responsabilitĂ© de transformer les donnĂ©es de tĂ©lĂ©mĂ©trie en mouvements rĂ©els de la plateforme, au lieu de le faire dans le SIM. Elle simplifie aussi la gestion des erreurs que le SIM doit implĂ©menter.
Avec la derniĂšre version de ForceSeatMI, il est possible de contrĂŽler le matĂ©riel en utilisant la cinĂ©matique inverse. Le SIM envoie la position requise du chĂąssis supĂ©rieur et ForceSeatPM calcule les positions nĂ©cessaires des bras (ou des actionneurs). Cette fonctionnalitĂ© peut ĂȘtre utilisĂ©e dans une application oĂč un positionnement prĂ©cis est requis, plutĂŽt quâune simulation des forces.

| Cette documentation sâapplique uniquement Ă ForceSeatMI 2.63 ou plus rĂ©cent. Les anciennes versions de lâAPI ne sont pas couvertes par ce document. ForceSeatMI 2.63+ nâest pas non plus rĂ©trocompatible, au niveau de lâinterface et du binaire, avec les versions 2.61 et antĂ©rieures. Passer dâune ancienne version de ForceSeatMI Ă 2.63+ nĂ©cessitera des modifications dans le code source de ton application. |
| ForceSeatMI utilise une DLL installĂ©e dans le cadre du logiciel ForceSeatPM. Assure-toi dâavoir ForceSeatPM installĂ© sur ton ordinateur. |
ForceSeatMI fonctionne dans lâun des modes dĂ©crits ci-dessous. Pour une premiĂšre utilisation, il est recommandĂ© de commencer par Logical Table Position, car câest lâexemple le plus simple et il fonctionne avec le profil intĂ©grĂ© SDK â Positioning.
| Mode | Description | Applications | Profil recommandé |
| DonnĂ©es de tĂ©lĂ©mĂ©trie | Dans ce mode, le SIM envoie directement Ă ForceSeatPM des informations sur la position du vĂ©hicule, les forces g et les accĂ©lĂ©rations dans le systĂšme de coordonnĂ©es du vĂ©hicule. Toute la transformation des forces en mouvements du chĂąssis supĂ©rieur est effectuĂ©e dans le moteur de scripts de ForceSeatPM. Cela permet de modifier facilement le mapping et les paramĂštres de filtrage sans avoir Ă changer quoi que ce soit dans le SIM. | Jeux et simulations de physique de vĂ©hicules | SDK â Vehicle Telemetry SDK â Plane Telemetry |
| Position logique de la table | Dans ce mode, le SIM envoie la position du chĂąssis supĂ©rieur (lacet, tangage, roulis, heave, sway et surge) en unitĂ©s abstraites (pourcentages de la rotation/translation maximale). Cela permet au SIM de prendre le contrĂŽle total de la position du chĂąssis supĂ©rieur, mais câest au SIM de calculer les angles et dĂ©calages corrects. | Pour les applications qui veulent mieux contrĂŽler la position du chĂąssis | SDK â Positioning |
| Position prĂ©cise de la table | Ce module utilise la matrice de transformation du chĂąssis supĂ©rieur fournie par le SIM et calcule les positions de tous les bras/actionneurs en unitĂ©s rĂ©elles. | Applications de test dâĂ©quipement | SDK â Positioning |
structSize est un champ obligatoire qui DOIT ĂȘtre renseignĂ©. Il sert Ă gĂ©rer la compatibilitĂ© ascendante/descendante entre la DLL et le SIM.
télémétrie.structSize = sizeof(ForceSeatMI_Telemetry);
mask indique quels autres champs sont dĂ©finis. Par exemple, si le SIM fournit roll dans la structure FSMI_TopTablePositionLogical, alors le champ mask doit contenir le bit FSMI_POS_BIT_POSITION. Il est nĂ©cessaire dâinclure toujours le champ state dans le mask (FSMI_POS_BIT_STATE ou FSMI_TEL_BIT_STATE).
#define FSMI_POS_BIT_STATE ... #define FSMI_POS_BIT_POSITION ... #define FSMI_POS_BIT_MATRIX ... #define FSMI_POS_BIT_MAX_SPEED ... #define FSMI_POS_BIT_TRIGGERS ... #define FSMI_POS_BIT_AUX ... #define FSMI_TEL_BIT_STATE ... #define FSMI_TEL_BIT_RPM ... #define FSMI_TEL_BIT_SPEED ... #define FSMI_TEL_BIT_YAW_PITCH_ROLL ... #define FSMI_TEL_BIT_YAW_PITCH_ROLL_ACCELERATION ... #define FSMI_TEL_BIT_YAW_PITCH_ROLL_SPEED ... #define FSMI_TEL_BIT_SWAY_HEAVE_SURGE_ACCELERATION ... #define FSMI_TEL_BIT_SWAY_HEAVE_SURGE_SPEED ... #define FSMI_TEL_BIT_PEDALS_POSITION ... #define FSMI_TEL_BIT_GEAR_NUMBER ... #define FSMI_TEL_BIT_GROUND_TYPE ... #define FSMI_TEL_BIT_COLLISION ... #define FSMI_TEL_BIT_GLOBAL_POSITION ... #define FSMI_TEL_BIT_TIME ... #define FSMI_TEL_BIT_TRIGGERS ... #define FSMI_TEL_BIT_MAX_RPM ... #define FSMI_TEL_BIT_FLAGS ... #define FSMI_TEL_BIT_AUX ...
Si ForceSeatMI est utilisĂ© dans le SIM, le SIM doit appeler ForceSeatMI_BeginMotionControl au moins une fois, sinon lâĂ©tat pause sera prĂ©sent en permanence. AprĂšs le premier appel, tu peux choisir comment gĂ©rer la pause. Une option consiste Ă appeler ForceSeatMI_EndMotionControl et une autre consiste Ă dĂ©finir le bit state. Notre recommandation est la suivante :
Autrement dit, il est recommandĂ© dâutiliser ForceSeatMI_BeginMotionControl/ForceSeatMI_EndMotionControl pour gĂ©rer les transitions exĂ©cution â menu principal, et state pour gĂ©rer les Ă©vĂ©nements de pause de courte durĂ©e.
Les champs state se composent de 8 bits, mais dans la version actuelle seul le premier bit est utilisé.
| Pense Ă ajouter FSMI_POS_BIT_STATE ou FSMI_TEL_BIT_STATE au mask si le champ state doit ĂȘtre dĂ©fini. Assure-toi de dĂ©finir state au moins une fois pour sortir la plateforme de mouvement de la pause aprĂšs lâappel Ă ForceSeatMI_BeginMotionControl. |
Les exemples suivants sont fournis avec le SDK. Assure-toi dâutiliser le bon profil pour chaque exemple.
| Exemple | Description | Profil requis |
| TableLogPos_CPP TableLogPos_CS TableLogPos_Unity TableLogPos_Unreal | Montre comment contrĂŽler la position de la table supĂ©rieure en spĂ©cifiant le roulis, le tangage, le lacet, le heave, le sway et le surge en pourcentage des mouvements maximum. Peut ĂȘtre utilisĂ© pour contrĂŽler tous types de plateformes de mouvement. | SDK â Positioning |
| TablePhyPos_CPP TablePhyPos_CS TablePhyPos_Unity TablePhyPos_Unreal | Montre comment spĂ©cifier une position prĂ©cise de la table supĂ©rieure en fournissant le roulis, le tangage, le lacet, le heave, le sway et le surge en unitĂ©s rĂ©elles. Fonctionne uniquement avec les machines 3DoF et 6DoF. | SDK â Positioning |
| TableMatrixPos_CPP TableMatrixPos_CS | Montre comment spĂ©cifier une position prĂ©cise de la table supĂ©rieure en fournissant une matrice de transformation. RecommandĂ© uniquement pour les machines 6DoF. | SDK â Positioning |
| Telemetry_Veh_Unity Telemetry_Veh_Unreal | Montre comment envoyer des donnĂ©es de tĂ©lĂ©mĂ©trie vĂ©hicule du SIM vers ForceSeatPM. | SDK â Vehicle Telemetry |
| Telemetry_Fly_Unity Telemetry_Fly_Unreal | Montre comment envoyer des donnĂ©es de tĂ©lĂ©mĂ©trie avion du SIM vers ForceSeatPM. | SDK â Plane Telemetry |
