Pictoparle, septième sprint

Sep­tième sprint de l’application Pic­to­parle, un outil de com­mu­ni­ca­tion alter­na­tive et aug­men­tée des­ti­né aux per­sonnes en situa­tion de défi­cience visuelle ren­con­trant des dif­fi­cul­tés dans la com­mu­ni­ca­tion orale. On peut bien sûr aller voir ce qui s’est pas­sé lors des sprints pré­cé­dents, car je par­le­rai ici uni­que­ment des avan­cées de la der­nière semaine.

Cette semaine a été assez active. J’ai tra­vaillé sur le site inter­net pour le rendre plus lisible, j’ai ajou­té l’ex­port pdf des planches pour l’im­pres­sion sur la fabrique de Pic­to­parle, et j’ai fina­li­sé un pre­mier pro­to­type phy­sique, que nous avons pu tester.

Site internet

J’ai refon­du le site inter­net de Pic­to­parle pour bien dis­tin­guer les pages expli­quant com­ment on peut uti­li­ser Pic­to­parle des pages qui décrivent le déve­lop­pe­ment et le fonc­tion­ne­ment interne de l’ou­til.

Cap­ture d’é­cran de la pre­mière page de Pic­to­Parle pré­sen­tant les trois étapes de l’u­sage : fabri­quer son dis­po­si­tif, conce­voir ses planches, uti­li­ser PictoParle

En sépa­rant ces deux par­ties, j’es­père rendre plus com­pré­hen­sible ce pro­jet à deux niveaux de lec­ture différents.

Planches prêtes à l’impression

J’ai ajou­té à la fabrique de pic­to­parle l’ex­port en pdf des deux pages qui per­met­tront à tout uti­li­sa­teur ou uti­li­sa­trice d’im­pri­mer ses propres planches. Chaque pdf ain­si expor­té est com­po­sé de deux pages : la pre­mière page avec les pic­to­grammes pour ther­mo­gon­flage, la seconde qui sera pla­cée au ver­so, en impres­sion simple, et qui com­porte le QRcode pour la détec­tion auto­ma­tique des planches.

Tech­ni­que­ment, j’ai uti­li­sé deux librai­ries très bien pen­sées : jsPDF pour la fabri­ca­tion du pdf, et bwip-js pour la géné­ra­tion du QRcode.

J’en ai pro­fi­té pour amé­lio­rer un peu l’in­ter­face et l’u­ti­li­sa­bi­li­té de la fabrique sur quelques petits détails.

Prototype physique

En début de semaine, j’ai revu l’as­sem­blage des planches et du boî­tier, car la pre­mière solu­tion envi­sa­gée ren­dait les planches trop volumineuses.

Assem­blage sim­pli­fié de la planche sur le boîtier

La nou­velle jonc­tion ima­gi­née me sem­blait inté­res­sante, aus­si je suis pas­sé à sa fabri­ca­tion en car­ton-bois, en sui­vant les conseils de Clé­ment, un ancien étu­diant en archi­tec­ture qui a dû en faire, des maquettes.

L’as­sem­blage s’est presque bien pas­sé, et j’ai pu faire tes­ter le dis­po­si­tif à une uti­li­sa­trice. La pro­chaine étape sera d’im­pri­mer des planches ther­mo­gon­flées com­plètes, ce que je n’a­vais pas eu le temps de faire.

Fabri­ca­tion puis pre­mières uti­li­sa­tions du boî­tier et de la planche PictoParle.

À l’u­sage, la recon­nais­sance de la planche n’est pas encore assez robuste, mais j’u­ti­lise encore les QRcodes des­si­nés à la main, je suis impa­tient d’u­ti­li­ser une ver­sion impri­mée. L’as­sem­blage entre planche et boî­tier est per­fec­tible, d’une part avec une meillure pré­ci­sion d’as­sem­blage, mais éga­le­ment avec un rehaus­se­ment des par­ties laté­rales, et peut-être j’a­jout d’une barre de main­tient, telle que le pré­sen­tait la maquette numérique.

Je suis éga­le­ment impa­tient d’es­sayer la découpe laser de medium, pour obte­nir un ren­du plus solide, et plus agréable… Mais il fau­dra pour cela implé­men­ter un géné­ra­teur de DXF pour la découpe !

J’a­vais un peu peur de la consom­ma­tion de la camé­ra pour la détec­tion de planches, mais d’a­près mes tests, on est à envi­ron 45 mAh pour 10 minutes d’u­ti­li­sa­tion de l’ap­pli­ca­tion, ce qui laisse pré­sa­ger une auto­no­mie de plus d’une dizaine d’heures.

Prochains développements

Les pro­chains déve­lop­pe­ments s’o­rien­te­ront pro­ba­ble­ment sur le géné­ra­teur de DXF pour la découpe laser, et sur des tests uti­li­sa­teur pour vali­der les approches explorées.

Pictoparle, sixième sprint

Sixième sprint de l’application Pic­to­parle, un outil de com­mu­ni­ca­tion alter­na­tive et aug­men­tée des­ti­né aux per­sonnes en situa­tion de défi­cience visuelle ren­con­trant des dif­fi­cul­tés dans la com­mu­ni­ca­tion orale. On peut bien sûr aller voir ce qui s’est pas­sé lors des sprints pré­cé­dents, car je par­le­rai ici uni­que­ment des avan­cées de la der­nière semaine.

Ce week-end, je me suis essen­tiel­le­ment consa­cré au déve­lop­pe­ment d’un outil per­met­tant de fabri­quer ses propres planches pour Pic­to­parle. En voi­ci une démonstration.

Démons­tra­tion de la fabrique de Pictoparle

Comme pré­sen­té dans cette vidéo, on peut choi­sir par­mi dif­fé­rentes mises en page, ou encore char­ger une planche déjà fabri­quée par le pas­sé. On peut ensuite asso­cier à chaque pic­to­gramme une image, et un texte.

Après avoir choi­si un nom à cette planche, on peut alors la sau­ver. Un fichier au for­mat zip est alors géné­ré. Après avoir trans­fé­ré ce fichier sur la tablette (en la connec­tant par usb à l’or­di­na­teur), on uti­lise alors le ges­tion­naire de planches de Pic­to­parle pour char­ger cette nou­velle planche.

Dans la démons­tra­tion vidéo, on peut voir d’autres mises en page que les mises en page pré­cé­dem­ment présentées.

Pen­dant ce sprint, j’ai uti­li­sé JSZip et boots­trap pour la concep­tion de la fabrique de pic­to­parle, et j’ai éga­le­ment cor­ri­gé quelques bugs dans l’ap­pli­ca­tion Android.

Essayer la fabrique de Pictoparle

La fabrique à Pic­to­parle est dis­po­nible en ligne, n’hé­si­tez pas à l’es­sayer, et à me faire part des dys­fonc­tion­ne­ments, com­por­te­ments pro­blé­ma­tiques, ou amé­lio­ra­tions possibles.

Futurs développements

La fabrique de pic­to­parle en est à sa toute pre­mière ver­sion. Dans les pro­chains sprints, je compte notam­ment ajou­ter la géné­ra­tion des docu­ments per­met­tant la fabri­ca­tion de la planche physique.

Petits plaisirs techniques

Depuis deux mois, je tra­vaille à dis­tance. Ori­gi­nal, me direz-vous. Les acti­vi­tés cultu­relles et sociales étant très réduites, et puisque j’ai plu­sieurs pro­jets en cours néces­si­tant de coder (pic­to­parle, svg-to-stl, flatten.js, unkm.fr, Time­line), j’ai repris un mode de vie proche de celui de mes années lycée et pre­mières années uni­ver­si­taires : un mara­thon heb­do­ma­daire de gee­ke­ries en tout genre. L’oc­ca­sion de sor­tir des sen­tiers que j’a­vais trop bat­tus, et de décou­vrir de nou­veaux outils, librai­ries, tech­no­lo­gies… Voi­ci un petit tour d’ho­ri­zon non exhaus­tif, qui sem­ble­ra banal à certain·e·s geeks, mais que j’ai pris plai­sir à découvrir.

Aver­tis­se­ment : certain·e·s logi­ciels ou biblio­thèques lis­tées ci-des­sous ne sont pas libres au sens de la GPL, car distribué·e·s sous licences équi­valent BSD. Je m’ex­cuse d’a­vance pour toutes les per­sonnes qui pour­raient être cho­quées par ces pra­tiques légères… (fin du mes­sage des­ti­né à Fred)

Rédaction

J’ai déjà écrit il y a peu pour par­ler de MDwi­ki, mais j’a­vais envie de par­ler aus­si un peu de mkdocs, que j’u­ti­lise main­te­nant mas­si­ve­ment pour fabri­quer les sites inter­net de mes dif­fé­rents pro­jets, pro­fes­sion­nels ou per­son­nels (mer­ci Vincent Maze­nod). Facile à prendre en main, il s’ap­puie sur une hié­rar­chie de docu­ments au for­mat mark­down, dis­pose d’un maxi­mum d’ex­ten­sion et de thème, dont le très chouette Mate­rial, notam­ment en action sur le site de pic­to­parle. Pour regar­der sous le capot, vous pou­vez aller faire un tour sur le dépôt qui contient le code source de ce site internet.

Android

Avec Pic­to­parle jus­te­ment, j’ai explo­ré à fond les bonnes pra­tiques d’An­droid, ain­si que quelques biblio­thèques bien pra­tiques. Je pense notam­ment à zxing, conseillé par Laurent Pro­vot, pour lire les QRcodes. Super simple à inté­grer et à uti­li­ser, c’est le pied.

J’ai aus­si pu décou­vrir le méca­nisme de la com­mu­ni­ca­tion entre pro­ces­sus conseillée par les concep­teurs d’An­droid, et très bien docu­men­tée dans cet article de Jani­shar Ali. Le prin­cipe géné­ral est d’a­voir une boucle, qui per­met aux pro­ces­sus d’é­chan­ger des ins­truc­tions exé­cu­tables, ou Run­nable. Les ThreadHand­ler s’oc­cupent de récu­pé­rer les ins­truc­tions des­ti­nées à leur pro­ces­sus, en écou­tant ce qui cir­cule sur la boucle.

J’ai aus­si décou­vert le méca­nisme des frag­ments, per­met­tant de géné­rer auto­ma­ti­que­ment un graphe de navi­ga­tion dans les dif­fé­rentes vues de l’appli­ca­tion. J’ai aus­si mieux com­pris com­ment fonc­tionne le mul­ti­touch sous Android, très orien­té détec­tion de gestes, et que j’ai un peu contour­né pour per­mettre à mon outil d’i­gno­rer les doigts sup­plé­men­taires à la sur­face des pictogrammes.

Géométrie et géomatique

Les opé­ra­tions boo­léennes entre formes géo­mé­triques (union, inter­sec­tion, dif­fé­rence) sont sou­vent peu stables, notam­ment quand elles tra­vaillent avec des nombres à vir­gules flot­tantes. C’est encore plus vrai quand il s’a­git de gérer des super­po­si­tions de bords d’ob­jets… En javas­cript, j’ai décou­vert la librai­rie mar­ti­nez, implé­men­ta­tion d’un article de 2018, qui marche rela­ti­ve­ment bien, en pre­nant en compte plein de cas limites, et qui est très rapide. D’a­bord uti­li­sée dans svg-to-stl, je l’ai aus­si réuti­li­sée dans unkm.fr pour recher­cher effi­ca­ce­ment les inter­sec­tions entre routes.

