Entwerfen eines Serviceroboters. Problemstellung, Lösungsarchitektur

Wir mit einem Team ( dem Sie beitreten können ) von Gleichgesinnten aus Habr entwickeln einen Roboter zum Sammeln von Golfbällen auf der Driving Range .



Vladimir Goncharov Shadow_ru spricht über das Sammeln von Anforderungen, das Formulieren von Aufgaben für die Arbeit, das Entwickeln einer Architektur und das Erstellen eines Prototyps zum Ausführen von Software.



Das Projekt begann für mich mit der Sammlung von Anforderungen, der Verallgemeinerung und der anschließenden Zerlegung der Teilaufgaben. Die Aufgabe für den Roboter ist auf den ersten Blick einfach, aber Fehler in der Planungsphase beeinträchtigen das Ergebnis der Arbeit erheblich und sind nicht immer sofort sichtbar. Das Überspringen dieser Phase ist also der Weg ins Nirgendwo.

Das Zusammenfassen der Anforderungen vereinfacht die Kommunikation mit anderen Teammitgliedern - es wird ein gemeinsames Verständnis des Problems entwickelt, die Situation, in der nicht mehr jeder Roboter in seinem Kopf auftritt. Wenn ein neues Mitglied in das Team eintritt, reicht es aus, ein ähnliches Dokument zu lesen, wodurch sich die Zeit für die Einstiegsphase verkürzt.

Es besteht immer ein Gleichgewicht zwischen Erfassungsanforderungen und Verallgemeinerungen - ich möchte dies genauer beschreiben, aber wenn Sie kein Anwalt sind, der es gewohnt ist, mit Hunderten verwandter Absätze zu arbeiten, wird dies das allgemeine Sehproblem nicht lösen. Es gibt natürlich den richtigen Ansatz, wenn mehrere Anforderungen für verschiedene Teammitglieder sowie externe Kunden und Auftragnehmer gestellt werden. Dies ist aber vorerst eindeutig unnötig, weil Jede Änderung der Anforderungen führt zu einem erheblichen Zeitaufwand für die Aktualisierung solcher Slices, was die Startproduktivität nicht allzu stark beeinträchtigt.

Für mich selbst habe ich mich entschlossen, in funktionale und nicht funktionale Anforderungen zu unterteilen und alles auf einer A4-Seite zusammenzufassen. Die erste Version kam so heraus:

Phase 1. Erklärung des Problems


Herausforderung: Unter schwierigen klimatischen Bedingungen ist ein maximal kontinuierlicher Umweg über einen Trainingsgolfplatz zum Sammeln von Bällen erforderlich.

Problem: Ein unbemanntes Bodenfahrzeug ( UGV ) muss zyklische Missionen durchführen, um den durch den Umfang definierten Raum mit den Koordinaten der Punkte in der WGS-84-Notation zu umgehen.

Die Missionen sollten folgende Operationen umfassen:

  1. Normaler Start von einer bekannten Ausgangsposition
  2. Notstart von einer unbekannten Position im Voraus (Start nach WD-Betrieb, Stromschutz usw.)
  3. Vermeiden Sie einen Bereich mit einer Abdeckung von mindestens 98% des Platzes für 1 oder mehr Rennen (es ist nicht erforderlich, das Feld nach dem Befüllen des Trichters nach 15 Minuten erneut zu umgehen).
  4. Kehren Sie in die Ausgangsposition zurück, um den Trichter zu füllen, die Batterie zu entladen und den Umweg zu beenden
  5. Rennen auf der Startplattform, um die Bälle zurückzusetzen und die Batterien aufzuladen

Vereinfachte Version des Algorithmus



