Jump to content

FlyingDoc

Members
  • Gesamte Inhalte

    459
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von FlyingDoc

  1. So. Hab mir gestern mal nen einfachen Kompass für knapp 10 Euro geholt um zu vergleichen. Feststellung. USB Stecker liegt Richtung West.
  2. Für alle die einen "Raspberry Pi" benutzen wollen und noch keinen haben ist das hier vieleicht interesannt. Bin Heute bei Heise darüber gestolpert. Muss nicht installiert werden. EInfach herunterladen und entpacken. Dann mit der run.bat starten. Da ich auch noch keine habe, kann ich aber schon damit herumexperimentieren. Raspberry Pi Emulator für Windows
  3. Du brauchst eine Netzvorrangschaltung. Schau mal zum Beispiel das hier an. Netzumschaltung / Netzvorrangschaltung 12A 230V Oder das hier. Calira Umformer Propower II 30 Watt
  4. Aso. Ich benutze Visualstudio 2008 mit QT als PlugIn.
  5. Hab gerade die neuen Bindings herunter geladen. Beim Übersetzen wurde vom Compiler bemängelt das die Konstante INT32_MAX nicht definiert ist. Hab festgestellt das in der ipconnection.c die Zeile #define INT32_MAX _I32_MAX fehlt, Habe sie ergänzt und nun geht das Compilieren wieder. #ifndef _WIN32 #include <unistd.h> #include <sys/types.h> #include <sys/time.h> // gettimeofday #include <sys/socket.h> // connect #include <sys/select.h> #include <netdb.h> // gethostbyname #endif #define INT32_MAX _I32_MAX #define MAX_BASE58_STR_SIZE 13 const char BASE58_STR[] = \ "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"; #ifdef _WIN32
  6. THX. Hab das mal mit ins Wiki eingeplegt unter Tipps, Tricks und (Produkt)Empfehlungen zu den Brick(let)s
  7. Noch ne kurze Frage. Wie bekomme ich meine orginalen Kalibrierungsdaten wieder in meinen IMU? Die Datei davon hab ich schon herunter geladen.
  8. Mal ne einfache und kurze Frage zum IMU. Wo ist Norden also vorn und wo ist oben. Das solltet ihr vielleicht mit auf die Platine drucken.
  9. Das liegt daran dsa die Flugsimulatoren sich an der Realität orientieren. HUD kommen ja ursprünglich aus der Militärluftfahrt.
  10. To flash a servo brick look here.
  11. So. Mal ein kleiner Screenshot vom aktuellem Stand. Die 3 Zahlen links sind nur die Werte für mich im Moment um die Werte lesen zu können.
  12. THX. Danke jetzt gehts. Kannst du mir sagen wo das Problem lag? (So von Programmierer zu Programmierer ) Mein Programm macht auch Fortschritte. Arbeite mich dabei grad in QT ein.
  13. Hab den IMU wie in der Anleitung beschrieben in den Bootlader versetzt. Treiber ist unter Windows installiert und wird im Gerätemanager als AT91 USB to Serial Converter aufgeführt. Gehe im Brickviewer auf Flashing Wähle den AT91 Com Port aus. Wähle die aktuell heruntergeladene Firmware für den IMU aus (1.0. Wenn ich dann aber auf Save drücke passiert nix. Bekomme aber die Meldung "Could not connect tu Brick" Und im DropDownfeld für den Port wird wieder Com1 ausgewählt! Irgend eine Idee? Betriebssystem ist Windows XP Für mich sieht es aus als ob euer Programm den Selektierten Comport statt auszulessen wieder auf Position 0 zurücksetzt und dann versucht über Com1 den Brick zu erreichen.
  14. Für die Höhe will ich dann später einen Drucksensor nehmen. Vorerst nehme ich ein GPS Modul über USB.
  15. So. Hab mich mal mit QT beschäftigt. Gibts ja auch als MS Visualstudio AddOn. (Da ich beruflich damit arbeite) Hab jetzt die graphische Anzeige für die Horizontlage, also Rollen und Nick, implemetiert. Funktioniert schon. Noch unter Windows. Als nächstes der Kompass und die Höhe.
  16. Danke. Glatt übersehen. Hmmm. Aber diese Meldung kommt auch wenn die geforderte Datei + Verzeichnis im Projektordner ist. QT? Hmmm. Gleich mal beschnüffeln.
  17. Hatte ich auch schon probiert. Der selbe Effekt.
  18. So. Will mal den aktuellen Stand meines Projektes vorstellen. Hab inzwischen Verbindung zum IMU aufgenommen und bekomme meine gewünschten Daten. Hab das Beispiel etwas modifiziert. Beim Start verbindet sich das Programm zum Brick. Fragt die vorhandenen Brick's (in meinem Fall nur der IMU) ab und connectetd automatisch zum gefundenem IMU (falls vorhanden) Ausserdem kann man in der Kommandozeile verschiedene Argumente angeben. -Host Rechnername oder IP -Port XXX Port auf dem der Deamon hört (falls einanderer eingestellt) -Period XXX Peridode für die Callbackmethode ? Ausgabe einer Kurzen Hilfe Mann selber muss nicht mehr die UID eingeben. Diese erfragt das Programm selber. Jetzt versuche ich die grafische Ausgabe zu Erzeugen. Also das eigentliche HUD. Will dazu die Grafische Benutzerschnittstellen GTKmm benutzen. Bekomme aber diese Verf...... nicht eingebunden. Sagt mir schon beim Compilieren das die Datei gtkmm.h nicht gefunden wird. P.S. F-Secure identifiziert den Demon immer noch als Keylogger. #include <gtkmm.h> Obwohl schon im Projektverzeichnis enthalten. #include <stdio.h> #include <math.h> #include "ip_connection.h" #include "brick_imu.h" #include <string.h> #include <mbstring.h> #include <malloc.h> #define MAX_STRING 255 char* Programmpath= NULL; char* HOST = NULL; int PORT = 4223; // Demon Standardport int Periode = 100; int16_t pitch = 0; int16_t roll = 0; int16_t yaw = 0; int16_t heading = 0; IPConnection* ipcon = NULL; IMU* imu = NULL; char* UID = NULL; void cb_quaternion(float x, float y, float z, float w) { /****************************************************************************/ /* Antwort auf Quaternionabfrage */ /****************************************************************************/ float roll = atan2(2*y*w - 2*x*z, 1 - 2*y*y - 2*z*z); float pitch = atan2(2*x*w - 2*y*z, 1 - 2*x*x - 2*z*z); float yaw = asin(2*x*y + 2*z*w); printf("x: %f\ty: %f\tz: %f\tw: %f\t\n", x, y, z, w); printf("roll: %f\tpitch: %f\tyaw: %f\t\n\n", roll, pitch, yaw); /* pi = math.atan2(2.0*(y*z - w*x), 1.0 - 2.0*(x*x + y*y)); ro = math.atan2(2.0*(x*z + w*y), 1.0 - 2.0*(x*x + y*y)); ya = math.atan2(2.0*(x*y + w*z), 1.0 - 2.0*(x*x + z*z)); di = app.dir.get(); if (di == 0) { pi = -pi, } if(di == 1) { pi, ro = -ro, -pi; } if(di == 2) { ro = -ro; } if(di == 3) { pi, ro = ro, pi; } */ } void cb_alldata(int16_t acc_x, int16_t acc_y, int16_t acc_z, int16_t mag_x, int16_t mag_y, int16_t mag_z, int16_t ang_x, int16_t ang_y, int16_t ang_z, int16_t temperature) { /****************************************************************************/ /* Antwort auf Abfrage aller Daten */ /****************************************************************************/ float Temp = (float)temperature/100; printf("acc_x: %d\nacc_y: %d\nacc_z: %d\nmag_x: %d\nmag_x: %d\nmag_z: %d\nang_x: %d\nang_y: %d\nang_z: %d\ntemperature: %f\n\n", acc_x, acc_y, acc_z, mag_x, mag_y, mag_z, ang_x, ang_y, ang_z,Temp); } void cb_orientation(int16_t vroll, int16_t vpitch, int16_t vyaw) { printf("cb_orientation\n"); /****************************************************************************/ /* Antwort auf Orientationabfrage */ /****************************************************************************/ roll = vroll /100; pitch = vpitch/100; yaw = vyaw /100; printf("roll: %d\tpitch: %d\tyaw: %d\n\n", roll, pitch, yaw); } void cb_enumerate(char* device_uid, char* device_name, uint8_t device_stack_id, bool is_new) { /****************************************************************************/ /* Antwort auf Komponentenabfrage (Bricks,Bricklets) */ /****************************************************************************/ printf("device_uid: %s\tdevice_name: %s\tdevice_stack_id: %d\t is_new: %d\n\n", device_uid, device_name, device_stack_id,is_new); /****************************************************************************/ /* Testen ob IMU Brick gefunden */ /****************************************************************************/ unsigned char* Test1; unsigned char* Test2; Test2 = (unsigned char*)"IMU Brick"; Test1 = (unsigned char*)device_name; if(_mbsnbcmp(Test1,Test2,9)==0) { printf("IMU gefunden\n"); /****************************************************************************/ /* IMU Brick einbinden */ /****************************************************************************/ UID = (char *)malloc((strlen(device_uid)-1) * sizeof(char)); size_t n = (strlen(device_uid)-1) * sizeof(char); if(UID) { _strset( UID, 0 ); // strncpy(UID, device_uid, strlen(device_uid)-1); // _strset_s( UID,n, 0 ); strncpy_s(UID,strlen(device_uid), device_uid, strlen(device_uid)-1); /****************************************************************************/ /* IMU Brick erstellen */ /****************************************************************************/ if(!imu) { imu = new IMU(); } imu_create(imu, UID); /****************************************************************************/ /* IMU Brick zur IP Connection hinzufügen */ /****************************************************************************/ if(ipcon_add_device(ipcon, imu) < 0) { fprintf(stderr, "Could not connect to Brick\n"); exit(1); } /****************************************************************************/ /* Ausgabegeschwindigkeit einstellen in ms */ /****************************************************************************/ // printf("Periode %d\n",Periode); imu_set_quaternion_period( imu, Periode); imu_set_all_data_period( imu, Periode); imu_set_orientation_period( imu, Periode); /****************************************************************************/ /* IMU Brick Callback erstellen */ /****************************************************************************/ // imu_register_callback(imu,IMU_CALLBACK_ALL_DATA , cb_alldata); // imu_register_callback(imu,IMU_CALLBACK_QUATERNION , cb_quaternion); imu_register_callback(imu,IMU_CALLBACK_ORIENTATION , cb_orientation); } } } int main( int argc, char *argv[] ) { Programmpath = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(Programmpath, argv[0]); HOST = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(HOST, "localhost"); if( argc > 1 ) { for( int i = 1; i < argc; i++ ) { _strlwr( argv[i] ); unsigned char* Test1; Test1 = (unsigned char*)argv[i]; unsigned char* Test2 = (unsigned char*)"?"; if(_mbsnbcmp(Test1,Test2,1)==0) { fprintf(stderr, "\nTest.exe -Host Hostname -Port XXX -Periode XXX\"\n\n\t-Host Hostname\tIP or computername on that of the BRICK Demaon runs ( Default localhost )\n\t-Port XXX\tPort with that of the BRICK Demaon runs ( Default 4223 )\n\t-Periode XXX\tCycle period ( Default 100 )\n"); exit( 1 ); } Test2 = (unsigned char*)"-host"; if(_mbsnbcmp(Test1,Test2,5)==0) { strcpy(HOST, argv[i+1]); } Test2 = (unsigned char*)"-port"; if(_mbsnbcmp(Test1,Test2,5)==0) { PORT = atoi(argv[i+1]); } Test2 = (unsigned char*)"-period"; if(_mbsnbcmp(Test1,Test2,5)==0) { Periode = atoi(argv[i+1]); } } } /****************************************************************************/ /* IPConnection erstellen */ /****************************************************************************/ if(!ipcon) { ipcon = new IPConnection(); } if(ipcon_create(ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not create connection\n"); exit(1); } // printf("Test %s\t %d\n",HOST, PORT); /****************************************************************************/ /* Komponenten (Bricks,Bricklets) abfragen */ /****************************************************************************/ ipcon_enumerate(ipcon,cb_enumerate); printf("Press ctrl+c to close\n"); ipcon_join_thread(ipcon); // Join mainloop of ip connection }
  19. So. Geänderte gezogen und benutzt. Nu kannsch e bissl Programm basteln. Danke für die schnelle Hilfe. Nur das Callback futzt noch nicht. Aber das finde ich schon noch.
  20. UID im Programm auf die UID des Brick geändert. Bekomme jetzut ne Verbindung. Ansonsten noch keine weitere Ausgabe.Müsste ja eigentlich über Callback die Funktion cb_quaternion(float x, float y, float z, float w) aufrufen. LED ausschalten funktioniert. Gerade getestet.
  21. Eigentlich nicht. Wie gesagt. Bis auf letztere Fehlermeldungen kann ich jetzt compilieren. Die habe ich aber mal provilaktisch wegbekommen. Folgendes gemacht. In der "ip_connection.h" folgendes geändert. typedef struct { unsigned char type; int length; int function_id; char buffer[MAX_PACKET_SIZE]; } DeviceAnswer; und in der "brick_imu.c" void imu_create(IMU *imu, const char *uid) { ipcon_device_create(imu, uid); // imu->expected_name = "IMU Brick"; imu->binding_version[0] = 1; imu->binding_version[1] = 0; imu->binding_version[2] = 0; imu->device_callbacks[iMU_CALLBACK_ACCELERATION] = imu_callback_acceleration; imu->device_callbacks[iMU_CALLBACK_MAGNETIC_FIELD] = imu_callback_magnetic_field; imu->device_callbacks[iMU_CALLBACK_ANGULAR_VELOCITY] = imu_callback_angular_velocity; imu->device_callbacks[iMU_CALLBACK_ALL_DATA] = imu_callback_all_data; imu->device_callbacks[iMU_CALLBACK_ORIENTATION] = imu_callback_orientation; imu->device_callbacks[iMU_CALLBACK_QUATERNION] = imu_callback_quaternion; } int function_id war nicht definiert. expected_name ist nicht definiert. Komme jetzt bis zur Fehlermeldung "Could not connect to Brick"!
  22. So. Eins Stück weiter. Musste bei brick_imu.c unter Eigenschaften->Erweitert->Kompilierungsart noch auf "Als C++-Code kompilieren (/TP)) umstellen. Hatte das zwar in den Projekteigenschaften global schon gemacht, aber das muss man dann noch bei der einzelnen .c Datei extra machen. "grummel" Bekomme jetzt aber noch ne andere Fehlermeldung. 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(479) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(510) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(541) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(572) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(610) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(641) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(673) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(740) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(789) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(838) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(887) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(937) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(987) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1036) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1085) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1134) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1183) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1232) : error C2039: 'function_id': Ist kein Element von 'DeviceAnswer' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(68): Siehe Deklaration von 'DeviceAnswer' 1>z:\software\visual studio 2008\projects\imutest\brick_imu.c(1311) : error C2039: 'expected_name': Ist kein Element von 'Device_' 1> z:\software\visual studio 2008\projects\imutest\ip_connection.h(74): Siehe Deklaration von 'Device_' 1>Code wird generiert... 1>Das Buildprotokoll wurde unter "file://\\programmvs\c$\Software\Visual Studio 2008\Projects\IMUTest\Debug\BuildLog.htm" gespeichert. 1>test - 19 Fehler, 1 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
×
×
  • Neu erstellen...