J’ai aus­si décou­vert RBush et fast­bush, deux outils de détec­tion rapide d’in­ter­sec­tion entre rec­tangles, que j’ai uti­li­sé dans svg-to-stl et dans unkm.fr.

J’ai aus­si redé­cou­vert la sim­pli­ci­té d’u­ti­li­sa­tion de lea­flet, qui per­met très rapi­de­ment de des­si­ner des choses sur une carte. C’est d’ailleurs un outil que j’u­ti­lise avec les copains du pro­jet Com­pas. On aura bien­tôt des choses à mon­trer, j’espère !

Enfin, map­sha­per qui per­met de mani­pu­ler en ligne de com­mande des don­nées géo­gra­phiques au for­mat sha­pe­file ou geo­j­son, par exemple pour sim­pli­fier les contours des dépar­te­ments dans unkm.fr :

mapshaper -i input.shp snap -proj wgs84 -simplify 25% weighted keep-shapes -o format=geojson precision=0.00001 output.json

Scripter, programmer

Map­sha­per per­met­tant de fabri­quer des geo­j­son, on peut vou­loir les modi­fier, comme ce que j’ai fait avec les dépar­te­ments, grâce au super outil jq. On écrit des règles de fil­trage, de par­cours, de sélec­tion, comme à l’é­poque des véné­rables XPath et XSLT, le tout en ligne de com­mande. En une ligne, on extrait d’un gros fichier la géo­mé­trie de chaque département :

jq -c ".features[] | .properties.code_insee" output.json | while read line; do fname=${line//\"}.json; jq -c ".features[] | select(.properties.code_insee==$line)" output.json > $fname; done

Il faut aus­si que je confesse ici avoir mis un doigt dans VSCo­dium (encore une fois grâce à Vincent Maze­nod). Cet édi­teur de code déve­lop­pé par Micro­soft est super bien pen­sé, il se fait trans­pa­rent, s’a­dap­tant flui­de­ment aux usages, avec pas mal de fonc­tion­na­li­tés dis­crètes mais effi­caces. Dis­tri­bué sous licence libre (enfin MIT), il est dis­po­nible sur la plu­part des sys­tèmes d’ex­ploi­ta­tion, notam­ment dans une ver­sion allé­gée des par­ties de tra­cking et de télé­mé­trie main­te­nues par Microsoft.

Multimédia

Dans la famille des outils mul­ti­mé­dias, j’ai d’a­bord décou­vert avec grand plai­sir que kden­live était deve­nu un édi­teur de vidéo très stable. Mon sou­ve­nir datait de 10 ans en arrière, et c’é­tait plu­tôt un sou­ve­nir sombre. Je l’ai cepen­dant uti­li­sé pour une toute petite tran­si­tion, mais il a fait le job très bien. J’ai aus­si fait un peu de modé­li­sa­tion 3D avec blen­der, en pro­fi­tant des bonnes pra­tiques que Blen­der Guru pré­sente sur sa chaîne you­tube, que je suis avec grand plai­sir. Même si j’ai uti­li­sé une ver­sion 2.7x, les vidéos de ces der­niers mois autour de blen­der 2.8x donnent très très envie de s’y frotter.

En par­lant de nou­velles ver­sions de logi­ciels, je ne peux pas m’empêcher de signa­ler qu’inks­cape vient d’être publiée en ver­sion 1.0. La vidéo de démons­tra­tion montre une évo­lu­tion dans la conti­nui­té des ver­sions pré­cé­dentes, avec des concepts simples, mais efficaces :

Pré­sen­tai­ton d’inks­cape 1.0

Et pour finir, je pro­fite de ce billet pour par­ta­ger la décou­verte il y a quelques mois de splee­ter, l’ou­til conçu par Dee­zer pour sépa­rer la voix des musiques depuis un fichier son. Idéal pour se pré­pa­rer un karaoke ! Le résul­tat est sou­vent bluf­fant, et il semble uti­li­ser mas­si­ve­ment l’ap­pren­tis­sage pro­fond. À essayer !

Pictoparle, cinquième sprint

Cin­quième sprint de l’application Pic­to­parle, un outil de com­mu­ni­ca­tion alter­na­tive et aug­men­tée des­ti­né aux per­sonnes en situa­tion de défi­cience visuelle ren­con­trant des dif­fi­cul­tés dans la com­mu­ni­ca­tion orale. On peut bien sûr aller voir ce qui s’est pas­sé lors des sprints pré­cé­dents, car je par­le­rai ici uni­que­ment des avan­cées de la der­nière semaine.

Assemblage des planches

J’ai tout d’a­bord for­ma­li­sé sous forme d’une maquette numé­rique une pro­po­si­tion d’as­sem­blage des planches, qui prend en compte le fait que la détec­tion des planches est assu­rée par la web­cam et les QRcodes. Il est ain­si néces­saire que le geste soit le plus constant pos­sible à chaque mani­pu­la­tion, afin de faci­li­ter la détection.

Concept d’as­sem­blage des planches.

Dans cette pro­po­si­tion, l’u­ti­li­sa­teur est invi­té à poser le bas de la planche
sur la tablette, puis à la faire glis­ser jus­qu’aux butées pré­vues à cet effet,
avant de faire pivo­ter la planche sur la tablette. J’ai ima­gi­né un bord de tablette éva­sé, de sorte à faci­li­ter le posi­tion­ne­ment de la tablette au début (les deux « pattes » étant plus écar­tées que le bord de la tablette), puis qui s’é­carte vers le bas de la tablette. Une fois posi­tion­né, la planche est sta­bi­li­sée grâce aux pattes, et aux bords sur­éle­vés de la boîte en haut et en bas.

Sur la vue 3D, je n’ai pas vrai­ment tra­vaillé l’é­pais­seur de la planche (les pic­to­grammes semblent un peu trop en creux), ni l’es­pace de confort entre les pic­to­grammes et le bord des cadres. D’ailleurs, la taille des pic­to­grammes est un peu approxi­ma­tive, c’est plus une vue d’ar­tiste qu’un pro­to­type réaliste.

Cette maquette numé­rique a été un outil de dis­cus­sion avec les pro­fes­sion­nelles qui m’ac­com­pagnent dans la concep­tion de cette solution.

Gestion des planches personnalisées

Lorsque j’ai com­men­cé Pic­to­parle, on m’a très vite deman­dé si les planches pour­raient être per­son­na­li­sables. C’é­tait bien sûr mon inten­tion dès le début, mais les pre­miers pro­to­types n’en étaient pas capables.

C’est main­te­nant chose faite, avec la pos­si­bi­li­té d’im­por­ter des planches dans un for­mat dédié, pour lequel je fabri­que­rai pro­chai­ne­ment un outil d’as­sis­tance à la conception :

Ges­tion des planches dans Pictoparle

Dans cet extrait, on découvre que six pic­to­grammes consti­tuent le défaut de Pic­to­parle, qui peut ensuite être enri­chi faci­le­ment de nou­velles planches. Toutes les planches, qu’elles soient fixes ou per­son­nelles, peuvent être désac­ti­vées à volon­té. Le for­mat lu par Pic­to­parle est une archive zip conte­nant un fichier xml de des­crip­tion de la planche, et les images (actuel­le­ment au for­mat png) de cha­cun des pic­to­grammes. Lorsque les sons per­son­na­li­sés seront pris en charge par l’ap­pli­ca­tion, ils seront éga­le­ment inté­grés aux fichiers.

Petites améliorations logicielles

De manière géné­rale, en inté­grant cette nou­velle fonc­tion­na­li­té, j’en ai pro­fi­té pour amé­lio­rer la sta­bi­li­té, la per­for­mance, et l’er­go­no­mie de l’ap­pli­ca­tion. Au fil des sprints, j’es­saye de rendre le code source du logi­ciel le plus facile à prendre en main. Sur ce type de pro­jet, où l’on tra­vaille par inter­mit­tence à son amé­lio­ra­tion, il est essen­tiel d’a­voir un code source bien struc­tu­ré et rela­ti­ve­ment bien docu­men­té, sans code mort. Tout n’est pas par­fait, loin de là, mais j’en suis tout de même assez content.

Réflexions sur les alternatives à Pictoparle

En échan­geant avec un membre d’ISAAC fran­co­phone, je me deman­dais ce qui fai­sait la spé­ci­fi­ci­té de Pic­to­parle par­mi les solu­tions exis­tantes de com­mu­ni­ca­tion amé­lio­rée et aug­men­tée. J’ai donc ajou­té au site inter­net une des­crip­tion de ses spé­ci­fi­ci­tés.

Pictoparle, quatrième sprint

Qua­trième sprint de l’application Pic­to­parle, un outil de com­mu­ni­ca­tion alter­na­tive et aug­men­tée des­ti­né aux per­sonnes en situa­tion de défi­cience visuelle ren­con­trant des dif­fi­cul­tés dans la com­mu­ni­ca­tion orale. On peut bien sûr aller voir ce qui s’est pas­sé lors du sprint pré­cé­dent, car je par­le­rai ici uni­que­ment des avan­cées de la der­nière semaine.

La vidéo ci-des­sous per­met d’ap­pré­cier une grande par­tie des amé­lio­ra­tions de cette nou­velle version :

Démons­tra­tion du qua­trième prototype

Tout d’a­bord, on peut y voir les pre­miers pro­to­types de planches phy­siques. Elles sont pour l’ins­tant en car­ton souple, et les pic­to­grammes y sont des­si­nés au feutre noir. Pas encore de mise en relief des des­sins, ni des espaces inter-pic­to­grammes. Le sup­port n’est pas non plus assez rigide pour un usage fluide. Une petite exten­sion car­rée en haut de la planche per­met de por­ter au ver­so le QRcode d’i­den­ti­fi­ca­tion de la planche.

Car c’est l’une des avan­cées que j’at­ten­dais depuis long­temps : la détec­tion auto­ma­tique des planches à leur approche au des­sus de la tablette, grâce à cette iden­ti­fi­ca­tion gra­phique. Il y aura bien sûr pas mal d’op­ti­mi­sa­tions pour arri­ver à une uti­li­sa­tion fluide, mais les bases sont là car la détec­tion fonc­tionne même avec des QRCodes des­si­nés à la main. En sui­vant les sug­ges­tions de Laurent Pro­vot, j’ai uti­li­sé la librai­rie zxing.

Grâce aux dis­cus­sions avec les pro­fes­sion­nelles du CRDV impli­quées dans la concep­tion de l’ou­til, cette nou­velle ver­sion per­met de confi­gu­rer des planches conte­nant plu­sieurs pan­neaux de pic­to­grammes dis­tri­bués en grille. Chaque groupe peut avoir sa taille de pic­to­grammes. On peut par exemple repro­duire sur chaque planche un pan­neau fixe, avec les pic­to­grammes récur­rents. C’est ce qui a été expé­ri­men­té sur le pro­to­type de cette semaine.

Par­mi les amé­lio­ra­tions non visibles, mais qui sont essen­tielles au fonc­tion­ne­ment de Pic­to­parle, on peut citer l’u­ti­li­sa­tion d’une tâche (thread) sépa­rée pour gérer la caméra.

Améliorations futures

Les pro­chaines amé­lio­ra­tions concer­ne­ront pro­ba­ble­ment l’in­té­gra­tion de sons enre­gis­trés pour amé­lio­rer les retours audio, la conso­li­da­tion de la détec­tion auto­ma­tique des planches, l’a­mé­lio­ra­tion du pro­to­type phy­sique qui entou­re­ra la tablette, ou encore la pos­si­bi­li­té de chan­ger de planches sans devoir recom­pi­ler l’application.