Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Nox – Ein Hauswanderroboter (ROS)

Nox ist ein netter (und zeitaufwändiger) Roboter, der SLAM (ROS) mit einem Kinect verwendet, um in seiner Umgebung zu navigieren. Nox ist ein Roboter mit Differentialantrieb, der mit ROS, Raspberry Pi und Arduino gebaut wurde. Ich begann das Projekt als Roboterbasis mit einfacher Navigation, die ich dann für andere Dinge verwenden konnte, wie zum Beispiel einen Staubsauger.

Ich habe mich jedoch schnell entschieden, ihn zu einem eigenständigen Roboter mit einem richtigen Design zu machen, da er bei DIY-Robotern oft fehlt. In seinem aktuellen Zustand kann der Roboter mit SLAM (gmapping) eine Karte seiner Umgebung erstellen (unter Verwendung der Kinect-Tiefenwahrnehmung zur Erkennung von Wänden und Hindernissen) und sich innerhalb der Karte lokalisieren. Es kann einen Weg zu einem bestimmten Ziel planen und dorthin fahren, indem es Hindernissen ausweicht.

Nox wird von einem 11,1 V Lithium-Ionen-Akku gespeist und von zwei Motoren angetrieben. Zum Batteriewechsel kann die Frontplatte abgenommen werden. Ein Langloch und eine Schraube befestigen es und ermöglichen das Einsetzen von Batterien unterschiedlicher Länge. Ich habe einen Batteriealarm mit einem Bildschirm installiert, um den Füllstand zu überwachen.


Die Motoren sind zwei 12-V-Gleichstrommotoren (107 U/min) von Banggood. Sie sind nett, aber ich brauche den Roboter eigentlich nicht, um so schnell zu fahren, und ich hätte einen Teil der Geschwindigkeit gegen genauere Encoder eingetauscht.

Beim Design bestand die Haupteinschränkung darin, etwas zu haben, das sich gut in die Kinect integrieren lässt, da ich den Roboter darum herum baute. Inspiriert wurde ich von dem dreieckigen Look vieler moderner Stilobjekte (und viel von Deus Ex muss ich zugeben). Ich wollte wirklich einen schönen und professionell aussehenden Roboter haben, da er bei DIY-Robotern oft fehlt (aber keine Sorge, die Verkabelung ist so unordentlich, wie sie sein sollte). Es war notwendig, einige Wochen am CAD-Modell zu verbringen, um alles zu optimieren.

Die seitlichen Lichter sind aus einem Silvester-Leuchtstab, den ich gratis bekommen habe, recycelt und dienen zur Anzeige der Roboterzustände. Wenn der Arduino nicht mit dem ROS-Master verbunden ist (was anzeigt, dass das Roboterprogramm noch nicht gestartet wurde), blinken die Lichter dreimal hintereinander sehr schnell. Beim Fahren haben die Lichter ein "atmendes" Blinken und die Blinkgeschwindigkeit hängt von der Robotergeschwindigkeit ab.

Keine Verbindung blinkt

Leerlauf blinkt

Struktur

Wie oben erwähnt, handelt es sich bei dem Roboter um einen Differentialantrieb, sodass der Motor auf derselben Achse angeordnet ist. Die Basis besteht aus Holz mit zwei Lenkrollen zur Unterstützung. Ich hatte ursprünglich vor, ein Laufrad zu verwenden, um das hyperstatische Ding zu vermeiden, konnte aber kein geeignetes Rad finden. Der Rest der Struktur besteht hauptsächlich aus Holz- und Metallhalterungen, die in jedem Baumarkt leicht zu finden sind. Auf der Rückseite des Roboters können Platten gestapelt werden, um die Elektronikplatinen darauf zu setzen.


Der Carter ist aus schwarzer Plastikplatte, von Hand geschnitten und geklebt (wird beim nächsten Mal definitiv 3D-Druck verwenden).


Hardware

