Approche d'apprentissage intensif STEM

Dans le monde de l'enseignement de l'ingénierie, il existe de nombreux excellents cours, mais souvent le programme d'études qui en découle présente un grave inconvénient - le manque de bonne connectivité entre les différents sujets. On peut objecter: comment cela?

Lors de la formation d'un programme de formation, des conditions préalables et un ordre clair dans lequel les disciplines doivent être étudiées sont indiqués pour chaque cours. Par exemple, pour assembler et programmer un robot mobile primitif, vous devez connaître un peu la mécanique pour créer sa structure physique; les bases de l'électricité au niveau des lois d'Ohm / Kirchhoff, la représentation des signaux numériques et analogiques; opérations avec des vecteurs et des matrices afin de décrire les systèmes de coordonnées et le mouvement du robot dans l'espace; bases de programmation au niveau de la présentation des données, algorithmes simples et structures de transfert de contrôle, etc. pour décrire le comportement.

Est-ce que tout est dans les cours universitaires? Bien sûr que oui. Cependant, pour les lois d'Ohm / Kirchhoff, nous obtenons la thermodynamique et la théorie des champs; en plus des opérations avec matrices et vecteurs, vous devez gérer les formulaires Jordan; étudier le polymorphisme en programmation - des sujets qui ne sont pas toujours nécessaires pour résoudre un problème pratique simple.

L'enseignement universitaire est vaste - l'étudiant va sur un large front et souvent ne voit pas le sens et la signification pratique des connaissances qu'il reçoit. Nous avons décidé d'inverser le paradigme de l'enseignement universitaire STEM (à partir des mots Science, Technology, Engineering, Math) et de créer un programme qui repose sur la cohérence des connaissances, permettant la construction de l'exhaustivité à l'avenir, c'est-à-dire qui implique un développement intensif des matières.

L'étude d'un nouveau domaine peut être comparée à l'étude d'un certain domaine. Et ici, il y a deux options: soit nous avons une carte très détaillée avec une énorme quantité de détails qui doivent être étudiés (et cela prend beaucoup de temps) afin de comprendre où sont les principaux points de repère et comment ils se rapportent les uns aux autres; ou vous pouvez utiliser le plan primitif, qui ne montre que les points principaux et leurs positions relatives - une telle carte suffit pour commencer immédiatement à se déplacer dans la bonne direction, clarifiant les détails en cours de route.

Nous avons testé l'approche d'apprentissage intensif STEM à l'école d'hiver, que nous avons menée avec des étudiants du MIT avec le soutien de JetBrains Research.

Préparation du matériel


La première partie du programme de l'école était une semaine de cours dans les principaux domaines, qui comprenait l'algèbre, les circuits électriques, l'architecture informatique, la programmation Python et une introduction au ROS (Robot Operating System).

Les directions n'ont pas été choisies par hasard: en se complétant, elles étaient censées aider les élèves à voir le lien entre des choses apparemment différentes, à première vue - les mathématiques, l'électronique et la programmation.

Bien sûr, l'objectif principal n'était pas de donner de nombreuses conférences, mais de donner aux étudiants la possibilité de mettre en pratique les connaissances qu'ils venaient d'acquérir.

Dans la section d'algèbre, les étudiants pouvaient être formés aux opérations avec des matrices et à la résolution de systèmes d'équations qui étaient utiles pour étudier les circuits électriques. En apprenant le dispositif à transistor et les éléments logiques construits sur sa base, les élèves pouvaient voir leur application dans le dispositif processeur et, après avoir appris les bases du langage Python, écrire un programme pour un vrai robot.



Duckietown


L'une des tâches de l'école était de minimiser le travail avec des simulateurs lorsque cela était possible. Par conséquent, un grand ensemble de circuits électroniques a été préparé, que les étudiants ont dû assembler sur une planche à pain à partir de composants réels et les tester dans la pratique, et Duckietown a été choisi comme base pour les projets.

Duckietown est un projet open source qui comprend de petits robots autonomes appelés Duckiebot et un réseau de routes le long desquelles ils se déplacent. Duckiebot est une plate-forme à roues équipée d'un micro-ordinateur Raspberry Pi et d'une seule caméra.

Sur cette base, nous avons préparé un ensemble de tâches possibles, telles que la construction d'une feuille de route, la recherche d'objets et l'arrêt à côté d'eux, et un certain nombre d'autres. Les étudiants peuvent également proposer leur propre problème et non seulement écrire un programme pour le résoudre, mais aussi le lancer immédiatement sur un vrai robot.

Enseignement


Au cours de la conférence, les enseignants ont expliqué le matériel à l'aide de présentations pré-préparées. Certaines classes ont été enregistrées sur vidéo, les étudiants ont donc pu les regarder à la maison. Pendant les cours, les étudiants ont utilisé du matériel sur leur ordinateur, posé des questions, résolu des problèmes ensemble et indépendamment, parfois au tableau noir. Sur la base des résultats des travaux, la note de chaque élève séparément pour différentes matières a été calculée.



Pensez à donner des cours dans chaque matière plus en détail. Le premier sujet était l'algèbre linéaire. Les étudiants d'un jour ont étudié les vecteurs et les matrices, les systèmes d'équations linéaires, etc. Les tâches pratiques ont été construites dans un mode interactif: les tâches proposées ont été résolues individuellement, et l'enseignant et d'autres élèves ont donné des commentaires et des conseils.



Le deuxième sujet est l'électricité et les circuits simples. Les étudiants ont étudié les bases de l'électrodynamique: tension, courant, résistance, loi d'Ohm et lois de Kirchhoff. Les tâches pratiques ont été partiellement effectuées dans le simulateur ou exécutées sur la carte, mais plus de temps a été consacré à la construction de circuits réels, tels que les circuits logiques, les circuits oscillatoires, etc.



Le sujet suivant est l'architecture informatique - dans un sens, un pont reliant la physique et la programmation. Les étudiants ont étudié la base fondamentale, dont la signification est plus théorique que pratique. Comme pratique, les élèves ont conçu indépendamment des circuits arithmétiques et logiques dans le simulateur, pour les points qu'ils ont reçus.

Le quatrième jour est le premier jour de programmation. Python 2 a été choisi comme langage de programmation, car il est utilisé dans la programmation sous ROS. Cette journée s'est déroulée comme suit: les enseignants ont expliqué le matériel, donné des exemples de résolution de problèmes, tandis que les élèves les écoutaient, assis devant des ordinateurs, et répétaient ce que l'enseignant avait écrit au tableau ou sur la diapositive. Ensuite, les élèves ont résolu eux-mêmes des problèmes similaires, puis les solutions ont été évaluées par les enseignants.

Le cinquième jour était dédié à ROS: les gars se sont familiarisés avec la programmation de robots. Tout au long de la journée scolaire, les élèves se sont assis devant des ordinateurs, exécutant le code du programme dont l'enseignant a parlé. Ils ont pu lancer indépendamment les unités de base de ROS et se sont également familiarisés avec le projet Duckietown. À la fin de cette journée, les élèves étaient prêts à commencer la partie conception de l'école - résoudre des problèmes pratiques.



Description des projets sélectionnés


Les étudiants ont été invités à se joindre à des équipes de trois personnes et à choisir un sujet de projet. En conséquence, les projets suivants ont été adoptés:

1. Calibrage des couleurs. Duckiebot doit calibrer la caméra lors des changements de conditions d'éclairage, il y a donc une tâche de calibrage automatique. Le problème est que les gammes de couleurs sont très sensibles à la lumière. Les participants ont mis en œuvre un utilitaire qui mettrait en évidence les couleurs souhaitées sur le cadre (rouge, blanc et jaune) et créerait des plages pour chacune des couleurs au format HSV.

2. Taxi de canard. L'idée de ce projet est que Duckiebot pourrait s'arrêter près d'un objet, le ramasser et suivre une certaine route. Un canard jaune vif a été choisi comme objet.



3. Construire un graphique des routes. Il s'agit de construire un graphique des routes et des intersections. L'objectif de ce projet est de construire un graphe routier sans fournir de données environnementales a priori pour Duckiebot, en s'appuyant uniquement sur les données des caméras.

4. Voiture de patrouille. Ce projet a été inventé par les étudiants eux-mêmes. Ils ont proposé d'enseigner à un Duckiebot, la "patrouille", de poursuivre l'autre, "l'intrus". Dans ce but, un mécanisme de reconnaissance de cible par le marqueur ArUco a été utilisé. Dès que la reconnaissance est terminée, un signal d'achèvement est envoyé à «l'intrus».



Étalonnage des couleurs


L'objectif du projet Color Calibration était d'adapter la gamme de couleurs de marquage reconnaissables aux nouvelles conditions d'éclairage. Sans de tels ajustements, la reconnaissance des lignes d'arrêt, des séparateurs de voies et des limites des routes est devenue incorrecte. Les participants ont proposé une solution basée sur des modèles de couleurs de mise en page de prétraitement: rouge, jaune et blanc.

