-         

Ergebnis 1 bis 7 von 7

Thema: Was bringt mir ein Mehrkernprozessor im Zusammenhang mit einem Roboter ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2015
    Beiträge
    5

    Was bringt mir ein Mehrkernprozessor im Zusammenhang mit einem Roboter ?

    Anzeige

    Hallo Liebe Community
    Wie schon paar mal erwähnt bin ich Neu im Bereich Robotik
    und deshalb tauchen bei mir immer wieder Fragen auf und meine Frage nun
    wäre was bedeutet es wenn ein Prozessor mehr Kerne hat ?
    Was heißt das um genau zu sein für meinen Roboter ?
    Ist das ein Vorteil ?

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Zitat Zitat von ITArgji Beitrag anzeigen
    ... was bedeutet es wenn ein Prozessor mehr Kerne hat ?
    Einfachste Erklärung: mehr voneinander unabhängigen Prozessoren in einem Gehäuse.

    Zitat Zitat von ITArgji Beitrag anzeigen
    Was heißt das um genau zu sein für meinen Roboter ?
    Ich kenne deinen Roboter nicht._.

    Zitat Zitat von ITArgji Beitrag anzeigen
    Ist das ein Vorteil ?
    Ja, wenn ein Prozessor zu langsam ist.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    ... was bedeutet es wenn ein Prozessor mehr Kerne hat ... Ist das ein Vorteil ?
    http://www.elektronik-kompendium.de/...om/1203171.htm

    .. Neu im Bereich Robotik und deshalb tauchen bei mir immer wieder Fragen auf ...
    Es wurde fast schon alles gefragt, aber noch haben nicht alle alles gefragt. Sehr viele Fragen kann ne einfache Suche mit ner Suchmaschine lösen.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Falk Brunner auf mikrocontroller.net neulich in einem Thread:

    Jaja, und dann kommen die nächsten "Experten" die eine Motorsteuerung in Java machen wollen, dann muss es halt ein Quad-Core sein.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Zitat Zitat von malthy Beitrag anzeigen
    Falk Brunner auf mikrocontroller.net neulich in einem Thread
    Die werden bestimmt am Von-Leitner-Institut für verteiltes Echtzeit-Java ausgebildet
    Tiny ASURO Library: Thread und sf.net Seite

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von ITArgji Beitrag anzeigen
    Wie schon paar mal erwähnt bin ich Neu im Bereich Robotik
    und deshalb tauchen bei mir immer wieder Fragen auf und meine Frage nun
    wäre was bedeutet es wenn ein Prozessor mehr Kerne hat ?
    Was heißt das um genau zu sein für meinen Roboter ?
    Ist das ein Vorteil ?
    Relativ schnell kommt man an einen Punkt, wo der Controller mehrere Dinge gleichzeitig tun soll:
    Tasten abfragen, eine Anzeige bedienen, Motordrehzahl regeln, Sensoren abfragen, Weg berechnen....

    Im einfachsten Fall, schreibt man für jede Aufgebe eine Funktion und eine Hauptschleife, welche diese alle nacheinander aufruft.
    Wenn jetzt aber eine einzelne Funktion recht lange rechnen muss, sind die anderen blockiert und weil deshalb der Abstandssensor nicht abgefragt wird, rumst du in die Vase.
    Jetzt kann man sich damit behelfen, dass man den Abstandssensor über einen Interrupt bedient.
    Eine andere Möglichkeit ist, dass man die Funktionen so gestaltet, dass sie immer nach einer gewissen Zeit aufhören zu rechnen und beim nächsten Aufruf da weiterrechnen. Dazu muss man aber wissen, wie lange die einzelnen Rechnereien etwa dauern. Das wird dann aber unmöglich, wenn man z.B. auf externe Daten warten muss. Und wenn das freiwillige abgeben der CPU nicht funktioniert, sind alle anderen Funktionen blockiert.

    Der nächste Schritt ist dann ein Multitask Betriebssystem zu verwenden. Hier kann man dann jede Funktion (Task) so programmieren, wie wenn sie die einzige ist, welche auf dem Controller läuft. Im einfachsten Fall unterbricht dann das Betriebssystem nach einer festen Zeit (Timeslice) den Task durch einen Interrupt und startet einen anderen Task für die nächste Zeitscheibe. So eine Zeitscheibe ist dann z.B. 1 ms lang. Bei 10 Tasks bekommt dann jeder Task etwa 10% der CPU-Leistung ab und darf alle 10ms rechnen.
    Das Ganze kann man jetzt noch verfeinern, z.B. indem ein Task, wenn er gerade nichts zu tun hat, seine zugeteilte Rechenzeit abgibt. Dann kann man das ganze noch mit Prioritäten würzen, sodass ein Task mit hoher Priorität, mehr Rechenzeit zur Verfügung hat und schneller dran kommt.
    Ein gutes Betriebssystem verwaltet auch den Speicher entsprechend, sodass jeder Task auch hier glaubt, der einzige zu sein. Dadurch kann man dann aber auch den selben Task mehrfach laufen lassen, ohne dass diese sich in die Quere kommen. Das macht z.B. Sinn, wenn du drei gleiche Abstandssensoren hast, welche abgefragt und umgerechnet werden müssen. Den Task musst du dann nur einmal Programmieren, du musst einzig dafür sorgen, dass jeder Task nur die Daten von "seinem" Sensor bekommt. Andere Tasks können dann die aktuellen Resultate von den einzelnen Tasks abfragen.

    Man hat aber, im einfachsten Fall, nur eine CPU und deshalb geht alles immer nur der Reihe nach.
    Bei 10 Tasks bekommt aber auch nicht jeder 10% Rechenleistung ab, das das Betriebssystem auch etwas Zeit für die Verwaltung benötigt.

    Bei mehreren Kernen, kann man diese dann echt parallel rechnen lassen, indem jeder Kern einen Task ausführt. Bei 10 Tasks und 4 Kernen bekommt dann jeder Task etwa 40% der Rechenleistung eine Kernes zur Verfügung.

    Wenn du 4 Kerne hast aber nur einen Task, bringt das nix Da sind dann 3 CPUs am Däumchen Drehen!

    Dann wäre da noch das Problem, wie die Tasks untereinander Informationen austauschen können.
    Im einfachsten Fall gibt es einfach einen globalen Speicherbereich, also eine Art Pinnwand, wo jeder Task seine Resultate rein schreibt und die Resultate anderer abfragen kann. Ist natürlich schwierig in der Handhabung, wenn sich da was ändert und zudem weiss ein Task nicht, wann ein anderer das was geschieben hat, der muss immer nachscheuen gehen.

    Meistens verwendet man daher Meldungen für die Kommunikation, das funktioniert dann so ähnlich wie eine SMS.
    Ein Vorteil dabei ist, dass ein Task sich beim Betriebssystem melden kann, dass er jetzt auf eine Meldung wartet und so lange gar nichts zu rechnen hat. Der bekommt dann keine Rechenzeit zugeteilt, bis eine Meldung für ihn vorhanden ist.
    Damit kann man dann auch Pausen in einen Task einbauen ohne Rechenleistung zu verbraten; Man sendet eine Meldung, mit eine Zeitangabe, an einen speziellen Timertask. Nach dem Absenden der Meldung wird der Task dann angehalten und bekommt keine Rechenleistung mehr. Wenn die Zeit abgelaufen ist, sendet der Timertask eine Meldung zurück, dass die Zeit jetzt abgelaufen ist und der Task bekommt die Meldung zugestellt und wieder Rechenleistung zugeteilt.
    Beim Versenden einer Meldung gibt es typischerweise die Optionen:
    - Ohne Warten, man kann gleich nach dem Absenden weiterrechnen.
    - Mit warten auf Antwort. Es geht erst weiter, wenn die Antwort eingegangen ist.
    - Warten mit Timeout. Es geht weiter wenn entweder eine Antwort eingegangen ist oder wenn eine bestimmte Zeit abgelaufen ist, welche beim Versenden angegeben wurde, was immer zuerst eintritt.

    Dann braucht man manchmal noch Semaphoren. Manche Betriebssysteme stelle diese zur Verfügung, andernfalls kann man diese einfach mit einem Task einfach selbst herstellen. Semaphoren braucht man, wenn es Streit um eine Ressource geben kann.
    Nehmen wir mal an du hast einen Drucker und zwei Tasks welche einen Statusbericht drucken wollen. Nun wird es etwas unleserlich, wenn die gedruckten Zeilen beider Tasks wild gemischt auf dem Papier erscheinen
    Vor dem Ausdrucken, fragt nun jeder Task bei der Semaphore an, ob diese frei ist. Ist der Drucker frei wird dieser von der Samphore als belegt markiert und dem anfragenden Task zugeteilt. Ist der Task fertig mit Drucken, meldet er dies der Semaphore und diese markiert den Drucker wieder als frei.
    Wird der Drucker als belegt gemeldet, muss man halt abwarten, und später wieder nachfragen, bis er wieder frei ist. Das kann man natürlich noch verfeinern und sich z.B. vormerken lassen, für den Fall, dass der Drucker wieder frei gegeben wird. Entweder wird man dann nur benachrichtigt oder man bekommt den Drucker direkt zugeteilt, wenn er frei wird. Das Alles kann man dann noch mit Prioritäten garnieren....


    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  7. #7
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    Es gibt einen schönen Multikern-Micro-Controller von Parallax, den Propeller Chip. 8 Kerne a 10Mhz macht immerhin rechnerisch 80Mhz. Die 8 Kerne können eigenständig Aufgaben erledigen und abarbeiten, sprich real parallel laufen. Ich verwende diesen Chip sehr gerne für meine Hexas, da die IK-Berechnung parallel zur Servobewegung ablaufen kann.

    Einziger Nachteil von dem Chip: spezielle Programmiersprache (wobei assembler auch geht) und eben ein untypisches Design - man muss ein wenig umdenken um das ganze Potential auszunutzen.

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 09.07.2012, 19:52
  2. Biete Job Suche Firma oder Person die meinen Roboter in Bewegung bringt
    Von PanRob im Forum Jobs/Hilfen/Stellen - Gesuche und Angebote
    Antworten: 4
    Letzter Beitrag: 19.04.2012, 15:39
  3. Antworten: 10
    Letzter Beitrag: 23.02.2012, 18:09
  4. Einarmiger Roboter: Willow Garage bringt einen günstigeren PR2 heraus
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 11.08.2011, 11:20
  5. [ERLEDIGT] Roboter im Haushalt - Könnt ihr mir ein Buch empfehlen
    Von grasgruen im Forum Buchempfehlungen
    Antworten: 5
    Letzter Beitrag: 09.03.2005, 11:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •