6-DOF Knickarm-Roboter mit C#

Gast #4816584
Hallo Zusammen

Darf ich euch hier meinen 6 Achsen Knickarm-Roboter vorstellen? Alles 
aus dem 2D Lasercutter und dem 3D-Drucker. Als Getriebe wurden 
Zahnriemen genommen.

https://www.youtube.com/watch?v=k47auAHhDr4

Die Antriebe sind alles Servomotoren "HDrives" aus meinem aktuellen 
Kickstarter Projekt: http://kck.st/2gal6IG

Die Kinematik wird in C# auf meinem Windows PC berechnet. Der 
kartesische Bahnplaner läuft mit 1 kHz.  Das ganze über TCP/IP und UDP. 
Nicht zeitdeterministisch, es funktioniert aber sehr gut.

Ich bin gespannt auf euer Feedback :).

Liebe Grüsse
Chris
Angehängte Dateien:
Chris schrieb:
> Ich bin gespannt auf euer Feedback :)

OK. Dein Robbi sieht ja schnucklig aus, soweit sehr ansehnlich.

Aber zu deinem Kickstarter-Projekt: Nicht dein Ernst, oder? Muss man 
denn unbedingt jeden Scheiss ans Netz anstöpseln? Wofür braucht ein 
Schrittmotor Internet? Ich seh es schon kommen wie Botnetze von Steppern 
die Weltherrschaft an sich reissen.
Gast
Alexander S. schrieb:
> Aber zu deinem Kickstarter-Projekt: Nicht dein Ernst, oder? Muss man
> denn unbedingt jeden Scheiss ans Netz anstöpseln? Wofür braucht ein
> Schrittmotor Internet? Ich seh es schon kommen wie Botnetze von Steppern
> die Weltherrschaft an sich reissen.

Ich geb dir 100% recht. Das "IoT" hat aber auch eine Werbefunktion. Wir 
betreiben keinen Motor im Internet bei uns.
Der Vorteil an der Geschichte ist, dass ich keine Gerätetreiber und 
keine Schnittstellenadapter (CAN, DeviNet, etc.) brauche.

Als Beispiel: In Matlab braucht man nur 3 Zeilen Code um einen Motor zu 
bewegen!
In C# oder Java auch nicht viel mehr: 1. TCP Socket erstellen, 2. XML 
Ticket mit Fahrbefehl generieren, 3. absenden.

Man braucht keinerlei zusätzliche Elektronik wie Arduino, Raspberry pi 
etc.
Chris schrieb:
> Das "IoT" hat aber auch eine Werbefunktion.

Schade dass man so etwas heutzutage quasi tun muss.

Aber noch ne Frage, TCP ist ja auch nicht gerade als Echtzeitprotokoll 
bekannt. Ist es wirklich sinnig das so zu tun? CAN und Konsorten sind 
vllt. doch besser geeignet.

> keine Schnittstellenadapter
Naja, ein Netzwerkadapter ist genau das.


Ich wills dir aber nicht madig machen; dürfte ne ganze Menge Arbeit 
dahinterstehen und scheint ja zu funktionieren. Hoffe dass du dein 
Finanzierungsziel erreichst, viel Spass noch.
Gast
Für 6 Motoren braucht man ja fast schon einen eigenen switch.

Kann man die Motoren per multicast ansprechen? So dass man mit einem 
Paket die Soll-Position aller Motoren setzen kann?
Gast
Ciao Alexander, vielen Dank für deine ehrliche Antwort.
Wir wissen, wir fahren einen ganz eigenen Weg.

Die harte Echtzeitfähigkeit ist bei TCP nicht vorhanden. Deshalb bieten 
wir auch eine CAN Schnittstelle als auch ein Step/Dir Interface an. 
Dennoch das TCP funktionier überraschend gut, wir Kommunizieren mit bis 
zu 2kHz mit den Motoren. Diese senden kontinuierlich ihre Daten welche 
einen RTC clock beinhalten, so kann man immerhin sehen wenn irgend etwas 
nicht stimmt.

Die Innovation liegt aber wo anders, und ich möchte wissen ob euch das 
den Preis vom Motor Wert ist:

Mit dem "HDrive" können z.B. Prototypen in kürzester Zeit gebaut werden. 
Macht euch keine Gedanken mehr über Schrittmotor Treiber und Hardware 
Ansteuerungen. Der HDrive funktioniert sofort und kann wie ein Werkzeug 
verwendet werden.

Als Beispiel ein 3D Scanner, gebaut in einem halben Tag: 
https://www.youtube.com/watch?v=BzsTlfyQbL4&t=2s

Mit Schnittstellenadapter meinte ich CAN zu USB etc. diese zicken oft 
rum und machen Probleme.
Gast
rmu schrieb:
> Für 6 Motoren braucht man ja fast schon einen eigenen switch.
Ja, das haben wir auch so gemacht :)

> Kann man die Motoren per multicast ansprechen? So dass man mit einem
> Paket die Soll-Position aller Motoren setzen kann?
Noch nicht probiert, könnte man entwickeln. Für die Echtzeit 
synchronisation wäre aber CAN besser geeignet, und könnte zugleich auch 
als Bus-System durch den Roboter geführt werden.

Die Latenzzeit über TCP ist in unserem Netzwerk aber <10ms (2 Switch, 6 
Motoren).
es geht schon ziemlich zackig.
Chris schrieb:
> Der HDrive funktioniert sofort und kann wie ein Werkzeug
> verwendet werden.

Wenn das wirklich PROBLEMLOS so funktioniert - ja, könnte man drüber 
nachdenken. Andererseits ist euer avisierter Preis von 350$ doch schon 
etwas hoch. Der aus dem Vollen gefräste Aluklotz ist wohl sehr 
preistreibend. Sag mal, einfacher Thermoplast-Spritzguss (zB PA66, 
notfalls glasfaserverstärkt) würde nicht funktionieren?
Wie sieht es eigtl. mit Kühlung aus, warum ist da kein Lüfter 
angeflanscht, würde sich doch anbieten.
Gast
Das Gehäuse ist vom Prototypen, wir dachten eigentlich an einen 
Aluminium Spritzguss. Ich habe dein Werkstoff aber auf meine Liste 
genommen :).

Kühler brauchen wir keinen, der Leistungstreiber ist überdimensioniert 
und hat einen sehr hohen Wirkungsgrad. Wir probieren auch den Motor von 
der Elektronik und dem Gehäuse thermisch zu isolieren, deshalb würde der 
Kühler auch für den Motor nur wenig bringen.
Tolles Projekt. Was mir noch nicht so klar ist, ist das Error Handling 
wenn etwas nicht geht. Wenn man zB mehrere Motore hat und einer hat ein 
Problem, sollten die anderen auch stoppen, sonst geht etwas kaputt. 
Dafuer lass ich mir per UDP kontinuierlich den Status senden. Und muss 
dann darauf reagieren und den laufenden Prozess abbrechen, 
ueberschreiben.

Ein Fehler koennte zB  sein, ich gebe ein ganz kleines Drehmoment vor 
und lasse langsam drehen bis er in einen Anschlag faehrt. Dh der Winkel 
aendert sich bei gegebenem Drrehmoment nicht mehr.

Zu irgend einem Zeitpunkt muss ich einen Referenzpunkt anfahren. Da 
wuerd man eine eher langsame Rotation vorgeben und fuer den Motor 
ploetzlich einen Stopbefehl geben. Das waere dann meine 
Referenzposition, die Winkel-Null. Der Stopbefehl wuerde aufgrund eines 
externen Ereignisses, zB Position erreicht oder so generiert.

Wie geht das so ?

Nochwas. Kann man die Position nach einem Powerup auslesen, ohne bewegen 
zu muessen ?

Feedback. Ja. Ausser der seriellen Schnittstelle ist die Ethernet 
Schnittstelle die einzige Konstante fuer die naechsten paar Jahre.
Und man benoetigt fuer beide keine Treiber. Naja so etwa.

Fuer erhoehte Anforderungen kann man den PC nicht mehr verwenden, da vor 
allem dieser die Echtzeitfaehigkeit nicht besitzt. Dann mustte man den 
Bahnrechner in einem Raspi oder so auslagern.

Fuer einfache Anforderungen waere auch eine serielle Schnittstelle 
genuegend.

Der Preis fuer Prototypenbau ist ok, denn selber hab ich viel laenger 
und nie was so passendes.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.