Geniales Teil gefällt mir sehr gut.
Wenn ich doch mal wieder zeit für meinen Robi hätte.
Gruß
@solo
Nö. Versuch mal einen Besen auf der Hand zu balancieren. Das ist einfacher, wenn die schwere Seite, sprich der Kopf mit den Borsten oben ist.Bin mir nicht ganz sicher aber ich glaube es wäre für den Schwerpunkt des Roboters besser wenn die Batterie möglichst nah an der Achse liegen würden.
Beim "balancierenden Roboter hat" man mehr mit der Massenträgheit als mit dem Drehmoment/Hebelwirkung zu kämpfen.
Es geht daher beim Aufbau daher darum, dass der Roboter möglichst langsam kippt, damit die Regelung mehr Zeit hat dem entgegenzuwirken.
Dafür ist es günstiger, wenn das Gewicht weiter von der Achse weg ist.
Hier gibt es noch einen Thread über balancierende Roboter. In dem findest du da eine Menge Infos zu dem Thema.
Geniales Teil gefällt mir sehr gut.
Wenn ich doch mal wieder zeit für meinen Robi hätte.
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Hi,
klasse Arbeit was du da gemacht hast, RESPEKT!
Ich hab mich bis her noch nicht mit two wheel bots beschäftigt,
jedoch würde mich eins interessieren...
wie bringt man den guten Bot nun dazu vorwärtz b.z.w rückwärtz zu fahren und dabei noch die Balance zu halten?
Bye Ulli
Wenn man es genau nimmt, ist der Bot beim Vor- bzw. Rückwärtsfahren nicht mehr genau in der Senkrechten!wie bringt man den guten Bot nun dazu vorwärtz b.z.w rückwärtz zu fahren und dabei noch die Balance zu halten?
Beim Vorwärtsfahren muss man kurz nach hinten fahren, damit sich der Roboter nach vorne beugt. Danach kann man erst vorwärts fahren, ansonsten würde der Bot nämlich nach hinten überkippen!
Hi,
ja das hab ich schon mal bei nBot gesehen das er ein stück zurück fährt und danach vorwärtz.
Aber wie hält man beim gerade fahren die Balance? Also welchen Motor beschleunigt man welchen bremst man ohne dabei ne Kurve zu fahren?
bye Ulli
@sommer
der bot hat nur einen motor...
Hi,
der hier schon jedoch habe ich welche mit zwei motoren gesehen und die fahren wie mit vier rädern
Die frage ist wie funktioniert das?!
Bye Ulli
Hallo locked,
ich habe mir das Video und den Code jetzt genauer angesehen. Deine Vermutung, dass der Sharp zu langsam ist, könnte stimmen. Eine Simulation mit geschätzten Daten (da ich die Werte deines Bots nicht genau kenne) zeigen, dass die 40ms Messrate des Sharpsensors schon sehr kritisch sind. Für eine genauere Analyse bräuchte ich aber die genauen Daten deines Bots, wie die Zeitkonstante der Beschleunigung, die Höchstgeschwindigkeit und die Schwingdauer des Bots als Pendel. Eine andere Möglichkeit herauszufinden ob der Sharp zu langsam ist, wäre die Schwingdauer des Bots versuchsweise zu verlangsamen. D.h. den Schwerpunkt weiter nach oben zu verlegen. Dummerweise geht der Abstand des Schwerpunkts nur mit der Wurzel in die Schwingdauer ein, so dass für doppelte Schwingdauer der Abstand vervierfacht werden muss. Aber ein Versuch wäre es ja wert. Wenn es dann funktioniert, liegt es wirklich an der Messrate des Sharp.
Des weiteren hier noch einige Tipps:
1. Den D-Anteil im Code mit 511 anstatt 255 berücksichtigen, da dein max. PWM-Wert 511 ist. Nach der Anpassung muss vielleicht Kd geändert werden.
2. Die Reibung als Offset in der Ansteuerung berücksichtigen: Dazu den PWM-Wert ermitteln, bei dem dein Bot gerade noch nicht rollt (wird vermutlich zw. 100...200 liegen) und den Wert zur Stellgröße des Reglers hinzu addieren. Dadurch wird die Nichtlinearität der Regelstrecke verursacht durch die Reibung etwas kompensiert. Diese Maßnahme könnte vielleicht die Stabilität etwas verbessern.
3. Eine Ursache für die Instabilität ist auch noch, dass dein Regler nur den Winkel ausregelt und nicht noch zusätzlich die Geschwindigkeit oder Position. Nach dem Einschalten und dem ersten Ausregelvorgang wird sich eine zufällige Geschwindigkeit einstellen bei der der Bot senkrecht steht. Diese Geschwindigkeit muss dann beibehalten werden, um den Bot auszubalancieren. Nur per Zufall wird die Geschwindigkeit nach dem ersten Regelvorgang sehr gering sein und der Bot längere Zeit stehen bleiben. Dieses Problem kann nur durch zusätzliches Berücksichtigen der Geschwindigkeit oder Position behoben werden. Falls keine Odometrie vorhanden ist, kann durch eine mathematische Nachbildung des Antriebs und Schätzung der Geschwindigkeit das Problem umgangen werden. Inwieweit das auch in der Realität funktioniert, weiss ich nicht, zumindest in der Simulation hat es gewirkt.
Ähnliches gilt auch für einen möglichen Offset des Sensors, der kann auch durch die Berücksichtigung der Geschwindigkeit oder Position ausgeregelt werden.
4. Die Wiederholrate des Reglers mit 500us macht wenig Sinn wenn die Messrate des Sharp 40ms ist. Aber falls der Sharp kein Signal hat ab wann die neue Messung gültig ist, dann lass es so, sonst gibt es noch eine zusätzliche Totzeit.
Hier noch der Teil des Code mit der Einarbeitung der ersten beiden Tipps. Einen Beispielcode für den 3.Tipp kann ich Dir geben, wenn ich die Daten für deinen Antrieb habe.
Ich hoffe das hilft Dir etwas weiter. Wünsch Dir viel Erfolg.Code:yd = (e - ealt)*kd; // D-Anteil berechnen und mit yd += drest; // nicht berücksichtigtem Rest addieren if (yd > 511) drest = yd - 511; // merke Rest else if (yd < -511) drest = yd + 511; else drest = 0; yp = e*kp; // P-Anteil berechnen y = yp + yi + yd; // Gesamtkorrektur ealt = e; // x merken if(y>=0) { lon; roff; } else { //y=-y; loff; ron; } y = abs(y) + Offset ; //Kompensation der Reibung if(y>511)y=511; OCR1A=y;
Gruß Waste
Hallo alle zusammen, und herzlichen dank für eure Komplimente .
Nun ja ich überlege, ob ich nicht einen 2.ten Sharp Sensor einbauen soll. Da ich dann quasi „farbunabhängig“ währe, und mir nur ein Differenzsignal aus beiden Sensoren bilden müsste. (wenn 0 dann ist der Bot in der Wage)
Weiter währe noch die AD Wandlung zu bemängeln, habe jedoch zu Zeit keine Lösung für dieses Problem .
Ich habe übrigens aktuelle das C File zum Downloaden bereitgestellt
(da ich mit die Berechnung von P, I, D Anteil zum Teil vom Asuro als Linienfolger abeschaut habe, haben einige Parameter nicht gestimmt: zB. die Abtastrate, die Begrenzungen… )
Regelparameter: kp=15; ki=30; kd=600;
@Mechi: Ich würde dich gerne helfen, du kannst ja per PN mir schreiben.
PS.:
Ich hoffe es kann nun jeder das Video anschauen. Leider ist es so kompliziert, da ich keinen besseren FTP gefunden habe.
Sonst bitte per PN schreiben, ich schicke das Video gerne via Email.
Mit freundlichen Grüßen Roland
Hallo Roland,
wieviel Grad als Winkel entspricht denn 1 Digit. Wenn das deutlich weniger als 1 Grad ist, dann macht das nichts aus.
Aber ich habe schon gelesen, dass der Sharp ab und zu Ausreisser in der Messung hat. Auf dem DVM zeigt das vielleicht nur 1 bis 2 Digits an, aber in Wirklichkeit sind das vielleicht große Ausreisser. Das wäre eine Erklärung für die plötzlichen Zuckungen deines Bots. Solltest mal mit einem Oszi überprüfen.
Waste
Lesezeichen