Robotique · Systèmes embarqués · HarmonyOS
AstraPlusCar
Une voiture intelligente reliant capteurs, logiciel embarqué et interface mobile. L’appareil collecte les données de la caméra et du lidar, puis pilote le châssis via un ESP32 ; une application HarmonyOS affiche l’image et envoie les commandes sur le réseau local.
Le projet en bref
AstraPlusCar est un système de véhicule piloté depuis un téléphone HarmonyOS. Le côté embarqué fonctionne sur un kit de développement Ascend auquel sont reliés une caméra et un lidar, et commande un châssis à roues Mecanum via un ESP32 ; le téléphone fournit l’aperçu vidéo, l’état du lidar et les commandes de conduite. Construit sur l’exemple E2E officiel de Huawei, le projet y apporte deux ajouts : le remplacement de la caméra par une caméra 3D à lumière structurée, et la mise au point d’un client de commande sur téléphone.
- Répartition en trois niveauxLe téléphone assure l’interface et la commande, l’équipement Ascend la perception et les décisions, l’ESP32 l’exécution bas niveau.
- Trois modes autonomesAssistance par panneaux, suivi de voie et poursuite de cible, chacun reposant sur un modèle et une politique différents.
- Comportement sûrArrêt au relâchement et chien de garde sur la liaison ; le véhicule ne poursuit pas sa dernière action après une coupure.
À propos de ce projet
Ce qu’il traite
Le projet porte sur la contrôlabilité lorsque téléphone, équipement Ascend et châssis coopèrent, et réalise deux modifications d’ingénierie sur l’exemple officiel : la connexion d’une caméra 3D à lumière structurée et la mise au point d’un client de commande sur téléphone.
Comment le système coopère
Le téléphone envoie une intention de conduite de haut niveau. L’équipement la reçoit, la combine avec l’état de la caméra, du lidar et du châssis, puis transmet l’action résultante à l’ESP32. Les données des capteurs circulent en sens inverse, ce qui maintient l’image et le relevé lidar à jour.
Ce qu’il utilise
Le côté embarqué est en Python sur un kit de développement Ascend, avec une inférence sur modèles hors ligne Ascend. Le côté téléphone est une application HarmonyOS écrite en ArkTS. Le châssis est un ESP32. Les deux communiquent en HTTP local et par liaison série.
État actuel
Le client téléphone a été installé sur un appareil réel et testé face au véhicule sur le même réseau : aperçu vidéo, lidar à trois directions, captures d’écran et galerie privée sont confirmés, tout comme la consultation d’état, les commandes de direction, le renouvellement et l’arrêt automatique en cas de coupure. Le comportement en conduite réelle reste à observer sur site.
Présentation
Le projet comprend deux dépôts indépendants. La partie embarquée fonctionne sur Orange Pi AI Pro / Ascend et gère les capteurs, la voiture et l’API HTTP. L’application de conduite est écrite en ArkTS. Le code embarqué antérieur comprend aussi des expérimentations de suivi de voie et de suivi d’objets.
Appareil et châssis
L’appareil gère caméra, lidar et commandes. Il transmet les actions de haut niveau par liaison série à l’ESP32, qui pilote moteurs, servos et autres composants.
Contrôle mobile
L’application HarmonyOS propose l’aperçu caméra, l’état du lidar, les commandes de direction, le réglage de vitesse, l’arrêt et la capture de photos.
Trois modes autonomes
L’équipement embarque trois modes de comportement, commutables par commande externe ; un mode manuel permet également la commande directe.
Assistance par panneaux
Charge un modèle YOLOv5 hors ligne pour reconnaître les panneaux de virage à gauche, à droite et de demi-tour, et déclenche la rotation correspondante sur place selon le centre de détection et des seuils de surface.
Suivi de voie
Un réseau de régression produit une valeur de braquage par image, convertie par paliers en marche avant, virage à gauche ou à droite pour suivre le marquage de voie.
Poursuite de cible
La vitesse est ajustée selon la taille du cadre cible, le braquage suit l’écart de la cible par rapport au centre de l’image, et le véhicule s’arrête une fois une distance seuil atteinte.
Mode manuel
Commande au clavier : avant, arrière, gauche, droite, rotation sur place et déplacement latéral, avec réglage de vitesse, arrêt et capture d’image à tout moment.
Chaîne de commande
Le téléphone et la voiture partagent un réseau WLAN. Le téléphone envoie les commandes ; l’appareil les confirme et les exécute avant de piloter l’ESP32 par liaison série. Caméra et lidar renvoient leurs données à l’interface.
Application HarmonyOS
→API HTTP locale
→Appareil Ascend
→Série · ESP32 · Châssis
Le projet embarqué
Le côté embarqué s’appuie sur l’exemple E2E officiel de Huawei, dont une copie non modifiée est conservée pour comparaison.
Version d’origine et version modifiée
Le projet d’origine est identique octet pour octet à l’exemple officiel. La version modifiée ajoute une caméra 3D à lumière structurée et porte la capture de 1280×720 à 1920×1080 ; la modification ne touche que sept fichiers, le reste demeurant inchangé.
Inférence embarquée
La reconnaissance s’exécute sur la carte avec des modèles Ascend hors ligne, couvrant la détection de panneaux, la régression de suivi de voie et la poursuite de cible, prétraitement et post-traitement inclus.
Lidar et cartographie
Comprend un projet d’essai RPLIDAR sous ROS2, utilisé pour collecter des nuages de points et valider la chaîne de cartographie.
Outils associés
Fournit le code d’entraînement et d’export du modèle de suivi de voie, un outil d’annotation automatique des marquages, ainsi qu’un firmware de véhicule ESP32 distinct avec son tutoriel en chinois.
Le client de commande sur téléphone
L’application HarmonyOS propose deux dispositions : en portrait, l’état de connexion, la vidéo, la barre lidar puis le pavé de commande se succèdent ; en paysage, la vidéo occupe l’écran et les joysticks comme les bandes lidar se superposent.
Vidéo et lidar
La vidéo arrive en un flux continu unique, sous lequel une barre lidar distincte affiche les distances gauche, avant et droite graduées par niveau d’alerte. En l’absence d’écho, l’application affiche « non mesuré » plutôt que de l’interpréter comme une distance sûre.
Commandes de conduite
Les quatre directions principales sont avant, virage à gauche, arrière et virage à droite ; les coins gèrent la rotation et le déplacement latéral. Une seule action est active à la fois, et glisser vers une nouvelle direction provoque d’abord l’arrêt. Le curseur de vitesse reste utilisable en mouvement.
Comportement sûr
Si la réception ou le décodage vidéo expire, le client abandonne la commande et arrête le véhicule, puis se reconnecte avec temporisation. Mouvement et réglage de vitesse sont bloqués jusqu’à l’arrivée d’une image live, et une ancienne session ne peut pas restaurer les touches ni les actions précédentes.
Captures et galerie
Les captures sont d’abord stockées sur le véhicule, puis téléchargées dans la galerie privée de l’application où elles subsistent après redémarrage. Les images ne rejoignent l’album système qu’après un téléchargement explicite et l’autorisation correspondante.
État du projet
Les deux parties disposent de code et de documentation. La compilation de l’application et les vérifications hors ligne ne prouvent pas le comportement réel. Le sens des roues, l’intégration caméra/lidar, le WLAN et l’arrêt lors d’une perte de contrôle restent à tester sur la voiture.
Technologies : Python · ArkTS · HarmonyOS · Orange Pi AI Pro / Ascend · ESP32 · API HTTP · Liaison série · Caméra · Lidar