Aplikasi Cerdas

Membangun asisten pengemudi Formula E di Android dengan ML Kit dan Gemini Nano

Speaker

  • Alastair Breeze

    Staff Software Engineer - Office of the CTO Google Cloud

  • Oli Thompson

    Junior Data Scientist, Formula E

Tentang

Tentang konferensi

Mobil balap adalah lingkungan yang menantang dengan kecepatan tinggi, panas, dan batasan telemetri. Bagaimana agen di perangkat dapat membantu memproses data kendaraan real-time untuk aplikasi olahraga dan teknik?

Sesi teknis ini membahas arsitektur hybrid eksperimental yang menggabungkan hardware edge dan agen cloud. Kami akan membahas bukti konsep riset menggunakan Raspberry Pi untuk melakukan streaming telemetri bus CAN, ponsel Pixel yang menjalankan agen percakapan di perangkat yang didukung oleh ML Kit dan Gemini Nano, serta koneksi Cloud agen ke agen (A2A) untuk alur kerja pasca-balapan.

Ringkasan

  • Lingkungan balapan Formula E menantang edge AI dengan cuaca panas ekstrem dan persyaratan latensi rendah. Ponsel Pixel menghosting agen untuk menjawab pengemudi yang melaju dengan kecepatan lebih dari 200 km/jam.
  • Android menghosting arsitektur edge menggunakan Agent Development Kit dan Gemini Nano melalui ML Kit. Agen edge dapat berkomunikasi langsung dengan agen cloud melalui protokol A2A.
  • Integrasi kendaraan merutekan telemetri CAN bus langsung melalui Raspberry Pi untuk memublikasikan data 10 Hz yang di-downsample melalui MQTT. Agen Android menggabungkan data ini dengan input suara pengemudi untuk mengevaluasi kueri dan merespons.
  • Pengujian di sirkuit Goodwood membuktikan bahwa ponsel ini mampu menangani panas ekstrem tanpa masalah. Proses debug di menit-menit terakhir berhasil menyelesaikan masalah koneksi Bluetooth ke helm pengemudi sebelum mobil melaju ke atas bukit.

Gemini Notebook

Topik

  • gemini-nano
  • ml-kit
  • on-device-ai
  • ai-agents
  • formula-e

Transkrip

Pengantar

  • Halo.

  • Nama saya Alastair, dan hari ini, saya sangat senang bisa berbicara dengan Anda tentang sedikit proyek yang kami lakukan tahun lalu dengan Formula E.

  • Dan Oli hadir di sini bersama kita hari ini untuk memberikan sedikit penjelasan tentang apa yang kami lakukan bersama.

  • Jadi, di-- saya bekerja di Google Cloud di kantor CTO, dan kami sering mencoba dan mendorong batas-batas dari apa yang mungkin dilakukan di perangkat seluler saat ini, dan Cloud, serta bagaimana keduanya dapat bekerja sama.

  • Saya akan menunjukkan video singkat yang akan memberi Anda sedikit pengantar tentang apa yang kami lakukan.

  • Mobil Gen 4 memiliki tenaga balap sebesar 600 kW.

  • Tenaga listrik penuh, penggerak semua roda permanen.

  • Saya akan menggambarkannya sebagai sangat cepat.

  • Bisakah kita menggunakan agen di ponsel Pixel yang terhubung ke data telemetri yang berasal dari mobil?

  • Saat pengemudi menanjak di Goodwood, mereka akan dapat berbicara dengan mobil.

  • Cukup bagus!

  • Hai Gemma, bagaimana kondisi ban saya?

  • Tekanan ban terlihat bagus, sekitar 1,4 bar.

  • Ada ponsel yang dicolokkan langsung ke ECU, yang membaca banyak sekali titik data tentang apa yang saya lakukan sebagai pengemudi.

  • Ini adalah pertama kalinya hal ini terjadi pada mobil balap.

  • Menurut saya, tidak ada tempat yang lebih baik untuk memamerkannya.

  • Halo Gemma, apakah kita sudah siap?

  • Siap, saat Anda siap.

