Beräkningsalternativ för robotik

Profilbild

Robotarkitektur och design har nu expanderat till att omfatta många olika funktioner och kapaciteter. Detta har en påtaglig inverkan på processorkraften och vad som används för att leverera den. I en skyddsbur med kontrollerad miljö kräver en produktionsrobot relativt få säkerhetsåtgärder och kan använda enklare strategier för procedurstyrning.

Designers måste säkerställa att roboten omedelbart stoppar om buren öppnas eller om delar inte är inriktade som förväntat. Även om det finns säkerhetsproblem kan många av dem lösas med enkla hårdvarulås snarare än att använda komplexa kombinationer av bildsensorer och programvara. De viktigaste bearbetningskraven är att säkerställa effektiv och precis rörelsekontroll. För att uppnå detta krävs framför allt användning av mikrokontroller eller digitala signalprocessorer för att reglera strömmen till motorer och andra manöverdon.

Utvecklingen av mikrokontrollenheter

Konventionella konstruktioner av produktionsrobotar har en tendens att ha begränsad flexibilitet. Varje program måste programmeras, simuleras och genomgå omfattande tester innan roboten får fortsätta. Inom tillverkning vill användarna att robotar ska vara mer flexibla så att de snabbt kan anpassas till olika uppgifter. De behöver även ha förmågan att förflytta sig på produktionsgolvet, vilket innebär att de måste fungera utanför skyddsburen. Dessa krav innebär att det krävs en större processorkraft för att möjliggöra att roboten kan navigera utan att oavsiktligt kollidera med objekt eller riskera att skada personer i närheten.

Följaktligen måste robotar kunna behandla indata från sensorer i realtid och fatta intelligenta beslut på plats när omständigheterna förändras. Ju längre robotar rör sig bort från säkerhetsburen och desto mer de interagerar med människor, desto större blir behovet av processorkraft när de navigerar bortom den relativt kontrollerade miljön på verkstadsgolvet. Servicerobotar och leveransdrönare måste kunna reagera intelligent i komplexa situationer.

ARM Cortex-M-familjen av processorer utgör kärnan i många produkter med mikrokontroller.

I mer avancerade scenarier finns det en uppenbar efterfrågan på ökad sofistikering av programvara, vilket är direkt kopplat till genomströmning av beräkningskretsar. Designern har många valmöjligheter när det kommer till hur man tillhandahåller den krävda processorkraften, inte bara när det gäller leverantörer, utan även den övergripande arkitekturen.

Användning av mikrokontroller

Mikrokontrollerenheten (MCU) har under många år varit det beräkningselement som valts ut för enkla robotar. Kärnan i MCU är mikroprocessorn. Ursprungligen var mikroprocessorkärnorna i MCU:er optimerade för enkel aritmetik och logisk nivåkontroll. Men sedan de först introducerades för nästan 50 år sedan har prestanda och datahanteringsförmåga förbättrats dramatiskt. Idag erbjuds mikroprocessorkärnor som naturligt stöder 32-bitars dataord och inkluderar prestandafunktioner som pipelining och Harvard-arkitektur till en prisnivå som gör att även enkla system kan utnyttja dem.

I en typisk 32-bitars mikroprocessorkärna, t.ex. ARM Cortex-M3, finns en instruktionspipeline som separerar körningen av kommandon i ett antal faser. I M3-pipelinen hämtas först instruktionen från en lokal cache. Om instruktionen inte finns i cachen måste den först laddas från huvudminnet. I pipelinen avkodas instruktionens byte för att fastställa vilka funktionella enheter som måste aktiveras för att utföra instruktionen. Slutligen utförs den.

Hantering av pipelining och avbrott

Pipelining används för att dölja effekter som minneslatens. Det möjliggör utförande av flera instruktioner i överlappning och bidrar till att öka klockfrekvensen eftersom det krävs färre logiska steg per klockcykel. Snabbare processorkärnor använder mer omfattande pipelines som kan vara tio steg långa eller mer. Nackdelen med långa pipelines är hög förgreningslatens. Om en förgrening uppstår tar det tid att fylla på pipelinen med de instruktioner som krävs för den nya förgreningen.

Stöd för avbrott tillåter processorkärnan att tillfälligt avbryta körningen av programmet och hantera andra uppgifter. Avbrottshantering är en nyckelkomponent för applikationer som behöver realtidssvar på händelser. Utan avbrottshantering skulle programkoden behöva innehålla loopar som ständigt letar efter information om externa händelser, vilket skulle vara betydligt mindre effektivt och mer krävande när det gäller beräkningskapacitet.

Mikroprocessorer för robotkonstruktörer

Ett prioriteringsschema som används av de flesta processorkärnor gör det möjligt att ignorera avbrott från mindre viktig kringutrustning medan processorn hanterar kritiska rutiner, t.ex. att överföra kontrollen från en uppgift till en annan eller hantera viktig indata från ett kritiskt avbrott. Resultatet är en mycket flexibel arkitektur som kan hantera en mängd olika typer av realtidsapplikationer.

En viktig och specialiserad variant av mikroprocessorer för robotkonstruktörer är den digitala signalprocessorn (DSP). Det är en processorkärna som inkluderar instruktioner och hårdvara för exekvering som är optimerade för signalbehandlingsalgoritmer, t.ex. filter och snabb fouriertransform. Exempel på sådana instruktioner inkluderar snabba kombinerade multiplikations- och additionsoperationer, vilka återfinns i nästan alla DSP-algoritmer. Eftersom DSP-kod ofta bearbetar datastrukturer som matriser och vektorer är det relativt enkelt att parallellisera arbetet. Detta har resulterat i implementeringen av exekveringsenheter för enkla instruktioner av sammansatta datamängder (SIMD), som kan utföra samma operationer, till exempel multiplikation och addition, på flera element i en matris samtidigt. Resultatet är en betydligt högre prestanda med en relativt liten extra komplexitet eller kostnad.

En MCU inkluderar olika integrerad kringutrustning arrangerade runt processorkärnan. I en industriell eller robotorienterad MCU inkluderar vanligtvis kringutrustningen från minnesmatriser och avancerade timer-utlösarenheter. Dessa enheter används för att avlasta mikroprocessorn från pulsbreddsmodulering (PWM). PWM är en central komponent i nästan alla motorstyrningsstrategier och har därför en betydande roll i robotdesign. Andra system-on-chip-enheter (SoC) tillför fler funktioner runt en MCU, t.ex. trådlösa transceiver, dedikerad kryptering och autentiseringslogik och grafikacceleratorer.

Styrning och hårdvara

Användningen av intelligent kringutrustning exemplifierar även en allt viktigare designprincip för robotar: att dra nytta av distribuerad kontroll och hårdvaruacceleration. En mikroprocessor kan användas för att implementera PWM-styrning, men det är ofta en dålig resursfördelning. Roten till problemet är att programvaran upprepade gånger måste växla ström mellan transistorer i en halvbrygga som reglerar strömflödet till en motor enligt förprogrammerade intervaller. Avbrott som genereras av en realtidsklocka eller en räknare kan enkelt utlösa hanterare som växlar strömtillstånd och sedan konfigurerar timern för nästa cykel. Men detta leder till en hög avbrottsfrekvens för en operation som i grunden är mycket enkel.

En PWM-styrenhet kombinerar en timer med växlingslogik, vilket eliminerar behovet av att avbryta mikroprocessorkärnan för varje växlingsoperation. Programvaran behöver bara uppdatera timern regelbundet för att ställa in den PWM-driftcykel som krävs. Genom att använda en relativt liten mängd extra logik som kan fungera oberoende av processorn under längre tidsperioder, förbättras programvarans effektivitet betydligt. Arkitekturen har ett gemensamt tema, med andra hårdvaru- och avlastningsmekanismer som kommer att bli allt viktigare inom robotdesign. Kringutrustning för hårdvara hanterar frekventa händelser i realtid, medan programvaran ställer in policyn för hur denna kringutrustning ska fungera.

Vid användning av kringutrustning för hårdvara är konstruktörerna begränsade av funktionerna som tillhandahålls av IC-leverantörer. Att införliva sekvenserare baserat på hårdvarutillståndsmaskiner ökar emellertid deras flexibilitet. Sådana sekvenserare kan till exempel läsa värden från en A/D-omvandlare, överföra datavärden till huvudminnet med hjälp av direkt minnesåtkomst (DMA) och ställa in och ladda om timers, allt utan att involvera CPU-kärnan. Men möjliga alternativ är fortfarande begränsade.

FPGA inom robotteknik

Fältprogrammerbar grindmatris (FPGA) ger ett sätt att skapa anpassad kringutrustning för hårdvara som kan optimeras för specifika robotstyrnings- och maskininlärningsfunktioner.

Kärnan i de flesta FPGA-arkitekturer är en programmerbar uppslagstabell som kan konfigureras för att implementera alla logiska funktioner som kan uttryckas som en sanningstabell. Genom att använda programmerbara växlar i interconnect-strukturen kopplas uppslagstabellerna samman för att bilda komplexa logiska kombinationskretsar. Normalt följs varje uppslagstabell av en eller flera register samt ytterligare stödlogik, som till exempel ingångar eller utgångar för “carry-chain”. Detta möjliggör en effektiv implementering av aritmetiska adderare. Dessa funktioner utgör tillsammans ett logiskt block som replikeras många gånger över FPGA.

En nackdel jämfört med helt anpassad logik är att deras kiseleffektivitet är mycket lägre. Det tar 10 till 20 gånger så mycket kiselarea för att rymma en logisk krets på ett FPGA-tyg jämfört med en anpassad implementering av standardcell.

