Forum: FPGA, VHDL & Co. Einsteigerfreundliches board für Roboter motion


von Stefan S. (neocortex)


Lesenswert?

Hi,
Ich habe vor einen relativ kleinen und möglichst günstigen Roboter mit 
mechanum-wheels zu bauen und wenn er funktioniert noch ein oder zwei 
Kopien davon zu bauen und meiner ehemaligen Schule zur Spenden. Dafür 
hab ich vor einen "Motion Controller" zu bauen, der auf einem Fpga 
beruht. Ich hab vor die motortreiber (wahrscheinlich relativ einfache 
H-Brücken) für alle 4 Motoren zu steuern, deren encoder zu lesen und 
daten aus einer imu zu lesen. Außerdem sollen die ganze Berechnungen und 
die regelung direkt im fpga laufen.

Meine Idee war so ungefähr, dass man Strecke, Richtung, Geschwindigkeit 
und Drehung und was noch rein gibt und die aktuellen Daten, sowie 
Bewegung fertig auslesen kann. Genaue Schnittstelle bin ich flexibel.
(ich hab noch nichts viel Richtung kinematic und sensoren gemacht, da 
ich noch nicht entschieden habe welches Chassis ich haben will)

Habt ihr eine Empfehlung was ich für ein möglichst günstiges 
entwicklungsboard benutzen könnte und welcher fpga sich eignet?
Ein einsteigerfreundliches Buch über fpgas wäre auch schön, aber das 
find ich zur Not schon.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Willst du das Projekt aus Gruenden komplett im FPGA, also in 
programmierbarer Logik machen, oder kannst du auch die Berechnungen auf 
einem Microprozessor ausfuehren der im Chip integriert ist?

Damit wuerdest du dir erhebliche Vorteile in der Implementierung 
verschaffen.

von MaWin (Gast)


Lesenswert?

Stefan S. schrieb:
> Habt ihr eine Empfehlung was ich für ein möglichst günstiges
> entwicklungsboard benutzen könnte und welcher fpga sich eignet?

Nein, da du dich zwanghaft für die Steuerung einer trägen Mechanik auf 
die Verwendung eines ffenschnellen FPGA festgelegt hast, gibt es wohl 
keine Lösung.

(Nicht nur) Im Lehrbetrieb schon über viele Jahre verbreitet zur 
Roboteransteuerung ist das Handy-Board, weil es so einfach mit 
interactive C programmierbar ist

https://de.wikipedia.org/wiki/Handy_Board
https://www.cs.uml.edu/~fredm/handyboard.com/

Das kann mit drittem und vierten Motortreiber sicher auch 
mechanum-wheels ansteuern.

von Stefan S. (neocortex)


Lesenswert?

Klar könnte das auch ein integrierter Kern machen.

Mein erster Gedanke war, dass auf vielen embedded Systemen 
trigonometriefunktionen relativ langsam sind (kann auch mein 
unzureichende weltbild von avr sein)

Mir geht es hauptsächlich darum, dass der Benutzer sich nicht mit dem 
Kram rumschlagen muss.

Immerhin sollen das später mal Schüler benutzen... Sie kriegen 
wahrscheinlich Panik, wenn sie was sehen, dass ihre lehrerin nicht 
erklären kann.

Ideal wäre, wenn ich es sogar schaffen würde direkt trajectories auf dem 
pfga oder Prozessor zu berechnen, damit man dem nur eine Serie von 
Wegpunkten geben muss.

Mal schauen wie viel meine expertise hergibt. Wahrscheinlich würde ich 
dann später auch einen ähnlichen Controller für einen Arm bauen. Aber 
wenn die motion funktioniert, kann das ja kaum schwer sein

Außerdem will ich mal was sinnvolles mit fpgas machen, also ist der fpga 
Part hauptsächlich auch eine Übung für mich.

Natürlich könnte ich auch alles auf einem relativ großen Arm Prozessor 
oder irgendwas in der Art aufbauen. Ich will aber mal was neues machen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Mein erster Gedanke war, dass auf vielen embedded Systemen
> trigonometriefunktionen relativ langsam sind (kann auch mein
> unzureichende weltbild von avr sein)
Ja, wenn man die ganzen Berechnungen in einem Zahlenformat macht, das 
für die Zielplattform ungeeignet ist, dann passiert sowas.

Wenn man z.B. erst mal auf einem 8-Bit Rechner ohne FPU mit float oder 
gar double rechnet.

Und danach, wenn man kapiert hat, warum das natürlich langsam sein muss, 
auf integer umstellt und seine Berechnungen im Zehnersystem macht, weil 
man halt von Geburt an 10 Finger hat.

So richtig schnell sind digitale Rechner (agal ob Prozessor oder FPGA), 
wenn man digitale Rechenverfahren anwendet und wie es dem Rechner genehm 
ist, in Zweierpotenzen rechnet und skaliert. Das musst du in einem FPGA 
für eine effiziente Implementierung noch viel mehr selbst beachten als 
bei einem Prozessor, wo die Bibliotheken schon für solche 
"Zehnerrechnungen" optimiert sind.

> Mir geht es hauptsächlich darum, dass der Benutzer sich nicht mit dem
> Kram rumschlagen muss.
Dann kapsle die Funktionen einfach in einer Bibliothek. Das funktioniert 
bei allen möglichen anderen Funktionen auch tadellos. Oder hast du dir 
schon mal Gedanken gemacht, wie z.B. eine Addition oder eine Subtraktion 
implementiert ist?

> Ich will aber mal was neues machen.
Na gut, gegen "ich will aber" helfen keine rationalen Argumente.
Mein Rat ist also: "Hör auf mit wollen, fang an zu tun!"

Stefan S. schrieb:
> Habt ihr eine Empfehlung was ich für ein möglichst günstiges
> entwicklungsboard benutzen könnte
"Möglichst günstig" ist an der falschen Stelle gespart. Und eine 
schlechte Voraussetzung für eine Neuentwicklung...

> und welcher fpga sich eignet?
Nimm ein möglichst oder wenigstens hinreichend großes.
Wenn es letztlich zu groß ist, dann kannst du dein Design hinterher 
immmer noch verschlanken. Andersrum bist du laufend am Ressourcensparen.

: Bearbeitet durch Moderator
von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Klar könnte das auch ein integrierter Kern machen.
>
> Mein erster Gedanke war, dass auf vielen embedded Systemen
> trigonometriefunktionen relativ langsam sind (kann auch mein
> unzureichende weltbild von avr sein)

Dann koennte ein Zynqberry vll. das passende sein. Und wenns moeglichst 
guenstig sein soll, die Zynqberry Variante:

https://shop.trenz-electronic.de/de/TE0727-02-41C34-ZynqBerryZero-Modul-mit-Xilinx-Zynq-7010-512-MByte-DDR3L-SDRAM-3-x-6-5-cm?c=238

Du braucht kein extra Baseboard, hast nenn Zynq mit ansehlich 
Rechenpower und der PL Teil sollte mehr als ausreichend sein.

Waere jetzt so mein erster Kandidat ohne genauere technische Infos zu 
haben. Dein grosser Vorteil: Da du das privat und zum Spass und aus 
technischer Neugierde machst, kannst du eigentlich nicht viel falsch 
machen. Einfach loslegen. :-D

von Stefan S. (neocortex)


Lesenswert?

Au ja, über solche Dinge hab ich schon nachgedacht.

Wie gesagt, ich bin kein absoluter Anfänger was prozessoren und das 
angeht. Außerdem geht es mir darum selbst was zu lernen.

Ansonsten würde ich einfach einen raspberry pi zero benutzen, der sich 
dedizierte nur um die motion kümmert.

Ich kenn aber meine Pappenheimer, da wird Hardware geklaut um sie in 
anderen Projekten zu verwenden oder einer denkt sich "Wenn ich da noch 
xy auf den raspberry packe kann ich z" und die betreffende Person kann 
so schlecht programmieren dass die motion nicht mehr richtig 
funktioniert, oder einer tötet ausversehen die motion komplett....

Sowas würde ich gern vermeiden. Ich werd sowieso noch python und c/c++ 
Bibliotheken bauen um den Transfer zwischen hauptcontroller und motion 
und den anderen Teilen des Systems zu vereinfachen.

Auch mit Robotern an sich hab ich zumindest eingeschränkt Erfahrungen, 
da ich eine Zeit lang Teil eines Roboter fußballteams war.

Ich weiß, dass die bei uns natürlich gewachsen sind und das in der Art 
wahrscheinlich nicht unbedingt bei Schülern passiert die sich mal ein 
oder zwei hl jahre damit beschäftigt haben. Trotzdem will ich mal 
beschreiben, wie das bei uns funktionierte.

Ein Teil der Motion läuft auf dem PC und macht ros über udp zu einem bbb 
der einen anderen Teil der motion macht und dann irgendwie über einen 
ethcan die motortreiber steuert und sensoren liest um sie zum ersten 
part der Motion auf den PC zu schieben.....

Ich würde auch nur ungern über die Sinnhaftigkeit eines fpga 
diskutieren, da meine Entscheidung fest steht sowieso einen zu benutzen. 
Ich hoffe aber das wären jetzt genug Hintergründe um meine Entscheidung 
zumindest ein bisschen plausibel zu machen und vielen Dank schon mal an 
alle die bisher gepostet haben

von Stefan S. (neocortex)


Lesenswert?

Tobias B. schrieb:
> Dann koennte ein Zynqberry vll. das passende sein. Und wenns moeglichst
> guenstig sein soll, die Zynqberry Variante:
>
> 
https://shop.trenz-electronic.de/de/TE0727-02-41C34-ZynqBerryZero-Modul-mit-Xilinx-Zynq-7010-512-MByte-DDR3L-SDRAM-3-x-6-5-cm?c=238
>
> Du braucht kein extra Baseboard, hast nenn Zynq mit ansehlich
> Rechenpower und der PL Teil sollte mehr als ausreichend sein.

Das sieht ziemlich gut aus. Werd mir wahrscheinlich im Verlauf einen 
kaufen. Mich schreckt aber auf den ersten Blick ab, dass er anscheinend 
ungefähr ein raspi mit fpga drauf ist und der vielleicht geklaut wird um 
in anderen Projekten zu arbeiten. Dann gibt's natürlich Chaos.

Für eine eventuelle Vision wäre der aber perfekt, da ich davon ausgehe, 
dass man Teile des maschinellen Sehens auf den fpga auslagern kann.

Danke für den tollen Hinweis.

Ein anderer Gedanke war, dass ein fpga ja für jeden sensor sein eigene 
Schnittstelle haben kann um eine art (wahrscheinlich relativ crudes) 
oversampling bei den sensoren zu machen...

Details hab ich mir alle noch nicht überlegt, finde aber die Idee 
faszinierend, dass man in Hardware alles notwengdige hat um einen 
möglichst schnellem Update loop zu realisieren, da komplizierte 
umrechnungen in Hardware ja "keine" Zeit brauchen.

von Fitzebutze (Gast)


Lesenswert?

Der Sinn eines FPGA erschliesst sich hier nicht wirklich, aber sei's 
drum.
Ansonsten gabs mal sowas (SRV1 Roboter mit Blackfin DSP und Kamera), 
darauf wurden einige Navigations-Algos implementiert. Leider ist der 
Erbauer des SRV1 verstorben und die Firma dicht, aber die Designs sind 
offen, es gibt somit Nachbauten. Würde mich daran mal etwa orientieren.
Fraglich ob man an einem Zynq gemessen am Stromverbrauch so viel Spass 
hat. Fest steht schon: Für Schüler ist das nix, und die Ziele insgesamt 
deutlich zu hoch gesteckt.

von Stefan S. (neocortex)


Lesenswert?

Es geht um die Oberstufe. Aber dass meine Ziele ein Stück zu hoch sind, 
aber das wird sich zeigen.

Den Roboter werd ich mir mal anschauen. Danke für den Hinweis

von User32 (Gast)


Lesenswert?

Für die Aufgabe reicht jedenfalls ein normaler STM32. Ein Zynq ist da 
wirklich Overkill und dürfte die meisten Schüler eher überfordern. Bzw. 
das wird dann i.d.R. auf in einem vorhandenen Projekt herumwühlen aber 
nix kapieren hinauslaufen. Oder es wird nur auf dem Prozessor gearbeitet 
- dann kann man sich den FPGA Teil aber auch sparen ;-)

von Stefan S. (neocortex)


Lesenswert?

Die Schüler sollen niemals irgendwas auf dem fpga ändern!!!

Die sollen nur Befehle an den fpga oder zynq schicken.

Die Schüler sollen dann einen Arduino, oder einen raspberry pi 
programmieren und anschließend und über rs422 oder rs485 fahrbefehle an 
den fpga senden.

Ich mach alles was den fpga angeht und das wird dann hoffentlich nicht 
mehr verändert.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Die Schüler sollen niemals irgendwas auf dem fpga ändern!!!
Ersetze in diesem Text das FPGA durch STM32, dann hört sich das alles 
ganz schlüssig an.

Hier bei uns schafft es so ein Zwofuffzich-uC, genau so eine Aufgabe zu 
lösen. Und da ist noch einiges an Reserve...

Wozu ein zigfach teureres System, das ausser dir sicher keiner kapiert? 
Nur weil "ich will"?

von Stefan S. (neocortex)


Lesenswert?

Der Sinn ist zum Teil grade, dass es keiner kapiert, denn dann wird der 
Teil nicht zweckentfremdet.

Ich weiß, dass ein stm32 das spielend schafft, aber dann wollen auch 
Leute dran rumfummeln, weil sie wissen wie man es programmiert.

Und das wird nur Probleme geben. Ein arduino mega wäre auch spielend in 
der Lage das zu machen. Wenn dir 15Hz update intervall reichen, dann 
genügt auch ein normaler arduino.

Ich will das gerne und ich denke es erzielt gute Ergebnisse. Da das ja 
nur ein Projekt ist was ich zum Spaß mache und später meiner 
Berufsschule ne nette Plattform zum spielen für Schüler schenke.

Mein Ziel ist, dass ich hardware Programmierung mache, ein bisschen 
software und ein bisschen cad + 3d Druck.

Ich will halt einen Roboter bauen und dann loswerden.

von Franz M. (elmo64)


Lesenswert?

Stefan S. schrieb:
> Mein erster Gedanke war, dass auf vielen embedded Systemen
> trigonometriefunktionen relativ langsam sind (kann auch mein
> unzureichende weltbild von avr sein)

Bereits "kleine" STM32G4 besitzen unter Anderem einen CORDIC zur 
Hardwarebeschleunigung.

Stefan S. schrieb:
> Die Schüler sollen dann einen Arduino, oder einen raspberry pi
> programmieren und anschließend und über rs422 oder rs485 fahrbefehle an
> den fpga senden.

Cool wird es aber erst kabellos mit Bluetooth, Wlan, etc. und 
gegebenenfalls (einer eigenen) Smartphone-App.

