Robotarmsimulator voor kinematica en ROS-planning
Ontdek gewrichtslimieten, voorwaartse kinematica, inverse kinematica en veilige bewegingsplanning in een browsergebaseerde robotarmsimulator.
- Categorie
- ROS
- Tijd
- 3–6 uur
- Platform
- Browser · ROS 2
01 / Begin hier
Inleiding
Robotarmen zetten commando's per gewricht om in precieze beweging van de grijper, met geometrie, terugkoppeling en planning. Deze simulator introduceert die keten zonder de moeilijke delen te verbergen. Hij toont coördinatenstelsels, bereikbare poses, gewrichtslimieten en singulariteiten, zodat ROS-gebruikers en robotica-studenten begrijpen waarom een gevraagde beweging wel of niet lukt.
Live lab / Forward & inverse kinematics · pick-and-place
Robot arm simulator
Pose the joints, drag a target and watch inverse kinematics solve it live, or set a pick-and-place task and run it — with honest reach, singularity, and limit reporting on a full 360° workspace.
The filled dot is the base at the centre; segments are links with round joints; the tool shows a small x/y frame. The shaded ring is the reachable workspace (between the two dashed circles). In inverse mode the cross-marker is the draggable target and the faint arm is the other elbow solution. In pick-and-place mode, drag the box (pick) and the dashed square (place), then press Run.
- Tool X
- 0 px
- Tool Y
- 0 px
- Tool angle
- 0°
- Status
- Reachable
- Reach
- 0 / 240 px
Keyboard: focus the workspace, then use Space to run a pick-and-place, R to reset, B to switch elbow, and F for full screen.
Bediening
De simulator biedt schuifregelaars voor de gewrichten, een versleepbaar doel voor de grijper, overlays van coördinatenstelsels en regelaars voor de koppellengtes, met de basis gecentreerd zodat het volledige bereik van 360° zichtbaar is. In voorwaartse stand berekent de simulator de pose van de grijper uit de gewrichtshoeken die je instelt. In inverse stand volgt hij een doel dat je versleept — hij berekent live de gewrichtshoeken en meldt onbereikbare of dubbelzinnige doelen in plaats van stilletjes naar een resultaat te springen. Een derde stand, pick-and-place, laat je een grijp- en een afzetpunt positioneren en voert de arm daarna de hele taak uit: hij beweegt naar het object, grijpt het, draagt het en laat het los in de afzetzone — de klassieke taak waarvoor elke echte manipulator is gebouwd.
Theorie
Elk gewricht draagt een transformatie tussen coördinatenstelsels bij. Die transformaties vanaf de basis tot aan de grijper met elkaar vermenigvuldigen levert de voorwaartse kinematische pose op. Inverse kinematica werkt de andere kant op en kan geen oplossing, één oplossing of meerdere oplossingen hebben.
Dicht bij een singulariteit kan een kleine beweging van de grijper een zeer grote gewrichtsbeweging vergen. Een planner moet daarnaast ook limieten voor positie, snelheid, versnelling, koppelmoment en botsing respecteren. Alleen geometrisch bereik maakt een traject nog niet veilig.
Algoritme
- Definieer koppellengtes, gewrichtsassen, hometransformaties en gewrichtslimieten.
- Bereken de voorwaartse kinematica voor de huidige gewrichtsstand.
- Vergelijk de huidige pose van de grijper met het gevraagde doel.
- Gebruik een analytische of numerieke solver om de posefout binnen de limieten te verkleinen.
- Verwerp botsende of singuliere kandidaten en kies een continue oplossing.
- Stuur het pad tijdgestuurd en geef gesynchroniseerde setpoints aan de gewrichtscontrollers.
Broncode
Een vlakke arm met twee koppels heeft een compact voorwaarts model:
from math import cos, sin
def forward_kinematics(theta_1, theta_2, link_1, link_2):
elbow = (link_1 * cos(theta_1), link_1 * sin(theta_1))
tool = (
elbow[0] + link_2 * cos(theta_1 + theta_2),
elbow[1] + link_2 * sin(theta_1 + theta_2),
)
return elbow, tool
Bij fysieke armen moet je elk gepland traject valideren in een begrensde, botsingsbewuste omgeving voordat je de actuatoren van stroom voorziet.
Aannames en hardwareverschillen
De arm is vlak met twee of drie draaibare gewrichten, volledig starre koppels, een onmiddellijke snelheidsrespons en geen zwaartekracht, dynamica of botsing — je kunt van elleboog omhoog naar elleboog omlaag zwaaien zonder limiet op het koppelmoment. Echte servo’s hebben positie- en snelheidslimieten, tandwielspeling, koppelmoment met stroombegrenzing en lastafhankelijke doorbuiging, en een arm met zes assen moet ook oriëntatie, singulariteiten en werken dicht bij de gewrichtslimieten beheersen. In dit lab leer je waarom een doel binnen de annulus twee oplossingen kan hebben en waarom een doel op de rand daarvan singulier is, voordat je de dynamica toevoegt die die poses lastig vasthoudbaar maakt.
Schakelschema
Scheid de stroomvoorziening met hoge stroom voor de actuatoren van de rekenvoorziening, en behoud daarbij de referentie- en veiligheidssignalen die de gekozen hardware vereist.
Begeleide experimenten
Een doel rond slepen is de snelste manier om intuïtie op te bouwen voor dingen die op papier omslachtig te bewijzen zijn en op hardware duur om te ontdekken.
1. Onderzoek de vorm van het werkbereik
Sleep het doel langzaam naar buiten tot de solver onbereikbaar meldt en traceer daarna die grens helemaal rond. Sleep het nu naar binnen, richting de basis.
Bij ongelijke koppellengtes vindt je twee grenzen: een buitenste cirkel op L1 + L2 en een
binnenste op |L1 − L2|. Het werkbereik is een annulus, geen schijf, en er zit een gat in het
midden dat de arm fysiek niet kan bereiken.
| Koppels | Buiten bereik | Binnen gat | Vorm |
|---|---|---|---|
| 100 + 90 | 190 | 10 | Annulus met een klein gat |
| 100 + 50 | 150 | 50 | Annulus met een groot gat |
| 100 + 100 | 200 | 0 | Een volledige schijf — gelijke koppels kunnen over elkaar heen vouwen |
Die laatste rij is een werkelijk nuttige ontwerpfact: gelijke koppellengtes nemen de dode zone volledig weg. Als jouw arm dicht bij zijn eigen basis moet werken, is dat de reden om ze te kiezen.
2. Zie de twee oplossingen samenlopen
Wissel bij een doel vlak bij het midden van het werkbereik tussen de takken elleboog omhoog en elleboog omlaag: twee duidelijk verschillende armposes die hetzelfde punt bereiken.
Sleep dat doel nu naar buiten richting de grens. De twee poses lopen samen en bij volledige strekking worden ze dezelfde pose. Dat is een singulariteit, en het is waar de arm het vermogen verliest, de grijper in één richting te bewegen, wat de gewrichten ook doen.
3. Ervaar wat een singulariteit kost
Sleep het doel langzaam en gestaag langs een rechte lijn die vlak langs de volledige strekking loopt. Kijk naar de gewrichtshoeken in plaats van naar de arm.
De grijper beweegt met constante snelheid; de gewrichten niet. Dicht bij de grens vergt een kleine beweging van de grijper een enorme gewrichtsbeweging, waardoor een vloeiend cartesiaan pad verandert in een geweldige gewrichtsbeweging. Op hardware is dat een servo die tegen zijn limiet slaat.
Houd geplande paden binnen ongeveer 95% van het maximale bereik, en dit probleem verdwijnt.
4. Steek een takgrens over en zie de omslag
Stel de solver zo in dat hij altijd elleboog omhoog kiest en sleep daarna het doel door een gebied waar die tak op een gewrichtslimiet stuit en de solver omschakelt. De arm slaat door in een grote, snelle, volledig ongeplande beweging.
Daarom is de juiste standaard minimale beweging — kies de tak die het dichtst bij de huidige pose ligt — en niet een vaste tak. Een stille takwissel halverwege het pad is op echte hardware verontrustend en kan beschadigend zijn.
Wat je moet zien
| Actie | Verwacht resultaat | Als je iets anders ziet |
|---|---|---|
Doel voorbij L1 + L2 |
Een zuiver “onbereikbaar” | Een NaN of een vastgesprongen pose betekent dat de solver te laat op bereikbaarheid toetst |
Doel binnen |L1 − L2| |
Ook onbereikbaar | Klopt — dit is het gat, geen fout |
| Doel achter de basis | Correct bereikt | Als het spiegelt, gebruikt je atan in plaats van atan2 |
| Wisselen van elleboogtak | Zelfde grijperpositie, andere gewrichten | Beide zijn geldig; kiezen is jouw beslissing |
| Slepen naar de grens | Gewrichtssnelheden lopen scherp op | Dit is de singulariteit |
| Heen en terug via FK en dan IK | De oorspronkelijke hoeken komen terug | Een afwijking betekent dat een teken- of offsetafspraak niet consistent is |
Naar de hardware
De geometria gaat exact over. Al het andere niet, en dat verschil is waar een eerste armbouw zijn tijd aan besteedt:
| Dit lab | Een echte servoarm |
|---|---|
| Gewrichten gaan precies waar ze gebood worden | Servonul is waar de servo-uitwijzer gemonteerd zit; sommige draaien de verkeerde kant op |
| Geen zwaartekracht | De schouder zakt bij strekking — het ergst precies waar de nauwkeurigheid het slechtst is |
| Geen speling | Enkele graden speling, die bij elke omkering van de looprichting wordt opgebruikt |
| Onmiddellijke beweging | Een aangestuurde sprong gaat op volle snelheid, met een stroompiek |
| Perfecte koppellengtes | Meet tussen gewrichtsassen, niet tussen de randen van de montagebeugels |
| Oneindig koppelmoment | Een SG90 op 58% van het maximale koppelmoment houdt de positie niet nauwkeurig |
Twee getallen maken het punt. Vier graden speling bij de schouder over een bereik van 190 mm is meer dan 13 mm bij de grijper — groter dan elke fout die de wiskunde introduceert. En een koppellengte die bij 95 mm 10 mm te lang is gemeten, is een systematische fout van 10% die geen enkele afstelling wegneemt.
De praktische gevolgtrekking is dat nauwkeurigheid op hardware voortkomt uit kalibratie en een consistente naderingsrichting, niet uit betere kinematica. Nader een doel altijd van dezelfde kant aan en de speling wordt een reproduceerbare offset die je kunt aftrekken. De volledige solver, met elke foutsituatie afgehandeld, staat in inverse kinematica voor een arm met twee koppels.
Hardwarechecklist
Componenten
- Robotarm met drie assen of meer
- Controller die gesynchroniseerde gewrichtsupdates aankan
- Gewrichtsterugkoppeling of slimme servo's
- Sterke basis en een gedefinieerd TCP (tool center point)
- Noodstop en stroombegrensde voeding
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
Wat is het verschil tussen voorwaartse en inverse kinematica?
Voorwaartse kinematica berekent de pose van de grijper uit bekende gewrichtswaarden. Inverse kinematica start bij een gewenste pose van de grijper en zoekt een of meerdere gewrichtsconfiguraties die die kunnen opleveren.
Waarom heeft een arm met twee koppels twee oplossingen (elleboog omhoog en elleboog omlaag)?
Voor de meeste bereikbare doelen kan de elleboog beide kanten op buigen en de grijper nog steeds op hetzelfde punt plaatsen, wat een elleboog-omhoog- en een elleboog-omlaagconfiguratie oplevert. De twee oplossingen komen voort uit het plus-of-minteken in de hoek volgens de cosinusregel voor het tweede gewricht. Ze vallen alleen samen bij een singulariteit, waar de arm volledig gestrekt of volledig opgevouwen is.
Hoe kies ik tussen elleboog omhoog en elleboog omlaag?
Kies de configuratie die voor de taak het veiligst en het efficiëntst is: een die de gewrichten bij hun limieten weghoudt, zo weinig mogelijk beweegt ten opzichte van de huidige pose of obstakels vermijdt. Deze simulator laat je tussen takken wisselen en toont de alternatieve oplossing als spook zodat de afweging zichtbaar wordt.
Wat is een singulariteit in een robotarm?
Een singulariteit is een configuratie waarin de arm het vermogen verliest om de grijper in een bepaalde richting te bewegen — meestal wanneer hij volledig gestrekt of volledig opgevouwen is. Dicht bij een singulariteit kan een kleine beweging van de grijper een zeer grote gewrichtsbeweging vergen, waardoor planners vertagen of om die poses heen routeren. Het is ook waar de elleboog-omhoog- en elleboog-omlaagoplossing in één oplossen.
Wanneer heeft inverse kinematica geen oplossing?
Een vlak doel met twee koppels is alleen bereikbaar binnen de ringvormige zone tussen het kleinste bereik (het verschil van de koppellengtes) en het grootste bereik (hun som). Een punt buiten die ring is bij geen enkele gewrichtshoek bereikbaar. Een pose kan ook onbereikbaar zijn omdat er een verboden gewrichtshoek nodig is, omdat de beschikbare gewrichten een oriëntatie niet kunnen aannemen, of omdat de arm met zichzelf bots.
Waarom analytische inverse kinematica in plaats van een numerieke solver?
Voor een vlakke arm met twee of drie koppels heeft de geometrie een gesloten vorm (analytische oplossing), dus kun je de exacte gewrichtshoeken rechtstreeks, deterministisch en snel berekenen — ideaal om te leren en te testen. Numerieke solvers zijn nodig voor redundante of ruimtelijke armen waar geen gesloten vorm bestaat, maar ze itereren, kunnen oplossingen missen en zijn lastiger te doorrekenen.
Verder lezen
Bronnen
Gezaghebbende bronnen om dieper te gaan dan het afgebakende leermodel van deze simulator.