Tantangan dalam menjalankan agen di edge

  • Jadi, yang kita lihat tadi adalah project yang berupaya menghadirkan agen pendamping pengemudi ke dalam kokpit bersama pengemudi.

  • Dan pada dasarnya, yang kami coba lakukan di sini adalah mendorong batas-batas kemampuan agen di edge karena ini adalah contoh bagus dari tantangan yang sangat sulit.

  • Jenis tantangan yang Anda lihat di mobil balap jelas adalah panas yang tinggi.

  • Mobil balap terkenal karena panas, dan itu, Anda tahu, bagian dari tantangan terbesar.

  • Konektivitas tidak stabil.

  • Jadi, kami melakukannya di Goodwood Festival of Speed, tempat ratusan ribu penggemar motorsport berkumpul untuk menonton mobil balap mendaki bukit.

  • Seperti yang bisa Anda bayangkan, saat ada ratusan ribu orang di lapangan, konektivitas bisa menjadi tantangan yang cukup besar.

  • Bluetooth juga.

  • Misalnya, mobil ini pada dasarnya adalah sangkar Faraday, jadi Anda bisa membayangkan tantangan yang dihadapi bahkan hanya untuk terhubung ke helm pembalap.

  • Dan terakhir, persyaratan latensi rendah.

  • Pengemudi ini melaju dengan kecepatan lebih dari 200 km per jam, jadi sangat penting bahwa jawaban yang mereka dapatkan dari agen co-driver sangat cepat dan tanggap.

  • Dan pada dasarnya, kami sangat tertarik dengan hal ini karena kami yakin agen akan ada di mana-mana.

  • Kita sudah mulai melihatnya.

  • AI tidak lagi hanya ada di komputer kita.

  • Asisten digital ada di ponsel, jam tangan, kacamata, smart home, dan bahkan sekarang di mobil kita.

  • Jadi, pada dasarnya, kami benar-benar ingin melihat apa yang dapat kami capai dalam skenario sulit seperti ini.

  • Saat kami mendiskusikan cara membuatnya, apakah kami akan membuat mikrokomputer kecil dengan akselerator kecil di dalamnya untuk memiliki model di sana?

  • Kami tiba-tiba menyadari bahwa semua bahan yang kami butuhkan sudah ada, dan itu adalah Android.

Alasan Android adalah host yang ideal

  • Android adalah host yang sempurna untuk hal ini karena Anda memiliki ADK, yaitu Agent Developer Kit kami.

  • Ini adalah library yang sangat bagus yang memungkinkan Anda membangun agen langsung ke dalam aplikasi.

  • Ada miliaran pengguna, jadi, dan, Anda tahu, berbagai faktor bentuk yang dapat kita jalankan dengan sangat mudah, sehingga sangat mudah untuk menguji ini dan mendistribusikan kodenya sendiri.

  • Alat Developer yang memungkinkan Anda men-debug dan mencoba berbagai hal serta menemukan masalahnya.

  • AI di perangkat, ponsel Google Pixel kini dilengkapi dengan TPU langsung di ponsel itu sendiri, yang dioptimalkan untuk model di perangkat yang ada langsung di ponsel, sehingga sangat mudah menggunakan API seperti ML Kit untuk mendapatkan akses ke model yang sangat canggih.

  • Kemudian, kami juga memiliki fitur seperti text-to-speech dan pengenalan ucapan, API yang sepenuhnya offline yang memungkinkan Anda mendapatkan pengalaman percakapan yang sangat efektif.

  • Dan terakhir, tentu saja, konektivitas.

  • Ponsel dibuat untuk konektivitas, baik melalui jaringan seluler, Wi-Fi, atau cara lainnya.

  • Namun, salah satu tantangannya adalah agen di edge tidak dapat melakukan semuanya, jadi bagaimana mereka dapat bekerja sama dengan agen, yang berpotensi berada di Cloud?

  • Bagaimana jika solusinya adalah hybrid?

  • Bagaimana jika agen yang ada di ponsel dapat berbicara langsung dengan agen di Cloud untuk melakukan tindakan yang lebih rumit?

  • Misalnya, pengemudi ingin mengetahui posisi balapannya.

  • Mobil itu sendiri tidak akan tahu posisinya dalam balapan, tetapi mungkin agen di Cloud tahu.

  • Kami juga memiliki protokol yang disebut agent-to-agent, yang berarti Anda dapat membuat agen di edge dan di Cloud, lalu membuat mereka saling berkomunikasi untuk melakukan tindakan yang lebih kompleks.