Falls du sagen möchtest, dass auf deinem Roboter ein Arduino-Board 
huckepack mitfahren soll, würde ich einen von Arduino unterstützten µC 
direkt integrieren, oder als softcore implementieren. Auf Kabel würde 
ich so weit wie möglich verzichten.

Stefan S. schrieb:
> dann wollen auch
> Leute dran rumfummeln, weil sie wissen wie man es programmiert.

Gehäuse abschleifen, Platine vergießen, SWD/JTAG/Bootloader-enable-pins 
abschneiden........

Stefan S. schrieb:
> Ideal wäre, wenn ich es sogar schaffen würde direkt trajectories auf dem
> pfga oder Prozessor zu berechnen, damit man dem nur eine Serie von
> Wegpunkten geben muss.

Warum soll alles eine "Black-box" sein? Schüler profitieren doch von 
einer frei programmierbaren, flexiblen Platform, auf der eigene Ideen 
und Projekte umgesetzt werden können, deren Grenzen der Lehrer 
individuell festlegen kann. Falls sich ein Lehrer findet und es genügend 
interessierte Schüler gibt, könnte eine Art "Roboter-AG" entstehen. Die 
Meisten der heute hier im Forum verkehrenden hätten soetwas begrüßt.


Vorschlag: Arbeite mit den Lehrern zusammen, um ein didaktisch nutzbares 
und auf schulische Anforderungen optimiertes Produkt zu entwickeln, 
ansonsten besteht die Gefahr, dass deine Roboter selbst im Schrank Staub 
ansetzen.

Stefan S. schrieb:
> Es geht um die Oberstufe.

Ein Informatikkurs der Oberstufe an meiner ehemaligen Schule hat vor 
vielen Jahren erfolgreich mit ASURO gearbeitet. Es gab sogar eine 
"öffentliche" Demonstration wärend des Schulfestes. Den Höhepunkt 
bildete dort das Tröten eines kurzen Musikstücks mithilfe des Antriebs.
Das Ganze war vor der Arduino-Zeit.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Stefan S. (neocortex)
>Dafür hab ich vor einen "Motion Controller" zu bauen, der auf einem Fpga
>beruht

Wie viel Erfahrung hast du schon mit der Programmierung von FPGAs und 
Mikrocontrollern?

von Blechbieger (Gast)


Lesenswert?

Stefan S. schrieb:
> Da das ja
> nur ein Projekt ist was ich zum Spaß mache und später meiner
> Berufsschule ne nette Plattform zum spielen für Schüler schenke.

Das kann ein sehr spannendes Projekt für einen selber sein aber hast du 
deine Berufsschule schon gefragt ob sie das überhaupt haben wollen? Denn 
ich sehe da einen großen Betreuungsaufwand seitens der Lehrer.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Ich weiß, dass ein stm32 das spielend schafft, aber dann wollen auch
> Leute dran rumfummeln, weil sie wissen wie man es programmiert.
Vergiss diese Argumentationsschiene. Die läuft nicht. Warum sollte ein 
RPi-ler oder ein Arduinist unbedingt Software für den STM32 schreiben 
wollen?

> Ich will
Das und nur das zählt hier. Also mach.
Im Sinne von "da darf ein anderer nichts ändern können" gleich mit einem 
FPGA, für das man nicht so leicht oder gar umsonst an eine Toolchain 
kommt.

von Stefan S. (neocortex)


Lesenswert?

Genau deswegen hatte ich meine Frage überhaupt gestellt.

Ich hab keine Ahnung von fpgas und wollte wissen, ob ihr ein Board 
kennt, das halbwegs günstig ist und ein gutes Buch für fpgas.

Mehr wollte ich nicht wissen. Ich habe die ganzen Details ja nur 
erwähnt, weil ich dachte, vielleicht gibt es ja eine Produktlinie die 
für numerische Berechnungen besser geeignet wäre.

Jetzt hab ich selbst gelesen und werde wahrscheinlich einen fpga mit 
integrierem Prozessor Kern suchen. Ich sehe den Nutzen von einem 
zusätzlichen Prozessor. Aber mehr oder weniger nur als io Maschine. 
Parsen von Zeichenketten ist wahrscheinlich nicht so einfach in einem 
fpga zu implementieren.

Ansonsten kauf ich einfach einen billigen clon von einem Board mit 
cyclone oder spartan6

von Duke Scarring (Gast)


Lesenswert?

Stefan S. schrieb:
> Parsen von Zeichenketten ist wahrscheinlich nicht so einfach in einem
> fpga zu implementieren
Das kommt auf die Zeichenketten an :-)

von Stefan S. (neocortex)


Lesenswert?

Lothar M. schrieb:
> Vergiss diese Argumentationsschiene. Die läuft nicht. Warum sollte ein
> RPi-ler oder ein Arduinist unbedingt Software für den STM32 schreiben
> wollen?

Zum Beispiel wei Die alle arduino in der Schule lernen, denn die Lehrer 
haben das zur Plattform der wahr gemacht.

Und den stm kann man ja weitgehend auch mit arduino programmieren und 
nichts ändert sich.

Ich werde natürlich den Code und alle anderen Infos der Schule zur 
Verfügung stellen, falls irgendwas kaputt geht und die das reparieren 
können.

Und wenn da ein Board vorhanden ist, dass wunderbar mit arduino 
funktioniert, wird das aus dem robi geklaut.

von Stefan S. (neocortex)


Lesenswert?

Duke Scarring schrieb:
> Das kommt auf die Zeichenketten an :-)

Natürlich, aber ich hab kaum Ahnung von fpgas, weswegen ich mir kaum 
eine effiniente Implementierung zutrauen kann ohne ziemlich viel Platz 
einzunehmen.

Ich trau mir allerdings zu binärdaten und bitcodierte Daten relativ 
einfach zu parsen, deswegen würde ich das auslesen der sensoren direkt 
vom fpga machen lassen.

In meinem Kopf ist der prozessoren hauptsächlich da um zum Beispiel 
debugging zu machen, Infos aus zum Fortschritt, etc oder Positionen und 
kalibierungen rausziehen zu können, wenn der Benutzer das will. Oder zum 
Beispiel die selbstkalibrierung zu starten.

von Duke Scarring (Gast)


Lesenswert?

Stefan S. schrieb:
> Und wenn da ein Board vorhanden ist, dass wunderbar mit arduino
> funktioniert, wird das aus dem robi geklaut.
Du versuchst ein soziales Problem mit technischen Mitteln zu lösen.
Nach meiner Erfahrung hat das noch nie gut funktioniert.

Warum stellt man nicht einfach genügend Arduinos zur Verfügung?
In Asien kosten die Dinger 2,50...

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Ich werde natürlich den Code und alle anderen Infos der Schule zur
> Verfügung stellen, falls irgendwas kaputt geht und die das reparieren
> können.
Weil die ja logischerweise einen VHDL-Spezi in der Tasche haben, der 
Lust hat, sich in deinen Anfänger-VHDL-Code einzuhacken.
Und natürlich ist dieser Ansatz mit dem FPGA auch in der 
Ersatzbeschaffung immer teuerer als der mit dem µC.

> Und wenn da ein Board vorhanden ist, dass wunderbar mit arduino
> funktioniert, wird das aus dem robi geklaut.
Gibts da überhaupt was? Und wenn ja, dann nimm ein STM32-Board, das 
nicht "wunderbar" mit Arduino funktioniert. Oder nimm einen Teensy mit 
600MHz für den schmalen Taler.

