Inhoudsopgave:

Bio-geïnspireerde robotslang - Ajarnpa
Bio-geïnspireerde robotslang - Ajarnpa

Video: Bio-geïnspireerde robotslang - Ajarnpa

Video: Bio-geïnspireerde robotslang - Ajarnpa
Video: Biotrue lenzenvloeistof van Bausch & Lomb 2024, November
Anonim
Image
Image

Ik werd geïnspireerd om aan dit project te beginnen nadat ik onderzoeksvideo's had gezien van zowel boomklimmende robotslangen als robotpalingen. Dit is mijn eerste poging om robots te bouwen met behulp van kronkelige voortbeweging, maar het zal niet mijn laatste zijn! Abonneer je op YouTube als je toekomstige ontwikkelingen wilt zien.

Hieronder schets ik de constructie van 2 verschillende slangen samen met de bestanden voor 3D-printen en een discussie over de code en algoritmen om slangachtige bewegingen te bereiken. Als je meer wilt leren, raad ik je aan om na het lezen van deze instructable de links in de sectie referenties onderaan de pagina te lezen.

Deze instructable is technisch gezien een 2-in-1, in die zin dat ik uitleg hoe je 2 verschillende versies van een robotslang kunt maken. Als je alleen geïnteresseerd bent in het bouwen van een van de slangen, negeer dan de instructies voor de andere slang. Deze 2 verschillende slangen zullen vanaf nu worden aangeduid met de volgende zinnen door elkaar:

  1. Enkelassige slang, 1D-slang of gele en zwarte slang
  2. Dubbelassige slang, 2D-slang of witte slang

Natuurlijk kun je de slangen printen in elke gewenste kleur filament. Het enige verschil tussen de twee slangen is dat in de 2D-slang elke motor 90 graden is gedraaid ten opzichte van de vorige, terwijl in de 1D-slang alle motoren op één as zijn uitgelijnd.

Een laatste voorwoord is dat hoewel elk van mijn slangen slechts 10 servo's heeft, het mogelijk is om de slangen te maken met meer of minder servo's. Een ding om te overwegen is dat u met minder servo's minder succesvolle bewegingen zult bereiken, en met meer servo's zult u waarschijnlijk meer succes hebben met de kronkelige beweging, maar u moet rekening houden met de kosten, stroomafname (zie latere opmerkingen) en het aantal pinnen beschikbaar op de Arduino. Voel je vrij om de lengte van de slang te wijzigen, maar houd er rekening mee dat je ook de code moet wijzigen om rekening te houden met deze wijziging.

Stap 1: Componenten

Dit is een onderdelenlijst voor een enkele slang, als je beide slangen wilt maken, moet je het volume van de onderdelen verdubbelen.

  • 10 MG996R-servo's*
  • 1,75 mm 3D-printfilament
  • 10 kogellagers, onderdeelnummer 608 (ik heb de mijne gered van de buitenrand van Jitterspin fidget spinners)
  • 20 kleine kogellagers, onderdeelnummer r188, voor de wielen** (ik heb de mijne gered uit het binnenste deel van Jitterspin fidget spinners)
  • 40 kruiskopschroeven 6-32 x 1/2" (of vergelijkbaar)
  • 8 langere schroeven (ik heb geen onderdeelnummer, maar ze hebben dezelfde diameter als de schroeven hierboven)
  • Minimaal 20 stuks van 4 inch zipties (het is aan jou hoeveel je wilt gebruiken)
  • 5 m rood en zwart 20 gauge draad of dikker***
  • Standaard 22 gauge draad
  • 30 mannelijke header-pinnen (verdeeld in 10 partijen van 3)
  • Arduino Nano
  • 3D-geprinte onderdelen (zie volgende sectie)
  • Een vorm van stroom (zie de sectie: "Powering the snake" voor meer info), ik heb persoonlijk een aangepaste ATX-voeding gebruikt
  • 1000uF 25V elektrolytische condensator
  • Krimpkous van verschillende afmetingen, soldeer, lijm en ander divers gereedschap

* u kunt andere typen gebruiken, maar u moet de 3D-bestanden opnieuw ontwerpen zodat ze bij uw servo's passen. Ook als je kleinere servo's zoals de sg90 probeert te gebruiken, zul je merken dat ze niet sterk genoeg zijn (ik heb dit niet getest en het is aan jou om te experimenteren).

**je hoeft geen kleine kogellagers te gebruiken voor de wielen, ik had er gewoon veel liggen. Als alternatief kunt u LEGO wielen of andere speelgoedwielen gebruiken.

***Deze draad kan tot 10 ampère hebben, te dun en de stroom zal hem doen smelten. Zie deze pagina voor meer info.

