Au cours de l'année 2024-2025, moi et cinq autres élèves d'IMT Atlantique avons collaboré avec l'école Wushu de Brest pour concevoir une méthode d’évaluation quantitative des mouvements de Tuishou, une pratique de Taichi à deux.
L’objectif était de créer un cadre permettant de comparer les mouvements d’un expert et d’un novice, à la fois de manière visuelle et objective, afin d’identifier les écarts de posture, de rythme et de fluidité.
Ce projet combinait data visualisation, analyse de données, et méthodologie centrée utilisateur, tout en intégrant une approche rigoureuse de gestion de projet.
Poster
Voici le poster que nous avons présenté au forum.

L'équipe
Notre équipe était composée de profils variés, issus de spécialités différentes. J'étais spécialisée en développement logiciel collaboratif, tandis que d'autres membres étaient spécialisés en réseaux, réalité virtuelle, data et gestion de projet. Cette diversité nous a permis de répartir les rôles de manière efficace et de tirer parti de nos compétences complémentaires.
Chaque membre avait deux rôles : un rôle technique et un rôle lié à la gestion de projet. Par exemple, j’étais à la fois documentaliste lors des réunions et spécialiste Unity pour le développement et l’analyse de données.
Au-delà de l’aspect technique, ce projet nous a permis de découvrir la pratique du Taichi et du Tuishou, enrichissant notre expérience à la fois intellectuellement et sur le plan personnel.

Gestion de projet
Analyse du besoin
La première étape a consisté à dialoguer avec l’école Wushu pour clarifier leurs attentes.
Nous avons reformulé le besoin initial, défini des objectifs selon la méthode SMART et réalisé une analyse fonctionnelle et des risques.
Cette phase a permis d’établir un cadre clair pour le projet et de structurer nos livrables.


Organisation
Pour coordonner notre travail, nous avons mis en place plusieurs outils complémentaires :
- Trello pour le suivi à court terme des tâches
- Diagramme de Gantt et WBS pour planifier le projet à long terme
- Google Drive et GitLab pour centraliser documents et code
La communication interne se faisait via WhatsApp et la communication externe via une liste de diffusion.
Cette organisation nous a permis d’anticiper les risques, de suivre l’avancement et de faciliter la collaboration au sein de l’équipe.


Technique
Prise en main
Nous avons commencé par une revue de l’état de l’art et l’analyse des travaux des promotions précédentes.
Chaque membre a partagé ses connaissances via des tutoriels et synthèses, permettant une montée en compétence rapide sur OptiTrack et Unity.
Des formations internes et un auto-apprentissage en ligne ont complété cette phase.
Collecte de la data
La collecte des mouvements a été réalisée avec OptiTrack, en optimisant le suivi des mains et la position des capteurs.
Difficultés rencontrées :
- La stabilité du suivi des mains a été un défi majeur, nécessitant un mois de travail au lieu des deux semaines initialement prévues. Les capteurs peuvent être masqués lors du contact entre partenaires.
- L’ajout de caméras supplémentaires pourrait améliorer la précision, mais complique la recalibration.
- Les combinaisons utilisées ont parfois été trop amples, entraînant des imprécisions.

Analyse et visualisation
Les données brutes ont été importées dans Unity après un passage par Blender pour séparer les modèles et positionner correctement les avatars.
Difficultés rencontrées :
- Séparer les données de deux personnes enregistrées simultanément a nécessité un travail dans Blender avant l’import Unity.
- Repositionner les avatars face à face dans Unity a été complexe, car ils étaient dans des dossiers distincts.
- La modélisation des lignes (linerenderers) posait problème : lorsqu’elles étaient à l’intérieur des avatars, elles devenaient invisibles. Solutions envisagées : rendre les avatars transparents ou déplacer légèrement les lignes.
- L’enregistrement des vidéos Unity était simple, mais le montage a été chronophage et a nécessité une anticipation de la captation.

Exemple de script Unity: pour visualiser le centre de gravité du bas du corps dans Unity, nous avons utilisé le script suivant :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Affiche le centre de gravité du bas du corps
public class CalculCentreGravite : MonoBehaviour
{
[SerializeField] Transform piedGauche;
[SerializeField] Transform piedDroit;
[SerializeField] Transform bassin;
[SerializeField] float massePiedGauche = 1f;
[SerializeField] float massePiedDroit = 1f;
[SerializeField] float masseBassin = 3f;
[SerializeField] LineRenderer lineRenderer;
private Vector3 centreGravite;
void Start()
{
if (lineRenderer != null)
{
lineRenderer.positionCount = 2;
lineRenderer.startWidth = 0.5f;
lineRenderer.endWidth = 0.5f;
lineRenderer.material = new Material(Shader.Find("Unlit/Color"));
lineRenderer.startColor = new Color(1f, 1f, 0f);
lineRenderer.endColor = new Color(1f, 1f, 0f);
}
}
void Update()
{
centreGravite = CalculerCentreGravite();
if (lineRenderer != null)
{
lineRenderer.SetPosition(0, centreGravite);
lineRenderer.SetPosition(1, centreGravite + Vector3.up * 0.5f);
}
Debug.Log("Centre de Gravité: " + centreGravite);
}
Vector3 CalculerCentreGravite()
{
float masseTotale = massePiedGauche + massePiedDroit + masseBassin;
Vector3 centre = (piedGauche.position * massePiedGauche +
piedDroit.position * massePiedDroit +
bassin.position * masseBassin) / masseTotale;
return centre;
}
}
Résultats
Le projet a permis de produire :
- Une méthode reproductible d’analyse des mouvements de Tuishou
- Des visualisations dynamiques mettant en évidence les écarts entre expert et novice
- Une vidéo démonstrative validée par l’école Wushu


Pistes d’amélioration
Plusieurs axes ont été identifiés pour les prochaines équipes à qui nous passons le projet:
- Approfondir l’analyse de la précision des mouvements
- Se concentrer davantage sur les métriques que sur la capture des mains
- Débuter avec un modèle simplifié avant d’intégrer deux personnes simultanément
Ces pistes permettront de gagner du temps et d’améliorer la qualité des analyses futures.