Author Topic: Witty self-balancing Bot  (Read 43801 times)

boxtec-support

  • Moderator
  • Hero Member
  • *****
  • Posts: 787
  • Karma: +15/-0
    • Boxtec Web
Re: Witty self-balancing Bot
« Reply #15 on: July 05, 2019, 03:37:50 PM »
Hallo Reto,

Zu a): das ist mir so im Zusammenhang nicht aufgefallen, aber wäre eine plausible Erklärung für zwischendurch ausreissende Werte vom Gyro.

Zu b): Wäre es ev. eine Idee den Gyro auf Headers ein paar mm in die Höhe zu bringen (mehr Ausschlag in den Messwerten) und eine doppelt so grosse Batterie zu montieren?

Ich hab heute von Jean-Daniel Headers für Euch erhalten und etwas was mit b) helfen würde, aber das zeig ich Euch morgen dann  :D

Grüsse - Christoph

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: Witty self-balancing Bot
« Reply #16 on: July 05, 2019, 09:38:16 PM »
Hallo Christoph

Ich habe den Gyro auf einem "Kissen" gelagert und stelle eine Verbesserung vor allem beim Lagesensor fest. Hier zwei Messungen. Der Witty ist durch das USB Kabel stabilisiert und die Räder drehen in der Luft. Die Motoren fahren von 0 auf Max 70. Ich denke Ihr seht den Unterschied zwischen mit "Kissen" und ohne.

Blau => Motor
Grün => Beschleunigungssensor
Rot => Lagesensor

In der Hälfte der Zeit habe ich den Witty noch um ca. 90 Grad aufgerichtet. Der Lagesensor geht von 90° in die Nähe von 0°.

Cool, dann bin ich mal gespannt.

Gruss Reto

boxtec-support

  • Moderator
  • Hero Member
  • *****
  • Posts: 787
  • Karma: +15/-0
    • Boxtec Web
Re: Witty self-balancing Bot
« Reply #17 on: July 07, 2019, 12:58:32 PM »
Hallo zusammen,

Wie besprochen, habe ich Mathias' Sketch mal in git importiert:

https://git.boxtec.ch/boxtec/witty

Grüsse - Christoph

Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #18 on: July 07, 2019, 01:17:44 PM »
Hallo Christoph

Mal ein Frage zu Git. Je nach Browser sieht das anders aus.

Beim Safari kommen gewissen Teile in einer Fremdsprache (siehe Anhang).

Bei Google Chrome habe ich dasselbe Ergebnis, nur fragt der Browser jetzt ob er Bulgarisch zu Englisch übersetzen soll. Die Übersetzung ist dann korrekt.

Nur bei Firefox wird ungefragt die englische Version angezeigt.

Das ist eigentlich kein Problem für mich, ich frage nur aus Neugierde.

Gruss
René

boxtec-support

  • Moderator
  • Hero Member
  • *****
  • Posts: 787
  • Karma: +15/-0
    • Boxtec Web
Re: Witty self-balancing Bot
« Reply #19 on: July 07, 2019, 01:43:13 PM »
Hallo Rene,

Danke für das Feedback. Ich selber hab den Effekt noch nie gesehen, habe aber auch nur einen Firefox zur Verfügung. Ich habe aber im gitea Issue Tracker zwei Meldungen gefunden die einerseits das Problem beschreiben, aber andererseits geschlossen wurden weil das Problem nicht reproduziert werden konnte.

Wenn Du ganz unten in der Seite auf englisch setzt, bleibt das dann gesetzt (auch über Browser-Neustarts hinweg) ?



Grüsse - Christoph

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: Witty self-balancing Bot
« Reply #20 on: July 08, 2019, 06:00:38 PM »
Hallo Zusammen

Unser Coding funktioniert. Ich habe nur noch ein paar Parameter angepasst und schon balanciert der Witty.  :)
Natürlich balanciert er noch nicht so ruhig aber immerhin funktioniert es prinzipiell. Hier ein kurzes Video:

https://youtu.be/oOQ5vPMR7Ec

Das Coding findet Ihr hier: https://git.boxtec.ch/boxtec/witty/src/branch/Reto

