Oppsummeringsvideo:
Spider Manufacturers (Maskin):
Denne uken har Spider Manufactures arbeidet med å ferdigstille CAD-modeller samtidig som vi har produsert noen komponenter og montert disse. I tillegg har Spider Manufactures jobbet med det siste blogginnlegget for å skape en god konklusjon for arbeidet utført i emnet.
I løpet av prosjektperioden har vi i Spider Manufactures møtt på en del utfordringer. Blant annet under produksjon, montering og sammensetting av komponenter.
Noen utfordringer vi møtte på under produksjon var for det meste printfeil og dimensjonering. Dette løste vi ved å sette en standard på 3D-printingen, ved å blant annet bruke høyere styrke(innfill og tykkere vegger). Og eventuelt redesigne 3D modellen. Med disse tiltakene kunne vi unngå slike utfordringer på nytt.
Under montering og sammensetting støttet vi også på en del ineffektive løsninger og komponenter som ikke passet sammen, spesielt ved prototype 3 og prototype 4. Ettersom Creepy Coders ønsket ferdigstilte prototyper så raskt som mulig, ville vi i Spider Manufactures oppfylle ønsket, og derfor ble det en del utfordringer. Løsningen på dette var å justere manuelt på komponenter, ved å slipe, borre, teipe og feste med strips. Og deretter gjøre en ordentlig “design review” sammen, og produsere og montere enkeltkomponenter på nytt.
Viktig læring for oss i Spider Manufactures som et team har vært å ha tydelig kommunikasjon, slik at alle forstår oppgaver og mål, samtidig som en jobber under tidspress. Dette er noe Spider Manufactures har jobbet med og blitt bedre på gjennom prosjektperioden. I tillegg har tverrfaglig kommunikasjon vært svært viktig, slik at vi kan forstå hva den andre disiplinen ønsker ut av arbeidet vi utfører (HW).
Prototype 1:
Prototype 1 består av en plate i 3D-printet PLA og fire bein i laserkuttet kryssfiner. Hvert bein har 3 servomotorer. Denne prototypen ble laget veldig tidlig i prosjektet og vi fant ut at servomotorene brukt til denne prototypen ikke var sterke nok, samtidig som strukturen var veldig ustabil. I tillegg var det ikke nødvendig med en full modell for at Creepy Coders kunne begynne å kode.
Prototype 2:
Prototype 2 tar i bruk to større servomotorer slik at Creepy Coders kunne starte testing på disse. I tillegg består prototypen av et skrustikkfeste i PLA, slik at armen kan festes til et bord. Selve leddene og armene er laget i kryssfiner som er limt sammen.
Prototype 3:
Prototype 3 har et mer avansert design, og bruker 3 servomotorer for å en til akse for bevegelse. Denne gangen gikk vi over til å 3D printe hele modellen i PLA, som gir oss mer frihet i designet. Prototypen bruker et skrustikkefeste med to skruer. Tanken med to skruer i festet var at prototypen skulle kunne festes til flere ulike bord.
Prototype 4:
I dette designet har vi fokusert på kravene våre, samtidig som utfordringer vi har hatt med tidligere prototyper. Blant annet er designet innenfor dimensjonskravet 2m^3 og demperne er ment til å ta opp støt. Selve strukturen er mer massiv enn tidligere prototyper, samtidig er den sterkere. I tillegg har gruppen gjennomført noen FEM-analyser, resultatene blir lagt ved i minnepennen som skal leveres inn.
Prototype 4 består av en laserkuttet 6mm akrylplate som fungerer som kroppen for Arachnatron. På platen har vi tatt i betraktning ulike komponenter som skal monteres på, samtidig som kabelføringen.
På platen er det montert 6 stk bein med 3 stk servomotorer av type DS3235 Pro i hver av disse beinene. Servomotorene har en lastekapasitet på 35kg per. I tillegg har nederste leddene av beina støtdempere som skal sikre systemet for støt/vibrasjoner samtidig som trykk-knappsensor. Beinene er produsert i 3D printet PLA.
På undersiden av platen er det montert en batteriholder som er designet etter batteriet som skal brukes. Batteriholderen er produsert i PLA og er montert med 4 skruer.
Ulike kretskort er montert på oversiden av platen. I tillegg er det montert en Rasberry PI Hat Sense holder som er produsert i PLA.
Creepy Coders (Data):
Vi har nå en fungerende kode og vi feirer med versjon 3.0!
Link til github:
https://github.com/martintara/creepy/tree/creepy3.0
Sluttresultatet vårt består av mange forskjellige komponenter. I tillegg til alle delene som er listet opp under, har vi også mange andre deler som er bruk og og testet.
I starten av prosjektet brukte vi en RaspberryPi 5, som dessverre brant opp. Derfor fortsatte vi prosjektet med en RaspberryPi 4, før vi gikk over til Zero da denne passet bedre til vårt sluttresultat.
Servoene har også blitt byttet ut etterhvert som komponentene har blitt testet sammen.
Mye av delene har blitt kjøpt inn privat, i tillegg til komponenter vi hadde fra før, som vi har “lånt” bort til prosjektet.
- Raspberry Pi Zero
- Sense Hat
- 18 Servoer
- Matrix Display
- En god mengde ledninger
Individuelle innlegg
Ole Martin:
Dette siste blogginnlegget markerer slutten på et spennende prosjekt, men innholdet blir kanskje litt kort sammenlignet med alt vi har opplevd underveis. Her kommer en oppsummering av de siste aktivitetene og noen refleksjoner.
CreepyCoder har hatt muligheten til å teste ganglaget på, og selv om resultatene har vært lovende, oppstod det dessverre noen problemer under en av testene. Dette førte til skade på enkelte deler av robotens bein. Heldigvis har jeg klart å få produsert nye erstatningsdeler, og disse er nå montert på edderkoppen, slik at den igjen er klar for videre testing.
Sammen med Vinay har jeg også gjennomgått alle kostnadene vi har hatt i forbindelse med prosjektet, særlig de knyttet til maskinvaredelen. Vi har satt opp et regneark som viser forbruket i detalj, med kommentarer på enkelte punkter der vi har sett mulige avvik eller spesielle forhold. Jeg har brukt en god del PLA til 3D printing. I tillegg har jeg brukt en del på skruer og diverse, men summen som står i oversikten under vil være lavere, ettersom ting ble kjøpt i bulk. Dette gir oss en bedre forståelse av ressursene vi har brukt og kan være nyttig for fremtidige prosjekter. Jeg har også brukt litt penger på godis for motivasjon for gruppen, noe jeg har fått positive tilbakemeldinger om.
Oversikten under viser at jeg har brukt kr. 1978,- for dette prosjektet.
Items | Ole | Vinay |
PLA | 625 | 250 |
Strømforbruk 3D printer | 6 | 2 |
Skruer og div | 738 | 92 |
Verktøy | 0 | 0 |
Servo | 287 | 0 |
Godis for motivasjon | 322 | 0 |
Total per pers | 1978 | 344 |
Total Maskin | 2322 |
En annen milepæl er at vi har klart å filme robotens aller første vellykkede snumanøver! Videoen er vedlagt, og jeg anbefaler virkelig å ha på lyd når dere ser den.
Under testing på gulvet i dronesona var det for lite friksjon mellom føttene og gulvet, så jeg endte med å lage noen strømper til edderkoppen av nitrilhandsker. 😀
Til slutt vil jeg benytte anledningen til å sende en stor takk til alle i gruppen som har bidratt til dette prosjektet. Samarbeidet vårt har gjort dette til en både lærerik og morsom opplevelse. Det vi har oppnådd sammen er intet mindre enn imponerende, og vi har skapt et produkt vi kan være stolte av.
Tusen takk for reisen så langt!
Vinay:
Denne uken har jeg jobbet med ferdigstille CAD-modellene, ved å samle riktige filer og strukturere disse. I tillegg har jeg satt på 4 skiver ved på skruene til batteriholderen.
Jeg og Ole Martin har også opprettet en kostnadsoversikt, og gruppens medlemmer kan legge inn sine utgifter til dette prosjektet. Hensikten med dette var å se hva total summen for prosjektet blir på, og kan seinere brukes til eventuelt redusere kostnadene. Jeg hadde ikke mye utgifter, annet enn PLA brukt til 3D printing og noen kjøpte skruer, skiver og muttere.
Under er en oversikt over utgiftene maskinstudentene har hatt, og jeg har brukt totalt kr.344,- for dette prosjektet.
Items | Ole | Vinay |
PLA | 625 | 250 |
Strømforbruk 3D printer | 6 | 2 |
Skruer og div | 738 | 92 |
Verktøy | 0 | 0 |
Servo | 287 | 0 |
Godis for motivasjon | 322 | 0 |
Total per pers | 1978 | 344 |
Total Maskin | 2322 |
Et annet bidrag jeg gjorde denne uken er å formulere felles konklusjonen for Spider Manufactures lengre oppe i bloggen.
Til slutt har jeg også lyst til å takke alle i gruppen for et godt samarbeid mot et felles mål.
Kristian:
Mye av den siste tiden har jeg vært ute av spill med forkjølelse. Jeg har ryddet opp i CAD-filene for levering, og tatt noen fine bilder.
Martin:
Siste innspurt for meg besto av x antall timer med å finne ut av matematikken bak invers kinematikk. I desperasjon begynte jeg bruke chat gpt. Det måtte jeg angre bittert på for det bare villledet meg. Løsningen kom frem da jeg tok ett steg tilbake og metodisk tegnet opp alle vinkler og lengder på nytt. Løsningen viser seg å være relativt enkelt. Det handler bare om å gjenkjenne riktige vinkler og lengder. Ellers er det bare enkel trigonometri. Da jeg kom meg frem til de riktige formlene så var det enkelt å lage en python funksjon som tar inn ønsket x,y,z som innargument. Funksjonen returnerer da de tre vinklene servoene i en arm trenger å stå i for å nå dette punktet.
Test av draw straight line:
For å få til en rett linje må man bruke denne funksjonen mange ganger for å “tegne” masse punkter. Her skjønte jeg fort at jeg måtte bruke threading siden flere bein skal bevege seg samtidig.
Ida:
Denne uken har jeg jobbet mer med simulering i Blender. Jeg har forsøkt å implementere en sensor slik at roboten kan detektere hindringer. Jeg har dessverre ikke oppnådd ønsket resultat, men har lært en del mer om simuleringsverktøyet. Jeg prøvde først gjennom Python kode og deretter med Blender sitt verktøy “Geometry Nodes”.
Didrik:
Martin fikk til matten! Math genius!!!
- På starten av uken så hadde Martin klart å forstå matten i den inverse kinematikken som da gjorde det mulig for oss å utvikle et bedre ganglag som kunne bruke større skritt enn vår tidligere “simple walk”.
Nytt problem, eksemplet vi brukte fungerer kun på de to midterste beina
- Når Martin prøvde å implementere koden til beinene så innså vi fort at eksemplet som ble brukt ikke tok til betraktning at servoene vi hadde montert ikke alle var parallelle med hverandre.
Må sjekke at matten fungerer på alle bein.
- Så vi måtte sjekke at matten var universell slik at vi kan bruke det som startpunkt for å utvikle funksjonene slik at leg0, leg2, leg3 og leg5 beveger seg i en rett linje som samsvarer med leg1 og leg4. Jeg og Martin jobbet med det, men det var nok en gang Martin som først kom fram til at den var universal.
Innser at tripod ganglag er for ustødig med spredt bein.
- Nå som vi benytter oss av globale koordinater så prøvde vi å reprodusere tripod gait (ganglag som flytter tre og tre bein av gangen), men med mer spred og lengre skritt så vi nå at det gjorde at roboten ble for ustødig så vi gikk over til ripple gait som har kun beveger to av beinene av gangen.
Designer ripple gait med Martin.
- Jeg og Martin startet enkelt med å tegne opp bevegelsene som skulle blitt utført for å finne hvor bevegelsene “looper” slik at vi kan ha kontinuerlig bevegelse. Deretter så begynte en iterativ prosess hvor vi justerte på delay, start -og ende koordinater og skrittlengde før vi fikk noe som fungerte bra nok.
Designer ripple gait rotasjon!
- Neste dag så var det på igjen med å få til rotasjon med ripple gait både til høyre og venstre. Samme konsept som for å gå framover hvor vi starter med tegninger for så å drive med mer iterasjon og flere justeringer både på rotasjon og på framover-bevegelsen når vi fant en bedre løsning. Suksess!
Oppsummering
- Dette prosjektet har vært veldig interessant og jeg har lært mye. Vi hadde nok bitet over litt for mye når vi startet, men jeg er stolt av hvor mye vi fikk til.
Å jobbe med maskin studentene og være med å forme produktet med vår input var veldig kult. Jeg takker dem for tålmodigheten når vi kommer med nye spesifikasjoner eller ødela en del.
Jeg og Martin har jobbet tett sammen gjennom prosjektet og han har lært meg mye, men det betyr ikke at de andre på data ikke har vært med å diskutere og planlagt hvordan vi skal gå framover. Takk for alt!
Bjørn Ole:
Jeg har jobbet litt med koden for avstandssensor, slik at denne enkelt kan implementeres i systemet. Dette gjør at den kan oppdage objekter foran seg og ta avjgørelser basert på dette. Når den målte avstanden er mellom 1 og 50 cm. vil den utføre en handling. Ved å ikke velge 0-50 cm eliminerer vi alle 0-målingene, som er et problem med denne typen sensorer, da de ofte returnerer 0.
I tillegg er jeg i gang med å lage nye UML-diagrammer slik at disse er tilpasset koden som roboten bruker.
Klasse-diagrammet hviser hvilke funksjoner hver enkelt klasse har og hvordan de samhandler i systemet.
Sekvensdiagrammet viser hvordan systemet opererer fra start til slutt.