CAN fahren

Einführung


Das unbemannte StarLine-Fahrzeug auf Basis der Lexus RX 450h- Plattform ist ein Forschungsprojekt, das 2018 gestartet wurde. Das Projekt steht ambitionierten Fachleuten aus der Open Source Community offen. Wir bieten jedem die Möglichkeit, auf Codeebene am Entwicklungsprozess teilzunehmen und seine Algorithmen an einem echten Auto zu testen, das mit teuren Geräten ausgestattet ist. Um das Auto zu steuern, wurde beschlossen, Apollo, ein offenes Framework, zu verwenden. Damit Apollo funktioniert, mussten wir eine Reihe von Modulen anschließen. Diese Module helfen dem Programm, Informationen über das Auto zu erhalten und es gemäß den angegebenen Algorithmen zu steuern.

Diese Module umfassen:

  • Modul zum Positionieren eines Autos im Weltraum unter Verwendung von GPS-Koordinaten;
  • Modul zum Lenken, Beschleunigen und Bremsen eines Autos;
  • Modul des Zustands von Fahrzeugsystemen: Geschwindigkeit, Beschleunigung, Lenkradposition, Betätigen der Pedale usw.;
  • Modul zum Abrufen von Informationen über die Umgebung des Autos. Ultraschallsensoren, Kameras, Radargeräte und Lidare können damit umgehen.

Zunächst stand unser Team vor der Aufgabe, das Steuern des Lenkrads, das Beschleunigen und Bremsen des Autos zu lernen. Außerdem erhalten Sie Informationen über den Zustand von Fahrzeugsystemen. Dafür wurde viel Arbeit geleistet, um den Lexus CAN-Bus zu studieren.

Theoretischer Teil


Was ist ein CAN-Bus?


In modernen Autos übernahmen elektronische Systeme die Kontrolle über alle Systeme (Abb. 1). Elektronische Komponenten sind spezialisierte Computer, von denen jeder über alle erforderlichen Schnittstellen für die Integration in ein Auto verfügt. Über digitale Kommunikationsschnittstellen werden die Einheiten vernetzt, um Informationen miteinander auszutauschen. Die gebräuchlichsten digitalen Schnittstellen in Autos sind CAN, LIN, FLEXRay. Von diesen ist CAN am weitesten verbreitet.

Der CAN-Bus (Controller Area Network) ist das Industriestandardnetzwerk. 1986 wurde dieser Standard von Bosch entwickelt. Und das erste Auto mit einem CAN-Bus war der 1991 erschienene Mercedes-Benz W140. Der Standard wurde entwickelt, damit Geräte ohne Host miteinander kommunizieren können. Informationen werden über spezielle Nachrichten ausgetauscht, die aus ID-Feldern, Nachrichtenlänge und Daten bestehen. Jeder Block hat seine eigenen IDs. In diesem Fall hat eine Nachricht mit einer niedrigeren ID Priorität auf dem Bus. Das Datenfeld kann beispielsweise Informationen über den Status von Systemen und Sensoren, Befehle zur Steuerung von Mechanismen usw. enthalten.

Bild
Abb. 1. CAN-Bus des Fahrzeugs.

Auf der physikalischen Ebene ist der Bus ein verdrilltes Paar Kupferleiter. Das Signal wird differentiell übertragen, wodurch eine hohe Störfestigkeit erreicht wird.

Bild
Abb. 2. Physikalische Darstellung des Signals auf dem CAN-Bus

Über den CAN-Bus erhalten Sie Informationen zum Status verschiedener Sensoren und Fahrzeugsysteme. Auch über CAN können Sie die Komponenten des Autos steuern. Diese Möglichkeiten nutzen wir für unser Projekt.

Wir haben uns für Lexus RX entschieden, weil wir wussten, dass wir alle erforderlichen Knoten über CAN verwalten können. Da das Schwierigste bei der Erforschung eines Autos geschlossene Protokolle sind. Einer der Gründe für die Wahl dieses speziellen Automodells war daher das Vorhandensein einer Beschreibung des CAN-Bus-Protokollteils im OpenPilot-OpenSource-Projekt.

