Nous utilisons des cookies pour vous garantir une expérience optimale. Si vous acceptez, vous êtes en accord avec cette utilisation. Pour plus d'informations, veuillez consulter notre politique de confidentialité.
/

Innovation

Spot en démonstration à l’usine intelligente par Deloitte @ Montréal

Robin Kurtz
Robin Kurtz
5
min read

Ce début d’année a marqué le commencement d’un partenariat prometteur avec Deloitte pour mettre en valeur les capacités du robot Spot de Boston Dynamics ainsi que l’expertise de notre agence en matière d’intelligence artificielle (IA). Grâce à l’hospitalité de l’usine intelligente par Deloitte @ Montréal, notre robot à quatre pattes peut maintenant réaliser des missions autonomes dans un environnement d’usine simulée pour démontrer aux partenaires potentiels les avantages d’utiliser Spot dans leurs installations.

Le concept initial était simple : programmer une mission autonome et laisser Spot faire son travail. À la base, ce n’est pas un problème pour l’impressionnante plateforme de Boston Dynamics. Néanmoins, nous voulions mettre en valeur la collecte de données instantanée pour notre public : nous avons donc décidé de créer un tableau de bord pour afficher les données en temps réel.

Le tableau de bord

Deloitte nous a offert un espace de choix, y compris un affichage à quatre écrans pour afficher en direct les données recueillies par Spot. Nous nous sommes tout de suite penchés sur la conception d’une interface utilisateur cohérente et informative qui montrerait la progression de Spot pendant sa mission autonome. Nous souhaitions afficher les dernières images captées par Spot, les données en direct des capteurs et, cerise sur le gâteau, présenter la détection de base des objets à partir des caméras fixées sur le corps du robot.

J’avais la responsabilité de concevoir la fonctionnalité et d’intégrer les données recueillies par Spot dans une interface utilisateur. Pour ce faire, j’ai divisé le projet en quatre sections : la récupération des données, le prétraitement et le stockage des données, le back-end et le front-end. Pendant que je travaillais sur le pipeline de données et les éléments du back-end de notre tableau de bord, notre talentueuse équipe de conception UI/UX travaillait sur une interface pour rehausser l’expérience du public.

Récupération des données

Spot utilise un service d’acquisition des données pour stocker les données qu’il recueille, ce qui offre plusieurs méthodes pour les récupérer. En résumé, à chacun des principaux points d’intérêt dans notre mission autonome Autowalk, nous réalisons une action pour recueillir des données de toutes sortes (comme des images en couleur ou thermiques). Puisqu’il s’agit d’un système fermé, nous n’avons aucune façon d’informer un autre service ou d’envoyer les données en temps réel à un service externe à Spot. Pour remédier à ce défi, nous devons nous en tenir à sonder périodiquement Spot pour en extraire les données.

Illustrons ce concept par un exemple de code :

def job():
	query_params = make_time_query_params(start_time_secs, end_time_secs, robot)

  success = download_data_REST(
    query_params,
    ROBOT_IP,
    robot.user_token,
    destination_folder=DESTINATION_PATH,
  )

	schedule.every(1).seconds.do(job)
Le robot agile Spot en démonstration à l'usine intelligente par Deloitte @ Montréal

Excellent! Le code ci-dessus sert à demander les données à Spot et à les enregistrer sur un répertoire local. Ensuite, nous réalisons le prétraitement des données.

Prétraitement et stockage des données

Par défaut, lorsque nous demandons à Spot de nous fournir des données, celui-ci nous renvoie un répertoire comprenant du contenu standard, comme un fichier metadata.json et toutes les images recueillies lors de la mission autonome. Le fichier metadata.json fournit une représentation des données recueillies, que nous pouvons prétraiter et enregistrer dans une base de données. Pour ce projet, nous avons choisi MongoDB, une base de données NoSQL, car nos divers types d’actions présentaient des structures de données différentes.

Nous avons créé une catégorie DAQParser qui importe un répertoire de données et renvoie une instance MissionData, qui fournit des données dans une structure acceptable que nous pouvons enregistrer dans notre base de données.

Le DAQParser offre un bon endroit pour transformer les données au besoin, par exemple pour convertir les données thermiques brutes captées par la caméra SpotCAM+IR Payload en une carte colorée décodable. Bien que les données brutes contiennent suffisamment d’information pour signaler les températures dépassant les seuils prédéfinis, une représentation visuelle demeure importante pour les opérateurs à la vision bien humaine.

Voilà à quoi peut ressembler le code :

def get_colormap_image_from_raw_thermal(
    path: str, save_file_path: str = None, cv2_colormap: int = cv2.COLORMAP_INFERNO
):
	"""
	Pull data from ir_raw.raw file
	Save (if save_file_path is provided)
	Return colored image with provided cv2_colormap
	"""
	# Open the raw IR file and read it into a numpy array   
	data = read_thermal_data(path)

	# Pre process data to convert from decikelvin to Celsius
	processed_data = preprocess_data(data)

	# Apply colormap to create a colored image
	colored_image = cv2.applyColorMap(
		cv2.convertScaleAbs(processed_data, alpha=(255.0 / processed_data.max())),
		cv2_colormap,
	)

	if save_file_path:
	    # Save the colored image
	    cv2.imwrite(save_file_path, colored_image)

	return colored_image