Stap 2: 3D-afdrukcomponenten

Montage van de slangen
Montage van de slangen

Als je de 1D-slangprint maakt, print je deze stukken.

Als je de 2D-slang maakt, print dan deze stukken.

Belangrijke opmerking: de schaal kan verkeerd zijn! Ik ontwerp mijn componenten in Fusion 360 (in mm-eenheden), exporteerde het ontwerp als een.stl-bestand naar MakerBot-software en drukte het vervolgens af op een Qidi Tech-printer (een kloonversie van de MakerBot Replicator 2X). Ergens langs deze workflow is er een fout en al mijn afdrukken komen te klein uit. Ik heb de locatie van de bug niet kunnen identificeren, maar ik heb een tijdelijke oplossing voor het schalen van elke afdruk naar 106% in de MakerBot-software, dit lost het probleem op.

Houd er daarom rekening mee dat als u de bovenstaande bestanden afdrukt, ze mogelijk onjuist zijn geschaald. Ik raad aan om slechts één stuk af te drukken en te controleren of het past bij uw MG996R-servo voordat u ze allemaal afdrukt.

Als je een van de bestanden afdrukt, laat me dan weten wat het resultaat is: als de afdruk te klein is, precies goed, te groot en met hoeveel procent. Door als gemeenschap samen te werken, kunnen we de locatie van de bug oplossen met behulp van verschillende 3D-printers en.stl-slicers. Zodra het probleem is opgelost, zal ik dit gedeelte en de bovenstaande links bijwerken.

Stap 3: Montage van de slangen

Montage van de slangen
Montage van de slangen
Montage van de slangen
Montage van de slangen
Montage van de slangen
Montage van de slangen

Het montageproces is grotendeels hetzelfde voor beide versies van de slang. Het enige verschil is dat in de 2D-slang elke motor 90 graden is gedraaid ten opzichte van de vorige, terwijl in de 1D-slang alle motoren op één as zijn uitgelijnd.

Begin met het losdraaien van de servo, bewaar de schroeven en verwijder de bovenste en onderste delen van het zwarte plastic frame, en pas op dat u geen tandwielen verliest! Schuif de servo in het 3D-geprinte frame, georiënteerd zoals in de bovenstaande afbeeldingen. Plaats de bovenkant van de servobehuizing terug en schroef deze op zijn plaats met vier 6-32 1/2 -schroeven. Bewaar de onderkant van het servoframe (voor het geval je het opnieuw wilt gebruiken in latere projecten) en vervang het door de 3D bedrukte behuizing, het enige verschil is de extra knop om een kogellager over te laten glijden. Schroef de servo weer in elkaar, herhaal dit 10 keer.

BELANGRIJK: Voordat u verder gaat, moet u de code naar de Arduino uploaden en elke servo naar 90 graden verplaatsen. Als u dit niet doet, kan dit ertoe leiden dat u een of meer servo's en/of de 3D-geprinte frames breekt. Als je niet zeker weet hoe je een servo naar 90 graden moet verplaatsen, kijk dan op deze pagina. Sluit in principe de rode draad van de servo aan op 5V op de Arduino, de bruine draad op GND en de gele draad op digitale pin 9, upload vervolgens de code in de link.

Nu elke servo op 90 graden staat, gaat u verder:

Verbind de 10 segmenten door de 3D-geprinte knop van de ene servobehuizing in het gat van een tweede segmentstuk te steken en duw vervolgens met een beetje kracht de as van de servo in het gat (zie afbeeldingen hierboven en video voor duidelijkheid). Als u de 1D-slang maakt, moeten alle segmenten worden uitgelijnd, als u de 2D-slang maakt, moet elk segment 90 graden worden gedraaid ten opzichte van het vorige segment. Merk op dat het staart- en kopframe slechts de helft van de lengte van de andere segmenten zijn, sluit ze aan, maar becommentarieer de piramidevormige stukken pas nadat we klaar zijn met de bedrading.

Bevestig de x-vormige servo-arm en schroef deze op zijn plaats. Schuif het kogellager over de 3D-geprinte knop, hiervoor moet u de 2 halfronde palen voorzichtig samenknijpen. Afhankelijk van het merk filament dat u gebruikt en de dichtheid van de vulling, kunnen de palen te broos zijn en breken, ik denk niet dat dit het geval zal zijn, maar gebruik niettemin geen overmatige kracht. Ik heb persoonlijk PLA-filament gebruikt met 10% vulling. Als het kogellager eenmaal is aangebracht, moet het vergrendeld blijven door de uitsteeksels op de knop.

Stap 4: Circuit

Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring
Stroomkring

