Présentation
Le véhicule sans pilote StarLine basé sur la plateforme
Lexus RX 450h est un projet de recherche lancé en 2018. Le projet est ouvert aux professionnels ambitieux de la
communauté Open Source . Nous proposons à chacun de participer au processus de développement au niveau du code, de tester ses algorithmes sur une vraie voiture équipée d'un matériel coûteux. Pour contrôler la voiture, il a été décidé d'utiliser Apollo, un framework ouvert. Pour qu'Apollo fonctionne, nous devions connecter un ensemble de modules. Ces modules aident le programme à recevoir des informations sur la voiture et à la contrôler selon les algorithmes spécifiés.
Ces modules comprennent:- module de positionnement d'une voiture dans l'espace à l'aide de coordonnées GPS;
- module de direction, d'accélération et de freinage d'une voiture;
- module de l'état des systèmes automobiles: vitesse, accélération, position du volant, enfoncement des pédales, etc.;
- module pour obtenir des informations sur l'environnement de la voiture. Les capteurs à ultrasons, les caméras, les radars et les lidars peuvent gérer cela.
Tout d'abord, notre équipe a été confrontée à la tâche d'apprendre à contrôler le volant, l'accélération et le freinage de la voiture. Et recevez également des informations sur l'état des systèmes automobiles. Pour cela, beaucoup de travail a été fait pour étudier le bus Lexus CAN.
Partie théorique
Qu'est-ce qu'un bus CAN?
Dans les voitures modernes, les systèmes électroniques ont pris le contrôle de tous les systèmes (Fig. 1.). Les composants électroniques sont des ordinateurs spécialisés, dont chacun a toutes les interfaces nécessaires pour l'intégration avec une voiture. À l'aide d'interfaces de communication numériques, les unités sont mises en réseau pour échanger des informations entre elles. Les interfaces numériques les plus courantes dans les voitures sont CAN, LIN, FLEXRay. Parmi ceux-ci, le CAN est le plus largement utilisé.
Le bus CAN (Controller Area Network) est le réseau standard de l'industrie. En 1986, cette norme a été développée par Bosch. Et la première voiture avec un bus CAN était la Mercedes-Benz W140, sortie en 1991. La norme a été développée pour permettre aux appareils de communiquer entre eux sans hôte. Les informations sont échangées à l'aide de messages spéciaux, qui se composent de champs d'identification, de la longueur du message et de données. Chaque bloc a son propre ensemble d'ID. Dans ce cas, un message avec un ID inférieur est prioritaire sur le bus. Le champ de données peut contenir des informations, par exemple, sur l'état des systèmes et des capteurs, des commandes pour contrôler les mécanismes, etc.
Fig. 1. Bus CAN véhicule.Au niveau physique, le bus est une paire torsadée de conducteurs en cuivre. Le signal est transmis différentiellement, ce qui permet d'obtenir une immunité au bruit élevée.
Fig. 2. Représentation physique du signal sur le bus CANVia le bus CAN, vous pouvez recevoir des informations sur l'état des différents capteurs et systèmes du véhicule. Également via CAN, vous pouvez contrôler les composants de la voiture. Ce sont ces opportunités que nous utilisons pour notre projet.
Nous avons choisi Lexus RX parce que nous savions que nous pouvions gérer tous les nœuds nécessaires via CAN. Depuis la chose la plus difficile lors de la recherche d'une voiture est des protocoles fermés. Par conséquent, l'une des raisons du choix de ce modèle de voiture particulier était la présence d'une description de la partie du protocole de bus CAN dans le projet open source Openpilot.
Conduire correctement une voiture signifie comprendre le fonctionnement des pièces mécaniques des systèmes d'une voiture. Nous devions avoir une bonne compréhension de la façon de travailler avec un amplificateur de puissance électrique ou de contrôler la décélération d'une voiture. En effet, par exemple, lorsque les roues tournent, elles créent une résistance à la direction, ce qui introduit des restrictions sur la direction lors des virages. Certains systèmes ne peuvent pas être utilisés sans entrer dans la voiture dans des modes de fonctionnement spéciaux. Nous avons dû étudier ces détails et d'autres dans le processus.
Direction assistée électrique
La direction assistée électrique EPS (direction assistée électrique) est un système conçu pour réduire la force de direction lors des virages (Fig. 3). Le préfixe "electro" parle du type de système - électrique. La direction du volant avec ce système devient confortable, le conducteur tourne le volant dans la bonne direction et le moteur électrique aide à le tourner à l'angle souhaité.
Un amplificateur de puissance électrique est installé sur l'arbre de direction d'une voiture, dont les parties sont reliées entre elles par un arbre de torsion. Un capteur de couple (capteur de couple) est monté sur l'arbre de torsion. Lorsque le volant tourne, l'arbre de torsion se tord, ce qui est enregistré par le capteur de couple. Les données reçues du capteur de couple, des capteurs de vitesse et des révolutions du vilebrequin sont transmises à l'unité de commande électronique de l'ECU. Et l'ECU, à son tour, calcule déjà la force de compensation nécessaire et donne une commande au moteur électrique de l'amplificateur.
Fig. 3. Schéma de principe du système de direction assistée électriqueVidéo: Le système LKA pilote une voiture à l'aide du système EPS.Pédale d'accélérateur électronique
L'accélérateur est un mécanisme permettant de régler la quantité de mélange de carburant qui tombera dans le moteur. Plus il y a de mélange, plus la voiture va vite.
La pédale de gaz électronique est un système qui implique le fonctionnement de plusieurs composants électroniques. Le signal concernant la position de la pédale, lorsqu'elle est enfoncée, entre dans l'unité de commande du moteur ECM (Engine Control Module). L'ECM, sur la base de ce signal, calcule la quantité de carburant requise qui doit être fournie au moteur. Selon la quantité de carburant nécessaire, l'ECM ajuste l'angle d'ouverture de l'accélérateur.
Fig. 4. Le système électronique de pédale d'accélérateur.Vidéo: la pédale d'accélérateur électronique est utilisée pour actionner le régulateur de vitesse.Systèmes électroniques d'aide à la conduite
Nous avons acheté une voiture qui est équipée d'une variété d'unités numériques et de systèmes d'aide à la conduite (ADAS). Dans notre projet, nous utilisons LKA, ACC et PCS.
LKA (Lane Keep Assist) est un système de rétention de bande composé d'une caméra frontale et d'une unité informatique. LKA garde la voiture dans la voie lorsque le conducteur, par exemple, est distrait. Les algorithmes de l'unité de calcul reçoivent des données de la caméra et en fonction de ceux-ci prennent une décision sur l'état de la voiture sur la route. Le système est capable de comprendre que la voiture se déplace de manière incontrôlable vers la voie de droite ou de gauche. Dans de tels cas, un bip retentit pour attirer l'attention du conducteur. Lors du franchissement de la voie, le système lui-même ajustera l'angle de rotation des roues afin que la voiture reste dans la voie. Le système ne doit intervenir que s'il se rend compte que la manœuvre entre les voies n'a pas été provoquée par le conducteur.
ACC (Adaptive Cruise Control) - un système de régulateur de vitesse adaptatif qui vous permet de régler la vitesse souhaitée. La voiture elle-même accélère et ralentit pour maintenir la vitesse souhaitée, tandis que le conducteur peut retirer son pied des pédales d'accélérateur et de frein. Ce mode est pratique à utiliser lors de la conduite sur autoroutes et autoroutes. Le régulateur de vitesse adaptatif est capable de voir les obstacles devant la voiture et de ralentir pour éviter les collisions avec eux. Si un autre véhicule à une vitesse inférieure roule en avant, l'ACC ralentira et suivra. Lorsqu'un objet statique est détecté, l'ACC ralentit jusqu'à ce qu'il s'arrête. Pour détecter des objets devant la voiture, un tel système utilise un radar avec une gamme de longueurs d'onde millimétriques. En règle générale, ces radars fonctionnent à une fréquence de 24 à 72 GHz et sont capables de voir en toute confiance des objets à une distance de 300 mètres. Le radar est généralement installé derrière le badge avant sur la calandre.
PCS (Pre-Collision System) - système anti-collision. Le système est conçu pour éviter une collision avec une voiture qui se déplace devant. Lorsqu'une collision est inévitable, le système minimise les dommages par collision. Il utilise également un radar pour estimer la distance à l'objet et une caméra frontale pour sa reconnaissance. Le front PCS prédit la probabilité d'une collision en fonction de la vitesse du véhicule, de la distance à l'objet et de sa vitesse. En règle générale, un système comporte deux étapes de fonctionnement. La première étape - le système sonne et affiche sur le tableau de bord informe le conducteur du danger. Deuxième étape - le freinage d'urgence est activé à l'aide du système ABS et les prétendeurs de ceinture de sécurité sont activés.
Partie pratique
Volant
La première chose que notre équipe voulait faire était d'apprendre à piloter. Le volant d'une voiture peut être contrôlé par deux systèmes: l'assistant de stationnement IPAS (Intelligent Park Assist) et le LKA.
IPAS vous permet de régler l'angle de braquage en degrés directement. Notre voiture ne disposant pas de ce système, il est impossible de contrôler et de maîtriser la direction de cette manière.
Par conséquent, nous avons étudié les circuits électriques de la voiture et réalisé quels bus CAN pourraient être utiles. Nous avons connecté un analyseur de bus CAN. Le journal contient un fichier d'enregistrements de messages dans le bus dans un ordre chronologique. Notre tâche consistait à trouver des équipes de direction assistée EPS (direction assistée électrique). Nous avons pris le journal du volant d'un côté à l'autre, dans le journal, nous avons pu trouver les lectures de l'angle de rotation et de la vitesse de rotation du volant. Voici un exemple de modification des données dans le bus CAN. Les données qui nous intéressent sont mises en évidence avec un marqueur.
Direction à 360 degrés vers la gauche
Tournez le volant de 270 degrés vers la droiteDans l'étape suivante, nous avons examiné le système de rétention des voies. Pour ce faire, nous sommes allés dans une rue calme et avons enregistré les journaux d'échange entre l'unité de maintien de voie et le DSU (Driving Support ECU). À l'aide de l'analyseur de bus CAN, nous avons pu calculer les messages du système LKA. La figure 6 montre la commande de contrôle EPS.
Fig. 5. Commande de direction à l'aide du système LKALe LKA commande le volant en réglant la valeur de couple sur l'arbre (STEER_TORQUE_CMD) du volant. La commande est acceptée par le module EPS. Chaque message contient une valeur de compteur (COUNTER) dans l'en-tête, qui est incrémentée à chaque envoi. Le champ LKA_STATE contient des informations d'état LKA. Pour capturer le contrôle, vous devez définir le bit STEER_REQUEST.
Les messages qui sont responsables du fonctionnement des systèmes automobiles importants sont protégés par une somme de contrôle (CHECKSUM) pour minimiser les risques de fausses alarmes. La voiture ignorera une telle commande si le message contient une somme de contrôle ou une valeur de compteur incorrecte. Il s'agit d'une protection conçue par le fabricant contre les interférences de systèmes tiers et les interférences dans la ligne de communication.
Le graphique (Fig. 6.) montre le diagramme de fonctionnement du LKA. Capteur de couple - valeur du capteur de couple sur l'arbre de torsion. Torque Cmd est une équipe de LKA pour la direction. La photo montre comment la LKA est dirigée pour maintenir la voiture dans la voie. Lors du passage par zéro, le sens de rotation du volant change. C'est-à-dire un signal négatif indique un virage à droite, une valeur positive à gauche. Le maintien de la commande à zéro indique un manque de contrôle de la LKA. Avec l'intervention du conducteur, le système cesse d'émettre le contrôle. LKA détecte l'intervention du conducteur avec un deuxième capteur de couple sur l'arbre côté volant.
Fig. 6. Calendrier du système LKANous avons dû vérifier le travail de l'équipe de pilotage. À l'aide du module StarLine Sigma 10, nous avons préparé le micrologiciel pour les tests de contrôle. StarLine Sigma 10 devrait émettre des commandes au volant pour tourner le volant à gauche ou à droite. A cette époque, nous n'avions pas d'interface graphique pour contrôler le module, nous avons donc dû utiliser les moyens standards de la voiture. Nous avons trouvé l'état de la position du levier du régulateur de vitesse dans le bus CAN et programmé le module de telle sorte que la position supérieure du levier a conduit le volant à tourner à droite, la position inférieure à tourner à gauche (Fig.7).
Fig. 7. Les premières tentatives de pilotageLa vidéo montre que le contrôle est effectué en courtes sections. Cela se produit pour plusieurs raisons.
La première raison est le manque de rétroaction. Si l'écart entre le signal de couple Cmd et le capteur de couple dépasse une certaine valeur Δ, le système cesse automatiquement d'accepter les commandes (Fig. 8). Nous réglons l'algorithme pour ajuster la commande de sortie (couple CMD) en fonction de la valeur du couple sur l'arbre (capteur de couple).
Fig. 8. Un écart de signal entraîne une erreur systèmeLa restriction suivante est liée au système de sécurité intégré à EPS. Le système EPS ne permet pas aux équipes LKA de se diriger sur une large gamme. Ce qui est assez logique, car lors de la conduite sur route, les manœuvres brusques ne sont pas sûres. Ainsi, lorsque la valeur seuil du couple sur l'arbre est dépassée, le système LKA génère une erreur et s'éteint (Fig.9).
Fig. 9. Dépassement de la valeur seuil de la commande de couple sur l'arbreQue le système LKA soit activé ou non, des messages avec des commandes sont constamment présents sur le bus. Nous demandons au module EPS de tourner les roues avec une force spécifique à gauche ou à droite. Pendant ce temps, LKA interrompt nos packages avec des messages "vides". Après notre équipe avec la valeur du moment, la norme vient avec zéro (Fig.10).
Fig. 10. Les messages réguliers sont livrés avec des valeurs de moment nul et interrompent notre contrôleEnsuite, en utilisant le module StarLine Sigma 10, nous avons pu filtrer tout le trafic provenant de LKA et bloquer les messages avec l'ID 2E4 lorsque nous en avions besoin. Cela a résolu le problème et nous avons réussi à obtenir une commande de direction fluide (Fig. 11).
Fig. 11. Réglage en douceur du volant sans erreursGestion du gaz
Le système ACC Adaptive Cruise Control contrôle le logiciel d'accélération et de freinage via le bus CAN. L'unité de commande du moteur ECU reçoit les commandes DSU, si vous devez accélérer, elle active la pédale de gaz électronique. Le freinage régénératif est utilisé pour freiner la voiture. Dans ce cas, une commande est utilisée pour le freinage et l'accélération, seules les valeurs diffèrent.
La commande de commande d'accélération ou de décélération est illustrée à la figure 12. Elle se compose de la valeur d'accélération ACCEL_CMD, d'une paire de bits de surdébit et d'une somme de contrôle de somme de contrôle. Pour l'accélération du véhicule, ACCEL_CMD est positif; pour la décélération, négatif. L'accélération est réglée dans la plage de 0 à 3 m / s ^ 2, la décélération est similaire, mais avec un signe moins. Pour envoyer des données au bus, il est nécessaire de recalculer l'accélération ou la décélération souhaitée avec un coefficient de 0,001. Par exemple, pour accélérer 1 m / s ^ 2, ACCEL_CMD = 1000 (0x03E8).
Fig. 12. La commande pour contrôler l'accélération / décélération de la voitureNous avons supprimé les journaux du système ACC standard et analysé les équipes. Comparé à notre description des équipes et commencé les tests.
Fig. 13. Journal d'accélération / décélération du régulateur de vitesse adaptatif ACC (mis en évidence par un marqueur)Ce ne fut pas sans difficultés. Nous avons roulé sur une route très fréquentée pour tester l'équipe d'accélération. Les commandes de contrôle d'accélération ou de décélération du véhicule ne fonctionnent que lorsque le régulateur de vitesse est activé, il ne suffit pas de l'activer avec le bouton. Il est nécessaire de trouver la voiture qui se déplace devant et d'activer le mode suivant.
Fig. 14. L'activation du régulateur de vitesse se produit lorsqu'un autre véhicule se trouve devantEn utilisant le module StarLine Sigma 10, nous envoyons une commande d'accélération et la voiture commence à prendre de la vitesse. À ce stade, nous avons connecté l'interface graphique pour contrôler le module StarLine Sigma 10. Nous contrôlons maintenant le volant, l'accélération et le freinage à l'aide des boutons de l'application.
Les équipes ont travaillé jusqu'à ce qu'elles perdent la voiture devant elles. Le régulateur de vitesse a été désactivé et les commandes d'accélération ont donc cessé de fonctionner.
Nous avons commencé à étudier la possibilité d'utiliser des équipes sans régulateur de vitesse actif. J'ai dû passer beaucoup de temps à analyser les données dans le bus CAN pour comprendre comment créer les conditions de travail des équipes. Nous nous sommes d'abord intéressés au bloc qui bloque l'exécution des commandes ACC pour l'accélération ou la décélération. J'ai dû étudier les identifiants qui proviennent du DSU, du LKA, du radar et de la caméra, en repoussant les fausses données de divers capteurs.
La décision est venue 3 semaines plus tard. À ce moment-là, nous avions une idée de la façon dont les blocs de la voiture interagissaient, avons mené une étude du trafic des messages et identifié des groupes de messages envoyés par chaque bloc. Le calculateur d'assistance à la conduite (DSU) est responsable du régulateur de vitesse adaptatif ACC. Le DSU émet des commandes pour accélérer et ralentir la voiture, et c'est cette unité qui reçoit les données du radar à portée millimétrique. Le radar indique au DSU à quelle distance de la machine l'objet se déplace, à quelle vitesse relative et détermine sa position horizontale (à gauche, à droite ou au centre).
Notre idée était de remplacer les données radar. Nous avons enlevé le journal pour suivre la voiture, nous en avons retiré les données radar au moment de suivre. Maintenant, après avoir allumé le régulateur de vitesse, nous envoyons de fausses données sur la présence d'une voiture devant. Il s'avère que nous trompons notre voiture, en disant qu'une autre voiture devant se déplace à une distance spécifique.
a)

b)
Fig. 15. Activation de la croisière: a) tentative d'activation sans remplacer les données radar; b) activation lors du remplacement des données du radar.Lorsque nous commençons notre accroc, sur le tableau de bord, l'icône de présence du véhicule devant est allumée. Nous pouvons maintenant tester notre gestion. Nous démarrons la commande d'accélération et la voiture commence à accélérer rapidement.
Comme nous l'avons déjà appris, la commande d'accélération et de décélération en est une. Par conséquent, ils ont immédiatement vérifié la décélération. Nous sommes allés à grande vitesse avec le régulateur de vitesse actif, avons lancé une commande de freinage et la voiture a immédiatement ralenti.
En conséquence, il s'avère maintenant accélérer et ralentir la voiture exactement comme nous en avions besoin.
Le but est atteint.
Quoi d'autre utilisons-nous
Pour créer un drone, il est nécessaire de contrôler les systèmes auxiliaires: clignotants, feux stop, alarmes, klaxon, etc. Tout cela peut également être contrôlé via le bus CAN.Matériel et logiciel
Pour travailler avec la voiture aujourd'hui, nous utilisons un ensemble de divers équipements:- L'analyseur de bus Marathon vous permet de connecter et de lire les données de deux bus simultanément. Le site du fabricant de l'analyseur propose un logiciel gratuit d'analyse des journaux. Mais nous utilisons des logiciels écrits dans notre entreprise pour un usage interne.
- StarLine 10 . CAN LIN . C, . CAN-. , ID .
- Toyota/Lexus. : , -, , .
Aujourd'hui, un travail actif est en cours pour développer un véhicule sans pilote, dans un avenir proche, la mise en œuvre du freinage d'urgence avant les obstacles, leur détour et la restructuration de l'itinéraire de la voiture en fonction de la circulation et des instructions du conducteur.Le véhicule sans pilote StarLine est une plate-forme ouverte pour combiner les meilleurs esprits de l'ingénierie de la Russie et du monde dans le but de créer des technologies de conduite sans pilote avancées qui rendront notre avenir sûr et confortable.Projet Gitlab