WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bewegender Punkt

 

Roboter
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2017, 00:27     Titel: Bewegender Punkt
  Antworten mit Zitat      
Guten Abend!
Zu allererst möchte ich einmal sagen, ich bin ziemlich neu in dem Thema Matlab usw. Ich habe aus diesem Grunde eine Frage, wo ich vielleicht einen kleinen Tipp brauchen könnte.

Zur Situation:
Ich programmiere gerade in einer Simulation eine Art Roboter, der durch einen beliebigen Raum fahren soll und am Besten zu 100% den Raum befahren soll(der Teil kommt später).
Ich habe eine Matrix für einen gedachten Raum erstellt und diese auch ausgegeben. Weiterhin habe ich einen Punkt geplotet und diesen auch bewegt, indem ich ihn immer wieder an der x-Position bewegt habe. Weiterhin habe ich die "inpolygon" Funktion genutzt um zu checken, ob er sich noch in dem Raum befindet.

Problem
Wenn der Punkt auf den Rand trifft soll eine Kollision stattfinden, daraufhin soll er "random" die Richtung wechseln und in die Richtung weiterfahren. Ich frage mich jetzt wie ich am besten eine zufällige Richtung generiere. Die Idee war dies über einen Winkel zu versuchen, aber dort komme ich zu keiner Lösung. Weiterhin müsste ich auch jedes mal die Richtung ändern von x oder y. Gibt es dazu eine spezielle Methode oder Funktion wie man dies umsetzen könnte?

Ich wäre für jede Hilfe dankbar.

Mit freundlichen Grüßen

Roboter
Private Nachricht senden Benutzer-Profile anzeigen


Roboter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2017, 21:29     Titel:
  Antworten mit Zitat      
Kleines Update:
Ich habe schon ein Problem gelöst und zwar mit dem Winkel. Die Steigung von dem Punkt wird immer wieder neu berechnet nach jeder Kollision.

Code:
function Main()
  clear all;
 
  %Initalisierung der Raummatrix, damit nachher abgefragt werden kann
  XMatrix = 0;
  YMatrix = 0;
 
  %"Winkel festsetzten"
  t=1;
  h=1;
 
  %Startpunkte vom Punkt
  x = 20;
  y = 15;
 
  %Hier die Methode ändern um verschiedene Räume einzulesen
  [XMatrix,YMatrix] = RaummitsechsEcken();
 
  %plot Funktion wird gespeichert
  p =  plot(x,y,'*');
 
 while(ausschalter == false)
 
  pause(0.01)
 
  %alte Position speichern
  xalt = get(p,'XData');
  yalt = get(p,'YData');
   
   %Bewegungsberechnung
  set(p,'YData',get(p,'YData')+0.1*t);
  set(p,'XData',get(p,'XData')+0.1*h);
 
    %Kollisionabfrage
    if(inpolygon(get(p,'XData'),get(p,'YData'),XMatrix,YMatrix) == false)
   
      %Alte Position zurückspielen    
      set(p,'XData',xalt);
      set(p,'YData',yalt);
 
      %Neue Winkelberechnung(random)
      t =  -1+rand(1)*(1-(-1));
      h =  -1+rand(1)*(1-(-1));
    endif
 
  endwhile
 
endfunction


Edit: Code geupdatet, damit es flüssiger wird.


Vielleicht hilft es wem, auch wenn es nicht top programmiert ist.

Problem an dem Code oben ist, dass sich die Geschwindigkeit des Punktes mit ändert. Vielleicht hat dort jemand eine Idee wie man die Geschwindigkeit festsetzen kann, aber der Winkel bei einer Kollision trotzdem random berechnet werden kann.

Mit freundlichen Grüßen

Roboter
Private Nachricht senden Benutzer-Profile anzeigen
 
Roboter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2017, 21:35     Titel:
  Antworten mit Zitat      
Hallo!
So nachdem ich Ewigkeiten gegooglet habe und auf keine vernünftige Lösung gekommen bin, würde ich jetzt einfach nochmal hier fragen auch wenn bis jetzt keiner geantwortet hat Very Happy

Gibt es eine Möglichkeit eine Rotationsmatrix auf einen bewegenden Punkt anzuwenden? Also in dem Sinne auf x und y getrennt voneinander eine Rotationsmatrix anzuwenden und diese danach zu plotten?

LG

Roboter
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.04.2017, 15:36     Titel:
  Antworten mit Zitat      
Hallo Roboter,

Wo genau liegt das Problem? Du kannst die Koordinaten des Punktes mit der Rotationsmatrix multiplizieren. Na klar geht das. Das Plotten danach geht auch direkt mit plot .
Ich denke, ich habe noch nicht verstanden, wo das Problem liegt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.