You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Våren 2024 hadde Kristian Blom som masteroppgave å videreutvikle hardwaren fra prosjektoppgaven og utvikle software slik at robotarmen skulle kunne brukes likest mulig slik som den kunne originalt.

Denne wikisiden inneholder en oppsummering av masteroppgaven samt notater for praktisk bruk av armen. Koden finnes på github



Oppsummering (abstract)

Innvevde datasystemer er et ingeniørfaglig felt med stort bruksområde. Enten man vasker klær eller holder et ellers ustabilt jetfly horisontalt innebærer de fleste prosesser i dagens verden bruk av en datamaskin. De mange maskin- og programvareløsningene som utvikles til disse prosessene er ofte både billige og lett tilgjengelige for hobbymakere, noe som utvider feltets bruksområde ytterligere: artige prosjekter utenåpenbar verdi ut over det læringsutbyttet de tilfører prosjektenes innehavere. 

Dette prosjektet tilstrebet å reparere en 6DOF-robotarm som ble donert til et studentdrevet verksted på NTNU, Omega Verksted, hvis spesialitet kan sies å være artige hobbyprosjekter. Inspirert av de mange robotbartenderne som finnes i barer verden over ble det satt som mål at armen skulle kunne bevege seg med slik styrke og nøyaktighet at den ville behjelpelig til å blande drinker, og at kontrollsystemet skulle være enkelt nok til at det kunne tas i bruk av folk uten en faglig bakgrunn i robotikk.

Tre kontrollenheter ble utviklet rundt mikrokontrolleren STM32F303, med grensesnitt slik at hver enhet er i stand til å styre to likestrømsmotorer med tilhørende relative enkodere, samt innhente og prosessere data fra treghetsmålere av typen LSM6DSM over I2C. Enhetene kommuniserer med hverandre over CAN-buss, og med eksterne enheter via RS232/UART.

Programvareenheter som implementerer en PID-regulator for styring av leddposisjoner via motorspenning, ble utviklet for å kjøre på mikrokontrollerne. Under uviklingen ble verktøy slik som SOLID-prinsippene og systemkravspesifikasjon tatt i bruk med formål om å oppnå vedlikeholdbarhet og standardisering på tvers av systemmodulene. Kinematikk håndteres av MoveIt, et program under Robotic Operating System-paraplyen, og kjører på en ekstern datamaskin som kommuniserer med armen over UART.

Resultatene indikerer at systemet er marginalt kompatibelt med det forespeilede bruksområdet. Objekter med en lengde opp mot 80 mm langs den korte aksen og med en masse opp mot 0.8 kg kan manipuleres til en presisjon på 10 mm/10°. Systemet ble ikke funnet å ha oppnådd den ønskede graden av autonomi. Planlegging av enkle bevegelser er tilgjengelig (altså en positurendring A → B) men oppgaveplanlegging (altså A → B → C) er det ikke. Systemet viser derimot stort potensiale for å kunne utvides med slik funksjonalitet. Imidlertid var det store problemer tilknyttet bruken av treghetsdata, og både maskin- og programvare behøver videre arbeid dersom presisjon og styrke skal kunne forbedres.

Hardware

Hardwaren beskrevet på hovedsiden til armen ble byttet ut med egendesignet hardware bestående av seks PCB-design. Filosofien var "bytt ut alt som kan erstattes, og som ikke krever endring av armens chassis". Noe av den orignale hardwaren ble derfor værende igjen, og var viktige designfaktorer i utviklingen av PCB-ene: DSUB15-kontakt i  enden av lineærleddet, 16-leders flatkabel som ligger langs hele innsiden av lineærleddet, 20-leders flatkabel som forbinder øvre og nedre del av torso (se fig på siden), og de 6 DC-motorene med tilhørende kvadraturenkodere. Skruehull for festing av PCB'er kan også nevnes som en honorable mention, de var også viktige for designet. Ellers er alt byttet ut/fjernet (et eller annet om han grekeren og båten hans).


  • Prosessor: STM32F303RET6 (72MHz, 32bit Arm Cortex M4)
    • UART: kommunikasjon med ekstern kontroll-datamaskin (115200 Baud)
    • CAN controller: kommunikasjon mellom prosessorer
    • I2C: kommunikasjon mellom prosessor og IMU
    • USB (funker ikke): samme som UART
  • Krystall: 16MHz
  • Motordriver: DRV8215A (PWM-styring)
  • Enkoder: HEDS-9100 (500 cpc, NB: 5V)
  • IMU: LSM6DSM
  • CAN transciever: TJA1057BT
  • Spenningsregulator: LM317HV
    • 3.3V til de fleste komponenter
    • 5V til CAN-transcievere og enkodere

Som nevnt i abstractet funker ikke IMUene. Fant aldri ut av akkurat hvorfor, så kontrollsløyfa er per 29.09.24 ganske enkelt kun mellom enkodere og motordrivere. USB funker heller ikke, mest sannsynlig pga feil i kretsdesignet, så all kommunikasjon med kontroll-datamaskin foregår over UART.

Softwarearkitektur



Onboard software (AL1-3)

Offboard software (AL4)

  • No labels