Autonomous Vehicle Engineer worden – Deel 2:Softwarevaardigheden

In deel één van deze blogserie hebben we besproken hoe u aan de slag kunt gaan op uw reis om een ​​autonoom voertuigingenieur te worden. Nu wil je misschien weten welke coderingstalen en software je moet leren om je plek in een team te versterken dat de toekomst van transport creëert.

Zien – Denken – Handelen 

Stel je voor dat je door een stadsstraat rijdt en een voetganger een paar honderd meter verderop langzaam een ​​stoeprand ziet naderen. Terwijl ze nog niet op het zebrapad staan, zet je je voet op de rem en voorspelt dat ze kunnen beginnen over te steken. Terwijl jullie paden elkaar kruisen, stapt de persoon naar voren om de weg over te steken. Reeds voorbereid kom je tot stilstand en laat je ze passeren.

Ons end-to-end autonome niveau 4 systeem is gemaakt om het besluitvormingsproces na te bootsen op een vergelijkbare manier als een menselijke bestuurder:See – Think – Act.

Dit betekent dat we alles implementeren, van de sensoren die de voetganger 'zien' tot de algoritmen die die sensorgegevens samenbrengen en identificeren als een persoon. De beslissing en actie om te stoppen, langzamer te rijden of door te rijden, is gebaseerd op gedrag dat in het systeem zelf is geprogrammeerd.

Deze eenvoudige scenario's worden complexer als je kijkt naar de omgeving (regen, sneeuw), ander verkeer (gaat er iemand afslaan?) en routebeslissingen. We hebben teams nodig met meerdere soorten vaardigheden om een ​​robuust systeem te maken dat in staat is om de verschillende situaties aan te kunnen die je onderweg kunt tegenkomen.

Onze teams

Actieve detectie en informatiefusie – Het actieve detectieteam maakt gebruik van sensorgegevens en creëert algoritmen om objecten voor Torc's autonome rijsystemen te detecteren en te identificeren, waardoor het systeem de omgeving rond het voertuig in realtime kan begrijpen en erop kan reageren.

Machineleren – Ons machine learning-team traint ons systeem om bepaalde objecten die het ziet, gedetailleerder te identificeren dan met onbewerkte sensorgegevens zou kunnen worden voorzien. We gebruiken bijvoorbeeld machine learning om ons systeem te leren verkeerslichten te herkennen of het verschil tussen een voetganger en een lichtpaal te bepalen.

Kaart en lokalisatie – Autonome voertuigkaarten moeten veel specifieker zijn dan de typische kaarten die een mens zou gebruiken voor navigatie. Ons mappingteam ontwikkelt de 3D-omgeving en routeert onze autonome auto's en werkt samen met het lokalisatieteam om ervoor te zorgen dat het systeem weet waar het zich bevindt en hoe het zijn bestemming moet bereiken.

Gedrag en planning – Het gedragsteam richt zich op hoe het voertuig in een bepaalde situatie moet handelen. Als u bijvoorbeeld wilt invoegen op een drukke snelweg, moet het voertuig een goede plek bepalen om in de verkeersstroom te "ritsen" en de versnelling aan te passen om dat veilig te bereiken.

Mechanisch – Het mechanische team creëert het voertuigontwerpconcept en integreert sensoren, montages en berekeningen in het voertuig.

Systeemintegratie – Ervoor zorgen dat componenten niet alleen goed werken, maar ook als systeem, is een belangrijke rol in het team. Het systeemintegratieteam kijkt naar de interacties op hoog niveau van de componenten als geheel.

Ingebouwd, besturing en elektrisch – Dit team integreert software in het hele systeem van componenten en werkt aan het elektrische systeem dat het voertuig bestuurt – denk aan acceleratie, remmen en sturen.

Dev Ops – Het Dev Ops-team werkt aan het beheer van de software-implementatie en het onderhouden van de technische infrastructuur.

Veiligheid en testen – Veiligheid is het belangrijkste doel van ons autonome systeem, en daarom zijn veiligheids- en testingenieurs van cruciaal belang voor elke fase van onze ontwikkeling. Veiligheids- en testteams werken eraan om ervoor te zorgen dat we nieuwe mogelijkheden kunnen testen en verifiëren, evenals het standaardiseren van veiligheidsprotocollen en -praktijken voor alle teams.

Hoe moet je je voorbereiden? We vroegen Torc-ingenieurs welke softwarevaardigheden en -ervaring hen hielpen om succesvol te worden in hun specialiteit in ons AV-team.

Karan Bhargava, software-engineer voor kaarten en lokalisatie

C++ is een prestatiegerichte taal waarmee je "de motorkap kunt openen" en diep in geheugenbeheer kunt reiken.

Als een kandidaat solide C++- en Robotic Operating System (ROS)-vaardigheden heeft, dan is hij al een robotica-ingenieur. Om een ​​mapping- en lokalisatie-ingenieur te zijn, moeten ze een stap verder gaan en algemene coördinatentransformaties en 3D-geometrie begrijpen. Als een kandidaat heeft gewerkt met Simultaneous Localization and Mapping (SLAM), dan is hij of zij uitstekend geschikt voor deze rol.

