Jump to content

borg

Administrators
  • Gesamte Inhalte

    3.625
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    61

Alle erstellten Inhalte von borg

  1. You can't do any more than to use the provided calibration function. If the changes of the magnetic field are too big for the IMU to cope, you can try to used the sensor fusion mode with magnetometer (see set_sensor_fusion_mode in the API). In this mode the magnetometer is not used and thus can't contribute false readings. However, in this mode you can't of course use the IMU to calculate absolute heading (since the magnetometer is necessary for that)!
  2. If you purchased the 12mm mounting kit there are two kinds of spacers in there: One has one thread inside and one thread outside, the other has both threads inside. The 12mm mounting kit has 4 12mm inside/outside spacers and 4 10mm inside/inside spacers in it. You can put the 10mm spacer at the bottom and screw the 12mm spacer in the top. The small plastic washers can be used inbetween to fill the small gap. Like here: Or did you purchase the 9mm mounting kits? They can't be used for the Bricks!
  3. Mh, es scheint nicht ein Problem mit dem NMEA parsen zu sein wie ich erst gedacht hab. Dein Problem sieht so aus als würde das FireFly X1 (GPS Modul) keine Interrupts mehr senden. Dadurch lese ich nicht mehr und die Daten bleiben einfach auf einem alten Stand stehen. Hast du irgendeine Methode dieses Problem zuverlässig zu reproduzieren? Oder tritt es einfach irgendwann auf?
  4. borg

    IMU ROS node

    All of the examples that we have work over Ethernet, you just have to put in the correct IP (ip of the Ethernet Extension instead of "localhost")!
  5. borg

    IMU ROS node

    I have not done it, but you can use the Python Bindings and create a node yourself. There are Python node examples on the ROS wiki: http://wiki.ros.org/ROSNodeTutorialPython
  6. Mh, die API gibt exakt das zurück was wir per NMEA bekommen. Einfach alles mit 0 zu überschreiben wenn der Fix nicht mehr da ist, ist nicht richtig. Zum Beispiel die Uhrzeit und die Satellitenpositionen können auch noch korrekt sein wenn kein Fix vorhanden ist (dafür reicht ein Satellit). Die Latitude/Longitude können wir denke ich auf 0 setzen wenn kein Fix vorhanden ist, wie das mit Speed ist bin ich mir nicht sicher, da muss mal drüber nachlesen. Ich gucke mir das morgen genauer an .
  7. @ufechner: Ihr hattet die API leider nicht richtig verstanden. Der Index mit dem auf die Satellitennummer zugegriffen wird läuft immer von 1-32. Der Code müsste so aussehen: #include <stdio.h> #include <signal.h> #include <unistd.h> #include "ip_connection.h" #include "bricklet_gps_v2.h" //#define HOST "192.168.1.6" #define HOST "localhost" #define PORT 4223 #define UID "CHk" // Change XYZ to the UID of your GPS Bricklet 2.0 volatile sig_atomic_t terminate = 0; GPSV2 gps; void sig_handler(int signo) { if (signo == SIGINT) { printf("received SIGINT\n"); terminate = 1; } } void readSatelliteStatus() { uint8_t satellite_system; uint8_t ret_satellite_numbers_length; uint8_t ret_satellite_numbers_data[12]; int16_t ret_elevation; int16_t ret_azimuth; int16_t ret_snr; uint8_t ret_fix; uint16_t ret_pdop, ret_hdop, ret_vdop; uint8_t satellite_index; int sum_satellite = 0; for (satellite_system = 0; satellite_system < 2; satellite_system++) { if (gps_v2_get_satellite_system_status_low_level( &gps, satellite_system, &ret_satellite_numbers_length, ret_satellite_numbers_data, &ret_fix, &ret_pdop, &ret_hdop, &ret_vdop)< 0) { fprintf(stderr, "Could not get satellite status_low_level, probably timeout\n"); } if (satellite_system == 0){ printf("GPS satellite (Satellite system number = %d)\n", satellite_system); printf("Number of GPS satellite in use = %hu\n", ret_satellite_numbers_length); } else if (satellite_system == 1) { printf("Glonass satellite (Satellite system number = %d)\n", satellite_system); printf("Number of Glonass satellite in use = %hu\n", ret_satellite_numbers_length); } else { fprintf(stderr, "Not proper satellite system\n"); } for (int i=0; i<ret_satellite_numbers_length; i++) { switch (i) { case 0: printf("First "); break; case 1: printf("Second "); break; case 2: printf("Third "); break; default: printf("%dth", i); break; } printf("satellite number = %d\n", ret_satellite_numbers_data[i]); if (satellite_system == 0) { satellite_index = ret_satellite_numbers_data[i]; } else if (satellite_system == 1) { satellite_index = ret_satellite_numbers_data[i] - 64; } else { fprintf(stderr, "Not proper satellite system\n"); } if (gps_v2_get_satellite_status( &gps, satellite_system, satellite_index, &ret_elevation, &ret_azimuth, &ret_snr) < 0) { fprintf(stderr, "Could not get satellite status, probably timeout\n"); } printf("signal_noise = %d\n", ret_snr); } usleep(1e5); } } int main(void) { /* Register a signal handling function */ if (signal(SIGINT, sig_handler) == SIG_ERR) { fprintf(stderr, "Can't catch SIGINT\n"); abort(); } // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object gps_v2_create(&gps, UID, &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not connect\n"); return 1; } readSatelliteStatus(); printf("Press key to exit\n"); getchar(); gps_v2_destroy(&gps); ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally return 0; }
  8. Hast du folgendes gelesen: "Die Satellitennummer hat hier immer einen Bereich von 1 bis 32. Bei GLONASS entspricht dieser Bereich den Satelliten 65-96."?
  9. Firmwares: DC Brick 2.3.4, IMU Brick 2.3.4, IMU 2.0 Brick 2.0.9, Master Brick 2.4.5, Servo Brick 2.3.4, Silent Stepper Brick 2.0.3, Stepper Brick 2.3.5 Fix incompatibility between co-mcu support and LED Strip Bricklet [all] Add fix for W5500 (Ethernet Extension IC) ESD exposure problems [only Master Brick] Download: DC Brick, IMU Brick, IMU 2.0 Brick, Master Brick, Servo Brick, Silent Stepper Brick, Stepper Brick
  10. Firmwares: DC Brick 2.3.4, IMU Brick 2.3.4, IMU 2.0 Brick 2.0.9, Master Brick 2.4.5, Servo Brick 2.3.4, Silent Stepper Brick 2.0.3, Stepper Brick 2.3.5 Inkompatibilität zwischen co-mcu Unterstützung und LED Strip Bricklet gefixt [Alle] Fix für W5500 (Ethernet Extension IC) ESD Probleme hinzugefügt [nur Master Brick Download: DC Brick, IMU Brick, IMU 2.0 Brick, Master Brick, Servo Brick, Silent Stepper Brick, Stepper Brick
  11. So jetzt aber . master-brick-v2.4.5-beta3.bin
  12. Leider nicht, der Bootloader-Modus ist Teil des Microcontrollers (sam3s) und wird nicht von uns gesteuert.
  13. Oh man, ich befürchte das ich die falsche .bin hochgeladen hab. Ich bin mir sicher das ich es mit 240 LEDs getestet hab, allerdings hatte ich zwischendurch eine Version wo nur die ersten 80 funktioniert haben . Ich komm jetzt von hier gerade nicht an den Sourcecode, ich lade direkt morgen früh das korrekte .bin hoch.
  14. Is the IMU in bootloader mode? To bring it in bootloader mode: If it isn't in bootloader mode it won't show up as a serial device.
  15. Du musst anstatt "localhost" die IP angeben auf denen die Bricks/Bricklets angeschlossen sind. Zusätzlich muss der verwendete Port (Default = 4223) entsprechend von außen zugänglich sein. In einem normalen Heimnetz heißt das für gewöhnlich du musst in deinem Router (z.B. Fritz Box) eine Portfreigabe für Port 4223 für die passende IP einstellen.
  16. To flash the IMU Brick you have to connect it via USB directly! Did you bring it in bootloader mode? https://www.tinkerforge.com/en/doc/Software/Brickv.html#brick-firmware-flashing
  17. Die einzige Möglichkeit die ich sehe das zu fixen ist, die Erkennung wie viel RAM das LED Strip Bricklet verwenden kann auch dynamisch zu machen. Das Timeout an der Stelle ist 2 Sekunden, d.h. wenn mehr als 80 RGB LEDs angesteuert werden sollen, muss jetzt nach dem ersten Enumerate erst 2 Sekunden gewartet werden. Im Anhang ist eine Firmware die das implementiert, könnt ihr das einmal testen? master-brick-v2.4.5-beta2.bin
  18. Oh, in der Tat. Das Problem ist sogar recht offensichtlich, warum auch immer ich das vorher nicht gesehen hab. Das Problem ist, dass das LED Strip Bricklet den RAM von nicht-genutzten Bricklets mitnutzen kann. Mit den neuen Co-Prozessor Bricklets gibt es folgende Vorgehensweise: Wir gucken erst ob ein EEPROM angeschlossen ist und dieses eine UID/device identifier beinhaltet (d.h. es ist ein altes Bricklet). Falls das nicht der Fall ist gehen wir davon aus des es sich um ein Co-Prozessor Bricklet handelt. In diesem Fall wird das ganze dann dynamisch gemacht. Das LED Strip Bricklet guckt allerdings nur einmal ganz am Anfang welchen RAM es nutzen kann. Dadurch überschreibt der Code zum Handling der Co-Prozessor Bricklets dann die Daten des LED Strip Bricklets. Soweit zum Problem, eine Lösung muss ich mir jetzt noch einfallen lassen .
  19. Danke für die ausführlichen Tests! Ich werde morgen nochmal versuchen das nachzustellen, hoffentlich kann ich es reproduzieren .
  20. What version does the IMU firmware have? Sorry that all the updating is necessary, that is because the gps v2 is the first co-processor Bricklet. This will not be necessary with any of the next Bricklets .
  21. So, tinkerunity.org schickt jetzt mails als "tinkerunity@tinkerforge.com" über den tinkerforge.com mailserver. Dieser ist mit allem drum und dran inklusive Zertifikate usw eingerichtet und macht soweit wir wissen bei keinem Mail-Provider Schwierigkeiten .
  22. Hab es gerade ausprobiert, grundsätzlich funktioniert das Feature. Laut Log lehnt der Mailserver hinter "turboprinz.de" die Mails allerdings ab. Sieht so aus als wäre das GMX? Das scheint eine Fehlkonfiguration auf tinkerunity.org zu sein, ich hab es mir auf die TODO-Liste geschrieben mir das anzusehen.
  23. Yes, please do! Will be interesting to see if we can't flash it here either and why this happens.
  24. I doubt that the OSX version is relevant. The API that we use to flash the WIFI Extension 2.0 is a normal API that is available in the Bindings, so if you can use your Bricks/Bricklets you should always also be able to flash the WIFI Extension 2.0. With which Master did you try to flash the WIFI Extension? With the one where the Barometer Bricklet doesn't work? Have you tried the other one?
  25. Ich wüsste nicht warum das Probleme machen sollte, muss ich morgen ausprobieren. Edit: In der Tat! Ich kann das reproduzieren. Da bin ich ja mal gespannt welcher Bug dieses Problem erzeugen kann. Edit 2: Oh, das war sehr einfach. Der Brick Daemon auf dem RED Brick Image 1.8 ist nicht aktuell genug für die neuen Co-Prozessor Bricklets. Du müsstest also entweder das RED Brick Image auf 1.9 aktualisieren (veröffentlichen wir vermutlich morgen) oder den Brick Daemon auf dem RED Brick aktualisieren. Neueste Version gibt es hier: http://download.tinkerforge.com/tools/brickd/linux/brickd-2.3.0+redbrick_armhf.deb Wir wollten das 1.9 Release eigentlich zeitgleich mit der Veröffentlichung vom GPS 2.0 machen...
×
×
  • Neu erstellen...