Diventare un ingegnere autonomo di veicoli – Parte 2:Competenze software

Nella prima parte di questa serie di blog, abbiamo spiegato come iniziare il tuo viaggio per diventare un ingegnere di veicoli autonomi. Ora potresti voler sapere quali linguaggi di codifica e software imparare per consolidare il tuo posto in una squadra che crea il futuro dei trasporti.

Vedi – Pensa – Agisci 

Immagina di guidare lungo una strada cittadina e di individuare un pedone che si avvicina lentamente a un marciapiede a poche centinaia di metri più avanti. Anche se non sono ancora sulle strisce pedonali, metti il ​​piede sul freno, prevedendo che potrebbero iniziare ad attraversare. Quando i tuoi percorsi si intersecano, la persona si fa avanti per attraversare la strada. Già preparati, ti fermi e permetti loro di passare.

Il nostro sistema autonomo di livello 4 end-to-end è stato creato per imitare il processo decisionale in modo simile a un guidatore umano:vedere – pensare – agire.

Ciò significa che implementiamo tutto, dai sensori che "vedono" il pedone agli algoritmi che raccolgono i dati del sensore e lo identificano come una persona. La decisione e l'azione se fermare, rallentare o continuare a guidare si basa su comportamenti programmati nel sistema stesso.

Questi semplici scenari diventano più complessi se si considerano l'ambiente (pioggia, neve), altro traffico (qualcuno sta per svoltare?) e il processo decisionale relativo al percorso. Abbiamo bisogno di team con diversi tipi di set di abilità per creare un sistema robusto in grado di gestire la varietà di situazioni che si potrebbero incontrare sulla strada.

I nostri team

Rilevamento attivo e fusione delle informazioni – Il team di rilevamento attivo utilizza i dati dei sensori e crea algoritmi per rilevare e identificare oggetti per i sistemi di guida autonoma di Torc, consentendo al sistema di comprendere e reagire all'ambiente intorno al veicolo in tempo reale.

Apprendimento automatico – Il nostro team di machine learning addestra il nostro sistema a identificare determinati oggetti che vede in modo più dettagliato di quanto potrebbe essere fornito con i dati grezzi dei sensori. Ad esempio, utilizziamo l'apprendimento automatico per insegnare al nostro sistema come identificare i semafori o determinare la differenza tra un pedone e un semaforo.

Mappatura e localizzazione – Le mappe dei veicoli autonomi devono essere molto più specifiche delle mappe tipiche che un essere umano utilizzerebbe per la navigazione. Il nostro team di mappatura sviluppa l'ambiente 3D e indirizza le nostre auto a guida autonoma e collabora con il team di localizzazione per garantire che il sistema sappia dove si trova e come arrivare a destinazione.

Comportamenti e pianificazione – Il team dei comportamenti si concentra su come il veicolo dovrebbe agire in una determinata situazione. Ad esempio, l'unione su un'autostrada trafficata richiede che il veicolo determini un buon punto per "inserire la cerniera" nel flusso del traffico e regolare l'accelerazione per farlo in sicurezza.

Meccanico – Il team meccanico crea il concetto di design del veicolo e integra sensori, supporti e calcoli nel veicolo.

Integrazione del sistema – Garantire che i componenti funzionino bene non solo da soli ma come sistema è un ruolo importante nel team. Il team di integrazione del sistema esamina le interazioni di alto livello dei componenti nel loro insieme.

Incorporato, controlli ed elettrico – Questo team integra il software nell'intero sistema di componenti e lavora sull'impianto elettrico che controlla il veicolo:pensa all'accelerazione, alla frenata e allo sterzo.

Operazioni di sviluppo – Il team Dev Ops lavora per gestire la distribuzione del software e mantenere l'infrastruttura tecnica.

Sicurezza e test – La sicurezza è l'obiettivo principale del nostro sistema autonomo e quindi gli ingegneri della sicurezza e dei test sono fondamentali in ogni fase del nostro sviluppo. I team di sicurezza e test lavorano per garantire che possiamo testare e verificare nuove capacità, oltre a standardizzare il protocollo e le pratiche di sicurezza per tutti i team.

Come dovresti prepararti? Abbiamo chiesto agli ingegneri Torc quali competenze ed esperienza nel software li hanno aiutati ad avere successo nella loro specialità nel nostro team AV.

Karan Bhargava, Ingegnere di software di mappatura e localizzazione

C++ è un linguaggio orientato alle prestazioni che ti consente di "sfondare il cofano" e approfondire la gestione della memoria.