Arsitektur inti agen

  • Jadi, bagaimana cara kami membuatnya?

  • Jadi, saya akan menjelaskan kepada Anda bahan-bahan dari sistem ini.

  • Mulai dari rangkaian kabel.

  • Nah, harness di sini pada dasarnya adalah aplikasi Android yang menjalankan Agent Developer Kit untuk Android.

  • Bagian kedua adalah model.

  • Anda memerlukan model untuk mendukungnya, dan kami menggunakan Gemini Nano melalui ML Kit, model di perangkat yang sangat canggih dan mudah diakses.

  • Kemudian, data.

  • Oli akan membahas hal ini sebentar lagi, tetapi Anda memiliki data yang masuk dari mobil, dan juga, kemungkinan, pengenalan ucapan dari pengemudi.

  • Dan terakhir, Anda juga memiliki tindakan yang dapat dilakukan agen.

  • Hal ini dapat berupa text-to-speech untuk dapat berbicara kembali kepada pengemudi dan mengajukan pertanyaan lanjutan atau memberikan informasi yang diperlukan, atau seperti yang disebutkan sebelumnya, komunikasi agen ke agen dengan agen di cloud untuk melakukan beberapa tindakan yang lebih kompleks.

  • Sekarang, saya ingin mengundang Oli ke panggung untuk memberikan sedikit penjelasan tentang cara kami melakukannya dengan Formula E.

Integrasi hardware dan telemetri kendaraan

  • Terima kasih, Alastair.

  • Jadi, kita sudah punya bahan-bahannya, sekarang bagian yang sulit: Bagaimana cara mengintegrasikan agen AI ke dalam mobil Formula E?

  • Jadi, prosesnya dimulai di sini, di VCU, atau unit kontrol kendaraan.

  • Sekarang, setiap sensor dan setiap komponen di mobil melaporkan kembali ke komputer melalui sesuatu yang disebut bus CAN.

  • Mobil ini menghasilkan ribuan titik telemetri per detik, seperti kecepatan, akselerasi, throttle, pengereman, dan lainnya.

  • Jadi, untuk membaca telemetri ini, kami memutuskan untuk menghubungkan Raspberry Pi langsung ke VCU mobil melalui koneksi CAN ini.

  • Raspberry Pi melakukan beberapa hal yang berbeda.

  • Pertama, sistem ini mendekode sinyal mentah, mengubahnya, dan melakukan downsampling menjadi sekitar 10 Hz, yang merupakan informasi yang cukup untuk asisten pengemudi.

  • Raspberry Pi kemudian memublikasikan data yang telah disaring ini melalui MQTT ke Pixel 10 Pro yang berada di kokpit mobil.

  • Dan ini adalah salah satu input yang dapat diterima oleh aplikasi yang menghosting aplikasi agen kita.

  • Kedua adalah pengenalan ucapan Android.

  • Jadi, saat pengemudi berbicara, aplikasi akan mengonversi input menjadi teks, dan Gemini Nano dapat memberikan penalaran atas kedua input ini.

  • Sekarang, agen dapat membuat dua keputusan: Pertama, agen dapat menggunakan mesin text-to-speech Android untuk berbicara kembali kepada pengemudi.

  • Kedua, seperti yang disebutkan Alastair sebelumnya, agen ini dapat berkomunikasi dengan agen cloud melalui protokol A2A.

  • Sekarang, terkait hal ini, alur agen cukup sederhana: Ucapkan hotword, dalam hal ini "Ok, Gemma.", ajukan pertanyaan, dan dapatkan jawaban.

  • Agen akan terus mendengarkan selama sekitar 5 detik setelahnya, sehingga Anda dapat mengajukan pertanyaan lanjutan tanpa harus memulai dari awal, seperti berbicara dengan engineer balap sungguhan.

  • Aplikasi ini juga merupakan agen multi-turn, yang berarti aplikasi ini dapat mengakses histori percakapan untuk memungkinkan dirinya menjadi lebih interaktif.

  • Jadi, Anda mungkin mengira kode untuk ini akan terlihat agak rumit, bukan?

