Innehållsförteckning:

Bioinspirerad robotorm: 16 steg (med bilder)
Bioinspirerad robotorm: 16 steg (med bilder)

Video: Bioinspirerad robotorm: 16 steg (med bilder)

Video: Bioinspirerad robotorm: 16 steg (med bilder)
Video: Джефф Хоукинс говорит о том, как наука о мозге изменит компьютеры. 2024, Juli
Anonim
Image
Image

Jag blev inspirerad att börja detta projekt efter att ha sett forskningsvideor av både trädklättrande robotormar och robotål. Detta är mitt första försök och att bygga robotar med serpentinrörelse, men det blir inte mitt sista! Prenumerera på YouTube om du vill se framtida utveckling.

Nedan beskriver jag konstruktionen av 2 olika ormar tillsammans med filerna för 3D-utskrift och en diskussion om koden och algoritmer för att uppnå ormliknande rörelser. Om du vill fortsätta lära dig mer, efter att ha läst den här instruerbara föreslår jag att du läser länkarna i referensavsnittet längst ner på sidan.

Denna instruerbara är tekniskt en 2-i-1, genom att jag förklarar hur man gör 2 olika versioner av en robotorm. Om du bara är intresserad av att bygga en av ormarna, ignorera instruktionerna för den andra ormen. Dessa två olika ormar kommer härifrån att hänvisas till att använda följande fraser omväxlande:

  1. Enaxel orm, 1D orm, eller gul och svart orm
  2. Dubbelaxlad orm, 2D orm eller vit orm

Naturligtvis kan du skriva ut ormarna i valfri färgfilament. Den enda skillnaden mellan de två ormarna är att i 2D -ormen roteras varje motor 90 grader i förhållande till den föregående, medan i 1D -ormen är alla motorer inriktade i en enda axel.

Ett sista förord är att medan var och en av mina ormar bara har 10 servon är det möjligt att göra ormarna med mer eller mindre servon. En sak att tänka på är att med mindre servon kommer du att uppnå mindre framgångsrik rörelse, och med fler servon kommer du förmodligen att bli mer framgångsrik med serpentinrörelsen, men du måste ta hänsyn till kostnad, nuvarande dragning (se senare anmärkningar) och antalet stift tillgänglig på Arduino. Ändra gärna ormens längd, men kom ihåg att du också måste ändra koden för att redogöra för denna förändring.

Steg 1: Komponenter

Detta är en dellista för en enda orm, om du vill göra båda ormarna måste du fördubbla volymen av komponenter.

  • 10 MG996R -servon*
  • 1,75 mm 3D -filament
  • 10 kullager, artikelnummer 608 (jag bärgade mitt från ytterkanten på Jitterspin fidget spinners)
  • 20 små kullager, artikelnummer r188, för hjulen ** (jag bärgade mina från den inre delen av Jitterspin fidget spinners)
  • 40 Philips huvudskruvar 6-32 x 1/2 "(eller liknande)
  • 8 längre skruvar (jag har inget artikelnummer men de har samma diameter som skruvarna ovan)
  • Minst 20 bitar med 4 tums zipties (det är upp till dig hur många du vill använda)
  • 5 m vardera av röd och svart 20 gauge eller tjockare ***
  • Standard 22 gauge tråd
  • 30 manliga huvudstycken (delade i 10 lotter av 3)
  • Arduino Nano
  • 3D -tryckta delar (se nästa avsnitt)
  • Någon form av ström (se avsnittet: "Driva ormen" för mer information), jag använde personligen en modifierad ATX -strömförsörjning
  • 1000uF 25V elektrolytkondensator
  • Krymprör av olika storlekar, löd, lim och andra diverse verktyg

*du kan använda andra typer men du måste göra om 3D -filerna för att passa dina servon. Även om du försöker använda mindre servon som sg90 kan du upptäcka att de inte är tillräckligt starka (jag har inte testat detta och det är upp till dig att experimentera).

** du behöver inte använda små kullager för hjulen, jag hade bara mycket kvar. Alternativt kan du använda LEGO -hjul eller andra leksakshjul.

