Verfasst am: 29.11.2009, 18:30
Titel: 3D Umgebung (live)
Guten Tag zusammen,
ich plane im Moment einen recht simplen 3D-Umgebungsscanner.
Zum Grundprinzip:
Ich habe vor einen Entfernungssensor (Ultraschal oder Infrarot oder etwas in der Richtung) auf einer in 2 Richtungen beweglichen (Rechts/Links , Oben/Unten) und von einem MikroController gesteuerten Arm zu befestigen.
Der Mikrocontroller soll nun die Entfernung messen und sie anhand von Winkel und Neigung in eine Position umrechnen. Diese Position soll nun über zB RS232 an den PC gesandt werden wo sie in Matlab in ein 3D-Diagram als Pixel eingetragen werden soll.
Anschließend fährt der Arm einen Schritt weiter und wiederholt den Vorgang.
So in etwa soll es dann einmal aussehen, natürlich in wesentlich kleiner und mit einer schlechteren Auflösung:
Bild
Jetzt zu meiner Frage, wie realisier ich das am besten in Matlab ?
Am liebsten wäre es mir wenn das ganze live geschehen würde.
Ich hatte auch schon dran gedacht die Werte erst einmal zwischen zu speichern ( zB in einer Exceltabelle) und sie anschließend Printen zu lassen.
Hab in Matlab bislang nur in Zusammenhang mit Regelungstechnik Erfahrung sammeln können.
Kenne mich daher nur wenig bis gar nicht mit dem Senden und empfangen von Daten aus oder mit dem erstellen einer 3D Umgebung.
Mittlerweile bin ich meinem Ziel schon etwas näher gekommen.
Matlab empfängt die Koordinaten und zeichnet sie auch in Diagramm ein (im Moment noch nur 6 Punkte).
Hier mal mein m-File :
ser_connect = serial('COM1',...
'Baudrate', 9600,...
'Parity', 'none',...
'Databits', 8,...
'StopBits', 1);
ser_connect.Flowcontrol = 'hardware'; %handshaking aktiviert
ser_connect.ReadAsyncMode = 'manual'; %asynchrone Datenübermittlung
ser_connect.BytesAvailableFcnCount = 20; %
ser_connect.BytesAvailableFcnMode = 'byte'; %Es wird eine BytesAvailableFcnMode erzeugt, wenn bestimmte Anzahl an bytes
%verfügbar sind get(ser_connect) ; %der Port wird automatisch konfiguriert
fopen(ser_connect); %verbindet den seriellen Port mit dem Device
Jedoch wird das Diagramm immer erst nach durchlauf der while-schleife ausgegeben.
Es muss doch möglich sein das schon nach dem ersten plot3() das Diagramm geöffnet wird?
Ein weiteres Problem ist das Manchmal noch Daten im OutputBuffer liegen.
Wie kann ich den denn vorweg einmal löschen ?
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.