Methoden für servo- oder schrittsynchronisierte Mehrachsensteuerung [geschlossen]

Ich habe einen 6-Achsen-Roboter entworfen. Die Hauptanforderung an den Roboter besteht darin, dass alle Achsen hochgradig synchronisiert sein müssen, um präzise (Sub-Millimeter, Sub-Grad) 6DOF (x, y, z, Gieren, Neigen, Rollen) Trajektorien im Raum zu erzeugen. Ich habe diesen Roboter implementiert mit:

Hardware: Controller NI PCI-7358, Verstärker NI MID-7604, Stepper

Software: NI Labview

Allerdings würde ich gerne von NI-Produkten auf etwas Kompakteres umsteigen, damit ich keinen Computerwagen herumschleppen muss. Ein Beispiel, das ich auf GitHub gefunden habe , ist ein Roboter, bei dem der Ersteller Folgendes verwendet hat:

Hardware: Arduino, A4988 Schrittantriebe, Stepper

Software: Python

Bei einem solchen Setup mache ich mir jedoch Sorgen, dass die synchronisierte Mehrachsensteuerung aufgrund der Arduino-Verarbeitungsverzögerung nicht aufrechterhalten wird. Kann jemand empfehlen, ob die Arduino-Lösung geeignet ist, oder alternative Lösungen präsentieren (bitte geben Sie Ihre spezifische Hardware und Software an)?

Wenn Sie sehen möchten, was ein Arduino in Bezug auf die Mehrachsenkoordination leisten kann, schauen Sie sich Open-Source-Firmware für 3D-Drucker an. Aber wenn Sie bei Null anfangen, haben Sie viel mehr Ressourcen, mit denen Sie an verschiedenen ARM-Teilen arbeiten können. Achten Sie darauf, die "Verzögerung" der Prozessorgeschwindigkeit und die Softwarearchitektur von der der Kommunikationsschnittstellen zu trennen - wenn Sie bereits wissen, was Sie tun möchten, lassen Sie sich die Anweisungen etwas früher als nötig an den ausführenden Prozessor tropfen. Aber wenn Sie etwas entscheiden müssen, was in Echtzeit zu tun ist, müssen Sie mehr Sorgfalt auf die Zeit verwenden, die zum Entscheiden und Befehlen benötigt wird.
Eigentlich scheint das die Lösung zu sein, die ich will. 7-Achsen-Stepper-Controller mit einem Himbeer-Pi. roboteurs.com/collections/all/products/slushengine-model-d

Antworten (2)

Meine Frage ist also, kann jemand gute Hardware/Methoden empfehlen, um dies zu erreichen?

Ja, nehmen Sie alle Ihre Blöcke in Labview und finden oder schreiben Sie Codestücke, die die Funktionen der Blöcke replizieren. Sie können sogar C-Code in Labview schreiben und benutzerdefinierte Blöcke erstellen , sodass Sie jeden Block einzeln testen und durch Ihren eigenen ersetzen können.

Oder es gibt einen C-Code-Generator für Labview (den ich noch nie benutzt habe und der wahrscheinlich mehr Geld kostet und wahrscheinlich keine gute Arbeit beim Konvertieren leistet).

Ich würde C verwenden, weil es nicht interpretiert wird und wahrscheinlich besser in Echtzeit laufen würde. Wenn Sie das Bedürfnis haben, Python zu verwenden, würde ich zuerst C schreiben und es dann umwandeln.

Ich würde jedoch immer noch NI-Hardware (PCI-7358) verwenden, was mich meiner Meinung nach daran hindert, Labview und alle NI-Treiber und -Fenster zu verwenden. Bitte beachten Sie mein Update zu der Frage.
Ich beantworte keine beweglichen Zielfragen

Sie benötigen ein echtzeitfähiges Betriebssystem. Die Open-Source-CNC-Site ist LinuxCNC zum Erstellen der CNC-Maschine. Das gegabelte Projekt ist Machinekit, das zum Erstellen benutzerdefinierter Maschinen gedacht ist, die nicht mit dem Standard-G-Code-Interpreter zusammenhängen.

Wenn Sie über genügend Ressourcen verfügen, sind Laufwerke und E / A basierend auf dem Ethercat-Kommunikationsprotokoll am besten geeignet. Es bietet Synchronität, so dass alle Geräte gleichzeitig eine Momentaufnahme der Istwerte machen, auch die Sollwerte werden gleichzeitig ausgegeben. Außerdem hat der Jitter des OS-Interrupts keine Relevanz, bis die neuen Werte in jedem Kommunikationszyklus berechnet werden, also macht das Linux-Preemption-OS den Trick.

Bitte beachten Sie, dass es sich nicht um ein CNC-Projekt handelt, sondern um einen Roboter. Wäre dies mit einem kompakten Linux-Computer wie einem Himbeer-Pi möglich? Könnt ihr mir einen 6-Achsen Motion Controller empfehlen?
Was ist aus Ihrer Sicht ein Motion Controller?