*** Denna tråd kan ha upp till 10 ampere som går igenom den, för tunn och strömmen kommer att smälta den. Se denna sida för mer information.

Steg 2: 3D -utskriftskomponenter

Montering av ormarna
Montering av ormarna

Om du gör 1D -ormen, skriv ut dessa bitar.

Om du gör 2D -ormen, skriv ut dessa bitar.

Viktigt: skalan kan vara fel! Jag konstruerade mina komponenter i Fusion 360 (i mm -enheter), exporterade designen som en.stl -fil till MakerBot -programvaran och skrev sedan ut den på en Qidi Tech -skrivare (en klonversion av MakerBot Replicator 2X). Någonstans längs detta arbetsflöde finns det en bugg och alla mina utskrifter blir för små. Jag har inte kunnat identifiera platsen för felet men har en tillfällig lösning för att skala varje utskrift till 106% storlek i MakerBot -programvaran, det här löser problemet.

Med tanke på detta, varnas att om du skriver ut filerna ovan kan de vara felskalade. Jag föreslår att du bara skriver ut en bit och kontrollerar om den passar din MG996R -servo innan du skriver ut dem alla.

Om du skriver ut någon av filerna, låt mig veta vad resultatet är: om utskriften är för liten, lagom, för stor och med hur många procent. Genom att arbeta tillsammans som en community kan vi felsöka platsen för felet med hjälp av olika 3D -skrivare och.stl -skärare. När problemet är löst uppdaterar jag det här avsnittet och länkarna ovan.

Steg 3: Montering av ormarna

Montering av ormarna
Montering av ormarna
Montering av ormarna
Montering av ormarna
Montering av ormarna
Montering av ormarna

Monteringsprocessen är mestadels densamma för båda versionerna av ormen. Den enda skillnaden är att i 2D -ormen roteras varje motor 90 grader i förhållande till föregående, medan i 1D -ormen är alla motorer inriktade i en enda axel.

Börja med att skruva loss servon, spara skruvarna och ta bort de övre och nedre delarna av den svarta plastramen, och var försiktig så att du inte tappar några av kugghjulen! Skjut in servon i den 3D -tryckta ramen, orienterad som på bilderna ovan. Sätt tillbaka ovansidan av servofodralet och skruva fast det med fyra 6-32 1/2 skruvar. Spara botten på servoramen (om du vill använda den igen i senare projekt) och ersätt den med 3D tryckt fodral, den enda skillnaden är den extra ratten för ett kullager att glida över. Skruva ihop servon igen, upprepa 10 gånger.

VIKTIGT: Innan du fortsätter måste du ladda upp kod till Arduino och flytta varje servo till 90 grader. Underlåtenhet att göra detta kan leda till att du bryter en eller flera servo- och/eller 3D -tryckta ramar. Om du är osäker på hur du flyttar en servo till 90 grader, se den här sidan. Anslut i princip servoens röda ledning till 5V på Arduino, den bruna ledningen till GND och den gula ledningen till digital stift 9, ladda sedan upp koden i länken.

Nu när varje servo är 90 grader, fortsätt:

Anslut de 10 segmenten genom att sätta in den 3D -tryckta vredet från ett servofodral i hålet på ett andra segmentstycke och tryck sedan in servoaxeln med lite kraft i dess hål (se bilderna ovan och videon för tydlighetens skull). Om du gör 1D -ormen bör alla segment vara inriktade. Om du gör 2D -ormen ska varje segment roteras 90 grader till föregående segment. Observera att svansen och huvudramen bara är halva längden på de andra segmenten, anslut dem men kommentera inte de pyramidformade bitarna förrän efter att vi har slutfört ledningarna.

Fäst den x-formade servoarmen och skruva fast den. Skjut kullagret över den 3D-tryckta ratten, detta kommer att kräva att de två halvcirkelstavarna försiktigt pressas ihop. Beroende på vilket filament du använder och påfyllningstätheten kan stolparna vara för spröda och snäppa, jag tror inte att detta kommer att vara fallet men använd inte överdriven kraft. Jag använde personligen PLA -filament med 10% fyllning. När kullagret är på bör det förbli låst av överhängen på vredet.

Steg 4: Krets