Implementasi dengan ADK dan ML Kit

  • Ternyata, caranya cukup sederhana.

  • Beberapa baris pertama memanggil onDeviceModel menggunakan ML Kit dan menggabungkannya sebagai Gemini Nano.

    val generativeModel: GenerativeModel = Generation.getClient()
    val onDeviceModel = GenaiPrompt.create(
        generativeModel = generativeModel,
        name = "gemini-nano",
    )
    val agent = LlmAgent(
        name = "race_engineer",
        model = onDeviceModel,
        staticInstruction = /* System prompt */,
        instruction = Instruction {
            /* Dynamic context */
        },
        tools = listOf(
            /* Custom tools */
        )
    )
  • Kemudian, kita akan menentukan agen dengan ADK.

  • Beri nama dan dua jenis petunjuk: Yang pertama adalah petunjuk statis, dan itu adalah kepribadian dan identitasnya.

  • Hal ini dapat mencakup hal-hal seperti cara mobil merespons pengemudi dan beberapa informasi tentang trek balap.

  • Yang kedua adalah petunjuk dinamis.

  • Ringkasan ini dibuat pada setiap kueri dengan ringkasan telemetri terbaru, sehingga agen selalu mengetahui apa yang dilakukan pengemudi pada waktu tertentu.

  • Data ini juga mencakup histori percakapan saat ini, seperti yang disebutkan sebelumnya.

  • Selain itu, kami juga menentukan beberapa alat, misalnya, memberinya kemampuan untuk merespons data sesi sebelumnya, memberinya kemampuan untuk merespons agen cloud, dan juga memberinya kemampuan untuk merespons pengemudi menggunakan text-to-speech.

  • Sekarang, mari kita lihat demo singkat agen yang beraksi di simulator balap kami di kantor Formula E.

Demonstrasi simulator

  • Halo Gemini, seberapa agresif kemudi saya?

  • Halus dan terukur.

  • Kunci puncak adalah 48 derajat, dan Anda menggerakkan roda rata-rata 11 derajat per detik.

  • Hai Gemma, berapa gaya G puncak saya?

  • Gaya gravitasi puncaknya adalah 2,2 G, saat melewati tikungan.

  • Halo Gemini, bagaimana lari saya?

  • Lari yang kuat, Dan.

  • Kecepatan tertinggi 306 km/jam, rata-rata 186 selama 35 detik.

  • Anda melaju dengan kecepatan penuh selama 58% dari total waktu, dan mencapai puncaknya pada 2,2 G.

  • Demikianlah.

  • Itulah Gemini Nano di ponsel yang berbicara dengan pengemudi, menjawab pertanyaannya secara real time.

  • Rig simulator adalah satu hal, mobil Formula E adalah hal lain yang sama sekali berbeda.

Deployment dan pengujian trek Goodwood

  • Jadi, bagaimana kami menyatukan semuanya?

  • Pertama, kami harus melakukan perjalanan ke Spark Racing Technology di Paris, tempat mobil kami dibuat.

  • Ini saya di sebelah kiri sedang menghubungkan Raspberry Pi ke VCU mobil Formula E.

  • Semua yang telah kita bangun sejauh ini berjalan pada data yang diemulasikan dan diputar ulang dari sesi pengujian, jadi kita tidak benar-benar tahu apakah hal itu akan berfungsi dengan data yang sebenarnya.

  • Jadi, kami mencolokkannya, menyalakannya, menunggu, menunggu sedikit lebih lama, dan akhirnya telemetri mulai masuk ke perangkat, membuktikan bahwa data bergerak melalui sistem seperti yang kami harapkan.

  • Di sebelah kanan, Anda dapat melihat sistem yang sudah selesai, dan Anda dapat melihat bahwa ponsel benar-benar diimplementasikan ke dalam kokpit, tepat di sebelah tempat pengemudi akan duduk.

  • Jadi, kami semua siap untuk Goodwood.

  • Jadi, apa yang sebenarnya terjadi pada hari itu?

  • Ingat empat tantangan yang dibahas Alastair sebelumnya?

  • Goodwood benar-benar menguji dua di antaranya.

  • Pertama, panas.

  • Di Inggris, kami biasanya hanya merencanakan cuaca apa pun kecuali matahari.

  • Jadi, tentu saja, yang kami dapatkan adalah salah satu minggu terpanas yang pernah tercatat, tepat di tengah gelombang panas.

  • Waktu yang tepat untuk memasang komputer di dalam mobil Formula E.

  • Namun, ada kejutan.

  • Ponselnya sebenarnya baik-baik saja.

  • Android tidak terlalu terpengaruh.

  • Ternyata Raspberry Pi yang paling kesulitan.

  • Dan karena kami tidak dapat mencolokkannya langsung ke mobil, kami harus menggunakan sesuatu yang disebut UPS, yang, jika Anda tidak tahu, pada dasarnya terlihat seperti banyak baterai yang menempel di bagian bawah Pi.

  • Namun untungnya, kami berhasil memperbaikinya dengan mengisi ulang secara sporadis sepanjang hari, dan tanpa ini, mobil mungkin tidak akan bisa menanjak tanpa agen AI sama sekali.

  • Berikutnya adalah Bluetooth.

  • Saat itu, kami belum pernah menguji helm pengemudi, yang terhubung ke aplikasi melalui Bluetooth.

  • Dan hal itu terbukti menjadi sedikit tantangan.

  • Jadi, untuk mengujinya, kami duduk di rumput, dan sepertinya kami bersenang-senang, bukan?

  • Kami mengeluarkan laptop, mengobrol dengan santai.

  • Namun, pada kenyataannya, itu mungkin salah satu periode paling menegangkan dalam karier saya sejauh ini.

  • Kami berusaha keras agar kode tersebut berfungsi dengan baik dan menghubungkan helm Bluetooth ke aplikasi sebelum pengemudi naik ke bukit pada sore hari.

  • Namun, berkat perbaikan cepat di menit-menit terakhir dan alat debug Android yang hebat, kami berhasil memperbaikinya tepat waktu, dan mobil tersebut melaju ke atas bukit dengan agen AI yang berfungsi dengan baik.

  • Sekarang, saya akan mengembalikannya kepada Alastair, yang akan membahas lebih lanjut pelajaran yang diperoleh dari project ini.

  • Terima kasih.