Zum Vorgehen. An die Werte der Parameter kp, ki, kd muss mann sich annähern.
Zudem habe bei den Test's festgestellt, dass der Spannungsunterschied zwischen
USB und Lipo recht gross ist. Daher habe ich in das Kabel vom FTDI Chip noch
ein 3.3 Volt Spannungsregler eingebaut.

Danach habe ich noch eine Routine eingebaut um über die Serielle Schnittstelle
diese Parameter verändern zu können. Wenn zum Beispiel kp=4.280 eingegeben wird
setzt er kp auf 4.280. Damit kann man sehr schnell die Parameter testen.
Natürlich hat das Kabel einen kleinen Einfluss auf das Balancieren. Daher habe ich
versucht ein sehr dünnes flexibles Kabel zusammenzubauen. Unten ein Bild.

Der Wechsel auf den Lipo war dann schon noch mit kleinen Parameter Korrekturen verbunden
aber der Unterschied ist viel kleiner.

Viel Spass
Gruss Reto



Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #21 on: July 09, 2019, 06:55:20 PM »
Hallo zusammen

Ich habe die Diode überbrückt damit der Akku etwas mehr Spannnung liefert. Der Code ist von Reto, Angle_to_balance auf 0 gesetzt, damit Witty aufrecht stehen kann. Das funktioniert noch nicht so richtig, er braust nach kurzer Zeit in eine Richtung los.

Das Video:

https://youtu.be/WC2ZVXS3w2Q

Gruss
René

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: Witty self-balancing Bot
« Reply #22 on: July 09, 2019, 08:44:42 PM »
Hallo René

So schlecht sieht es aber nicht aus. Die Parameter etwas einstellen und dann funktioniert es ;-)

Ja ich habe noch etwas vergessen zu erwähnen. Die Motoren arbeiten Vor- und Rückwärts nicht gleich.
Das kannst Du mit diesen Parametern RMotor_offset_bck, LMotor_offset_bck usw. ausgleichen.
Bei war Rückwärts schwächer bei Dir scheint jetzt Rückwärts noch schwächer zu sein. Denn er fährt immer mehr Vorwärts.
Ich würde mal mit den beiden *bck Variablen spielen. Evlt. noch höher als bei mir einstellen oder auf 0 und vergleichen
ob Dein Problem sich verändert.

Hier übrigens die Anleitung für das Balancieren selber, das scheint bei Dir aber nicht schlecht zu sein:

// Tuning:
// 1. Set Ki and Kd to zero and gradually increase Kp so that the robot starts to oscillate about the zero position.
//
// 2. Increase Ki so that the response of the robot is faster when it is out of balance. Ki should be large enough so that the angle of inclination does not increase. The robot should come back to zero position if it is inclined.
//
// 3. Increase Kd so as to reduce the oscillations. The overshoots should also be reduced by now.

Viel Erfolg.
Gruss Reto

boxtec-support

  • Moderator
  • Hero Member
  • *****
  • Posts: 787
  • Karma: +15/-0
    • Boxtec Web
Re: Witty self-balancing Bot
« Reply #23 on: July 09, 2019, 09:07:56 PM »
Hallo Reto,

Gratuliere, hab Deinen Code auf zwei Wittys ausprobiert, der früheste Prototyp hat zeitweise recht beeindruckend balanciert und sich sogar nach Anstubsen wieder in Balance kriegen können. Beim neueren sehe ich ähnliche Effekte wie Rene. Aber insgesamtn sicher nur eine Frage des Feintunings, die Funktion ist da!

Grüsse - Christoph

Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #24 on: July 10, 2019, 05:31:23 PM »
Hallo Reto

Bei war Rückwärts schwächer bei Dir scheint jetzt Rückwärts noch schwächer zu sein. Denn er fährt immer mehr Vorwärts.
Ich würde mal mit den beiden *bck Variablen spielen. Evlt. noch höher als bei mir einstellen oder auf 0 und vergleichen
ob Dein Problem sich verändert.

Leider gibt das keine Veränderung. Das Verhalten scheint ausschliesslich vom Schwerpunkt bestimmt zu werden.
Eigentlich möchte ich auch nicht einfach nur stehen bleiben. Das Ziel wäre, in jede beliebige Richtung fahren zu können und auch Kurven sollten möglich sein.
Zum Glück bleibt noch etwas Zeit bis zum nächsten Treffen.

