Προσομοιωτής Οχήματος J1939
Προσομοιωτής οχήματος με υποστήριξη J1939 CAN
Επισκόπηση
Ο Προσομοιωτής Οχήματος ( gva-vehicle-sim ) είναι ένα ολοκληρωμένο εργαλείο δοκιμών και ανάπτυξης για την πλατφόρμα GVA (Generic Vehicle Architecture). Παρέχει ρεαλιστική προσομοίωση δυναμικής οχήματος με ενσωματωμένη δημιουργία μηνυμάτων διαύλου CAN J1939 , επιτρέποντας δοκιμές υλικού εν κινήσει χωρίς να απαιτείται φυσικό υλικό οχήματος.
Πλεονεκτήματα της προσομοίωσης J1939 για τη δημιουργία μηνυμάτων
🎯 Πλεονεκτήματα Ανάπτυξης & Δοκιμών
Ανάπτυξη ανεξάρτητη από υλικό
- Ανάπτυξη και δοκιμή εφαρμογών GVA χωρίς φυσικό υλικό CAN
- Δεν χρειάζονται ακριβές μονάδες ECU οχημάτων ή πάγκοι δοκιμών
- Παράλληλη ανάπτυξη σε πολλαπλές ομάδες
Ρεαλιστική Συμπεριφορά Οχήματος
- Δημιουργεί αυθεντικούς αριθμούς ομάδας παραμέτρων J1939 (PGN) και αριθμούς ύποπτων παραμέτρων (SPN)
- Προσομοιώνει ρεαλιστική δυναμική οχήματος (ταχύτητα, στροφές, αλλαγές ταχυτήτων, φρενάρισμα)
- Παρέχει δεδομένα αισθητήρα συγχρονισμένα με το χρόνο
Μείωση Κόστους
- Εξαλείφει την ανάγκη για οχήματα φυσικών δοκιμών σε πρώιμο στάδιο ανάπτυξης
- Η εικονική διεπαφή CAN (
vcan0) επιτρέπει τη δοκιμή σε οποιονδήποτε σταθμό εργασίας Linux - Μειώνει τη φθορά του φυσικού υλικού
Ταχεία Πρωτοτυποποίηση
- Άμεση ανατροφοδότηση για την ανάπτυξη αλγορίθμων
- Εύκολη δημιουργία και επανάληψη σεναρίου
- Ρυθμιζόμενοι ρυθμοί μηνυμάτων και μοτίβα δεδομένων
Δοκιμή ολοκλήρωσης
- Επικύρωση λειτουργικότητας πύλης J1939
- Δοκιμή ροής δεδομένων από θέματα CAN σε θέματα DDS
- Επαλήθευση της απόκρισης του HMI στις παραμέτρους του οχήματος
Αναπαραγώγιμες δοκιμές
- Ντετερμινιστική συμπεριφορά οχήματος
- Επαναλήψιμα σενάρια δοκιμών
- Συνεπής γραμμή βάσης για δοκιμές παλινδρόμησης
📊 Υποστήριξη μηνυμάτων J1939
✅ Πλήρως Υποστηριζόμενα PGN (Εφαρμοσμένα στον Προσομοιωτή Οχήματος)
Ο προσομοιωτής οχήματος παράγει ενεργά τα ακόλουθα μηνύματα J1939 μέσω CAN και τα δημοσιεύει στο DDS μέσω της πύλης:
| PGN | Γοητεύω | Ονομα | Τιμή | SPN | Περιγραφή |
|---|---|---|---|---|---|
| 61443 | 0xF003 | EEC2 - Ηλεκτρονικός Ελεγκτής Κινητήρα 2 | 50ms | 91, 92 | Θέση πεντάλ γκαζιού, ποσοστό φορτίου κινητήρα |
| 61444 | 0xF004 | EEC1 - Ηλεκτρονικός Ελεγκτής Κινητήρα 1 | 100ms | 190, 512, 513 | Στροφές κινητήρα (RPM), ροπή στρέψης που απαιτείται από τον οδηγό, πραγματική ροπή στρέψης κινητήρα |
| 61445 | 0xF005 | ETC2 - Ηλεκτρονικός Ελεγκτής Μετάδοσης Κίνησης 2 | 100ms | 522, 523, 524 | Θέση συμπλέκτη, επιλεγμένη ταχύτητα, τρέχουσα ταχύτητα |
| 61449 | 0xF009 | VDC2 - Δυναμικός Έλεγχος Οχήματος 2 | 100ms | 1807, 1808 | Γωνία τιμονιού, ρυθμός εκτροπής |
| 65253 | 0xFEE5 | ΩΡΕΣ ΛΕΙΤΟΥΡΓΙΑΣ - Ώρες λειτουργίας κινητήρα | 1s | 247 | Συνολικές ώρες λειτουργίας κινητήρα |
| 65256 | 0xFEE8 | VDS - Κατεύθυνση/Ταχύτητα Οχήματος | 250ms | 517, 519, 586 | Ταχύτητα πάνω από το έδαφος, κατεύθυνση πυξίδας, πορεία |
| 65258 | 0xFEEA | ALT - Υψόμετρο | 1s | 580 | Υψόμετρο GPS πάνω από την επιφάνεια της θάλασσας |
| 65262 | 0xFEEE | ET1 - Θερμοκρασία κινητήρα 1 | 1s | 110, 174, 175 | Θερμοκρασία ψυκτικού κινητήρα, θερμοκρασία καυσίμου, θερμοκρασία λαδιού |
| 65263 | 0xFEEF | EFLP - Στάθμη/Πίεση Υγρού Κινητήρα | 500ms | 96, 100, 94 | Στάθμη καυσίμου, πίεση λαδιού, πίεση παροχής καυσίμου |
| 65265 | 0xFEF1 | CCVS - Σύστημα ελέγχου ταχύτητας/ταχύτητα οχήματος | 100ms | 84, 597, 598 | Ταχύτητα οχήματος με βάση τους τροχούς, διακόπτης φρένων, διακόπτης συμπλέκτη |
| 65267 | 0xFEF3 | VP - Θέση οχήματος | 250ms | 584, 585 | GPS γεωγραφικό πλάτος, γεωγραφικό μήκος |
| 65269 | 0xFEF5 | AMB - Συνθήκες Περιβάλλοντος | 1s | 108, 171 | Ατμοσφαιρική πίεση, θερμοκρασία περιβάλλοντος |
| 65271 | 0xFEF7 | VEP1 - Ηλεκτρική Ισχύς Οχήματος 1 | 1s | 167, 168, 158 | Τάση μπαταρίας, τάση εναλλάκτη, τάση συστήματος φόρτισης |
| 65276 | 0xFEFC | DD - Οθόνη Ταμπλό | 1s | 182, 183 | Ρυθμός καυσίμου (L/h), στιγμιαία οικονομία καυσίμου |
| 0xEF00 | 0xEF00 | PROP_A - Ιδιοκτησιακό Α (IONNIC USM) | 250ms | - | Έλεγχος LED για τον πίνακα IONNIC USM ES-Key |
Λεπτομερής λίστα SPN (Όλες οι υποστηριζόμενες παράμετροι)
| Ειδικό Μητρώο Ειδικών Ειδών (SPN) | Όνομα παραμέτρου | PGN | Μονάδα | Ψήφισμα | Οφσετ | Σειρά |
|---|---|---|---|---|---|---|
| 84 | Ταχύτητα οχήματος με βάση τους τροχούς | 65265 | χλμ/ώρα | 1/256 χλμ/ώρα | 0 | 0-250 χλμ/ώρα |
| 91 | Θέση πεντάλ γκαζιού | 61443 | % | 0,4% | 0 | 0-100% |
| 92 | Ποσοστό φορτίου κινητήρα στην τρέχουσα ταχύτητα | 61443/61444 | % | 1% | 0 | 0-100% |
| 94 | Πίεση παροχής καυσίμου | 65263 | kPa | 4 kPa | 0 | 0-1000 kPa |
| 96 | Επίπεδο καυσίμου | 65263 | % | 0,4% | 0 | 0-100% |
| 100 | Πίεση λαδιού κινητήρα | 65263 | kPa | 4 kPa | 0 | 0-1000 kPa |
| 108 | Αερομετρική πίεση | 65269 | kPa | 0,5 kPa | 0 | 0-125 kPa |
| 110 | Θερμοκρασία ψυκτικού κινητήρα | 65262 | °C | 1°C | -40 | -40 έως +210°C |
| 158 | Τάση συστήματος φόρτισης | 65271 | V | 0,05 Β | 0 | 0-3212 V |
| 167 | Τάση εναλλάκτη | 65271 | V | 0,05 Β | 0 | 0-3212 V |
| 168 | Τάση μπαταρίας | 65271 | V | 0,05 V | 0 | 0-3212 V |
| 171 | Θερμοκρασία περιβάλλοντος αέρα | 65269 | °C | 0,03125°C | -273 | -273 έως +1735°C |
| 174 | Θερμοκρασία καυσίμου | 65262 | °C | 1°C | -40 | -40 έως +210°C |
| 175 | Θερμοκρασία λαδιού κινητήρα | 65262 | °C | 0,03125°C | -273 | -273 έως +1735°C |
| 182 | Τιμή καυσίμου | 65276 | Λ/ώρα | 0,05 λίτρα/ώρα | 0 | 0-3212 λίτρα/ώρα |
| 183 | Στιγμιαία οικονομία καυσίμου | 65276 | χλμ/Λ | 1/512 χλμ/λίτρο | 0 | 0-125 χλμ/λίτρο |
| 190 | Ταχύτητα κινητήρα | 61444 | Στροφές/λεπτό | 0,125 σ.α.λ. | 0 | 0-8031 σ.α.λ. |
| 247 | Συνολικές ώρες λειτουργίας κινητήρα | 65253 | ω | 0,05 ώρες | 0 | 0-210,554,060 ώρες |
| 512 | Ροπή κινητήρα κατά απαίτηση του οδηγού | 61444 | % | 1% | -125 | -125% έως +125% |
| 513 | Πραγματική ροπή κινητήρα | 61444 | % | 1% | -125 | -125% έως +125% |
| 517 | Ταχύτητα πάνω από το έδαφος | 65256 | χλμ/ώρα | 1/256 χλμ/ώρα | 0 | 0-250 χλμ/ώρα |
| 519 | Πορεία πάνω από το έδαφος | 65256 | βαθμός | 1/128 μοίρες | 0 | 0-360° |
| 522 | Θέση πεντάλ συμπλέκτη | 61445 | % | 0,4% | 0 | 0-100% |
| 523 | Τρέχουσα ταχύτητα μετάδοσης | 61445 | γρανάζι | 1 | -125 | -125 έως +125 |
| 524 | Επιλεγμένη ταχύτητα κιβωτίου ταχυτήτων | 61445 | γρανάζι | 1 | -125 | -125 έως +125 |
| 580 | Υψόμετρο | 65258 | μ | 0,125 μ. | -2500 | -2500 έως +5531 μ. |
| 584 | Γεωγραφικό πλάτος | 65267 | βαθμός | 10⁻⁷ βαθμοί | -210 | -90° έως +90° |
| 585 | Γεωγραφικό μήκος | 65267 | βαθμός | 10⁻⁷ βαθμοί | -210 | -180° έως +180° |
| 586 | Πυξίδα | 65256 | βαθμός | 1/128 μοίρες | 0 | 0-360° |
| 597 | Διακόπτης φρένων | 65265 | - | 2 μπιτ | - | Απενεργοποίηση/Ενεργοποίηση/Σφάλμα/Μη διαθέσιμο |
| 598 | Διακόπτης συμπλέκτη | 65265 | - | 2 μπιτ | - | Απενεργοποίηση/Ενεργοποίηση/Σφάλμα/Μη διαθέσιμο |
| 899 | Λειτουργία ροπής κινητήρα | 61444 | - | 1 | 0 | 0-15 (απαρίθμηση) |
| 1807 | Γωνία τιμονιού | 61449 | ραδιόφωνο | 1/1024 ακτίνιο | -31.374 | -31,374 έως +31,374 ακτίνια |
| 1808 | Ρυθμός εκτροπής | 61449 | ακτίνιο/δευτερόλεπτο | 1/8192 ακτίνια/δευτερόλεπτο | -3,92 | -3,92 έως +3,92 ακτίνια/δευτερόλεπτο |
Σύνολο: 15 PGN, 33 SPNs προσομοιωμένα ενεργά
🔲 Μη υποστηριζόμενα PGN (Δεν έχουν ακόμη υλοποιηθεί)
Τα ακόλουθα μηνύματα J1939 δεν δημιουργούνται αυτήν τη στιγμή από τον προσομοιωτή οχήματος. Αυτά αντιπροσωπεύουν πιθανές μελλοντικές βελτιώσεις:
| PGN | Γοητεύω | Ονομα | Προτεραιότητα | Περίπτωση χρήσης | Περίπλοκο |
|---|---|---|---|---|---|
| 61440 | 0xF000 | ERC1 - Ηλεκτρονικός Ελεγκτής Επιβράδυνσης 1 | Χαμηλός | Έλεγχος επιβράδυνσης/φρένου κινητήρα | Μέσον |
| 61441 | 0xF001 | EBC1 - Ηλεκτρονικός Ελεγκτής Φρένων 1 | Ψηλά | ABS, κατάσταση συστήματος φρένων | Ψηλά |
| 61442 | 0xF002 | ETC1 - Ηλεκτρονικός Ελεγκτής Μετάδοσης 1 | Μέσον | Λειτουργία μετάδοσης, αλλαγή σε εξέλιξη | Μέσον |
| 64971 | 0xFDCB | VDHR - Απόσταση οχήματος (Υψηλή ανάλυση) | Ψηλά | Οδόμετρο με ανάλυση 5 mm | Χαμηλός |
| 64972 | 0xFDCC | TCO1 - Ταχογράφος | Μέσον | Κάρτα οδηγού, ταχύτητα από τον ταχογράφο | Χαμηλός |
| 65132 | 0xFE6C | TPMS - Παρακολούθηση πίεσης ελαστικών | Μέσον | Πίεση/θερμοκρασία μεμονωμένων ελαστικών | Μέσον |
| 65217 | 0xFEC1 | PTODE - Συμμετοχή στην οδήγηση PTO | Χαμηλός | Κατάσταση λήψης ισχύος | Χαμηλός |
| 65248 | 0xFEE0 | VDIST - Απόσταση οχήματος υψηλής ανάλυσης | Ψηλά | Συνολική απόσταση με ανάλυση 5 μέτρων | Χαμηλός |
| 65251 | 0xFEE3 | ECFG - Διαμόρφωση κινητήρα | Χαμηλός | Μάρκα, μοντέλο, σειριακός αριθμός κινητήρα | Χαμηλός |
| 65252 | 0xFEE4 | SHUTDN - Τερματισμός λειτουργίας | Χαμηλός | Παράκαμψη διακοπής λειτουργίας κινητήρα | Χαμηλός |
| 65260 | 0xFEEC | VI - Αναγνώριση Οχήματος | Μέσον | Πλήρης μετάδοση VIN (μερική ενσωματωμένη) | Χαμηλός |
| 65279 | 0xFEFF | CCVS1 - Σύστημα ελέγχου ταχύτητας/Ταχύτητα οχήματος 1 | Μέσον | Βελτιωμένα δεδομένα cruise control | Χαμηλός |
| 65098 | 0xFE4A | EBC2 - Ηλεκτρονικός Ελεγκτής Φρένων 2 | Ψηλά | Κατάσταση μεμονωμένων φρένων τροχών | Ψηλά |
| 65099 | 0xFE4B | EBC3 - Ηλεκτρονικός Ελεγκτής Φρένων 3 | Μέσον | Φθορά των τακακιών φρένων | Μέσον |
| 65110 | 0xFE56 | IC1 - Συνθήκες Εισόδου/Εξόδου 1 | Χαμηλός | Πίεση/θερμοκρασία πολλαπλής εισαγωγής | Μέσον |
| 65172 | 0xFE84 | RQST - Αίτημα | Χαμηλός | Αίτημα συγκεκριμένου PGN από ECU | Μέσον |
| 65226 | 0xFECA | AT1I - Επεξεργασία 1 Εισαγωγή αερίου | Χαμηλός | Είσοδος φίλτρου σωματιδίων ντίζελ | Χαμηλός |
| 65227 | 0xFECB | AT1O - Επεξεργασία 1 Εξόδου Αερίου | Χαμηλός | Έξοδος DPF, αισθητήρας NOx | Χαμηλός |
| 65247 | 0xFEDF | EFL/P2 - Στάθμη/Πίεση υγρού κινητήρα 2 | Χαμηλός | Πρόσθετες πιέσεις υγρών | Χαμηλός |
| 65266 | 0xFEF2 | LFE - Οικονομία Καυσίμου | Μέσον | Μέση/ταξιδιωτική οικονομία καυσίμου | Χαμηλός |
| 65270 | 0xFEF6 | TD - Υπερσυμπιεστής | Χαμηλός | Πίεση υπερπλήρωσης, ταχύτητα τουρμπίνας | Μέσον |
| 65272 | 0xFEF8 | VEP2 - Ηλεκτρική Ισχύς Οχήματος 2 | Χαμηλός | Επιπλέον ηλεκτρικά λεωφορεία | Χαμηλός |
Γιατί αυτά δεν εφαρμόζονται
| Λόγος | Επηρεαζόμενα PGN | Κόμης |
|---|---|---|
| Δεν αφορά τον βασικό προσομοιωτή οχήματος | ERC1, PTODE, SHUTDN, ECFG, AT1I, AT1O, TD | 7 |
| Απαιτείται μοντέλο φυσικής ελαστικών | Σύστημα TPMS | 1 |
| Απαιτείται μοντέλο με ABS/φρένο | EBC1, EBC2, EBC3 | 3 |
| Απαιτείται προηγμένη μετάδοση | ETC1 | 1 |
| Χαμηλή προτεραιότητα / αισθητικό | VI (VIN), VDHR, VDIST, TCO1, LFE | 5 |
| Απαιτείται μοντέλο καυσαερίων/εκπομπών | IC1, AT1I, AT1O | 3 |
| Επίπεδο πρωτοκόλλου (όχι δεδομένα οχήματος) | RQST | 1 |
| Διπλότυπες/βελτιωμένες εκδόσεις | CCVS1, EFL/P2, VEP2 | 3 |
Σύνολο: 22 μη υποστηριζόμενα PGN
🛠️ Τεχνικά Χαρακτηριστικά
- Υποστήριξη δικτύου οδών OpenDRIVE : Ακολουθήστε ρεαλιστική γεωμετρία δρόμων
- Προσομοίωση Αυτόματου Κιβωτίου Ταχυτήτων : Αλλαγές ταχυτήτων με βάση την ταχύτητα και το γκάζι
- Δυναμική Βασισμένη στη Φυσική : Επιτάχυνση, πέδηση, διεύθυνση με ρεαλιστικούς περιορισμούς
- Ενσωμάτωση DDS : Άμεση δημοσίευση σε θέματα PSM αυτοκινήτων J1939
- Qt6 GUI : Οπτικοποίηση σε πραγματικό χρόνο και χειροκίνητος έλεγχος
Αρχιτεκτονική πύλης J1939 σε DDS
Το ακόλουθο διάγραμμα ακολουθίας απεικονίζει την πλήρη ροή δεδομένων από τα μηνύματα διαύλου CAN J1939 μέσω της πύλης προς τους συνδρομητές DDS:
(speed, RPM, gear) Sim->>CAN: Send PGN 61444
(EEC1: Engine Speed) Sim->>CAN: Send PGN 65265
(CCVS: Vehicle Speed) Sim->>CAN: Send PGN 61445
(ETC2: Transmission) Note over CAN,Decoder: CAN Reception Phase CAN->>Reader: Read CAN frame (29-bit ID) Reader->>Reader: Validate frame Reader->>Decoder: emit canFrameReceived() Note over Decoder,Gateway: J1939 Decode Phase Decoder->>Decoder: Extract PGN from CAN ID
(bits 24-8) Decoder->>Decoder: Extract source address
(bits 7-0) Decoder->>Decoder: Extract priority
(bits 28-26) Decoder->>Decoder: Decode SPNs from payload
(bit position, scale, offset) Decoder->>Gateway: emit j1939MessageDecoded() Note over Gateway,DDS: DDS Publishing Phase Gateway->>Gateway: Create C_Parameter_Group_Definition
(if first time) Gateway->>DDS: Publish PGN definition loop For each SPN in message Gateway->>Gateway: Create C_Parameter message
(sourceID, PGN, SPN, value) Gateway->>Gateway: Set metadata
(timestamp, status) Gateway->>DDS: Publish parameter end Note over DDS,HMI: Consumption Phase DDS->>HMI: onSampleReceived()
(C_Parameter) HMI->>HMI: Update speedometer HMI->>HMI: Update tachometer HMI->>HMI: Update gear indicator Note over Gateway: Status Reporting (1 Hz) Gateway->>Gateway: Update data source status Gateway->>DDS: Publish C_Data_Source
(gateway health)
Επεξήγηση διαγράμματος ακολουθίας
1. Φάση Δημιουργίας Μηνυμάτων
- Ο Προσομοιωτής Οχήματος υπολογίζει ρεαλιστικές παραμέτρους οχήματος με βάση τις εισόδους του οδηγού και τη φυσική
- Κωδικοποιεί παραμέτρους σε πλαίσια J1939 CAN με σωστή δομή PGN/SPN
- Μεταδίδει σε εικονική διεπαφή CAN (vcan0)
2. Φάση Υποδοχής Καπνικής Νοσηλείας
- Το νήμα Qt του SocketCanReader διαβάζει συνεχώς από τη διεπαφή CAN
- Επικυρώνει τη μορφή πλαισίου CAN (29-bit εκτεταμένο αναγνωριστικό)
- Εκπέμπει σήμα Qt με ακατέργαστα δεδομένα πλαισίου
3. Φάση Αποκωδικοποίησης J1939
- Ο αποκωδικοποιητής J1939 εξάγει πληροφορίες πρωτοκόλλου από το CAN ID:
- PGN : Αριθμός ομάδας παραμέτρων (προσδιορίζει τον τύπο μηνύματος)
- Διεύθυνση πηγής : Αναγνωριστικό ECU (0-253)
- Προτεραιότητα : Επείγον μήνυμα (0=υψηλότερη, 7=χαμηλότερη)
- Αποκωδικοποιεί το ωφέλιμο φορτίο δεδομένων σε μεμονωμένα SPN χρησιμοποιώντας τη διαμόρφωση:
- Θέση και μήκος μπιτ
- Συντελεστής κλίμακας και μετατόπιση
- Μονάδες μηχανικής
4. Φάση δημοσίευσης DDS
- Η πύλη δημοσιεύει
C_Parameter_Group_Definition(μεταδεδομένα PGN) κατά την πρώτη εμφάνιση - Για κάθε SPN στο μήνυμα:
- Δημιουργεί μήνυμα
C_Parameterμε τιμή και κατάσταση - Προσθέτει χρονική σήμανση και αναγνώριση πηγής
- Δημοσιεύει σε θέμα DDS
- Δημιουργεί μήνυμα
- Περιοδικές ενημερώσεις κατάστασης (1 Hz) δημοσιεύουν την εύρυθμη λειτουργία της πύλης
5. Φάση Κατανάλωσης
- Εφαρμογές GVA (HMI, LDMX) εγγραφείτε σε θέματα J1939 DDS
- Λήψη ενημερώσεων παραμέτρων μέσω middleware DDS
- Ενημέρωση στοιχείων UI (ταχύμετρο, στροφόμετρο, ένδειξη ταχύτητας)
Λεπτομέρειες πρωτοκόλλου
Δομή CAN ID J1939 (29-bit)
Bits 28-26: Priority (0-7)
Bit 25: Reserved
Bit 24: Data Page (DP)
Bits 23-16: PDU Format (PF)
Bits 15-8: PDU Specific (PS) - group extension or destination
Bits 7-0: Source Address (SA)
PGN = (DP << 16) | (PF << 8) | (PS if PF >= 240 else 0)Παράδειγμα αποκωδικοποίησης πλαισίου CAN
CAN ID: 0x18F00400
Binary: 00011000111100000000010000000000
Priority: 0x6 (bits 28-26) = 6 (normal priority)
Reserved: 0 (bit 25)
DP: 0 (bit 24)
PF: 0xF0 (bits 23-16) = 240 (broadcast)
PS: 0x04 (bits 15-8) = 4 (group extension)
SA: 0x00 (bits 7-0) = 0 (engine controller)
PGN = (0 << 16) | (240 << 8) | 4 = 61444 (EEC1 - Engine Controller 1)Γρήγορη Έναρξη
1. Προσομοιωτής κατασκευής οχήματος
cd build
cmake ..
make gva-vehicle-sim2. Ρύθμιση Εικονικού CAN
sudo scripts/test/j1939/setup-vcan.sh3. Έναρξη προσομοιωτή οχήματος
# GUI mode with OpenDRIVE track
./build/bin/gva-vehicle-sim \
--domain=0 \
--opendrive=data/opendrive/ZalaZONE_full.xodr \
--can-interface=vcan0
# Headless mode with J1939 only
./build/bin/gva-vehicle-sim \
--domain=0 \
--can-interface=vcan0 \
--headless4. Ξεκινήστε την πύλη J1939
./build/bin/gva-j1939-gateway \
--domain=0 \
--interface=vcan0 \
--config=/etc/gva/j1939-config.json5. Παρακολούθηση με LDMX
./build/bin/ldmx
# Navigate to J1939 tab to see live parametersΔιαμόρφωση
Διαμόρφωση προσομοιωτή οχήματος
Δημιουργήστε vehicle-sim-config.json :
{
"j1939": {
"enabled": true,
"sourceAddress": 0,
"gatewayResourceId": 1000,
"updateRateHz": 10
},
"vehicle": {
"maxSpeed": 120.0,
"maxRpm": 6000,
"gearRatios": [3.5, 2.5, 1.8, 1.3, 1.0, 0.8],
"engineIdleRpm": 800
}
}Διαμόρφωση πύλης J1939
Ανατρέξτε στο /etc/gva/j1939-config.json για ορισμούς PGN/SPN και παραμέτρους κλιμάκωσης.
Περιπτώσεις χρήσης
1. Ανάπτυξη HMI
- Ανάπτυξη ταμπλό οχήματος χωρίς φυσικό όχημα
- Δοκιμή απόδοσης και κινούμενων εικόνων του πίνακα οργάνων
- Επικύρωση ορίων προειδοποίησης/συναγερμού
2. Δοκιμή αλγορίθμων
- Δοκιμή αλγορίθμων οικολογικής οδήγησης με προσομοίωση κατανάλωσης καυσίμου
- Επικύρωση λογικής προγνωστικής συντήρησης
- Δοκιμή λήψης αποφάσεων για αυτόνομη οδήγηση
3. Δοκιμές Ενσωμάτωσης
- Επαλήθευση ροής δεδομένων από άκρο σε άκρο: CAN → DDS → Εφαρμογή
- Δοκιμή απόδοσης πύλης υπό φορτίο
- Επικύρωση συγχρονισμού δεδομένων μεταξύ υποσυστημάτων
4. Εκπαίδευση & Επίδειξη
- Ασφαλές περιβάλλον για την εκπαίδευση χειριστών
- Επιδείξεις πελατών χωρίς όχημα
- Εκπαιδευτικό εργαλείο για την αρχιτεκτονική GVA
Χαρακτηριστικά απόδοσης
| Μετρικός | Αξία |
|---|---|
| Ρυθμός δημιουργίας καρέ CAN | Έως 100 Hz ανά PGN |
| Λανθάνουσα κατάσταση δημοσίευσης DDS | < 5 ms (τοπικά) |
| Απόδοση πύλης | > 1000 PGN/δευτ. |
| Χρήση CPU (προσομοιωτής + πύλη) | < 10% (σύστημα 4 πυρήνων) |
| Αποτύπωμα μνήμης | ~50 MB (συνδυασμένο) |
Σύγκριση: Φυσική vs. Προσομοιωμένη
| Αποψη | Φυσικό Όχημα | Προσομοιωτής |
|---|---|---|
| Κόστος Υλικού | 50.000+ δολάρια | 0$ (μόνο λογισμικό) |
| Ώρα εγκατάστασης | Ώρες (καλωδίωση, διαμόρφωση) | Πρακτικά |
| Αναπαραγωγιμότητα | Περιορισμένο (μεταβλητότητα οδηγού) | Τέλεια (ντετερμινιστική) |
| Ασφάλεια | Κίνδυνος ζημιάς/τραυματισμού | Μηδενικός κίνδυνος |
| Έλεγχος Σεναρίου | Δύσκολο (καιρός, κίνηση) | Πλήρης έλεγχος |
| Καταγραφή δεδομένων | Απαιτεί εξοπλισμό | Ενσωματωμένο |
| Παράλληλες δοκιμές | Ένα όχημα κάθε φορά | Πολλαπλές παρουσίες |
Αντιμετώπιση προβλημάτων
Συνήθη προβλήματα
Δεν βρέθηκε η διεπαφή CAN
# Verify vcan0 exists
ip link show vcan0
# Recreate if needed
sudo scripts/test/j1939/setup-vcan.shΔεν υπάρχουν μηνύματα DDS
# Check gateway is running
pgrep -a gva-j1939-gateway
# Verify domain ID matches
./build/bin/gva-j1939-gateway --domain=0
./build/bin/gva-vehicle-sim --domain=0Η πύλη δεν αποκωδικοποιεί μηνύματα
# Check CAN frames are being sent
candump vcan0
# Verify configuration file
cat /etc/gva/j1939-config.jsonΖητήστε μια επίδειξη σήμερα.