Im Inneren des Hauptcontrollers befindet sich ein Raspberry Pi 3B mit Ubuntu und ROS. Auf den Raspberry kann von einem externen Computer über WiFi und ssh zugegriffen werden, um dem Roboter Befehle zu erteilen. Das ROS-Programm führt mit Kinect Odometrieberechnungen, Navigationsplanungen und Kartierungen durch. Der Raspberry Pi sendet den Geschwindigkeitsbefehl an einen Arduino, der die beiden Motoren mit einer PID über ein Adafruit Motor Shield steuert. Es liest den Wert des Encoders, berechnet die Geschwindigkeit jedes Motors und sendet den Wert zur Odometrie-Berechnung an den Raspberry zurück. Arduino und Raspberry Pi sind über USB verbunden und das Arduino-Programm fungiert als ROS-Knoten (suchen Sie nach Rosserial für weitere Informationen).

Ich habe verschiedene Arten von Arduino verwendet, bevor ich mich für den guten entschieden habe. Zuerst habe ich das grundlegende Arduino Uno verwendet, aber ich hatte nicht genug Interrupt-Pins, um die Encoder-Werte zu lesen (die beste Methode dafür mit Arduino). Die Geschwindigkeit und Genauigkeit waren begrenzt, da ich auf andere Programmiertricks zurückgreifen musste, damit es funktionierte. Ich habe versucht, einen Arduino Leonardo zu verwenden, aber der limitierende Faktor war der Speicher und ich musste schließlich zu einem Arduino Mega 2560 wechseln. Ein Segen in Verkleidung, da ich jetzt noch viel Speicher und Pins übrig habe, um neue Funktionen hinzuzufügen.

Kinect 360 war von Anfang an Teil des Projekts, da ich SLAM (Simultaneous Localization And Mapping) machen wollte, ohne jedoch viel Geld für ein Lidar auszugeben. Eine Kinect ist im Grunde eine 25€ 3D-Kamera (erwarte natürlich nicht die gleiche Genauigkeit wie eine Hokuyo) und kann neben dem für SLAM benötigten Tiefenscannen auch für Computer Vision verwendet werden, verfügt über einen Beschleunigungssensor und ein Mikrofon Array. All dies ist praktisch für die folgenden Schritte des Projekts.

Zwei DC-Wandler werden verwendet, um die Spannung umzuwandeln. Der Motor läuft direkt mit der Batteriespannung (ca. 11,1 V). Der Befehlsteil (einschließlich Raspberry Pi, Arduino und Encoder) läuft mit 5V, die aus der Batterie umgewandelt werden. Die Kinect benötigt eine stabilisierte 12-V-Spannung und ein Wandler liefert sie auch aus der Batterie.

Software

Softwareseitig habe ich ROS Kinetic verwendet. Der einzige Knoten, den ich wirklich geschrieben habe, ist der „nox_controller“, der, wie sein Name nicht wirklich sagt, verwendet wird, um die Odometrie aus den Arduino-Daten (Motordrehzahl) zu berechnen. Das Modell, das für die Berechnungen verwendet wurde, ist in der Arbeit „On Differential Drive Robot Oometry with Application to Path Planning“ zu finden (ich habe tatsächlich meine eigenen Formeln erstellt, aber sie sind die gleichen, die Arbeit ist auf jeden Fall lesenswert). Kovarianzmatrizen werden in der Odometrie angegeben, aber derzeit nicht verwendet (allerdings wird es nützlich, wenn ich eine IMU in die Odometrie integriere).

Im Arduino erfolgt die Motorsteuerung über PWM. Ein PID soll jede Motordrehzahl verwalten, aber da das PWM / Motordrehzahlverhältnis sehr linear ist, habe ich mit einem direkten Befehl der Drehzahl ein gutes Ergebnis erzielt und den PID vorerst deaktiviert. Machen Sie sich keine Sorgen, obwohl die richtige PID-Implementierung und -Kalibrierung auf dem Weg ist.

Mehr Details lesen :Nox – Ein Hauswanderroboter (ROS)


Herstellungsprozess

  1. So erstellen Sie eine Arduino+Raspberry Pi-Roboterplattform
  2. Roboter mit Raspberry Pi und Bridge Shield
  3. Raspberry Pi CD-Box-Roboter
  4. ANDY:Ein "humanoider" Mehrzweckroboter
  5. Rollender Alarmroboter
  6. Baue einen Minecraft-Creeper-Roboter
  7. JQR vierbeiniger autonomer Roboter
  8. Archimedes:Die KI-Roboter-Eule
  9. EMAR Mini – Notfall-Assistenzroboter
  10. WLAN-gesteuerter Roboter mit Raspberry Pi