UWB? was hast du da genau? Ein pozyx kit?
edit: ah, sah gerade, DWM1000 Module... also wohl nicht...
Laufen die auch per Arduino IDE code oder nur per ROS ? (Mit pozyx habe ich auch schon geliebäugelt, nur sind die ja schw***teuer...)
UWB? was hast du da genau? Ein pozyx kit?
edit: ah, sah gerade, DWM1000 Module... also wohl nicht...
Laufen die auch per Arduino IDE code oder nur per ROS ? (Mit pozyx habe ich auch schon geliebäugelt, nur sind die ja schw***teuer...)
Für die DWM1000 habe ich diese Arduino-Bibliothek verwendet: https://github.com/thotro/arduino-dw1000
Update: Habe einen 4 DoF OpenManipulator mit RealSense D435 Tiefenkamera auf den Wild Thumper gesetzt. Als Software wird natürlich MoveIt eingesetzt, damit wird die inverse Kinematik und der Pfad automatisch berechnet. In der folgenden Animation ist das sichtbar:
1. Es wird der Zielpunkt durch Ziehen mit der Maus vorgegeben
2. Mit "Plan und Execute" wird die Bewegung zum Zielpunkt ausgeführt.
Bild hier
Die Objekterkennung per Tiefenkamera habe ich allerdings noch nicht gemacht.
Geändert von Defiant (27.08.2020 um 13:57 Uhr)
schon beeindruckend geschmeidig!
Nochmal zum Verständnis: das alles läuft nicht autonom auf dem Auto, oder etwa doch?
Ehrlich gesagt wirkt das nur in der Animation so geschmeidig, die Aktualisierungen erfolgen "nur" mit 10Hz, schneller bekommt der AVR, der die Befehle- und Statuswerte vom I2C zum Half Duplex UART übersetzt, das nicht hin.
In diesem Fall wird die Kinematik und der Pfad auf einem PC berechnet. Bei ROS ist das ja relativ egal auf welchem Rechner eine Node läuft. Ich hab die Berechnung auf dem Roboter noch nicht ausprobiert, dürfte aber einige Sekunden länger dauern.
Es gibt eine Basisstation über die der Roboter mit 12V versorgt wird (Dock.jpg) mit Gegenstück am Rover (wt_aft.jpg).
Die Umschaltung auf den Strom der Basisstation erfolgt über eine ORing-Schaltung. Das setzt voraus, dass die Basisstation eine höhere Spannung als die beiden Akkus liefert. Da die LSD-NiMH Batterie auf dem Roboter im angedockten Zustand abgekoppelt ist, wird sie geladen. Der Roboter stellt die aktuelle Systemspannung und den Strom über eine Message zur Verfügung.
Die Abfolge des andockens ist wie folgt:
1. Benutze die Standard Navigation um den Roboter in Richtung der Basisstation zu fahren, die Genauigkeit der Position liegt aber nur bei 15cm und 6°, die erlaubte Toleranz der Dock-Kontakte liegt aber bei 4cm. Auch könnte die Position der Basisstation geringfügig geändert worden sein.
2. Bewege die Kamera nach hinten (wt_dock_position.jpg).
3. Ermittle die Abweichung der Position des Roboters zu Basistation mittels aruco_detect, welches mir die 6-DOF Position des Fiducial-Markers (Quasi QR-Tag) liefert (wt_fiducial_dock.jpg).
4. Wenn die Y-Achse (Grüne Linie) des Fiducial eine Abweichung von der Mitte hat korrigiere die Translation durch schräges fahren
5. Wenn die Rotation um die Y-Achse nicht 0° beträgt korrigiere die Abweichung durch Drehen
6. Falls notwendig wiederhole ab Schritt 4.
7. Wenn Position des Roboters exakt vor der Basistation fahre Rückwärts bis Systemspannung über der maximalen Akkuspannung liegt.
8. Angedockt
Nachteile:
- Die Erkennung des Fiducial-Marker funktioniert nur bei Licht
- Der Widerstand der Dock-Kontakte ist sehr hoch, ich habe einen Spannungsabfall von bis zu 2V.
- Es wird derzeit nur der LSD-NiMH-Akku geladen, für den LiFePO4-Akku habe ich derzeit keine Ladeschaltung.
- Ich zähle nicht den Strom der in die Batterie fließt, sondern nur den Entladestrom. Beim Abdocken gehe ich davon aus, der Akku ist voll. Dies kann bei einem zu kurzem Dockvorgang dazu führen, dass der errechnete deutlich über dem tatsächlichem Ladeezustand liegt.
- Der Staubsaugerroboter kann die Fläche um/unter der Basisstation nicht putzen solange der Roboter angedockt ist
Lesezeichen