Stefan S. schrieb:
> Ansonsten kauf ich einfach einen billigen clon von einem Board mit
> cyclone oder spartan6
Wovon ein Clon? Weil es da keine Standards gibt, gibts auch keinen Clon.
Nimm einfach irgendein FPGA. Zum Entwickeln nimm ein großes FPGA. 
Kleiner kann man es dann wählen, wenns hinterher nicht voll ist.
Mit weniger als sowas würde ich nicht beginnen:
https://www.xilinx.com/products/boards-and-kits/1-w51quh.html

Stefan S. schrieb:
> aber ich hab kaum Ahnung von fpgas
Ich mach gern was mit FPGAs, aber dein Ansatz ist wie mit dem 
Spaceshuttle in den Urlaub nach Malle zu fliegen. Und zwar nur deshalb 
mit dem Spaceshuttle, damit kein anderer mitfliegen kann. Kann sein, 
dass das geht. Es ist aber echt umständlich.

von Stefan S. (neocortex)


Lesenswert?

Ich stelle zumindest den Bitstream zur Verfügung, dann ist es aber 
einfacher den vhdl Code im gut direkt daneben zu legen.

Mit clon meinte ich einen von den 30x clonen von beispielsweise einem 
DE0 nano, der je nach Quelle zwischen 120 und 80€ kosten soll.

Das Problem ist, dass es mittlerweile arduino ports für alle halbwegs 
bekannten Architekturen gibt (glücklicherweise)

Außerdem war das mit dem "Dann fummeln die nicht unnötig dran rum" nicht 
Hauptgrund sondern eher ein Bonus.

von ~Lolita~ (Gast)


Lesenswert?

@Stefan:

Was geheizuhalten schaffst Du nicht! Egal was Du tust! ;-P

Mal zu Deinem Projekt:
Warum schaffst Du auf Deinem Robot keinen einfache Kommandosprache,
die deine Schüler verstehen?
Dein Rover kann nämlich dann zum Beispiel kommandiert werden aber
hat auch eigenmächtige Möglichleiten selbst zu entscheiden.
Der Befehl heißt dan zum Beispiel "Fahre von Koordinate a zur
Koordinate b" sucht sich dann den Weg eigenständig, er kann dann
Hindernissen ausweichen, das dann nicht alles vom Schüler pingelig
ausprogrammiert werden muß.

So wie beim Marsrover!!

mfg

von Stefan S. (neocortex)


Lesenswert?

Teile davon hab ich vor.

Ich habe vor eine Motion zu entwickeln, die Fahrbefehle relativ zur 
Startposition ausführen kann.
Außerdem einen manipulator, der sich in seinen eigenen Koordinaten 
absolut bewegen kann oder absolut in Roboter Koordinaten.
Außerdem will ich für eine eventuelle Vision mit Kamera und slam die 
fertigen ros Pakete verwenden.

Zusätzlich soll es eine art Roboter Konsole geben, von der aus Befehle 
über Netzwerk an den robi geschickt werden können und dann mit ros und 
dem Chassis bus interagieren können.

Das sind für mich so die basics, die eine mobile Plattform braucht.

Wenn ich dann noch Bock hab, bau ich eine einfache Logik engine, die die 
Schüler als Basis benutzen können.

Außerdem hatte ich vor diesen Chassis bus so semi zu standardisierten, 
damit Schüler zum Beispiel den fertigen Arm nehmen und allein benutzen 
oder auf eine eigene Basis Schrauben können.


Ich weiß, dass das Projekt riesig klingt, aber ich hab Hilfe von einem 
Elektroniker und einem Maschinenbauer und kein zeitlimit.
Ich als Informatiker bin ja für den software Part prädestiniert.

Vielleicht bau ich anstatt Ros auch ne primitive, eigene Middleware (da 
hab ich schon mal was in die Richtung implementiert und Erfahrung)

Mal schauen wie viel Bock ich hab. Bei einer eigenen Middleware wäre es 
viel einfacher autoconfig mit dem Chassisbus zu bauen und alles 
transparent zu machen. Muss nur nach ner Bibliothek suchen die dynamisch 
beliebige Datenstrukturen de-/serialisieren kann.

