ct-Bot Basis-Firmware

Die Programmierung des c't-Bot
VDX
Friends of Gort
Friends of Gort
Beiträge: 99
Registriert: 26 Jan 2006, 22:43
Wohnort: Großkrotzenburg (Main-Kinzig-Kreis)

Re: ct-Bot Basis-Firmware

Beitrag von VDX » 26 Jun 2018, 08:47

Hi!

... sehe gerade, daß es hier auch wieder weitergeht - werde dann wohl wieder häufiger vorbeischauen :D

Was denkt ihr von meinem alten Vorschlag, einen noch einfacheren µC mit WiFi/WLAN für die Sensorik+Steuerung zu nehmen und die "Intelligenz" auf den PC auszulagern?

Ich programmiere viel mit dem kleineren Wattuino (ATmega 328) in meinen Laserdiodentreibern oder als "Slave-CNC-Controller" in Lasermarkierern für den automatischen Z-Höhenausgleich oder als Fokus-Shifter ... hab' aber auch schon andere 328-Clones bereits mit einem Funkmodul drauf in der Grabbelkiste liegen.

Hier, auf die Schnelle, eine kleine Auswahl der kleineren Arduinos und WLAN-Module:
Varianten1.jpg
(115.79 KiB) 127-mal heruntergeladen
Viktor
Ciao, Viktor --- Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426

Nightwalker-87
Site Admin
Site Admin
Beiträge: 167
Registriert: 16 Apr 2017, 23:40

Re: ct-Bot Basis-Firmware

Beitrag von Nightwalker-87 » 26 Jun 2018, 11:46

Hi V2!

Schön, freut mich von dir zu hören. :-)
Ein ähnliches Konzept wird gerade im Zuge eines Redesigns der Elektronik verfolgt. Die Idee ist hier allerdings von der ATmega Architektur zu ARMv7M zu wechseln. Grundbaustein soll ein Teensy 3.6 Board sein als Microcontroller. Später ist dann vorgesehen einen RaspberryPi 3 / RaspberryPi Zero W hinzu zu nehmen der Highlevel-Code ausführen kann/soll. Wifi ist auch vorgesehen. Ideal wäre natürlich ein RPi Zero W mit ARMv8 Architektur, aber da müssen wir uns wohl noch etwas gedulden. Die aktuelle Version arbeitet noch mit ARMv6z... Hier wäre es natürlich schön etwas möglichst aktuelles als Grundlage zu verwenden. Aktuelles :idea: dazu gibt es vor allem in unserem chat unter https://ct-bot.slack.com/ bzw. https://riot.im/app/#/room/#ctbot:matrix.org. Dort werden auch Updates von den zugehörigen GitHub-Projekten eingespielt. Das Forum ist hierfür momentan nur bedingt ein Anlaufpunkt.

Viele Grüße
Nightwalker-87
nw-87

VDX
Friends of Gort
Friends of Gort
Beiträge: 99
Registriert: 26 Jan 2006, 22:43
Wohnort: Großkrotzenburg (Main-Kinzig-Kreis)

Re: ct-Bot Basis-Firmware

Beitrag von VDX » 26 Jun 2018, 12:39

... Probleme bei den "großen" µC's sehe ich einmal in der Platinengrö0e, aber auch im höheren Strom, den die zusätzlich brauchen :?

Bei der "WLAN-Kopplung" brauchts wirklich nur die reine minimals Sensor-Aufnahme und Aktor-Steuerung -- alles andere wird im PC (oder auch z.B. fix montiertem RaspBerry) gemacht.

Das ist das alte "Waldo"-Konzept, mit dem ein leistungsfähiger Rechner über Fernsteuerung beliebige (und auch beliebig viele) mobile Geräte (eben die "Waldo's") steuern kann und so deutlich vielseitiger mit der Umgebung (und auch den Leuten) interagieren kann ...

Viktor
Ciao, Viktor --- Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426

eax
Friends of Sonny
Friends of Sonny
Beiträge: 110
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: ct-Bot Basis-Firmware

Beitrag von eax » 26 Jun 2018, 13:45

Hi,

noch kurz zur Erklärung: Ein Teensy (3.5 oder 3.6) Board hat gegenüber einem ATmega328-Arduino den Vorteil, dass es deutlich mehr Schnittstellen bietet, so dass man auch noch weitere Erweiterungen leicht anschließen kann, und außerdem einiges mehr an (Programm-)Speicher, der beim kleinen ATmega ja meist der begrenzende Faktor ist.
Von der Programmierung her sind die Teensy-Boards vollständig Arduino kompatibel. Die Boards sind von der Fläche her mit 61mm x 17mm auch nicht so viel größer als der Wattuino, liegen vom Preis her natürlich darüber (25€ bzw. 30€).
Dadurch, dass der ARM-Controller viel leistungsfähiger ist und deutlich mehr Speicher hat, kann man (wenn man will) die vollständige Bot-Basisfunktionalität dort unterbringen. Weitere Steuerungen kann man entweder auf einen Raspberry Pi oder auch auf einen PC auslagern. An das uC-Board würde ich auf jeden Fall auch ein einfaches WLAN-Modul anschließen, ein kleiner und extrem günstiger ESP8266 würde da z.B. meines Erachtens völlig ausreichen, um das UART auf TCP zu bridgen, so dass man sich per PC verbinden kann, eine High-Level-Steuerung Befehle senden kann usw.
Was den Stromverbrauch angeht, spielt das uC-Board IMHO kaum eine Rolle, kann ich aber gerne noch mal genau nachmessen. Ein Teensy-Board dürfte nur einen Bruchteil vom Rest der Bot-Elektronik brauchen, so dass ein Wattuino, keinen allzu großen Unterschied machen sollte. Laut Spec sind es ~160 mW bei Last gegenüber ~80 mW beim ATmega328. Wenn man für die Idle-Zeiten einen Sleepmode verwendet, dürfte das nicht mehr viel Unterschied ausmachen.

