柔道

De Design numérique
Révision datée du 18 décembre 2018 à 12:58 par MaudH (discussion | contributions) (Aller plus loin)
Aller à : navigation, rechercher

Projet initial

OK, le projet initial était de lier la pratique du terminal avec un sujet que j'aborde dans un autre cours, à savoir le judo.

Je pensais d'abord traduire les sons produits par un judoka chutant suite à l'exécution des techniques propres au kata. https://www.youtube.com/watch?v=YOcVfmmMBLY

Kano Shihan projetant Yoshitsugu YAMASHITA avec Uki-goshi

Mais je ne savais pas comment aborder le terminal dans cette optique là. Et je n'avais pas encore pris réellement en main le programme, donc même avec les recherches sur le net, mes maigres essais se sont très vite révélés être des échecs, de quoi baisser les bras...

Mais c'est en m’intéressant aux projets des autres étudiants que j'ai pu découvrir les possibilités qui s'offraient grâce au terminal. C'est le projet de Léna Bruyère qui m'a le plus inspiré et décidé de travailler sur la notion d'aléatoire.

En effet, l'idée maintenant est de faire décider par la machine l’exécution d'une technique de judo debout suivie d'une technique de judo au sol, le tout aléatoirement. Excellent exercice pour les judokas à court d'idée d'enchaînement.

Pour ce faire, la première étape du projet est de lister l'ensemble des techniques de Nage-waza (68) et de Katame-waza (32), respectivement les techniques de projections et les techniques de contrôles.

Les principales techniques de projections en judo, poster.

La seconde est de rédiger un script qui irait dans un premier temps chercher aléatoirement un technique dans le premier fichier Nage-waza et dans un deuxième temps dans le fichier Katame-waza.

Et en pratique?

1) Documents texte

La première chose faite était la création des documents textes (ci-dessous):

liste des techniques de judo debout
liste des techniques de judo au sol






























































2) Code

Ensuite il fallait déterminer la commande qui permettrait de demander au terminal de sélectionner aléatoirement une technique du groupe Nage-waza et une autre du groupe Katame-waza. Pour se faire j'ai demandé à mon entourage de m'aider et on a réussi à créer un code qui fonctionnait!

le premier code

→ This script takes a random line from one file, a random line from another file and put them together in another file

  • put the number of lines of file 1 in a variable
  • choose a random number between 1 and the number of lines from file 1
  • do the same things with file 2
  • take the first "random_line1" lines from file 1, then take the last line of the result, then put it in WazaSelection.txt if WazaSelection.txt already exists, its content is erased before.
  • take the first "random_line2" lines from file 2, then take the last line of the result, then append it to WazaSelection.txt
  • print the results to the console
exécution du code























Ici, le code est simplifiable donc avec Alexia, nous avons chercher la manière la plus simple d'exécuter ma demande. Après quelques recherches et test, le code simplifié ne faisait plus qu'une ligne et ne prenait même pas la forme d'un script!

test simplification du code (1)

→ ici, en plus de la commande cat qui sert à afficher, on a utilisé la commande shuf qui sert à déterminer la selection aléatoire par l'ordinateur
→ pour que le terminal ne sélectionne qu'une seule technique je lui suggère -n1. Ainsi, il ne va sélectionner qu'une seule ligne du texte initial. D'où l'importance de bien revenir à la ligne à chaque technique différente dans le fichier texte.

test simplification du code (2)









→ les tests sont concluant mais il n'y a pas de séparation entre les deux fichiers textes: le terminal choisi aléatoirement dans les deux fichiers simultanément. Donc on pourrait avoir deux techniques du premier groupe et non pas deux techniques appartenant aux deux groupes différents.

ligne de commande finale



→ Donc en fait, il est important de demander une chose à la fois à la machine. Ici, on demande d'afficher dans un premier temps 1 ligne aléatoire du document Nage-waza.txt et à la suite par la commande &&, la même chose pour le document Katame-waza.txt
→ La mission était remplie! Hourra :D

Aller plus loin

Une fois mon objectif rempli, il me fallait réinterroger le projet.

A quoi sert-il?

En fait si on suit ma ligne directrice de ce projet, c'est réellement un outil pratique pour exercer n'importe quel judoka.

Comment le mettre en application?

Pourquoi ne pas lier le médium vidéo avec chaque technique afin de donner à voir chaque technique? En partant de là, je voudrais commencer petit en m'attaquant non pas à l'ensemble des techniques de judo existantes (ça n'en finirait pas) mais bien au Kata, qui est une démonstration des techniques principales. Il en existe plusieurs catégories différentes, chacunes comportant 3 techniques démontrées à droite puis à gauche. En tant que judoka, je n'en connais que 3 groupes: Te-waza; Koshi-waza; et Ashi-waza. Au total donc, 9 techniques différentes.

1) Nouveau document texte

Ainsi, il me fallait réorganiser mes fichiers textes afin d'obtenir un résultat cohérant. Les 9 techniques seront regroupées dans un seul et même fichier.

liste des 9 premières techniques du Kata
















2) Clip vidéo

J'ai moi même réalisé une vidéo de mon frère et moi réalisant le kata mais par soucis de droits à l'image, j'ai utilisé une vidéo professionnelle en provenance de Youtube. Ce qu'il fallait faire c'était de couper les séquences aux différentes techniques et les renommer comme ci-dessous (je n'ai pas réussi à importer ces mêmes vidéos...)

Les-dites vidéos






3) Code

Tout d'abord, il me fallait trouver comment lancer une vidéo dans le terminal.

cygstart.exe
Lancer une vidéo test avec cygstart.exe

Cela fonctionnait pour la vidéo test. Maintenant l'enjeu était d'allier la commande l'aller chercher aléatoirement une technique et de lancer la vidéo qui s'y rapportait...

"$ cygstart.exe "$(cat kata.txt | shuf -n1).mp4"
combinaison code texte et code vidéo (1)

L'erreur se trouvait dans la nomination des vidéos et/ou du texte. C'était signifié par un rectangle vide.

ANECDOTE : en essayant de rajouter au fichier texte ".mp4" à la fin du nom des techniques, il y a eu un bug infini qu'il fallait stopper avec la commande "Ctrl+V"
Bug 1
Bug 2