Robotsensorsimulator voor kalibratie en sensorfusie
Ontdek ruis, bias, drift, kwantisatie, uitvallen, filtering en fusie in een deterministische interactieve robotsensorsimulator.
- Categorie
- Sensoren
- Tijd
- 60–150 min
- Platform
- Browser · Microcontroller
01 / Begin hier
Inleiding
Robots handelen op metingen die vertraagd, bevooroordeeld, ruisachtig en onvolledig zijn. Dit project maakt die beperkingen zichtbaar. Vergelijk de werkelijke waarde, de ruwe samples en de gefilterde schatting; wijzig de bemonsteringsomstandigheden; en leer hoe kalibratie de verdere regeling beïnvloedt zonder een educatief model te verwarren met een specifieke sensor.
Live lab / Deterministic measurement model
Robot sensor simulator
Compare a known signal with noisy absolute readings and a filtered estimate. Change one error source at a time to see what calibration can—and cannot—fix.
The main plot compares solid truth, individual absolute-sensor samples, and the thicker dashed estimate. The lower band shows signed estimation error around zero; gaps mark dropped absolute samples.
- Truth
- —
- Absolute
- —
- Estimate
- —
- Error
- —
- RMSE
- —
- Dropped
- 0
Keyboard: focus the plot, then use Space to run/pause, N to step, R to reset, and F for full screen.
Bediening
Kies een glad of getrapt werkelijk signaal en stel daarna bemonsteringsfrequentie, kwantisatie, willekeurige ruis, drift, bias, uitvallen en filtergeheugen in. Vergelijk de ruwe gegevens met schattingen op basis van een voortschrijdend gemiddelde, een laagdoorlaatfilter, een mediaanfilter en een complementair filter. Voorinstellingen maken ruisachtig, bevooroordeeld en onbetrouwbaar sensorgedrag reproduceerbaar.
Theorie
Elke sensor heeft een meetbereik, resolutie, nauwkeurigheid, bandbreedte, latentie en uitvalgedrag. De nauwkeurigheid in de datasheet beschrijft slechts een deel van het systeem; montage, temperatuur, ruis op de voeding, elektromagnetische interferentie en oppervlakteeigenschappen bepalen vaak de werkelijke uitkomst.
Fusie werkt wanneer sensoren aanvullende informatie leveren en hun onzekerheid eerlijk wordt weergegeven. Twee bevooroordeelde metingen combineren levert niet automatisch een werkelijke waarde op. Begin met kalibratie, tijdstempels, coördinatenstelsels en controles op gegevenskwaliteit.
Algoritme
- Zet op elke sample een tijdstempel en controleer bij de binnenkomst van de meting of de waarde binnen het meetbereik valt.
- Reken ruwe eenheden om met de kalibratieschaal, de offset en de asuitlijning.
- Verwerp onmogelijke sprongen of markeer ze als ongeldig in plaats van gegevens te verzinnen.
- Pas het lichtste filter toe dat aan de ruisvereiste van de rest van het systeem voldoet.
- Transformeer metingen naar een gemeenschappelijk stelsel en fuseer ze op basis van bekende onzekerheid.
- Log ruwe en verwerkte waarden, zodat storingen reproduceerbaar blijven.
Broncode
Een exponentieel laagdoorlaatfilter is nuttig wanneer de tijdconstante bewust is gekozen:
class LowPass:
def __init__(self, alpha):
self.alpha = alpha
self.value = None
def update(self, sample):
if self.value is None:
self.value = sample
else:
self.value += self.alpha * (sample - self.value)
return self.value
Leg de ruwe sample naast het gefilterde resultaat vast. Anders kan een aantrekkelijke grafiek afknijpen, uitvallen en kalibratiefouten verhullen.
Aannames en hardwareverschillen
Dit lab is een educatief signaalmodel, geen datasheet van een specifieke sensor. Ruis is vooraf gezaaid als Gaussisch of uniform, met een draaiknop die je in jouw hand hebt; een echte IMU- of ToF-sensor voegt temperatuurafhankelijke bias, niet-Gaussische pieken en jitter in de bus-timing toe, die dit model vereenvoudigt. De bemonstering is hier volkomen periodiek, maar op een microcontroller maken looptiming en interruptlatentie tijdstempels essentieel — en daarom vergelijkt elke verwerkingsstand in de bediening de werkelijke waarde, de ruwe samples en de schatting samen. Filtering ziet er op een grafiek aantrekkelijk uit, maar elke extra gladheid voegt vertraging toe die op hardware later als regelvertraging opduikt; dezelfde afweging staat in de tutorial over sensorruis.
Schakelschema
Controleer de busspanning, de eisen aan pull-ups, de adressen en de maximale kabellengte voordat je meerdere sensoren aansluit.
Begeleide experimenten
De draaiknoppen in dit lab bestaan om elke sensorfout bewust op te wekken en te zien welk gereedschap hem verhelpt. Eén keer zo’n test uitvoeren is meer waard dan een hele bibliotheek lezen.
1. Bewijs dat filteren een bias niet kan verhelpen
Zet de ruis op nul en de bias op een duidelijke offset. Probeer nu om de beurt elk filter — voortschrijdend gemiddelde, laagdoorlaat, mediaan. Geen van alle verplaatsen de schatting naar de werkelijke waarde, want ze dempen alle drie de variatie en een bias varieert niet.
Zet daarna de bias op nul en de ruis hoog en zie dezelfde filters goed werken. Dit is het belangrijkste onderscheid in sensorwerk: ruis, bias en drift lijken op elkaar in een grafiek en vergen drie verschillende oplossingen, en meer filtering geneest nooit een bias.
2. Zie een gemiddelde een piek uitsmeren die een mediaan verwerpt
Zet uitvallen of pieken aan en vergelijk een voortschrijdend gemiddelde met een mediaan over hetzelfde venster.
| Filter | Wat één afwijkende waarde doet |
|---|---|
| Voortschrijdend gemiddelde over 5 | Verschuift de schatting voor vijf opeenvolgende samples |
| Mediaan van 5 | Draagt helemaal niets bij |
Ruis van ultrasone en time-of-flight-sensoren is niet Gaussisch — het bestaat uit sporadische wilde waarden bovenop een verder stabiel signaal. Dat is precies het geval waarop een gemiddelde het slechtst presteert.
3. Meet wat de vertraging je kost
Schakel over op het getrapte werkelijke signaal en verlaag de alpha van het filter (of verleng het
venster). De schatting wordt gladder en komt later beschikbaar. Lees de vertraging bij elke
instelling op de grafiek af:
| Filterinstelling | Typische vertraging | Bij 0,3 m/s is dat |
|---|---|---|
| Mediaan van 3 | ~1 sample | 3 mm |
| Voortschrijdend gemiddelde over 10 | ~4,5 samples | 14 mm |
| Laagdoorlaat, α = 0,1 | ~9 samples | 27 mm |
| Laagdoorlaat, α = 0,02 | ~49 samples | 147 mm |
De laatste rij levert een prachtig glad spoor op en stuurt een robot naar waar het obstakel 15 cm geleden stond. Controleer de vertraging altijd in eenheden die voor de robot betekenis hebben, niet in samples — dit is de meest voorkomende manier waarop een goedbedoeld filter een robot slechter maakt.
4. Zie wat fusie wel en niet kan
Maak één bron ruisachtig maar onbevooroordeeld en de andere glad maar driftend, en zie hoe de complementaire schatting het goede deel van elk overneemt. Geef daarna beide bronnen dezelfde bias en zie de gefusieerde schatting die exact overnemen.
Fusie benut onderling onafhankelijke fouten. Een common-mode-fout (een fout die alle sensoren op dezelfde manier treft) blijft ongemoeid, en daarom komt kalibratie vóór fusie en niet erna.
Wat je moet zien
| Configuratie | Ruw | Beste filter | Waarom |
|---|---|---|---|
| Gaussische ruis, geen bias | Verdeelt symmetrisch om de werkelijke waarde | Voortschrijdend gemiddelde of laagdoorlaatfilter | Ruis middelt naar de werkelijke waarde |
| Sporadische pieken | Vrijwel goed, zelden wilde waarden | Mediaan | Verwerpt afwijkers volledig |
| Constante offset | Strak maar fout | Geen — kalibreer | Filtering kan de offset niet zien |
| Langzame drift | Start goed, loopt weg | Geen — herbereken of fuseer | Heeft een absolute referentie nodig |
| Uitvallen | Gaten | Mediaan, plus de laatste goede waarde vasthouden | Een verzonnen waarde is erger dan een gemarkeerd gat |
| Gekwantiseerd | Landt op discrete stappen | Geen — dit is jouw resolutie | Tussen stappen filteren voegt vertraging toe, geen informatie |
Naar de hardware
| Dit lab | Een echte sensor |
|---|---|
| De bemonstering is volkomen periodiek | Looptiming en interruptlatentie maken tijdstempels essentieel |
| Ruis is vooraf gezaaid als Gaussisch of uniform | Niet-Gaussische pieken, en bias die meebeweegt met de temperatuur |
| De werkelijke waarde is beschikbaar ter vergelijking | Je hebt geen werkelijke waarde — en daarom kalibreert je tegen een bekende invoer |
| Uitvallen zijn expliciet | Een uitval kan eruitzien als een plausibele waarde |
| Eén sensor tegelijk | Meerdere bussen, meerdere bemonsteringsfrequenties en uitlijnproblemen ertussen |
De praktische procedure voor een echte sensor is kort: houd hem stil tegen een bekende invoer, log enkele duizenden samples met tijdstempels en teken zowel de tijdreeks als een histogram. Het histogram is het deel dat mensen overslaan en het meest informatieve — Gaussische ruis vormt een klokvorm, afwijkers vormen een klok met een paar punten ver in de staarten, en die twee hebben verschillende filters nodig. De volledige methode staat in sensorruis, bias en filtering.
Hardwarechecklist
Componenten
- Microcontroller of single-boardcomputer
- Eén of meer digitale of analoge sensoren
- Bekende kalibratiereferenties
- Stabiele, geregelde voeding en de juiste logische niveaus
- Logverbinding voor reproduceerbare experimenten
Verken de graaf
Waar deze simulator wordt gebruikt
De projecten, leerroutes en tutorials die op dit lab voortbouwen.
Verder bouwen
Hulpmiddelen downloaden
Gebruik deze naslag op de pagina terwijl je het project doorwerkt. Downloadbare projectpakketten komen er pas bij nadat hun broncode en versie zijn gepubliceerd.
Veelgestelde vragen
Veelgestelde vragen
Is een gladder signaal altijd een beter signaal?
Nee. Sterke filtering kan nuttige beweging verwijderen en vertraging introduceren. Kies een filter op basis van het ruispectrum, de vereiste reactietijd en de beslissingen die de meting gebruiken.
Wat is het verschil tussen bias en ruis?
Bias is een reproduceerbare offset ten opzichte van de werkelijke waarde, terwijl ruis tussen samples varieert. Kalibratie kan de bias schatten; middelen of filteren kunnen willekeurige ruis verminderen, maar een onbekende bias niet betrouwbaar verwijderen.
Wat is sensordrift en hoe verschilt het van bias?
Bias is een vaste offset die je één keer meet en aftrekt. Drift is een langzame verandering van die offset in de tijd, meestal door temperatuur of veroudering van componenten, waardoor een kalibratie die bij het opstarten is gemaakt langzaam niet meer met de werkelijkheid overeenkomt. Drift is de reden waarom langdurige metingen periodiek opnieuw gekalibreerd moeten worden of een referentie nodig hebben waartegen de schatter kan corrigeren.
Welk filter moet ik gebruiken: voortschrijdend gemiddelde, laagdoorlaat of mediaan?
Een voortschrijdend gemiddelde en een exponentieel laagdoorlaatfilter dempen allebei Gaussische ruis en ruilen daarbij reactiesnelheid in voor gladheid via hun venster of tijdconstante. Een mediaanfilter is beter in het verwijderen van sporadische pieken en uitvallen, omdat enkele slechte samples de middelste waarde niet verplaatsen. Kies het lichtste filter dat aan de vereiste van de rest van het systeem voldoet, in plaats van het er het gladst uitziende.
Hoeveel vertraging voegt filtering toe?
Elk gladheidsfilter loopt achter op het werkelijke signaal, en meer gladheid betekent meer vertraging: een laagdoorlaatfilter met een lange tijdconstante verwerpt meer ruis, maar loopt verder achter op snelle veranderingen. Teken de gefilterde schatting altijd naast de ruwe samples en de werkelijke waarde, zodat de vertraging zichtbaar is voordat je erop vertrouwt in een regelkring.
Wat is sensorfusie en wanneer helpt het echt?
Fusie combineert meerdere sensoren tot één schatting, en het helpt alleen wanneer de sensoren aanvullende informatie leveren en hun onzekerheid eerlijk wordt weergegeven. Twee bevooroordeelde metingen combineren levert geen werkelijke waarde op. Een complementair filter vertrouwt bijvoorbeeld op de ene sensor bij hoge frequenties en op de andere bij lage frequenties; begin met kalibratie, tijdstempels en coördinatenstelsels voordat je gaat fuseren.
Waarom moet elke sample een tijdstempel hebben?
Samples komen zelden met een volkomen vast interval binnen, en fusie en filtering nemen aan dat je weet wanneer elke waarde is gemeten. Tijdstempels laten je jitter detecteren, gegevens van verschillende sensoren uitlijnen en verouderde metingen verwerpen. Door ruwe waarden naast verwerkte waarden te loggen blijven storingen zoals afknijpen, uitvallen en kalibratiefouten reproduceerbaar.
Verder lezen
Bronnen
Gezaghebbende bronnen om dieper te gaan dan het afgebakende leermodel van deze simulator.