Chacune de ces couleurs a une plage préliminaire de valeurs HSV ou RVB. En utilisant cette plage, toutes les zones contenant des couleurs appropriées se trouvent sur le cadre et la plus grande est sélectionnée parmi elles. Cette zone est considérée comme la couleur à retenir. Ensuite, des formules statistiques sont utilisées, telles que le calcul de la moyenne et de l'écart-type, afin d'évaluer la nouvelle gamme de couleurs.

Cette plage est écrite dans les fichiers de configuration de la caméra Duckiebot et peut être utilisée plus tard. L'approche décrite a été appliquée aux trois couleurs, formant éventuellement des plages pour chacune des couleurs de balisage.

Les tests ont montré une reconnaissance presque parfaite des lignes de marquage, sauf lorsqu'une bande brillante a été utilisée comme matériau de marquage, reflétant les sources de lumière si fortement qu'à l'angle de vue de la caméra, le marquage est apparu blanc quelle que soit sa couleur d'origine.



Taxi canard


Le projet Duck Taxi a impliqué la construction d'un algorithme de recherche pour un canard passager dans la ville, puis son transport jusqu'au point souhaité. Les participants ont divisé cette tâche en deux: détection et déplacement le long du graphique.

Les élèves ont effectué la détection des canards, en faisant l'hypothèse que le canard est n'importe quelle zone du cadre qui peut être reconnue comme jaune, avec un triangle rouge (bec) dessus. Dès qu'une telle zone est détectée dans l'image suivante, le robot doit s'en approcher puis s'arrêter quelques secondes, simulant un atterrissage de passager.

Ensuite, ayant un graphique de route pré-enregistré de la duckietown entière et la position du bot, ainsi que la réception de la destination en entrée, les participants construisent un chemin du point de départ au point d'arrivée en utilisant l'algorithme de Dijkstra pour rechercher des chemins dans le graphique. La sortie est présentée comme un ensemble de commandes - tourne à chacune des intersections suivantes.



Graphique des routes


Le but de ce projet était de construire un graphique - un réseau de routes à Duckietown. Les nœuds du graphique résultant sont des intersections et les arcs sont des routes. Pour ce faire, Duckiebot doit explorer la ville et analyser son itinéraire.

Au cours du travail sur le projet, l'idée a été envisagée, mais l'idée de créer un graphique pondéré dans lequel le coût de l'arête est déterminé par la distance (temps à surmonter) entre les intersections a été rejetée. La mise en œuvre de cette idée s'est avérée trop laborieuse et il n'y aurait pas assez de temps dans le cadre de l'école.

Lorsque Duckiebot arrive à l'intersection suivante, il choisit la route quittant l'intersection sur laquelle il n'a pas encore bougé. Lorsque toutes les routes à toutes les intersections ont été couvertes, une liste générée de contiguïtés d'intersection reste dans la mémoire du bot, qui est convertie en une image à l'aide de la bibliothèque Graphviz.

L'algorithme proposé par les participants ne convient pas à Duckietown arbitraire, mais il a bien fonctionné dans une petite ville composée de quatre intersections utilisées au sein de l'école. L'idée était de compléter chaque intersection avec un marqueur ArUco contenant l'identifiant d'intersection afin de suivre l'intersection.
Le schéma de fonctionnement de l'algorithme développé par les participants est illustré dans la figure.



Voiture de patrouille


Le but de ce projet est de rechercher, poursuivre et détenir un robot intrus à Duckietown. La patrouille de robots devrait se déplacer le long de l'anneau extérieur de la route dans la ville à la recherche d'un robot intrus bien connu. Une fois l'intrus détecté, le robot de patrouille doit suivre l'intrus et le faire arrêter.

Le travail a commencé par la recherche de l'idée de détecter un bot sur le châssis et de reconnaître l'intrus à l'intérieur. L'équipe a suggéré d'équiper chaque bot de la ville d'un marqueur unique à l'arrière - tout comme les vraies voitures ont des numéros d'enregistrement d'État. Pour cela, des marqueurs ArUco ont été choisis. Ils étaient auparavant utilisés dans duckietown, car il est facile de travailler avec eux et ils vous permettent de déterminer l'orientation du marqueur dans l'espace et sa distance.