Matthew Via, DevOps-ingenieur

Het DevOps-team vereist vaardigheden in het verenigen van softwareontwikkeling en systeembeheer. We gebruiken deze vaardigheden bij Torc voor het beheren van implementaties van software voor voertuigcomputers. Het goed beheren en beheren van Linux-computers is ook een belangrijke vaardigheid om onze systemen te automatiseren en robuust te maken.

We gebruiken vrij complexe netwerken op onze voertuigen. Het kunnen ontwerpen van goede netwerkontwerpen en het debuggen van complexe ontwerpen is essentieel voor ons werk.

De typische technologieën die een DevOps-teamlid zou gebruiken om een ​​proces automatisch/herhaalbaar te maken, zijn Config Management en Continuous Integration-pipelines. In plaats van een ontwikkelaar software te laten schrijven, deze handmatig te compileren en vervolgens handmatig naar een computer te kopiëren (en vervolgens handmatig te configureren), gebruiken we automatisering om ervoor te zorgen dat de software wordt gebouwd, geïnstalleerd en geconfigureerd met zo min mogelijk menselijke fouten. mogelijk.

David Anderson, hoofdwerktuigbouwkundig ingenieur

Op het gebied van hardwareontwerp is de meest bruikbare software om te kennen verschillende Computer Aided Design (CAD) en simulatiepakketten. Deze worden dagelijks gebruikt om de hardware te maken die deze technologie laat werken. De meest bruikbare codeertalen zijn Python en MATLAB. De hardwarefocus ligt minder op realtime code-efficiëntie, en meer op datamanipulatie en visualisatie.

Andrew Cunningham, Active Sensing and Information Fusion Software Engineer

C++ is een gecompileerde programmeertaal die zowel objectgeoriënteerd programmeren als geheugenmanipulatie op laag niveau ondersteunt. Torc gebruikt C++ om autonomie te stimuleren, omdat goed geschreven C++-code extreem snel en uitbreidbaar is.

Een kandidaat moet ook bekend zijn met coderingsnormen. Industriële coderingsstandaarden verbieden bepaalde coderingspraktijken die kunnen leiden tot mogelijk onveilige bugs tijdens runtime. Door deze beperkingen af ​​te dwingen, wordt code veiliger, draagbaarder en betrouwbaarder gemaakt. MISRA-coderingsstandaarden zijn open en hoewel de documentatie uitgebreid is, kunnen belangrijke ideeën vrij gemakkelijk worden geleerd.

Ashwin Sahasrabudhe, Gedragssoftware-ingenieur

Zelfrijdend gedrag speelt een belangrijke rol bij besluitvorming op hoog niveau over hoe het voertuig zich op de weg moet gedragen, aangezien er meerdere andere entiteiten zijn, zoals auto's, voetgangers en fietsen. Om met deze verschillende entiteiten om te gaan en de vereiste veiligheidsalgoritmen te ontwikkelen, moet men een goed begrip hebben van hoe de kinematica en dynamiek van een voertuig de manoeuvreerbaarheid op de weg beïnvloeden. Het leuke van werken bij Torc is dat je werk nooit beperkt is tot slechts één onderdeel. Je gaat aan de slag met andere componenten zoals de voertuiginterface, die de actuatoren van de auto aanstuurt. Door dit afwisselende werk is het goed om kennis te hebben van regelalgoritmen en ervaring met het ontwikkelen en afstemmen van regelkringen.

Dat gezegd hebbende, is een veel gestelde vraag:'Waar kan ik meer te weten komen over deze technologie?' Er is een aanzienlijk aantal simulatoren beschikbaar waarmee u kunt spelen. Het is altijd leuk om iets nieuws te ontdekken en je krijgt een ander soort voldoening als de auto in de simulator rijdt zoals jij wilt dat hij rijdt. Praktijkervaring en het ontwikkelen van een paar besturingsalgoritmen of zelfrijdend gedrag met dergelijke simulatoren is een goed begin. Maak ook contact met uw collega's die geïnteresseerd zijn in zelfrijdende auto's. uit persoonlijke ervaring zou ik zeggen dat werken in groepsprojecten en leren van anderen veel helpt als het gaat om het begrijpen van nieuwe technologie.

Kom snel terug voor deel drie, waar Torc-ingenieurs de persoonlijke vaardigheden zullen delen die ze net zo waardevol vonden als coderen en hun verwachtingen van het werk zullen vergelijken met de realiteit.

Op zoek naar vacatures in de zelfrijdende auto? Torc is een van de meest ervaren autonome softwarebedrijven en we breiden ons team uit om een ​​revolutie teweeg te brengen in het transport. Bekijk onze carrièrepagina voor meer informatie en blijf op de hoogte voor deel drie!