Årets første autonome flyving

Onsdag 27. juni fikk vi oss endelig en ny tur til flystripa på Sandsvær. De siste ukene har vi blitt kjent med ulike verktøy og vi hadde noen ting vi ville teste i praksis. Vi kan naturligvis ikke fly droner inne på kontoret vårt, så flytester må utføres der ute. Med oss på testen hadde vi 5 veiledere og vår prosjektleder. I tillegg var Helene som er sommerstudent på Kommunikasjonsavdelingen med oss og dokumenterte testen. Vi kjøpte med oss grillmat og engangsgriller og var klare for en lang dag. 

 

 

Det var i korte trekk 5 ting vi ville teste: å laste opp missions til dronen fra QGroundControl, å lese inn missions fra fil via en ROS-node, om modusen i QGroundControl som ber dronen lande når batteriet er lavt overstyrer ROS, å kjøre autonomt via en ROS-node og å teste kameraet og oppløsningen til dette in flight. Alle disse testene var nyttige for å lære mer om hvordan dronen fungerer og om QGroundControl er noe vi kan bruke ved siden av egen kode. 

 

Første test ut var killswitch på manuell kontroller. Vi armerte dronen for deretter å utløse killswitchen. Å ha en killswitch tilgjengelig til enhver tid er avgjørende når vi senere skal teste autonom kode. Det er ikke alltid ting går som planlagt og da må man ha en måte å få propellene til å slutte og snurre raskt og effektivt. Denne testen gikk bra, dronen avsluttet motorene med en gang killswitchen ble utløst, og vi suste avgårde til neste test.  

 

Neste test var ikke like suksessfull. QGroundControl er en flight controller og et verktøy for å planlegge missions for droner som bruker MAVLink. Vi ønsket å lage et missions i QGroundControl og laste opp dette til dronen og få den til å fly en liten runde på flystripa. Dette fant vi raskt ut at ikke funket, og research viser at dette er et kjent problem med QGroundControl og vår Intel Aero-drone. Målet vårt er å skrive egen software for å få dronene til å fly og ikke bruke QGroundControl sin funksjonalitet, så at dette ikke funker er ikke avgjørende for oss og vi gikk videre med testingen. 

 

Det neste vi testet var å kjøre en ROS-node på dronen som leser inn mission-filer og får dronen til å utføre dette. Vi laget en mission-fil i QGroundControl som sa at dronen skulle ta av, fly til et waypoint og deretter lande. Etter litt fiksing og triksing med filstier og IP-adresser fikk vi det plutselig til og dronen suste til første waypoint med en overraskende fart. Å se dronen fly uten manuell styring var veldig kult og absolutt en milepæl for oss! 

 

Så byttet vi drone og bildebehandling tok over. Vi styrte dronen manuelt og lagret ROSbags med videostream og høydedata slik at vi kan analysere videoen i ettertid. Under filmingen gikk ulike personer inn og ut av bildet og vi hadde laget templates på forhånd som vi la rundt på flystripa. 

 

Det neste vi testet var det vi var mest spent på, nemlig å kjøre en drone autonomt via en ROS-node uten hjelp fra QGroundControl. Den første noden vi testet skulle enkelt og greit få dronen til å ta av og fly oppover i 5 sekunder for så å lande igjen. Dette gikk som en drøm, dronen fløy opp på første forsøk og landet pent uten noe innblanding fra oss. Neste test var derimot litt mer utfordrende. Mens vi sto ved teststasjon og feilsøkte kom plutselig dronen flyvende rett imot der vi sto! Hadde vi laget et autonomt monster? Svaret var selvfølgelig nei, det var vår egen feil. Koden vi kjørte gjorde at dronen satt origo på stedet der den ble startet opp, noe vi gjorde på bordet ved teststasjon før vi satte den ut på flystripa. Dronen prøvde så å komme seg til origo etter takeoff, som da var akkurat der vi sto. Vi lærte fort av våre feil, og selv etter en dramatisk første kjøring kjørte vi testen på nytt. Da startet vi opp dronen ute på banen og den oppførte seg som forventet og ønsket.  

 

Det aller siste vi gjorde var å teste batteritid og landing ved lavt batteri. I QGroundControl kan man sette en modus som sier at når batteriene har nivå under 10% så skal dronen lande. Vi kjørte en ROS-node som fikk dronen til å ta av og holde seg 0,5 m over bakken til vi ga beskjed om noe annet. Vi ble så stående og vente i spenning mens batteriet sakte men sikkert ble utladet. Ved 9% kom beskjeden vi ventet på: “critical battery, landing at current position”. Dronen landet, men så fort den traff bakken fløy den rett opp igjen. Det viser seg at QGroundControl vil konkurrere mot meldinger fra ROS-noder, men ikke overstyre. Det er ofte tester som ikke går helt som forventet man lærer mest av, så vi er glad vi fikk testet dette tidlig! Vi har også fått tatt tiden på batteriene våre, og vi kunne fly i 8 minutter når batteriet startet på 69%. Vi beregner dermed en flytid på nesten 12 minutter når batteriene er fulle.

 

 

Se bilder fra onsdagens flighttest her: