====== Expé Soft Robotique ======
===== Principe général =====
{{:soft-robotic-gripper.jpg?nolink&400 |}}
La soft robotique, une discipline émergente au sein de la robotique.\\
Elle révolutionne notre approche en matière de conception et d’utilisation des robots car,à la différence des robots traditionnels, souvent constitués de pièces rigides et complexes, les robots souples présentent une approche novatrice basée sur des matériaux flexibles et adaptatifs.
L’impact écologique de la soft robotique est particulièrement remarquable, notamment en raison de sa faible dépendance à l’égard des composants électroniques traditionnels.\\
Contrairement aux robots classiques qui nécessitent une multitude de circuits, capteurs et autres composants électroniques, les robots souples tirent parti de matériaux intelligents et de mécanismes mécaniques simples pour accomplir leurs tâches.
Cette approche minimaliste en termes d’électronique se traduit par une empreinte écologique réduite tout au long du cycle de conception et de vie du robot. \\
De la fabrication à l’élimination en fin de vie, les soft robots limitent la consommation de ressources électroniques coûteuses et potentiellement polluantes.
En outre, la soft robotique offre des applications prometteuses dans des domaines tels que la recherche environnementale, la surveillance écologique et la conservation de la biodiversité. \\
Ces robots flexibles peuvent naviguer avec agilité dans des environnements délicats tout en minimisant les perturbations, ce qui en fait des outils idéaux pour la collecte de données sans compromettre l’intégrité des écosystèmes.
Ainsi, la soft robotique émerge comme un exemple concret de technologie respectueuse de l’environnement, offrant des solutions innovantes tout en minimisant son impact sur la planète. \\
En privilégiant la simplicité mécanique et en réduisant la dépendance aux composants électroniques, ces robots souples ouvrent la voie à une robotique plus durable et écologiquement responsable.
===== Matériels de base ====
-Imprimante 3D\\
-PLA\\
-Seringues\\
-Tubes\\
-Colles\\
-Silicone\\
-Agar-agar\\
-Pectine\\
-Balance de précision
===== Matériels supplémentaire ====
-Ordinateur\\
-Arduino UNO\\
-Moteur pas-à-pas 42HS34\\
-Puce ULN2003APG\\
-Vis sans fin\\
-câbles de connexion
----
===== R&D année 2023-2024 =====
La soft robotique, vous l’aurez compris, possède bon nombre de points positifs.\\
-Un minimum, voire aucun composant électronique,\\
-Un très faible impact écologique,\\
-Très peu de connaissances sont nécessaires pour développer des robots,...\\
Dans le cadre des recherches que nous allons effectuer durant cette année, nous mettrons l’accent sur le développement des matériaux élastomères.\\
Traditionnellement, l’utilisation du silicone est majoritairement privilégiée, mais ce matériau n’est pas particulièrement écologique.\\
Si la discipline nous a charmés, nous nous sommes rapidement rendu compte qu’il était envisageable de se pencher sur d’autres matières et réactions chimiques afin d’arriver à un résultat concluant, mais en utilisant des matières naturelles.
===== Étapes de recherches =====
Avant de pouvoir se pencher sur les élastomères naturels, nous avons décidé de nous concentrer, dans une premier temps, sur les difficultés potentiel que nous pourrions rencontrer, afin de trouver des solutions.\\
Nous devons donc valider trois points indispensables:
1: Les moules et leur impressions en 3D.\\
2: La fusion des deux parties ensemble et leur étanchéité.\\
3: L'injection d'air.\\
Pour ce faire, nous utiliserons du silicone Ecoflex 00-30 ainsi que de l'Ecoflex 00-35.\\
{{:softrobotics:ecloflex35.jpg?direct&200|}} {{:softrobotics:ecloflex35.jpg?direct&200|}}
==== Matériels de recherches ====
Agar-agar\\
Pectine\\
silicone\\
----
===== Première phase de recherches =====
Les premières phases furent relativement simples.\\
Nous avons effectué des recherches afin de trouver des exemples de moules et ainsi comprendre l'architecture nécessaire.
{{:softrobotics:moule01.jpg?direct&400|}}
==== Télécharger les modèles ====
[[https://wiki.madeintakos.com/Documents/haut.stl | Fichier 1]]
[[https://wiki.madeintakos.com/Documents/paume.stl | Fichier 2]]
Maintenant que les moules sont imprimés, il faut couler le silicone dans les deux parties.\\
Pour cela, nous utilisons une balance de précision, car il faut effectuer un mélange précis des deux composants du silicone.\\
Les proportions sont très simples, 50/50.\\
Dans le kit, il y a deux bidons, un jaune et un bleu, il faudra donc 50% du bleu et 50% du jaune.\\
{{:softrobotics:10.jpg?direct&400|}}
Une fois le mélange effectué, il est __TRÈS IMPORTANT DE MÉLANGER DURANT 3 MINUTES__.\\
Il ne reste plus qu'à couler le silicone dans le moule et de patienter 5 heures, oui c'est long :(
Nous avons essayé de gagner du temps du temps avec de l'Ecoflex 00-35 et, jusqu'à présent, cela n'a pas changé grand-chose si ce n'est qu'il sèche en 15 minutes.\\
En revanche, il nous a semblé plus compliqué à coller les deux parties entre elles, nous sommes donc retournés à l'Ecoflex 00-30.
Une fois les moules imprimés, le silicone coulé, nous commençons à rencontrer un nombre relativement important de problèmes.\\
{{:softrobotics:01.jpg?direct&300|}} {{:softrobotics:02.jpg?direct&300|}} {{:softrobotics:09.jpg?direct&300|}} {{:softrobotics:03.jpg?direct&300 |}}
Dans un premier temps, nous avons réalisé une petite pièce 3D à coller sur le haut du grappin en silicone. \\
De cette manière, nous pouvons y fixer, grâce au pas de vis, le tube destiné à injecter l’air.\\
Nous avons testé beaucoup de colles différentes, mais avec systématiquement le même résultat, un décollement de l’élément.\\
Une fois déformée, la surface du silicone faisait se décoller la fixation en PLA.\\
{{:softrobotics:04.jpg?direct&200|}} {{:softrobotics:05.jpg?direct&200|}}
Afin de pallier à ce problème, nous avons décidé de ne plus injecter l’air par le haut du grappin, mais par le côté.\\
Ainsi, nous avons réalisé un simple trou dans l’épaisseur de la pièce (entre les deux couches) afin d’y incorporer le tuyau.\\
{{:softrobotics:06.jpg?direct&300|}}
Le second problème était encore plus important et nettement plus long à solutionner.\\
Les moules se composent de deux parties.\\
La première, si l’on prend l’image d’une main, serait équivalente à la paume.\\
La seconde, quant à elle, serait le dessus de la main et comportant des « poches d’air » équivalentes aux articulations.\\
Une fois les deux parties moulées, il faut les assembler afin que les poches d’air soient sur la partie supérieure de l’a »paume ».\\
Le problème résida donc dans la manière de rassembler ces deux parties tout en associant résistance, flexibilité et étanchéité. \\
{{:softrobotics:14.jpg?direct&400|}}
{{:softrobotics:15.jpg?direct&400|}}
Là encore, nous avons essayé plusieurs colles, mais sans succès.\\
Sur internet, nous avions trouvé des exemples de personnes ayant utilisé de la colle forte (cyanolite). Nous l’avons essayé, mais sans succès.\\
De la colle de contact, pire, elle n’adhérait même pas au silicone.\\
De la colle époxy, là encore sans succès, si elle colle très bien à la surface, elle craque à la moindre torsion. \\
Et j’en passe, tout ce qui nous passait entre les mains a été utilisé en vain.\\
Nous nous sommes alors dit que le seul matériau susceptible de remplir tous les critères était le silicone lui-même.\\
Ainsi, nous avons commencé à expérimenter cette solution.\\
Dans un premier temps, sans beaucoup de succès. \\
Les deux parties collaient fort bien ensemble, mais l’excédent de silicone entrait dans les interstices des poches d’air par effet de capillarité.\\
Nous avons testé plusieurs moyens d’appliquer une fine couche afin de réduire les risques de cet effet.\\
Nous sommes arrivés à un résultat plus que probant, mais une fois l’air injecté et la pression augmentée, une fuite est brusquement apparue. \\
{{ :softrobotics:video.mp4 | }}
Nous en sommes donc arrivés à la conclusion qu’il fallait plus de matières, mais que trop, bouchait les poches et empêchait la dilatation.\\
Nous avons fini par nous renseigner sur des sites spécialisés dans les moulages en silicone pour le spectacle et avons trouvé une colle spéciale.\\
Cette dernière étant particulièrement visqueuse, nous ne craignions pas l’effet de capillarité et en y appliquant une assez bonne quantité pour résister à la pression.\\
{{:softrobotics:08.jpg?direct&300|}}
Cette solution fut la bonne !\\
{{:softrobotics:softrobotique.mp4 |}} {{:softrobotics:vid_20231220_190111.mp4 |}}
----
===== Seconde phase de recherches =====
Pour l'instant, disons que le plus dur est fait !\\
Pour l'instant seulement, car, depuis le début, nous avons bien compris que chaque étape amène son lot de surprises et, bien souvent, de problèmes.\\
Nous voilà donc partis pour une impression du moule à l'échelle 1:1.\\
Jusqu'ici, nous avions travaillé avec un moule de plus petite taille pour éviter tout gaspillage inutile.\\
{{:softrobotics:11.jpg?direct&400|}}
{{:softrobotics:comparaison.png?direct&600|}}
Mais, notre module de soft robotique étant destiné à manipuler un "panneau solaire" (élément de jeu du concours), nous devons en réaliser un plus grand.\\
Après impression du panneau en question, nous avons agrandi notre moule afin que ce dernier soit plus large que la surface qu'il doit faire pivoter.\\
{{:softrobotics:petitpanneau.png?direct&400|}}
{{:softrobotics:grandpanneau.png?direct&400|}}
{{:softrobotics:grandsilicone.png?direct&270|}}
{{:softrobotics:comparaisonsilicone.png?direct&270|}}
===== The last one =====
Après réflexion et recherches, nous ne sommes toujours pas très satisfaits du résultat. \\
Le tube d'arrivée d'air est toujours sur le côté, ce qui n'est pas idéal, et il est toujours nécessaire de refermer la forme avec l'autre partie du moule, ce qui augmente son épaisseur, mais aussi son élasticité.
Au détour d'une vidéo en 240p, hyper sombre et pas très nette, nous remarquons que le bonhomme semble avoir posé son grappin sur un tissu imbibé de silicone.
Eurêka !
La solution était en grande partie là.\\
Ni une ni deux, nous fouillons dans les chutes de l'atelier couture à la recherche d'un tissu dont les mailles ne soient pas trop serrées et le fil pas trop fin.
Le tissu parfait trouvé, nous l'imbibons de silicone et posons la pièce dessus.\\
Bon, bah forcément, c'est le premier test, donc ça rate :D Plus exactement, cela fonctionne super bien, mais nous avons soit trop appuyé, soit mis trop de silicone, car un effet de capillarité a fait remonter du silicone dans les interstices destinés à répartir l'air. \\
Quoi qu'il en soit, le second test sera le bon !\\
Non seulement la pièce est plus mince, donc plus flexible, mais nous avons aussi pu remettre l'arrivée d'air au-dessus du grappin et non plus sur le côté.
{{:ateliers:robotique:tissu.png?direct&400|}}
{{:ateliers:robotique:tissusilicone.png?direct&400|}}
-----------------------------------
===== Troisième phase de recherches =====
Si l'on veut tester et concevoir de nouveaux matériaux et étant donné les nombreuses contraintes que nous devons remplir, il est indispensable de pouvoir mesurer la résistance et la solidité des échantillons.\\
Pour cela, lors du notre dernier CoderDojo de 2023, nous avons réalisé une machine de mesure.\\
Il est évident que cette étape est facultative si vous ne souhaitez pas effectuer vos propres recherches de matériau, mais cette étape fut assez intéressante que pour vous la partager :).
==== Fonctionnement et codes ====
Son fonctionnement est assez simple, mais pour le moins efficace.\\
Nous devons mesurer des points de rupture en fonction d'une force donnée.\\
Cela implique donc de devoir étirer nos échantillons, en mesurer la force de traction, ainsi que le point de rupture.\\
Par conséquent, si la force est grande et le point de rupture élevé, nous aurons donc un matériau résistant. \\
==== Matériels ====
Pour réaliser notre machine, nous avons eu besoin de quelques composants et, bien entendu, notre très cher Arduino.
1: Un Arduino\\
2: Un capteur de force XH711\\
3: Un moteur à couple \\
4: une Broadbord\\
5: Quelques fils de prototypage\\
6: Une boite\\
7: Du câble\\
==== Construction ====
1: On commence par fixer la boîte sur une plaque.\\
2: On fixe solidement notre capteur de force XH711 en haut de la boîte.\\
Il est important de fixer le capteur sans que ce dernier touche la paroi de la boîte.\\
Sur le capteur, vous pouvez voir une sorte de pâte blanche de part et d'autre, si une pression est exercée sur cette partie, les données seront entièrement faussées et les mesures ne seront absolument pas exploitables.
{{:softrobotics:montageboite01.jpg?direct&200|}}
{{:softrobotics:montageboite02.jpg?direct&200|}}
3: Sur la plaque, nous fixons, tout aussi solidement, notre moteur, ainsi qu'une pièce destinée à enrouler le fil.\\
Ici, nous avons une roue en bois dotée d'un sillon en centre.\\
{{:softrobotics:montageboite03.jpg?direct&200|}}
{{:softrobotics:montageboite04.jpg?direct&200|}}
4: On procède maintenant au montage Arduino.\\
{{:softrobotics:xh711.jpg?direct&300|}}
{{:softrobotics:xh711montage.jpg?direct&500|}}
5: Un peu de code et quelque explication.
Arduino, si vous ne connaissez pas encore, c'est... comment le décrire ? Un miracle !\\
Plus sérieusement, Arduino est une puce de prototypage que nous utilisons énormément en robotique.\\
En gros, c'est une sorte de micro-ordinateur (un micro-contrôleur en réalité) que nous pouvons programmer et sur lequel il est possible de brancher tout un tas de capteurs et de moteurs.\\
Une fois les branchements effectués, nous pouvons écrire le code et le téléverser dans la puce.\\
Une fois en route, nous pouvons récupérer tout un ensemble de données et c'est précisément ce qui nous intéresse.\\
Donc, vous l'aurez compris, pour récupérer des valeurs, nous devons utiliser ce petit bijou, mais comment faire pour visualiser autre chose que des chiffres défilant à toute vitesse sur un écran nous direz-vous ?\\
Et bien, c'est une très bonne question, et c'est là qu'intervient Processing !
Processing, c'est un langage de programmation (et oui on y reste), mais qui est destiné à réaliser du visuel.
Pour faire court, c'est un langage principalement destiné aux Arts numériques, car il est utilisé pour faire du design génératif, mais bon, nous nous écartons de notre sujet.\\
Le fonctionnement est très simple, nous récupérons les données générées par l'Arduino et nous les donnons à Processing afin qu'il génère un graphique en temps réel.
1: Pour réaliser tout cela, il est nécessaire de télécharger les IDE [[https://www.arduino.cc/en/software|Arduino]] et [[https://processing.org/download|Processing]], ainsi que la librairie [[https://github.com/bogde/HX711|HX711.h]] pour notre capteur de force\\
2: Une fois les IDE téléchargés, il ne vous reste plus qu'à les installer.\\
3: Dézipper le dossier de la bibliothèque HX711.h dans Documents -> Arduino -> Library -> \\
4: Dans l'IDE Arduino, vous pouvez copier/coller ce code :
#include "HX711.h"
#define DOUT 2
#define CLK 3
HX711 scale;
float calibration_factor = -7050; //-7050
float premiereMesure;
float dernierMesure;
void setup() {
Serial.begin(9600);
Serial.println("Retirer tout le poids de la balance");
Serial.println("Après le début des lectures, placer le poids connu sur la balance");
Serial.println("Appuyez sur + ou sur pour augmenter le facteur d’étalonnage");
Serial.println("Appuyez sur - ou z pour diminuer le facteur d’étalonnage");
scale.begin(DOUT, CLK);
scale.set_scale();
scale.tare(); //Réinitialiser l’échelle à 0
long zero_factor = scale.read_average(); //Obtenir une lecture de référence
Serial.print("Facteur zéro: "); //Ceci peut être utilisé pour éliminer le besoin de tarer la balance. Utile dans les projets à échelle permanente.
Serial.println(zero_factor);
}
void loop() {
scale.set_scale(calibration_factor); //Ajuster à ce facteur d’étalonnage
premiereMesure = scale.get_units();
delay(10);
dernierMesure = scale.get_units();
Serial.println(dernierMesure);
if (Serial.available()) {
char temp = Serial.read();
if (temp == '+' || temp == 'a')
calibration_factor += 10;
else if (temp == '-' || temp == 'z')
calibration_factor -= 10;
}
}
Dans l'IDE de Processing, vous devez copier/coller ce code :
import processing.serial.*;
Serial myPort; // Créer un objet pour la communication série
float[] data = new float[1000]; // Tableau pour stocker les données
int index = 0; // Index actuel dans le tableau
void setup() {
size(900, 600);
// Remplacez "COM19" par le port série de votre Arduino
myPort = new Serial(this, "COM19", 9600);
}
void draw() {
background(255);
frameRate(30); // Réduire le taux d'images par seconde pour rendre le graphique plus lisible
// Dessiner le graphique
stroke(0);
noFill();
beginShape();
for (int i = 0; i < index; i++) {
float x = map(i, 0, data.length - 1, 0, width);
float y = map(data[i], 0, 100, height, 0);
vertex(x + 30, y);
}
endShape();
// Afficher la dernière valeur mesurée
fill(0);
textAlign(LEFT);
if (index > 0) {
text("Dernière mesure : " + nf(data[index - 1], 0, 2), width/2 - 50, 30);
}
// Lire les données série de l'Arduino
while (myPort.available() > 0) {
String val = myPort.readStringUntil('\n');
if (val != null) {
val = trim(val);
float weight = float(val);
// Ajouter la nouvelle valeur au tableau
data[index] = weight;
index = (index + 1) % data.length;
}
}
// Afficher l'échelle graduée de l'axe vertical
fill(0);
textAlign(RIGHT);
for (int i = 0; i <= 100; i += 10) {
float y = map(i, 0, 100, height, 0);
fill(#DE4545);
stroke(#C6C6C6);
line(0, y, width, y);
text(i, 22, y);
}
}
Une fois terminé, vous devriez avoir ceci :
{{:softrobotics:graphique.mp4?800|}}
----
===== Quatrième phase de recherches =====
Maintenant que nous avions résolu pas mal de problèmes et compris, au passage, énormément de choses, nous étions prêts à continuer nos recherches et à remplacer ce bon vieux silicone !
Lors d'un stage de robotique organisé à la MJ, deux jeunes ont enfilé leur blouse blanche et ouvert leur tableau Excel afin de suivre un protocole établi par leurs soins. \\
Leur stratégie était simple : commencer avec les proportions les plus faibles et augmenter progressivement tout en utilisant systématiquement 20g d'eau.
Ils ont commencé par la pectine, puis l'agar-agar afin d'isoler la proportion la plus optimale en termes de résistance à la torsion, tension, pression et élasticité.
Nous nous sommes rendu compte que, peu importe les quantités, la pectine ne durcissait jamais vraiment. \\
L'agar-agar, quant à lui, fonctionnait très bien, mais ne répondait pas pour autant à nos besoins techniques.
Soit la consistance était très bien, mais il ne résistait pas à la torsion, soit il ne résistait pas à la pression. \\
Globalement, nous avons remarqué que l'agar-agar, si gélatineux soit-il, ne résistait presque jamais à la pression. \\
Nous avons eu de bons résultats en termes de torsion, mais jamais sur la pression. \\
Les liaisons moléculaires semblaient très courtes, si bien que le point de rupture arrivait très vite et avec très peu de force. \\
Il était d’ailleurs si fragile que nous n'avions même pas pu placer les échantillons dans notre banc de test, car la pince, censée tenir la pièce, la coupait systématiquement.
{{:ateliers:robotique:2024-02-28_16-30-01.jpg?600|}}
{{:ateliers:robotique:2024-02-28_17-16-55.jpg?150|}}
{{:ateliers:robotique:tableau.jpg?490|}}
La seconde partie de l'expérience consistait à mélanger les deux solutions les plus adéquates, afin de combiner les propriétés. \\
Là encore, le résultat n'était pas au rendez-vous ! La pectine empêchait l'agar-agar de sécher entièrement sans pour autant gagner en élasticité.
Le jour suivant, nous avons décidé de tester des mélanges agar-agar - silicone. \\
Nous disant que 80% de silicone était toujours mieux que 100%, nous nous sommes donc aventurés dans cette voie. \\
Deux silicones à notre disposition donc deux fois plus de chance de réussir. Eh bien non.\\
=== Silicone 00-35 ===
Nous savions que le silicone durcit à froid, alors que l'agar-agar doit obligatoirement passer par une phase d'ébullition afin de pouvoir durcir. \\
La solution trouvée fut de commencer par l'agar-agar ; une fois les 100°C franchis, nous y incorporions le silicone et commencions à mélanger.\\
Presque immédiatement, une boule s'est formée sur notre mélangeur et… c'est tout ! \\
Le silicone, qui durcit normalement après 15 minutes sous l'effet de la chaleur, a durci instantanément.
=== Silicone 00-30 ===
Nous recommençons avec le silicone pendant 5 heures. \\
L'agar-agar est porté à ébullition, le silicone incorporé et la journée s'est achevée là-dessus.
Le lendemain, pressés de découvrir le résultat, notre ascenseur émotionnel s'est fracassé dans la cave de notre optimisme. \\
L'agar-agar était au fond, le silicone à la surface, nous venions de réaliser le sandwich le moins digeste du monde.\\
{{:ateliers:robotique:2024-02-29_13-12-52.jpg?600|}}
{{:ateliers:robotique:2024-02-29_13-13-05.jpg?600|}}
Passés en mode “freestyle”, les jeunes ont essayé tout ce qui leur passait par la tête, mais avec un seul résultat : \\
la déception de deux composants refusant de se mélanger.
En guise d’épitaphe, leur conclusion dans le tableau fut celle-ci :
“Conclusion après les premiers tests : \\
La pectine seule, peu importe les quantités eau / pectine, ne fonctionne pas. \\
L’agar-agar seul est prometteur, il résiste un peu à la traction et à la torsion, mais absolument pas à la pression.
L’ajout de silicone 00-35 dans l’agar-agar solidifie directement le mélange et ne fonctionne pas.
L’ajout de silicone 00-30 dans l’agar-agar fonctionne un peu mieux pour le moment car il ne se solidifie pas immédiatement. \\
Cependant, il faut attendre 5 heures pour que le silicone durcisse entièrement. \\
La tolérance à la pression est correcte, mais ni la torsion ni la traction ne sont satisfaisantes. \\
À voir demain après 5 heures de séchage. \\
Le lendemain, surprise, les deux composants se sont dissociés. \\
L’agar-agar s’est déposé au fond alors que le silicone est remonté à la surface. \\
À l’image de l’eau et de l’huile, les deux fluides ont des densités différentes, ce qui empêche un mélange homogène. \\
Nous avons essayé en effectuant une émulsion, mais ce procédé a pour effet d’emprisonner trop de bulles, rendant la cohésion de l’échantillon bien trop fragile.”
----
===== Liens =====
[[https://en.wikipedia.org/wiki/Soft_robotics|Wikipedia]] \\
[[https://softroboticstoolkit.com/|softroboticstoolkit.com]] \\
[[https://www.thingiverse.com/search?q=soft+robotic&page=2&type=things&sort=relevant|www.thingiverse.com]]\\
[[https://sparkoh.be/projet-robotixs/robotixs-junior/|Robotix's junior 2024]]\\
[[https://coderdojobelgium.be/fr|CoderDojo]]\\
[[https://www.mjverte.be/|MJ Verte]]
----
====== Expérience réalisée grâce au soutient de MJ VERTE ======
{{ :softrobotics:logo_mj_verte.png?direct&200 |}}