Darüber hinaus muss UGV folgende Anforderungen erfüllen:

  1. Verlassen Sie den angegebenen Umfang nicht, wenn Sie um den angegebenen Umfang fahren
  2. Die Ausgangsposition kann außerhalb des angegebenen Umfangs liegen.
  3. Überwachen Sie den Batterieverbrauch und planen Sie eine Rückgabe basierend auf dem verbrauchten Strom. Das Bewegen eines gefüllten Trichters erfordert mehr Batteriestrom als ein leerer.
  4. Führen Sie Telemetrieprotokolle, einschließlich, aber nicht beschränkt auf Koordinaten in der Ebene, Werte von 6 Rotationsachsen, Signalpegel der Telemetrie und externe Sensoren.
  5. Drei Positionierungssysteme - GPS zum Erhalten von Grobkoordinaten, IMU zur Überprüfung und Korrektur von Koordinaten in der Ebene, optisch zum genauen Positionieren durch Markierungen.
  6. Haben Sie zwei Watch Dog-Systeme - Software und Hardware. Software überprüft den Status
  7. Verfügen Sie über einen Notfallkommunikationskanal mit großer Reichweite und separater Stromversorgung, der verwendet wird, wenn die Missionsparameter die angegebenen Parameter überschreiten (Koordinaten, Unfall, Stromausfall, Geräteausfall).
  8. Sie können die Missionsparameter zu Hause ändern
  9. Zwei Kommunikationskanäle haben - langsame Telemetrie und hohe Geschwindigkeit für die Übertragung von audiovisuellen Informationen. High-Speed ​​sollte per Telemetriebefehl aktiviert / deaktiviert werden können.


Basierend auf diesen Anforderungen wurde die folgende Lösungsarchitektur ausgewählt:

Die Struktur des Roboterkomplexes umfasst: ein Kontrollzentrum (Ground Station Control) - im Folgenden GSC .

Ermöglicht dem Benutzer Folgendes:

  • Umfang einstellen
  • Planen Sie Missionen basierend auf Tageszeit und Gerichtsbelastung
  • Sie können Golfroboter mit diskreten Messwerten von mindestens 1 Minute überwachen
  • Haben Sie die Fähigkeit, eine Mission abzubrechen

Die GSC-Software sollte die Aktionen von Golfrobotern planen, während die Roboter selbst recht einfach sein sollten. Die Lösung ist natürlich nicht sehr flexibel, aber selbstkonsistente Lösungen und Mesh-Netzwerke können nicht in kurzer Zeit und sogar billig gelöst werden. Plus - dies ist ein typischer Ansatz und daher bekannte Probleme. Ein oder mehrere Golfroboter (Golfrover) - im Folgenden als GR bezeichnet .

Führt die folgenden typischen Aktionen aus:

  • Erhält eine Mission innerhalb von 10 Metern Entfernung von einer Bodenstation
  • Erfüllt eine Mission
  • Bei einer typischen Mission wird über einen Telemetriekanal mit einer Frequenz von mindestens 1 Mal pro Minute berichtet
  • Kehrt zur Bodenstation zurück
  • Warten auf neue Mission
  • Jede Mission sollte durch folgende Ereignisse unterbrochen werden:

    • Kugeltrichterfüllung
    • Ernährungsunfall
    • Unmöglichkeit der Bewegung (Putsch, plötzliches Hindernis)
    • Notstart
    • Manuelle Missionsunterbrechung
  • Jede Missionsunterbrechung muss über einen herkömmlichen Telemetrie- und Sicherungskanal übertragen werden
  • Nach einer Unterbrechung kehrt GR zur Bodenstation zurück, sofern der Zustand dies zulässt

Weil Es kann 1 Bodenstationen geben, aber es gibt viele GRs - das Befüllen des Ballbehälters ist ein Notfall. Dies löst zwei Probleme gleichzeitig - das GSC weiß mit hoher Sicherheit, dass der Roboter zur Station gegangen ist und häufig den Sicherungskanal getestet hat. Es wird auch angenommen, dass das Füllen der Bälle während der Mission erfolgen sollte, und wenn dies nicht der Fall ist, hat das GSC irgendwo einen Fehler in der Planung gemacht und dies sollte behoben werden. Intuitiv möchte ich den Roboter auf einem sauberen Feld loslassen, und wenn er die Kugeln sammelt, kehrt er zurück. Aber hier kommt die Wirtschaft ins Spiel. Wenn 1-2 Personen beschäftigt sind, ist es besser, wenn der Roboter an der Station steht und sich in Bewegung setzt, wenn sich die Bälle bereits angesammelt haben. Weniger Ressourcen- und Energieverbrauch.

Eine oder mehrere Bodenstationen (Bodenstation) - im Folgenden GS.

  • Aufladen
  • Ballbehälter
  • Kommunikation mit GR

Das Schema des gesamten Komplexes ist wie folgt:


Die zweite Phase ist eine Bewertung der Risiken und möglichen Probleme dieses gesamten Komplexes


Für immer müssen Sie eine Tabelle mit Risiken und deren Einschätzungen erstellen, aber ich befürchte, dass drei A4-Blätter nur Gähnen verursachen. Ich werde nur einen interessanten Druck geben:

Das Hauptproblem aller autonomen kriechenden Rover ist die Aufgabe, ihre genaue Position zu ermitteln. Darüber hinaus sollte die Position wirklich genau sein - vorzugsweise innerhalb von 10-15 cm. Gerade weil dieses Problem auf einer kleinen mobilen Plattform nicht wirklich gelöst werden kann, gibt es keine billigen und massiven Drohnen für Landwirtschaft, Transport und Militär.

Obwohl es anscheinend Lösungen für fliegende Drohnen gibt, sollten Sie alles am Boden wiederverwenden. Aber dies in der Luft 10-15 Meter nach links oder rechts bei einer Kehrtwende löst fast nichts, aber am Boden führt es zu Unfällen und Katastrophen. Außerdem ändern die Steine ​​ihren Platz in der Luft nicht, Tiere überqueren die Straße nicht. Vögel, ja, aber es gibt viel mehr Platz in der Luft.

Die Positionierung erfolgt durch das GPS / GLONASS-Modul, was sofort zu zwei Konsequenzen führt: Die Positionierungsgenauigkeit ist nicht zu groß und die Geschwindigkeit beim Erhalten von Koordinaten. Koordinaten für das uBlox M8N-Modul für stationäre Tests: 2-3 Meter bei guten Empfangsbedingungen, 7-10 bei schlechten Wetterbedingungen und Sicht. Im Allgemeinen sind solche Fehler beim Sammeln von Bällen sogar gut - ein Rover für mehrere Missionen erfasst die Bälle mehr als das Fahren auf Schienen. In diesem Fall stellt sich jedoch heraus, dass es unmöglich ist, es in der Nähe von Hindernissen wie Wänden oder großen Steinen zu leiten, und in diesen Bereichen sammeln sich die Kugeln an. Optische und Ultraschall-Navigationssysteme wurden analysiert, es stellte sich jedoch heraus, dass eine große Anzahl von Leuchtfeuern / Kameras mit komplexer Feldgeometrie benötigt wurde, es gab Probleme mit Sichtbarkeitszonen (das Feld ist nicht immer so flach wie der Boden im Hangar) und der Stabilität solcher Systeme bei schwierigen Wetterbedingungen ( Regen, Nebel). Unser GPS ist also vorerst alles, aber mit Vorbehalt. Darüber hinaus können Sie die Genauigkeit von GPS relativ billig erhöhen - RTK, aber es wird das Wandproblem nicht lösen.

Es wurde deutlich, dass der gewählte Ansatz, wenn der Rover mit einer Genauigkeit von 5 bis 10 Metern von links nach rechts an belasteten Punkten entlang kriecht, überprüft werden muss. Das Einsteigen in einen Zug namens SLAM mit Beinen für eine einfache Aufgabe scheint unnötig. Wenn das Betreten der Station durch optisch helle Objekte (Aruco-Code) klar ist und auch, wie viel Ressourcen dafür benötigt werden, ist die Lösung des Problems, alle möglichen Objekte auf dem Feld zu klassifizieren oder die Grenzen zu finden, eine völlig andere Aufgabe.

Es ist Zeit für Phase 3 - Proof of Concept


Es ist notwendig, ein Modell des Systems zu erstellen, es vor Ort in Aktion zu testen und seine Anwendbarkeit zu bewerten. Entsprechend den entwickelten Anforderungen lief es viel lustiger:

Als Software-Rover wurde Ardurover ausgewählt - eine aktiv entwickelte Software, die als Firmware für Quadcopter auf Arduino startet. Bisher unterstützt es jedoch Linux-Boards mit einem RTL-Kern und ist offen für Verbesserungen. In Zukunft musste ich es übrigens beenden, aber die Arbeit beschleunigen, als wenn nötig.

Als Gehirn des Rovers wurde BeagleBone Blue ausgewählt - ein hochintegriertes System für die Robotik.


Eine Besonderheit ist die Verwendung von TI Sitara / Octavo-Chips, im Vergleich zu der gleichen Himbeere gibt es programmierbare Echtzeiteinheiten - PRU. Dies sind zwei separate 200-MHz-Kerne, die das Eisen in Echtzeit steuern können, ohne den Hauptkern durch Interrupts, Threads und andere Technomagie abzulenken.

Darüber hinaus verfügt die Plattform sofort über WLAN, Bluetooth, einen Lötanschluss für ein Ausgleichskabel, einen Controller zum Laden von Li-Po-Batterien, USB-Anschlüsse zum Anschließen von Telemetrie und Computer, Anschlüsse für Servomotoren, Leistungsstabilisatoren von 5 und 3,3 Volt, der ADC wird sofort mit einem Kanal pro Batterie aufgewickelt. mehrere UART. Im Allgemeinen nehmen und machen Sie einen Roboter.

Ardurover ist nicht ohne Probleme dort hochgekommen - die Verwendung von PRU aus der Software ist derzeit nur mit dem 4.4 LTS-Kernel möglich. In neueren Kerneln führt das Programmieren von PRUs aus Anwendersoftware zu einem SIGBUS-Fehler. Nachdem ich mit den Entwicklern des ardublue-Zweigs gesprochen habe, für den ich einen JTAG-Adapter bestellt habe, werde ich sehen, was der Grund ist. Dieser Rover stört das Leben überhaupt nicht, aber ich möchte ein klares Verständnis für das Problem haben.

Mit der Software können Sie fast alle Anforderungen erfüllen, mit Ausnahme der Positionierung bei der Ankunft an der Basis. Hier verwende ich die JeVois-A33-Kamera. Er sendet kein Alarmsignal bezüglich Ereignissen, dies ist jedoch eine Aufgabe für ein separates Modul mit separater Stromversorgung, z Das Leistungsmodul überlebt möglicherweise einen Stromausfall oder einen guten Coup nicht.

Es bleibt ein GPS-Empfänger, ein telemetrischer Funksender, ein Ultraschall-Abstandssensor zu kaufen und eine Bildverarbeitungskamera anzuschließen. Nach dem Löten, Anschließen der Steckverbinder und einem Testlauf stellte sich Folgendes heraus:


Als Kontrollzentrum wird Mission Planner verwendet .


Die Software ist nicht unbestreitbar, ein anständiges Webinterface anstelle eines Schweizer Messers mit über 100500 Tasten für Fans von Coptern sollte gemacht werden, aber für Debugging-Zwecke ist es mehr als geeignet. Für die Kommunikation mit dem Rover wird das MAVLINK- Protokoll von Adaptern und Anwendungssoftware für Java / JS verwendet, es wurde viel geschrieben. Natürlich möchte ich kleinere Pakete im Protokoll haben und eine Standardparameterreferenz beibehalten, aber das wäre zu gut.