Poin-poin penting dan pelajaran yang diperoleh

  • Terima kasih, Oli.

  • Jadi, apa yang kita pelajari dari project ini?

  • Pertama, Android adalah host yang sangat sempurna untuk agen Anda.

  • Kami sangat menyarankan Anda untuk menggunakan keserbagunaan Android, API yang tersedia, model di perangkat, dan ADK.

  • Cobalah karena Anda akan terkejut dengan betapa hebatnya pengalaman yang bisa Anda dapatkan dari hal yang begitu sederhana.

  • Masalah integrasi masih ada.

  • Sebagian besar orang di ruangan ini mungkin pernah mengalaminya pada suatu tahap dalam karier mereka.

  • Anda membangun semua subkomponen secara terpisah, dan saat Anda akhirnya menyatukannya, ada sesuatu yang tidak berfungsi dengan baik.

  • Helm balap pengemudi persis seperti ini.

  • Namun, untungnya kami dapat memperbaikinya pada hari itu, dan hal ini benar-benar membuktikan bahwa pengujian masih sangat penting.

  • Terakhir, Gemini Nano.

  • Gemini Nano sangat membantu dalam hal ini.

  • Model ini sangat efektif, berjalan sangat cepat di perangkat Anda, dan dapat melakukan tugas yang sangat rumit, tetapi tidak langsung melakukannya.

  • Ada pemikiran yang mendalam di balik itu.

  • Anda harus melakukan rekayasa perintah.

  • Anda harus mengujinya.

  • Anda harus memikirkan cara memberikan petunjuk dinamis versus petunjuk statis.

  • Anda harus memikirkan alat yang akan Anda berikan dan cara terbaik untuk menginstruksikannya melakukan hal tersebut.

  • Namun, dengan pengujian dan evaluasi yang tepat, Anda bisa mendapatkan banyak manfaat dari model seperti Gemini Nano langsung di perangkat.

  • Terima kasih banyak, semuanya.

  • Kami akan berada di stan nanti, jadi Anda bisa datang dan bergabung serta mengajukan beberapa pertanyaan kepada kami.

Kode

Cuplikan kode

Cuplikan Kotlin pada menit 07.45 di "Implementation with ADK and ML Kit"
val generativeModel: GenerativeModel = Generation.getClient()
val onDeviceModel = GenaiPrompt.create(
    generativeModel = generativeModel,
    name = "gemini-nano",
)
val agent = LlmAgent(
    name = "race_engineer",
    model = onDeviceModel,
    staticInstruction = /* System prompt */,
    instruction = Instruction {
        /* Dynamic context */
    },
    tools = listOf(
        /* Custom tools */
    )
)