Ensuite, il fallait faire bouger le robot de patrouille strictement dans le cercle extérieur sans s'arrêter aux intersections. Par défaut, Duckiebot se déplace dans une voie et s'arrête à une ligne d'arrêt. Ensuite, à l'aide de panneaux routiers, détermine la configuration de l'intersection et fait un choix sur la direction de l'intersection. Pour chacune des étapes décrites, l'un des états de la machine d'état du robot est responsable. Afin de se débarrasser des arrêts à l'intersection, l'équipe a changé la machine d'état afin que, à l'approche de la ligne d'arrêt, le bot se place immédiatement dans l'état de passage de l'intersection.

L'étape suivante consistait à résoudre le problème de l'arrêt du robot intrus. L'équipe a supposé que le robot de patrouille peut avoir un accès SSH à chacun des robots de la ville, c'est-à-dire avoir des informations sur les données d'autorisation et l'identifiant de chaque robot. Ainsi, après la détection de l'intrus, le robot de patrouille a commencé à se connecter via SSH au robot d'intrusion et a éteint son système.

Après avoir confirmé que la commande d'arrêt était terminée, le robot de patrouille s'est également arrêté.
L'algorithme du robot de patrouille peut être représenté comme le schéma suivant:



Travail de projet


Le travail était organisé dans un format similaire à Scrum: chaque matin, les étudiants planifiaient des tâches pour la journée en cours et, le soir, rendaient compte du travail effectué.

Le premier et le dernier jour, les élèves ont préparé des présentations décrivant la tâche et comment la résoudre. Pour aider les étudiants à suivre leurs plans choisis, dans les salles où les projets étaient en cours, il y avait constamment des professeurs de Russie et d'Amérique qui répondaient aux questions. La communication s'est déroulée principalement en anglais.

Résultats et leur démonstration


Les travaux sur les projets ont duré une semaine, après quoi les étudiants ont présenté leurs résultats. Chacun a préparé des présentations dans lesquelles il a raconté ce qu'il avait appris dans cette école, quelles étaient les leçons les plus importantes qu'il aimait ou qu'il n'aimait pas. Après cela, chaque équipe a présenté son projet. Toutes les équipes ont fait face aux tâches.

L'équipe qui met en œuvre l'étalonnage des couleurs a terminé le projet plus rapidement que les autres, elle a donc réussi à préparer la documentation de son programme. Et l'équipe impliquée dans le graphique des routes, même le dernier jour avant la démonstration du projet, a tenté de finaliser et de corriger leurs algorithmes.



Conclusion


Après l'école, nous avons demandé aux élèves d'évaluer les activités passées et de répondre aux questions sur la façon dont l'école a répondu à leurs attentes, quelles compétences ils ont acquises, etc. Tous les élèves ont noté qu'ils avaient appris à travailler en équipe, à répartir les tâches et à planifier leur temps.

Les étudiants devaient également évaluer l'utilité et la complexité des cours. Et ici, deux groupes d'évaluations se sont formés: pour certains, les cours n'étaient pas très difficiles, tandis que d'autres les ont jugés les plus difficiles.

Cela signifie que l'école a pris la bonne position, restant accessible aux débutants dans un domaine particulier, mais fournissant également du matériel pour la répétition et la consolidation aux étudiants expérimentés. Il convient de noter que presque tout le monde a noté un cours de programmation (Python) comme simple, mais utile. Le plus difficile, selon les étudiants, a été le cours "Architecture informatique".

Lorsque les élèves ont été interrogés sur les lacunes et les avantages de l'école, beaucoup ont répondu qu'ils aimaient le style d'enseignement choisi, dans lequel les enseignants apportaient rapidement et individuellement une assistance et répondaient aux questions.

Les étudiants ont également noté qu'ils aimaient travailler dans le mode de planification quotidienne de leurs tâches et fixer des délais de manière indépendante. Les étudiants ont noté le manque de connaissances fournies, qui était nécessaire pour travailler avec le bot: lors de la connexion, comprendre les bases et les principes de son travail comme des lacunes.

Presque tous les élèves ont noté que l'école a dépassé leurs attentes, ce qui indique la bonne direction de l'organisation scolaire. Ainsi, des dispositions générales devraient être maintenues lors de l'organisation de la prochaine école, en tenant compte et, si possible, en éliminant les lacunes constatées par les élèves et les enseignants, en modifiant éventuellement la liste des cours ou le temps de leur enseignement.

Auteurs: l'équipe du laboratoire d'algorithmes de robots mobiles de JetBrains Research

PS Notre blog d'entreprise a un nouveau nom. Désormais, il sera dédié aux projets pédagogiques de JetBrains.

Source: https://habr.com/ru/post/fr467425/


All Articles