Design&Elektronik, Extraausgabe Okt - Silicann
Design&Elektronik, Extraausgabe Okt - Silicann
Design&Elektronik, Extraausgabe Okt - Silicann
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
PROGRAMMIERUNG<br />
Viele Innovationen innerhalb<br />
der nächsten<br />
10 Jahre werden auf<br />
dem Gebiet der »intelligenten«<br />
und busfähigen Sensoren<br />
zu erwarten sein. Getrieben<br />
wird diese Entwicklung<br />
unter anderem von den Forderungen<br />
nach dezentraler<br />
»Intelligenz«, nach Reduktion<br />
der zu übertragenden<br />
Datenmengen und nach<br />
Verringerung des Verkabelungsaufwands.<br />
Es geht zunehmend<br />
darum, die elektrischen<br />
Signale der Primärsensoren<br />
bereits im<br />
Sensorsystem in hoch verdichtete<br />
Nutzinformationen<br />
umzuwandeln und diese<br />
über standardisierte Schnittstellen<br />
zur Verfügung zu<br />
stellen (Bild 1).<br />
Dadurch wachsen die Anforderungen<br />
an die Software-<br />
Entwicklung. Einerseits werden<br />
die notwendigen algorithmischen<br />
Ansätze zur<br />
Signalverarbeitung immer<br />
komplexer. Andererseits stehen<br />
statt leistungsfähiger,<br />
zentraler Recheneinheiten für<br />
Software-Entwicklung outsourcen<br />
Vom Signal zur Information<br />
Outsourcing ist in aller Munde, wenn es um<br />
Kosteneinsparungen geht. Allerdings kann es<br />
auch handfeste technische Vorteile haben,<br />
Teile der Entwicklung an einen spezialisierten<br />
Dienstleister zu vergeben. Anhand eines Beispiels<br />
aus der Sensorik soll dieser Beitrag zeigen,<br />
worauf man bei einer solchen Zusammenarbeit<br />
achten sollte und welche Ergebnisse<br />
ein konkretes Anwendungsbeispiel<br />
gebracht hat.<br />
Henning Fuge<br />
ist für Controller<br />
und Algorithmen bei <strong>Silicann</strong><br />
Technologies verantwortlich<br />
20 DESIGN&ELEKTRONIK SOFTWARE-ENTWICKLUNG 2005<br />
die Software-Implementierung<br />
begrenzte Hardware-<br />
Ressourcen im Sensorsystem<br />
zur Verfügung. Sensorhersteller<br />
und -integratoren sind<br />
gut beraten, die Brücke zwischen<br />
Sensorsignal und busfähiger<br />
Nutzinformation von<br />
spezialisierten Dienstleistern<br />
schlagen zu lassen.<br />
Dieser Artikel erläutert die<br />
Projektstufen von der Ausgangssituation<br />
über die Entwicklung<br />
des Algorithmus<br />
und beschreibt methodische<br />
Ansätze der Software-Entwicklung.<br />
Abschließend<br />
stellt er ein konkretes Fallbeispiel<br />
aus einer Zusammenarbeit<br />
zwischen Sensorhersteller<br />
und Signalverarbeitungsspezialist<br />
vor.<br />
Die Entwicklung der Signalverarbeitung<br />
für einen Sensor<br />
wird – nachdem die<br />
Hardware ausgewählt und<br />
aufgebaut ist – oft lediglich<br />
als Softwareprojekt verstanden.<br />
Damit wird das Projekt<br />
zu früh auf die Programmierung<br />
reduziert, getragen<br />
von dem Gedanken: »Der<br />
Sensor ist jetzt fertig, er<br />
muss nur noch schnell programmiert<br />
werden«. Damit<br />
sind folgende Risiken verbunden:<br />
■ Zu knappe Bemessung<br />
dieses Projektabschnittes<br />
■ und damit von Beginn an<br />
falsche Erwartungshaltungen<br />
bezüglich des Fertigstellungstermins,<br />
nicht<br />
selten verstärkt durch eine<br />
späte Bereitstellung der<br />
Hardware-Plattform.<br />
■ Überfrachtung der Software-Entwickler<br />
mit Fragen<br />
der Signaltheorie und<br />
-verarbeitung, die nicht<br />
zu ihren Kernkompetenzen<br />
zählen.<br />
■ Fehlende oder mangelhafte<br />
konzeptionelle<br />
Überlegungen zum Signalverarbeitungsansatz<br />
und zur grundlegenden<br />
Signalverarbeitungstechnik.<br />
■ Unter Zeitdruck erstellte<br />
und von »Work-arounds«<br />
geprägte Softwarestruktur.<br />
■ Unzureichende Generalisierung,<br />
Modularisierung,<br />
Erweiterbarkeit und Wiederverwendbarkeit<br />
der<br />
Software.<br />
Dies kann zu deutlichen<br />
Nachteilen für die Verwertbarkeit<br />
und Zukunftssicherheit<br />
der entstehenden Lösung<br />
führen.<br />
Eine erfolgreiche Entwicklung<br />
für eine Signalverarbeitung<br />
vom Primärsignal bis<br />
zu busfähigen Daten ist geprägt<br />
von typischen Phasen<br />
(Bild 2), die weit vor der eigentlichenSoftware-Entwicklung<br />
beginnen. In der<br />
Darstellung in Bild 2 ist der<br />
Hardware-Zweig ausgeblendet.<br />
Es wird davon ausgegangen,<br />
dass die Hardware-<br />
Entwicklung bereits erfolgt<br />
ist und auf eine vorhandene<br />
Hardware-Plattform zugegriffen<br />
werden soll. Dies entspricht<br />
oft der Realität. Meist<br />
ist es jedoch sinnvoll, die<br />
Signalverarbeitungshardware<br />
nach den grundlegenden<br />
Überlegungen zum Systemdesign<br />
der Software zu<br />
spezifizieren.<br />
Dienstleister<br />
mit einbeziehen<br />
Wird ein Outsourcing angestrebt,<br />
kann und sollte bereits<br />
in der Spezifikationsphase<br />
der Dienstleister eingebunden<br />
werden, da<br />
gerade hier die Erfahrung<br />
des Spezialisten zu entscheidenden<br />
Weichenstellungen<br />
für das Projekt beitragen<br />
kann. So lassen sich Doppelarbeit<br />
und spätere Änderungen<br />
weitgehend ausschließen.<br />
Es ist für den Auftraggeber<br />
ratsam, dem Auftragnehmer<br />
auch Informationen<br />
über die geplante<br />
Produkt-Roadmap zu ge-
en, damit zukünftige Funktionsumfänge<br />
in der Softwarekonzeptionberücksichtigt<br />
werden können.<br />
Den Dienstleister mit der Erstellung<br />
der Spezifikation zu<br />
beauftragen, kann gerade in<br />
einer erstmaligen Zusammenarbeit<br />
als Einstieg dienen,<br />
um das Zusammenspiel<br />
zwischen Auftraggeber und<br />
Auftragnehmer zu testen.<br />
Verläuft diese Phase reibungslos,<br />
ist dies in der Regel<br />
ein guter Indikator für<br />
die weitere Zusammenarbeit.<br />
Zudem ist die externe<br />
Sicht des Spezialisten auf<br />
das Projekt meist unbefangener,<br />
sodass Klärungsbedarf<br />
für die Spezifikation<br />
schneller erkannt wird.<br />
Eine wichtige Funktion<br />
kommt der genauen Analyse<br />
des zu verarbeitenden Signals<br />
zu. In dieser Phase werden<br />
die Grundlagen für die<br />
spätere effiziente Verarbeitung<br />
definiert. Vor allem ist<br />
zu untersuchen, welche redundanzfreieNutzinformation<br />
das Signal enthält, die<br />
für eine spätere Auswertung<br />
benötigt wird. Gelingt es,<br />
diese Nutzinformation zu<br />
extrahieren und damit die<br />
Datenmenge zu reduzieren,<br />
vereinfacht sich die nachfolgende<br />
Auswertung in vielen<br />
Fällen drastisch. Die Art der<br />
Analyse hängt von den Eigenschaften<br />
des Signals ab.<br />
Sie unterscheidet sich unter<br />
anderem je nach dem, ob es<br />
sich um ein zeitdiskretes<br />
oder zeitkontinuierliches,<br />
ein- oder mehrdimensionales,<br />
quasi-lineares oder stark<br />
nicht lineares, ungestörtes<br />
oder stark gestörtes Signal<br />
handelt.<br />
Ausgehend von den Ergebnissen<br />
der Signalanalyse ist<br />
ein geeigneter technischer<br />
Ansatz für die Signalverarbeitung<br />
zu wählen. Hier sind gegebenenfalls<br />
Fragen wie die<br />
folgenden zu beantworten:<br />
■ Wie ist das Signal zu transformieren,<br />
um Korrelationen,<br />
Redundanzen und<br />
Störungen zu beseitigen?<br />
■ Wie lässt sich die Datenmenge<br />
geeignet auf<br />
die Nutzinformation reduzieren?<br />
■ Mit welchen Methoden<br />
sind welche Merkmale zu<br />
extrahieren?<br />
■ Wie werden diese Merkmale<br />
abgebildet und ausgewertet?<br />
Die richtige Wahl des technischen<br />
Ansatzes entscheidet<br />
maßgeblich über das<br />
Aufwand/Nutzen-Verhältnis<br />
der nachfolgenden Schritte.<br />
Zuweilen entscheidet sich<br />
mit der Wahl des technischen<br />
Ansatzes, ob die Lösung<br />
insgesamt realisiert<br />
werden kann.<br />
Anstatt »drauflos« zu programmieren,<br />
muss nun<br />
zunächst auf höherer Abstraktionsebene<br />
überlegt werden,<br />
wie sich der grundsätzliche<br />
technische Ansatz in geeignete<br />
Algorithmen überführen<br />
lässt und wie diese sich optimieren<br />
lassen. Auch in diesem<br />
Schritt steckt – abhängig<br />
von der Anwendung – oft gewaltigesOptimierungspotenzial.<br />
Nachdem Klarheit über den<br />
geeigneten technischen Ansatz<br />
und dessen Überleitung<br />
in Algorithmen herrscht,<br />
kann man das komplette<br />
Systemdesign für die Soft-<br />
DESIGN&ELEKTRONIK SOFTWARE-ENTWICKLUNG 2005<br />
21<br />
ware erstellen. Hierbei wird<br />
festgelegt, welche Verarbeitungsschritte<br />
vorzusehen<br />
sind, in welche Module die<br />
Software zu gliedern ist, wie<br />
die Schnittstellen zwischen<br />
den Modulen gestaltet werden<br />
sollen, welche Datenformate<br />
bedarfsgerecht sind,<br />
wie das Datenmanagement<br />
und die Datenhaltung erfolgen<br />
sollen, etc.<br />
Auswahl der Tools<br />
Tendenziell werden Tools für<br />
die Erstellung der Software<br />
zu früh und anhand der Kriterien<br />
»Was ist vorhanden«<br />
oder »Was ist bekannt« festgelegt.<br />
Die Tools werden regelmäßig<br />
durch die verwendete<br />
Hardware-Plattform<br />
vorgegeben. Dies ist ein weiterer<br />
Grund, die Hardware<br />
erst nach den technischen<br />
Überlegungen zu spezifizieren.<br />
Diese Auswahl sollte –<br />
wenn möglich – erst unmittelbar<br />
vor der eigentlichen<br />
Software-Entwicklung und<br />
unbefangen getroffen werden,<br />
damit die verwendeten<br />
Tools für die Aufgabenstellung<br />
optimal geeignet sind.<br />
Dies setzt natürlich voraus,<br />
dass eine Auswahl unter verschiedenen<br />
Alternativen<br />
möglich ist. Der Spezialist ist<br />
dazu eher in der Lage.<br />
An diesem Punkt erst beginnt<br />
die eigentliche Software-Entwicklung.<br />
Ist die<br />
Vorarbeit gut geleistet, sollte<br />
die Software-Entwicklung<br />
nun keine unliebsamen<br />
Überraschungen mehr bieten<br />
und »straight forward«<br />
in kurzer Zeit zu realisieren<br />
sein. Schließlich ist die meist<br />
auf einem Funktionsmuster<br />
oder Prototypen entwickelte<br />
Software auf die serienreife<br />
Zielhardware zu übertragen.<br />
Als nächstes kommt die Verifikation.<br />
Dabei wird überprüft,<br />
ob die entwickelte Software<br />
der Spezifikation entspricht.<br />
Eine professionell erstellte<br />
Spezifikation vereinfacht diesen<br />
Schritt deutlich. Innerhalb<br />
der Software-Entwicklung<br />
sind natürlich mehrere<br />
Verifikationsstufen ratsam. So<br />
lassen sich bei sinnvoller Software-Konzeption<br />
zunächst<br />
Module einzeln verifizieren.<br />
Ist die Verifikation erfolgreich<br />
abgeschlossen, erfolgt<br />
üblicherweise die Lieferung<br />
der Lösung, sofern die Entwicklung<br />
nicht bereits beim<br />
Auftraggeber durchgeführt<br />
wurde. Eine bedarfsgerechte<br />
Dokumentation, die dem<br />
Auftraggeber nicht nur das<br />
Verständnis der Software<br />
sondern auch der technischen<br />
Überlegungen ermöglicht,<br />
sollte bereits jetzt<br />
für den folgenden Schritt<br />
vorhanden sein.<br />
Bei der Validierung wird<br />
überprüft, ob die entwickelte<br />
Software unter den Einsatzbedingungen<br />
beim Kunden
PROGRAMMIERUNG<br />
den Anforderungen genügt.<br />
Es ist regelmäßig davon auszugehen,<br />
dass sich diese Einsatzbedingungen<br />
deutlich<br />
von den Laborbedingungen<br />
während der Entwicklung<br />
unterscheiden. Nicht selten<br />
treten dabei noch unerwünschte<br />
Effekte auf, die geeignet<br />
zu behandeln sind. Es<br />
gibt Fälle, in denen der Auftraggeber<br />
die Spezifikation<br />
unter Zeitdruck und ohne<br />
hinreichende Erfahrung erstellt<br />
hat. Dann ist nicht ausgeschlossen,<br />
dass Lücken in<br />
der Spezifikation, die berücksichtigt<br />
und nachgearbeitet<br />
werden müssen, erst<br />
während der Validierung zutage<br />
treten. Dies plant ein erfahrener<br />
Dienstleister im<br />
Sinne der Kundenzufriedenheit<br />
rechtzeitig ein.<br />
Sind die während der Validierung<br />
eventuell aufgetretenen<br />
Effekte behoben und<br />
die Nacharbeiten abgeschlossen,<br />
steht einer abschließenden<br />
Übergabe<br />
nichts im Wege. Zu einer<br />
professionellen Übergabe<br />
gehört neben der erstklassigen<br />
Dokumentation auch<br />
eine Präsentation beim Auftraggeber<br />
für einen reibungsfreien<br />
Wissenstransfer.<br />
Der Auftraggeber (Sensorhersteller<br />
oder -integrator)<br />
ist nun im Besitz einer auf<br />
seine Bedürfnisse optimierten<br />
Softwarelösung. Hat der<br />
Signalverarbeitungsspezialist<br />
gute Arbeit geleistet,<br />
werden spätere Anpassungen<br />
und Funktionserweiterungen<br />
am Sensor nur geringen<br />
Aufwand erzeugen.<br />
Der Sensorhersteller oder -integrator<br />
kann sich so auf sein<br />
Kern-Know-how konzentrieren<br />
und vermeidet es, »das<br />
Fahrrad neu zu erfinden«.<br />
Praktisches Beispiel<br />
Ein Beispiel einer erfolgreichen<br />
Zusammenarbeit zwischen<br />
Sensorhersteller und<br />
Signalverarbeitungsspezialist<br />
ist die Entwicklung eines<br />
Software-Paketes für das<br />
22 DESIGN&ELEKTRONIK SOFTWARE-ENTWICKLUNG 2005<br />
Bild 1: Wertschöpfungskette bei »intelligenten« Sensoren<br />
»Optical Multi-Input Device«<br />
(OMID) der Firma Mechaless<br />
Systems. Ausgeführt<br />
wurde die Software-Entwicklung<br />
von der Firma <strong>Silicann</strong><br />
Technologies.<br />
Das OMID ermöglicht es,<br />
verschiedene Handgesten<br />
oder Fingerbewegungen zu<br />
unterscheiden. Hierfür detektiert<br />
ein auf der »Halios«-<br />
Technik basierender Infrarotsensor<br />
die ausgesendete<br />
und von der Hand oder dem<br />
Finger zurückgestreute<br />
Strahlung, anschließend<br />
wertet der Sensor die Daten<br />
mithilfe eines Signalverarbeitungsalgorithmus<br />
aus. Je<br />
nach Aufbereitung der Sensorsignale<br />
kann das OMID –<br />
ohne Veränderung der<br />
Hardware – als optischer<br />
Schalter, Taster, Maus,<br />
Trackball oder Slider (X, Y,<br />
Z) eingesetzt werden. So<br />
kann mit dem Halios-Prinzip<br />
die gewünschte Bedienfunktion<br />
elegant und flexibel in<br />
Armaturen, Chassis und Bedienfelder<br />
integriert werden.<br />
Der mechanikfreie Aufbau<br />
ist dabei verschleißfrei<br />
und alterungsbeständig.<br />
Die Vorverarbeitung der<br />
Messwerte erfolgt mit einem<br />
Mikrocontroller der Firma Elmos,<br />
wobei ein von Mechaless<br />
entwickelter Algorithmus<br />
zum Einsatz kommt. Es<br />
galt jetzt, einen neuen Signalverarbeitungsalgorith<br />
Bild 2: Phasen der Software-Entwicklung zur Sensorsignalverarbeitung<br />
mus zu entwickeln, der die<br />
flexible und robuste Erkennung<br />
und Unterscheidung<br />
der Gesten ermöglicht. Damit<br />
waren auch die Vorteile<br />
adaptiver Ansätze für die<br />
Gestikerkennung mit Halios<br />
herauszustellen.<br />
Nach Unterzeichnung einer<br />
Verschwiegenheitsvereinbarung<br />
fand die erste Vorbesprechung<br />
beim Auftraggeber<br />
statt, bei dem alle auf<br />
der Auftraggeberseite in das<br />
Projekt involvierten Entwickler<br />
teilnahmen. So konnten<br />
zahlreiche Hinweise zum<br />
bisherigen Vorgehen und zu<br />
den aktuellen Ergebnissen<br />
aufgenommen werden. Die<br />
Zielstellung und die Rahmenbedingungen<br />
für das<br />
Projekt ließen sich dadurch<br />
schnell festlegen. Die Spezifikation<br />
im Sinne eines<br />
Pflichtenheftes wurde anhand<br />
der Erkenntnisse aus<br />
dem Projektmeeting erstellt.<br />
Nach der Festlegung der<br />
Spezifikation wurde auf dieser<br />
Basis das Angebot unterbreitet<br />
und der Auftrag erteilt.<br />
Die offene Kommunikationskultur<br />
beider Seiten<br />
unterstützte eine reibungsfreie<br />
Abstimmung. Die Vorbereitungsphase<br />
von der<br />
Vorbesprechung bis zum<br />
Auftrag benötigte so nur<br />
wenige Manntage.<br />
Die Hardware-Plattform für<br />
die Entwicklung der Signalverarbeitungssoftware<br />
hatte<br />
der Auftraggeber vor Beginn<br />
der Zusammenarbeit fertig<br />
gestellt, sodass der Mikrocontroller,<br />
die Entwicklungstools<br />
für die Software
und die sonstigen Hardware-Ressourcen<br />
bereits<br />
festgelegt und zu verwenden<br />
waren.<br />
Dem Auftragnehmer standen<br />
für die Entwicklung ein<br />
Prototyp des Sensors und<br />
grundlegende Teile der<br />
Firmware zur Verfügung.<br />
Die notwendigen Entwicklungswerkzeuge<br />
für den<br />
Controller und mehrere<br />
Hilfs- und Demonstrationsprogramme<br />
waren ebenfalls<br />
vorhanden.<br />
Das OMID zeigt – je nach<br />
Bedienverhalten – charakteristische<br />
Signalverläufe. In<br />
Bild 3 sind Beispiele für einen<br />
konkreten Bedienvorgang<br />
(»Touch«) dargestellt,<br />
basierend auf einem der vorhandenen<br />
Sensorsignale.<br />
Dabei korreliert der Signalhub<br />
mit der Entfernung der<br />
Hand vom Sensor. So kann<br />
diese typische Hand- oder<br />
Fingerbewegungen erkannt<br />
und die entsprechende applikationsspezifischeFunktion<br />
ausgelöst werden.<br />
Durch die Auswertung weiterer<br />
vorhandener Signale<br />
lassen sich auch XYZ-Bewegungen<br />
und damit andere<br />
typische Gesten oder Bewegungen<br />
auswerten (z.B.<br />
»3D-Maus«). Der technische<br />
und algorithmische Ansatz<br />
muss die Menge der bekanntenAnwendungsmöglichkeiten<br />
und Bedienvorgänge<br />
abdecken und für<br />
zukünftige Anwendungen<br />
ohne Konzeptbrüche erweiterbar<br />
sein.<br />
Die Signalanalyse lieferte<br />
wichtige Hinweise zur Datenreduktion<br />
und zur Extraktion<br />
charakteristischer Merkmale<br />
für die Unterscheidung<br />
der verschiedenen Bedienvorgänge.<br />
Aufgrund der offenen<br />
Menge zukünftiger<br />
Anwendungen wurde ein<br />
möglichst universeller technischer<br />
Ansatz auf Basis eines<br />
erweiterbaren Merkmalsraums<br />
gewählt. Dadurch<br />
kann die Signalauswertung<br />
mit einfachen Vektor-Operationen<br />
erfolgen. Das verrin-<br />
Parameter Ausgangssituation Erwartungshaltung Ergebnis<br />
Programmspeicher 4 KByte max. ggf. Erweiterung auf 8 KByte 2,5 KByte<br />
Datenspeicher 192 Byte keine Angabe 70 Byte bis 192 Byte<br />
Reaktionszeit