Um ein Auto richtig zu fahren, muss man verstehen, wie die mechanischen Teile der Systeme eines Autos funktionieren. Wir mussten ein gutes Verständnis dafür haben, wie man mit einem elektrischen Leistungsverstärker arbeitet oder die Verzögerung eines Autos steuert. Wenn zum Beispiel die Räder gedreht werden, erzeugen sie einen Widerstand gegen die Lenkung, was die Lenkung beim Drehen einschränkt. Einige Systeme können nicht verwendet werden, ohne in speziellen Betriebsarten in das Auto einzusteigen. Wir mussten diese und andere Details in diesem Prozess untersuchen.

Elektrische Servolenkung


Elektrische Servolenkung EPS (Electric Power Steering) ist ein System zur Reduzierung der Lenkkraft beim Drehen (Abb. 3). Das Präfix "Elektro" spricht über die Art des Systems - elektrisch. Das Lenken des Lenkrads mit diesem System wird komfortabel, der Fahrer dreht das Lenkrad in die richtige Richtung und der Elektromotor hilft, es in den gewünschten Winkel zu drehen.

Auf der Lenkwelle eines Autos ist ein elektrischer Leistungsverstärker installiert, dessen Teile durch eine Torsionswelle miteinander verbunden sind. Auf der Torsionswelle ist ein Drehmomentsensor (Drehmomentsensor) montiert. Wenn sich das Lenkrad dreht, dreht sich die Torsionswelle, was vom Drehmomentsensor aufgezeichnet wird. Die vom Drehmomentsensor, den Drehzahlsensoren und den Kurbelwellenumdrehungen empfangenen Daten werden dem elektronischen Steuergerät der ECU zugeführt. Und die ECU wiederum berechnet bereits die erforderliche Kompensationskraft und gibt dem Elektromotor des Verstärkers einen Befehl.

Bild
Abb. 3. Schematische Darstellung der elektrischen Servolenkung


Video: Das LKA-System steuert ein Auto mit dem EPS-System.

Elektronisches Gaspedal


Die Drossel ist ein Mechanismus zum Einstellen der Menge an Kraftstoffgemisch, die in den Motor fällt. Je mehr Mischung wird, desto schneller fährt das Auto.
Das elektronische Gaspedal ist ein System, bei dem mehrere elektronische Komponenten betätigt werden. Das Signal über die Position des Pedals tritt beim Drücken in das Motorsteuergerät ECM (Engine Control Module) ein. Das ECM berechnet anhand dieses Signals die erforderliche Kraftstoffmenge, die dem Motor zugeführt werden muss. Abhängig von der benötigten Kraftstoffmenge passt das ECM den Drosselklappenöffnungswinkel an.

Bild
Abb. 4. Das elektronische Gaspedalsystem.


Video: Das elektronische Gaspedal dient zur Bedienung des Tempomats.

Elektronische Fahrerassistenzsysteme


Wir haben ein Auto gekauft, das mit einer Vielzahl von digitalen Einheiten und Fahrerassistenzsystemen (ADAS) ausgestattet ist. In unserem Projekt verwenden wir LKA, ACC und PCS.

LKA (Lane Keep Assist) ist ein Streifenrückhaltesystem, das aus einer Frontkamera und einer Recheneinheit besteht. LKA hält das Auto auf der Fahrspur, wenn beispielsweise der Fahrer abgelenkt ist. Algorithmen in der Recheneinheit empfangen Daten von der Kamera und treffen auf dieser Grundlage eine Entscheidung über den Zustand des Fahrzeugs auf der Straße. Das System kann verstehen, dass sich das Auto unkontrolliert in Richtung der rechten oder linken Spur bewegt. In solchen Fällen ertönt ein Piepton, um die Aufmerksamkeit des Fahrers auf sich zu ziehen. Beim Überqueren der Fahrspur passt das System selbst den Drehwinkel der Räder so an, dass das Fahrzeug auf der Fahrspur bleibt. Das System sollte nur eingreifen, wenn es feststellt, dass das Manöver zwischen den Fahrspuren nicht vom Fahrer verursacht wurde.

ACC (Adaptive Cruise Control) - ein adaptives Tempomatsystem, mit dem Sie die gewünschte Geschwindigkeit einstellen können. Das Auto selbst beschleunigt und verlangsamt sich, um die gewünschte Geschwindigkeit beizubehalten, während der Fahrer seinen Fuß vom Gas- und Bremspedal nehmen kann. Dieser Modus ist praktisch, wenn Sie auf Autobahnen und Autobahnen fahren. Die adaptive Geschwindigkeitsregelung kann Hindernisse vor dem Auto erkennen und verlangsamen, um eine Kollision mit ihnen zu vermeiden. Wenn ein anderes Fahrzeug mit einer niedrigeren Geschwindigkeit vorausfährt, wird ACC langsamer und folgt. Wenn ein statisches Objekt erkannt wird, wird das ACC langsamer, bis es stoppt. Um Objekte vor dem Auto zu erkennen, verwendet ein solches System ein Radar mit einem Wellenlängenbereich von Millimetern. Typischerweise arbeiten solche Radargeräte mit einer Frequenz von 24 bis 72 GHz und können Objekte in einer Entfernung von 300 Metern sicher sehen. Das Radar wird normalerweise hinter dem vorderen Emblem am Kühlergrill installiert.

PCS (Pre-Collision System) - Kollisionsvermeidungssystem. Das System soll eine Kollision mit einem vorausfahrenden Auto verhindern. Wenn eine Kollision unvermeidlich ist, minimiert das System Kollisionsschäden. Es verwendet auch Radar, um die Entfernung zum Objekt zu schätzen, und eine Frontkamera, um es zu erkennen. Die PCS-Front sagt die Wahrscheinlichkeit einer Kollision basierend auf der Fahrzeuggeschwindigkeit, der Entfernung zum Objekt und seiner Geschwindigkeit voraus. Typischerweise hat ein System zwei Betriebsstufen. Die erste Stufe - das System ertönt und wird auf dem Armaturenbrett angezeigt, um den Fahrer über die Gefahr zu informieren. Die zweite Stufe - die Notbremsung wird über das ABS-System aktiviert und die Gurtstraffer werden aktiviert.

Praktischer Teil


Lenkrad


Das erste, was unser Team tun wollte, war zu lernen, wie man lenkt. Das Lenkrad in einem Auto kann von zwei Systemen gesteuert werden: IPAS-Parkassistent (Intelligent Park Assist) und LKA.

Mit IPAS können Sie den Lenkwinkel direkt in Grad einstellen. Da unser Auto dieses System nicht hat, ist es unmöglich, die Lenkung auf diese Weise zu überprüfen und zu beherrschen.

Daher haben wir die Stromkreise des Autos untersucht und festgestellt, welche CAN-Busse nützlich sein könnten. Wir haben einen CAN-Bus-Analysator angeschlossen. Das Protokoll enthält eine Datei mit Nachrichtendatensätzen im Bus in chronologischer Reihenfolge. Unsere Aufgabe war es, EPS-Servolenkungsteams (elektrische Servolenkung) zu finden. Wir nahmen das Lenkradprotokoll von einer Seite zur anderen, im Protokoll konnten wir die Messwerte des Drehwinkels und der Drehzahl des Lenkrads finden. Unten finden Sie ein Beispiel für das Ändern von Daten im CAN-Bus. Die für uns interessanten Daten werden mit einem Marker hervorgehoben.

Bild
360 Grad Lenkung links

Bild
Drehen Sie das Lenkrad um 270 Grad nach rechts

Im nächsten Schritt haben wir das Spurhaltesystem untersucht. Dazu gingen wir in eine ruhige Straße und zeichneten die Austauschprotokolle zwischen der Spurhalteeinheit und der DSU (Driving Support ECU) auf. Mit dem CAN-Bus-Analysator konnten wir Nachrichten vom LKA-System berechnen. Abbildung 6 zeigt den EPS-Steuerbefehl.

Bild
Abb. 5. Lenkbefehl mit dem LKA-System

Der LKA steuert das Lenkrad durch Einstellen des Drehmomentwerts auf der Welle (STEER_TORQUE_CMD) des Lenkrads. Der Befehl wird vom EPS-Modul akzeptiert. Jede Nachricht enthält einen Zählerwert (COUNTER) im Header, der bei jedem Senden erhöht wird. Das Feld LKA_STATE enthält LKA-Statusinformationen. Um die Steuerung zu erfassen, müssen Sie das Bit STEER_REQUEST setzen.

Meldungen, die für den Betrieb wichtiger Autosysteme verantwortlich sind, werden durch eine Prüfsumme (CHECKSUM) geschützt, um das Risiko von Fehlalarmen zu minimieren. Das Auto ignoriert einen solchen Befehl, wenn die Nachricht eine falsche Prüfsumme oder einen falschen Zählerwert enthält. Dies ist ein vom Hersteller entwickelter Schutz gegen Systemstörungen von Drittanbietern und Störungen in der Kommunikationsleitung.

Die Grafik (Abb. 6.) zeigt das LKA-Betriebsdiagramm. Drehmomentsensor - Wert vom Drehmomentsensor auf der Torsionswelle. Torque Cmd ist ein Team von LKA für die Lenkung. Das Bild zeigt, wie der LKA gesteuert wird, um das Auto auf der Fahrspur zu halten. Beim Überqueren von Null ändert sich die Drehrichtung des Lenkrads. Das heißt, Ein negatives Signal zeigt eine Rechtskurve an, ein positiver Wert nach links. Wenn Sie den Befehl auf Null halten, weist dies auf einen Mangel an Kontrolle durch die LKA hin. Mit dem Eingreifen des Fahrers gibt das System keine Kontrolle mehr aus. LKA erkennt den Eingriff des Fahrers mit einem zweiten Drehmomentsensor auf der Welle von der Lenkradseite.

Bild
Abb. 6. Zeitplan des LKA-Systems

Wir mussten die Arbeit des Lenkungsteams überprüfen. Mit dem StarLine Sigma 10-Modul haben wir die Firmware für Kontrolltests vorbereitet. StarLine Sigma 10 sollte Befehle an das Lenkrad senden, um das Lenkrad nach links oder rechts zu drehen. Zu diesem Zeitpunkt hatten wir keine grafische Oberfläche zur Steuerung des Moduls, daher mussten wir die Standardmittel des Autos verwenden. Wir haben den Status der Position des Tempomathebels im CAN-Bus gefunden und das Modul so programmiert, dass die obere Position des Hebels dazu führte, dass sich das Lenkrad nach rechts und die untere Position nach links drehte (Abb. 7).

Bild
Abb. 7. Die ersten Lenkversuche

Das Video zeigt, dass die Steuerung in kurzen Abschnitten durchgeführt wird. Dies tritt aus mehreren Gründen auf.

Der erste Grund ist das fehlende Feedback. Wenn die Diskrepanz zwischen dem Drehmoment-Cmd-Signal und dem Drehmomentsensor einen bestimmten Δ-Wert überschreitet, akzeptiert das System automatisch keine Befehle mehr (Abb. 8). Wir stellen den Algorithmus so ein, dass der Ausgangsbefehl (Torque CMD) abhängig vom Wert des Drehmoments auf der Welle (Torque Sensor) angepasst wird.

Bild
Abb. 8. Signaldiskrepanzen führen zu Systemfehlern

Die folgende Einschränkung bezieht sich auf das in EPS integrierte Sicherheitssystem. Das EPS-System ermöglicht es LKA-Teams nicht, über einen weiten Bereich zu steuern. Welches ist ziemlich logisch, weil Beim Fahren auf der Straße ist ein plötzliches Manövrieren nicht sicher. Wenn also der Schwellenwert des Drehmoments auf der Welle überschritten wird, erzeugt das LKA-System einen Fehler und schaltet sich aus (Abb. 9).

Bild
Abb. 9. Überschreiten des Schwellenwerts der Drehmomentregelung auf der Welle

Unabhängig davon, ob das LKA-System aktiviert ist oder nicht, sind ständig Nachrichten mit Befehlen auf dem Bus vorhanden. Wir weisen das EPS-Modul an, die Räder mit einer bestimmten Kraft nach links oder rechts zu drehen. In der Zwischenzeit unterbricht LKA unsere Pakete mit "leeren" Nachrichten. Nach unserem Team mit dem Wert des Augenblicks kommt der Standard mit Null (Abb. 10).

Bild
Abb. 10. Regelmäßige Nachrichten haben keine Momentwerte und unterbrechen unsere Kontrolle

Mithilfe des StarLine Sigma 10-Moduls konnten wir dann den gesamten Datenverkehr von LKA filtern und Nachrichten mit der ID 2E4 blockieren, wenn wir sie benötigten. Dies löste das Problem und es gelang uns, eine reibungslose Lenksteuerung zu erhalten (Abb. 11).

Bild
Abb. 11. Reibungslose Lenkradeinstellung ohne Fehler

Gasmanagement


Das ACC Adaptive Cruise Control-System steuert die Beschleunigungs- und Bremssoftware über den CAN-Bus. Das Steuergerät des ECU-Motors empfängt DSU-Befehle. Wenn Sie beschleunigen müssen, aktiviert es das elektronische Gaspedal. Regeneratives Bremsen wird verwendet, um das Auto zu bremsen. In diesem Fall wird ein Befehl zum Bremsen und Beschleunigen verwendet, nur die Werte unterscheiden sich.

Der Befehl zur Steuerung der Beschleunigung oder Verzögerung ist in Abbildung 12 dargestellt. Er besteht aus dem Beschleunigungswert ACCEL_CMD, einem Paar Overhead-Bits und einer Prüfsummenprüfsumme. Für die Fahrzeugbeschleunigung ist ACCEL_CMD positiv, für die Verzögerung negativ. Die Beschleunigung wird im Bereich von 0 bis 3 m / s ^ 2 eingestellt, die Verzögerung ist ähnlich, jedoch mit einem Minuszeichen. Um Daten an den Bus zu senden, muss die gewünschte Beschleunigung oder Verzögerung mit einem Koeffizienten von 0,001 neu berechnet werden. Um beispielsweise 1 m / s ^ 2 zu beschleunigen, ist ACCEL_CMD = 1000 (0x03E8).

Bild
Abb. 12. Der Befehl zur Steuerung der Beschleunigung / Verzögerung des Fahrzeugs

Wir haben die Protokolle aus dem Standard-ACC-System entfernt und die Teams analysiert. Verglichen mit unserer Beschreibung der Teams und begann zu testen.

Bild
Abb. 13. Beschleunigungs- / Verzögerungsprotokoll der adaptiven Geschwindigkeitsregelung ACC (mit einer Markierung hervorgehoben)

Es war nicht ohne Schwierigkeiten. Wir fuhren auf einer Straße mit viel Verkehr, um das Beschleunigungsteam zu testen. Die Beschleunigungs- oder Verzögerungssteuerungsbefehle des Fahrzeugs funktionieren nur, wenn die Geschwindigkeitsregelung aktiviert ist. Es reicht nicht aus, sie mit der Taste zu aktivieren. Es ist notwendig, das vorausfahrende Auto zu finden und den folgenden Modus einzuschalten.

Bild
Abb. 14. Die Aktivierung des Tempomats erfolgt, wenn sich ein anderes Fahrzeug vor Ihnen befindet

Mit dem StarLine Sigma 10-Modul senden wir einen Beschleunigungsbefehl, und das Auto nimmt Fahrt auf. Zu diesem Zeitpunkt haben wir die grafische Oberfläche zur Steuerung des StarLine Sigma 10-Moduls angeschlossen. Jetzt steuern wir das Lenkrad, das Beschleunigen und das Bremsen mithilfe der Tasten in der Anwendung.

Die Teams arbeiteten, bis sie das vorausfahrende Auto verloren. Das Tempomatsystem wurde ausgeschaltet und daher funktionierten die Beschleunigungsbefehle nicht mehr.
Wir begannen die Möglichkeit zu untersuchen, Teams ohne aktive Geschwindigkeitsregelung einzusetzen. Ich musste viel Zeit damit verbringen, die Daten im CAN-Bus zu analysieren, um zu verstehen, wie die Bedingungen für die Arbeit der Teams geschaffen werden können. Zunächst waren wir interessiert, welcher Block die Ausführung von ACC-Befehlen zur Beschleunigung oder Verzögerung blockiert. Ich musste untersuchen, welche IDs von DSU, LKA, Radar und Kamera stammen, und die gefälschten Daten verschiedener Sensoren entfernen.

Die Entscheidung kam 3 Wochen später. Zu diesem Zeitpunkt hatten wir eine Vorstellung davon, wie die Blöcke des Autos interagieren, führten eine Untersuchung des Nachrichtenverkehrs durch und identifizierten Gruppen von Nachrichten, die von jedem Block gesendet wurden. Das Driving Support ECU (DSU) ist für die adaptive Geschwindigkeitsregelung ACC verantwortlich. Die DSU gibt Befehle zum Beschleunigen und Abbremsen des Fahrzeugs aus. Dieses Gerät empfängt Daten vom Millimeter-Radar. Das Radar teilt der DSU mit, in welcher Entfernung sich das Objekt von der Maschine bewegt, mit welcher relativen Geschwindigkeit und bestimmt seine horizontale Position (links, rechts oder in der Mitte).

Unsere Idee war es, die Radardaten zu ersetzen. Wir haben das Protokoll für die Verfolgung des Autos entfernt und die Radardaten im Moment der Verfolgung herausgezogen. Jetzt, nachdem wir den Tempomat eingeschaltet haben, senden wir gefälschte Daten über das Vorhandensein eines Autos vor Ihnen. Es stellt sich heraus, dass es unser Auto täuscht und sagt, dass sich ein anderes Auto vor uns in einer bestimmten Entfernung bewegt.

a) Bild b) Bild
Abb. 15. Kreuzfahrtaktivierung: a) Versuch der Aktivierung, ohne Radardaten zu ersetzen; b) Aktivierung beim Ersetzen von Daten vom Radar.

Wenn wir unseren Haken starten, leuchtet auf dem Armaturenbrett das Anwesenheitssymbol des vorausfahrenden Fahrzeugs. Jetzt können wir unser Management testen. Wir starten den Beschleunigungsbefehl und das Auto beginnt schnell zu beschleunigen.

Wie wir bereits erfahren haben, ist der Beschleunigungs- und Verzögerungsbefehl eins. Daher überprüften sie sofort die Verzögerung. Wir fuhren mit aktiver Geschwindigkeitsregelung auf Geschwindigkeit, starteten einen Bremsbefehl und das Auto wurde sofort langsamer.

Infolgedessen beschleunigt und verlangsamt sich das Auto jetzt genau so, wie wir es brauchten.

Das Ziel ist erreicht.

Was verwenden wir sonst noch?


Um eine Drohne zu erstellen, müssen Hilfssysteme gesteuert werden: Blinker, Bremslichter, Alarme, Hupe usw. All dies kann auch über den CAN-Bus gesteuert werden.

Hardware und Software


Um heute mit dem Auto zu arbeiten, verwenden wir verschiedene Geräte:

  • Mit dem Marathon Bus Analyzer können Sie Daten von zwei Bussen gleichzeitig verbinden und lesen. Auf der Website des Analysatorherstellers finden Sie eine kostenlose Software zur Protokollanalyse. Wir verwenden jedoch in unserem Unternehmen geschriebene Software für den internen Gebrauch.
  • StarLine 10 . CAN LIN . C, . CAN-. , ID .
  • Toyota/Lexus. : , -, , .

, , .

StarLine — , .

GitLab

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


All Articles