BISA Mengemudi

Pendahuluan


Kendaraan tak berawak StarLine yang berbasis pada platform Lexus RX 450h adalah proyek penelitian yang diluncurkan pada 2018. Proyek ini terbuka untuk para profesional yang ambisius dari Komunitas Open Source . Kami menawarkan semua orang untuk berpartisipasi dalam proses pengembangan di tingkat kode, untuk menguji algoritme mereka pada mobil nyata yang dilengkapi dengan peralatan mahal. Untuk mengendalikan mobil, diputuskan untuk menggunakan Apollo, sebuah kerangka terbuka. Agar Apollo berfungsi, kami perlu menghubungkan satu set modul. Modul-modul ini membantu program menerima informasi tentang mobil dan mengendalikannya sesuai dengan algoritma yang ditentukan.

Modul-modul ini meliputi:

  • modul untuk memposisikan mobil di ruang angkasa menggunakan koordinat GPS;
  • modul untuk kemudi, akselerasi dan pengereman mobil;
  • modul status sistem mobil: kecepatan, akselerasi, posisi roda kemudi, menekan pedal, dll.
  • modul untuk mendapatkan informasi tentang lingkungan mobil. Sensor ultrasonik, kamera, radar, dan lidar dapat menangani ini.

Pertama-tama, tim kami dihadapkan dengan tugas belajar mengendalikan kemudi, akselerasi dan pengereman mobil. Dan juga menerima informasi tentang keadaan sistem mobil. Untuk ini, banyak pekerjaan yang dilakukan untuk mempelajari bus CAN Lexus.

Bagian teoretis


Apa itu bis CAN?


Pada mobil modern, sistem elektronik mengendalikan semua sistem (Gbr. 1.). Komponen elektronik adalah komputer khusus, yang masing-masing memiliki semua antarmuka yang diperlukan untuk integrasi dengan mobil. Menggunakan antarmuka komunikasi digital, unit-unit jaringan untuk saling bertukar informasi. Antarmuka digital paling umum dalam mobil adalah CAN, LIN, FLEXRay. Dari jumlah tersebut, CAN paling banyak digunakan.

Bus CAN (Controller Area Network) adalah jaringan standar industri. Pada tahun 1986, standar ini dikembangkan oleh Bosch. Dan mobil pertama dengan bus CAN adalah Mercedes-Benz W140, dirilis pada tahun 1991. Standar dikembangkan untuk memungkinkan perangkat berkomunikasi satu sama lain tanpa host. Informasi dipertukarkan menggunakan pesan khusus, yang terdiri dari bidang ID, panjang pesan dan data. Setiap blok memiliki set ID sendiri. Dalam hal ini, pesan dengan ID yang lebih rendah memiliki prioritas di bus. Bidang data dapat membawa informasi, misalnya, tentang status sistem dan sensor, perintah untuk mengendalikan mekanisme, dll.

gambar
Fig. 1. Kendaraan BISA bus.

Pada level fisik, bus adalah sepasang konduktor tembaga yang dipelintir. Sinyal ditransmisikan diferensial, karena imunitas noise tinggi dicapai.

gambar
Fig. 2. Representasi fisik sinyal pada bus CAN

Melalui bus CAN, Anda dapat menerima informasi tentang status berbagai sensor dan sistem kendaraan. Juga melalui CAN, Anda dapat mengontrol komponen mobil. Peluang inilah yang kami gunakan untuk proyek kami.

Kami memilih Lexus RX karena kami tahu bahwa kami dapat mengelola semua node yang diperlukan melalui CAN. Karena hal yang paling sulit ketika meneliti mobil adalah protokol tertutup. Oleh karena itu, salah satu alasan untuk memilih model mobil khusus ini adalah adanya deskripsi dari bagian protokol bus CAN dalam proyek OpenPilot opensource.

Mengemudi mobil dengan benar berarti memahami cara kerja komponen mekanis sistem mobil. Kami perlu memiliki pemahaman yang baik tentang cara bekerja dengan penguat daya listrik atau mengendalikan perlambatan mobil. Memang, misalnya, ketika roda diputar, mereka menciptakan ketahanan terhadap kemudi, yang memperkenalkan pembatasan pada kemudi saat berbelok. Beberapa sistem tidak dapat digunakan tanpa memasuki mobil dalam mode operasi khusus. Kami harus mempelajari ini dan detail lainnya dalam proses.

Kemudi tenaga listrik