Als Basis des Rovers wurde eine Modellmaschine im Maßstab 1/18 mit separatem Empfänger und Motorsteuerung verwendet.

Der Empfänger wurde weggeworfen, die Servo- und Motorsteuerungsanschlüsse wurden genau wie die Batterie direkt mit BeagleBone Blue verbunden.

Von dem Lächerlichen - ich erinnerte mich, dass ich als Kind überhaupt nicht löten konnte, Zinn-Rotz die ganze Zeit an den Lötstellen hing und ich den Lötkolben nicht ohne innere Angst aufnahm. Sobald jedoch Messer, Draht und Lötkolben in meine Hände fielen, nähte ich den Stich gut, schnitt die Isolierung ab, ohne den inneren Kern zu berühren, verdrehten meine Hände die Enden des Kabels, bestrahlten sie und versiegelten die Verbindung. Und dann erinnerte ich mich, dass ich als Embedded-Entwickler angefangen hatte und für ein paar Monate mit einem Lötkolben in Verbindung stand. Eine schöne Illustration des Sprichworts "Sie werden keine Erfahrung trinken", meiner Meinung nach.

Im Moment sieht der Stand folgendermaßen aus:


Wie Sie sehen können - die Steuerung ohne Gehäuse und Befestigungselemente. Leider habe ich eine Pseudohermobox bestellt, die mit Nylon auf einem SLS 3D-Drucker gedruckt werden soll, und sie haben es noch nicht geschafft. Um den Rover auf einem reinen Feld ohne Rumpf herauszubringen, kann ein solcher Wikinger eine halbe Stunde an der frischen Luft laufen. Dann wird entweder die elektrochemische Korrosion beendet oder nach einem Coup-Schlag wird sie vollständig emittiert. Wir warten also auf das Gehäuse, die Druckdichtungen und die Befestigungselemente gemäß allen Regeln der Stoß- und Schwingungsdämpfung.

Video zur Erkennung von Aruco Code Rover



Infolgedessen verbrachte ich Testpokatushki zu Hause mit manueller Steuerung. Es stellte sich heraus, dass die Basis nicht ganz richtig gewählt wurde - sie beschleunigt zu schnell, ich musste die Programmierung der chinesischen Motorsteuerung lernen. Der zweite - Rückwärtsgang bei diesem Wunder des chinesischen Denkens wird durch zwei "Rück" -Signale eingeschaltet - der erste schaltet das Bremsen ein, der zweite bereits den Rückwärtsgang. Und es kann ignoriert werden, wenn das Signal zu schnell ist - es spart die Ressourcen von Zahnrädern und Motor. Ich musste ardurover beenden, tk. solche Tricks wurden dabei nicht berücksichtigt.

Die folgenden Aktionen: Rollen Sie die Route 5-7 Mal zurück, entfernen Sie Telemetrieprotokolle und GPS-Tracks von Routen. Ich habe ein Fußballstadion mit einem beheizten Feld gefunden. Wenn es schneit, ist es okay. Der Rover wird offensichtlich keine Schneeverwehungen bohren, andernfalls sollte Faina Ranevskaya neben Feldhockey und Ballett auf Eis auch Golf entlang der Schneeverwehungen zur Liste der Perversionen hinzufügen. Natürlich nicht die billigste Unterhaltung, aber wo sonst in Russland und im November gibt es grünes Gras. Die Arbeiten an der Implementierung von Kettenfahrgestellen haben ebenfalls begonnen, bei denen die Geschwindigkeiten viel niedriger sind (das aktuelle Modell beschleunigt in 15 Sekunden auf 20 km / h) und eine Kehrtwende anstelle von Dreiecken auf einem Patch vorhanden ist. Höchstwahrscheinlich werden in ein paar Wochen beide Chassis gleichzeitig eingefahren, um die Funktion des Hindernisdetektors und der Umleitungsalgorithmen zu testen.