Het circuit is hetzelfde voor beide robotslangen. Zorg er tijdens het bedradingsproces voor dat er voldoende bedradingsruimte is voor elk segment om volledig te draaien, vooral in de 2D-slang.

Hierboven staat een schakelschema voor de bedrading met slechts 2 servo's. Ik heb geprobeerd een circuittekening te maken met 10 servo's, maar het werd veel te overvol. Het enige verschil tussen deze foto en het echte leven is dat je nog 8 servo's parallel moet aansluiten en de PWM-signaaldraden moet verbinden met pinnen op de Arduino Nano.

Bij het bedraden van de hoogspanningslijnen gebruikte ik een enkel stuk 18 gauge draad (dik genoeg om 10 ampère te weerstaan) als de belangrijkste 5V-lijn die over de lengte van de slang liep. Met behulp van draadstrippers heb ik met 10 regelmatige tussenpozen een klein stukje isolator verwijderd en een kort stukje draad van elk van deze intervallen gesoldeerd, een groep van 3 mannelijke koppennen. Herhaal dit een tweede keer voor de zwarte 18 gauge GND-draad en een tweede mannelijke header-pin. Soldeer tot slot een langere draad aan de 3e mannelijke header-pin, deze pin zal het PWM-signaal naar de servo van de Arduino Nano in de kop van de slang dragen (de draad moet lang genoeg zijn om te bereiken, zelfs als de segmenten buigen). Bevestig de krimpkous indien nodig. Verbind de 3 mannelijke header-pinnen met de 3 vrouwelijke header-pinnen van de servo-draden. Herhaal 10 keer voor elk van de 10 servo's. Wat dit uiteindelijk bereikt, is de parallelle bedrading van de servo's en het lopen van PWM-signaaldraden naar de Nano. De reden voor de mannelijke / vrouwelijke header-pinnen was dat je gemakkelijk segmenten uit elkaar kunt halen en servo's kunt vervangen als ze breken zonder alles los te solderen.

Soldeer de GND- en 5V-draden aan een 3x7-gaats perforatiebord in de staart met een condensator en schroefklemmen. Het doel van de condensator is om eventuele stroompieken te verwijderen die worden veroorzaakt bij het opstarten van de servo's, die de Arduino Nano kunnen resetten (als je geen condensator hebt, kun je waarschijnlijk zonder, maar het is beter om veilig te zijn). Onthoud dat de lange poot van elektrolytische condensatoren moet worden aangesloten op de 5V-lijn en de kortere poot op de GND-lijn. Soldeer de GND-draad aan de GND-pin van de Nano en de 5V-draad aan de 5V-pin. Let op als u een ander voltage gebruikt (zie volgende sectie), bijvoorbeeld een Lipo-batterij met 7,4 V, sluit dan de rode draad aan op de Vin-pin, NIET op de 5V-pin, als u dit doet, wordt de pin vernietigd.

Soldeer de 10 PWM-signaaldraden aan pinnen op de Arduino Nano. Ik heb de mijne in de volgende volgorde aangesloten, je kunt ervoor kiezen om de jouwe anders te bedraden, maar onthoud dat je dan de servo.attach() regels in de code moet wijzigen. Als je niet zeker weet waar ik het over heb, bedraad het dan gewoon op dezelfde manier als ik deed en je zult geen problemen hebben. In volgorde van de servo aan de staart van de slang naar de kop van de slang, heb ik mijn beide slangen in de volgende volgorde bedraad. De signaalpinnen aansluiten op: A0, A1, A2, A3, A4, A5, D4, D3, D8, D7.

Gebruik kabelbinders om de bedrading op te ruimen. Controleer voordat u verdergaat of alle segmenten kunnen bewegen met voldoende ruimte voor de draden om te bewegen zonder dat ze uit elkaar worden getrokken. Nu de bedrading klaar is kunnen we de kop en staart piramidevormige doppen erop schroeven. Merk op dat de staart een gat heeft waar de ketting uit kan komen en dat de kop een gat heeft voor de Arduino-programmeerkabel.

Stap 5: De slang van stroom voorzien

De slang aandrijven
De slang aandrijven
De slang aandrijven
De slang aandrijven
De slang aandrijven
De slang aandrijven

Omdat de servo's parallel zijn geschakeld, krijgen ze allemaal dezelfde spanning, maar moet de stroom worden opgeteld. Kijkend naar de datasheet voor MG996r-servo's kunnen ze elk tot 900mA trekken tijdens het draaien (ervan uitgaande dat ze niet afslaan). Dus de totale stroomafname als alle 10 servo's tegelijkertijd bewegen, is 0,9 A * 10 = 9 A. Als zodanig zal een normale 5v, 2A stopcontactadapter niet werken. Ik besloot om een ATX-voeding aan te passen, geschikt voor 5v bij 20A. Ik ga niet uitleggen hoe je dit moet doen, omdat het al veel is besproken op Instructables en YouTube. Een snelle online zoekopdracht laat u zien hoe u een van deze voedingen kunt wijzigen.

Ervan uitgaande dat u de voeding hebt aangepast, hoeft u alleen maar een lange ketting aan te sluiten tussen de voeding en de schroefklemmen op de slang.

Een andere optie is om een onboard lipo-batterijpakket te gebruiken. Ik heb dit niet geprobeerd, dus het is aan jou om een houder voor de batterijen te ontwerpen en ze in te sluiten. Houd rekening met de bedrijfsspanningen, het stroomverbruik van de servo's en de Arduino (soldeer niets anders dan 5v aan de 5v-pin op de Arduino, ga naar de Vin-pin als je een hogere spanning hebt).

Stap 6: Test of alles werkt

Laten we, voordat we verder gaan, testen of alles werkt. Upload deze code. Je slang moet elke servo afzonderlijk tussen 0-180 bewegen en dan eindigen door in een rechte lijn te leggen. Als dit niet het geval is, is er iets mis, hoogstwaarschijnlijk is de bedrading niet correct of waren de servo's aanvankelijk niet gecentreerd op 90 graden, zoals vermeld in het gedeelte "Montage van de slangen".

Stap 7: Coderen

Er is momenteel geen afstandsbediening voor de slang, alle beweging is voorgeprogrammeerd en je kunt kiezen wat je wilt. Ik zal een afstandsbediening ontwikkelen in versie 2, maar als je hem op afstand wilt bedienen, raad ik aan om andere tutorials over Instructables te bekijken en de slang aan te passen zodat deze compatibel is met Bluetooth.

Als je de 1D-slang maakt, upload dan deze code.

Als je de 2D-slang maakt, upload dan deze code.

Ik moedig je aan om met de code te spelen, je eigen wijzigingen aan te brengen en nieuwe algoritmen te maken. Lees de volgende secties voor een gedetailleerde uitleg van elk type voortbeweging en hoe de code ervoor werkt.

Stap 8: Weegschalen versus wielen

Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen
Weegschalen versus wielen

Een van de belangrijkste manieren waarop slangen vooruit kunnen komen, is door de vorm van hun schubben. De schalen zorgen voor een gemakkelijkere voorwaartse beweging. Bekijk voor meer uitleg deze video vanaf 3:04 om te zien hoe schalen de slang vooruit helpen. Als je naar 3:14 in dezelfde video kijkt, zie je het effect wanneer de slangen in een mouw zitten, waardoor de wrijving van de schubben wordt weggenomen. Zoals te zien is in mijn YouTube-video, wanneer de robotachtige 1D-slang zonder schubben op gras probeert te glijden, beweegt hij niet naar voren of naar achteren omdat de krachten optellen tot een netto nul. Daarom moeten we wat kunstmatige schubben aan de onderbuik van de robot toevoegen.

Onderzoek naar het nabootsen van voortbeweging via weegschalen is gedaan aan de Harvard University en gedemonstreerd in deze video. Ik was niet in staat om een vergelijkbare methode te bedenken om de weegschaal op en neer te bewegen op mijn robot en besloot in plaats daarvan passieve 3D-geprinte weegschalen aan de onderbuik te bevestigen.

Helaas bleek dit niet effectief (zie in mijn YouTube-video op 3:38) omdat de schubben nog steeds over het oppervlak van het tapijt scheerden in plaats van aan de vezels te blijven haken en de wrijving te vergroten.

Als je wilt experimenteren met de schalen die ik heb gemaakt, kun je de bestanden 3D printen vanuit mijn GitHub. Als je er zelf een hebt gemaakt, laat het me dan weten in de reacties hieronder!

Met een andere benadering probeerde ik wielen te gebruiken die gemaakt waren van r188 kogellagers met krimpkous over de buitenkant als een 'band'. Je kunt de plastic wielassen 3D printen vanuit de.stl-bestanden op mijn GitHub. Hoewel wielen biologisch niet nauwkeurig zijn, zijn ze analoog aan schalen in die zin dat voorwaartse rotatie gemakkelijk is, maar zijwaartse beweging aanzienlijk moeilijker is. Je kunt het succesvolle resultaat van de wielen zien in mijn YouTube-video.

Stap 9: Glijdende beweging (slang met één as)

Eerste prijs in de Make it Move-wedstrijd

Aanbevolen: