Vi byggde om parkeringsgaragets nummerplåtsläsare till ett geststyrt passersystem byggt på ansiktsigenkänning.
Ladda ner artikeln här (länk, pdf). Fler tekniska rapporter finns på etn.se/expert |
I Hasselt i Belgien finns parkeringsgaraget Q-Park. Vid grinden läses fordonets registreringsskylt med kamera och skrivs in i magnetremsan på en biljett som föraren drar genom en läsare. Data lagras på en server, eventuellt i molnet. Fordonet parkeras och passagerarna gör sina affärer och springer sina ärenden.
Betalningen sker vid utcheckningen i en maskin i parkeringsgaraget eller på ett hotell intill om besökarna övernattar där. Föraren återvänder till fordonet och kör mot utgången. Grinden öppnas automatiskt efter att en annan kamera läst och jämfört registreringsskylten med lagrade data. Konceptet är smidigt genom att det eliminerar behovet av att veva ned fönstret. Om du bor på partnerhotellet slipper du dessutom stå vid en betalautomat.
I korthet består systemet av två fasta kameror, en nummerskyltläsningsalgoritm, molndatabas och styrsystem för grindbommarna.
Från denna nummerplåtsläsare byggde vi ett system för ansiktsigenkänning. Systemet består av kamera med ansiktsigenkänningsalgoritm och en geststyrd kamera med motor som vrider kameran.
Angreppssättet är typiskt för Rutronik när ett system ska bestå av delsystem från flera olika tillverkare och partners: ge kunden ett proof-of-concept för en förstudie genom att modifiera ett befintligt system.
Rutronik använde också ett annat av sina trumfkort – synergier. Uppdraget att definiera komponenter och fördela arbetsuppgifter gick till specialister från olika avdelningar: kraft, mikrostyrkort, analogt & sensorer, trådlöst, inbyggda system, mekanik och passivt. Samarbetet mellan olika avdelningar sparar tid och gör det möjligt att ta fram och visa upp ett övergripande koncept. Allt i överensstämmelse med Thomas Rudels klassiska slogan: ”allt från en och samma källa”
Funktionell beskrivning av demonstrator och tillämpningar
Här är funktionsspecifikationen. Högst tre personer står bredvid varandra framför en kamera. En stegmotor riktar kameran mot personerna i tur och ordning och fotograferar dem. Bilderna lagras identifierade med nummer eller namn.
Stegmotorn styrs med en högspänningsstyrenhet som får instruktioner från en gestsensor. I en andra omgång fotografering byter deltagarna plats – för att verifiera att de verkligen kan identifieras med hjälp bildsensortillverkarens algoritm, som heter Okao Vision.
Tillämpningen för ovannämnda system är passerkontroll inom ett företagsområde. I en databas, eventuellt på en molnserver, finns bilder av de anställda, som var och en är associerad till lämpliga behörigheter baserat på arbetsuppgift. Genom att jämföra livekamerabilden med databasen kan de anställda ges tillgång till parkeringsplatser, byggnader, områden eller andra interna zoner.
Personer som inte är anställda släpps inte in utan att registrera sig i receptionen eller via ett intercomsystem. Besökare kan ges rättigheter att röra sig inom vissa zoner. Regelbundna besökare kan lagras i databasen för att slippa registrera sig, om de i förväg godkänts av en kontakt för schemalagda besök.
För anställda kan systemet dessutom fungera som elektronisk stämpelklocka och på så sätt eliminera behovet av gammaldags system som brickor, kort eller ID. Systemet skulle fungera lika bra sjukhus och andra allmänna institutioner, som på företag.
Istället för en tillämpning med geststyrda kameror skulle man kunna bygga helt andra typer av system på samma komponenter. Exempelvis system som exempel vrider upp och ner ett blad med hjälp av geststyrning eller någon annan sensorteknik. Syftet skulle kunna vara att vinkla backspeglarna på en bil eller för att reglera luftintaget i ett fordon. Många andra tillämpningar är tänkbara på de grundläggande principer som denna demonstrator utnyttjar.
Demonstratorns konstruktion och komponenter
Demonstratorn består av TDK:s högspänningsstyrenhet HVC 4223F, stegmotorn 14HS17-0504S, Vishays närhets- och omgivningsljusgivare VCNL4035X01, ett STM32F4-kort och Omrons kameramodul och bildsensor HVC-P2.
Systemkonceptet hålls medvetet enkelt. Det konstrueras närmast uteslutande från utvärderingssatser för att säkerställa reproducerbarhet. På det lilla demonstrationskortet SDB-I från TDK-Micronas sitter motorstyrenheten HVC 4223F. Geststyrenheten använder ett VCNL4035X01-GES-SB-kort, ett Nucleo-kort från STM med en STM32F4-mikrostyrkrets och utvecklingssatsen B5T-007001-020 bestående av kamerahuvud och moderkort. Se figur 1.
Gestsensor från Vishay, VCNL4035X01
Nämnda potentiella tillämpningar baseras på motordrivning för inriktning av kamera eller blad, i detta fall med styrning via gestsensor. Den optiska sensorn hämtas från Vishay och heter VCNL4035X01. Det är en kompakt multifunktionell sensor med måtten 4,0 × 2,36 × 0,75 mm. Se figur 2.
Följande finns integrerat: en närhets- och omgivningsljusgivare, multiplexer, två 16-bitars AD-omvandlare, ett IC-gränssnitt, ett programmerbart interrupt för närhets- och omgivningsljusgivaren samt en strömbrytare (”power on” och ”shutdown”). Sensorn saknar integrerad IR-emitter men har däremot en drivrutin som möjliggör anslutning av tre externa sådana. Bland mjukvaran som inkluderas med Vishays gestsensorskort finns en detekteringsalgoritm och program för visning av mätdata. Dessutom kan vissa parametrar justeras via mjukvara.
TDK-Micronas motorstyrenhet HVC 4223F
TDK:s motorstyrenhet HVC 4223F (som marknadsförs under varumärket Micronas) saknar I2C-gränssnitt i hårdvara, men den har en ARM Cortex M3 med tillräckligt prestanda för att kunna emulera signalerna från Nucleokortet på en av de 11 LGPIO-stiften. Vår konstruktion använder de två första fria stiften, LGPIO3 och LGPIO4. Se tabell 1 och figur 6.
HVC 4223F utmärker sig genom sin optimerade integrering, med komponenterna samlade i en kompakt QFN40-kapsel (6,0 × 6,0 mm). Den är avsedd för smarta aktuatorlösningar, med såväl borstade likströmsmotorer som borstlösa likströms- och stegmotorer. Dess integrerade halvbryggor, spänningskälla för riktad anslutning till batterispänning, LIN-gränssnitt och 32kB flash möjliggör integration samtidigt som behovet av externa moduler till stor del elimineras. För att styra den bipolära stegmotorn i vår exempelapplikation användes fyra av de sex tillgängliga n/n-kanaliga FET-halvbryggorna. Se figur 7.
HVC 4223F har hårdvarustöd för styrning av en bipolär stegmotor via ström eller spänning. När strömstyrning används jämförs den uppmätta fasströmmen mot ett fördefinierat tröskelvärde från en programmerbar 8-bitars DAC. När detta värde överskrids, inaktiverar en komparator i den förbättrade EPWM-modulen automatiskt motsvarande MOUTx-utgång tills den faller under det definierade normala driftsvärdet igen.
För diagnostiska funktioner finns integrerade monitorer för överspänning, överström och övertemperatur. Chipet kan anslutas direkt till ett bilbatteri på 12–18 V och har dessutom ett LIN-gränssnitt (LIN 2.2) för direkt kommunikation med omvärlden. En 32-bitars ARM Cortex M3-processor med 32 kbit flashminne ger tillräckligt med datorkraft för att stödja även komplexa algoritmer för styrning av synkronmotorer med permanentmagnet eller andra enheter. TDK-Micronas rekommenderar utvecklingsmiljön Keil MDK-ARM v5.14, som är licensfri för minne upp till 32 kbit. Se figur 8.
TDK-Micronas bjuder på programkod och -bibliotek för motorstyrning, LIN-gränssnitt och andra generella tillämpningar. Om det så småningom blir aktuellt att utveckla skarpa projekt, kan TDK-Micronas via en systemleverantör erbjuda A-Spice-kompatibel firmware som uppfyller funktionella säkerhetskritiska krav. Se källkodsexempel 1.
Sammanfattningsvis är HVC 4223F en mångsidig motorstyrenhet för diverse små smarta elektriska ställdon. Med sin ARM Cortex M3-processor erbjuder den tillräckligt med prestanda för att implementera även komplexa motorstyralgoritmer. Den integrerar en komplett uppsättning funktioner för styrning av BLDC- och stegmotorer vilket minskar utvecklingstiden och därmed också utvecklingskostnaderna. Den reducerar även arbetsvolymen avsevärt vid eventuell anpassning av konstruktionen till en ny tillämpning, när väl konstruktören fått stifta bekantskap med kretsen. TDK-Micronas ger stöd till användare i form av bibliotek och källkod och förmedlar kontakt med en systemleverantör som utvecklat produktionsprogramvara och firmware för HVC 4223F-modulen.
I vår demonstrator är motorstyrenheten kopplad till en bipolär stegmotor (14HS17-0504S, se tabell 2) som roterar en kamera.
Bildsensor från Omron: B5T-007001-020
En bildsensor för ansiktsigenkänning (Omron B5T-007001-020) är ansluten till stegmotorn via en axel som kan vridas 30° med- eller moturs. Sensormodulpaketet B5T HVC-P2 omfattar en kamera på 1600 × 1200 punkter kopplad via bandkabel till ett moderkort. Se figur 9.
Omrons teknik för datorseende (OKAO Vision) är grunden för ett antal klassificeringsfunktioner: ansiktsigenkänning, människokroppsdetektering, könsbedömning, åldersuppskattning, ögonföljning, blinkningstrigger och handidentifiering. En av funktionerna tolkar fem ansiktsuttryck: neutral, glad, förvånad, arg och ledsen. Du kan välja mellan två bildformat: 160 × 120 pixlar, 320 × 240 pixlar – eller ingen bild alls. Satsen finns med olika kamerahuvud för filmning i vidvinkel och på långt avstånd. Se figur 10.
Anmärkningar angående positionsåterkopplingen från motordrivrutinen
Här följer en anmärkning gällande demonstratorn. Det finns ingen positionsåterkoppling, så mikrokontrollern vet inte i vilket läge motorn är när strömmen slås på. Därför justeras motorn eller kameran manuellt vid uppstart. Beteendet gäller motorstyrenheten. Vid start antas att motorn (eller kameran) är i mittläge. Från detta läge (0°) kan kameran flyttas till vänster (–30°) och därifrån endast till höger, till mittläget (0°). Från detta läge kan kameran flyttas till höger (+30°) och därifrån kan den flyttas tillbaka till mittläget (0°).
Det går att göra positionsåterkoppling genom att låta motorn utföra kalibreringssvep efter start, med mekaniska gränspunkter. Blockeringsdetektering i programvara kan detektera en position som en gränsposition (+X). Ett mekaniskt gränsläge bör då fastställas för varje rotationsriktning. Lösningen ger en extra kostnad för mekanisk design och en mindre programjustering.
Alternativt finns en metod som utnyttjar sensorer. När motorn utfört ett kalibreringssvep vid start får en sensor detektera gränsläget. När du använder halleffektsensorer behöver du två stycken för att skapa gränspositioner för båda rotationsriktningarna. Lösningen ger extra kostnader för mekanisk design, infästning av magnet och sensorer, plus för ledningar och programjustering.
9090909
Överväganden kring geststyrningsalgoritmen
Som tidigare nämnts används VCNL4035X01-GES-SB-sensorkortet från Vishay, med tre VSMY2940GX01 IR-sändare anordnade i en triangel och med en VCNL4035X01-sensor på kortet. När inställningen för övre och undre gräns har triggat de undre respektive övre omkopplingsgränserna, anger en röd lysdiod om gestdetektering är aktiv. Se figur 3.
De tre sändarna styrs via en omkopplare för att det ska gå att detektera vilken IR-sändare det reflekterade ljuset kommer från. De utlöses i sekvens och motsvarande reflekterade signaler mäts vid närhetsgivaren.
En gest som sveper från höger till vänster orsakar att en händelse (ett objekt) detekteras om den detekterade signalen från IR-sändaren PS2 faller inom de definierade gränserna (parametrarna övre/undre). Då händer följande:
• Det detekterade värdet lagras i en variabel
• IR-emitter PS2 inaktiveras och IR-emitter PS1 pulsas
• Det detekterade värdet lagras i en annan variabel
• IR-emitter PS1 inaktiveras
• Processen upprepas
En skräddarsydd algoritm används för att tolka om gesten går från höger till vänster eller tvärtom. Algoritmen vi använder är ”insertion sort”. En rörelse från höger till vänster orsakar ett toppvärde först från IR-emitter PS2 och därefter från IR-emitter PS1. Om man observerar hur värdena från det två sändarna utvecklas över tid, noterar man värdet från IR-emitter PS2 kontinuerligt ökar till ett maxvärde och därefter övergår till en kontinuerlig minskning. Värdet från IR-emitter PS2 är däremot konstant till att börja med, och övergår därefter till en kontinuerlig ökning. När PS2 nått sitt toppvärde övergår den till en kontinuerlig minskning.
Algoritmen jämför de uppmätta värdena för att avgöra om de uppmätta signalerna från IR-sändarna ökar kontinuerligt, det vill säga om XPS2n > XPS2n-1.
Om de ökar kontinuerligt jämförs värdet mot värdet från den andra IR-sändaren med hjälp av en subtraktion. Om XPS2n < XPS2n-1, så jämförs det föregående värdet (XPS2n-1) med avläsningen från den andra IR-sändaren. Om efterföljande mätningar från IR-emitter PS2 bekräftar att värdet XPS2n-1, är större så har vi hittat ett maximum.
Om subtraktionen av värdena för de två IR-emittrarna alltid visar att IR-emitter PS2 är minuenden och IR-emitter PS1 subtrahenden, avgörs gestens riktning av ifall skillnaden är negativ eller positiv. En skillnad större än noll motsvarar en rörelse från höger till vänster och vice versa. Tidsstämplade variabler används. Ett tidsfönster på 300 ms och en samplingsfrekvens på 10 ms, definieras för geststyrningen. Det undre tröskelvärdet för att en händelse ska räknas som att ha inträffat, sätts till 50 mA. Detta innebär att en händelse endast anses ha inträffat på en viss höjd mellan objekt och sensor. Se figurer 4 och 5.
Gestsensorn ger inte direkt information om den upptäckta gesten, utan bara rådata som tolkas i en extern mikrokontroller med hjälp av en algoritm. Analysen utförs av det Nucleo-kort (STM32F401) som styr motorstyrenheten.