Se un candidato ha solide competenze in C++ e sistema operativo robotico (ROS), allora è già un ingegnere di robotica. Per essere un ingegnere di mappatura e localizzazione, devono fare un ulteriore passo avanti e comprendere le trasformazioni generali delle coordinate e la geometria 3D. Se un candidato ha lavorato con Localizzazione e mappatura simultanea (SLAM), allora si adatta perfettamente a questo ruolo.

Matthew Via, Ingegnere DevOps

Il team DevOps richiede competenze nell'unificazione dello sviluppo software e dell'amministrazione dei sistemi. Usiamo queste competenze in Torc per gestire le implementazioni di software per il calcolo dei veicoli. Anche la corretta amministrazione e gestione dei computer Linux è un'abilità importante per automatizzare e rendere robusti i nostri sistemi.

Utilizziamo reti abbastanza complesse sui nostri veicoli. Essere in grado di progettare buoni progetti di rete ed eseguire il debug di progetti complessi è vitale per il nostro lavoro.

Le tecnologie tipiche che un membro del team DevOps utilizzerebbe per rendere automatico/ripetibile un processo sarebbero le pipeline di Config Management e Continuous Integration. Invece di fare in modo che uno sviluppatore scriva software, lo compili manualmente e quindi lo copi manualmente su un computer (e quindi lo configuri manualmente), utilizziamo l'automazione per garantire che il software sia creato, installato e configurato con la minima possibilità di errore umano possibile.

David Anderson, ingegnere meccanico principale

Nel campo della progettazione hardware, il software più utile da conoscere sono vari pacchetti di progettazione assistita da computer (CAD) e simulazione. Questi vengono utilizzati quotidianamente per creare l'hardware che fa funzionare questa tecnologia. I linguaggi di codifica più utili sarebbero Python e MATLAB. L'attenzione all'hardware riguarda meno l'efficienza del codice in tempo reale e più la manipolazione e la visualizzazione dei dati.

Andrew Cunningham, Ingegnere del software di rilevamento attivo e fusione delle informazioni

C++ è un linguaggio di programmazione compilato che supporta sia la programmazione orientata agli oggetti che la manipolazione della memoria di basso livello. Torc usa C++ per alimentare l'autonomia perché il codice C++ ben scritto è estremamente veloce ed estensibile.

Un candidato dovrebbe anche avere familiarità con gli standard di codifica. Gli standard di codifica industriale vietano alcune pratiche di codifica che possono causare bug potenzialmente pericolosi in fase di esecuzione. Applicando questi vincoli, il codice è reso più sicuro, portatile e affidabile. Gli standard di codifica MISRA sono aperti e, sebbene la documentazione sia densa, le idee chiave possono essere apprese abbastanza facilmente.

Ashwin Sahasrabudhe, Ingegnere software per comportamenti

I comportamenti di guida autonoma svolgono un ruolo importante nel processo decisionale ad alto livello su come il veicolo dovrebbe comportarsi sulle strade considerando che ci sono molte altre entità come automobili, pedoni e biciclette. Per affrontare queste diverse entità e sviluppare gli algoritmi di sicurezza richiesti, è necessario avere una buona comprensione di come la cinematica e la dinamica di un veicolo influenzino la sua manovrabilità su strada. La parte divertente del lavorare in Torc è che il tuo lavoro non è mai limitato a un solo componente. Puoi lavorare su altri componenti come l'interfaccia del veicolo, che controlla gli attuatori dell'auto. A causa di questo lavoro variegato, è utile avere una conoscenza degli algoritmi di controllo, nonché esperienza nello sviluppo e nell'ottimizzazione dei loop di controllo.

Detto questo, una domanda che viene comunemente posta è "Dove posso conoscere questa tecnologia?" Ci sono un numero considerevole di simulatori disponibili là fuori con cui puoi giocare. È sempre divertente esplorare qualcosa di nuovo e ottieni un diverso tipo di soddisfazione quando l'auto guida nel simulatore nel modo in cui desideri che guidi. L'esperienza pratica e lo sviluppo di alcuni algoritmi di controllo o comportamenti di guida autonoma con tali simulatori è un buon inizio. Inoltre, connettiti con i tuoi coetanei interessati alle auto a guida autonoma. per esperienza personale, direi che lavorare in progetti di gruppo e imparare dagli altri aiuta molto quando si tratta di comprendere le nuove tecnologie.

Torna presto per la terza parte in cui gli ingegneri Torc condivideranno le abilità personali che hanno ritenuto preziose quanto la programmazione e confronteranno le loro aspettative sul lavoro con la realtà.

Cerchi lavoro nel settore dei veicoli a guida autonoma? Torc è una delle società di software autonomo più esperte e stiamo ampliando il nostro team per rivoluzionare i trasporti. Consulta la nostra pagina delle carriere per ulteriori informazioni e resta sintonizzato per la terza parte!