Viele Grüße
Timo
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

VDX
Friends of Gort
Friends of Gort
Beiträge: 99
Registriert: 26 Jan 2006, 22:43
Wohnort: Großkrotzenburg (Main-Kinzig-Kreis)

Re: ct-Bot Basis-Firmware

Beitrag von VDX » 26 Jun 2018, 23:10

... ich habe ja nichts gegen die Teensy's - mit'nem kleineren Teensy hatte ich auch schonmal was programmiert (Synchronisation und GPS für die 5xStreetview-Hero-Kameraköpfe) - wenn ich aber nach langer Zeit mal wieder was auf die Schnelle umsetzen will, greife ich immer erstmal zu den Wattuinos ... vermutlich, weil ich da schneller wieder reinkomme und die Programme relativ übersichtlich bleiben :wink:

Ansonsten bin ich eher mit den ArduinoDue "unterwegs" - hab' damit einige Anlagen für Pastedispensen, Lasergravieren, 3D-Drucken und komplexes Handling für Ultraschallreinigungs-Anlagen mit 4 Bädern und Zu-/Abtransport aufgebaut und programmiert ... um das "industriegerecht" zu machen, haben wir einen speziellen Shield entwickelt, der die 3.3V-Signale mit Optokopplern auf 5V (bzw. DAC/ADC auf bis zu 0-10V) bringt und dann an ein Treiberboard weitergibt, wo die Signale nochmal auf 24V umgesetzt nach Außen gehen oder kommen 8)

Viktor
Ciao, Viktor --- Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426

tobi

Re: ct-Bot Basis-Firmware

Beitrag von tobi » 26 Feb 2019, 23:24

Hi,

die Idee mit einer einfacheren Software finde ich super :D Die ist aber nur für den echten Bot und nicht für den SImulator oder habe ich die Readme falsch verstanden?
Da muss ich wohl erstmal meinen Bot entstauben und wieder in Betrieb nehmen :roll: Werd ich aber dann auch mal ausprobieren. sieht so auf den ersten blick auf jeden fall mal übersichtlicher aus!

Tobi

eax
Friends of Sonny
Friends of Sonny
Beiträge: 110
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: ct-Bot Basis-Firmware

Beitrag von eax » 27 Feb 2019, 01:14

Ja richtig, diese Software ist nur für reale Bots.

Die hier verfügbare Version, die im Prinzip auf dergleichen Basis entstanden ist aber für ein Teensy-Board mit einem ARM-Controller (vgl. https://www.ctbot.de/viewtopic.php?f=1&t=1231), lässt sich inzwischen auch für PC und Anbindung an den ct-Sim bauen (Branch os).
Das funktioniert dann allerdings nach einem ganz anderen Prinzip als bei der originalen Software. Das läuft aber derzeit noch nicht wirklich stabil und Dokumentation gibts auch noch so gut wie keine. Das ist alles noch sehr work in progress. Langfristig werde ich Software für den Bot aber wohl eher auf dieser Basis weiterentwickeln.
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

tobi

Re: ct-Bot Basis-Firmware

Beitrag von tobi » 28 Feb 2019, 20:02

Hi,

ah danke. dann werd ich das mal ausprobieren wenn ich meinen bot wieder in betrieb genommen hab. wollt ich machen :mrgreen:

Tobi

lenchen
Friends of Gort
Friends of Gort
Beiträge: 30
Registriert: 12 Apr 2011, 15:31

Re: ct-Bot Basis-Firmware

Beitrag von lenchen » 12 Okt 2019, 22:45

Hallo,

bin jetzt auch mal dazu gekommen mir das anzuschauen und schon mal zu bauen :) hab aber noch 2 Fragen dazu:

Hat die Firmware auch einen Bootloader (so wie beim alten Bot-code) oder muss man die immer mit einem Programmer flashen?