Krets
Krets
Krets
Krets
Krets
Krets

Kretsen är densamma för båda robotormarna. Under anslutningsprocessen, se till att det finns tillräckligt med ledningsutrymme för varje segment att rotera helt, särskilt i 2D -ormen.

Ovan är ett kretsschema för ledningarna med endast 2 servon. Jag försökte göra en kretsritning med 10 servon men det blev alldeles för överfullt. Den enda skillnaden mellan den här bilden och det verkliga livet är att du måste koppla ihop 8 fler servon parallellt och ansluta PWM -signalkablarna till stiften på Arduino Nano.

Vid anslutning av kraftledningarna använde jag en enda bit av 18 gauge (tillräckligt tjock för att klara 10 ampere) som huvud 5V -ledning som gick längs ormens längd. Med hjälp av trådavlägsnare tog jag bort en liten del av isolatorn med 10 regelbundna intervaller och lödde en kort bit tråd från vart och ett av dessa intervall en grupp med 3 hanstiften. Upprepa detta en andra gång för den svarta 18 gauge GND -tråden och en andra male -headerstift. Slutligen löd en längre tråd till den tredje manliga huvudstiften, denna pin kommer att bära PWM -signalen till servon från Arduino Nano i ormens huvud (tråden måste vara tillräckligt lång för att nå, även när segmenten böjer). Fäst värmekrympslang vid behov. Anslut de tre manliga huvudstiften och de tre kvinnliga huvudstiften på servotrådarna. Upprepa 10 gånger för var och en av de 10 servona. Ytterst vad detta uppnår är att koppla servon parallellt och köra PWM -signalkablar till Nano. Anledningen till de manliga/kvinnliga huvudstiften var så att du enkelt kan ta isär segmenten och byta ut servon om de går sönder utan att löda allt.

Löd GND- och 5V -kablarna till ett 3 x 7 -håls perfkort i svansen med en kondensator och skruvterminaler. Syftet med kondensatorn är att ta bort eventuella strömdragningar som orsakas vid start av servon, som kan återställa Arduino Nano (om du inte har en kondensator kan du förmodligen komma undan utan den, men det är bättre att vara säker). Kom ihåg att den långa stiftet av elektrolytkondensatorer måste anslutas till 5V -ledningen och den kortare tappen till GND -ledningen. Löd GND -kabeln till GND -stiftet på Nano och 5V -kabeln till 5V -stiftet. Observera att om du använder en annan spänning, (se nästa avsnitt), säg ett Lipo -batteri med 7,4V, koppla sedan den röda ledningen till Vin -stiftet, INTE 5V -stiftet, då förstörs stiftet.

Löd de 10 PWM -signalkablarna till stiften på Arduino Nano. Jag kopplade min i följande ordning, du kan välja att koppla din annorlunda men kom bara ihåg att du då måste ändra servo.attach () -raderna i koden. Om du är osäker på vad jag talar om, bara koppla det på samma sätt som jag gjorde och du kommer inte att ha problem. För att från servon i ormens svans till ormens huvud kopplade jag båda mina ormar i följande ordning. Anslutning av signalstiften till: A0, A1, A2, A3, A4, A5, D4, D3, D8, D7.

Använd blixtlås för att städa upp ledningarna. Innan du fortsätter, kontrollera att alla segment kan röra sig med tillräckligt med utrymme för trådarna att röra sig utan att de dras isär. Nu när ledningarna är klara kan vi skruva fast huvudet och svansen pyramidformade lock. Observera att svansen har ett hål för att bindan ska komma ur och huvudet har ett hål för Arduino -programmeringskabeln.

Steg 5: Driv ormen

Driva ormen
Driva ormen
Driva ormen
Driva ormen
Driva ormen
Driva ormen

Eftersom servon är parallellkopplade får de alla samma spänning, men strömmen måste läggas till. Om du tittar på databladet för MG996r -servon kan de dra upp till 900mA vardera medan de körs (förutsatt att det inte stannar). Således är den totala strömdragningen om alla 10 servon rör sig samtidigt 0,9A*10 = 9A. Som sådan fungerar en vanlig 5v, 2A vägguttagsadapter inte. Jag bestämde mig för att ändra en ATX -strömförsörjning, som kan 5V vid 20A. Jag tänker inte förklara hur man gör detta, eftersom det har diskuterats mycket på Instructables och YouTube redan. En snabb sökning på nätet visar hur du ändrar en av dessa strömförsörjningar.

Om du antar att du har ändrat strömförsörjningen är det helt enkelt en anslutning mellan en lång koppling mellan strömförsörjningen och skruvterminalerna på ormen.

Ett annat alternativ är att använda ett inbyggt lipopaket. Jag har inte provat detta så det är upp till dig att designa ett fäste för batterierna och sätta i dem. Tänk på driftspänningarna, strömdragningen på servon och Arduino (löd inte annat än 5v till 5v -stiftet på Arduino, gå till Vin -stiftet om du har en högre spänning).

Steg 6: Testa allt fungerar

Innan vi fortsätter kan vi bara testa allt fungerar. Ladda upp den här koden. Din orm bör flytta varje servo individuellt mellan 0-180 och sedan avsluta med att lägga i en rak linje. Om det inte gör det är något fel, troligtvis är ledningarna felaktiga eller så var servon inte initialt centrerade vid 90 grader som nämnts i avsnittet "Montering av ormarna".

Steg 7: Kod

Det finns för närvarande ingen fjärrkontroll för ormen, all rörelse är förprogrammerad och du kan välja vad du vill. Jag kommer att utveckla en fjärrkontroll i version 2, men om du vill fjärrstyra den skulle jag föreslå att du tittar på andra handledning om Instructables och anpassar ormen för att vara Bluetooth -kompatibel.

Ladda upp den här koden om du gör 1D -ormen.

Ladda upp den här koden om du gör 2D -ormen.

Jag uppmuntrar dig att leka med koden, göra dina egna ändringar och skapa nya algoritmer. Läs nästa avsnitt för en detaljerad förklaring av varje typ av rörelse och hur koden för den fungerar.

Steg 8: Skalor mot hjul

Vågar mot hjul
Vågar mot hjul
Vågar mot hjul
Vågar mot hjul
Vågar mot hjul
Vågar mot hjul
Vågar mot hjul
Vågar mot hjul

Ett av de viktigaste sätten ormar kan röra sig framåt är genom formen på deras vågar. Vågen möjliggör enklare rörelse framåt. För en ytterligare förklaring titta på den här videon från 3:04 och framåt för att se hur skalor hjälper ormen att gå framåt. Att titta på 3:14 i samma video visar effekten när ormarna är i en ärm, vilket tar bort friktionen av vågarna. Som visas i min YouTube -video när den robotiska 1D -ormen försöker slingra på gräs utan vågar, rör den sig varken framåt eller bakåt eftersom krafterna summeras till ett netto noll. Som sådan måste vi lägga till några konstgjorda vågar till robotens underliv.

Forskning om återskapande av rörelse via våg gjordes vid Harvard University och demonstrerades i den här videon. Jag kunde inte komma på en liknande metod för att flytta vågen upp och ner på min robot och nöjde mig istället med att fästa passiva 3D -tryckta vågar på underlivet.

Tyvärr visade det sig ineffektivt (se i min YouTube -video klockan 3:38) eftersom vågen fortfarande skummade över mattans yta istället för att fånga upp fibrerna och öka friktionen.

Om du vill experimentera med skalorna jag gjorde kan du 3D -skriva ut filerna från min GitHub. Om du gör din egen framgångsrikt låt mig veta i kommentarerna nedan!

Med ett annat tillvägagångssätt försökte jag använda hjul tillverkade av r188 kullager med värmekrympslang över utsidan som ett "däck". Du kan 3D -skriva ut plasthjulaxlarna från.stl -filerna på min GitHub. Även om hjulen inte är biologiskt noggranna, är de analoga med vågar i och med att rotationen framåt är lätt, men rörelse från sida till sida är betydligt svårare. Du kan se det lyckade resultatet av hjulen i min YouTube -video.

Steg 9: Slithering Motion (single Axis Snake)

Första priset i Make it Move -tävlingen

Rekommenderad: