DE102017127025B4 - Bildverarbeitungssystem, Bildverarbeitungseinrichtung, Verfahren zur Rekonfiguration einer Schaltung in einem FPGA und Programm zur Rekonfiguration einer Schaltung in einem FPGA - Google Patents

Bildverarbeitungssystem, Bildverarbeitungseinrichtung, Verfahren zur Rekonfiguration einer Schaltung in einem FPGA und Programm zur Rekonfiguration einer Schaltung in einem FPGA Download PDF

Info

Publication number
DE102017127025B4
DE102017127025B4 DE102017127025.6A DE102017127025A DE102017127025B4 DE 102017127025 B4 DE102017127025 B4 DE 102017127025B4 DE 102017127025 A DE102017127025 A DE 102017127025A DE 102017127025 B4 DE102017127025 B4 DE 102017127025B4
Authority
DE
Germany
Prior art keywords
robot
image processing
fpga
circuit
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102017127025.6A
Other languages
English (en)
Other versions
DE102017127025A1 (de
Inventor
Toshinori TAMAI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Publication of DE102017127025A1 publication Critical patent/DE102017127025A1/de
Application granted granted Critical
Publication of DE102017127025B4 publication Critical patent/DE102017127025B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/402Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by control arrangements for positioning, e.g. centring a tool relative to a hole in the workpiece, additional detection means to correct position
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/31From computer integrated manufacturing till monitoring
    • G05B2219/31081Detect position robot, agv relative to machine to start communication
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39064Learn kinematics by ann mapping, map spatial directions to joint rotations
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40499Reinforcement learning algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • G06T2207/10012Stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30108Industrial image inspection
    • G06T2207/30164Workpiece; Machine component
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S901/00Robots
    • Y10S901/01Mobile robot

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Image Processing (AREA)

Abstract

Bildverarbeitungssystem (1), umfassend:einen Roboter (300), der einen vorbestimmten Arbeitsvorgang an einem Werkstück (W, W1, W2) durchführt;eine Bildaufnahmeeinheit (230), die Bilder von dem Werkstück (W, W1, W2) aufnimmt;eine Erfassungseinheit (252), die eine Position des Roboters (300) erfasst;eine im Feld programmierbare Gatter-Anordnung (FPGA) (202), die eine interne Schaltungskonfiguration neu konfiguriert;eine Speichereinheit (222), die eine Bereichsinformation speichert, in der für jeden Arbeitsbereich des Roboters (300) eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das von der Bildaufnahmeeinheit (230) erhalten wird, als Information zur Definition der Schaltungskonfiguration des FPGA (202) definiert ist, undeine Rekonfigurationseinheit (254), die die Schaltungskonfiguration des FPGA (202) mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf der Grundlage der Tatsache rekonfiguriert, dass eine Position des Roboters (300), die von der Erfassungseinheit (252) sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.

Description

  • Die Offenbarung bezieht sich auf eine Technologie zur Rekonfiguration der Schaltungskonfiguration eines FPGA in einem Werkstück-Vermessungsprozess.
  • Im Bereich der Fabrikautomatisierung (FA) werden Roboter zur Durchführung eines vorbestimmten Arbeitsvorgangs an einem Werkstück in großem Umfang eingesetzt. Was die Steuerung solcher Roboter anbelangt, so offenbart JP 2003-211382 A eine Robotersteuerung, „um eine visuelle Rückkopplungssteuerung einer Position/Orientierung eines Roboterarms auf der Basis von erfassten Bilddaten einer Kamera (eines sog. visuellen Servo)“ durchzuführen.
  • Als Beispiel für einen von dem Roboter auszuführenden Arbeitsvorgang führt der Roboter einen Arbeitsvorgang zum Aufnehmen eines abgelegten Werkstücks und zum Befestigen des Werkstücks an einem anderen Werkstück durch. In einem Arbeitsvorgang wird ein Vermessungsvorgang durchgeführt, beispielsweise eine Werkstückpositionserkennung oder eine Werkstückprüfung. Die Werkstückvermessung wird durch verschiedene Arten einer Bildverarbeitung, die an einem Bild durchgeführt wird, realisiert, das durch Aufnehmen von Bildern des Werkstücks erhalten wird.
  • Die Bildverarbeitung, die im Werkstückvermessungsprozess durchgeführt werden soll, wird beispielsweise von einer Zentraleinheit (CPU) oder einem FPGA durchgeführt. Weil eine Verarbeitungsgeschwindigkeit des FPGA typischerweise höher ist als eine Verarbeitungsgeschwindigkeit der CPU, wird die Bildverarbeitung mit einer gewünschten Verarbeitungsgeschwindigkeit von dem FPGA ausgeführt.
  • Wenn jedoch eine Schaltung innerhalb des FPGA klein ist, unterliegt die erreichbare Bildverarbeitung Beschränkungen. Andererseits werden verschiedene Arten einer Bildverarbeitung in einem Arbeitsvorgang an einem Werkstück durch den Roboter ausgeführt. Daher ist eine Technologie für die Durchführung verschiedener Arten von Bildverarbeitungen entsprechend einem Arbeitsprozess des Roboters auch bei kleinen Schaltungsgrößen des FPGA erwünscht.
  • DE 10 2016 213 663 A1 offenbart ein Verfahren zur computergestützten Steuerung eines Endelements einer Werkzeugmaschine, wobei eine Vielzahl von optischen Markierungen in einer Arbeitsumgebung der Werkzeugmaschine mittels eines optischen Messsystems erfasst werden, eine erste relative Pose zwischen dem Endelement und einem Werkstück auf der Grundlage der Vielzahl von erfassten optischen Markierungen bestimmt wird, ein erster Korrekturwert auf der Grundlage eines Vergleichs der ersten relativen Pose mit einer Referenzpose bestimmt wird und der erste Korrekturwert zur Steuerung des Endelements zur Bearbeitung des Werkstücks berücksichtigt wird.
  • DE 11 2015 006 669 T5 offenbart ein Robotersystem mit einem Roboter und einer Bewegungssteuerung. Der Roboter umfasst erste bis dritte Arme. Eine Unterseite des ersten Arms ist auf einem Schwenkboden schwenkbar um eine zweite Achse in horizontaler Richtung gelagert. Eine Unterseite des redundanten Arms ist auf einer vorderen Seite des ersten Arms schwenkbar um eine Achse parallel zur zweiten Achse gelagert. Eine Unterseite des zweiten Arms ist auf einer vorderen Seite des redundanten Arms schwenkbar um eine dritte Achse parallel zur zweiten Achse gelagert. Eine Unterseite des dritten Arms ist auf einer vorderen Seite des zweiten Arms gelagert, die um eine vierte Achse senkrecht zur dritten Achse drehbar ist. Die Bewegungssteuereinheit aktiviert den redundanten Arm, so dass sich ein auf der vierten Achse vorgesehener Steuerpunkt linear bewegt, während eine Richtung der vierten Achse beibehalten wird.
  • DE 10 2004 048 942 A1 offenbart eine Vorrichtung zum Steuern des Antriebs einer Vielzahl von Stellgliedern, umfassend eine Vielzahl von Treiberschaltungen, die jeweils die Stellglieder antreiben und jeweils auf einer Leiterplatte montiert sind, die jeweils als Modul zum Antreiben jedes der Stellglieder ausgebildet ist. Die Vorrichtung umfasst eine Vielzahl von Kondensatoren, die jeweils auf jeder der Leiterplatten montiert sind. Die Kondensatoren haben unterschiedliche Kapazitäten. Die Vorrichtung umfasst auch eine Ladeeinheit, die die Kondensatoren auflädt, eine Messeinheit, die eine Zeitspanne misst, in der ein Ladepotential an jedem der Kondensatoren auf ein vorgegebenes Potential ansteigt, eine Modultyp-Bestimmungseinheit, die einen Typ jedes der Module gemäß der Zeitspanne für jeden gemessenen Kondensator bestimmt, und eine Einheit zum Ergreifen von Gegenmaßnahmen abhängig von einem bestimmten Ergebnis.
  • JP 2015 - 136 764 A offenbart eine Steuervorrichtung, die einen Verarbeitungsabschnitt, der einen Roboter ansteuert, der mit einem Endeffektor ausgestattet ist, der ein Arbeitsobjekt bewegt, sowie einen Empfangsabschnitt von erfassten Bildern umfasst, der ein durch das Arbeitsobjekt erhaltenes erfasstes Bild empfängt, und eine Markierung auf dem Arbeitsobjekt oder dem Endeffektor. Weiterhin nimmt der Verarbeitungsabschnitt ein Bild von dem Arbeitsobjekt und der Markierung mehrmals auf, während eine Stellung des Roboters von einer ersten Stellung in eine zweite, von der ersten Stellung verschiedene Stellung geändert wird. Dabei wird der Roboter selbst dann angesteuert, wenn eine Merkmalsmenge des Arbeitsobjekts im aufgenommenen Bild nicht erfasst werden kann. Die Steuervorrichtung ist somit in der Lage, den Roboter kontinuierlich zu betreiben, auch wenn eine Merkmalsmenge eines Arbeitsobjekts nicht erkannt werden kann oder in einem erfassten Bild fehlerhaft erkannt wird.
  • JP 2011 - 136 377 A offenbart eine Robotersteuerungsvorrichtung, die eine visuelle Servosteuerung zum Messen der Position und Lage eines Werkstücks durch eine Kamera, zum Durchführen einer Rückkopplungssteuerung des Roboters basierend auf dem Messergebnis und zum Verfolgen der Bewegung des Werkstücks durch die Kamera umfasst. Die Robotersteuervorrichtung umfasst außerdem eine Wiedererfassungssteuerung zum Wiedererfassen des Werkstücks durch Ändern der Zielpositionen der Kamera basierend auf den Endpositionen des erkannten Werkstücks, wenn das Werkstück während der visuellen Servosteuerung aus dem Gesichtsfeld der Kamera gerät. Somit ist die Robotersteuerung in der Lage, das Werkstück in kurzer Zeit wieder zu erfassen, indem sie die Kamera ohne Zoom-Mechanismus zum Verändern einer Fokussierdistanz verwendet, auch wenn das Werkstück relativ zu einem Roboter bewegt wird und während einer visuellen Servosteuerung aus dem Gesichtsfeld der Kamera gerät.
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein Bildverarbeitungssystem für einen Roboter bereitzustellen, das in der Lage ist, verschiedene Arten von Bildverarbeitungen entsprechend einem Arbeitsprozess des Roboters auch bei kleinen Schaltungsgrößen des FPGA durchzuführen. Weitere Aufgaben der vorliegenden Erfindung sind die Bereitstellung einer entsprechend für ein solches Bildverarbeitungssystem ausgelegten Bildverarbeitungseinrichtung, eines hierfür ausgelegten Verfahrens zum Rekonfigurieren einer Schaltung in einem FPGA sowie eines hierfür ausgelegten Programms zur Rekonfigurierung einer Schaltung in einem FPGA.
  • Diese Aufgaben werden durch ein Bildverarbeitungssystem für einen Roboter nach Anspruch 1, durch eine Bildverarbeitungseinrichtung für ein solches Bildverarbeitungssystem nach Anspruch 6, durch ein Verfahren zum Rekonfigurieren einer Schaltung in einem FPGA nach Anspruch 7 sowie durch ein Programms zur Rekonfigurierung einer Schaltung in einem FPGA nach Anspruch 8 gelöst. Weitere vorteilhafte Ausführungsformen sind Gegenstand der rückbezogenen Unteransprüche.
    • 1 ist ein Diagramm, das ein Beispiel für eine Systemkonfiguration eines Bildverarbeitungssystems nach einer Ausführungsform zeigt.
    • 2 ist ein Diagramm, das ein Beispiel eines Arbeitsprozesses eines Roboters nach einer Ausführungsform zeigt.
    • 3 ist ein Ablaufdiagramm, das einen Datenfluss zwischen einer Einstelleinrichtung, einer Bildverarbeitungseinrichtung, einem Roboter und einer Steuerung nach einer Ausführungsform veranschaulicht.
    • 4(A) und 4(B) sind Diagramme, die eine Bedienoberfläche für die Zuordnung einer Position des Roboters zu einer Bildverarbeitung darstellen, die an der Position entsprechend einer Ausführungsform ausgeführt werden soll.
    • 5 ist ein Diagramm zur Veranschaulichung eines Beispiels einer Bereichsinformation.
    • 6 ist ein Diagramm, das ein Beispiel für eine funktionale Konfiguration einer Bildverarbeitungseinrichtung nach einer Ausführungsform zeigt.
    • 7 ist ein Flussdiagramm, das einen Vermessungsvorgang durch die Bildverarbeitungseinrichtung nach einer Ausführungsform veranschaulicht.
    • 8 ist ein Blockschaltbild, das eine Hardware-Hauptkonfiguration der Einstelleinrichtung nach einer Ausführungsform darstellt.
    • 9 ist ein Blockdiagramm, das eine Hardware-Hauptkonfiguration der Bildverarbeitungseinrichtung nach einer Ausführungsform darstellt.
    • 10 ist ein Blockschaltbild, das eine Hardware-Hauptkonfiguration der Steuerung nach einer Ausführungsform darstellt.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung umfasst ein Bildverarbeitungssystem: einen Roboter zur Durchführung eines vorbestimmten Arbeitsvorgangs an einem Werkstück; eine Bildaufnahmeeinheit zum Aufnehmen von Bildern des Werkstücks; eine Erfassungseinheit zum Erfassen einer Position des Roboters; einen FPGA zur Rekonfiguration einer internen Schaltungskonfiguration; eine Speichereinheit zum Speichern von Bereichsinformation, in der eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das von Bildaufnahmeeinheit erhalten wurde, als Information für die Festlegung der Schaltungskonfiguration des FPGA für jeden Arbeitsbereich des Roboters definiert ist, sowie eine Rekonfigurationseinheit zum Rekonfigurieren der Schaltungskonfiguration des FPGA mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf der Grundlage der Tatsache, dass eine Position des Roboters, die durch die Bildaufnahmeeinheit sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung umfasst das Bildverarbeitungssystem weiterhin: eine Einstellungseinheit, die ausgelegt ist, um eine Bedienoberfläche für die Einstellung der Bereichsinformation bereitzustellen. Die Bedienoberfläche ist ausgelegt, um einen Auswahlvorgang zur Auswahl von einer oder mehreren Bildverarbeitungen aus einer oder mehreren vorinstallierten Bildverarbeitungen zu empfangen, und diese ist weiterhin ausgelegt, um einen Eintragungsvorgang zum Eintragen der in dem Auswahlvorgang ausgewählten Bildverarbeitung und einen Arbeitsbereich einschließlich einer aktuellen Position des Roboters in die Bereichsinformation zu empfangen.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung umfasst das Bildverarbeitungssystem weiterhin eine Bedieneinheit zum Empfangen eines Ansteuerungsvorganges zum Ansteuern des Roboters. Die Bedienoberfläche ist ausgelegt, um den Eintragungsvorgang zu empfangen, nachdem eine Position des Roboters in dem Ansteuerungsvorgang festgelegt wurde.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung zeigt die Bedienoberfläche eine aktuelle Position des Roboters in Verbindung mit dem Ansteuern des Roboters in dem Ansteuerungsvorgang an.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung führt das FPGA eine Bildverarbeitung an einem Bild entsprechend einer aktuellen Schaltungskonfiguration auf der Grundlage der Erfassung des Bildes durch die Bildaufnahmeeinheit durch.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung umfasst eine Bildverarbeitungseinrichtung, die für die Kommunikation mit einem Roboter zur Durchführung eines vorbestimmten Arbeitsvorgangs an einem Werkstück ausgelegt ist, Folgendes: eine Bildaufnahmeeinheit zum Aufnehmen von Bildern des Werkstücks; eine Erfassungseinheit zum Erfassen einer Position des Roboters; einen FPGA, der zum Rekonfigurieren einer internen Schaltungskonfiguration ausgelegt ist; eine Speichereinheit zum Speichern von Bereichsinformation, in der Schaltungsinformation zum Ausführen einer vorbestimmten Bildverarbeitung an einem Bild, das von der Bildaufnahmeeinheit erhalten wurde, als Information zum Festlegen der Schaltungskonfiguration des FPGA für jeden Arbeitsbereich des Roboters definiert ist; und eine Rekonfigurationseinheit zum Rekonfigurieren der Schaltungskonfiguration des FPGA mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf Grundlage der Tatsache, dass eine Position des Roboters, die durch die Erfassungseinheit sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
  • Nach einer oder mehreren beispielhaften Ausführungsformen der Erfindung umfasst ein Verfahren zur Rekonfigurierung einer Schaltung in einem FPGA die folgenden Schritte: Erfassen einer Position eines Roboters zur Durchführung eines vorbestimmten Arbeitsvorgangs an einem Werkstück; Aufbereiten von Bereichsinformation, in der die Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das durch Aufnehmen von Bildern des Werkstücks erhalten wurde, als Information zur Definition der Schaltungskonfiguration des FPGA für jeden Arbeitsbereich des Roboters definiert ist; und Rekonfigurieren der Schaltungskonfiguration des FPGA mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf Grundalge der Tatsache, dass eine Position des Roboters, die in dem Erfassungsschritt sequentiell erfasst wird, zu einem der Arbeitsbereich gehört, die in der Bereichsinformation definiert ist.
  • Gemäß einer oder mehreren beispielhaften Ausführungsformen der Erfindung bewirkt ein Programm zur Rekonfiguration einer Schaltung in einem FPGA dazu, dass ein Computer die folgenden Schritte ausführt: Erfassen einer Position eines Roboters zur Durchführung eines vorbestimmten Arbeitsvorgangs an einem Werkstück; Aufbereiten von Bereichsinformation, in der die Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das durch Aufnehmen von Bildern des Werkstücks erhalten wurde, als Information zur Definition der Schaltungskonfiguration des FPGA für jeden Arbeitsbereich des Roboters definiert ist; und Rekonfigurieren der Schaltungskonfiguration des FPGA mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf Grundalge der Tatsache, dass eine Position des Roboters, die in dem Erfassungsschritt sequentiell erfasst wird, zu einem der Arbeitsbereich gehört, die in der Bereichsinformation definiert ist.
  • Gemäß einer oder mehreren beispielhaften Ausführungsformen der Erfindung ist es möglich, verschiedene Arten einer Bildverarbeitung entsprechend einem Arbeitsprozess des Roboters auszuführen, auch wenn das FPGA eine kleine Schaltungsgröße hat.
  • Die vorstehenden und weiteren Aufgaben, Merkmale, Gesichtspunkte und Vorteile der Offenbarung werden in Verbindung mit den beigefügten Zeichnungen aus der nachfolgenden ausführlichen Beschreibung der Erfindung ersichtlich.
  • Nachfolgend werden Ausführungsformen gemäß der Erfindung unter Bezugnahme auf die Zeichnungen beschrieben. In der nachfolgenden Beschreibung werden die gleichen Teile und Komponenten mit den gleichen Bezugszeichen bezeichnet. Ihre Namen und Funktionen sind identisch. Detaillierte Beschreibungen davon werden daher nicht wiederholt. Die nachfolgend zu beschreibenden Ausführungsformen und modifizierten Beispiele können sinnvoll und selektiv miteinander kombiniert werden.
  • [Systemkonfiguration]
  • Ein Überblick über ein Bildverarbeitungssystem 1 gemäß der vorliegenden Ausführungsform wird anhand der 1 beschrieben. 1 ist ein Diagramm, das ein Beispiel für eine Systemkonfiguration des Bildverarbeitungssystems 1 gemäß der vorliegenden Ausführungsform zeigt.
  • Das Bildverarbeitungssystem 1 ist beispielsweise in eine Fertigungslinie oder dergleichen integriert und führt einen Prozess zum Greifen eines Werkstücks W1, das ein Produkt oder ein Halbfabrikat ist, das auf einem Ablagekasten oder dergleichen abgelegt ist, Stück für Stück und zur Befestigung des aufgenommenen Werkstücks W1 an einem Werkstück W2 durch. Obwohl in 1 der Fall dargestellt ist, bei dem sich zum besseren Verständnis eine geringe Anzahl von Werkstücken W1 innerhalb des Ablagekastens befindet, kann dort eine große Anzahl von Werkstücken W1 übereinander liegend angeordnet sein.
  • Das Bildverarbeitungssystem 1 umfasst beispielsweise eine Einstelleinrichtung 100, eine Bildverarbeitungseinrichtung 200 zum Aufnehmen von Bildern von den Werkstücken W1 und W2, einen Roboter 300 zum Durchführen eines vorbestimmten Arbeitsvorganges an den Werkstücken W1 und W2 und eine Steuerung bzw. Controller 400 zum Steuern des Roboters 300.
  • Die Einstelleinrichtung 100, die Bildverarbeitungseinrichtung 200, der Roboter 300 und die Steuerung 400 sind so konfiguriert, dass diese über ein Netzwerk NW miteinander kommunizieren können. Als Beispiel wird EtherCAT (eingetragene Marke), EtherNET (eingetragene Marke) oder ähnliches als Netzwerk NW übernommen.
  • Die Einstelleinrichtung 100 ist ein Informationsverarbeitungs-Terminal zur Durchführung einer Einstellung der Bildverarbeitungseinrichtung 200 und ist beispielsweise ein Personalcomputer (PC), ein Tablett-Terminal, ein Smartphone oder ähnliches. Die Einstelleinrichtung 100 stellt eine Bedienoberfläche bereit, mit der man einen beliebigen Vermessungsvorgang durch Kombination beliebiger Arten von Bildverarbeitung gestalten kann. Die Bedienoberfläche erhält eine Operation zur Auswahl von einer oder mehreren Bildverarbeitungen aus einer vorinstallierten Bibliothek und eine Operation zur Festlegung einer Ausführungsreihenfolge in Bezug zu jeder Bildverarbeitung eines durch die Operation ausgewählten Auswahlziels. Die Reihenfolge der Bildverarbeitungen wird beispielsweise in der Reihenfolge der Anordnung der Bildverarbeitungen des Auswahlziels festgelegt. Der Programmierer kann jeden beliebigen Vermessungsprozess entwerfen, indem er eine Operation zur Auswahl der Bildverarbeitung und eine Operation zur Bestimmung der Ausführungsreihenfolge wiederholt. Nachfolgend wird eine Serie von Bildverarbeitungen, die durch den Nutzer miteinander verknüpft werden, als „benutzerdefinierter Vermessungsprozess“ bezeichnet. Die Bildverarbeitungseinrichtung 200 wandelt den benutzerdefinierten Vermessungsprozess in ein Format, das von der Bildverarbeitungseinrichtung 200 auf der Basis des Erhalts eines Compiler-Befehls (oder einer Build-Anweisung) ausgeführt werden kann und generiert Ausführungsdaten. Die generierten Ausführungsdaten werden an die Bildverarbeitungseinrichtung 200 übertragen.
  • Die Bildverarbeitungseinrichtung 200 speichert die Ausführungsdaten auf der Grundlage des Empfangs der Ausführungsdaten von der Einstelleinrichtung 100. Anschließend liest die Bildverarbeitungseinrichtung 200 die Ausführungsdaten auf der Grundlage eines Zeitpunkts, zu dem ein Vermessungsvorgang der Werkstücke W1 und W2 ausgeführt wird, und führt den benutzerdefinierten Vermessungsvorgang durch. Ist der Werkstückerkennungsprozess als benutzerdefinierter Vermessungsvorgang eingestellt, erkennt die Bildverarbeitungseinrichtung 200 die Werkstücke aus dem Bild, das von einer Kamera (einer Bildaufnahmeeinheit) erhalten wird, und überträgt eine erkannte Werkstückposition eines Kamerakoordinatensystems an die Steuerung 400.
  • Die Steuerung 400 ist ein Steuereinrichtung zur Steuerung des Roboters 300 und ist beispielsweise eine speicherprogrammierbare Steuerung (SPS). Alternativ kann die Steuerung 400 auch ein sogenannter Industrie-PC (IPC) sein. Die Steuerung 400 wandelt die Werkstückposition des von der Bildverarbeitungseinrichtung 200 erfassten Kamerakoordinatensystems gemäß einer vorgegebenen Umrechnungsgleichung in einen Koordinatenwert eines Weltkoordinatensystems um. Die Steuerung 400 verfährt einen Arm des Roboters 300 auf den umgerechneten Koordinatenwert und gibt einen Greif-Befehl für das Werkstück W1 aus.
  • Auch wenn ein Beispiel, bei dem das Bildverarbeitungssystem 1 eine einzelne Einstelleinrichtung 100 enthält, in dem Beispiel von 1 gezeigt ist, kann das Bildverarbeitungssystem 1 eine Mehrzahl von Einstelleinrichtungen 100 enthalten. Obwohl ein Beispiel, bei dem das Bildverarbeitungssystem 1 eine einzige Bildverarbeitungseinrichtung 200 enthält, im Beispiel von 1 gezeigt ist, kann das Bildverarbeitungssystem 1 mehrere Bildverarbeitungseinrichtungen 200 enthalten. Obwohl ein Beispiel, bei dem das Bildverarbeitungssystem 1 einen einzelnen Roboter 300 beinhaltet, im Beispiel von 1 gezeigt ist, kann das Bildverarbeitungssystem 1 eine Mehrzahl von Robotern 300 beinhalten. Obwohl ein Beispiel, bei dem das Bildverarbeitungssystem 1 eine einzelne Steuerung 400 enthält, im Beispiel von 1 gezeigt ist, kann das Bildverarbeitungssystem 1 mehrere Controller bzw. Steuerungen 400 enthalten.
  • Auch wenn ein Beispiel, bei dem die Bildverarbeitungseinrichtung 200 und der Roboter 300 gemeinsam ausgebildet sind, im Beispiel von 1 dargestellt ist, können die Bildverarbeitungseinrichtung 200 und der Roboter 300 separat ausgebildet sein. Das heißt, die Bildverarbeitungseinrichtung 200 kann auf dem Roboter 300 vorgesehen sein oder kann an einer anderen Position als dem Roboter 300 vorgesehen sein.
  • [FPGA-Rekonfigurationsprozess]
  • Die Bildverarbeitungseinrichtung 200 weist eine Mehrzahl von Typen von Steuereinrichtungen auf, beispielsweise eine CPU und einen FPGA. Eine Verarbeitungsgeschwindigkeit des FPGA ist typischerweise höher als eine Verarbeitungsgeschwindigkeit der CPU. In dem FPGA kann eine Funktion zur Verfügung gestellt werden, die es erlaubt, eine Schaltungskonfiguration dynamisch zu rekonfigurieren, wenn der Prozess gerade ausgeführt wird (sog. partielle Rekonfiguration (PR)). Durch eine entsprechende Rekonfiguration der Schaltung des FPGAs ist es möglich, einen Schaltungsumfang des FPGAs virtuell zu erweitern. Das Bildverarbeitungssystem 1 gemäß der vorliegenden Ausführungsform konfiguriert die Schaltungskonfiguration des FPGA entsprechend einer Position des Roboters 300 neu.
  • Als Beispiel wird eine Korrespondenzbeziehung zwischen einem Arbeitsbereich des Roboters 300 und einer Schaltungsinformation über eine Schaltungskonfiguration des FPGA als Bereichsinformation vordefiniert. Einzelheiten zu den Bereichsinformationen werden im Folgenden beschrieben. Der in der Bereichsinformation definierte Arbeitsbereich entspricht einem Bereich, den ein Armteil des Roboters 300 im Verlauf der Werkstückvermessung wahrscheinlich durchlaufen wird. Die Bildverarbeitungseinrichtung 200 erfasst von der Steuerung 400 periodisch eine Position des Roboters 300 und rekonfiguriert die Schaltungskonfiguration des FPGA in Schaltungsinformation, die dem Arbeitsbereich entspricht, und zwar auf der Grundlage der Tatsache, dass die Position zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind. Dabei kann die Bildverarbeitungseinrichtung 200 verschiedene Arten von Bildverarbeitungen gemäß einem Arbeitsprozess des Roboters 300 durchführen, auch wenn die Schaltungsgröße des FPGAs klein ist.
  • Im Folgenden wird ein spezielles Beispiel für einen FPGA-Rekonfigurationsvorgang anhand der 2 beschrieben. 2 ist ein Diagramm, das ein Beispiel für einen Arbeitsvorgang des Roboters 300 zeigt.
  • Die Bildverarbeitungseinrichtung 200 weist beispielsweise einen FPGA 202 auf. Der FPGA 202 verfügt über Schaltungsbereiche 202A bis 202D, die neu konfiguriert bzw. rekonfiguriert werden können.
  • Im Beispiel der 2 ist ein Prozess zum Aufnehmen des Werkstücks W1 (Schritt S1), ein Prozess zum Bewegen des Werkstücks W1 (Schritt S2) und ein Prozess zur Befestigung des Werkstücks W1 am Werkstück W2 (Schritt S3) in einer zeitlichen Reihenfolge dargestellt. Die in den Schritten S1 bis S3 dargestellte Bearbeitung wird wiederholt, so dass in einer Gruppe von Werkstücken W1 und W2 ein Arbeitsvorgang realisiert wird.
  • Genauer gesagt erfasst die Bildverarbeitungseinrichtung 200 im Schritt S1 periodisch eine Position des Roboters 300 von der Steuerung 400. Die Bildverarbeitungseinrichtung 200 bestimmt anhand der aktuellen Position des Roboters 300, ob die Schaltungskonfiguration des FPGA 202 rekonfiguriert werden soll oder nicht. Beispielsweise wird bestimmt, ob die Schaltungskonfiguration des FPGA 202 anhand der nachfolgend zu beschreibenden Bereichsinformation 144A rekonfiguriert werden soll oder nicht. Obwohl die Einzelheiten davon im Folgenden beschrieben werden, ist eine Beziehung zwischen dem Arbeitsbereich des Roboters 300 und der Bildverarbeitung des Ausführungsziels in der Bereichsinformation 144A definiert. Die Bildverarbeitungseinrichtung 200 bestimmt, ob eine aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation144A definierten Arbeitsbereiche gehört oder nicht. Der hier verwendete Begriff „gehören“ bedeutet, dass die aktuelle Position des Roboters 300 in dem Arbeitsbereich, der in der Bereichsinformation 144A definiert ist, beinhaltet ist. Wenn festgestellt wird, dass die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört, wird die Schaltungskonfiguration des FPGA 202 mit der dem Arbeitsbereich zugeordneten Schaltungsinformation rekonfiguriert. Im Beispiel von Schritt S1 wird der Schaltungsbereich 202A in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 1A übertragen. Der Schaltungsbereich 202B wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 1B übertragen. Der Schaltungsbereich 202C wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 1C übertragen.
  • Um das Werkstück W1 in dem Greif-Vorgang von Schritt S1 exakt aufnehmen zu können, muss die Position des Werkstücks W1 genau erfasst werden. Deshalb beinhaltet in der Regel jede der Bildverarbeitungen 1A bis 1C einen Prozess zum Realisieren einer Verbesserung der Bildqualität. Als Beispiel sei hier die Kombination von High Dynamic Range (HDR) genannt. Die HDR-Verknüpfung arbeitet für den Fall effektiv, dass eine Lichthofbildung auftritt, beispielsweise für den Fall, dass ein Bild von einem glänzenden Werkstück aufgenommen wird. Die Bildverarbeitungseinrichtung 200 erzeugt ein HDR-Bild, indem es eine HDR-Verknüpfung auf eine Mehrzahl von Bildern von der Bildaufnahmeeinheit (der Kamera) anwendet. Anschließend erkennt die Bildverarbeitungseinrichtung 200 das Werkstück W1 aus dem erzeugten HDR-Bild. Bei der Erkennung des Werkstücks W1 werden beispielsweise vorhandene Bildverarbeitungstechniken, wie beispielsweise Template-Matching, angewendet. Die Bildverarbeitungseinrichtung 200 übermittelt die Position des Werkstücks W1 innerhalb des Bildes an die Steuerung 400.
  • Die Steuerung 400 wandelt einen Koordinatenwert des Kamerakoordinatensystems gemäß einer vorgegebenen Umrechnungsgleichung in einen Koordinatenwert des Weltkoordinatensystems um. Die Steuerung 400 gibt an den Roboter 300 entsprechend dem umgerechneten Koordinatenwert einen Steuerbefehl aus und führt den Vorgang zum Aufnehmen bzw. Greifen des Werkstücks W1 durch.
  • Im Schritt S2 führt der Roboter 300 einen Vorgang zur Bewegung des Werkstücks W1 aus. Bei diesem Vorgang erfasst die Bildverarbeitungseinrichtung 200 anschließend die aktuelle Position des Roboters 300 und ermittelt, ob die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört oder nicht. Wenn festgestellt wird, dass die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört, rekonfiguriert die Bildverarbeitungseinrichtung 200 die Schaltungskonfiguration des FPGA 202 mittels der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist. Im Beispiel von Schritt S2 wird der Schaltungsbereich 202A in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 2A übertragen. Der Schaltungsbereich 202B wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 2B übertragen. Der Schaltungsbereich 202C wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 2C übertragen.
  • Normalerweise ist die Bildqualität bei der Bewegung des Werkstücks W1 nicht wichtig. Die Bildverarbeitungseinrichtung 200 führt somit einen normalen Bildaufnahmeprozess durch. Das heißt, die Bildverarbeitungseinrichtung 200 führt keine Bildverarbeitung von hoher Qualität durch, beispielsweise eine HDR-Verknüpfung (HDR-combining).
  • Im Schritt S3 prüft der Roboter 300 die Werkstücke W1 und W2, nachdem das Werkstück W1 an dem Werkstück W2 befestigt wurde. Bei diesem Vorgang erfasst die Bildverarbeitungseinrichtung 200 anschließend die aktuelle Position des Roboters 300 und ermittelt, ob die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört oder nicht. Wenn festgestellt wird, dass die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört, rekonfiguriert die Bildverarbeitungseinrichtung 200 die Schaltungskonfiguration des FPGA 202 mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist. Im Beispiel des Schrittes S3 wird der Schaltungsbereich 202A in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 3A übertragen. Der Schaltungsbereich 202B wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 3B übertragen. Der Schaltungsbereich 202C wird in eine Schaltungskonfiguration zur Umsetzung der Bildverarbeitung 3C übertragen.
  • Typischerweise beinhaltet eine der Bildverarbeitungen 3A bis 3C eine Bildverarbeitung zur Erzeugung eines Stereobildes (beispielsweise ein Beleuchtungsstärke-Differenz-Stereo-Verfahren). Die Bildverarbeitungseinrichtung 200 führt die Prüfung des Werkstücks W1 und W2 anhand eines dreidimensionalen Bildes durch, das durch das Beleuchtungsstärke-Differenz-Stereo-Verfahren gewonnen wird. So wird beispielsweise eine Einbauposition des Werkstücks W1, das Vorhandensein oder Nichtvorhandensein von Kratzern der Werkstücke W1 und W2 und ähnliches geprüft. So wird beispielsweise ein Prüfergebnis auf einem Anzeigegerät (beispielsweise auf einer Bedienoberfläche (HMI)) (nicht gezeigt)) in der Bildverarbeitungseinrichtung 200 angezeigt.
  • [Datenfluss des Bildverarbeitungssystems 1]
  • Ein Datenfluss in dem Bildverarbeitungssystem 1 wird anhand von 3 beschrieben. 3 ist ein Ablaufdiagramm, das einen Datenfluss zwischen der Einstelleinrichtung 100, der Bildverarbeitungseinrichtung 200, dem Roboter 300 und der Steuerung 400 darstellt.
  • Ein Anwender führt vor der Durchführung der Werkstückvermessung einen Einstellvorgang durch, bei dem der Arbeitsbereich des Roboters 300 der Bildverarbeitung eines Ausführungsziels in dem Arbeitsbereich zugeordnet wird (nachfolgend als „Einlernprozess“ bezeichnet). Anschließend führt das Bildverarbeitungssystem 1 die Werkstückvermessung entsprechend einem Ergebnis des Einlernprozesses durch.
  • Nachfolgend werden der Einlernprozess und die Werkstückvermessung sequentiell beschrieben.
  • (Einlernprozess)
  • Im Schritt S10 führt der Nutzer einen Ansteuerungsvorgang durch, bei dem eine Position des Roboters 300 festgelegt wird. Der Ansteuerungsvorgang erfolgt auf einer Bedieneinheit, die den Roboter 300 ansteuert. Als Bedieneinheit kann beispielsweise ein roboterspezifisches Bedienterminal 300 sein oder als Bedieneinheit kann eine Tastatur, Maus oder dergleichen verwendet werden, die mit der Einstelleinrichtung 100 verbunden ist.
  • Im Schritt S12 generiert die Steuerung 400 entsprechend dem Ansteuerungsvorgang des Roboters 300 einen Steuerbefehl und gibt den Steuerbefehl an den Roboter 300 aus. Auf diese Weise bewegt sich der Roboter 300 entsprechend dem Ansteuerungsvorgang des Nutzers.
  • Im Schritt S20 führt der Nutzer eine Operation durch, bei der er eine Operation zur Auswahl der Bildverarbeitung auf der Einstelleinrichtung 100 der aktuellen Position des Roboters 300 zugeordnet wird. Dieser Vorgang wird beispielsweise auf einer Bedienoberfläche 140 ausgeführt, die in 4(A) und 4(B) dargestellt ist. 4(A) und 4(B) sind Diagramme, die die Bedienoberfläche 140 für die Zuordnung einer Position des Roboters 300 und die Bildverarbeitung, die an der Position ausgeführt werden soll, darstellen. So wird beispielsweise die Bedienoberfläche 140 auf der Anzeigeeinheit 105 der Einstelleinrichtung 100 angezeigt.
  • Die Bedienoberfläche 140 enthält einen Positionsanzeigebereich 141 zur Anzeige der aktuellen Position des Roboters 300. Typischerweise entspricht die aktuelle Position einer Armposition des Roboters 300. Die aktuelle Position des Roboters 300 kann durch einen Drehwinkel eines Motors, der für den Antrieb des Roboters 300 ausgelegt ist, oder durch einen dreidimensionalen Koordinatenwert angezeigt werden. Die aktuelle Position des in dem Positionsanzeigebereich 141 dargestellten Roboters 300 wird in Verbindung mit der Ansteuerung des Roboters 300 aktualisiert. Dadurch kann der Nutzer die Position des Roboters genau ermitteln. Bei einigen Ausführungsformen kann die Bedienoberfläche 140 ein Bild anzeigen, das den Roboter 300 anzeigt, und das Bild entsprechend der Ausrichtung bzw. Orientierung des Roboters 300 aktualisieren. Dadurch kann der Anwender die Ausrichtung des Roboters 300 intuitiv nachvollziehen. Dieser Effekt ist vor allem dann bemerkenswert, wenn der Nutzer den Roboter 300 nicht direkt überprüfen kann.
  • Die Bedienoberfläche 140 zeigt eine in der Bildverarbeitungseinrichtung 200 vorinstallierte Bildverarbeitungsliste 142 an. Außerdem ist die Bedienoberfläche 140 so ausgelegt, dass diese eine Auswahl von einer Bildverarbeitung oder von mehreren Bildverarbeitungen aus einer oder mehreren in der Liste 142 aufgeführten Bildverarbeitungen erhält. Der Nutzer kann also aus der Liste 142 eine Bildverarbeitung oder mehrere Bildverarbeitungen auswählen. Wenn der Nutzer nach Auswahl der Bildverarbeitung aus der Liste 142 die Hinzufügen-Taste 143 drückt, wird die aktuelle Position des Roboters 300 der ausgewählten Bildverarbeitung in der Liste 144 zugeordnet. Auf diese Weise wird die Bedienoberfläche 140 so konfiguriert, dass nach der Festlegung der Position des Roboters 300 ein Eintragungsvorgang (beispielsweise ein Drücken der Hinzufügen-Taste 143 oder dergleichen) empfangen wird. In dem Beispiel gemäß der 4 (A) sind eine Roboterposition (Θx1, Θy1, Θz1) und eine Bildverarbeitung „normales Aufnehmen von Bildern“ gemäß einem Eintragungsvorgang einander zugeordnet.
  • Der Nutzer wiederholt einen Vorgang zum Festlegen der Position des Roboters 300 und einen Vorgang zur Auswahl der Bildverarbeitung. Im Beispiel von 4(B) werden eine Roboterposition (Θx2, Θy2, Θz2) und die Bildverarbeitung „HDR-Verknüpfung“ weiter zugeordnet.
  • Im Schritt S30 wird davon ausgegangen, dass der Benutzer eine OK-Taste 145 drückt. Im Schritt S32 erzeugt die Einstelleinrichtung 100 die in 5 dargestellte Bereichsinformation 144A auf Basis einer Betätigung der OK-Taste 145. 5 ist ein Diagramm, das ein Beispiel für die Bereichsinformation144A zeigt.
  • Die Bereichsinformation144A wird auf der Grundlage einer Beziehung zwischen der Roboterposition und der Bildverarbeitung generiert, die in der Liste 144 der Bedienoberfläche 140 einander zugeordnet sind. Genauer gesagt berechnet die Einstelleinrichtung 100 aus jeder in der Liste 144 eingetragenen Roboterposition den Arbeitsbereich des Roboters 300. Die Umrechnung von der eingetragenen Roboterposition in den Arbeitsbereich erfolgt anhand einer vorgegebenen Umrechnungsgleichung. Typischerweise entspricht der Arbeitsbereich einem benachbarten Bereich einschließlich der eingetragenen Roboterposition und entspricht einem Bereich innerhalb einer vorbestimmten Entfernung von der eingetragenen Roboterposition. In diesem Fall wird der Arbeitsbereich kugelförmig. Auch ist es nicht notwendig, dass der Arbeitsbereich unbedingt kugelförmig ist. Der Arbeitsbereich kann eine andere Form haben, beispielsweise die eines Würfels.
  • Die Bildverarbeitungseinrichtung 200 erfasst auch eine Schaltungsinformation für die Durchführung der Bildverarbeitungen, die in der Liste 144 angezeigt sind. Beispielsweise wird die Schaltungsinformation durch einen Befehlscode (ein Programm) zur Konfiguration einer Schaltung des FPGA 202 angezeigt. Anschließend verknüpft die Bildverarbeitungseinrichtung 200 den aus jeder Roboterposition berechneten Arbeitsbereich mit den Schaltungsinformationen. Dabei sind in der Bereichsinformation 144A der Arbeitsbereich des Roboters 300 und die Schaltungsinformation für die in dem Arbeitsbereich auszuführende Bildverarbeitung miteinander verknüpft.
  • Im Schritt S32 überträgt die Einstelleinrichtung 100 die erzeugte Bereichsinformation144A an die Bildverarbeitungseinrichtung 200. Im Schritt S34 speichert die Bildverarbeitungseinrichtung 200 die von der Einstelleinrichtung 100 empfangene Bereichsinformation144A.
  • Auf diese Weise ist die Bedienoberfläche 140 so konfiguriert, dass diese einen Eintragungsvorgang zum Eintragen der vom Nutzer gewählten Bildverarbeitung und einen Arbeitsbereich einschließlich der aktuellen Position des Roboters 300 in der Bereichsinformation 144A empfängt. Diese Bedienoberfläche 14 ist so vorgesehen, dass der Nutzer den Arbeitsbereich des Roboters und die Bildverarbeitung, die in dem Arbeitsbereich auszuführen ist, leicht zuordnen kann.
  • (C2. Vermessungsvorgang)
  • Als nächstes wird ein Werkstück-Vermessungsvorgang der Einstelleinrichtung 100 anhand von 3 beschrieben.
  • Im Schritt S40 wird davon ausgegangen, dass die Steuerung 400 eine Werkstück-Vermessungsanweisung erhalten hat. So wird beispielsweise bei jedem Bild, das von der Bildverarbeitungseinrichtung 200 erhalten wird, die Werkstück-Vermessungsanweisung ausgegeben. Alternativ wird die Werkstück-Vermessungsanweisung nach jedem vorgegebenen Zeitintervall ausgegeben.
  • Im Schritt S50 übermittelt die Steuerung 400 die aktuelle Position des Roboters 300 an die Bildverarbeitungseinrichtung 200. Die aktuelle Position des Roboters 300 kann durch einen Drehwinkel eines Motors, der für den Antrieb des Roboters 300 ausgelegt ist, oder durch einen dreidimensionalen Koordinatenwert angezeigt werden.
  • Im Schritt S52 bestimmt die Bildverarbeitungseinrichtung 200, ob die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört oder nicht. Wenn festgestellt wird, dass die aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört, verbindet die Bildverarbeitungseinrichtung 200 das Schaltungselement des FPGA 202 entsprechend den Schaltungsinformationen, die dem Arbeitsbereich zugeordnet sind, neu und konfiguriert die Schaltungskonfiguration neu. Ansonsten wird die Rekonfiguration des FPGA 202 nicht ausgeführt.
  • Im Schritt S54 führt die Bildverarbeitungseinrichtung 200 die Bildverarbeitung entsprechend der Schaltungskonfiguration des FPGA 202 durch. Beispielsweise wird bei jeder Aufnahme eines Bildes durch die Bildaufnahmeeinheit der Bildverarbeitungseinrichtung 200 eine Anweisung zum Ausführen einer Bildverarbeitung ausgegeben. Als Beispiel für die auszuführende Bildverarbeitung führt die Bildverarbeitungseinrichtung 200 eine Bildverarbeitung aus, um eine Werkstückerkennung zu realisieren (beispielsweise ein Template-Matching).
  • Im Schritt S56 übermittelt die Bildverarbeitungseinrichtung 200 die erkannte Werkstückposition an die Steuerung 400. Beispielsweise wird eine Werkstückposition durch ein Kamerakoordinatensystem angezeigt.
  • Im Schritt S58 rechnet die Steuerung 400 die Werkstückposition des Kamerakoordinatensystems gemäß einer vorgegebenen Umrechnungsgleichung in einen Koordinatenwert des Weltkoordinatensystems um. Die Steuerung 400 gibt an den Roboter 300 einen Steuerbefehl entsprechend dem umgerechneten Koordinatenwert aus und realisiert einen Vorgang zum Aufnehmen des Werkstücks oder dergleichen.
  • Die Verarbeitung der Schritte S50 bis S58 wird iterativ ausgeführt, so dass die Schaltungskonfiguration des FPGA 202 entsprechend einer Position des Roboters 300 neu konfiguriert wird.
  • [Funktioneller Aufbau der Einstelleinrichtung 100]
  • Eine Funktion der Bildverarbeitungseinrichtung 200 wird anhand der 6 beschrieben. 6 ist ein Beispiel für eine funktionale Konfiguration des Bildverarbeitungseinrichtung 200.
  • Wie in 6 gezeigt, weist die Bildverarbeitungseinrichtung 200 die CPU 201, den FPGA 202 und die Speichereinrichtung 222 als hauptsächliche Hardwarekomponenten auf. Die CPU 201 umfasst eine Einstelleinheit 250, einer Erfassungseinheit 252 und eine Rekonfigurationseinheit 254 als funktionelle Bausteine.
  • Die Einstelleinheit 250 stellt die vorstehend beschriebene Bedienoberfläche 140 zur Verfügung (vgl. 4(A) und 4(B)). Die Bedienoberfläche 140 ist so ausgelegt, dass diese eine Auswahloperation zur Auswahl von einer Bildverarbeitung oder von mehreren Bildverarbeitungen aus einer Mehrzahl von vorinstallierten Bildverarbeitungen empfängt. Außerdem ist die Bedienoberfläche 140 so ausgelegt, dass diese einen Eintragungsvorgang für die Eintragung einer ausgewählten Bildverarbeitung und eines Arbeitsbereichs, der eine aktuelle Position des Roboters 300 enthält, in die vorstehend beschriebene Bereichsinformation 144A empfängt.
  • Die Erfassungseinheit 252 erfasst die aktuelle Position des Roboters 300 von der Steuerung 400. Typischerweise entspricht die Positionsinformation des Roboters 300, die von der Steuerung 400 empfangen wird, einer Zielposition, die von der Steuerung 400 ausgegeben wird, wenn der Roboter 300 angetrieben wird. D. h. die Steuerung 400 übermittelt eine als Verstellziel des Roboters 300 bezeichnete Position als aktuelle Position des Roboters 300 an die Erfassungseinheit 252 der Bildverarbeitungseinrichtung 200.
  • Die aktuelle Position des Roboters 300 wird periodisch erfasst. Typischerweise wird die aktuelle Position des Roboters 300 von der Steuerung 400 in regelmäßigen Kommunikations-Zeitintervallen übertragen. Alternativ wird die aktuelle Position des Roboters 300 von der Steuerung 400 entsprechend einer Erfassungsanforderung der Erfassungseinheit 252 übermittelt. Die Erfassungseinheit 252 gibt bei jeder Erfassung der aktuellen Position des Roboters 300 die aktuelle Position an die Rekonfigurationseinheit 254 aus.
  • Außerdem kann die Erfassungseinheit 252 die aktuelle Position des Roboters 300 mit Hilfe eines anderen Verfahrens als dem vorstehend beschriebenen Verfahren erfassen. Beispielsweise kann in dem Roboter 300 eine GPS-Einheit (Global Positioning System) konfiguriert sein und die Erfassungseinheit 252 kann so ausgelegt sein, dass diese eine Positionsinformationen des Roboters 300 von der GPS-Einheit erfasst.
  • Die Rekonfigurationseinheit 254 konfiguriert die Schaltungskonfiguration des FPGA 202 mit Schaltungsinformationen, die dem Arbeitsbereich zugeordnet sind, auf der Grundlage der Tatsache neu, dass die aktuelle Position des Roboters 300, die von der Erfassungseinheit 252 sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation 144A definiert sind. Dabei kann die Rekonfigurationseinheit 254 die Schaltungskonfiguration des FPGA 202 entsprechend einem Zustand des Roboters 300 neu konfigurieren.
  • Außerdem kann die Rekonfigurationseinheit 254 das FPGA 202 auf der Grundlage einer Information, die nicht die Positionsinformation des Roboters 300 ist, neu konfigurieren. Die Rekonfigurationseinheit 254 kann beispielsweise das FPGA 202 anhand von Zeitinformationen neu konfigurieren. Genauer gesagt weist sowohl die Bildverarbeitungseinrichtung 200 als auch die Steuerung 400 einen Timer bzw. Zeitgeber auf, der mit einer Uhrzeit synchronisiert ist. Die Steuerung 400 steuert den Roboter 300 entsprechend der Zeitinformation des Timers. Das heißt, die durch den Timer angezeigte Zeitinformation ist der Position des Roboters 300 zugeordnet. Weil die Zeitinformation des Timers indirekt die Position des Roboters 300 anzeigt, hat auf diese Weise die Rekonfiguration der Schaltungskonfiguration des FPGA 202 auf der Grundlage der Zeitinformation des Timers dieselbe Bedeutung wie die Rekonfiguration der Schaltungskonfiguration des FPGA 202 auf der Grundlage der Positionsinformation des Roboters 300.
  • [Steueraufbau für die Bildverarbeitungseinrichtung 200]
  • Ein Steueraufbau für die Bildverarbeitungseinrichtung wird anhand der 7 beschrieben. 7 ist ein Flussdiagramm, das einen Vermessungsvorgang durch die Bildverarbeitungseinrichtung 200 darstellt. Der Prozess gemäß der 7 wird durch die CPU 201 (vgl. 6) der Bildverarbeitungseinrichtung 200 realisiert, die das Programm ausführt. Gemäß einem weiteren Gesichtspunkt können einige oder sämtliche Prozesse durch das FPGA 202 (vgl. ), ein Schaltungselement oder andere Hardware ausgeführt werden.
  • Im Schritt S110 erfasst die CPU 201, die als die vorstehend beschriebene Erfassungseinheit 252 (vgl. 6) dient, die aktuelle Position des Roboters 300 von der Steuerung 400.
  • Im Schritt S120 bestimmt die CPU 201, ob die aktuelle Position des Roboters 300, die in Schritt S110 erfasst wurde, zu einem der in der vorstehend beschriebenen Bereichsinformation 144A definierten Arbeitsbereiche gehört oder nicht (vgl. 5). Wenn beispielsweise der Arbeitsbereich, der in der Bereichsinformation 144A definiert ist, durch einen Mittelpunkt und einen Radius definiert ist (d. h., wenn der Arbeitsbereich sphärisch ist), wird bestimmt, dass die aktuelle Position des Roboters 300 zu dem Arbeitsbereich gehört, wenn ein Abstand zwischen der aktuellen Position des Roboters 300 und dem Mittelpunkt kleiner als der Radius ist. Wenn die CPU 201 feststellt, dass die aktuelle Position des Roboters 300, die in Schritt S110 erfasst wurde, zu einem der in der vorstehend beschriebenen Bereichsinformation 144A definierten Arbeitsbereiche gehört (JA in Schritt S120), wird die Steuerung auf den Schritt S122 umgeschaltet. Ansonsten (NEIN in Schritt S120) schaltet die CPU 201 die Steuerung auf Schritt S130 um.
  • Im Schritt S122 spezifiziert die CPU 201 die Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, zu dem die aktuelle Position des Roboters 300 gehört, in der Bereichsinformation 144A. Beispielsweise wird die Schaltungsinformation durch einen Befehlscode (ein Programm) zur Konfiguration einer Schaltung des FPGA 202 angezeigt und die CPU 201 rekonfiguriert die Schaltungskonfiguration des FPGA 202 entsprechend dem Befehlscode.
  • Im Schritt S130 bestimmt die CPU 201, ob eine Anweisung zur Durchführung einer Werkstückvermessung empfangen wurde oder nicht. Beispielsweise wird der Befehl jedes Mal erteilt, wenn die Bildaufnahmeeinheit (die Kamera) der Bildverarbeitungseinrichtungseinrichtung 200 ein Bild aufnimmt. Wenn die CPU 201 feststellt, dass die Anweisung zur Durchführung der Werkstückvermessung empfangen wurde (JA in Schritt S130), wird die Steuerung auf Schritt S132 umgeschaltet. Andernfalls (NEIN in Schritt S130) kehrt die CPU 201 mit der Steuerung zu Schritt S110 zurück.
  • In Schritt S132 führt die CPU 201 eine Bildverarbeitung entsprechend einer aktuellen Schaltungskonfiguration durch. Dadurch wird der Prozess einer Werkstückvermessung realisiert.
  • [Hardwarekonfiguration]
  • Eine Hardwarekonfiguration der einzelnen Einrichtungen des Bildverarbeitungssystems 1 wird anhand der 8 bis 10 beschrieben. 8 ist ein Blockschaltbild, das eine Haupt-Hardwarekonfiguration der Einstelleinrichtung 100 des Bildverarbeitungssystems 1 darstellt. 9 ist ein Blockdiagramm, das eine Haupt-Hardwarekonfiguration der Bildverarbeitungseinrichtung 200 darstellt, welche das Bildverarbeitungs-System 1 ausbildet. 10 ist ein Blockschaltbild, das eine Haupt-Hardwarekonfiguration der Steuerung 400 darstellt, welche das Bildverarbeitungs-System 1 ausbildet.
  • (F1: Einstelleinrichtung 100)
  • Die Einstelleinrichtung 100 wird beispielsweise mit Hilfe eines Universalrechners realisiert. Der Rechner zur Realisierung der Einstelleinrichtung 100 umfasst ein Steuereinrichtung 101, einen Speicher 102, eine Speichereinrichtung 103, beispielsweise eine Festplatte (HDD), eine Netzwerkschnittstelle (I/F) 104, eine Anzeigeeinheit 105, eine Bedieneinheit 106 und einen Speicherkartenleser/-schreiber 107. Diese Abschnitte sind so miteinander verbunden, dass diese über einen internen Bus 108 miteinander kommunizieren können.
  • Die Steuereinrichtung 101 realisiert die vorstehend beschriebenen verschiedenen Arten von Funktionen durch Ausführen eines Programms (eines Befehlscodes), das in der Speichereinrichtung 103 oder dergleichen gespeichert ist, nachdem das Programm (der Befehlscode) in den Speicher 102 geladen wurde. Der Speicher 102 und die Speichereinrichtung 103 speichern Daten flüchtig oder nichtflüchtig. Neben einem Betriebssystem (OS) enthält das Speichermedium 103 eine Anwendung 103A und eine Bibliothek 110 mit einer Mehrzahl von Funktionsmodulen (Bildverarbeitungen).
  • Die Anwendung 103A ist ein Basisprogramm zur Bereitstellung der vorstehend beschriebenen Bedienoberfläche 140 (vgl. 4). Die gesamte oder ein Teil der Bibliothek 110 wird entsprechend einer Benutzerbedienung an die Bildverarbeitungseinrichtung 200 übertragen. D. h., die Bibliothek 222B (vgl. 9), die in der Speichereinrichtung 222 der Bildverarbeitungseinrichtung 200 gespeichert ist, stellt zumindest eine Teilmenge der Bibliothek 110 dar, die in der Speichereinrichtung 103 der Einstelleinrichtung 100 gespeichert ist.
  • Die Netzwerkschnittstelle 104 tauscht über das Netzwerk NW Daten zwischen der Einstelleinrichtung 100 und der Bildverarbeitungseinrichtung 200 aus (vgl. 1).
  • Die Anzeigeeinheit 105 zeigt einen Einstellungsbildschirm (beispielsweise die Bedienoberfläche 140) oder ähnliches an, die beim Ausführen der Anwendung 103A durch die Steuereinrichtung 101 ausgeführt werden. Die Anzeigeeinheit 105 umfasst ein Display, beispielsweise eine Flüssigkristallanzeige (LCD) oder dergleichen.
  • Die Bedieneinheit 106 empfängt eine Anwenderbedienanweisung und gibt an die Steuereinrichtung 101 oder dergleichen einen internen Befehl aus, der die empfangene Bedienanweisung anzeigt. Typischerweise umfasst die Bedieneinheit 106 eine Tastatur, eine Maus, ein Touchpanel, ein Tablett, eine Audioerkennungs-Einrichtung und ähnliches. Beispielsweise bestimmt der Anwender die Position des Roboters 300 durch Betätigen der Bedieneinheit 106.
  • Der Speicherkartenleser/-schreiber 107 liest Daten aus einer Speicherkarte 107A aus und schreibt die Daten auf die Speicherkarte 107A. Als Speicherkarte 107A kann ein bekanntes Speichermedium wie beispielsweise eine sichere digitale (SD) Karte verwendet werden.
  • (F2: Bildverarbeitungseinrichtung 200)
  • Als nächstes wird eine Gerätekonfiguration der Bildverarbeitungseinrichtung 20 anhand der 9 beschrieben. Die Bildverarbeitungseinrichtung 200 umfasst eine Beleuchtungseinheit 210, eine Steuereinrichtung 220 und eine Bildaufnahmeeinheit 230.
  • Die Beleuchtungseinheit 210 strahlt Licht ab, das zur Aufnahme eines zu prüfenden Werkstücks W erforderlich ist. Das heißt, die Beleuchtungseinheit 210 strahlt Licht in einem Abbildungsbereich der Bildeinheit 230 ab. Die Beleuchtungseinheit 210 umfasst eine Mehrzahl von Beleuchtungs-Steuereinheiten 211, die auf einem Beleuchtungssubstrat angeordnet sind. Diese Einheiten sind auf dem Beleuchtungssubstrat angeordnet. Jede Beleuchtungs-Steuereinheit 211 umfasst eine Beleuchtungslinse 212 und eine LED 213. Die Beleuchtungs-Steuereinheit 211 strahlt entsprechend einem Befehl der Steuereinrichtung 220 Licht ab. Genauer gesagt wird das von der LED 213 erzeugte Licht durch die Beleuchtungslinse 212 zum Werkstück W abgestrahlt.
  • Die Bildaufnahmeeinheit 230 empfängt reflektiertes Licht von dem Licht der Beleuchtungseinheit 210 und gibt ein Bildsignal aus. Dieses Bildsignal wird an die Steuereinrichtung 220 gesendet. Genauer gesagt umfasst die Bildaufnahmeeinheit 230 ein Bildaufnahmeelement 232, das in mehrere Pixel eines ladungsgekoppelten Bauelements (CCD) oder eines komplementär-Metalloxid-Halbleiters (CMOS) oder dergleichen unterteilt ist, zusätzlich zu einem optischen System, wie beispielsweise einer Abbildungslinse 231.
  • Die Steuereinrichtung 220 steuert die gesamte Bildverarbeitungseinrichtung 200. Das heißt, dass die Steuereinrichtung 220 die Beleuchtungseinheit 210 und die Bildaufnahmeeinheit 230 steuert und eine Bildverarbeitung auf Basis eines Bildsignals von der Bildeinheit 230 durchführt. Genauer gesagt umfasst die Steuereinrichtung 220 eine Verarbeitungseinheit 221, eine Speichereinrichtung 222, eine Netzwerk-Kommunikationseinheit 223 und eine externe Ein-/Ausgabeeinheit (I/O-Einheit) 225.
  • Die Verarbeitungseinheit 221 besteht aus einer integrierten Schaltung, wie beispielsweise der CPU 202 oder dem FPGA 202. Alternativ kann die Verarbeitungseinheit 221 aus einem digitalen Signalprozessor (DSP), einer Grafikprozessoreinheit (GPU), einer anwendungsspezifischen integrierten Schaltung (ASIC) oder einer anderen integrierten Schaltung bestehen.
  • Die Speichereinrichtung 222 umfasst nichtflüchtige Speichereinrichtungen, wie beispielsweise einen Nur-Lese-Speicher (ROM), einen Flash-Speicher, eine Festplatte und eine statische Silizium-Festplatte (SSD) und/oder einen nichtflüchtigen Speicher, wie beispielsweise einen Direktzugriffsspeicher (RAM). Typischerweise realisiert die Verarbeitungseinheit 221 verschiedene Arten der Bildverarbeitungen, indem diese ein Programm (einen Befehlscode) ausführt, das in der Speichereinrichtung 222, einem Modul oder dergleichen gespeichert ist.
  • Ein solches Programm (Befehlscode) oder Modul oder ähnliches ist in dem nichtflüchtigen Speicher der Speichereinrichtung 222 gespeichert und ein Programm, das aus dem nichtflüchtigen Speicher ausgelesen wird, Werkstückdaten, die zur Ausführung des Programms erforderlich sind, Bilddaten, die von der Bildaufnahmeeinheit 230 aufgenommen wurden, Daten, die ein Messergebnis anzeigen, und dergleichen, sind in dem flüchtigen Speicher der Speichereinrichtung 222 gespeichert.
  • Das Speichermedium 222 enthält Ausführungsdaten 122 zur Realisierung eines benutzerdefinierten Vermessungsprozesses, die vorstehend beschriebene Bereichsinformation 144A (vgl. 5), ein Hauptteilprogramm 222A und eine Bibliothek 222B mit verschiedenen Funktionsmodulen (Bildverarbeitung).
  • Das Hauptteilprogramm 222A ist ein Basisprogramm zur Durchführung einer Grundoperation der Bildverarbeitungseinrichtung 200 und kann ein Betriebssystem und eine Basisanwendung enthalten. Die Bibliothek 222B enthält eine Mehrzahl von Programmen zur Implementierung einer Bildverarbeitungsfunktion, die von der Bildverarbeitungseinrichtung 200 zur Verfügung gestellt wird (typischerweise ein Befehlscode und/oder eine Bibliothek). Es sind Programme installiert, die der Anzahl von Bildverarbeitungsfunktionen entsprechen, die von der Bildverarbeitungseinrichtung 200 ausgeführt werden können. Wie vorstehend beschrieben, ist die Bibliothek 222B zumindest eine Teilmenge der Bibliothek 110, die in der Speichereinrichtung 103 der Einstelleinrichtung 100 gespeichert ist.
  • Die Netzwerk-Kommunikationseinheit 223 ist eine Schnittstelle für einen Datenaustausch mit der Einstelleinrichtung 100 oder dergleichen über das Netzwerk NW. Genauer gesagt wird eine Konfiguration nach Ethernet in der Netzwerk-Kommunikationseinheit 223 angewendet. Die externe I/O-Einheit 225 ist eine Schnittstelle zum Austausch verschiedener Arten von Daten (Eingangs- und/oder Ausgangsdaten) mit der Steuerung 400.
  • (F3: Steuerung 400)
  • Als nächstes wird eine Konfiguration des Controllers bzw. der Steuerung 400 anhand der 10 beschrieben.
  • Die Steuerung 400 enthält eine Steuereinrichtung 401, beispielsweise eine CPU oder MPU, einen Chipsatz 402, einen Hauptspeicher 406, eine Speichereinrichtung 420, einen Controller 403 für ein lokales Netzwerk, einen USB-Controller 404, eine Speicherkarten-Schnittstelle 405, einen Controller 410 für einen internen Bus, einen Feldbus-Controller 409, I/O-Einheiten 411-1,411-2 und dergleichen.
  • Die Steuereinrichtung 401 realisiert gemäß der vorliegenden Ausführungsform eine Steuerung entsprechend einem Steuerziel, einen Prozess und dergleichen, indem diese verschiedene Programme ausliest, die in der Speichereinrichtung 420 gespeichert sind, indem die ausgelesenen Programme in den Hauptspeicher 406 geladen werden und indem die Programme ausgeführt werden. Der Chipsatz 402 realisiert einen Prozess als Gesamt-Controller 400 durch Ansteuerung der Steuereinrichtung 401 und jeder Komponente.
  • Die Speichereinrichtung 420 ist beispielsweise eine sekundäre Speichereinrichtung. Zusätzlich zu einem Systemprogramm zur Implementierung einer SPS-Maschine speichert die Speichereinrichtung 420 ein Anwenderprogramm 421 zur Ausführung unter Verwendung der SPS-Maschine und dergleichen. Das Anwenderprogramm 421 enthält ein Ablaufprogramm 422, das hauptsächlich zum Ausführen einer logischen Operation ausgelegt ist, ein Bewegungsprogramm 423, das hauptsächlich zum Ausführen einer numerische Operation ausgelegt ist, beispielsweise eine Positionssteuerung oder Geschwindigkeitssteuerung, ein Steuerungsprogramm 424 der Steuereinrichtung 400 und dergleichen.
  • Der Controller 403 für das lokale Netzwerk steuert den Datenaustausch mit einer anderen Einrichtung (beispielsweise mit einem Server oder dergleichen) über das lokale Netzwerk. Der USB-Controller 404 steuert einen Datenaustausch mit einer anderen Einrichtung(beispielsweise mit einem PC) über eine USB-Verbindung.
  • Die Speicherkarten-Schnittstelle 405 ist so ausgelegt, dass die Speicherkarte 416 angeschlossen oder getrennt werden kann, und kann Daten auf die Speicherkarte 416 schreiben und verschiedene Daten (Benutzerprogramm, Spur-Daten und dergleichen) aus der Speicherkarte 416 auslesen.
  • Der Controller 410 für den internen Bus ist eine Schnittstelle, die für den Datenaustausch mit den I/O-Einheiten 411-1,411-2 und dergleichen ausgelegt sind, die auf die Steuerung 400 aufgesetzt sind.
  • Der Feldbus-Controller 409 steuert den Datenaustausch mit anderen Einrichtungen (beispielsweise mit der Einstelleinrichtung 100, der Bildverarbeitungseinrichtung 200 und dem Roboter 300) über das Netzwerk NW (vgl. 1).
  • Obwohl in der 10 ein Konfigurationsbeispiel dargestellt ist, bei dem eine notwendige Funktion zur Verfügung gestellt wird, wenn die Steuereinrichtung 401 das Programm ausführt, können einige oder sämtliche der zur Verfügung gestellten Funktionen durch eine dedizierte Hardware-Schaltung realisiert werden (beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC), einen FPGA oder dergleichen). Alternativ kann ein Hauptteil des Controllers 400 auch mittels Hardware (beispielsweise einem Industrie-PC, in den ein allgemeiner PC installiert ist) entsprechend einer allgemeinen Architektur realisiert werden. In diesem Fall können mehrere Betriebssysteme mit unterschiedlichen Anwendungsfeldern so ausgelegt sein, dass diese mittels Virtualisierungs-Technologie parallel ausgeführt werden, und eine erforderliche Anwendung kann dafür ausgelegt sein, um auf jedem Betriebssystem ausgeführt werden zu können.
  • [Schlussfolgerung]
  • Wie vorstehend beschrieben, stellt die Einstelleinrichtung 100 die Bedienoberfläche 140 zur Zuordnung eines Arbeitsbereiches des Roboters 300 zu einer Bildverarbeitung zur Verfügung die in dem Arbeitsbereich ausgeführt werden soll. Entsprechend einem Einstellvorgang auf der Bedienoberfläche 140 wird eine Schaltungsinformation zum Ausführen einer Bildverarbeitung jedem Arbeitsbereich des Roboters 300 in der Bereichsinformation 144A zugeordnet. Die Bildverarbeitungseinrichtung 200 konfiguriert die Schaltungskonfiguration des FPGA 202 mit der Schaltungsinformation neu, die dem Arbeitsbereich zugeordnet ist, und zwar auf der Grundlage der Tatsache, dass eine aktuelle Position des Roboters 300 zu einem der in der Bereichsinformation 144A definierten Arbeitsbereiche gehört. Dabei kann die Bildverarbeitungseinrichtung 200 die Schaltungskonfiguration des FPGA 202 entsprechend einer Position des Roboters 300 neu konfigurieren und ein benutzerdefinierter Vermessungsvorgang entsprechend der Position des Roboters 300 durchgeführt werden.
  • Bezugszeichenliste
  • 1
    Bildverarbeitungssystem
    100
    Datenverwaltungseinrichtung
    101
    Steuereinrichtung
    102
    Speicher
    103
    Speichereinrichtung
    103A
    Anwendung
    104
    Netzwerk I/F
    105
    Anzeigeeinheit
    106
    Bedieneinheit
    107
    Speicherkarten-Lese-/-Schreibeinrichtung
    107A
    Speicherkarte
    108
    interner Bus
    110, 222B
    Bibliothek
    122
    Ausführungsdaten
    140
    Bedienoberfläche
    141
    Positionsanzeigebereich
    142
    Bildverarbeitungsliste
    143
    Hinzufügen-Taste
    144
    Liste
    144A
    Bereichsinformation
    145
    OK-Taste
    146
    Abbrechen-Taste
    200
    Bildverarbeitungseinrichtung
    222
    Speichereinrichtung / Speichereinheit
    222A
    Hauptteilprogramm
    223
    Netzwerk-Kommunikationseinheit
    225
    externe I/O-Einheit
    230
    Bildaufnahmeeinheit
    231
    Abbildungsobj ektiv
    232
    Bildaufnahmeelement
    250
    Einstelleinheit
    252
    Erfassungseinheit
    254
    Rekonfigurationseinheit
    300
    Roboter
    400
    Controller / Steuerung
    401
    Steuereinrichtung
    402
    Chipsatz
    403
    Controller für lokales Netzwerk
    404
    USB-Controller
    405
    Speicherkarten-Schnittstelle
    406
    Hauptspeicher
    409
    Feldbuscontroller 2
    410
    Controller für internen Bus
    411-1,411-2
    I/O-Einheit
    416
    Speicherkarte
    420
    Speichereinrichtung
    421
    Anwenderprogramm
    422
    Sequenzprogramm
    423
    Bewegungsprogramm
    424
    Steuerungsprogramm
    NW
    Netzwerk
    S20, S30, S32, S34, S40, S50, S52, S54, S56, S58, S58, S110, S120, S122, S130, S132
    Schritt
    W, W1, W2
    Werkstück

Claims (8)

  1. Bildverarbeitungssystem (1), umfassend: einen Roboter (300), der einen vorbestimmten Arbeitsvorgang an einem Werkstück (W, W1, W2) durchführt; eine Bildaufnahmeeinheit (230), die Bilder von dem Werkstück (W, W1, W2) aufnimmt; eine Erfassungseinheit (252), die eine Position des Roboters (300) erfasst; eine im Feld programmierbare Gatter-Anordnung (FPGA) (202), die eine interne Schaltungskonfiguration neu konfiguriert; eine Speichereinheit (222), die eine Bereichsinformation speichert, in der für jeden Arbeitsbereich des Roboters (300) eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das von der Bildaufnahmeeinheit (230) erhalten wird, als Information zur Definition der Schaltungskonfiguration des FPGA (202) definiert ist, und eine Rekonfigurationseinheit (254), die die Schaltungskonfiguration des FPGA (202) mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf der Grundlage der Tatsache rekonfiguriert, dass eine Position des Roboters (300), die von der Erfassungseinheit (252) sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
  2. Bildverarbeitungssystem (1) nach Anspruch 1, weiterhin umfassend: eine Einstelleinheit (250), die eine Bedienoberfläche (140) zum Einstellen der Bereichsinformation bereitstellt, wobei die Bedienoberfläche (140) so ausgelegt ist, um eine Auswahloperation zum Auswählen von einer Bildverarbeitung oder von mehreren Bildverarbeitungen aus einer oder mehreren vorinstallierten Bildverarbeitungen zu empfangen, und wobei die Bedienoberfläche (140) so ausgelegt ist, um eine Eintragungsoperation zum Eintragen der Bildverarbeitung, die in der Auswahloperation ausgewählt wurde, und eines Arbeitsbereichs, der eine aktuelle Position des Roboters (300) beinhaltet, in die Bereichsinformation zu empfangen.
  3. Bildverarbeitungssystem (1) nach Anspruch 2, weiterhin umfassend: eine Bedieneinheit (106), die einen Ansteuerungsvorgang zum Ansteuern des Roboters (300) empfängt, wobei die Bedienoberfläche (140) so ausgelegt ist, um den Eintragungsvorgang zu empfangen, nachdem eine Position des Roboters (300) in dem Ansteuerungsvorgang bestimmt wurde.
  4. Bildverarbeitungssystem (1) nach Anspruch 3, wobei die Bedienoberfläche (140) eine aktuelle Position des Roboters (300) in Verbindung mit dem Antreiben bzw. Ansteuern des Roboters (300) durch den Ansteuerungsvorgang anzeigt.
  5. Bildverarbeitungssystem (1) nach einem der Ansprüche 1 bis 4, wobei das FPGA (202) eine Bildverarbeitung an einem Bild entsprechend einer aktuellen Schaltungskonfiguration auf der Basis einer Erfassung des Bildes durch die Bildaufnahmeeinheit (230) durchführt.
  6. Bildverarbeitungseinrichtung (200), die ausgelegt ist, um mit einem Roboter (300) zu kommunizieren, um einen vorbestimmten Arbeitsvorgang an einem Werkstück (W, W1, W2) auszuführen, wobei die Bildverarbeitungseinrichtung umfasst: eine Bildaufnahmeeinheit (230), die Bilder von dem Werkstück (W, W1, W2) aufnimmt; eine Erfassungseinheit (252), die eine Position des Roboters (300) erfasst; eine im Feld programmierbare Gatter-Anordnung (FPGA) (202), die eine interne Schaltungskonfiguration neu konfiguriert; eine Speichereinheit (222), die eine Bereichsinformation speichert, in der für jeden Arbeitsbereich des Roboters (300) eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das von der Bildaufnahmeeinheit (230) erhalten wird, als Information zur Definition der Schaltungskonfiguration des FPGA (202) definiert ist, und eine Rekonfigurationseinheit (254), die die Schaltungskonfiguration des FPGA (202) mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet ist, auf der Grundlage der Tatsache rekonfiguriert, dass eine Position des Roboters (300), die von der Erfassungseinheit (252) sequentiell erfasst wird, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
  7. Verfahren zum Rekonfigurieren einer Schaltung in einem FPGA (202), wobei das Verfahren die folgenden Schritte umfasst Erfassen (S110) einer Position eines Roboters (300) zum Durchführen eines vorbestimmten Arbeitsvorgangs an einem Werkstück (W, W1, W2); Aufbereitung (S120) einer Bereichsinformation, in der für jeden Arbeitsbereich des Roboters (300) eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das durch Aufnehmen von Bildern des Werkstücks (W, W1, W2) erhalten wurde, als Information zur Definition der Schaltungskonfiguration des FPGA (202) definiert ist, und Rekonfigurieren (S122) der Schaltungskonfiguration des FPGA (202) mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet sind, auf der Grundlage der Tatsache, dass eine Position des Roboters (300), die in dem Erfassungsschritt sequentiell erfasst wurde, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
  8. Programm zur Rekonfigurierung einer Schaltung in einem FPGA (202), wobei das Programm einen Computer veranlasst, die Schritte von: Erfassen (S110) einer Position eines Roboters (300) zum Durchführen eines vorbestimmten Arbeitsvorgangs an einem Werkstück (W, W1, W2); Aufbereitung (S120) einer Bereichsinformation, in der für jeden Arbeitsbereich des Roboters (300) eine Schaltungsinformation zur Durchführung einer vorbestimmten Bildverarbeitung an einem Bild, das durch Aufnehmen von Bildern des Werkstücks (W, W1, W2) erhalten wurde, als Information zur Definition der Schaltungskonfiguration des FPGA (202) definiert ist; und Rekonfigurieren (S122) der Schaltungskonfiguration des FPGA (202) mit der Schaltungsinformation, die dem Arbeitsbereich zugeordnet sind, auf der Grundlage der Tatsache, dass eine Position des Roboters (300), die in dem Erfassungsschritt sequentiell erfasst wurde, zu einem der Arbeitsbereiche gehört, die in der Bereichsinformation definiert sind.
DE102017127025.6A 2017-02-08 2017-11-16 Bildverarbeitungssystem, Bildverarbeitungseinrichtung, Verfahren zur Rekonfiguration einer Schaltung in einem FPGA und Programm zur Rekonfiguration einer Schaltung in einem FPGA Active DE102017127025B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-021058 2017-02-08
JP2017021058A JP6915288B2 (ja) 2017-02-08 2017-02-08 画像処理システム、画像処理装置、FPGA(Field Programmable Gate Array)における回路の再構成方法、および、FPGAにおける回路の再構成プログラム

Publications (2)

Publication Number Publication Date
DE102017127025A1 DE102017127025A1 (de) 2018-08-09
DE102017127025B4 true DE102017127025B4 (de) 2019-08-08

Family

ID=62909824

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017127025.6A Active DE102017127025B4 (de) 2017-02-08 2017-11-16 Bildverarbeitungssystem, Bildverarbeitungseinrichtung, Verfahren zur Rekonfiguration einer Schaltung in einem FPGA und Programm zur Rekonfiguration einer Schaltung in einem FPGA

Country Status (3)

Country Link
US (1) US10474124B2 (de)
JP (1) JP6915288B2 (de)
DE (1) DE102017127025B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6546213B2 (ja) 2017-04-13 2019-07-17 ファナック株式会社 回路構成最適化装置及び機械学習装置
JP6740288B2 (ja) * 2018-07-13 2020-08-12 ファナック株式会社 物体検査装置、物体検査システム、及び検査位置を調整する方法
CN111028231B (zh) * 2019-12-27 2023-06-30 易思维(杭州)科技有限公司 基于arm和fpga的工件位置获取系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003211382A (ja) 2002-01-16 2003-07-29 Denso Wave Inc ロボット制御装置
DE102004048942A1 (de) 2003-10-08 2005-06-16 Denso Wave Inc. Vorrichtung und Verfahren zum Steuern des Antriebs von zahlreichen Aktuatoren
JP2011136377A (ja) 2009-12-25 2011-07-14 Ihi Corp ロボット制御装置及び方法
JP2015136764A (ja) 2014-01-23 2015-07-30 セイコーエプソン株式会社 制御装置、ロボットシステム、ロボット及びロボット制御方法
DE102016213663A1 (de) 2016-07-26 2018-02-01 Siemens Aktiengesellschaft Verfahren zum Steuern eines Endelementes einer Werkzeugmaschine und eine Werkzeugmaschine
DE112015006669T5 (de) 2015-06-30 2018-03-29 Kabushiki Kaisha Yaskawa Denki Robotersystem

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2262339B (en) * 1991-12-13 1995-09-06 Honda Motor Co Ltd Method of inspecting the surface of a workpiece
JP3300682B2 (ja) * 1999-04-08 2002-07-08 ファナック株式会社 画像処理機能を持つロボット装置
JP2005275938A (ja) * 2004-03-25 2005-10-06 Toshiba Corp コントローラシステムおよびメカトロニクス機器用コントローラ
JP2005288581A (ja) * 2004-03-31 2005-10-20 Fanuc Ltd 可搬式教示操作盤
JP2008296330A (ja) * 2007-05-31 2008-12-11 Fanuc Ltd ロボットシミュレーション装置
JP4364266B2 (ja) * 2007-08-01 2009-11-11 株式会社東芝 画像処理装置およびプログラム
JP5381147B2 (ja) * 2009-02-17 2014-01-08 富士電機株式会社 ワーク搬送システム
US8965104B1 (en) * 2012-02-10 2015-02-24 Google Inc. Machine vision calibration with cloud computing systems
WO2014045437A1 (ja) * 2012-09-24 2014-03-27 株式会社日立製作所 部品実装装置及び位置補正方法
JP5785284B2 (ja) * 2014-02-17 2015-09-24 ファナック株式会社 搬送対象物の落下事故を防止するロボットシステム
JP6331517B2 (ja) * 2014-03-13 2018-05-30 オムロン株式会社 画像処理装置、システム、画像処理方法、および画像処理プログラム
JP6478525B2 (ja) * 2014-08-25 2019-03-06 キヤノン株式会社 画像処理装置と、その制御方法、及びプログラム
JP6410388B2 (ja) * 2014-12-25 2018-10-24 株式会社キーエンス 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム
JP6068429B2 (ja) * 2014-12-25 2017-01-25 ファナック株式会社 ロボット識別システム
JP6429650B2 (ja) * 2015-01-29 2018-11-28 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
US9855658B2 (en) * 2015-03-19 2018-01-02 Rahul Babu Drone assisted adaptive robot control
JP2017049742A (ja) * 2015-09-01 2017-03-09 キヤノン株式会社 画像処理方法、画像処理装置、ロボット装置、プログラム、及び記録媒体
US10046459B2 (en) * 2015-11-16 2018-08-14 Abb Schweiz Ag Three-dimensional visual servoing for robot positioning
JP6464115B2 (ja) * 2016-05-25 2019-02-06 ファナック株式会社 ワイヤ放電加工システム
JP6490037B2 (ja) * 2016-10-04 2019-03-27 ファナック株式会社 移動可能な台車に支持されたロボットを備えるロボットシステム
KR101864329B1 (ko) * 2016-12-07 2018-06-05 한화에어로스페이스 주식회사 로봇 암 제어 시스템 및 방법
CN108214486A (zh) * 2016-12-22 2018-06-29 精工爱普生株式会社 控制装置、机器人及机器人系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003211382A (ja) 2002-01-16 2003-07-29 Denso Wave Inc ロボット制御装置
DE102004048942A1 (de) 2003-10-08 2005-06-16 Denso Wave Inc. Vorrichtung und Verfahren zum Steuern des Antriebs von zahlreichen Aktuatoren
JP2011136377A (ja) 2009-12-25 2011-07-14 Ihi Corp ロボット制御装置及び方法
JP2015136764A (ja) 2014-01-23 2015-07-30 セイコーエプソン株式会社 制御装置、ロボットシステム、ロボット及びロボット制御方法
DE112015006669T5 (de) 2015-06-30 2018-03-29 Kabushiki Kaisha Yaskawa Denki Robotersystem
DE102016213663A1 (de) 2016-07-26 2018-02-01 Siemens Aktiengesellschaft Verfahren zum Steuern eines Endelementes einer Werkzeugmaschine und eine Werkzeugmaschine

Also Published As

Publication number Publication date
JP2018128821A (ja) 2018-08-16
US20180224825A1 (en) 2018-08-09
DE102017127025A1 (de) 2018-08-09
JP6915288B2 (ja) 2021-08-04
US10474124B2 (en) 2019-11-12

Similar Documents

Publication Publication Date Title
DE102017125190B4 (de) Vorrichtung, Verfahren, Programm und Aufzeichnungsmedium zur Simulation des durch Roboter durchgeführten Vorgangs zum Anordnen von Artikeln
DE102018213985B4 (de) Robotersystem
DE102018215057B4 (de) Maschinelles-Lernen-Vorrichtung, Robotersystem und maschinelles-Lernen-Verfahren
DE102016114337B4 (de) System und verfahren zum verknüpfen von koordinatenräumen maschinellen sehens in einer umgebung angeleiteten zusammenbaus
DE102018109774B4 (de) Bildverarbeitungssystem, Bildverarbeitungsvorrichtung und Bildverarbeitungsprogramm
DE102017127025B4 (de) Bildverarbeitungssystem, Bildverarbeitungseinrichtung, Verfahren zur Rekonfiguration einer Schaltung in einem FPGA und Programm zur Rekonfiguration einer Schaltung in einem FPGA
DE102019125126A1 (de) Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren und System
DE102020000964A1 (de) Objekterkennungsvorrichtung, Steuervorrichtung und Objekterkennungscomputerprogramm
DE112018002565B4 (de) System und Verfahren zum direkten Anlernen eines Roboters
DE102018113589A1 (de) Vorrichtung und Programm zur Positionserfassung
DE102015111080B4 (de) Robotervorrichtung mit maschinellem Sehen
DE102015015638A1 (de) Vorrichtung und Verfahren zum Übertragen von Artikeln unter Verwendung eines Roboters
EP3098034B1 (de) Auswahl eines gerätes oder eines objektes mit hilfe einer kamera
DE102019215749A1 (de) Bildaufnahmeeinrichtung und werkzeugmaschine
DE102020118635A1 (de) 3D-Datenerzeugungsvorrichtung und Robotersteuersystem
DE102015016530B4 (de) Roboter-Identifizierungssystem
DE102005056071A1 (de) Automatisiertes Herstellungssystem
DE202006020299U1 (de) 3D-Vermessungsanordnung
DE102014117346B4 (de) Roboter, Robotersteuerungsverfahren und Robotersteuerungsprogramm zur Werkstückkorrektur
DE102020110252A1 (de) Vibrationsanzeigeeinrichtung, Betriebsprogrammerstellungseinrichtung und System
DE102018107857A1 (de) Vorrichtung, System und Verfahren zur automatischen Erzeugung eines Bewegungspfads eines Roboters
DE102017116854A1 (de) System und Verfahren zum Konfigurieren eines Kennungslesegeräts unter Verwendung einer Mobilvorrichtung
DE102018102833A1 (de) Positionskontrollsystem, positionserkennungsvorrichtung und steuerprogramm
EP2693218B1 (de) Verfahren und Vorrichtung zum Erfassen bzw. Überprüfen einer Anordnung von Laborartikeln auf einem Arbeitsfeld einer Labor-Arbeitsstation
DE102017125103A1 (de) Einstellvorrichtung und einstellsystem zum konfigurieren von einstellungen für eine mehrzahl von maschinen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final