Gruss
René

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: Witty self-balancing Bot
« Reply #25 on: July 10, 2019, 08:41:50 PM »
Hallo René

Ich denke die Motoren von Dir brauchen weniger Strom als andere und daher sind sie im Moment zu stark angesteuert.
Ja klar das Ziel ist dann fahren und steuern aber zuerst musst er ruhig und kontrolliert stehen können.
Ansonsten ist dann auch eine Fahrt nicht unter Kontrolle.

Dann würde ich mal so beginnen. Alle Motor offset Variablen, kd und ki auf 0 setzen.
Das kp auch relativ tief ansetzen und so Vorgehen:


// Tuning:
// 1. Set Ki and Kd to zero and gradually increase Kp so that the robot starts to oscillate about the zero position.
//
// 2. Increase Ki so that the response of the robot is faster when it is out of balance. Ki should be large enough so that the angle of inclination does not increase. The robot should come back to zero position if it is inclined.
//
// 3. Increase Kd so as to reduce the oscillations. The overshoots should also be reduced by now.


Wenn du dann in einem Stadium einen Unterschied zwischen Vorwärts und Rückwärts oder Links und Rechts feststellst kannst Du dann mit den Motoren Offets das korrigieren.

Viel Erfolg
Gruss Reto

Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #26 on: July 10, 2019, 09:47:50 PM »
Hallo Reto

Die Offset - Variablen sind auf 0. Bei Änderung von Kp, Ki und Kd wird er unstabiler, bezüglich 'davonlaufen' ändert sich nicht viel. Die verwendeten Parameter sind also gar nicht so schlecht.
Der Schwerpunkt ist auf der Seite des Plastikteils. In diese Richtung fährt er auch.
Wenn ich das Plastikteil entferne, liegt der Schwerpunkt auf der Seite des Akkus. Der Roboter fährt dann in diese Richtung.
 
Ich habe einen etwas abenteuerlichen Aufbau gemacht, so dass der Schwerpunkt über der Motorachse liegt. Und schon steht der Roboter. Er stabilisiert sich sogar wieder, wenn ich ihn anstosse. Er ist etwas wackelig auf den Rädern, aber das könnte sicher noch genauer eingestellt werden. Es besteht auch eine kleine Differenz zwischen den beiden Motoren.

Das Video: https://youtu.be/gf3MpruhwGg

Damit verhält er sich wie ein bemanntes Fahrzeug (Segway). Dort steuerst du Richtung und Geschwindigkeit auch durch Verlagerung des Schwerpunktes.
Kannst du bei dir auch einen ähnlichen Effekt feststellen?

Gruss
René

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: Witty self-balancing Bot
« Reply #27 on: July 12, 2019, 09:40:24 PM »
Hallo Réne
Ah jetzt sehe ich das Problem. Das heisst also du musst den Winkel zum Balancieren auf den Schwepunkt einstellen damit er still stehen kann. Zwar nicht mehr "gerade" aber still. Das heisst dann auch zum vorwärtsfahren müssen wir nur den Winkel verstellen und er fährt vorwärts. Ich habe heute meine Tochter beim Einradfahren beobachtet und das ist genau das gleiche.  :)
Ich habe auch mit dem Einrad geübt aber das hat weniger etwas mit balancieren zu tun   :o
Gruessli Reto

Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #28 on: July 13, 2019, 09:58:55 AM »
Mit der Veränderung des Winkels funktioniert es mehr oder weniger. Die Parameter müssten vermutlich noch etwas optimiert werden. Momentan habe ich etwas wenig Zeit, werde aber demnächst einmal versuchen etwas herumzufahren.

https://youtu.be/DHGm8FWX3EM

Gruss
René


Rene

  • freakyfriday
  • Full Member
  • *
  • Posts: 138
  • Karma: +6/-0
    • Video - Tutorials für Hobbyelektroniker
Re: Witty self-balancing Bot
« Reply #29 on: August 05, 2019, 02:55:01 PM »
Hallo zusammen

Das nächste Witty - Treffen ist ja in Kürze und ich bin noch kein Stück weiter. Inzwischen habe ich mehr oder weniger alle Teile des Wittys im Griff, mit Ausnahme des Balancierens. Seit ihr da schon weiter gekommen ?

Gruss
René