Welkom  

   

Mijn Menu  

   

What's Up  

za mei 18 @12:00AM
ZF Pinkstertrip 2024
   

Wedstrijd  

Geen evenementen
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Welkom, Gasten
In deze sectie horen alleen topics welke een project beschrijven. Hiervoor gelden bijzondere regels. De beschrijving van het project staat centraal, reacties van zowel de Topic Starter (TS) als andere leden zijn alleen toegestaan indien deze rechtstreeks betrekking hebben op de projectinhoud. Zie ook de forumregels die hierop van toepassing zijn.

Onderwerp: DIY autopilot computer op basis van arduino

DIY autopilot computer op basis van arduino 05 juni 2020 08:25 #1169318

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
Hallo ZFers,

Ik lees al best een aantal jaartjes mee op ZF maar post eigenlijk niet. Dus even een korte introductie. Zeilen doe ik al van jongs af aan, begonnen bij de scouts daarna in een polyester spanker en inmiddels in een kajuit bootje. Ligplaats aan de braassemermeer, in de zomer meestal een maand of twee aan het markermeer.

Ben al een tijd aan het denken om zelf een autopilot computer te ontwikkelen. Toen ik aan het project begon had ik nog nooit over PID controllers, arduino motor drivers etc gehoord, hobby dus. Mijn doel is een simpele autopilot computer die stuurt op basis van een kompas. Dus geen nmea inputs voor wind en routes, etc ( pypilot doet dit wel).