Spot le robot agile à l'Usine Intelligente par Deloitte à Montréal

Cette catégorie comprend aussi une logique supplémentaire pour téléverser les fichiers de Spot vers d’autres destinations, comme un compartiment AWS S3, ce qui n’était pas nécessaire pour ce projet. 

Une fois les données prétraitées et enregistrées dans une belle petite entité, nous créons notre document MongoDB que le front-end affichera à l’aide de notre interface API simple.

Le back-end

Après avoir stocké les données dans une base de données (et un système de fichiers local pour les images), nous devions les adapter à notre application front-end. Nous avons donc créé une API REST simple à l’aide de Flask pour lire notre base de données et fournir les données qui nous intéressent.

Comme nous voulions que les données s’affichent immédiatement, nous avons activé la communication WebSocket avec Socket.IO pour avoir un événement fournissant les données les plus récentes (c.-à-d. une représentation d’une action) de Spot.

Le front-end

Le moment est ensuite venu de dépoussiérer mes connaissances de React et de concevoir un tableau de bord convivial pour notre public. Nous avons bien saisi le défi qui se présentait, car le principal intérêt de tous consiste à observer Spot naviguer l’environnement tout en évitant les obstacles (en particulier les obstacles placés intentionnellement sur son chemin). C’est là que le travail de l’équipe de conception UI/UX était essentiel, puisque nous voulions un résultat visuel remarquable qui englobait l’essence de la mission autonome de Spot, plutôt que de simplement afficher les dernières données. Nous avons cherché à créer un tableau de bord capable de maintenir l’intérêt tout au long du parcours de Spot en y ajoutant une couche de complexité.

Puisque nous disposions de quatre écrans dans une configuration 2x2, nous avons divisé le tableau en quatre sections : la chronologie des actions de la mission autonome Autowalk, les images (et les alertes) captées par Spot, un graphique des données des capteurs en direct et la diffusion en direct de l’une des caméras de Spot pour montrer la détection de base des objets.

Au fur et à mesure que le back-end fournit de nouvelles données, les deux écrans du haut s’actualisent pour fournir des renseignements instantanés sur la progression de la mission de Spot. L’écran inférieur gauche affiche les données en direct recueillies par les capteurs Dracel et affichées dans Grafana (un service sur Spot accessible à distance). Enfin, l’écran inférieur droit diffuse en direct les images captées par une caméra de Spot (tirées d’une API simple) et affiche la détection de base des objets au moyen d’un modèle YoloV5 préentraîné à l’aide de PyTorch.

Prochaines étapes

En plus de notre flamboyant tableau de bord, qui montre aux visiteurs de l’usine intelligente par Deloitte @ Montréal comment Spot pourrait être programmé pour leur industrie, nous intégrerons bientôt l’imageur acoustique SV600 de Fluke dans la mission autonome de Spot pour démontrer encore plus de ses capacités. Cette solution automatisée comprend des capteurs acoustiques sophistiqués capables de détecter les fuites d’air, un grave problème écologique et économique pour les industries qui utilisent de l’air comprimé. Cette fonctionnalité peut également s’appliquer aux fuites de gaz et à d’autres problèmes dans les installations.

Ensuite, nous comptons mettre en œuvre diverses solutions d’extraction de données à l’aide de la vision par ordinateur, par exemple la lecture d’un indicateur analogique pour vérifier que les valeurs respectent les seuils définis, la vérification des niveaux des réservoirs ou la détection des équipements de sécurité (restez à l’affût de notre article à venir sur l’amélioration de la perception du robot Spot grâce à la vision par ordinateur, qui comprendra quelques exemples d’utilisation).

En conclusion

Ce projet met en évidence les remarquables capacités du robot Spot de Boston Dynamics en tant que plateforme de détection dynamique, conçue spécialement pour le paysage industriel moderne. Ce quadrupède robotisé représente la fine pointe du génie robotique, en plus d’offrir des avantages concrets immédiats aux entreprises qui cherchent à améliorer leur efficacité opérationnelle et leurs stratégies d’acquisition de données. En intégrant Spot dans leurs flux de travail, les entreprises peuvent profiter de ses capacités de collecte de données en temps réel qui, combinées aux techniques avancées d’apprentissage machine, ouvrent la porte à de nouvelles dimensions de l’informatique décisionnelle, de l’analyse prédictive et des stratégies de maintenance.

Osedea peut utiliser la technologie robotique avancée de Spot afin de créer des solutions personnalisées en fonction de vos besoins d’affaires, que vous commenciez tout juste à explorer le monde de la robotique ou que vous cherchiez à améliorer vos opérations. Notre équipe est prête à vous montrer la valeur de Spot à l’aide de projets de démonstration de faisabilité axés sur vos défis uniques. Vous aimeriez visiter l’usine intelligente par Deloitte @ Montréal pour voir Spot à l’œuvre? Écrivez-nous! Nous serons heureux de discuter d’une éventuelle collaboration.

Did this article start to give you some ideas? We’d love to work with you! Get in touch and let’s discover what we can do together.

Get in touch
Button Arrow