Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 Remotrol 1.3: Die Opensource RP6-Fernsteuerung
Hallo Fabian
Ich hab da schon mal was entdeckt: bei dem Beeper kriegt man die Zeit nicht unter 400 und bei Melodien nicht unter 100.
Ist ziemlich blöd, wen man eine Melodie schreiben will.
Sonst muss man dich aber wirklich loben! Superprojekt!
Fabian E.
24.01.2011, 20:41
Hallo Fabian
Ich hab da schon mal was entdeckt: bei dem Beeper kriegt man die Zeit nicht unter 400 und bei Melodien nicht unter 100.
Ist ziemlich blöd, wen man eine Melodie schreiben will.
Sonst muss man dich aber wirklich loben! Superprojekt!
Da hast du vollkommen recht und das ist im Moment auch (leider) so gewollt.
Die Beeper funktionieren noch nicht so ganz so wie ich das will, in der Version 1.4 ist das dann aber richtig mit einer minimalen Zeit von 1ms oder vielleicht 10ms.
Ja, 0ms wäre eigentlich noch besser, oder klappt das mit dem Datenaustausch nicht mehr?
Sonst warten wir mal auf die neue Version :)
Fabian E.
24.01.2011, 21:11
Doch, 0 ginge auch, aber wozu das?
Hallo,
ich verwende jetzt die neue RP6 Remotrol Version 1.3.1. Wenn ich den Roboter direkt über das Kabel mit dem PC verbinde funktioniert alles einwandfrei.
Mit den Funkmodulen funktioniert zwar die Kommunikation von PC zu Roboter, jedoch nicht umgekehrt.
D. h. Der Roboter macht, was ich ihm befehle, es kommen aber keine Messwerte zurück.
Außerdem funktioniert das Verbinden meist nicht, nur bei einigen Glückstreffern funktioniert dies - bei Baudrate bei beiden Modulen auf 19200 (Jumper-Stellung 2).
Für die Kommunikation mit dem RP6-Loader funktioniert das - eigentlich bräuchte ich ja 38400, wofür ich den Jumper auf Stellung 3 setzten müsste, ich weiß aber nicht, was mit Stellung 3 gemeint ist.
Ich hab ein paar Stellungen ausprobiert (natürlich auf beiden Modulen synchron), jedoch ohne Erfolg.
lg
Michi
Hier sind deine Jumper Einstellungen:
RobotMichi
25.01.2011, 13:52
Hallo,
sorry, hab wohl vergessen das zu erwähnen, ich verwende 2 RN-Funkmodule mit zwei RT868F5.
Die Jumper habe ich genau so wie auf dem Bild von ScummVM gesteckt.
lg
Michi
RobotMichi
26.01.2011, 15:12
Hi,
ich hab mir jetzt den Fehler genauer angesehen und die gesendenten bzw. empfangenen Daten angesehen, bei der Verwendung der Funkmodule. Vielleicht helfen die ja bei der Problembehebung:
Empfangen:
:0
SpeedR:0
PowerL:1
PowerR:0
LightL:835
LightR:818
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:834
LightR:823
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:3
LightL:835
LightR:822
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:835
LightR:822
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:831
LightR:822
Mic:[DATA]
Bat:757
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:835
LightR:823
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:7
PowerR:0
LightL:836
LightR:823
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:836
LightR:824
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:836
LightR:823
Mic:[DATA]
Bat:752
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:836
LightR:823
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:840
LightR:822
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:6
PowerR:0
LightL:836
LightR:823
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:836
LightR:823
Mic:[DATA]
Bat:760
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:836
LightR:819
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:10
LightL:837
LightR:823
Mic:[DATA]
Bat:753
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:838
LightR:819
Mic:
#*#*#
[DATA]
Bat:759
SpeedL:0
SpeedR:0
PowerL:2
PowerR:6
LightL:840
LightR:822
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:4
LightL:842
LightR:830
Mic:
#*#*#
[DATA]
Bat:753
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:841
LightR:828
Mic:[DATA]
Bat:759
SpeedL:0
SpeedR:0
PowerL:0
PowerR:0
LightL:841
LightR:829
Mic:
#*#*#
[DATA]
Bat:750
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:842
LightR:829
Mic:[DATA]
Bat:761
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:842
LightR:828
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:842
LightR:828
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:841
LightR:828
Mic:
#*#*#
[DATA]
Bat:756
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:847
LightR:825
Mic:[DATA]
Bat:751
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:842
LightR:833
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:839
LightR:829
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:841
LightR:827
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:0
PowerR:0
LightL:840
LightR:826
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:841
LightR:831
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:14
PowerR:0
LightL:841
LightR:828
Mic:[DATA]
Bat:751
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:842
LightR:828
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:841
LightR:831
Mic:[DATA]
Bat:755
SpeedL:0
SpeedR:0
PowerL:0
PowerR:0
LightL:841
LightR:828
Mic:[DATA]
Bat:751
SpeedL:0
SpeedR:0
PowerL:2
PowerR:2
LightL:842
LightR:827
Mic:
#*#*#
[DATA]
Bat:756
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:841
LightR:830
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:846
LightR:827
Mic:
#*#*#
[DATA]
Bat:762
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:842
LightR:827
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:843
LightR:827
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:0
PowerR:0
LightL:842
LightR:828
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:1
PowerR:0
LightL:841
LightR:827
Mic:
#*#*#
[DATA]
Bat:751
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:842
LightR:823
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:2
LightL:839
LightR:827
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:0
PowerR:0
LightL:839
LightR:830
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:6
PowerR:0
LightL:841
LightR:830
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:2
PowerR:3
LightL:840
LightR:836
Mic:[DATA]
Bat:752
SpeedL:0
SpeedR:0
PowerL:2
PowerR:0
LightL:839
LightR:829
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:13
PowerR:0
LightL:833
LightR:823
Mic:[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:833
LightR:823
Mic:
#*#*#
[DATA]
Bat:753
SpeedL:0
SpeedR:0
PowerL:1
PowerR:12
LightL:834
LightR:823
Mic:[DATA]
Bat:753
SpeedL:0
SpeedR:0
PowerL:3
PowerR:1
LightL:836
LightR:823
Mic:
#*#*#
[DATA]
Bat:754
SpeedL:0
SpeedR:0
PowerL:3
PowerR:0
LightL:834
LightR:820
Mic:
[RP6BOOT]
[READY]
Gesendet:
#99:0*
#99:0*
#9:1:1*
#9:1:2*
#9:1:3*
#9:1:4*
#9:1:5*
#9:1:6*
#9:1:7*
#9:1:8*
#9:1:9*
#9:1:10*
#9:1:11*
#9:1:12*
#9:1:13*
#9:1:14*
#9:1:15*
#9:1:16*
#9:1:17*
#9:1:18*
#9:1:19*
#9:1:20*
#9:1:21*
#9:1:22*
#9:1:23*
#9:1:24*
#9:1:25*
#9:1:26*
#9:1:27*
Wie geagt - die Informationen, die der RP6 sendet werden nicht weiterverarbeitet - die Zeiger bleiben alle bei null stehen. Allerdings werden jetzt auch die Befehel vom Pc zum Roboter nicht ausgeführt.
lg
Michi
Fabian E.
26.01.2011, 15:27
Und übers Kabel gehts sagst du?
Das wundert mich jetzt ehrlich gesagt...
Hast du nur die M32? Oder M128 + M32?
Ich kann dir zumindest sagen wo der Fehler liegt...
Ich sende das in einer Art XML-Struktur und es fehlt einfach immer das "[/DATA]".
Liegt daran, dass er beim Auslesen des Mikrofons abstürzt. Das hatte ich früher bei mir auch schonmal, hat sich irgendwann von selbst beseitigt und ich bin nie dahinter gekommen was los war...
Dass er nichts senden kann könnte daran liegen, dass er damit beschäftigt ist, die Firmware zu erfragen, was aber ja nicht klappt.
Über Kabel klappt echt alles?
Doch, 0 ginge auch, aber wozu das?
Naja, z.B. Sirene. Und sonst gibt es viele Dinge wo das sehr brauchbar ist.
Fabian E.
27.01.2011, 16:23
Ach du meinst 0 im Sinne von unendlich? Das wäre sicher sinnvoll!
Ich meine einfach mal gar keine Pause dazwischen.
RobotMichi
27.01.2011, 16:41
Hallo,
ich hab nur den RP6 und die M32.
Ich habs mit Kabel nochmal ausprobiert - erst kamen zwar die Sensorwerte an, Befehle vom PC wurden aber nicht ausgeführt.
Nach einigen Malen trennen und wieder verbeinden funktionierte alles einwandfrei.
lg
Michi
Wenn ich jetzt dein Programm starte und dann auf Beeper gehe, kann ich einen Sound abspielen, mit mindestens 400ms Dauer. Mag sein, dass es hier sogar besser ist, hört man dann wenigstens was. Bei Melodien kann ich zwar auf 100 runter, dann tue ich von mir aus den Ton einfügen, den nächsten, noch einen... Aber es gibt doch Melodien, deren Töne schon fast nacheinander kommen, oder mit 10ms oder so.
Ist jetzt glaube ich verständlicher. :)
Fabian E.
27.01.2011, 16:49
Ja, das sollte dann mit der neuen Version von sich aus weg sein.
Wie gesagt, das liegt einfach an der Art, wie ich das eingebaut habe.
Ich hatte da früher ein kleines problem und musste dwegen einen etwas seltsamen Weg für die Töne wählen.
Ok, dann, wie gesagt, warten wir doch auf die nächste Version :)
Fabian E.
27.01.2011, 16:56
Hallo,
ich hab nur den RP6 und die M32.
Ich habs mit Kabel nochmal ausprobiert - erst kamen zwar die Sensorwerte an, Befehle vom PC wurden aber nicht ausgeführt.
Nach einigen Malen trennen und wieder verbeinden funktionierte alles einwandfrei.
lg
Michi
Also den übertragenen Daten nach zu urteilen hast du ein Problem mit dem Mikrofon...
Wie gesagt, ich hatte das auch schon und habe keine Ahnung warum.
Wenn du willst kannst du einfach im Code in der Datei "Firmware\Library\RP6control\PCConnection_M32.c" die Zeile
writeInteger(getMicrophonePeak(),DEC); auskommentieren.
Dann klappt zwar das Mikrofon nicht mehr, aber das tut es ja jetzt auch nicht ;)
Ich werde wohl mal SlyD fragen wie das passieren kann...
RobotMichi
27.01.2011, 17:04
Hallo,
ich hab jetzt die Zeile auskommentiert - das Problem, dass das [/DATA] fehlt besteht weiterhin. Aber wie gesagt, nur mit Funk.
lg
Michi
Fabian E.
27.01.2011, 17:20
Hm... Das ist aber merkwürdig...Dann liegts vielleicht doch am Funk...
Über kabel kommen auch Mikrofonwerte rein? (wenn dus wieder einkommentierst natürlich nur ;) )
RobotMichi
27.01.2011, 17:25
ja, über Kabel bewegt sich der Mikrofonzeiger wenn ich es antippe.
Ich habe das Programm mit dem RP6+M32+M128 getestet und vermute noch einige Bugs.
Die Version auf dem Basis board scheint gut zu laufen. Mir gefällt jedoch die Anzeige bzw. Steuerung der Motorfunktion nicht, der Motorbefehl wird erst abgesetzt wenn man den Regler loslässt. Man sieht auch die eigentlich interssanten Messwerte der Motordaten aus dem Überwachungsfenster nicht oder nur indem man zwischen den Reitern umschaltet. Das lässt sich besser lösen. Der Regler ganz rechts hat irgendwie keine Funktion? Aber zur Motorsteuerung gleich noch mehr.
Zunächst testete ich ausgiebig Base+M32
Bedient man den Motorenmittelregler, werden zwar die Regler der Einzelmotoren mit bewegt, der Befehl an beide Motoren scheint aber manchmal verloren zu gehen bzw. nur manchmal an der Base anzukommen. Die Einzelregler funktionieren aber wohl - da hatte der Bot noch keine Aussetzer.
Dann ist mir aufgefallen, das die LEDs auf der M32 falsch angesteuert werden. Die Reihenfolge von LED 1-4 ist vertauscht, also wenn ich LED4 anschalte geht LED1 an, usw. Ich weis nicht ob das ein Bug in der Firmware oder im Programm ist, es ist jedenfalls sicher reproduzierbar.
Mein M32 Board ist leider eines aus der Charge wo die Diode D1 fehlt, demnach schlägt der Microfontest fehl - dazu kann aber die Software nix.
Leider liest das Programm die Werte für die ADC0/1 auf dem Baseboard nicht aus, ich habe mir da ein Linesensormodul angeschlossen und würde natürlich gerne auch die Daten am ADC sehen.
Gleiches gilt für die ADC Werte des M32 Boards (die ich aktuell noch nicht nutze).
Dann hab ich versucht das Log im Programm zu stoppen um es mit c&p hier einzubauen.. zum meinem erstaunen stoppt das log aber nicht... auch läuft es nicht so das die jeweils aktuelle Zeile sichtbar ist.... sondern ab der ersten im log... das macht wenig Sinn.
Was ich nämlich dokumentieren wollte ist, das der Bot verbunden ist, es auch Werte für die Batterie und die LDRs gibt (oder zumindest was angezeigt wird - ich bezweifele dass es sich um aktuelle Daten des Bot handelt), jedoch das auslesen weiterer Daten scheinbar fehlschlägt.
[INFO] 00:13:14: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:67*
[INFO] 00:13:15: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:68*
Im Programm ist wärend dessen auch das Selbsttestfenster eingegraut. Anscheinend funktioniert die i2c Bus Kommunikation nicht mehr richtig worauf hin auch das Programm durcheinander gerät. Trennt man im Programm die Verbindung, bleibt der Button trennen aktiv und eine Widerverbindung ist nicht möglich.
Dann.. Test mit Base+M32+M128
Die I2C Kommunikation war nur nach mehrmaligem Booten mit Glück hinzubekommen, die M128 konnte das LCD welches auf der M32 aufgesteckt war z.b. nicht beschreiben (per i2clcdtest sollte das doch gehen), Messwerte wie für die LDR gingen verloren, die LEDs auf dem m32 Board waren ebenfalls verdreht usw usw... geschätzt sind ca. 40% aller Daten verloren gegangen, letztlich hatte ich massenweise Schwierigkeiten das Ganze ansatzweise zum Laufen (oder sagen wir besser zu einer Reaktion) zu bringen. Es war offensichtlich das beide kleinen CPUs im Slave Mode liefen und teilweise Daten ankamen... aber eben nicht durchgängig und nicht immer 100%ig reproduzierbar.
Es scheint dabei evtl. Timingprobleme auf dem ic2 sowie auch Programmfehler bei unerwarteten Antworten des Bot auf Sensorabfragen zu geben. Bei der M128 jedoch mehr als mit der M32.
Meine Meinung: An dem Programm sowie an den Libs und "Firmware" muss noch viel gemacht werden bevor das eine sinnvolle nützliche Software ist, für einfache Tests ist das Ding jedoch brauchbar und für Entwickler ein schönes Beispiel was alles schief gehen kann.
Achso... und manchmal bekomme ich beim beenden des Programms auch eine Fehlermeldung das irgendwas abgeschmiert sei, das mir netterweise beim Neustart dann angezeigt wird...
Gruß RolfD
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ComponentModel.Win32Exception (0x80004005): Der angegebenen Datei ist keine Anwendung zugeordnet
at System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at DiamondFramework.Logger.FormReportError.btnShowFil e_Click(Object sender, EventArgs e) in H:\RP6\RP6 Remotrol\C#\DiamondFramework\Logger\FormReportErro r.cs:line 39
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
RP6 Remotrol
Assembly Version: 1.3.1.251
Win32 Version: 1.3.1.251
CodeBase: file:///D:/RP6/RP6%20Remotrol%201.3/RP6%20Remotrol.exe
----------------------------------------
DiamondFramework
Assembly Version: 1.1.0.37216
Win32 Version: 1.1.0.37216
CodeBase: file:///D:/RP6/RP6%20Remotrol%201.3/DiamondFramework.DLL
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.WindowsAPICodePack
Assembly Version: 1.1.0.0
Win32 Version: 1.1.0.0
CodeBase: file:///D:/RP6/RP6%20Remotrol%201.3/Microsoft.WindowsAPICodePack.DLL
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Fabian E.
08.02.2011, 08:10
Hallo und danke erst mal für dein ausführliches Feedback.
Ich habe dazu einige Dinge zu sagen und zu korrigieren:
Mir gefällt jedoch die Anzeige bzw. Steuerung der Motorfunktion nicht, der Motorbefehl wird erst abgesetzt wenn man den Regler loslässt
Das ist mit Absicht so. Der RP6 würde sonst tonnenweise Befehle bekommen.
Der Regler ganz rechts hat irgendwie keine Funktion?
Doch, dort stellt du die Geschwindigkeit für die Pfeiltasten-Steuerung ein.
Danach in die Textbox oben klicken und mit dem Pfeiltasten fahren.
Mir gefällt jedoch die Anzeige bzw. Steuerung der Motorfunktion nicht, der Motorbefehl wird erst abgesetzt wenn man den Regler loslässt. Man sieht auch die eigentlich interssanten Messwerte der Motordaten aus dem Überwachungsfenster nicht oder nur indem man zwischen den Reitern umschaltet. Das lässt sich besser lösen.
Dein Vorschlag?
Bedient man den Motorenmittelregler, werden zwar die Regler der Einzelmotoren mit bewegt, der Befehl an beide Motoren scheint aber manchmal verloren zu gehen bzw. nur manchmal an der Base anzukommen. Die Einzelregler funktionieren aber wohl - da hatte der Bot noch keine Aussetzer.
Entweder hast du eben den Regler nicht losgelassen, oder es war Zufall, dass nur die vom mittleren Regler nicht ankommen. Ein Zusammenhang mit dem Regler an sich ist ausgeschlossen.
Dann ist mir aufgefallen, das die LEDs auf der M32 falsch angesteuert werden. Die Reihenfolge von LED 1-4 ist vertauscht, also wenn ich LED4 anschalte geht LED1 an, usw. Ich weis nicht ob das ein Bug in der Firmware oder im Programm ist, es ist jedenfalls sicher reproduzierbar.
Ich würde es nicht unbedingt Bug nennen. Habe mir da keine großen Gedanken drum gemacht welche LED nun LED1 ist. Ich kann aber gerne noch mal drüber gucken, welche wann angesteuert werden.
Leider liest das Programm die Werte für die ADC0/1 auf dem Baseboard nicht aus, ich habe mir da ein Linesensormodul angeschlossen und würde natürlich gerne auch die Daten am ADC sehen.
Gleiches gilt für die ADC Werte des M32 Boards (die ich aktuell noch nicht nutze).
Das war auch ein Vorschlag einer meiner Beta-Tester und steht auf der ToDo-Liste. Hast du einen Vorschlag für die grafische Darstellung?
Dann hab ich versucht das Log im Programm zu stoppen um es mit c&p hier einzubauen.. zum meinem erstaunen stoppt das log aber nicht... auch läuft es nicht so das die jeweils aktuelle Zeile sichtbar ist.... sondern ab der ersten im log... das macht wenig Sinn.
Bin mir grade nicht ganz sicher was auf den Buttons drauf steht, die waren jedenfalls nie dazu gedacht, das Log zu "stoppen", sondern nur um das Autoscrolling zu deaktivieren. Leider ist das so wie ich mir das vorstelle nicht möglich. Daher wird lediglich der Fokus von der Textbox genommen und wenn man wieder reinklickt scrollt sie weiter.
Was ich nämlich dokumentieren wollte ist, das der Bot verbunden ist, es auch Werte für die Batterie und die LDRs gibt (oder zumindest was angezeigt wird - ich bezweifele dass es sich um aktuelle Daten des Bot handelt), jedoch das auslesen weiterer Daten scheinbar fehlschlägt.
Inwiefern schlägt denn das Auslesen fehl? Du kannst im Terminal gucken, ob aktuelle Daten ankommen.
[INFO] 00:13:14: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:67*
[INFO] 00:13:15: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:68*
Das hier deutet darauf hin, dass die Kommunikation zwischen Master-Modul und PC nicht perfekt klappt. In der nächsten Version habe ich die Befehlsverwaltung komplett neu geschrieben, sie ist jetzt wesentlich verlässlicher.
Im Programm ist wärend dessen auch das Selbsttestfenster eingegraut. Anscheinend funktioniert die i2c Bus Kommunikation nicht mehr richtig worauf hin auch das Programm durcheinander gerät. Trennt man im Programm die Verbindung, bleibt der Button trennen aktiv und eine Widerverbindung ist nicht möglich.
Woran willst du bitte erkennen das die I2C (!!!) Kommunikation nicht klappt?
Der Bot wird nicht über I2C angesprochen. Die Kommuniktion mit dem PC läuft über UART.
Nur die interne Kommunikation der Controler läuft über I2C.
Die I2C Kommunikation war nur nach mehrmaligem Booten mit Glück hinzubekommen, die M128 konnte das LCD welches auf der M32 aufgesteckt war z.b. nicht beschreiben (per i2clcdtest sollte das doch gehen), Messwerte wie für die LDR gingen verloren, die LEDs auf dem m32 Board waren ebenfalls verdreht usw usw... geschätzt sind ca. 40% aller Daten verloren gegangen, letztlich hatte ich massenweise Schwierigkeiten das Ganze ansatzweise zum Laufen (oder sagen wir besser zu einer Reaktion) zu bringen. Es war offensichtlich das beide kleinen CPUs im Slave Mode liefen und teilweise Daten ankamen... aber eben nicht durchgängig und nicht immer 100%ig reproduzierbar.
I2C: s.o.
Was lässt dich vermuten, dass die M128 auf das LCD der M32 schreiben kann? Das ist momentan nicht möglich. (Aber auf der ToDo-Liste)
Der Test ist übrigens ein I2CLED-Test kein LCD-Test.
Was lässt dich denn vermuten, dass Daten verloren gehen?
Das ist eigentlich nie der Fall. Ein Befehl kann schonmal verloren gehen, Daten aber eigentlich nicht. Der RP6, bzw die M128 sendet konstant mit einer Standardübertragungsrate von 5 Übertragungen die Sekunde alle neuen Daten zum PC.
Es scheint dabei evtl. Timingprobleme auf dem ic2 sowie auch Programmfehler bei unerwarteten Antworten des Bot auf Sensorabfragen zu geben. Bei der M128 jedoch mehr als mit der M32.
Timing-Probleme mit I2C? Da hast du glaube ich was falsch verstanden.
Der PC fragt keine Sensorwerte ab, daher kann er auch keine falschen Antworten bekommen.
Achso... und manchmal bekomme ich beim beenden des Programms auch eine Fehlermeldung das irgendwas abgeschmiert sei, das mir netterweise beim Neustart dann angezeigt wird...
Die Fehlermeldung sagt mir, dass dir eine Dateiendungsverknüpfung fehlt. Das ist interessant und sollte gefixt werden.
Meine Meinung: An dem Programm sowie an den Libs und "Firmware" muss noch viel gemacht werden bevor das eine sinnvolle nützliche Software ist, für einfache Tests ist das Ding jedoch brauchbar und für Entwickler ein schönes Beispiel was alles schief gehen kann.
Ich bin mir nicht ganz sicher, ob ich diesen Satz ernst nehmen soll.
Ich finde er klingt ein bisschen arrogant. Ich stecke viel Freizeit in dieses Projekt und stelle es hier zu Anschauungszwecken zur Verfügung.
Niemand muss etwas dafür zahlen oder so, es gibt daher keinen Grund die Software schlecht zu machen. Das Feedback oben drüber ist gut, der Satz hier macht es aber irgendwie wertlos.
Das ganze hat übrigens bei unzähligen Leuten vor dir schon gut funktioniert...
PS: Informier dich doch vor dem nächsten so ausfühlrichen Beitrag etwas mehr über die Funktionsweise von Remotrol, dann kannst du dir viel Getippe bezüglich deiner Fehlinformationen sparen, im Speziellen bezüglich des I2C-Bus.
Trotzdem danke für die nützlichen Hinweise, ich werde mir folgende Punkte mal näher ansehen und entsprechend ändern:
Pfeiltastensteuerung verdeutlichen (steht eh schon auf der ToDo-Liste)
Reihenfolge der M32 LEDs
Anzeige aller ADC/IO-Werte
Dateiverknüpfung vom Fehlerlog
Liebe Grüße,
Fabian
Hallo und danke erst mal für dein ausführliches Feedback.
Gern.
Ich habe dazu einige Dinge zu sagen und zu korrigieren:
Mir gefällt jedoch die Anzeige bzw. Steuerung der Motorfunktion nicht, der Motorbefehl wird erst abgesetzt wenn man den Regler loslässt
Das ist mit Absicht so. Der RP6 würde sonst tonnenweise Befehle bekommen.
Mir ist klar das die Verbindung zum Master über eine UART Verbindung läuft. Tonnenweise Befehle gäbe es nur wenn Du wirklich jede Bewegung am Regler 1:1 an den Bot durchgeben würdest - natürlich würde das nicht gehen da das Windows Messaging System geringfügig schneller als ein AVR32 und auch schneller als jede UART Verbindung ist :)
Ein Update 1-5 mal die Sec. wäre aber möglich und für alle Teile verkraftbar. Die Frage ist bestenfalls, lohnt sich der Aufwand dafür und das lasse ich mal offen.
Der Regler ganz rechts hat irgendwie keine Funktion?
Doch, dort stellt du die Geschwindigkeit für die Pfeiltasten-Steuerung ein.
Danach in die Textbox oben klicken und mit dem Pfeiltasten fahren.
Ah ok, danke.
Mir gefällt jedoch die Anzeige bzw. Steuerung der Motorfunktion nicht, der Motorbefehl wird erst abgesetzt wenn man den Regler loslässt. Man sieht auch die eigentlich interssanten Messwerte der Motordaten aus dem Überwachungsfenster nicht oder nur indem man zwischen den Reitern umschaltet. Das lässt sich besser lösen.
Dein Vorschlag?
Nun Dein Programmfenster (Überwachung) böte z.B. sicherlich auch Platz für die Motorregler und weitere Anzeigen wenn die Anzeigen etwas kleiner wären, insbesondere die Batterieanzeige muss nicht so groß sein. Dann sind analoge Anzeigen zwar stylisch aber digitale Messwerte oder Graphen / Balkenanzeigen sagen min. genau so viel aus. Ich bin mir sicher das man sogar alle Funktionen auf eine Seite unter bekommt und es nicht nötig ist, Reiter und Subwindows zu nutzen. Dann kannst Du sicherlich davon ausgehen das heute jeder über ein Display von min. 1024x768 verfügt, also kannst Du diese Größe abzüglich je ca. 20 Pixel für Schieber auch für dein Programm nutzen. Die Verbindungseinstellung kan man in ein Menu unterbringen... es gibt eine Menge Ideen wie man den Platz sinnvoll ausnutzt. Wenn du Zweifel hast, schau dir einfach mal Synthezizer wie den Thor als extremes Beispiel an...
http://www.kreativsounds.com/images/propellerheads/thor-modular-synthesizer-preview.jpg
Bedient man den Motorenmittelregler, werden zwar die Regler der Einzelmotoren mit bewegt, der Befehl an beide Motoren scheint aber manchmal verloren zu gehen bzw. nur manchmal an der Base anzukommen. Die Einzelregler funktionieren aber wohl - da hatte der Bot noch keine Aussetzer.
Entweder hast du eben den Regler nicht losgelassen, oder es war Zufall, dass nur die vom mittleren Regler nicht ankommen. Ein Zusammenhang mit dem Regler an sich ist ausgeschlossen.
Aha ok.
Dann ist mir aufgefallen, das die LEDs auf der M32 falsch angesteuert werden. Die Reihenfolge von LED 1-4 ist vertauscht, also wenn ich LED4 anschalte geht LED1 an, usw. Ich weis nicht ob das ein Bug in der Firmware oder im Programm ist, es ist jedenfalls sicher reproduzierbar.
Ich würde es nicht unbedingt Bug nennen. Habe mir da keine großen Gedanken drum gemacht welche LED nun LED1 ist. Ich kann aber gerne noch mal drüber gucken, welche wann angesteuert werden.
Da die LEDs an der Platine bezeichnet sind, macht es Sinn diese Bezeichnung im Programm zu übernehmen. Mag sein das es für Dich kein Bug ist aber wenn ich LED4 anschalte erwarte ich nun mal nicht das LED1 angeht... Als ernst zu nehmender "Funktionstest" ist das sogar ungeeignet.
Leider liest das Programm die Werte für die ADC0/1 auf dem Baseboard nicht aus, ich habe mir da ein Linesensormodul angeschlossen und würde natürlich gerne auch die Daten am ADC sehen.
Gleiches gilt für die ADC Werte des M32 Boards (die ich aktuell noch nicht nutze).
Das war auch ein Vorschlag einer meiner Beta-Tester und steht auf der ToDo-Liste. Hast du einen Vorschlag für die grafische Darstellung?
Zum Thema Grafik hab ich ja schon was gesagt, mir persönlich würde zunächst die Angabe als Zahl reichen ohne das ich sie mir aus dem Log fischen müsste... aber man kann durchaus Indikatoren wie für die Lichtsensoren nehmen... oder eine schöne kleine LED-bar ...
Dann hab ich versucht das Log im Programm zu stoppen um es mit c&p hier einzubauen.. zum meinem erstaunen stoppt das log aber nicht... auch läuft es nicht so das die jeweils aktuelle Zeile sichtbar ist.... sondern ab der ersten im log... das macht wenig Sinn.
Bin mir grade nicht ganz sicher was auf den Buttons drauf steht, die waren jedenfalls nie dazu gedacht, das Log zu "stoppen", sondern nur um das Autoscrolling zu deaktivieren. Leider ist das so wie ich mir das vorstelle nicht möglich. Daher wird lediglich der Fokus von der Textbox genommen und wenn man wieder reinklickt scrollt sie weiter.
->Autoscrolling zu deaktivieren ... genau sowas suchte ich auch, dadurch das der Focus jedoch ans Fenster zurück geht ist es kaum möglich einen Bereich mittels Copy&Paste auszuschneiden. Das muss eine andere Lösung her und da gibts sicherlich was. Jede einfache Textbox lässt sich zu einer Log-Box umprogrammieren, das ging schon vor 10 Jahren selbst mit Visualbasic. Natürlich muss man sich bissel mit Controls beschäftigen...
Was ich nämlich dokumentieren wollte ist, das der Bot verbunden ist, es auch Werte für die Batterie und die LDRs gibt (oder zumindest was angezeigt wird - ich bezweifele dass es sich um aktuelle Daten des Bot handelt), jedoch das auslesen weiterer Daten scheinbar fehlschlägt.
Inwiefern schlägt denn das Auslesen fehl? Du kannst im Terminal gucken, ob aktuelle Daten ankommen.
[INFO] 00:13:14: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:67*
[INFO] 00:13:15: 'RP6SensorReader.RefreshSensors': Heartbeat
[INFO] 00:08:10: 'RP6AsyncControler.EnqueueCommand': Trying to start command: #9:1:68*
Das hier deutet darauf hin, dass die Kommunikation zwischen Master-Modul und PC nicht perfekt klappt. In der nächsten Version habe ich die Befehlsverwaltung komplett neu geschrieben, sie ist jetzt wesentlich verlässlicher.
Also es stand im Log genau das was ich gepostet habe, offensichtlich sendet der PC aber der RP6 nicht - warum auch immer. Ich habe mich weiter unten dann wohl zu sehr auf i2c bezogen. Vielleicht ist es mit den neuen Befehlen fürs UART ja nun stabiler.
Im Programm ist wärend dessen auch das Selbsttestfenster eingegraut. Anscheinend funktioniert die i2c Bus Kommunikation nicht mehr richtig worauf hin auch das Programm durcheinander gerät. Trennt man im Programm die Verbindung, bleibt der Button trennen aktiv und eine Widerverbindung ist nicht möglich.
Woran willst du bitte erkennen das die I2C (!!!) Kommunikation nicht klappt?
Der Bot wird nicht über I2C angesprochen. Die Kommuniktion mit dem PC läuft über UART.
Nur die interne Kommunikation der Controler läuft über I2C.
Das ist mir wie gesagt klar, erklärt mir aber nicht warum das Programm offensichtlich falsch reagiert - was aber ggf. durch die neuen UART Befehle behoben sein kann.
Die I2C Kommunikation war nur nach mehrmaligem Booten mit Glück hinzubekommen, die M128 konnte das LCD welches auf der M32 aufgesteckt war z.b. nicht beschreiben (per i2clcdtest sollte das doch gehen), Messwerte wie für die LDR gingen verloren, die LEDs auf dem m32 Board waren ebenfalls verdreht usw usw... geschätzt sind ca. 40% aller Daten verloren gegangen, letztlich hatte ich massenweise Schwierigkeiten das Ganze ansatzweise zum Laufen (oder sagen wir besser zu einer Reaktion) zu bringen. Es war offensichtlich das beide kleinen CPUs im Slave Mode liefen und teilweise Daten ankamen... aber eben nicht durchgängig und nicht immer 100%ig reproduzierbar.
I2C: s.o.
Was lässt dich vermuten, dass die M128 auf das LCD der M32 schreiben kann? Das ist momentan nicht möglich. (Aber auf der ToDo-Liste)
Der Test ist übrigens ein I2CLED-Test kein LCD-Test.
Oh da hab ich mich echt verguckt :)
Trotzdem halte ich es für sinnvoll, das LCD bei vorhandener M32+M128 an die M32 anzuschließen und von der M128 aus mittels i2c beschreibbar zu machen denn nur dann können beide Prozessoren auf das Display schreiben wenn der M128 Master ist. Es liegt also nahe, so ein Test auch anzubieten. Hat die M32 keine Ausgaben, kann man es natürlich an die M128 klemmen.
Was lässt dich denn vermuten, dass Daten verloren gehen?
Das ist eigentlich nie der Fall. Ein Befehl kann schonmal verloren gehen, Daten aber eigentlich nicht. Der RP6, bzw die M128 sendet konstant mit einer Standardübertragungsrate von 5 Übertragungen die Sekunde alle neuen Daten zum PC.
Daten verloren gehen meint in dem Zusammenhang das ich Steuerbefehle an den RP6 gab und insbesondere von der M128 aus quasi nur die Hälfte der Sensoren/Aktoren funktionierten. Es kann aber gut sein, das es mit den UART Befehlen zu tun hat - wie schon geschrieben.
Achso... und manchmal bekomme ich beim beenden des Programms auch eine Fehlermeldung das irgendwas abgeschmiert sei, das mir netterweise beim Neustart dann angezeigt wird...
Die Fehlermeldung sagt mir, dass dir eine Dateiendungsverknüpfung fehlt. Das ist interessant und sollte gefixt werden.
Ja nur warum taucht das beim beenden eines Programms auf? .net 4 ist frisch installiert.
Meine Meinung: An dem Programm sowie an den Libs und "Firmware" muss noch viel gemacht werden bevor das eine sinnvolle nützliche Software ist, für einfache Tests ist das Ding jedoch brauchbar und für Entwickler ein schönes Beispiel was alles schief gehen kann.
Ich bin mir nicht ganz sicher, ob ich diesen Satz ernst nehmen soll.
Ich finde er klingt ein bisschen arrogant. Ich stecke viel Freizeit in dieses Projekt und stelle es hier zu Anschauungszwecken zur Verfügung.
Niemand muss etwas dafür zahlen oder so, es gibt daher keinen Grund die Software schlecht zu machen. Das Feedback oben drüber ist gut, der Satz hier macht es aber irgendwie wertlos.
Das ganze hat übrigens bei unzähligen Leuten vor dir schon gut funktioniert...
Nein Du brauchst es nicht ernst zu nehmen und ich will deine Leistung auch nicht anzweifeln - Fakt ist aber das es (wo auch immer da Fehler und Missverständnisse sitzen) derzeit nicht besonders stabil läuft und sicherlich einiges verbessert werden kann. Das ist weder arogant noch abwertend.
PS: Informier dich doch vor dem nächsten so ausfühlrichen Beitrag etwas mehr über die Funktionsweise von Remotrol, dann kannst du dir viel Getippe bezüglich deiner Fehlinformationen sparen, im Speziellen bezüglich des I2C-Bus.
Ich hatte schon geschrieben das ich warscheinlich mit dem I2C Bus flasch lag aber da es sich um ein komplexes System handelt, sucht man nun mal nach Fehlern da wo man die Effekte sieht. Und wenn ich sehe das Teile des RP6 zu steuern sind und manche Teile nicht, ist es naheliegend, an der Kommunikation von Komponenten zu zweifeln, da die Selbsttestprogramme der CD erfolgreich liefen. Ich konnte ja nicht wissen das du auch bei dem UART scheinbar Probleme siehst. Darüber hinaus halte ich nicht viel davon, ein Multimasterbus wie I2C im Single Mode zu betreiben wenn ich 3 CPUs und externe Devices zu steuern habe. Allerdings hat das nichts mit deiner Software zu tun. Vielleicht verstehst du aber das ich nicht grundlos "motze", sondern versuche zu helfen.
Trotzdem danke für die nützlichen Hinweise, ich werde mir folgende Punkte mal näher ansehen und entsprechend ändern:
Pfeiltastensteuerung verdeutlichen (steht eh schon auf der ToDo-Liste)
Reihenfolge der M32 LEDs
Anzeige aller ADC/IO-Werte
Dateiverknüpfung vom Fehlerlog
Liebe Grüße,
Fabian
Ja ich freue mich auf die nächste Version.
Lieben Gruß Rolf
Fabian E.
08.02.2011, 11:20
Okay, dann hatte ich deinen Post etwas zu "böse" verstanden.
Ich schreibe jetzt nicht überall was zu, das wäre zu viel ;)
Die I2C-Kommunikation sollte eigentlich keine Probleme machen, das ist hauptsächlich aufgebohrter Code aus den Beispielen. In der Tat dürften die meisten Verbindungsprobleme ganz einfach in der Übertragung über UART liegen.
Speziell im Handshake des RP6 mit dem meinem Programm.
Diese Fehler sind allerdings durch ein paar radikale Änderungen nun behoben (z.B. wird die Firmware komplett von Remotrol konfiguriert)
Wenn du möchtest kannst du dir auch gerne die neuste Beta-Version runterladen. Ist zwar nur eine kleine Vorschau der neuen Verbindungsverwaltung und ist auch keine Beta sondern mehr eine Pre-Alpha, aber da sieht man das schon ganz gut.
Mehr Informationen gibt es hier: www.support.diamondback-development.de
Du kannst dich auch gerne dort registrieren und Beta-Tester werden! =)
Kritische Meinungen besonders bezüglich der GUI und der Verbindung sind immer willkommen!
Ich muss auch zugeben, dass ich nicht wirklich gut im GUI-Design bin ;)
_|Alex|_
10.02.2011, 15:12
Hat jemand von euch schon Erfahrungen mit den Funkmodule von Pollin gemacht?
Hat sich mittlerweile schonmal jemmand damit auseinander gesetzt?
Oder hat schon jemmand andere Funkmodule?
/Edit
Die beiden Module von Robotik Hardware sind mir ein bischen zu teuer.
Ich weiß jetzt nicht ob das XBee Pro auch mit dem RN-Funk zusammen passt?
Oder ob es eventuell alternativen zum Rn-Funk gibt?
Fabian E.
11.02.2011, 15:30
So jetzt habe ich etwas mehr Zeit noch mal zu antworten.
Bezüglich der M32 LEDs hast du Recht, die sind komplett falsch herum. Wird natürlich gefixt, ist ja auch keine große Sache.
Zum Thema GUI... Ich bin ja fast tot umgefallen als das Programm da gesehen habe ;) Genau DAS wollte ich eigentlich vermeiden. In einer früheren Version hatte ich alles in einem Fenster untergebracht und mir hat es überhaupt gar nicht gefallen. Das die GUI nicht perfekt ist weiß ich, aber SO werde ich sie sicher nicht gestalten.
Ich denke, das ist einfach Geschmackssache und mir gefällt es überhaupt nicht ;)
Das mit der Logbox und auch dem Terminal muss ich mal überlegen... Sicherlich wäre es überhaupt kein Problem sich eine eigene Textbox mit den erforderlichen Eigenschaften zu bauen, ich weiß aber noch nicht, ob es mir den Aufwand wert ist.
Einfacher wäre es das Logging bzw. die Ausgabe einfach zu stoppen und wieder zu Starten.
Ein I2C-LCD-Test wird nicht kommen denke ich. Das Beschreiben über I2C aber sehr wohl. Ist noch nicht da, weil ich einfach kein zweites Display habe.
In der aktuellen Version habe ich einen Stresstest eingebaut, der sagt mir, dass nahezu 100% aller Befehle auch erfolgreich sind. (die,die nicht erfolgreich sind spielen in der Praxis keine Rolle, das sind nur Auswirkungen eben dieses Stresstestes)
Biohazardry
21.02.2011, 10:49
Sorry das ich diesen Thread nochmal ausgrabe, aber ist eine Servosteuerung nur mit der Base nicht möglich?? Ich hätte nämlich an ADC0/1 zwei Servos hängen??
Gruß Biohazard
Fabian E.
21.02.2011, 10:53
Nein, das ist zur Zeit leider nicht möglich.
Generell ist das Steuern von Servos mit einiger Eigen-Arbeit verbunden, da für die eigenen Servos immer noch die passenden Konstanten gefunden werden müssen.
Biohazardry
21.02.2011, 11:03
Ok thx
kann man eigentlich irgendwelche Ports mit der Fernsteuerung ansprechen??
(RP6 Base only)
Fabian E.
21.02.2011, 11:05
Nein noch nicht, das ist für eine der nächsten Versionen geplant. ;)
Dann kann man alle I/Os auslesen /setzen und alle ADCs lesen /als IO verwenden.
Hallo Leute.
ich bin RP6 Neuling.
Meine Frage ist, kann man den RP6 mittels Remotrol und einem Wlan Modul Steuern?
_|Alex|_
14.03.2011, 11:44
Zum test kannst ein kabel benutzen damit kannst du ihn auch Steuern :)
Zu den Wlan Modulen kann ich dir nichts sagen du könntest aber normale Funkmodule nutzen z.b. Rn-Funk und Xbee
Fabian E.
17.03.2011, 16:58
Hallo Leute.
ich bin RP6 Neuling.
Meine Frage ist, kann man den RP6 mittels Remotrol und einem Wlan Modul Steuern?
Prinzipiell ist das möglich.
Allerdings müsste dein Wlan-Modul dann als Kabelersatz für den UART/ die serielle Schnittstelle dienen. Mit vielen Modulen ist das möglich.
Wäre es billiger ein feriges Bluetooth modul (fertiges modul inkl. Spannungsregler) zum Steuern des RP6 zu nutzen?
Wenn ja, welches Bluetooth modul?
Das ist keine Frage von "billig" ...sondern von können!
WLAN ist Ethernet ... ein Netzwerkprotokoll... und Blauzahn üblicherweise UART.. also ein ganz anderes Protokoll... da der RP6 eine UART Schnittstelle hat, bietet sich Blauzahn an... Du kannst natürlich auch ein IP-Stack auf dein RP6 proggen um den mit WLAN zu steuern. Wie gesagt.. alles eine Frage von können... :)
Es gibt übrigends auch 6-10 m lange USB Kabel. Die sparen ne Menge Hirnschmalz sag ich Dir... :D
Hier geistern diverse Beiträge zum BTM222 rum. Das ist eins was Du verwenden kannst. Also "kannst" im Sinne von können... Ich würde es aber lassen denn die Dinger sind grottenlahm - gemessen an 500kbaud an USB. Da kann man auch gleich IRDA mit Softuart nehmen, das hat der RP6 quasi onboard...Dann lieber nen richtiges bidirektionales Funkmodul mit 200m Reichweite. Wirklich Sinn macht Blauzahn nur wenn man z.B. eine gute GPS-Maus mit Blauzahn hat oder ein PDA als "Brain" zum steuern bzw. als Interface verwendet. In Wohnungen ist GPS aber meist zu ungenau und der RP6 kaum geländegängig... bleibt also nur der PDA...
LG Rolf
Fabian E.
19.03.2011, 17:08
Das ist keine Frage von "billig" ...sondern von können!
WLAN ist Ethernet ... ein Netzwerkprotokoll... und Blauzahn üblicherweise UART.. also ein ganz anderes Protokoll... da der RP6 eine UART Schnittstelle hat, bietet sich Blauzahn an... Du kannst natürlich auch ein IP-Stack auf dein RP6 proggen um den mit WLAN zu steuern. Wie gesagt.. alles eine Frage von können... :)
Es gibt übrigends auch 6-10 m lange USB Kabel. Die sparen ne Menge Hirnschmalz sag ich Dir... :D
Hier geistern diverse Beiträge zum BTM222 rum. Das ist eins was Du verwenden kannst. Also "kannst" im Sinne von können... Ich würde es aber lassen denn die Dinger sind grottenlahm - gemessen an 500kbaud an USB. Da kann man auch gleich IRDA mit Softuart nehmen, das hat der RP6 quasi onboard...Dann lieber nen richtiges bidirektionales Funkmodul mit 200m Reichweite. Wirklich Sinn macht Blauzahn nur wenn man z.B. eine gute GPS-Maus mit Blauzahn hat oder ein PDA als "Brain" zum steuern bzw. als Interface verwendet. In Wohnungen ist GPS aber meist zu ungenau und der RP6 kaum geländegängig... bleibt also nur der PDA...
LG Rolf
Vollkommen richtig. Es gibt allerdings auch Wlan-Module, die UART direkt unterstützen. Kosten aber eine Menge Geld (~200-300€ je Modul).
Normaler Funkchip auf Basis von 434 bzw 868 Mhz klappt super. (-->RT868F5)
Fabian E.
03.04.2011, 23:07
Ich bin so gemein und gebe euch mal einen winzig kleinen Ausblick auf die Neuerungen der nächsten Version. (Das wird 2.0)
Ich werde hier jetzt regelmäßiger neue Infos zu RP6 Remotrol 2 bereitstellen.
Den Anfang macht ein sehr nützliches neues Feature: Der Einrichtungsassistent.
Der Einrichtungsassistent hilft euch beim Anpassen der Software an euren RP6 (und die Erweiterungen). Weiterhin kann er auch selbstständig die passende Firmware flashen. :)
Weitere Informationen gibt es für Beta-Tester in meinem Forum (--> 1. Post)
Achja, da Version 2.0 quasi komplett neu ist, werde ich vermutlich noch einige neue Beta-Tester brauchen.
Wer also Lust und Zeit hat, sich mit der unfertigen Software und ihren Fehlern zu beschäftigen und aktiv an der Entwicklung teilzunehmen, darf sich gerne bei mir melden.
Bis die neue Version als Beta verteilt wird, vergeht zwar noch einige Zeit, aber es gibt auch so viel zu diskutieren.
Liebe Grüße,
Fabian
Dann muss ich mich mit dem TWi ja doch mal beeilen. Es geht zwar schon aber Multimaster tut es noch nicht richtig.
Ich drück dir die Daumen. LG
Fabian E.
04.04.2011, 07:01
Kein Stress, da dürfte dir noch einiges an Zeit bleiben ;)
maxistoehr
06.04.2011, 17:47
Bin schon sehr gespannt auf die neue Version:-)
Ich würde mich gerne wieder als BETA Tester beteiligen.
Fabian E.
06.04.2011, 18:30
Na sicher, schau einfach regelmäßig in mein Forum, da findest du die neusten Entwicklungen. :)
Hallo.
Habe es hinbekommen meinen RP6 über Bluetooth mit meinem Notebook zu verbinden und über remotrol zu steuern.
Jetzt meine frage, kann man die verbindung überwachen?
Damit meine ich, wenn die bluetooth verbindung zum PC abbricht das der rp6 dann stehen bleibt?
Momentan ist es so, wenn ich über remotrol den rp6 fahren lasse und mitten im Fahrbetrieb die verbindung abbricht, dann fährt er trotzdem weiter.
Das will ich vermeiden.
Kann mir jemand helfen?
kann man das z.B. mit movementcommand = true abfragen ?
gruß
Fabian E.
18.05.2011, 19:00
Nein, das geht im Moment nicht einfach mal schnell so.
Ist aber für die nächste Version geplant. Problem dabei ist eben, dass der reine Verbindungsabbruch so nicht feststellbar ist.
Der RP6 muss quasi die ganze Zeit einen Ping vom PC und wenn der aufhört bleibt er stehen.
An sich nicht schwer, allerdings unpraktisch. Meine Funkmodule können z.B. nicht gleichzeitig senden und empfangen.
Das würde dann sämtliche Datenübertragung stark einschränken (je nach Intervall des Pings).
Werde ich aber dann wohl alles einstell- und abschaltbar machen.
PS: Schön, dass es auch mit Bluetooth geht! (Habe ich nie in Frage gestellt, aber du bist glaube ich der erste, der es wirklich gemacht hat ;) )
Hi, ich hab das selbe Problemm, bei mir bricht die Verbindung schon nach 3m ab. Ist aber ein anderes Thema, das Problem ist das der RP6 einfach weiterfährt, sehr schlecht.
Wann folgt denn die nächste Version?
Kann mir irgendjemand sagen, wie die Befehle sind, die der PC für die Servosteuerung an den RP6 schickt?
Ich finde sie nicht und in einer alten Version der Remotrol finde ich nur :
#2:0:0:3:1*
2 soll wohl "Servos" heißen, die zweite Null ist die Servonummer (0 bis 7), die 3 ist hier die Servoposition (0 bis 187) und 1 die Befehlsnummer (1 bis 99 ) .
Aber auf Befehle wie diese reagieren meine Servos überhaupt nicht...
Außerdem folgendes: Um den RP6 fern zu starten muss man \s senden.
Gibt es auch ein "RP6 Reset" Befehl? \e geht nicht.
Grüße
Hallo fabqu,
einen Reset Befehl gibt es nicht soweit ich weiß, aber du musst nur die RTS-Leitung der ser. Schnittstelle kurz auf High setzen, dann wird das Programm beendet.
Gruß Thomas
Ja, danke. Hat ich schon vermutet.
ich wollte es ferngesteuert abschalten, das könnte man ja mit nen transistor machen!
Danke dir.
Könnte jemand, der die remotrol benutzt, einem gefallen tun?
Einfach den rp6 mit remotrol verbinden und ein paar servos ansteuern. Auf dem lcd des rp6 sollten dann die servo-befehle auftauchen... Wär klasse.
Danke euch
Grüße
Fabian E.
14.10.2011, 17:30
Ja, danke. Hat ich schon vermutet.
ich wollte es ferngesteuert abschalten, das könnte man ja mit nen transistor machen!
Danke dir.
Könnte jemand, der die remotrol benutzt, einem gefallen tun?
Einfach den rp6 mit remotrol verbinden und ein paar servos ansteuern. Auf dem lcd des rp6 sollten dann die servo-befehle auftauchen... Wär klasse.
Danke euch
Grüße
Hey sorry, dass ich dir so lange nicht geantwortet habe, aber mein Studium hat gerade angefangen und daher habe ich nicht wirklich Zeit für was anderes ;)
Warum siehst du dir denn nicht einfach den Quellcode an, da stehen schließlich alle Befehle drin?
Habe mir übrigens was neues gegönnt, dass könnte sehr interessant werden, auch im Zusammenhang mit dem RP6:
20278
Das ganze findet ihr hier (http://www.ghielectronics.com/catalog/product/297) und hier (http://www.watterott.com/de/FEZ-Spider-Starter-Kit) in einem deutschen Shop.
Dort hab ich natürlich zuerst gesucht. Aber leider konnte ich nix finden, liegt aber sicher auch daran, dass ich es nicht ganz durchgestiegen habe.
Könntest du mir mal das c-File nennen, in dem die Befehle (1=Fahren, 2=Servos, ...) zugeordnet werden?
Das würde ordentlich weiterhelfen. Wobei ich glaube ich schon viele Befehle über die LCD-Ausgabe rausbekommen hab, danke dafür :D
Grüße
Fabian E.
15.10.2011, 22:04
Hier sind die entsprechenden defines:
#define CMD_SET_SPEED 1
#define CMD_SET_SERVO 2
#define CMD_SET_LEDS 3
#define CMD_SET_BEEP 4
#define CMD_SET_START_MELODY 5
#define CMD_SET_FEATURE 6
#define CMD_SET_STOP 7
#define CMD_SET_CONNECTION_SPEED 8
#define CMD_SET_MELODY 9
#define CMD_SET_ACSPOWER 10
#define CMD_SET_TEST 11
#define CMD_RESET_ID_COUNTER 99
#define SET_FEATURE_RP6 0
#define SET_FEATURE_M32 1
#define SET_FEATURE_M128 2
#define SET_FEATURE_SERVOM32 3
#define SET_FEATURE_SERVOM128 4
#define SET_FEATURE_LCDM32 5
#define SET_FEATURE_LCDM128 6
#define SET_FEATURE_SRF02 7
#define SET_FEATURE_SRF02_1 8
#define SET_FEATURE_SRF02_2 9
#define SET_FEATURE_SRF08 10
#define LEDS_RP6 0
#define LEDS_M32 1
#define TEST_LCD 0
#define TEST_BEEPER 1
#define TEST_LED 2
#define TEST_EXTERNAL_MEMORY 4
#define TEST_I2CLED 5
#define TEST_I2CMOTOR 6
#define TEST_MIC 7
#define TEST_MOTOR 8
#define TEST_BATTERY 9
#define TEST_ACS 10
#define TEST_BUMPER 11
#define TEST_LIGHTSENSOR 12
#define ACS_POWER_OFF 0
#define ACS_POWER_LOW 1
#define ACS_POWER_MED 2
#define ACS_POWER_HIGH 3
#define ANSWER_OK 1
#define ANSWER_WRONG_ID 2
#define ANSWER_GENERAL_ERROR 3
Inwieweit die jetzt mit deiner Version übereinstimmen weiß ich natürlich nicht.
Jeah! Klasse!
Danke dir!
Eins noch: Zu Beginn (oder eigentlich egal wann) erwartet ja dein Programm einen Feature-Update, oder? Also das Programm bekommt dann gesagt, dass M128 der Master ist, dass es ein LCD am M32 hat und Servos an allen Erweiterungen etc, etc.
Bei mir ist das so ne sache und funktioniert mal, mal nicht (man merkts an den Servos. Wenn ich ihm sage, dass die Servos der M128 aktiv sind, dann gehen sie mal und mal nicht).
Ist das ein allgemeines Problem, oder mache ich da was falch?
Hier der "Feature-Befehl" , den ich sende: #6:4:1:BEFEHLSNUMMER*
Fabian E.
15.10.2011, 22:12
Puh, ganz ehrlich, da kann ich dir so ganz spontan gar nichts zu sagen...Was für versionen benutzt du denn?
Normalerweise hat das Programm auf dem RP6 immer eine ganze Liste an Features erwartet. Eben für jedes Features was es gibt ein ja oder ein nein ;)
Hmm, das mit der Version ist so ne Sache, da kam ich irgendwann total durcheinander. Hab hier drei verschiedene (1.3 und zwei andere), hab aber dummerweise (ich Depp) die neueste, die ich von dir hatte, verändert - ohne Sicherungskopie!!!
Würdest du mir vielleicht nochmal die neue Version schicken?
Wobei das mit dem Fehler vmtl dann doch daran liegt, dass ich lieber gleich eine ganze Liste schicken sollte.
Hat nur in LabView nicht so ganz geklappt, weil man dafür solche "endlichen Automaten" benutzen muss... Bei drei endlichen Automaten ineinande wirds unübersichtlich und Fehleranfällig, daher hab ich den innersten wieder raus genommen.
Aber wann der RP6 diese Liste erhält, ist doch egal, oder?
Hallo!
Ich verwende ja auch die Remote auf dem RP6, allerdings programmiere ich auf dem PC was eigenes mit LabView...
Nun "verliere" ich irgendwie ständig bei dem Wert für den linken Lichtsensor die letzte Ziffer, der Wert springt also z.B. immer zwischen 908 und 90 hin und her (ca. im Sekundentakt) oder zwische 883 und 88 etc.
Woran kann den so was liegen?
Passiert sowohl bei BT-Verbindung wie auch bei USB-Verbindung.
Danke Euch!
Lg
Fabian E.
20.11.2011, 10:16
Wenns mit USB auch passiert wirds wohl an deinem eigenen Programm liegen ;)
Ich check das mal... ich kanns mir halt so wenig vorstellen, da ich den Stream, der vom RP6 kommt nehme, und ihn sofort Plotte.
Integrierst du in deinem Programm über mehrere Werte, ehe du plottest, um den Mittelwert der sagen wir letzten drei Werte zu erhalten, oder plottest du alles sofort?
Wenn sofort, dann würde das zumindest einen Fehler in der Übertragung und in deinen RP6-Programmen ausschließen...
Fabian E.
20.11.2011, 11:53
Nein, bei mir wird nichts kummuliert oder irgendwelche Schnitte gebildet.
Das, was ankommt, wird auch dargestellt.
Ja, das hab ich auch grad gemerkt: Der Stream ist fehlerfrei, aber wenn ich sage: plotte das, was hinter "Lightl:" kommt, dann geht irgendwie gern mal ne Ziffer verloren. Keine Ahnung, wie das von Statten geht :( wie gesagt, im Stream steht sie noch.
Kennt sich da vielleicht jemand mit LabView aus?
Lg
ElchiMtr
20.11.2011, 19:17
Hallo,
ich hab nich alles mit gelesen, bin also nicht auf dem neusten Stand, aber wenn du mit LabView hilfe brauchst, dann schreib mal ne PN bin eingeltich recht fit vlt kann ich dir ja helfen.
vg
Hier mal ein Foto, wie das so aussieht...
Ich habe gerade die M128 und die Base mit der Remotrol am laufen, aber die M128 bekommt nix von den Bumpern und dem ACS mit. Wenn ich das richtig sehe, dann weil es nicht im Register steht.
Register Base:
/************************************************** ***************************/
// I2C Registers that can be read by the Master. Their names should
// be self-explanatory and directly relate to the equivalent variables/functions
// in the RP6Library
#define I2C_REG_STATUS1 0
#define I2C_REG_STATUS2 1
#define I2C_REG_MOTION_STATUS 2
#define I2C_REG_POWER_LEFT 3
#define I2C_REG_POWER_RIGHT 4
#define I2C_REG_SPEED_LEFT 5
#define I2C_REG_SPEED_RIGHT 6
#define I2C_REG_DES_SPEED_LEFT 7
#define I2C_REG_DES_SPEED_RIGHT 8
#define I2C_REG_DIST_LEFT_L 9
#define I2C_REG_DIST_LEFT_H 10
#define I2C_REG_DIST_RIGHT_L 11
#define I2C_REG_DIST_RIGHT_H 12
#define I2C_REG_ADC_LSL_L 13
#define I2C_REG_ADC_LSL_H 14
#define I2C_REG_ADC_LSR_L 15
#define I2C_REG_ADC_LSR_H 16
#define I2C_REG_ADC_MOTOR_CURL_L 17
#define I2C_REG_ADC_MOTOR_CURL_H 18
#define I2C_REG_ADC_MOTOR_CURR_L 19
#define I2C_REG_ADC_MOTOR_CURR_H 20
#define I2C_REG_ADC_UBAT_L 21
#define I2C_REG_ADC_UBAT_H 22
#define I2C_REG_ADC_ADC0_L 23
#define I2C_REG_ADC_ADC0_H 24
#define I2C_REG_ADC_ADC1_L 25
#define I2C_REG_ADC_ADC1_H 26
#define I2C_REG_RC5_ADR 27
#define I2C_REG_RC5_DATA 28
#define I2C_REG_LEDS 29
/**
* This very important function updates ALL registers that the Master can read.
* It is called frequently out of the Main loop.
*/
void task_updateRegisters(void)
{
if(!I2CTWI_readBusy)
{
I2CTWI_readRegisters[I2C_REG_STATUS1] = (uint8_t)(interrupt_status.byte);
I2CTWI_readRegisters[I2C_REG_STATUS2] = (uint8_t)(status.byte);
I2CTWI_readRegisters[I2C_REG_MOTION_STATUS] = (uint8_t)(drive_status.byte);
I2CTWI_readRegisters[I2C_REG_POWER_LEFT] = (uint8_t)(mleft_power);
I2CTWI_readRegisters[I2C_REG_POWER_RIGHT] = (uint8_t)(mright_power);
I2CTWI_readRegisters[I2C_REG_SPEED_LEFT] = (uint8_t)(getLeftSpeed());
I2CTWI_readRegisters[I2C_REG_SPEED_RIGHT] = (uint8_t)(getRightSpeed());
I2CTWI_readRegisters[I2C_REG_DES_SPEED_LEFT] = (uint8_t)(getDesSpeedLeft());
I2CTWI_readRegisters[I2C_REG_DES_SPEED_RIGHT] = (uint8_t)(getDesSpeedRight());
I2CTWI_readRegisters[I2C_REG_DIST_LEFT_L] = (uint8_t)(getLeftDistance());
I2CTWI_readRegisters[I2C_REG_DIST_LEFT_H] = (uint8_t)(getLeftDistance()>>8);
I2CTWI_readRegisters[I2C_REG_DIST_RIGHT_L] = (uint8_t)(getRightDistance());
I2CTWI_readRegisters[I2C_REG_DIST_RIGHT_H] = (uint8_t)(getRightDistance()>>8);
I2CTWI_readRegisters[I2C_REG_ADC_LSL_L] = (uint8_t)(adcLSL);
I2CTWI_readRegisters[I2C_REG_ADC_LSL_H] = (uint8_t)(adcLSL>>8);
I2CTWI_readRegisters[I2C_REG_ADC_LSR_L] = (uint8_t)(adcLSR);
I2CTWI_readRegisters[I2C_REG_ADC_LSR_H] = (uint8_t)(adcLSR>>8);
I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURL_L] = (uint8_t)(adcMotorCurrentLeft);
I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURL_H] = (uint8_t)(adcMotorCurrentLeft>>8);
I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURR_L] = (uint8_t)(adcMotorCurrentRight);
I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURR_H] = (uint8_t)(adcMotorCurrentRight>>8);
I2CTWI_readRegisters[I2C_REG_ADC_UBAT_L] = (uint8_t)(adcBat);
I2CTWI_readRegisters[I2C_REG_ADC_UBAT_H] = (uint8_t)(adcBat>>8);
I2CTWI_readRegisters[I2C_REG_ADC_ADC0_L] = (uint8_t)(adc0);
I2CTWI_readRegisters[I2C_REG_ADC_ADC0_H] = (uint8_t)(adc0>>8);
I2CTWI_readRegisters[I2C_REG_ADC_ADC1_L] = (uint8_t)(adc1);
I2CTWI_readRegisters[I2C_REG_ADC_ADC1_H] = (uint8_t)(adc1>>8);
I2CTWI_readRegisters[I2C_REG_LEDS] = (uint8_t)(statusLEDs.byte);
I2CTWI_readRegisters[I2C_REG_RC5_ADR] = (uint8_t)((lastRC5Reception.device)|(lastRC5Recept ion.toggle_bit<<5));
I2CTWI_readRegisters[I2C_REG_RC5_DATA] = (uint8_t)(lastRC5Reception.key_code);
if(I2CTWI_dataWasRead && I2CTWI_dataReadFromReg == 0)
clearInterrupt();
}
}
Register M128:
// I2C Read Register des I2CSlave Programms:
#define I2C_REG_STATUS1 0
#define I2C_REG_STATUS2 1
#define I2C_REG_MOTION_STATUS 2
#define I2C_REG_POWER_LEFT 3
#define I2C_REG_POWER_RIGHT 4
#define I2C_REG_SPEED_LEFT 5
#define I2C_REG_SPEED_RIGHT 6
#define I2C_REG_DES_SPEED_LEFT 7
#define I2C_REG_DES_SPEED_RIGHT 8
#define I2C_REG_DIST_LEFT_L 9
#define I2C_REG_DIST_LEFT_H 10
#define I2C_REG_DIST_RIGHT_L 11
#define I2C_REG_DIST_RIGHT_H 12
#define I2C_REG_ADC_LSL_L 13
#define I2C_REG_ADC_LSL_H 14
#define I2C_REG_ADC_LSR_L 15
#define I2C_REG_ADC_LSR_H 16
#define I2C_REG_ADC_MOTOR_CURL_L 17
#define I2C_REG_ADC_MOTOR_CURL_H 18
#define I2C_REG_ADC_MOTOR_CURR_L 19
#define I2C_REG_ADC_MOTOR_CURR_H 20
#define I2C_REG_ADC_UBAT_L 21
#define I2C_REG_ADC_UBAT_H 22
#define I2C_REG_ADC_ADC0_L 23
#define I2C_REG_ADC_ADC0_H 24
#define I2C_REG_ADC_ADC1_L 25
#define I2C_REG_ADC_ADC1_H 26
#define I2C_REG_RC5_ADR 27
#define I2C_REG_RC5_DATA 28
#define I2C_REG_LEDS 29
Stimmt das? Was muss ich denn ändern, wenn ich sowohl die beiden ACS (left, right) haben will, als auch Bumper left, Bumper Right, Bumper back left und bimper back right?
Letztere werden in meiner Lib so eingeführt (wie vom nil.at) :
uint8_t getBackBumperLeft(void)
{
PORTC &= ~SL2;
DDRC &= ~SL2;
nop();
uint8_t tmp = PINC & SL2;
if(statusLEDs.LED2) {
DDRC |= SL2;
PORTC |= SL2;
}
return tmp;
}
uint8_t getBackBumperRight(void)
{
PORTB &= ~SL5;
DDRB &= ~SL5;
nop();
uint8_t tmp = PINB & SL5;
if(statusLEDs.LED5) {
DDRB |= SL5;
PORTB |= SL5;
}
return tmp;
}
Danke euch schon mal!
Hat jemand eine Ahnung, warum, wenn man die M128 benutzt, das Einstellen vom ACS nicht mehr funktioniert?
Es ist dauerhaft auf "Low" eingestellt;
Grüße
So, ACS (letzter Beitrag hier von mir) geht jetzt.
Aber ein neues Problem: Hat jemand schon mal die Remotrol mit SRF02 verwendet?
Ich erhalte dann nur Werte um -3500 herum.
"-" ist schon mal seltsam, aber eben auch, weil sich der Wert nie groß ändert, er geht von etwa -3200 bis -3800.
Gibts da Erfahrungen? Verbesserungen?
Grüße,
Fabian
Fabian E.
03.02.2012, 18:48
Meine beiden SRF02 klappen wunderbar, hast du es mit meiner Library versucht?
Ja, das einzige, was ich verändert habe war, in deiner features-lib “has_srf02“ auf 1 zu setzen. Die beiden änderten srf02-diner (...02_1 und ...02_2) hab ich mal auf eins, mal auf null gelegt, hat nix geändert.
Fabian E.
03.02.2012, 18:53
Hast du denn deine SRF02 auch auf die richtige I2C-Adresse gesetzt?
Ist doch die standard-adresse, oder?
Fabian E.
03.02.2012, 18:56
Vergleiche sie halt? Keine Ahnung was ich da damals gesetzt habe :D
Auf jeden Fall sind nicht beide standard.... ;)
#define I2C_SRF02_ADR_1 0xE0 //Standardadresse laut Datenblatt
#define I2C_SRF02_ADR_2 0xE2
und:
HasSRF02 = 1;
HasSRF02_1 = 0;
HasSRF02_2 = 0;
HasSRF08 = 0;
Ich habe eben nur ein SRF02, geht es dann überhaupt?
Fabian E.
03.02.2012, 19:01
schreibe den code halt so um, dass er nur einen benutzt. Im moment wird nur der mittelwert gebildet glaube ich :)
Funzt :D
Habs einfach so gemacht:
(bitte ned meckern, ich weiß, des is echt was für Dödels - Also für mich halt)
void calculateAverageDist(void)
{
SRF02_2_dist = SRF02_1_dist;
SRF02_Dist = (SRF02_1_dist+SRF02_2_dist) / 2;
}
Danke!
Fabian E.
03.02.2012, 19:24
Solange es klappt :D
RP6conrad
29.03.2012, 20:51
Ich habe das Remotrol project genutzt om meine Odometrie Werte zu visualisieren. Dazu habe ich einfach noch ein Form gemacht das jeden Aenderung von X und Y coordinat abbildet mit en Strich. Das klapt wunderbar, und ist nicht kompliziert. Diese Odometrie Messungen sind nicht von meine RP6, aber von meine Differential drive Robby.
Ich muss sagen, Klasse was du dar gemacht hat. Obwohle ich nie etwas in C# gemacht hatte, ist mir das jetzt doch gelungen um das nach meine Wunschen zu Aenderen. Die blaue Linie ist die abgelegte Strecke. Die Rote ist unsere "Arena"
2198521986
Hallo Fabian E! Erstmal danke für die Bereitstellung der RP6 Software! Ich habe mir Version 1.3 runtergeladen und habe deine Anleitung befolgt. 1. .NET-Framework 4 installiert, 2. RP6 mit PC über das RP6-USB-Interface verbunden, 3. Programm für RP6 über RP6 Loader eingespielt (lag im Ordner: Firmware -> RP6 Master -> RP6Remotrol_Base.hex), 4. RP6 Loader beendet, dass der Port frei ist, 5. RP6 Remotrol gestartet 6. Meine Porteinstellungen sind COM12 (stimmt mit dem Gerätemanager überein) und Baudrate 38400 7. Verbinden
Trotzdem steht in der Statusleiste Getrennt Kein RP6 verbunden..... Woran kann das liegen? Was mache ich falsch?
Habe auch schon den Sourcecode runtergeladen und es über Visual Studio 2010 debuggt und ausprobiert.... Selbiges Problem....
Brauche dringend Rat!
Danke im vorhinein, Cyber
Programm Im rp6 gestartet?? Ohne das gibts keine verbindung ;)
Vg
Danke, das war mein Problem ;-)
Ich hätte dazu eine Frage:
Zu den Kurvenbildern (Graphen) Batterie und Geschwindigkeit
Wie wird der auf der x-Achse (zeitlicher Verlauf) errechnet? Sind da immer nur die letzten paar Minuten zu sehen oder sieht man da auch den stündlichen Wert? Ich habe vor den RP6 solange vorwärts fahren zu lassen bis die Batteriekapazitität erschöpft ist. Um das auszuwerten wäre es super den Verlauf von Akkustand und Geschwindigkeit zu sehen.
Hallo! Ich bin es wieder. Ich hatte das Programm dauerhaft mit dem RP6 im Einsatz. Ich muss hiermit den Programmierer wirklich loben! Klasse Arbeit, die du hier geleistet hast. Nun habe ich mir eine M128 Erweiterung gekauft, da ich diverse Anschaltungen steuern möchte. Leider bekomme ich beim Kompilieren im C-Control Pro IDE Programm Version 1.72.0.0 immer einige Fehler. Bei der 1.3 Version bekomme ich 69 Fehler und bei der Open Source Variante (siehe Direktlink auf der ersten Seite) bekomme ich gar 110 Fehler......
Kann mir da jemand weiterhelfen?
Das Problem ist gelöst! Ich habe mir einfach die neuere Version von C-Control Pro runtergeladen und nun funkt alles!
Ich habe eine dringende Frage!
Ich möchte mit der M128 Erweiterung ein paar Ports ein/ausschalten und ein paar ADC Messungen, etc durchführen. Nun habe ich probiert einen Port einzuschalten - leider vergebens.... siehe Foto 23347
Jetzt zu meiner Frage: Woran kann es liegen? Ist das korrekt, dass in RP6 Remotrol.cc programmiert wird? Zumindest ist dort die Main....
Also zum Thema M128,
es ist richtig das dort cc (C-Compact) programmiert wird, dies ist ein c Dialekt welcher von der Firma mit dem großen C schon auf älteren Steuerungen Verwendung fand, denn das M128 Board ist tatsächlich "nur" ein Trägerboard mit etwas Peripherie für die C-Control-PRO 128 mit allen Vor- und Nachteilen. (Und quasi eine Reminiszenz an die RP5-Bastler mit der C-Pro und dem alten CC-Basic Gemauschel... also nix Halbes und nix Ganzes...) Im Prinzip läuft dort aber ein Token-Interpreter als Bootloader, welcher kein eigenen Maschinencode direkt ausführt. Es ist jedoch möglich, auch Assemblercode auszuführen (um sich spezielle Treiber wie I2C Slave selbst zu schreiben).
Fortgeschrittenen Usern ist es aber ggf. möglich, dem Prozessor dort mittels ISP oder HV-Programmer das "Betriebssystem" zu entfernen und einen normalen Bootloader zu installieren. Da kommt es wohl auf die mir unbekannten Fuse Bits der Module an. Ebenfalls möglich wäre wohl auch der Selbstbau eines "M128er" Moduls ohne den Interpreter, mit ähnlich passenden Platinen wie http://www.futurlec.com/Pictures/TQFP_64.jpg und etwas externer Beschaltung für den Takt. Auch andere Mega-Prozessoren (Atmega256,644,1284) und sogar andere Architekturen wie ARM7 wären denkbar so lange das Pinout des Moduls halbwechs stimmt. Leider ist dieses aber in RP6 Kreisen nie "erfunden" worden. So einen LPC2148 (http://www.keil.com/dd/chip/3880.htm) auf dem RP6-M128 Board hätte ich schon lustig gefunden... bei mir läuft er nu als I2C Device.
Allerdings muss man sich dann z.B. eine Speicherverwaltung für das externe RAM selbst schreiben. Jede Medalie hat eben 2 Seiten...
Ich glaube, auch auf diesem Terrain hat sich in Sachen M128 aber noch niemand hier im Forum bewegt - zumindest ist mir nichts dergleichen bekannt.
Für dein Problem mit den Messungen... halte dich einfach an die Docu bzw. an die Beispiele.
Weitere Infos findet man auch dort
http://www.c-control.de/c-control-pro/c-control-pro/startseite_c-control-pro.html
da
http://www.c-control.de/c-robotics/zubehor_ccrp5/zubehor_ccrp5.html
und vor allem da
http://ccpro.cc2net.de/
Das hier:
void main(void)
{
Port_DataDirBit (http://www.c-control-pro.de/documentation/port_datadirbit.htm)(PORT_LED1,PORT_OUT);
Port_DataDirBit(PORT_LED2,PORT_OUT);
while(true) // Endlosschleife
{
Port_WriteBit (http://www.c-control-pro.de/documentation/port_writebit.htm)(PORT_LED1,PORT_ON);
Port_WriteBit(PORT_LED2,PORT_OFF);
AbsDelay(1000);
Port_WriteBit(PORT_LED1,PORT_OFF);
Port_WriteBit(PORT_LED2,PORT_ON);
AbsDelay(1000);
}
}
habe ich z.B. dort unter Biliotheken/Port/Portbeispiel gefunden...
http://www.c-control-pro.de/documentation/index.html
Man müsste jetzt nur schauen ob in dem Beispiel auch Ports benutzt werden an denen bei der M128 Karte auch LEDs hängen... (da PORT_LED1,PORT_LED2 für das Experimentierboard der M128 und evtl. nicht für das RP6Board gelten) und dann ggf. entsprechend umschreiben.
Die M128 wäre ein klasse Board zum Ausbauen des RP6...wenn das Wörtlein "wenn" nicht wär... aber dafür gibts ja nu die M256 :)
LG Rolf
also ich kenne mich noch gar nicht aus, muss ich mir das wlan modul von konrad kaufen , damit ich eine kamera und den roboter über ein tablet(android) steuern kann? habe auch noch keine ahnung von programmen, wie ich einen app,etc erstell bitte um hilfe
@Loui
Ohne Dir zu nahe treten zu wollen aber wenn Du nicht programmieren kannst, setzt du dich am besten mal nur mit dem RP6 Base auseinander und lernst C.
Der RP6 ist kein Lego, was man nur zusammen steckt... für sowas gibts fertige Sachen wie z.B. die AR.Drone ... http://ardrone.parrot.com/parrot-ar-drone/select-site (zu entsprechenden Preisen)
Der RP6 ist eine Plattform um zu lernen wie man mit AVR Prozessoren umgeht und man kann ein wenig über Robotik, Antriebe, Elektronik usw. lernen. Nicht mehr und nicht weniger.
Allerdings sollte man entweder sehr technik begeistert und bereits mit Vorwissen ausgestattet und/oder sehr lernfähig/willig sein, der RP6 wird z.B. auch für Projekte im Umfeld des IT-Studiums genutzt. Die M256 mit Wlan ermöglicht dir zwar theoretisch die Steuerung mittels Tablet (wenn du in der lage bist dafür eine App zu schreiben) aber das mit der Cam sehe ich aber so noch nicht.
LG Rolf
Thorben W
02.02.2013, 16:09
@Farbian E
Hallo gibt es Remotrol auch bald (in diesem Jahr) für das WIFI Modul ?
Thorben W
Moin,
weiß wer, ob´s hier bzw. mit dem Projekt noch weitergeht?
Fabian war wohl zuletzt vor knapp 6 Monaten On... die 1.3 lief damals ja halbwegs gut bei mir.
Gruß Jürgen
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.