Na verschillende versies getest te hebben, waarbij de autopilot alle richting stuurde behalve de gewenste, gaat het inmiddels beter. Op een vlakke braassem met weinig wind gaat het goed. Er is dus zeker nog ruimte voor verbetering. Echter heb ik momenteel weinig tijd om veel te testen (ivb met nieuw huis etc.

Als drive gebruik ik momenteel een autohelm 3000 (wheel drive). Aanvankelijk was ik van plan een windshield wiper motor te gebruiken ala “CPT autopilot”. Misschien in een volgende fase.

De autopilot computer heb ik uit de volgende onderdelen opgebouwd:

• Arduino UNO rev 3

• VMA203 LCD Keypad ( https://www.velleman.eu/products/view/?id=435510 ) via conrad waarschijnlijk werkt een andere df robot keypad clone ook.

• SparkFun VR IMU Breakout - BNO080 (Qwiic) ( https://www.antratek.nl/vr-imu-breakout-bno080 )

• IBT-2 motor driver (BTS7960) (https://www.tinytronics.nl/shop/nl/robotica/motoren/motoraansturingen/bts7960-btn7960-motor-driver-high-power-43a)

• DC-DC 5V Step-down Buck Converter 1A (https://www.tinytronics.nl/shop/nl/spanning-converters/step-down/dc-dc-5v-step-down-buck-converter-1a)

Het aansluiten van de keypad en IMU is simpel, de keypad klik je op de arduino. Voor het aansluiten van de IMU via I2C heb ik een qwiic kabeltje gebruikt (https://www.antratek.nl/qwiic-cable-breadboard-jumper-4-pin). Waarbij ik SCL en SDA aan de achterkant op de arduino heb gesoldeerd (D18 en D19) en vastgezet met hotglue.

De motordriver zit aan de pinouts van de keypad.

_R_EN pin 12
_RPWM pin 11
_LPWM pin 3
_L_EN pin 2

zie https://wiki.dfrobot.com/LCD_KeyPad_Shield_For_Arduino_SKU__DFR0009 voor de pinouts van de keypad.

De Arduino sketch staat op github: https://github.com/arne1981/helmsman

Misschien is de ap ook wel geschikt voor de linear drives die aantal leden van het forum hebben aangeschaft.

Groet, Arne



Laatst bewerkt: 05 juni 2020 08:30 door arneh.
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 09:33 #1169360

  • Joop66
  • Joop66's Profielfoto
  • aanwezig
  • Gebruiker
  • Berichten: 7819
Hi Arneh,

Als je dit gaat doen, ga je een aantal zaken ontdekken:

1: De resolutie van een on-chip kompas is niet voldoende. Je AP gaat altijd te laat reageren. Niet als de boot begint met draaien, maar als hij al gedraaid is. Om dit te verhelpen heb je een gyroscoop nodig. Die geeft de draaisnelheid van je boot weer. Is er dus veel eerder bij. Vaak wordt daar een 9D chip voor gebruikt die ook veel in mobiele telefoons zit. Je laat de PID terugkoppelen vanuit de gyro.
2: Dan heb je nog geen koers. JE maakt dus een tweede, langzamere lus hieroverheen die je laat aansturen door het kompas. De wind functie van een Raymarine is een lus daar weer overheen.
3: Daardoor wordt het tunen veel complexer. De balans tussen performance en instabiliteit wordt veel kleiner.
4: De optimale PID instellingen veranderen met koers, helling, snelheid en "seastate".

Mooi project! Ik ga je volgen. Ik ben heel heel erg benieuwd hoe ver je komt.
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 09:37 #1169363

Leuk project Arne. Wellicht had je deze al eens gezien; ook bezig met een stuurcomputer: Autopilot for Sailing Boats
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 09:39 #1169367

Mooi om te doen, maar vooral omdat het zo complex is. Dus lastig om echt goed te krijgen.
Ik zou echter wel voor een veel krachtigere controller gaan, hoor.
Je graat vroeg of laat tegen de beperkte performance van de arduino aanlopen.
Ontwerper van de RoosMux, en andere apparaatjes.
www.viax.nl

It's been said that a boat is a vessel continually looking for ways to sink itself..
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 11:16 #1169414

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
Joop66 schreef :
Hi Arneh,

Als je dit gaat doen, ga je een aantal zaken ontdekken:

1: De resolutie van een on-chip kompas is niet voldoende. Je AP gaat altijd te laat reageren. Niet als de boot begint met draaien, maar als hij al gedraaid is. Om dit te verhelpen heb je een gyroscoop nodig. Die geeft de draaisnelheid van je boot weer. Is er dus veel eerder bij. Vaak wordt daar een 9D chip voor gebruikt die ook veel in mobiele telefoons zit. Je laat de PID terugkoppelen vanuit de gyro.
2: Dan heb je nog geen koers. JE maakt dus een tweede, langzamere lus hieroverheen die je laat aansturen door het kompas. De wind functie van een Raymarine is een lus daar weer overheen.
3: Daardoor wordt het tunen veel complexer. De balans tussen performance en instabiliteit wordt veel kleiner.
4: De optimale PID instellingen veranderen met koers, helling, snelheid en "seastate".

Mooi project! Ik ga je volgen. Ik ben heel heel erg benieuwd hoe ver je komt.

Dat is het leuke van het project vind ik, er is een hoop te leren :-)


Ik heb gekozen voor de BNO080 die doet sensor fusion op basis van 9 assen. Ik heb de indruk dat de sensor snel reageert. En hier mee punt 1 2 en 3 te ondervangen. Maar de praktijk moet dit uitwijzen! Dat het niet makkelijk is ben ik inmiddels wel achter :P

Voor het aanpassen van de PID settings afhankelijk van de "seastate" maak ik gebruik van gradient descent algoritme. Nog onvoldoende getest. Maar heb daar goede voorbeelden van gezien op internet.

@Yazz heb wel andere arduino based autopilots gevonden, maar deze kende ik nog niet leuk!
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 11:30 #1169418

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
roozeboos schreef :
Mooi om te doen, maar vooral omdat het zo complex is. Dus lastig om echt goed te krijgen.
Ik zou echter wel voor een veel krachtigere controller gaan, hoor.
Je graat vroeg of laat tegen de beperkte performance van de arduino aanlopen.

Aanvankelijk was ik begonnen met een MKRzero. Alleen de motor driver die ik heb werkt op 5v en had geen zin om iets van een levelshifter toe te voegen. Eerst heb ik een vnh5019 besteld als vervanging voor de ibt-2 echter was dat een doa. Ik had nog een arduino liggen en zowaar draait het best oke (na wat kleine aanpassingen).

De volgende versie wil ik op basis van een esp32 bouwen zonder LCD maar met een android app via BLE. Al aardig op weg. zie de screenshots.
Bijlagen:
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 13:20 #1169460

  • ironman
  • ironman's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 1241
Zelf gebouwd van scratch, he? Petje af!

Ik denk dat je met slechts een kompas best wel een eind komt, zo werken immers de low-end tiller pilots ook. Je wilt je gemeten koers misschien eens plotten tijdens het varen van een rondje - ideaal kom je uit op een rechte lijn van 0 tot 360. Als dat niet zo is, zul je iets moeten doen met een correctietabel - dan weet je direct waarom je met oude autopilots die calibratierondjes moest varen.

Vervolgens is het niet zozeer de reactiesnelheid die een probleem gaat vormen maar zeker ook het feit dat het magnetisch veld van je boot ervoor zorgt dat onder helling de gemeten kompaswaarde verandert. Ik schat in dat dat boven de windkracht 3 gaat spelen. Dat is wat die 9-assige imu's voornamelijk toevoegen: compascorrectie afhankelijk van helling en pitch. Die 3-d correcties realtime doorrekenen kan inderdaad zwaar worden op je arduino cpu - een simpel low-pass filter op je kompas en een pid regeling kan die best wel aan.

Je zult erachter komen dat de dynamiek van het systeem voor een groot deel afhankelijk is van de effectiviteit van je roerblad, en die is afhankelijk van je snelheid door het water. Kortom, je P en D waardes (en je deadband misschien) zijn afhankelijk van de snelheid. Wil je die niet continu aan moeten passen kun je overwegen je speed-through-water op een of andere manier mee te nemen. P/D lijkt constant te zijn trouwens.

Ik heb alleen maar een pypilot nagebouwd en ben niet thuis in meet- en regeltechniek, maar ik denk dat pid-regelingen beperkt zijn gegeven het niet-lineaire karakter van een zeilboot. Tegenwoordig is het bon-ton om overal maar een neuraal netwerk bij te slepen, maar als ik nog jong was zou ik eens kijken naar de mogelijkheden van fuzzy logic.

Succes!
geloof niet alles wat je denkt
Laatst bewerkt: 05 juni 2020 13:25 door ironman.
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 13:32 #1169468

ja, fuzzy leuk!
En veel zeilend programmeren, of programmerend zeilen, om het goed werkend te krijgen.
Dat is weer een voordeel.
Wel iemand meenemen die het uitzicht houdt, anders vaar je zo de wal op... :blink:
Ontwerper van de RoosMux, en andere apparaatjes.
www.viax.nl

It's been said that a boat is a vessel continually looking for ways to sink itself..
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 05 juni 2020 15:13 #1169534

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
Ja een neural network heb ik ook aangedacht, maar eerst een werkende implementatie van een PID regelaar met tunning op basis van gradient descent.

En voordat ik de werking van een neural network goed beheers ben ik nog even bezig. Het verzamelen van goede trainigsdata lijkt me een uitdaging.

Maar dat het moet kunnen een ap op basis van een neural network is duidelijk, zie
deze link.
Laatst bewerkt: 05 juni 2020 17:26 door arneh.
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 04 juli 2020 13:44 #1181819

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
Korte update.

Gister heb ik de esp32 versie + app getest.

De esp32 versie bestaat uit:

-ESP32
-Cytron MD10C motor driver
-3x push button (aan/uit, koers plus drie, koers min drie)
-Sparkfun BNO080 9DOF IMU

Bevindingen:
- Na tunen van de PID settings + sample time werkt de autopilot redelijk
- App is handig als afstandsbediening + wijzigen van autopilot settings
- Maximale roer uitslag van de autopilot is niet voldoende
- Behuizing is goede verbetering
- Auto tune PID werkt niet, waarschijnlijk te grote stappen

In de middag was er te veel wind om nog echt te kunnen testen. Korte impressie:

photos.app.goo.gl/1xNvKMYjq8zrpyMAA
Bijlagen:
Laatst bewerkt: 04 juli 2020 13:49 door arneh.
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 04 juli 2020 14:04 #1181828

  • WillemB
  • WillemB's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 244
arneh schreef :
Ja een neural network heb ik ook aangedacht, maar eerst een werkende implementatie van een PID regelaar met tunning op basis van gradient descent.

En voordat ik de werking van een neural network goed beheers ben ik nog even bezig. Het verzamelen van goede trainigsdata lijkt me een uitdaging.

Maar dat het moet kunnen een ap op basis van een neural network is duidelijk, zie
deze link.

Heel leuk project en goede aanpak, vooral eerst zelf leren en begrijpen wat de relevante variabelen (zouden kunnen) zijn. Zonder dat je dat zelf snapt, kun je die machine dat ook niet duidelijk maken.

Leuk filmpje ook, lijkt al prima te werken! Bij die vlagen op het eind houdt de boel het toch niet helemaal onder controle. Heb je een idee of dat aan de software ligt, of is dat puur de snelheid van de drive?
Alleen ingelogde leden kunnen reageren.

DIY autopilot computer op basis van arduino 04 juli 2020 14:31 #1181833

  • arneh
  • arneh's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 38
De drive is waarschijnlijk niet het probleem. Het zit in de aansturing. De maximale roer uitslag is in de huidige opzet afhankelijk van de sampletime. Bij een korte sampletime is de maximale uitslag te klein. Dit aanpassen is eenvoudig maar had ik nog niet als instelling meegenomen in de autopilot app.
In een volgende versie ga ik dit mogelijk maken + het loggen van de in en outputs om thuis beter te kunnen analyseren.
Alleen ingelogde leden kunnen reageren.
Tijd voor maken pagina: 0.304 seconden
Gemaakt door Kunena
   
   
   
   
© Zeilersforum.nl