Power steering steering EPS (Electric Power Steering) adalah sistem yang dirancang untuk mengurangi kekuatan kemudi saat berputar (Gbr. 3). Awalan "elektro" berbicara tentang jenis sistem - listrik. Kemudi setir dengan sistem ini menjadi nyaman, pengemudi memutar setir ke arah yang benar, dan motor listrik membantu memutarnya ke sudut yang diinginkan.

Penguat daya listrik dipasang pada poros kemudi mobil, bagian-bagian yang saling berhubungan oleh poros puntir. Sensor torsi (Torque Sensor) dipasang pada poros puntir. Ketika roda kemudi berputar, poros puntir berputar, yang direkam oleh sensor torsi. Data yang diterima dari sensor torsi, sensor kecepatan, dan putaran poros engkol dimasukkan ke unit kontrol elektronik ECU. Dan ECU, pada gilirannya, sudah menghitung kekuatan kompensasi yang diperlukan dan memberikan perintah kepada motor listrik dari amplifier.

gambar
Fig. 3. Diagram skematis dari sistem power steering listrik


Video: Sistem LKA mengarahkan mobil menggunakan sistem EPS.

Pedal gas elektronik


Throttle adalah mekanisme untuk menyesuaikan jumlah campuran bahan bakar yang akan jatuh ke mesin. Semakin banyak campuran, semakin cepat mobil berjalan.
Pedal gas elektronik adalah sistem yang melibatkan pengoperasian beberapa komponen elektronik. Sinyal tentang posisi pedal, ketika ditekan, memasuki unit kontrol mesin ECM (Modul Kontrol Engine). ECM, berdasarkan sinyal ini, menghitung jumlah bahan bakar yang diperlukan yang harus dipasok ke mesin. Tergantung pada jumlah bahan bakar yang dibutuhkan, ECM menyesuaikan sudut bukaan throttle.

gambar
Fig. 4. Sistem pedal gas elektronik.


Video: Pedal gas elektronik digunakan untuk mengoperasikan cruise control.

Sistem bantuan pengemudi elektronik


Kami membeli mobil yang dilengkapi dengan berbagai unit digital dan sistem bantuan pengemudi (ADAS). Dalam proyek kami, kami menggunakan LKA, ACC dan PCS.

LKA (Lane Keep Assist) adalah sistem retensi strip yang terdiri dari kamera depan dan unit komputer. LKA menyimpan mobil di jalur ketika pengemudi, misalnya, terganggu. Algoritma dalam unit komputasi menerima data dari kamera dan berdasarkan pada mereka membuat keputusan tentang kondisi mobil di jalan. Sistem ini dapat memahami bahwa mobil bergerak tidak terkendali menuju jalur kanan atau kiri. Dalam kasus seperti itu, bunyi bip terdengar untuk menarik perhatian pengemudi. Saat melintasi jalur, sistem itu sendiri akan menyesuaikan sudut rotasi roda sehingga mobil tetap berada di jalur. Sistem seharusnya hanya mengintervensi jika menyadari bahwa manuver antar jalur tidak disebabkan oleh pengemudi.

ACC (Adaptive Cruise Control) - sistem kontrol jelajah adaptif yang memungkinkan Anda untuk mengatur kecepatan yang diinginkan. Mobil itu sendiri berakselerasi dan melambat untuk mempertahankan kecepatan yang diinginkan, sementara pengemudi dapat melepas kakinya dari pedal gas dan rem. Mode ini nyaman digunakan saat berkendara di jalan raya dan jalan raya. Kontrol jelajah adaptif mampu melihat hambatan di depan mobil dan melambat untuk menghindari tabrakan dengan mereka. Jika kendaraan lain dengan kecepatan lebih rendah melaju, ACC akan melambat dan mengikuti. Ketika objek statis terdeteksi, ACC akan melambat hingga berhenti. Untuk mendeteksi objek di depan mobil, sistem seperti itu menggunakan radar dengan rentang panjang gelombang milimeter. Biasanya, radar tersebut beroperasi pada frekuensi 24-72 GHz dan mampu melihat objek dengan percaya diri pada jarak 300 meter. Radar biasanya dipasang di belakang lencana depan pada grille.

PCS (Sistem Pra-Tabrakan) - sistem penghindaran benturan. Sistem ini dirancang untuk mencegah tabrakan dengan mobil yang bergerak di depan. Ketika tabrakan tidak terhindarkan, sistem meminimalkan kerusakan tabrakan. Ini juga menggunakan radar untuk memperkirakan jarak ke objek dan kamera depan untuk pengakuannya. Bagian depan PCS memprediksi kemungkinan tabrakan berdasarkan pada kecepatan kendaraan, jarak ke objek dan kecepatannya. Biasanya, suatu sistem memiliki dua tahap operasi. Tahap pertama - sistem berbunyi dan ditampilkan di dasbor memberi tahu pengemudi tentang bahaya. Tahap kedua - pengereman darurat diaktifkan menggunakan sistem ABS, dan pretensioner sabuk pengaman diaktifkan.

Bagian praktis


Setir


Hal pertama yang ingin dilakukan tim kami adalah belajar mengemudi. Setir dalam mobil dapat dikendalikan oleh dua sistem: Asisten parkir IPAS (Intelligent Park Assist) dan LKA.

IPAS memungkinkan Anda untuk mengatur sudut kemudi secara langsung. Karena mobil kami tidak memiliki sistem ini, tidak mungkin untuk memeriksa dan menguasai kemudi dengan cara ini.

Oleh karena itu, kami mempelajari sirkuit listrik mobil dan menyadari bus mana yang BISA bermanfaat. Kami menghubungkan alat analisa bus CAN. Log berisi file catatan pesan di bus dalam urutan kronologis. Tugas kami adalah menemukan tim power steering EPS (Electric Power Steering). Kami mengambil log roda kemudi dari sisi ke sisi, dalam log kami dapat menemukan pembacaan sudut rotasi dan kecepatan rotasi roda kemudi. Di bawah ini adalah contoh mengubah data di bus CAN. Data yang menarik bagi kami disorot dengan spidol.

gambar
Setir 360 derajat ke kiri

gambar
Putar setir 270 derajat ke kanan

Pada langkah berikutnya, kami memeriksa sistem retensi jalur. Untuk melakukan ini, kami pergi ke jalan yang sepi dan mencatat log pertukaran antara unit holding jalur dan DSU (Driving Support ECU). Dengan menggunakan penganalisa bus CAN, kami dapat menghitung pesan dari sistem LKA. Gambar 6 menunjukkan perintah kontrol EPS.

gambar
Fig. 5. Perintah kemudi menggunakan sistem LKA

LKA mengontrol roda kemudi dengan mengatur nilai torsi pada poros (STEER_TORQUE_CMD) dari roda kemudi. Perintah diterima oleh modul EPS. Setiap pesan berisi nilai penghitung (COUNTER) di header, yang bertambah dengan setiap pengiriman. Bidang LKA_STATE berisi informasi status LKA. Untuk mengambil kontrol, Anda harus mengatur bit STEER_REQUEST.

Pesan yang bertanggung jawab untuk pengoperasian sistem otomatis penting dilindungi oleh checksum (CHECKSUM) untuk meminimalkan risiko alarm palsu. Mobil akan mengabaikan perintah seperti itu jika pesan berisi nilai checksum atau counter yang salah. Ini adalah perlindungan buatan pabrikan terhadap gangguan sistem pihak ketiga dan gangguan di jalur komunikasi.

Grafik (Gambar 6.) menunjukkan diagram operasi LKA. Sensor Torsi - nilai dari sensor torsi pada poros puntir. Torque Cmd adalah tim dari LKA untuk kemudi. Gambar tersebut menunjukkan bagaimana LKA diarahkan untuk memegang mobil di jalur. Saat melintasi nol, arah rotasi setir berubah. Yaitu sinyal negatif menunjukkan belokan ke kanan, nilai positif ke kiri. Menjaga perintah di nol menunjukkan kurangnya kontrol oleh LKA. Dengan intervensi pengemudi, sistem berhenti mengeluarkan kendali. LKA mendeteksi intervensi pengemudi dengan sensor torsi kedua pada poros dari sisi kemudi.

gambar
Fig. 6. Jadwal sistem LKA

Kami harus memeriksa pekerjaan tim pengarah. Menggunakan modul StarLine Sigma 10, kami menyiapkan firmware untuk pengujian kontrol. StarLine Sigma 10 harus mengeluarkan perintah ke setir untuk memutar setir ke kiri atau kanan. Pada saat itu, kami tidak memiliki antarmuka grafis untuk mengendalikan modul, jadi kami harus menggunakan sarana standar mobil. Kami menemukan status posisi tuas kontrol jelajah di bus CAN dan memprogram modul sedemikian rupa sehingga posisi atas tuas mengarah ke roda kemudi berbelok ke kanan, posisi bawah - untuk berbelok ke kiri (Gbr. 7).

gambar
Fig. 7. Upaya pertama untuk mengarahkan

Video menunjukkan bahwa kontrol dilakukan dalam bagian pendek. Ini terjadi karena beberapa alasan.

Alasan pertama adalah kurangnya umpan balik. Jika perbedaan antara sinyal Cmd Torsi dan Sensor Torsi melebihi nilai Δ tertentu, sistem akan secara otomatis berhenti menerima perintah (Gbr. 8). Kami mengatur algoritma untuk menyesuaikan perintah keluaran (Torsi CMD) tergantung pada nilai torsi pada poros (Torque Sensor).

gambar
Fig. 8. Perbedaan sinyal menyebabkan kesalahan sistem

Pembatasan berikut terkait dengan sistem keamanan yang dibangun dalam EPS. Sistem EPS tidak memungkinkan tim LKA untuk mengarahkan dalam rentang yang luas. Yang cukup logis, karena saat mengemudi di jalan, manuver mendadak tidak aman. Dengan demikian, ketika nilai ambang batas torsi pada poros terlampaui, sistem LKA menghasilkan kesalahan dan mati (Gbr. 9).

gambar
Fig. 9. Melebihi nilai ambang batas kontrol torsi pada poros

Terlepas dari apakah sistem LKA diaktifkan atau tidak, pesan dengan perintah darinya selalu ada di bus. Kami menginstruksikan modul EPS untuk memutar roda dengan gaya tertentu ke kiri atau kanan. Sementara itu, LKA menyela paket kami dengan pesan "kosong". Setelah tim kami dengan nilai saat ini, standar datang dengan nol (Gbr. 10).

gambar
Fig. 10. Pesan reguler datang dengan nilai nol saat dan mengganggu kontrol kami

Kemudian, menggunakan modul StarLine Sigma 10, kami dapat memfilter semua lalu lintas dari LKA dan memblokir pesan dengan ID 2E4 ketika kami membutuhkannya. Ini menyelesaikan masalah, dan kami berhasil mendapatkan kontrol kemudi yang mulus (Gbr. 11).

gambar
Fig. 11. Penyesuaian roda kemudi halus tanpa kesalahan

Manajemen gas


Sistem ACC Adaptive Cruise Control mengontrol perangkat lunak akselerasi dan pengereman melalui bus CAN. Unit kontrol mesin ECU menerima perintah DSU, jika Anda perlu mempercepat, itu mengaktifkan pedal gas elektronik. Pengereman regeneratif digunakan untuk mengerem mobil. Dalam hal ini, satu perintah digunakan untuk pengereman dan akselerasi, hanya nilainya yang berbeda.

Perintah kontrol akselerasi atau deselerasi ditunjukkan pada Gambar 12. Ini terdiri dari nilai percepatan ACCEL_CMD, sepasang bit overhead, dan checksum Checksum. Untuk akselerasi kendaraan, ACCEL_CMD positif, untuk perlambatan, negatif. Akselerasi diatur dalam kisaran 0 hingga 3 m / s ^ 2, deselerasi serupa, tetapi dengan tanda minus. Untuk mengirim data ke bus, perlu untuk menghitung ulang akselerasi atau deselerasi yang diinginkan dengan koefisien 0,001. Misalnya, untuk mempercepat 1 m / s ^ 2, ACCEL_CMD = 1000 (0x03E8).

gambar
Fig. 12. Tim Kontrol Akselerasi / Deselerasi Kendaraan

Kami menghapus log dari sistem ACC standar dan menganalisis tim. Dibandingkan dengan deskripsi tim kami dan mulai menguji.

gambar
Fig. 13. Log akselerasi / perlambatan kontrol adaptasi jelajah ACC (disorot dengan spidol)

Itu bukan tanpa kesulitan. Kami melaju di jalan dengan lalu lintas yang sibuk untuk menguji tim akselerasi. Perintah kontrol akselerasi atau deselerasi kendaraan hanya bekerja ketika kontrol jelajah diaktifkan, tidak cukup untuk mengaktifkannya dengan tombol. Penting untuk menemukan mobil bergerak di depan dan menyalakan mode berikut.

gambar
Fig. 14. Aktivasi kontrol pelayaran terjadi ketika ada kendaraan lain di depan

Menggunakan modul StarLine Sigma 10, kami mengirim perintah akselerasi, dan mobil mulai menambah kecepatan. Pada titik ini, kami menghubungkan antarmuka grafis untuk mengendalikan Modul StarLine Sigma 10. Sekarang kami mengontrol roda kemudi, akselerasi dan pengereman menggunakan tombol-tombol dalam aplikasi.

Tim bekerja sampai mereka kehilangan mobil di depan. Sistem cruise control dimatikan, dan karena itu perintah akselerasi berhenti bekerja.
Kami mulai mempelajari kemungkinan menggunakan tim tanpa kendali jelajah aktif. Saya harus menghabiskan banyak waktu menganalisis data di bus CAN untuk memahami cara membuat kondisi agar tim dapat bekerja. Kami tertarik, pertama-tama, yang menghalangi eksekusi perintah ACC untuk akselerasi atau perlambatan. Saya harus mempelajari ID mana yang berasal dari DSU, LKA, radar dan kamera, membuka data palsu dari berbagai sensor.

Keputusan itu datang 3 minggu kemudian. Pada saat itu, kami memiliki gagasan tentang bagaimana blok-blok mobil berinteraksi, melakukan studi lalu lintas pesan dan mengidentifikasi kelompok-kelompok pesan yang dikirim oleh masing-masing blok. Driving Support ECU (DSU) bertanggung jawab atas ACC cruise control yang adaptif. DSU mengeluarkan perintah untuk mempercepat dan mengurangi kecepatan mobil, dan unit inilah yang menerima data dari radar jangkauan milimeter. Radar memberi tahu DSU pada jarak berapa dari mesin benda bergerak, pada kecepatan relatif apa dan menentukan posisi horizontal (ke kiri, kanan, atau tengah).

Ide kami adalah mengganti data radar. Kami menghapus log untuk mengikuti mobil, mengeluarkan data radar darinya pada saat berikut. Sekarang, setelah menyalakan kontrol pelayaran, kami mengirim data palsu tentang keberadaan mobil di depan. Ternyata menipu mobil kami, mengatakan bahwa mobil lain di depan bergerak pada jarak tertentu.

a) gambar b) gambar
Fig. 15. Aktivasi kapal pesiar: a) upaya untuk mengaktifkan tanpa mengganti data radar; b) aktivasi saat mengganti data dari radar.

Ketika kita memulai halangan kita, di dashboard ikon kehadiran kendaraan di depan menyala. Sekarang kita dapat menguji manajemen kita. Kami memulai perintah akselerasi, dan mobil mulai berakselerasi dengan cepat.

Seperti yang sudah kita pelajari, perintah akselerasi dan deselerasi adalah satu. Karena itu, mereka segera mengecek deselerasi. Kami melaju dengan cepat dengan kendali jelajah aktif, meluncurkan perintah pengereman, dan mobil segera melambat.

Hasilnya, sekarang ternyata mempercepat dan memperlambat mobil persis seperti yang kami butuhkan.

Tujuan tercapai.

Apa lagi yang kami gunakan


Untuk membuat drone, perlu untuk mengontrol sistem bantu: sinyal belok, lampu rem, alarm, klakson, dll. Semua ini juga dapat dikontrol melalui bus CAN.

Perangkat keras dan perangkat lunak


Untuk bekerja dengan mobil saat ini kami menggunakan satu set berbagai peralatan:

  • Alat Analisis Bus Marathon memungkinkan Anda untuk menghubungkan dan membaca data dari dua bus secara bersamaan. Situs pembuat analisa memiliki perangkat lunak analisis log gratis. Tetapi kami menggunakan perangkat lunak yang ditulis di perusahaan kami untuk penggunaan internal.
  • StarLine 10 . CAN LIN . C, . CAN-. , ID .
  • Toyota/Lexus. : , -, , .

Saat ini, pekerjaan aktif sedang dilakukan untuk mengembangkan kendaraan tak berawak, dalam waktu dekat, penerapan pengereman darurat sebelum rintangan, jalan memutar dan merestrukturisasi rute mobil tergantung pada situasi lalu lintas dan instruksi pengemudi.

Kendaraan tak berawak StarLine adalah platform terbuka untuk menggabungkan pikiran rekayasa terbaik Rusia dan dunia dengan tujuan menciptakan teknologi mengemudi tanpa awak canggih yang akan membuat masa depan kita aman dan nyaman.

Proyek Gitlab

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


All Articles