Am Ende möchte ich darauf hinweisen, dass die Überprüfung von Lösungen für Modelle in Originalgröße sehr schnell und kostengünstig ist. Viele Probleme wurden viel früher erkannt, und außerdem bleibt Zeit, Änderungen am Design eines großen Roboters vorzunehmen, während er sich noch in der Entwurfsphase oder im Prototyp befindet. Dann wird es teurer, länger und etwas wird etwas in der Verknüpfung von Knoten brechen. Darüber hinaus ist bei solchen Modellen fast die gesamte für Aufgaben erforderliche Software leicht zu entwickeln und zu verifizieren. Im Idealfall müssen Sie nur das Motorsteuerungsprotokoll durch ein neues ersetzen, um zu einem anderen Modell zu wechseln. Nun, es ist möglich, das dynamische Modell zu ändern.

Darüber hinaus spart der Einsatz spezialisierter und bewährter Lösungen viel Zeit und Energie. Es ist sicherlich sehr aufregend, eine eigene Leiterplatte mit hoher Dichte, ein eigenes Kommunikationsprotokoll, bodengestützte Software und einen Software-Rover zu erfinden, Algorithmen zur Vermeidung von Hindernissen zu debuggen und mit chinesischen Motorsteuerungen zu kommunizieren. In diesem Fall können Sie einem langen und holprigen Pfad sofort ein halbes Jahr hinzufügen. Schon von jemandem übergeben.

Ich brauche deine Hilfe:


  • Wenn Sie bereit sind, an der ROS-Version zu arbeiten.
  • Erfordert die Vorbereitung der Modulverbindungsplatine für Himbeer-Pi und Orange-Pi-Version
  • Helfen Sie beim Testen der Driving Range, insbesondere wenn Sie in einem Land leben, in dem Sie aktiv Golf spielen.
  • Rechtliche Fragen, Export des Roboters aus dem Land, Patentrecht, gesetzliche Designanforderungen;
  • Benötigen Sie Hilfe bei der Startverpackung und der Investitionssuche? Wir entwickeln uns gut und ohne Investitionen haben wir einen Aktionsplan, ein Team wird gebildet. Anstelle von Investorengeldern benötigen wir mehr Erfahrung und Kompetenz bei der Entwicklung eines wirtschaftlich erfolgreichen Projekts.

Aktueller Status des Projekts


Wir bereiten die zweite Version des Körpers vor. Innerhalb einer Woche wird der Fall durch Vakuumformen fertig sein, darüber werden wir einen separaten Beitrag schreiben.



Der untere Teil des Körpers wird durch Fräsen eines Verbundmaterials hergestellt.



Der Körper und die Mechanik wurden von NikitaKhvoryk entworfen . Wir haben lange darauf gewartet , die Verbindungsmodule für die Himbeer-Pi und Orange Pi-Versionen von n12eq3 zu bezahlen . Version mit Ardupilot Vladimir Goncharov Shadow_ru

Wir danken Process0169 , Trif , Tersuren , Vasimv , Vovaekb90 , Vyacheslav Soldatov, Levon Zakaryan, Sergey Pomazkin, Vladi Kuban, Karen Musaelyan und Alexey Platonov für die angebotene Hilfe und Beratung. Wenn Sie helfen möchten, schreiben Sie mir bitte im LAN oder VK , FB .

Pläne:


Wir haben vorläufige Vereinbarungen über die Platzierung eines Roboters zum Testen in Golfclubs in Russland, Deutschland, Lateinamerika und Neuseeland. In naher Zukunft werden wir die Algorithmen und das Design fertigstellen, Tests in Moskau durchführen und Verbesserungen vornehmen. Erstelle 5 Roboter und platziere sie kostenlos in Golfschlägern für lange Tests für die neue Saison.



Vielen Dank für das Lesen, Fragen und Kritisieren.

Source: https://habr.com/ru/post/de429522/


All Articles