Ich will das jetzt mit dem ESP-01 und dem https://github.com/tsandmann/esp8266-telnet2uart verwenden (für das consolen-Interface). So wie ich das verstanden habe, muss man ja in config.h die Baudrate für den ESP8266 einstellen mit UART_BAUDRATE. Was ist denn die richtige Wahl für die atmega-Firmware und wo stelle ich die Baudrate da ein? Denk mal das default von 2 Mbit/s passt dafür eher nicht? :mrgreen: Und muss man in config.h sonst noch was anpassen (außer den WLAN Zugangsdaten)?

Gruß
Lena

eax
Friends of Sonny
Friends of Sonny
Beiträge: 110
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: ct-Bot Basis-Firmware

Beitrag von eax » 13 Okt 2019, 17:22

Einen Bootloader gibt es da nicht, du kannst aber einfach den Bootloader vom alten ct-Bot Code verwenden, also einmal den Code mit Bootloader flashen und dann mit dem Bootloader den neuen Code (beliebig oft).

Die Baudrate wird in ctbot_config.h eingestellt, default ist 115200 Baud. Die 2 Mbit/s gehen mit dem ATmega in der Tat nicht, dafür ist der zu langsam. Das Setting ist für die Verwendung mit einem Teenys Board mit ARM CPU gedacht.

Ansonsten musst du in config.h nichts anpassen. Was ich allerdings nicht getestet habe, ist die Programmierung des ATmega per Bootloader über den ESP mit WLAN. Es könnte sein, dass man dafür TELNET_DISCARD_TIME in config.h verkleinern müsste oder die Implementierung anpassen, damit irgendwelche (nicht-ASCII-) Programmdaten nicht als Telnet-Steuercodes interpretiert werden.
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

lenchen
Friends of Gort
Friends of Gort
Beiträge: 30
Registriert: 12 Apr 2011, 15:31

Re: ct-Bot Basis-Firmware

Beitrag von lenchen » 13 Okt 2019, 20:34

ah okay, danke! :)
ich teste es mal.

lenchen
Friends of Gort
Friends of Gort
Beiträge: 30
Registriert: 12 Apr 2011, 15:31

Re: ct-Bot Basis-Firmware

Beitrag von lenchen » 21 Okt 2019, 19:42

So ich hab das mal ausprobiert und ein wenig damit rumgespielt :) funktioniert soweit gut, nur beim langsam fahren läuft es etwas unrund irgendwie.
Hab außerdem noch eine Frage dazu: mit "set speed" kann ich ja die Geschwindigkeit in % setzen und mit "set motor" die pwm für die Motoren (so hab ich die Hilfe verstanden). set speed funktioniert auch wie erwartet, bei set motor passiert aber einfach nix, egal was uch für Werte nehme. und wo ist da der Unterschied, die pwm ist doch auch die Geschwindigkeit der Räder dann, oder?

Gruß
Lena

eax
Friends of Sonny
Friends of Sonny
Beiträge: 110
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: ct-Bot Basis-Firmware

Beitrag von eax » 22 Okt 2019, 21:23

Bei (sehr) langsamer Fahrt wird der Geschwindigkeitsregler für die Motoren schnell instabil, das hat im Wesentlichen zwei Gründe:
Erstens passt der ursprünglich vorgesehene Motortreiber (IC2, L293D) mit der Beschaltung und Ansteuerung leider sehr schlecht zu den Motoren des Bots, weshalb sie bei kleiner Drehzahl kaum Leistung erbringen können. Im alten ct-Bot-Code gibt es besondere Optimierungen um das Problem zu lindern, diesem neuen Code fehlen die Optimierungen, hier wir ein Standard PID-Regler verwendet.
Zweitens ist die Kalibrierung des PID-Reglers nicht auf den ursprünglichen Motortreiber abgestimmt, weil ich auf einen neueren (DRV8835) umgestiegen bin, hier ist mit ein wenig Feintuning der Parameter Kp, Ki und Kd vielleicht noch einiges rauszuholen.

set speed setzt die gewünschten Geschwindigkeiten für die beiden Räder in Prozent, d.h. eine Hintergrundtask kümmert sich darum, diese gewünschte Geschwindigkeit einzuregeln. Das ist sozusagen das komfortable User-Interface. Mit set motor kann man den PWM-Duty-Cycle für die Motoren auch manuell setzen, allerdings muss man dafür mit config task sctrl 0 die Hintergrundtask des Geschwindigkeitsreglers deaktivieren, sonst werden die Werte jede Millisekunde wieder vom Regler überschrieben, der im Hintergrund läuft.

Ich weiß, die Dokumentation ist noch höchst unvollständig, da bin ich noch nicht wirklich dazu gekommen, etwas aufzuschreiben... unter anderem auch deshalb, weil ich erstmal schauen wollte, ob sich der neue Ansatz denn überhaupt bewährt.
Timo -- Meine Beiträge sind unter CC-BY-SA freigegeben

lenchen
Friends of Gort
Friends of Gort
Beiträge: 30
Registriert: 12 Apr 2011, 15:31

Re: ct-Bot Basis-Firmware

Beitrag von lenchen » 26 Okt 2019, 20:49

ah okay danke :)
jetzt hab ich auch das "config task" Kommando verstanden... :mrgreen:

Gruß
Lena

Antworten