De flesta FPGA:er stöder emellertid omprogrammering av logikmatrisen även i ett system som körs. Det möjliggör delning av resurser genom att acceleratorer endast laddas in dynamiskt i strukturen när de behövs. Det här tillvägagångssättet ger också ökad flexibilitet i slutdesignen, vilket gör att den kan stödja ny hårdvara och ytterligare funktioner.

FPGA uppslagstabell (LUT) är det som ger en FPGA dess flexibilitet.
FPGA LUT:er kopplas sedan samman genom en routingmatris för att uppnå önskad funktionalitet.

Sedan de introducerades på 1980-talet har FPGA:er fått andra funktioner som förbättrar den totala densiteten. Minnesblock tillåter skapandet av buffertar och cachelagring i närheten av den programmerbara logiken. Dessa har nyligen kompletterats med DSP-motorer. I många fall implementeras DSP-motorerna med en modulär metod, som består av 8-bitars eller 16-bitars enheter som kan kombineras för att stödja datatyper med högre precision.

DSP-enheter gör FPGA:er mycket lämpliga för att bearbeta indata från sensorer som genererar stora mängder data, t.ex. kameror, radar och andra typer av bildsensorer. En vanlig tillämpning är att använda en kombination av DSP-enheter och logiska acceleratorer för att behandla algoritmer som bildförvrängning och ljuskompensation. Dessa åtgärder ger mer konsekventa indata till maskininlärning och liknande funktioner. Dessa funktioner kan koordineras av anpassade mikroprocessorkärnor som implementeras i den programmerbara strukturen. Dessa mikroprocessorkärnor fungerar som mikrosekvenserare för de olika bearbetningsprimitiver.

Utnyttja GPU:er, VPU:er och multi-processing

Ett annat alternativ, särskilt för bildbehandlingsuppgifter, är att använda en grafikprocessorenhet (GPU) eller visionsbehandlingsenhet (VPU). Dessa innehåller högt parallelliserade DSP-motorer som är optimerade för bildbehandling. För robotar som kräver avancerad miljömedvetenhet kan man kombinera dedikerade enheter med flera processorer. Ibland integreras dessa komponenter på samma chip och detta kallas en heterogen flerkärnig SoC.

Användningen av flerprocessteknik kan även utnyttjas för att öka den övergripande tillförlitligheten och säkerheten. Ett problem som påverkar alla datorbaserade konstruktioner är deras beroende av minnesteknik som är känsliga för joniserande strålning. När joniserande strålning träffar kiselsubstratet på en integrerad krets (IC) utlöser den en kaskad av fria elektroner som kan omvända det logiska tillståndet hos en transistor. I kombinationskretstransistorer är effekten vanligtvis övergående och fångas endast sällan.

Men minnen och register är mer sårbara för sådana förändringar på grund av hur de återhämtar sitt innehåll för att förhindra att lagrad data läcker bort. Felkontroll- och korrigeringskoder (ECC) hjälper till att kontrollera problemet. Sannolikheten för en störning av en händelse ökar med minnestätheten, och detta blir ett ökande problem i takt med att dessa integrerade kretsar fortsätter att skala enligt Moores lag. ECC kan inte alltid upptäcka alla fel, vilket kan resultera i att ett program agerar på felaktiga data och i slutändan orsakar en kontrollfel. Detta får inte hända i en robot som interagerar med människor.

Redundansteknik och varierande processordesign

Redundansteknik hanterar problemet genom att låta enskilda processorer övervaka och verifiera varandras arbete.

Processorerna kan vara av samma typ och köra samma kod. Kontrollogiken jämför deras utdata och använder en röstningsmekanism för att avgöra vilken operation som ska godkännas eller om det krävs att operationerna körs om tills processorerna är överens.

Användningen av tre processorer med majoritetsomröstning är kostsammare men mindre påträngande, eftersom omkörning kan resultera i oönskade förseningar. Modulär redundans kan även implementeras på grindnivå.

Processorerna i ett redundant arrangemang behöver inte vara identiska. Vissa arkitekturer har en mindre presterande processor som fungerar som kontrollmotor. Istället för att köra samma programvara, utför den helt enkelt konsistenskontroller och tvingar fram omkörning om en kontroll misslyckas eller, i mer extrema fall, en fullständig återställning.

För att minimera risken för att systematiska designfel smyger sig in i ekvationen kan duplicerade processorer designas och implementeras på olika sätt. Detta är en teknik som används i vissa flerkärniga SoC som har utvecklats för bilsäkerhetssystem.

Arkitektoniska alternativ för robotdesign

Robotkonstruktörer kan välja från ett brett utbud av arkitektoniska alternativ som kan ta dem från enkla konstruktioner till mycket flexibla maskiner och som kan reagera intelligent på problem och hinder och fortsätta att fungera smidigt.

Total
0
Shares
Tidigare inlägg

Nästa generations utbildning: Hur AR och VR revolutionerar säkerheten

Nästa inlägg

Testa strömmen: En närmare titt på eltestprocedurer

Relaterade inlägg