Als Sprachen mit denen Schüler interagieren sollten werden python und 
c++/c (das letzte weil es sich einfach mit anderen Sprachen wrappen kann

Die robotershell soll dann einfache Befehle zum Senden von Befehlen, 
abfragen von Werten können. Logik in der robotshell hab ich keine vor, 
dafür aber dass man Befehle direkt von der shell ausführen kann, also 
Logik dann als bash Script oder mittels Programmiersprache.

Die shell repl Funktionen sind dabei eher debugging und testen 
vorbehalten

: Bearbeitet durch User
von ~Lolita~ (Gast)


Lesenswert?

Absolut geil!!

Dann würd ich zum Rechnen ne BCD library nehmen,
wie bereits oben angesprochen, denn float macht Rundungsfehler.
Alles auf nem 32 Bit Prozzi mit nem RTOS müßte also schnell
genug laufen. Da brauchst Du dann keinen FPA, die außerdem
viel zu viel Strom braucht. Lerne von den alten Männern (OM's)
hier, es lohnt sich!  :-)

Nen FPGA benutz ich dann um hinter Deine Geheimnisse zu kommen,
wenn ich den FPA erstmal "gepackt" hab. ;-D

Respekt!
~Lolita~

von Stefan S. (neocortex)


Lesenswert?

Mit stm32 hab ich das schon probiert. Ich hab leider kein oversampling 
der sensoren (zwei mal lesen und Mittelwert bilden) geschafft.

Momentane Liste der sensoren und Aktoren ist folgende:

1. Mindestens eine 9dof imu per spi
2. 4x motor encoder
3. 4x motor temperatursensoren
4. 4x motor Strom sensoren für stale erkennung
5. 2x tof sensor also vorne und hinten
6. 2x Ultraschall sensor ebenso vorne und hinten
7. Mindestens 10x bumper schalter würde aber ggf mehr oder weniger 
nehmen damit es genau auf bytes passt.

Akku management macht ein stm32 der direkt auf das power Board gelötet 
wird.

Einen potischen flow sensor han ich mir mal geschenkt, weil die encoder 
zusammen mit der imu das ganz gut schaffen. Könnte aber ggf noch einen 
mit spi anklemmen (kenne da einen sensor von der Uni)

Weil da so viel abgeht dachte ich es sei effizienter eine fpga zu nehmen 
der die sensoren liest und über eine schnelle Schnittstelle an einen 
Mikrocontroller weitergibt.
Später ist daraus geworden, dass die ganze Mathematik zum Fahren auch im 
fpga laufen kann und nur die Parameter und messerwerte als eine Art 
register zum Prozessor geschickt werden müssen.


Ein netter Gedanke war, dass ein 65xx Bus ausgeführt wird und eine spi 
oder i2c Schnittstelle.
Denn einen kleinen 6502 computer hab ich schon. Wäre doch geil einen 
Roboter zu haben, der von einem selbstgebauten computer gesteuert wird.

Noch bin ich am überlegen, ob ich anstatt einem normalen dc Motor einen 
billigen closed loop stepper benutze und die Motoren über die spi 
Schnittstelle des steppers steuere.

Hab davon aber noch nichts getestet.

Alternativ bau ich intelligente Motor Treiber mit atmega328 und i2c die 
alle auf einen pin die neuen Werte übernehmen. Da bin ich aber nicht 
sicher wie cool das ist.

von ~Lolita~ (Gast)


Lesenswert?

Stefan meinte:
> Alternativ bau ich intelligente Motor Treiber mit atmega328 und i2c die
> alle auf einen pin die neuen Werte übernehmen. Da bin ich aber nicht
> sicher wie cool das ist.

Lass den FPGA weg.
Microsoft hat mit Azure RTOS was in der Mache,
das Dein Projekt geil macht. Das RTOS soll kostenlos sein
für Amateure. Beschäftige Dich damit!

Dein Motortreiber ist ne gute Idee, denn es entlastet den
Hauptprozessor von dem "PWM" - Kram (ja, ich weiß was Du meinst).

Und zur Mittelwertbildung addierst Du deine beiden Werte einfach
und teilst das Ergebnis durch zwei, Schiebebefehl nutzen!

Und das Wichtigste
Stell dein Projekt unbedingt hier im Board vor, auch Lolita's
müssen noch lernen!!


mfg

von Stefan S. (neocortex)


Lesenswert?

Meine tests sagen, zwei komplette sensor Zyklen pro pid Zyklus sind 
nicht drin. Selbst mit einem stm32f103. Das Chassis reagiert dann 
manchmal mit ziemlich deutlichem überschwingen, weil der pid regler 
nicht schnell genug ist.

Ich würde wahrscheinlich freertos benutzen das kann ich schon und es ist 
komplett open source.

Die motortreiber in der Uni haben canopen gesprochen, aber ich bin mir 
sicher can ist kein besonders guter Chassisbus.

Ein fpga hat den Vorteil, dass er beliebig viele pwms hat die komplett 
in Hardware laufen. Und dass Dinge komplett unabhängig von einander 
laufen können.

Das powerboard soll monitoring für jede einzelne Zelle machen und mit 
buck-/boostwandlern je stabile 5 und 12V ausgeben. Außerdem soll es 
hotswap zwischen zwei akkupacks erlauben - vorausgesetzt wir kriegen 
sowas entworfen. Mal schauen, ob ich es schaffe so ne chinesische 
balancer schaltung  nachbauen und mit Monitoring ausstatten kann.
Spannungsversorgung sollen zwei 11.1v lithium packs in Reihe sein, 
zumindest wahrscheinlich.

Ich gebe zu, man könnte sowas wie Temperatur und Strom für das 
blockieren von Motoren analog machen, so dass am stm dann nur noch ein 
Interrupt gebraucht werden, ich find das aber doof. Genau weil dann eine 
arme Sau das komplett analog manuell abstimmen muss (nicht nur die strom 
Messung, sondern auch die Schwelle ab wann ein blockiert erkannt werden 
soll. Mit dem Controller würde sich das zu einem einigen manuell Strom 
ablesen und korrekten Messwert in die Kommandozeile tippen vereinfachen 
lassen.

Temperatur genau das gleiche.

Auch das wäre wieder ein wunderbarer Job für einen fpga. Der könnte dir 
den Wert schon korrigiert und mit einem pin zum feststellen ob er 
blockiert ausgeben.

Mal abgesehen, könnte ich ja (ich will eh mindestens zwei Exemplare 
spenden) einen bauen, wo die kontrollstruktur weiter aufgebrochen ist. 
Zum Beispiel ein stm32 der nur die vier pwm channels und encoder macht, 
einen der Strom und Temperatur für die Motoren macht und ein Dritter, 
der nur dazu da ist um die neuen Kommandos für die anderen zu machen.

Oder man lagert die sensoren komplett auf ein eigenes Board zu den 
sensoren aus, die nichts mit der motion zu tun haben.

Momentan ist nur ein Bus auf dem Chassis vorgesehen, aber es sieht aus, 
als sein mehrere sinnvoll.

Beispielsweise can für die Motoren, rs422 für den Haupt bis und weiß 
nicht can oder rs485 für das sensor Netz.

Hab mir mittlerweile überlegt, rs422 sei ja ein cooler Bus für den 
Chassis Bus, wenn der kein Problem mit arbitrierung hätte. Ideal wäre 
can-fd, weil man da 64 bte Daten anstatt 8 am Stück übertragen kann, 
aber can-fd chips sind Sau teuer. Normales can fällt aus quasi jedem stm 
hinten raus.

Kann man einen thread umbenennen, oder sollte ich lieber einen neuen auf 
machen und hier drauf verweisen, wenn es jetzt eher um die direkte 
umsetzunrg geht?

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Ein interessanter Thread. Ähnliche Probleme hatte ich schon, wenn ein 5 
jähriges Kind einem beim Schach spielen zusieht, dann herkommt und 
einfach nicht verstehen kann, dass man die Figuren nicht so einfach auf 
dem Brett rumschieben kann.

von Stefan S. (neocortex)


Lesenswert?

Welchen spekt meinst du jetzt?

Mein beharren auf dem fpga oder die Diskussion über das Projekt?

von QQ (Gast)


Lesenswert?

Stefan S. schrieb:
> Welchen spekt meinst du jetzt?

Aspekt

Bitte erleichtere uns das Lesen deiner Beiträge:

1) Bitte schreibe Wörter aus.
2) Verzichte auf Denglisch, fremdsprachliche (Fach-)Begriffe verwendet 
man nur, wenn keine äquivalenten deutschen existieren, oder diese 
ungebräuchlich sind.
Falls das für dich unmöglich ist, empfehle ich dir gleich alle deine 
Beiträge auf englisch zu verfassen.
3) verzichte auf "Jugendsprache"

von Franz M. (elmo64)


Lesenswert?

Stefan S. schrieb:
> Meine tests sagen, zwei komplette sensor Zyklen pro pid Zyklus sind
> nicht drin. Selbst mit einem stm32f103. Das Chassis reagiert dann
> manchmal mit ziemlich deutlichem überschwingen, weil der pid regler
> nicht schnell genug ist.

Meine Interprätation: Dein Projekt ist eigentlich fertig, funktioniert 
aber nicht wie erwartet. Darum möchtest du eine neue Steuerung auf Basis 
eines FPGAs aufbauen, weil du µCs und CPUs grundsätzlich für ungeeignet 
hältst, weil der stm32F103 nicht ausgereicht hat. Poste doch mal den 
Sourcecode und Schaltpläne.

Stefan S. schrieb:
> Außerdem geht es mir darum selbst was zu lernen.
Das ist natürlich ein Argument.

Stefan S. schrieb:
> Meine tests sagen, zwei komplette sensor Zyklen pro pid Zyklus sind
> nicht drin. Selbst mit einem stm32f103.

Wie hast du das getestet?
Wieviel Overhead hast du?
Ist die PLL konfiguriert?
Welche Zykluszeit erwartest du / erreichst du aktuell?
Der F103 hat keine FPU.
Der F103 ist alles Andere als leistungsstark.

Wenn du etwas maximal leistungsfähiges haben möchtest, dann schaue dir 
die stm32h7 und i.mx rt1xxx an.

Stefan S. schrieb:
> 2x tof sensor also vorne und hinten
> 2x Ultraschall sensor ebenso vorne und hinten

Stefan S. schrieb:
> mechanum-wheels

Da sich dein Roboter dank der "Mechanum-Räder" in "alle Richtungen" 
bewegen kann, sollten mindestens an die "Seiten" ebenfalls Sensoren. Ein 
Lidar wäre eine sinnvolle Ergänzung.

Stefan S. schrieb:
> Ich habe vor eine Motion zu entwickeln, die Fahrbefehle relativ zur
> Startposition ausführen kann.

