I del ett av den här bloggserien diskuterade vi hur du kommer igång på din resa mot att bli en självkörande fordonsingenjör. Nu kanske du vill veta vilka kodningsspråk och programvara du ska lära dig för att stärka din plats i ett team som skapar framtidens transport.
Föreställ dig att köra nerför en stadsgata och se en fotgängare som sakta närmar sig en trottoarkant några hundra meter framför dig. Medan de ännu inte är på övergångsstället sätter du foten på bromsen och förutsäger att de kan börja korsa. När dina vägar korsas, kliver personen fram för att korsa vägen. Redan förberedd stannar du och låter dem passera.
Vårt heltäckande autonoma nivå 4-system är skapat för att efterlikna beslutsprocessen på ett liknande sätt som en mänsklig förare:Se – Tänk – Agera.
Det betyder att vi implementerar allt från sensorerna som "ser" fotgängaren till algoritmerna som drar ihop sensordatan och identifierar den som en person. Beslutet och åtgärden om att stanna, sakta ner eller fortsätta köra baseras på beteenden som programmerats in i själva systemet.
Dessa enkla scenarier blir mer komplexa när man tar hänsyn till miljön (regn, snö), annan trafik (kommer någon att vända?) och vägbeslut. Vi kräver att team med flera typer av färdigheter skapar ett robust system som kan hantera de olika situationer man kan stöta på på vägen.
Aktiv avkänning och informationsfusion – Det aktiva avkänningsteamet använder sensordata och skapar algoritmer för att upptäcka och identifiera objekt för Torcs autonoma körsystem, vilket gör att systemet kan förstå och reagera på miljön runt fordonet i realtid.
Machine Learning – Vårt maskininlärningsteam tränar vårt system för att identifiera vissa objekt som det ser mer detaljerat än vad som kan förses med rå sensordata. Till exempel använder vi maskininlärning för att lära vårt system hur man identifierar trafikljus eller avgör skillnaden mellan en fotgängare och en ljusstolpe.
Mappning och lokalisering – Autonoma fordonskartor måste vara mycket mer specifika än de typiska kartor en människa skulle använda för navigering. Vårt kartteam utvecklar 3D-miljön och dirigerar våra autonoma bilkörningar och arbetar med lokaliseringsteamet för att säkerställa att systemet vet var det är och hur det ska ta sig till sin destination.
Beteenden och planering – Beteendeteamet fokuserar på hur fordonet ska agera i en given situation. Till exempel, sammanslagning på en trafikerad motorväg kräver att fordonet bestämmer en bra plats för att "blixtlås" i trafikflödet och justera accelerationen för att åstadkomma det på ett säkert sätt.
Mekanisk – Det mekaniska teamet skapar fordonsdesignkonceptet och integrerar sensorer, fästen och beräkningar i fordonet.
Systemintegration – Att säkerställa att komponenter fungerar bra inte bara av sig själva utan som ett system är en viktig roll i teamet. Systemintegrationsteamet tittar på högnivåinteraktionen mellan komponenterna som helhet.
Inbäddade, kontroller och elektriska – Det här teamet integrerar mjukvara i hela systemet av komponenter och arbetar med det elektriska systemet som styr fordonet – tänk på acceleration, bromsning och styrning.
Utvecklare – Dev Ops-teamet arbetar med att hantera programvarudistribution och underhålla den tekniska infrastrukturen.
Säkerhet och testning – Säkerhet är huvudmålet med vårt autonoma system, och därför är säkerhets- och testingenjörer avgörande för varje steg i vår utveckling. Säkerhets- och testteam arbetar för att säkerställa att vi kan testa och verifiera nya funktioner, samt att standardisera säkerhetsprotokoll och rutiner för alla team.
Hur ska du förbereda dig? Vi frågade Torc-ingenjörer vilka mjukvarukunskaper och erfarenheter som hjälpte dem att bli framgångsrika i sin specialitet i vårt AV-team.
C++ är ett prestationsorienterat språk som låter dig "pop the hood" och nå djupt ner i minneshantering.
Om en kandidat har gedigna kunskaper i C++ och Robotic Operating System (ROS), så är de redan en robotingenjör. För att kunna vara en kart- och lokaliseringsingenjör behöver de gå ett steg längre och förstå allmänna koordinattransformationer &3D-geometri. Om en kandidat har arbetat med Simultaneous Localization and Mapping (SLAM) så passar de utmärkt för denna roll.
DevOps-teamet kräver färdigheter i att förena mjukvaruutveckling och systemadministration. Vi använder dessa färdigheter på Torc för att hantera distributioner av programvara för fordonsberäkning. Att korrekt administrera och hantera Linux-datorer är också en viktig färdighet för att automatisera och göra våra system robusta.
Vi använder ganska komplexa nätverk på våra fordon. Att kunna utforma bra nätverksdesigner och felsöka komplexa designs är avgörande för vårt arbete.
De typiska teknikerna som en DevOps-teammedlem skulle använda för att göra en process automatisk/repeterbar är Config Management och Continuous Integration pipelines. Istället för att låta en utvecklare skriva programvara, kompilera den manuellt och sedan manuellt kopiera den till en dator (och sedan konfigurera den manuellt), använder vi automatisering för att säkerställa att programvaran byggs, installeras och konfigureras med så liten risk för mänskliga fel. som möjligt.
Inom hårdvarudesignområdet är den mest användbara programvaran att känna till olika datorstödd design (CAD) och simuleringspaket. Dessa används dagligen för att skapa hårdvaran som gör att denna teknik fungerar. De mest användbara kodningsspråken skulle vara Python och MATLAB. Hårdvarufokus handlar mindre om realtidskodeffektivitet och mer om datamanipulation och visualisering.
C++ är ett kompilerat programmeringsspråk som stöder både objektorienterad programmering och minnesmanipulation på låg nivå. Torc använder C++ för att driva autonomi eftersom välskriven C++-kod är extremt snabb och utbyggbar.
En kandidat bör också vara bekant med kodningsstandarder. Industriella kodningsstandarder förbjuder vissa kodningsmetoder som kan resultera i potentiellt osäkra buggar vid körning. Genom att upprätthålla dessa begränsningar görs koden mer säker, bärbar och tillförlitlig. MISRA-kodningsstandarder är öppna och även om dokumentationen är tät kan nyckelidéer läras in ganska enkelt.
Självkörande beteenden spelar en viktig roll i beslutsfattande på hög nivå om hur fordonet ska bete sig på vägarna med tanke på att det finns flera andra enheter som bilar, fotgängare och cyklar. För att hantera dessa olika entiteter och utveckla nödvändiga säkerhetsalgoritmer behöver man ha en god förståelse för hur kinematik och dynamik hos ett fordon påverkar dess manövrerbarhet på vägen. Det roliga med att arbeta på Torc är att ditt arbete aldrig är begränsat till bara en komponent. Du får arbeta med andra komponenter som fordonsgränssnitt, som styr bilens ställdon. På grund av detta varierande arbete är det bra att ha förståelse för styralgoritmer, samt erfarenhet av att utveckla och ställa in styrslingor.
Med allt detta sagt, en fråga som ofta ställs är "Var kan jag lära mig om den här tekniken?" Det finns ett stort antal simulatorer tillgängliga där ute som du kan leka med. Det är alltid roligt att utforska något nytt och du får en annan typ av tillfredsställelse när bilen kör i simulatorn som du vill att den ska köra. Praktisk erfarenhet och att utveckla några kontrollalgoritmer eller självkörande beteenden med sådana simulatorer är en bra början. Ta också kontakt med dina kamrater som är intresserade av självkörande bilar. av personlig erfarenhet skulle jag säga att att arbeta i gruppprojekt och lära av andra hjälper mycket när det gäller att förstå ny teknik.
—
Kom tillbaka snart för del tre där Torc-ingenjörer kommer att dela med sig av de personliga färdigheter som de fann vara lika värdefulla som kodning och jämföra sina förväntningar på jobbet med verkligheten.
Söker du jobb inom området självkörande fordon? Torc är ett av de mest erfarna autonoma mjukvaruföretagen och vi utökar vårt team för att revolutionera transporter. Se vår karriärsida för mer information och håll ögonen öppna för del tre!