Problem: Der Nutzer hebt deinen Roboter an, dreht ihn ein paar mal um 
alle Achsen und setzt ihn an einem beliebigen Ort wieder ab. Was, wenn 
dein Roboter zeitweise die Traktion verliert, wegrutscht oder sich 
irgendwo verhakt? Wie ermittelst du die Startposition? Außerdem musst du 
mit Sensordrift rechnen. Eine IMU wie du sie verwenden möchtest, wird 
alleine kaum ausreichen um die Startposition ausreichend genau 
wiederzufinden.

Schaue mal hier:
https://www.dronecode.org/
https://pixhawk.org/
https://ardupilot.org/
https://px4.io/
etc..

Als Ausgangspunkt sicherlich zu gebrauchen, nicht zuletzt, da sämtliche 
Arten von Land- und Luftfahrzeugen bereits implementiert wurden.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Welchen spekt meinst du jetzt?
>Mein beharren auf dem fpga oder die Diskussion über das Projekt?

Grundsätzlich bin ich immer für Diskussionen offen.
Wenn ich es richtig verstanden habe, hast du noch keine Erfahrungen mit 
FPGAs und relativ wenig Erfahrungen mit Mikrocontrollern.

Ich mache mal eine Abschätzung des Zeitaufwands für dich.

1. VHDL oder Verilog lernen: 12 Wochen
2. FPGA Entwicklungsumgebung lauffähig und bedienbar installieren: 3 
Tage
3. Realisierbarkeit von Schaltungsstrukturen im FPGA verstehen: 6 Wochen
4. Algorithmikentwicklung für die Motorsteuerung auf dem FPGA: 6 Wochen

Das Ganze gilt für Vollzeit und schneller Auffasungsgabe.

Hast du so viel Zeit und Durchhaltevermögen?

Meiner Einschätzung nach ist der Aufwand, ein Problem im FPGA zu lösen, 
wenn man es auch auf einem Mikrocontroller lösen könnte mit dem Faktor 5 
an Zeitaufwand verbunden.

von Duke Scarring (Gast)


Lesenswert?

chris_ schrieb:
> Meiner Einschätzung nach ist der Aufwand, ein Problem im FPGA zu lösen,
> wenn man es auch auf einem Mikrocontroller lösen könnte mit dem Faktor 5
> an Zeitaufwand verbunden.
Du bist ein Optimist...

von Stefan S. (neocortex)


Lesenswert?

@chris_
Ich will nicht alle Probleme der Navigation in der reinen motion engine 
lösen. Dinge wie globale Positionierung werden auf einer anderen Ebene 
realisiert.

A. M. schrieb:
> Wenn du etwas maximal leistungsfähiges haben möchtest, dann schaue dir
> die stm32h7 und i.mx rt1xxx an.

Die entwicklungsboards für die Produktfamilie wären in dem Preisbereich 
von dem Fpga den ich verwenden wollte und der fpga ist wahrscheinlich 
viel leistungsfähiger.

A. M. schrieb:
> Da sich dein Roboter dank der "Mechanum-Räder" in "alle Richtungen"
> bewegen kann, sollten mindestens an die "Seiten" ebenfalls Sensoren. Ein
> Lidar wäre eine sinnvolle Ergänzung.

An den Seiten sind bumper angebracht. Aber ich überlege ob ich die 
Seiten auch sinnvoll mit welchen ausstatten kann.

A. M. schrieb:
> Problem: Der Nutzer hebt deinen Roboter an, dreht ihn ein paar mal um
> alle Achsen und setzt ihn an einem beliebigen Ort wieder ab. Was, wenn
> dein Roboter zeitweise die Traktion verliert, wegrutscht oder sich
> irgendwo verhakt? Wie ermittelst du die Startposition? Außerdem musst du
> mit Sensordrift rechnen. Eine IMU wie du sie verwenden möchtest, wird
> alleine kaum ausreichen um die Startposition ausreichend genau
> wiederzufinden.

Aus meiner sicht ist das kein Problem der Motion engine, also will ich 
Lokalisierung auf einer anderen Ebene bauen.

QQ schrieb:
> Bitte schreibe Wörter aus.

Versuche ich normalerweise. Ich poste nur grade von meinen Telefon und 
das ersetzt mir manchmal Worte mit nonsense. In der Regel lese ich meine 
Beiträge vor dem Abschicken nochmal und korriere alles was mir auffällt, 
leider übersehe ich hin und wieder welche.

QQ schrieb:
> Verzichte auf Denglisch, fremdsprachliche (Fach-)Begriffe verwendet man
> nur, wenn keine äquivalenten deutschen existieren, oder diese
> ungebräuchlich sind.
> Falls das für dich unmöglich ist, empfehle ich dir gleich alle deine
> Beiträge auf englisch zu verfassen.

Sa ich relativ viel auf englisch lese und höre, wenn ich mich mit 
Elektronik, Robotern und Programmierung beschäftige sind die englischen 
Begriffe mir leichter geläufig. Ich kann aber gerne demnächst alle 
englischen Begriffe, die ich nicht spontan auf deutsch weiß erstmal 
durch Google Übersetzer jagen.

QQ schrieb:
> verzichte auf "Jugendsprache"

Du meinst meinen Slang? Okay, dann versuche ich das abzustellen.

chris_ schrieb:
> Grundsätzlich bin ich immer für Diskussionen offen.
> Wenn ich es richtig verstanden habe, hast du noch keine Erfahrungen mit
> FPGAs und relativ wenig Erfahrungen mit Mikrocontrollern.

Über die Fpgas hast du vollkommen Recht, aber bei Mikrocontrollern - 
denke ich zumindest - dass ich halbwegs kompetent bin. Ich habe mich 
hier nicht mit der genauen Umsetzung des Codes befasst, da sie nur als 
test gedacht war und keine vollständige Umsetzung des Projekts ist.

Wenn ich als einziges Programm den Code für sensoren und den Motor pwm 
habe, ist auch der stm32f103 völlig ausreichend. Wenn ich aber die Teile 
des Codes in eigenständige Tasks in freertos aufteile, bekomme ich 
Probleme. Probleme in der Art, dass die Updates für das pwm nicht mehr 
in vorhersehbaren Zeitabschnitt kommen oder sensoren nicht regelmäßig 
ausgelesen werden.
Allerdings habe ich noch keine Kommunikation mit einem Bus 
implementiert.

Ich habe mir als Update rate ungefähr 120Hz vorgestellt.

Auch wenn mein Code jetzt vielleicht nicht das optimale ist, was man 
theoretisch erreichen kann, bin ich mir sicher, dass er trotzdem 
passabel ist.

chris_ schrieb:
> Ich mache mal eine Abschätzung des Zeitaufwands für dich.

Vielen Dank für die Einschätzung. So ungefähr hätte ich auch geplant. Da 
das aber ein Hobby Projekt ist und mich Zeitaufwand nicht schreckt stört 
mich persönlich das jetzt nicht.

Hauptaspekt des Projektes war es den Umgang mit fpgas zu lernen und eine 
anspruchsvolle Aufgabe zu lösen, damit ich direkt lerne ordentliches und 
effizientes Vhdl/Verilog zu schreiben. Ich hätte ja stattdessen auch 
wunderbar ein vga pong Spiel bauen können, fand das aber relativ 
langweilig.

von Stefan S. (neocortex)


Lesenswert?

Duke Scarring schrieb:
> chris_ schrieb:
>> Meiner Einschätzung nach ist der Aufwand, ein Problem im FPGA zu lösen,
>> wenn man es auch auf einem Mikrocontroller lösen könnte mit dem Faktor 5
>> an Zeitaufwand verbunden.
> Du bist ein Optimist...

Mag ja sein, aber momentan sind noch Semesterferien und ich habe nicht 
viel anderes zu tun. Selbst wenn es der Faktor 100 wäre schreckt mich 
das konzeptionell noch nicht ab. Das Lernen dabei ist mir persönlich 
wichtiger, als das Projekt schnell abzuschließen.

Ich würde nur gern irgendwann in den nächsten 10 Jahren fertig werden, 
damit meine ehemalige Lehrerin das noch vor ihrer Pension zu sehen 
bekommt.

von User32 (Gast)


Lesenswert?

Der F103 ist halt der älteste STM32 den es gibt.
Den H7 gibts mit 2 Kernen mit 480 und 240 MHz und ist Pi mal Daumen 20x 
schneller. PWM Hardware ist da auch deutlich besser als beim F103.

Aber egal - Du kannst das natürlich auch mit nem FPGA machen, aber es 
wird wie gesagt deutlich schwieriger - und auch da hast Du mehr als 
genug Timing Probleme mit denen Du Dich herumschlagen musst...

von Fitzebutze (Gast)


Lesenswert?

Ich würde mich bald mal für eins der beiden Ziele entscheiden:

- FPGA (SoC-Designs) lernen wollen
- Roboter (nach)bauen wollen

Beides zusammen funktioniert nur in sinnvoller Zeit (1-2 Jahre), wenn du 
auf bestehendes aufbauen kannst oder min. 5 Jahre detailliertes Wissen 
über das Verhalten der Synthesetools, Details komplexer Sprachen (wie 
VHDL), usw. ansammeln konntest.

Der einzige Grund für mich, ein FPGA für sowas herzunehmen: Möglichst 
viel und stromsparend auf EINEM Chip zu machen. Für einen Kalmanfilter 
mit dickeren Matrizen gibt es da durchaus einen berechtigten Anspruch 
(been there).
Ein weiterer Grund ist allenfalls noch, das System komplett für 
gesteigerte Safety-Ansprüche durchsimulieren zu können.
Ansonsten gibt es unzähliche me-too-Lösungen dieser Art, besagte 
SRV1-Hardware kann das alles schon seit 2008 und ist längst nicht mehr 
der letzte Schrei.

Mein Credo: Nicht träumen, machen (einfach mal anfangen). Dann offenbart 
sich sehr schnell, wo man Abstriche machen muss.
Und zudem gilt immer wieder: Für FPGA-Entwicklung braucht man erst mal 
keine Hardware, sondern nur eine brauchbare Simulationsumgebung 
(kostenlos und gut: iverilog, GHDL).

von Stefan S. (neocortex)


Lesenswert?

Fitzebutze schrieb:
> Der einzige Grund für mich, ein FPGA für sowas herzunehmen: Möglichst
> viel und stromsparend auf EINEM Chip zu machen. Für einen Kalmanfilter
> mit dickeren Matrizen gibt es da durchaus einen berechtigten Anspruch
> (been there).

Sowas war der Grund, wieso ich das machen wollte.

Fitzebutze schrieb:
> Für FPGA-Entwicklung braucht man erst mal keine Hardware, sondern nur
> eine brauchbare Simulationsumgebung (kostenlos und gut: iverilog, GHDL).

Das sollte ich mir eindeutig mal anschauen.

Ich hab mir den Roboter als großes Überprojekt für das Lernen mit fpgas 
ausgesucht. Ich kann teilweise auch auf resourcen von einem Robocup Team 
zugreifen, die zumindest mal mit sowas rumprobiert haben (ob die das 
aktuell noch verwenden weiß ich grad nicht genau)

Hast du/ habt ihr zufällig einen Tipp, was ich als zielplatform 
verwenden könnte, wenn ich einen Prozessor als "echte Hardware" haben 
will? Ich meine also den Prozessor nicht als softcpu...

Wenn ich das mit dem simulieren richtig verstehe, muss ich ja wissen 
welchen Chip ich verwenden will, oder?

von Franz M. (elmo64)


Lesenswert?

Stefan S. schrieb:
> Hast du/ habt ihr zufällig einen Tipp, was ich als zielplatform
> verwenden könnte, wenn ich einen Prozessor als "echte Hardware" haben
> will? Ich meine also den Prozessor nicht als softcpu...

A. M. schrieb:
> https://pixhawk.org/
aktuell nutzen die einen STM32F765 und STM32F100

Ursprünglich für Drohnen entwickelt, gibt es Umsetzungen für sämtliche 
Land und Wasserfahrzeuge. Du müsstest nur eien weiteres Fahrzeug 
implementieren. Unterstützt sämtliche Schnittstellen und besitzt LL 
Treiber für Sensoren. Eine IMU ist bereits vorhanden. Nur die 
Motorsteuerung musst du zusätzlich lösen. Im einfachsten Fall könnten 
das Regler aus dem Modellbaubereich leisten oder du nutzt die 
vorhandenen PWM Ausgänge.

weitere Resourcen:

> https://www.dronecode.org/
> https://ardupilot.org/
> https://px4.io/

Wenn du selbst etwas zusammenstecken möchtest, sollten folgende 
Dual-cores ausreichend sein.

A. M. schrieb:
> Wenn du etwas maximal leistungsfähiges haben möchtest, dann schaue dir
> die stm32h7 und i.mx rt1xxx an.

Alle im QFP Gehäuse kann man mit dem Lötkolben auf eine selbst erstellte 
Platine löten.

Stefan S. schrieb:
> Wenn ich als einziges Programm den Code für sensoren und den Motor pwm
> habe, ist auch der stm32f103 völlig ausreichend. Wenn ich aber die Teile
> des Codes in eigenständige Tasks in freertos aufteile, bekomme ich
> Probleme.

Freertos auf einem stm32f103? Nicht dein Ernst? kein Wunder dass du da 
Probleme bekommst.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Wenn ich das mit dem simulieren richtig verstehe, muss ich ja wissen
> welchen Chip ich verwenden will, oder?
Nein, eben nicht.
Die Verhaltenssimulation ist erst mal völlig abstrakt ohne Pins und 
Gehäuse.

Nur, wenn du dann bauteilspezifische Komponenten einbindest, musst du 
dir um die Zielhardware Gedanken machen. Aber bis dahin kannst du (und 
solltest es auch) ausgiebig mit LUTs und Flipflops üben.

Und wenn dann die Simulation läuft, dann lässt man mal den Synthesizer 
mit einem großen FPGA-Typ drauf los und schaut, ob der mit dem Design zu 
5% oder zu 95% gefüllt und auch noch schnell genug ist.

von Franz M. (elmo64)


Lesenswert?

Stefan S. schrieb:
> Hast du/ habt ihr zufällig einen Tipp, was ich als zielplatform
> verwenden könnte, wenn ich einen Prozessor als "echte Hardware" haben
> will? Ich meine also den Prozessor nicht als softcpu...

Wenn ich richtig informiert bin, fährt dort ein vollwertiger PC mit.
https://www.youtube.com/watch?v=_tmiu1wpp_E

http://wiki.ros.org/

: Bearbeitet durch User
von Fitzebutze (Gast)


Lesenswert?

Stefan S. schrieb:
> Hast du/ habt ihr zufällig einen Tipp, was ich als zielplatform
> verwenden könnte, wenn ich einen Prozessor als "echte Hardware" haben
> will? Ich meine also den Prozessor nicht als softcpu...
>
> Wenn ich das mit dem simulieren richtig verstehe, muss ich ja wissen
> welchen Chip ich verwenden will, oder?

Für den ZynQ brauchst du eine passende ARM-Cosimulation. Das könnte 
aufwendiger werden, es selbst aufzusetzen (und die Cadence-Tools dazu 
kosten ordentlich).
Mit RISC-V machen das einige in der Opensource-Szene (renode, qemu, 
...).
Da gibt's nur deutlich weniger FPGAs mit entsprechendem harten Kern.
Ein Soft-Core muss bei Einsatz von Beschleunigern (was ja grade der Gag 
am FPGA ist) nicht schlechter sein. Zumindest kannst du den, sofern 
Source vorhanden, zyklengenau mit deiner Software simulieren.

von Stefan S. (neocortex)


Lesenswert?

Lothar M. schrieb:
> Nur, wenn du dann bauteilspezifische Komponenten einbindest, musst du
> dir um die Zielhardware Gedanken machen. Aber bis dahin kannst du (und
> solltest es auch) ausgiebig mit LUTs und Flipflops üben.

Wäre ein adc so ein hardwarspezifisches Bauteil? Ic brauch das 
mindestens um den Strom durch die Motoren zu messen.

Fitzebutze schrieb:
> Ein Soft-Core muss bei Einsatz von Beschleunigern (was ja grade der Gag
> am FPGA ist) nicht schlechter sein.

Ich war besorgt, dass der soft core ziemlich viele blocks braucht.

von Fitzebutze (Gast)


Lesenswert?

Stefan S. schrieb:
> Wäre ein adc so ein hardwarspezifisches Bauteil? Ic brauch das
> mindestens um den Strom durch die Motoren zu messen.

Der ADC wäre wiederum ein externes Modell / Teil der Testbench. Auch das 
kannst du natürlich für die Simulation modellieren.

Stefan S. schrieb:
> Ich war besorgt, dass der soft core ziemlich viele blocks braucht.

Meinst du BlockRAM oder Slices? Wie auch immer: "it depends".
Das kannst du alles im Trockendock der Simulation mal aussen vor lassen 
und danach per Test-Synthese mit den Tools deiner Wahl den passenden 
Chip aussuchen.
PWM-Motorensteuerung, div. Interfaces (SPI, UART, Ethernet) und 
RISC-V-Core passt z.B. locker in einen Spartan6 LX9, wenn 
Kameranavigation mit reinsoll, wird's eher ein LX45 und allenfalls 
bisschen DDRAM.

von Stefan S. (neocortex)


Lesenswert?

Ich meinte logik blocks (falls das so heißt). Du hast sie wahrscheinlich 
slices genannt.

Fitzebutze schrieb:
> Der ADC wäre wiederum ein externes Modell / Teil der Testbench. Auch das
> kannst du natürlich für die Simulation modellieren.

Das ist schön. Dann sollte ich mich mal mit simulation beschäftigen und 
mal bauen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Dann sollte ich mich mal mit simulation beschäftigen und mal bauen.
Und fang ganz vorn an mit elementaren Funktionen. Die wichtigsten 
Funktionen, die du im Schlaf kennen musst, sind Multiplexer und 
Schieberegister. Einer meiner Praktikanten meine mal nach einer 
ausgiebigen Exkursion: "The whole world is a shift register, isn't it?"

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Wäre ein adc so ein hardwarspezifisches Bauteil? Ic brauch das
> mindestens um den Strom durch die Motoren zu messen.
Ein ADC im FPGA wäre evtl. so ein Bauteil. Allerdings kann man den 
meist auch einfach als BFM (Bus Functional Model) abstrahieren und nur 
sein Interface modellieren.

Ein richtig hardwarespezifisches Bauteil ist ein Takterzeuger/-verteiler 
oder ein DSP-Block oder ein RAM-Block. Denn wenn man die optimal 
ausnutzen will, dann muss man sie herstellerabhängig ansteuern.

von Stefan S. (neocortex)


Lesenswert?

Lothar M. schrieb:
> Und fang ganz vorn an mit elementaren Funktionen.

Dank meinem Prof in digital Technik kann ich die meisten gängigen 
Baugruppen im Schlaf. Zumindest multiplexer, Logik Gatter und 
schieberegister. Aber ich schau mir das an und richte die Tage eine 
simulation ein.

Lothar M. schrieb:
> Ein richtig hardwarespezifisches Bauteil ist ein Takterzeuger/-verteiler
> oder ein DSP-Block oder ein RAM-Block. Denn wenn man die optimal
> ausnutzen will, dann muss man sie herstellerabhängig ansteuern.

Ah, okay. Dann weiß ich jetzt zumindest genug Bescheid um anfangen zu 
können

von Stefan S. (neocortex)


Lesenswert?

A. M. schrieb:
> Freertos auf einem stm32f103? Nicht dein Ernst? kein Wunder dass du da
> Probleme bekommst.

Das hat bisher super funktioniert zumindest in den bisherigen Projekten. 
Sehr stolz bin ich auf meinen "custom rs485" auf dmx converter. Da rennt 
freertos auf einem f103 ohne Probleme und parst sogar komplexere 
strings. Ist aber eine Geschichte für ein anderes subforum und eine 
Vorstellung.

: Bearbeitet durch User
von ~Mercedes~ (Gast)


Lesenswert?

Mal ne dumme Frage:
Gibt es smarte Motortreiber, die kommandiert werden können
und an sonste alles selbst machen (Rampen und so)
Die man also wie ein PIO mit nem paar Steuerbefehlen
füttern kann?
Oder muß wirklich alles sein Prozessor machen?

mfg

von Stefan S. (neocortex)


Lesenswert?

~Mercedes~ schrieb:
> Mal ne dumme Frage:
> Gibt es smarte Motortreiber, die kommandiert werden können
> und an sonste alles selbst machen (Rampen und so)
> Die man also wie ein PIO mit nem paar Steuerbefehlen
> füttern kann?
> Oder muß wirklich alles sein Prozessor machen?
>
> mfg

Gibt es, aber die sind entweder ein stm32 mit den Sensoren, oder extrem 
teuer und auch nur ein kleiner Mikrocontroller mit nem Treiberschip.

Außerdem sind die die ich kenne alle entweder über spi bzw step 
direction steuerbar oder die teuren über rs232 oder canopen.

Mit den canopen treibern habe ich persönliche Erfahrungen, dass die can 
Leitungen den Einsatz auf einer mobilen Roboter Plattform nicht so gerne 
mögen.

Mfg

von User32 (Gast)


Lesenswert?

Ich kann bestätigen, dass FreeRTOS auf einem F103 problemlos läuft.
Warum auch nicht, das gibts sogar für 8 Bit Mikrocontroller wie AVR.
STM32 gabs noch gar nicht als FreeRTOS entwickelt wurde...


Stefan S. schrieb:
> dass die can
> Leitungen den Einsatz auf einer mobilen Roboter Plattform nicht so gerne
> mögen.

Das dürfte dann aber eher ein Konstruktionsfehler sein.
CAN ist i.d.R. sehr robust (ist in so ziemlich jedem PKW / LKW drin der 
in den letzten 25 Jahren gebaut wurde - also an CAN ansich liegts 
nicht).

von Stefan S. (neocortex)


Lesenswert?

Das liegt an den ekelhaft en steckverbindern, die zumindest unsere 
motortreiber hatten. Nicht am Protokoll an sich.

Diese Treiber sind ja dafür gemacht, dass sie genau ein Mal bewegt 
werden. Zum einbauen und zum ausbauen. Die steckverbinder haben Stöße 
und schläge stellenweise nicht gut vertragen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.