Übersetzung: Christopher Spitzner / Misterfloppy@gmx.de
Damit diese Anleitung einfach zu handhaben ist konzentriere ich mich auf die Montage und nicht auf eine ausführliche Erklärung.
Wer spezifische Fragen zum "Warum" anstatt "Wie" hat, meldet sich bitte in unserem Forum unter https://www.petoi.com/forum oder schreibt an info@petoi.com.
Die Crowdfunding Kampange ist auf Indiegogo aktiv: igg.me/at/nybble. Unsere Konten für soziale Medien (Instagram/Twitter/Facebook/GitHub) sind @PetoiCamp. Teilen Sie Ihren Nybble mit uns, unter #nybble #petoi #opencat damit wir für Sie reposten können!
Last Updated: 18/02/2020
"Ein gut geschäumter Bart ist halb geschoren." 🪒
Bereite einen sauberen Schreibtisch und einige kleine Kisten vor um die Teile aus dem Paket auszupacken.
Es ist ratsam, in einem Raum ohne Teppich oder strukturiertem Fußboden zu arbeiten. Kleine Schrauben und Federn verschwinden schnell, wenn sie mal vom Tisch fallen sollten.
Werkzeug | Bemerkungen |
Cutter Messer | Um die Teile aus dem Puzzle auszuschneiden |
Flach und Kreuz Schraubendreher | Für M2 (Durchmesser = 2mm) Schrauben |
Computer mit Arduino IDE | Installiere die aktuellste Arduino IDE |
USB zu Mini USB cable | Verbinde den Uploader mit dem Computer. Kein Micro USB |
2 x 14500 3.7V Li-ion Akkus | Nicht mit normalen AA Batterien (1.5V) mischen! Die Kapazität sollte etwa 800mAh sein. |
Intelligentes Ladegerät für Akkus | Falsches Ladegerät kann gefährlich sein! |
Schleifschwamm | Um überstehende Holzreste von den Teilen zu entfernen |
Werkzeug | Bemerkungen |
Lötkolben mit Zubehör | |
HC-05 Bluetooth Modul | |
Farben | Gib deinem Nibble einen einzigartigen Look |
3D Drucker mit Zubehör | Für dein ganz spezielles Design |
Arduino/Raspberry Pi | Für zusätzliche Spielereien |
Multimeter | Test und Debug |
Oszilloskop | Test and Debug |
Heiß / Sekundenkleber | Nicht unbedingt verwenden. OpenCat wurde so entwickelt das sie weich ist! |
"Das Leben ist wie eine Schachtel Nybble." 🔍
Tatsächlicher Inhalt und die Verpackungsmethode können im Zuge der Verbesserung angepasst oder geändert werden. Die einzelnen Namen der Teile wird aber weiterhin einheitlich bleiben.
Auf den Teilen könnten sich Reste vom Laserschneiden befinden. Verwende ein feuchtes, weiches Tuch um die Grundplatte zu reinigen.
Die Funktionsteile sind mit leicht angeschnittenen Laschen an der Grundplatte befestigt. Obwohl diese Teile leicht von Hand rausgenommen werden können, wird dringend empfohlen die Rückseite dieser Laschen mit einem Messer anzuschneiden. Dadurch wird eine mögliche Beschädigung der Teile vermieden.
Nachdem alle Teile entfernt wurden, ist es ratsam die Grundplatte mal zu biegen und zu sogar zu brechen. Das hilft, die Eigenschaften des Materials sowie die Festigkeit oder Elastizität besser zu verstehen. Es gibt mehr Sicherheit bei der späteren Handhabung.
Nutze einen Schleifschwamm um überstehende Holzreste von den Teilen zu entfernen. Nicht zuviel wegschleifen, dies könnte die Fugen zwischen den einzelnen Teilen beeinträchtigen.
Im Bausatz werden fünf verschiedene Schrauben verwendet. Ich habe diese unterschiedlich eingefärbt um die Position einfacher zu kennzeichnen. Für Nybble´s Montage werden nicht alle Schrauben benötigt. Nicht alle Löcher in den Teilen benötigen Schrauben. Schaue die Montageanleitung an um alle Schrauben zu lokalisieren.
● A ist für die Befestigung von Servohebeln. D (sharfe Spitze) ist für die Befestigung von Servos am Rahmen. A und D werden in den Zubehör Tüten von jedem Servo mit Kunstoff Servohebeln geliefert.
● B ist für die Befestigung von Servohebeln / Platinen am Rahmen.
In späteren Versionen kann diese durch C ersetzt werden, um den Inhalt des Bausatz einfacher zu machen. Falls ein Loch zu klein ist oder wegen der flachen Spitze nicht passt, nutze die Schraube D zum vorbohren.
● C (flache Spitze) ist zum fixieren der Oberschenkel.
● E (immer am längsten) ist für die Anbringung des Batteriehalters.
Bei früheren Packeten befinden sich, B, C und E auf der Grundplatte innerhalb der Blöcke wie hier gezeigt:
Es gibt drei verschiedene Federn: F, G, H.
● Die große Feder F wird zur elastischen Verbindung im Oberschenkel verwendet. Es gibt eine Ersatz Feder.
● Die harte kurze Feder G ist für den Hals.
Diese wird in späteren Bausätzen durch die Feder F ersetzt.
● Die weiche kurze Feder H dient zur Befestigung des Batteriehalters.
Wir wechseln zu einem neuen Servohersteller aus den letzten Chargen. Zuvor wurden für die vier Schultergelenke MG92B verwendet. MG90D wurden für die anderen Gelenke genutzt.
Die neuen Servos unterscheiden sich durch ihre Kabellängen. Kürzere Kabel werden für den Hals, das Hinterteil und die vier Schultergelenke verwendet. Längere Kabel werden für die Kopfneigung und die vier Kniegelenke verwendet.
Bei den Hobby-Servos gibt es mehrere Bereiche, in denen sie sich unterscheiden können.
Im Nybble Bausatz, verwenden wir ODMed Metallgetriebe, digitale PWM- und HV-Servos mit Lager und gebürsteten Eisenkern Motoren. Andere Servos können auch im OpenCat Rahmen funktionieren, benötigen aber möglicherweise weitere Versuche um die beste Leistung zu erzielen.
Getriebe | Signal | Protokoll | Spannung | Motor | Lager |
Plastik | Analog | PWM | 5V | gebürstet | keine |
Metall | Digital | Seriell | HV (bis zu 8V) | kernlos | Ja |
bürstenlos |
"Das ganze ist mehr als die Summer seiner Teile." 🔩
Der Algorithmus zur Hindernisvermeidung mit dem Ultraschallsensor wurde noch nicht in den freigegebenen Code integriert. Das folgende Setup bietet einen Startpunkt ist aber nicht zwingend erforderlich.
Der Sensor wird über ein 4-poliges Kabel an das NyBoard angeschlossen.
Löten Sie die optionale LED an den Ultraschallsensor
Die optionale RGB-LED kann an die vier Pins des Ultraschallsensors gelötet werden (Anleitung) um den Bertiebszustand anzuzeigen. Sie kann auch als dekoratives Licht programmiert werden.
Biege die Stifte des Ultraschallsensors zur späteren Installation.
4-Pin Ultraschallsensor an NyBoard anlöten.
Das Ultraschallmodul wird an die freiliegende GPIO-Pins angeschlossen, die sich in gegeüber dem TTL-Stecker auf der Platine befinden. Die Pin-Definitionen können in der OpenCat.h.angepasst werden. Bei der Standart Definition wird das Ultraschallmodul in die mit “D8 D9 D10 GND” beschrifteten Löcher wie unten abgebildet gelötet.
Die meisten Servohebel des Modells werden aus dem kreuzförmigen Hebel I zugeschnitten. Da nicht alle Servohebel benötigt werden kann man daran das schneiden üben.
Eine alternative Methode zum schneiden ist die Verwendung eines leicht erwärmten Messers. Man lässt diese etwas länger ruhen, damit der geschmolzene Kunststoff eine abgerundete Kante hat.
Achte auf den Breitenunterschied zwischen den beiden Längsseiten von Servohebel I sowie auf die Lage der Schnitte (unter Verwendung der Schraubenlöcher als Referenz).
Da wir den Servolieferanten wechseln, haben sich auch die Servohebel ein wenig verändert. (wie unten dargestellt). Um Verwirrungen zu vermeiden, kann der Servohebel I für die meisten Gelenke verwendet werden. Dazu entsprechend scheiden. Servohebel K wird für den Schwanz verwendet. Servohebel J wird nicht benötigt.
Die Grundgerüst sollte für eine spätere Kalibirerung nur teilweis zusammengebaut werden. Ansonsten wird es schwierig sein, das Servo zwischen den Halsstücken einzusetzen. Beachte auch, wie die Servokabel im Kopf organisiert sind. Baue die Kopfgruppe wie in der Kopf Animation gezeigt zusammen.
Verbinde den Kopf NOCH NICHT mit dem Rumpf, da das Neige-Servo am Kopf kalibriert werden muss.
Nur NyBoard
Beachte, dass das NyBoard ohne den Raspberry Pi, an der Unterseite von y1 mit den Servoanschlüssen nach unten montiert wird. In späteren Versionen ist das y1 Stück so symmtrisch gestaltet, dass beide Enden zwei Schraubenlöcher haben.
NyBoard mit Raspberry Pi
Verwende y1Pi um y1 zu ersetzen und füge den Pi Halter hinzu. Achte auf die Position der rosa Teile. Beachte, dass beim Raspberry Pi Einbau das NyBoard auf y1Pi montiert wird.
Bei früheren Chargen von NyBoards hat der Hersteller höhere Jumper-Pins als erwartet verwendet, sodass es notwendig ist die Pins zu biegen oder das Nyboard anderweitig zu modifizieren, damit ein Pi darauf passt und der Pi Halter verwendet werden kann. Eine Liste von Lösungsvorschlägen finden Sie im Forum unter diesem Link: https://www.petoi.com/forum/clinic/placement-of-raspberry-pi-3b
Andere Controller
Ich habe 5 x 1”/4 Muttern für die Monatage anderer Controller beigefügt.
Biege das Scharnier L des Akkuhalters wie unten gezeigt um 90 Grad. Das wird der Schalter. Führe die lange Schraube E durch die Hülse. Setze dann die Hülse in das Loch an der Unterseite des Akkuhalters. Achte auf die Position der Löcher.
Die mit einer Feder befestigte Strucktur des Akkuhalters dient zur Verlagerung des Masseschwerpunktes bei der Feinabstimmung von Schritten.
Der Akkuhalter ist für AA (1.5V) Akkus. Nybble braucht aber 3.7V Li-ion Akkus.
Achte auf die langen Stifte vom Infrarotempfänger und FTDI Port. Sie sind so konstruiert, das sie in die gewünschte Position gebogen werden können. Biege die Stifte und den Infrarot Empfänger nicht zu oft da dies zu Materialermüdung führt und diese dann abbrechen könnten. Beachte die angepasste Konfiguration wenn ein Pi montiert wird.
Setze die Körpergruppe wie in der Körper Animation gezeigt zusammen.
Das Rückgrat kann dicker sein als der Schlitz auf der Schulter. Es kann zuerst von außen eingeführt werden um die Spitze zu verengen und den Schlitz zu erweitern. Dann kann es komplett bis zur Innenseite der Schulter eingeführt werden.
Die gezackte Strucktur am Ende des Unterschenkels ist bereits zum gehen geeignet. Die Gummifüße sind optional, um die Reibung zu erhöhen und Nybbles Schritte weicher zu machen.
Achte auch auf die Richtung des Kabels. Die kleine Delle an der Längskante ist so gestaltet, dass der Draht durchgelassen wird. Denke an die Symmetrie der vier Unterschenkel. Baue den Unterschenkel wie in der Unterschenkel Animation gezeigt zusammen.
Installiere die Servoschraube A NOCH NICHT.
In späteren Versionen werden wir Kunststoffteile für Oberschenkel 2 verwenden.
Die genaue Position wurde im Abschnitt Kopf und Nacken gezeigt. Der abgeschittene schmalere Servohebel ist zum Einführen in die Feder F vorgesehen.
Vor dem schließen von Oberschenkel1 und Oberschenkel2 den Draht des Unterschenkels durch den Schlitz in der Mitte des Oberschenkels stecken. Denke an die Symmetrie der vier Beine.
Der geschnittene Servohebel sollte in der Lage sein , in der Schiene auf Oberschenkel2 mit leichter Reibung zu gleiten nachdem Oberschenkel1 und Oberschenkel2 zusammengeschraubt wurden. Der Anzugdruck der Schraube C kann so eingestellt werden, dass die richtige Reibung erreicht wird. Wenn mehr Kontrolle über den Anzugdruck benötigt:
Kratze mit einem flachen Schraubendreher an der Schiene um die Reibung zu verringern.
Trage ein wenig Papierkleber in die Schiene ein und lasse diesen trocknen um die Reibung zu erhöhen.
Bau den Oberschekel wie in der Oberschenkel Animation gezeigt zusammen.
Schraube Hals und Beine NOCH NICHT an die Servos der Körpers.
Die Schraube D wird in das dritte Loch von der Mitte des Servohebels K aus gezählt eingebaut. Achte auf die Reihenfolge, in der jedes Teil gestapelt wird. Das Rad sollte sich mit geringer Reibung drehen können. Das gesamte Heck sollte sich ein wenig neigen können.
Setze den Schwanz wie in der Schwanz Animation gezeigt zusammen.
Verbinde den Schwanz NOCH NICHT mit dem Körper.
"Wer liebt Fritten?" 🍟
Finde die Versions Info auf dem NyBoard. Lese das entsprechende Handbuch für NyBoard V0_1 oder NyBoard V0_2.
Falsche Handhabung kann das NyBoard beschädigen!
Ab NyBoard V0_2 bieten wir einen Jumper Selektor zur Umgehung des Potentiometers an. Wenn Metallservos in einem Standard Nybble Bausatz verwendet werden, kann dieser Schritt übersprungen werden.
Höhere Spannung erhöht das Drehmoment der Servos und lässt Nybble schneller laufen. Der Nachteil ist, dass die Stromaufnahme erhöht wird, was wiederrum die Akkulaufzeit verkürzt. Ebenso wird die Stabilität der Schaltung beeinflusst und der Servo Verschleis beschleunigt. Nach meinem Tests scheinen 5.5V eine ausgewogene Leistung zu ergeben.
Bei der Erstinstallation sollte das NyBoard nicht mit Schrauben befestigt werden, da es möglicherweise zum einstellen mit einem Potentiometer harausgenommern werden muss. Vergewissere dich, dass die Servos im normalen Betriebszustand gut drehen bevor die Feineinstellung vorgenommen wird.
Der I2C Schalter ändert den Master von I2C-Bausteinen (Gyro/Beschleunigungsmesser, Servotreiber, externer EEPROM). Bei der Voreinstellung “Ar”, verwendet das NyBoard den integrierten ATmega328P als Master-Chip. Bei "Pi" verwendet NYBoard externe Chips, die über die I2CPorts (SDA, SCL) angeschlossen sind als Master Chip.
Manchmal, wenn der Bootvorgang nicht durchläuft, wurde vielleicht versehentlich der Schalter auf "Pi" gestellt.
Das NyBoard ist für zwei Anwendungsfälle konzipiert. Einer ist für Nybble und Metallgetriebeservos, der zweite ist für DIY Roboter die Kunststoffgetriebe Servos verwenden. Kunststoffgetriebe Servos können nur 6V aushalten, daher gibt es einen Step Down Chip auf dem NyBoard. Der Chip ist für 5A maximale Leistung ausgelegt, kann aber nur mit mehreren richtigen Einstellungen und sorgfältiger Abstimmung erreicht werden.
Bei der Verwendung von NyBoard und den Metallgetriebe Servos von Nybble, kann durch einige Anpassungen eine optimierte Leistung erreicht werden. Für NyBoard_V0_1 müssen einige Lötarbeiten durchgeführt werden. Dies kann man sich im Forum anschauen. Für NyBoard_V0_2 können Sie den Jumper SW3 zwischen BATT und V_S anschließen. (Im Hinblick auf die Sicherheit von Kunststoffgetriebe-Servos wird das NyBoard standartmäßig mit der Jumperstellung SW3 geliefert, die V_S und V+ verbindet).
V_S bedeutet Leistung für Servo. Der Jumper wählt, ob die Servos (V_S) uber den Step-Down-Chip (V+) oder direkt über die Akkus (BATT) versorgt werden sollen. (BATT) und (V+) sollten also niemals direkt verbunden werden.
Wie sich zeigt, arbeitet das NyBoard stabiler, wenn die Metallgetriebe Servos direkt mit BATT statt mit V+ betrieben werden. Wenn Sie das NyBoard verwenden um Ihre eigenen Kunstoffgetriebe Servos anzutreiben, müssen Sie die Step-Down-Schaltung verwenden.
Es wird die aktuellste Arduino IDE benötigt um die Umgebung einzurichten. Ältere Versionen neigen dazu, größere Hex-Dateien zu kompilieren, die die Speichergrenze überschreiten können.
Wenn zuvor andere Bibliotheken hinzugefügt wurden und die Fehlermeldung "XXX library is already installed" zu sehen ist, empfiehlt es sich, diese zuerst zu löschen. (Anleitung: https://stackoverflow.com/questions/16752806/how-do-i-remove-a-library-from-the-arduino-environment). Wenn es aufgrund unterschiedlicher Konfigurationen der Arduino-IDE-Installation bei der Kompilierung Fehlermeldungen bezüglich fehlender Bibliotheken gibt, google danach und Installiere diese in der Ardunio IDE.
Gehe zur Bibliotheksverwaltung (Anleitung: https://www.arduino.cc/en/Guide/Libraries), dann suche und installiere:
Adafruit PWM Servo Driver
IRremote
QList
Gehe zu jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other C++-based MCUs, lade die Zip-Datei herunter und entpacke diese. Alternativ kann auch das komplette repository geklont werden.
Im Arduino IDE bei Sketch auf Add .ZIP Library und dann Arduino/MPU6050/ zusätzlich noch Arduino/I2Cdev/. Auf die Ordner klicken und diese nacheinander hinzufügen. Es müssen keine .ZIP Dateien sein.
Öffne die Einstellungen...
Im Feld Weitere Boards Manager URLs https://raw.githubusercontent.com/PetoiCamp/OpenCat/master/Resources/NyBoard/boardManager/package_petoi_nyboard_index.json einfügen. Wenn in diesem Feld bereits URLs aufgelistet sind, tenne diese mit Kommas oder klicke auf das Symbol neben dem Feld um einen Editor zu öffnen und die obere URL in eine neue Zeile einzufügen.
Klicke auf OK um das Einstellungsfenster zu schliessen (Zuvor geöffnete Fenster müssen geschlossen werden um das Einstellungsfenster zu schließen.)
Öffne den Boards Manager... unter Tools -> Board: XXXX -> Boards Manager...
In Filter your search... schreibe NyBoard
Wähle den Eintrag aus und klicke auf Installieren
Klicke auf Schliessen
Wähle ATmega328P (5V, 20 MHz) NyBoard aus dem Tools -> Board: XXXX Menü (NyBoardV0_1 und NyBoardV0_2 benutzen die gleichen Einstellungen).
Nur wenn die obere Methode fehlschlägt
● Finde die Datei boards.txt
Mac Ort:
/Users/UserName/Library/Arduino15/packages/arduino/hardware/avr/version#/
Oder:
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr
Zum Zugriff , Rechtsklick auf Arduino.app und wähle Show Package Contents
Windows Ort:
C:\Program Files(x86)\Arduino\hardware\arduino\avr\
WICHTIG! Wenn die Arduino IDE über den Microsoft Store installiert wurde, gibt es warscheinlich keinen Zugriff auf den Ordner, da dort kritische Konfigurationsdateien gepeichert sind. Die einfachste Lösung ist, Arduino wieder zu deinstallieren und diese direkt von https://www.arduino.cc neu zu installieren.
Linux
Beim Herunterladen über das Terminal oder den Packetverwalter erhält man möglicherweise nicht die neueste Version, was ein Problem werden kann. Bitte die neuste Version von der Arduino Webseite herunterladen: https://www.arduino.cc/en/Main/Software
Entpacke das Packet und sudo install.sh
Der Speicherort der boards.txt files ist:
Fedora: boards.txt is verlinkt unter:
/etc
Arch: boards.txt ist unter:
/usr/share/arduino/hardware/archlinix-arduino/avr/
Mint:
location_of_installation/arduino/hardware/arduino/avr
Ubuntu (on 18.04 installieren mit apt-get install arduino
):
/usr/share/arduino/hardware/arduino/boards.txt
nach auffinden von boards.txt:
● Mache eine Kopie von boards.txt falls etwas rückgängig gemacht werden soll.
● Erstelle eine neue boards.txt.
Du kannst meine boards.txt Datei herunterladen, oder:
Editiere deine boards.txt mit Admin Rechten. Finde den folgenden Abschnitt
pro.name=Arduino Pro or Pro Mini
füge folgendes ein:
Code-Block in der Arduino Pro oder Pro Mini Sektion wie unten beschrieben. Speichere und schliesse den Editor.
● Lade ATmega328_20MHz.hex herunter. Lege diese in deinem Arduino Ordner ab unter: ./bootloaders/atmega/. Es sollten auch andere Bootloader mit .hex Endung in diesem Ordner sein.
Arduino IDE neustarten. Unter Tools->Boards, wähle Arduino Pro oder Pro Mini. Dort sollte ATmega328P (5V, 20 MHz) im Prozessor menü sein.
Wenn das Board dort nicht zu finden ist, verwendet die Arduino IDE möglicherweise die boards.txt von einem anderen Pfad. Suche die boards.txt in allen Ordnern auf deinem Computer. Finde die Datei, die genutzt wird.
Nur wenn der Bootloader von NyBoard nicht mehr funktioniert.
Jedes NyBoard durchläuft vor der Auslieferung eine Funktionsprüfung, daher sollte bereits ein kompatibler Bootloader installiert sein. In seltenen Fällen kann es jedoch vorkommen, dass der Bootloader zusammenbricht und man dann keine Sketche über die Arduino-IDE hochladen kann.
Nun, es liegt nicht immer am Bootloader, wenn Sie Ihren Sketch nicht hochladen können:
Manchmal erkennt der USB-Anschluss eine zu hohe Stromaufnahme von einem Gerät und deaktiviert den gesamten USB-Dienst. Dann muss der USB-Dienst oder Pc neu gestartet werden;
Der Treiber für den Uploader FTDI USB 2.0 to UART muss installiert sein;
Es wurde ein falscher Port ausgewählt;
Schlechter oder keinen Kontakt;
Kein Glück. Morgen ist ein neuer Tag!
Wenn man sich wirklich entscheidet, den Bootloader neu zu brennen:
Wähle das ATmega328P (5V, 20 MHz) Board aus dem Tools Menü der Arduino IDE.
Wähle deinen ISP (In-System Programmer). Der obige Screenshot zeigt zwei beliebte Programmer: Der hervorgehobene USBtinyISP ist ein günstiger Bootloader, den man sich kaufen kann, während der ausgewählte Arduino als ISP einen normalen Arduino as ISP verwenden kann.
Verbinde den Programmer mit dem SPI-Port auf dem NyBoard. Achte beim Anschließen auf die Richtung. Stelle sicher, dass es eine gute Verbindung ist.
Brenne den Bootloader. Wenn das zum ersten Mal gemacht wird, warte geduldig, bis mehrere Prozentbalken 100% erreichen und eine Minute lang keine weiteren Meldungen mehr erscheinen.
Das folgende Bild zeigt zwei gängige FTDI-Boards.
Auf dem roten Board muss der Jumper auf 5V (nicht 3,3V) gesetzt sein. Der GND des Uploaders und die 6-polige Buchse auf dem NyBoard müssen übereinstimmen.
Verbinde den Computer über ein USB-mini zu USB-Kabel mit dem FTDI-Uploader (der rote Chip mit 6 männlichen Pins). Der Uploader hat drei LEDs, Power, Tx und Rx. Direkt nach dem Anschluss sollten Tx und Rx eine Sekunde lang blinken, was die erste Kommunikation anzeigt, dann dimmen. Nur die Power-LED sollte weiter leuchten. Ein neuer Port ist unter Tool->Port als "/dev/cu.usbserial-xxxxxxxxxx" zu finden. (Mac) oder "COM#" (Windows).
Unter Linux sieht man, sobald der Uploader am Computer angeschlossen ist, eine "ttyUSB#" in der Liste der seriellen Ports. Es kann aber immer noch ein Fehler der seriellen Schnittstelle beim Hochladen auftreten. Man muss der seriellen Schnittstelle den Zugriff erlauben. Bitte gehe zu diesem Link und folge den Anweisungen: https://playground.arduino.cc/Linux/All/#Permission
Wenn Tx und Rx weiterhin aufleuchten, stimmt etwas mit der USB-Kommunikation nicht. Der neue Anschluss ist dann nicht zu sehen. Normalerweise wird dies durch den Überlastschutz Ihres Computers verursacht, wenn das NyBoard nicht mit einer externen Stromversorgung verbunden ist und sich alle Servos auf einmal bewegen.
In späteren Versionen könnte es eine andere Variante des FTDI-Uploaders geben. Überprüfe einfach die Markierungen auf dem Chip und Verbinde diesen korrekt mit dem NyBoard.
Es ist möglich Nybble drahtlos zu programmieren und zu kommunizieren. Schaut euch dazu die Bluetooth Anleitung im OpenCat Forum an. Nybble kann dann mit einer Smartphone APP oder Web API gesteuert werden!
Lade ein neues OpenCat repository von GitHub herunter: https://github.com/PetoiCamp/OpenCat. Es ist besser, wenn die Versionskontrollfunktion von GitHub verwendet wird. Andernfalls stelle sicher, dass immer der GANZE Nybble ORDNER Heruntergeladen wird. Alle Programme müssen die gleiche Version sein damit sie funktionieren.
Es gibt mehrere testX.ino-Codes im Ordner ModuleTests. Man kann diese hochladen, um bestimmte Module separat zu testen. Öffne einen beliebigen testX.ino-Sketch mit dem Präfix "test". (Ich empfehle die Verwendung von testBuzzer.ino als ersten Sketch).
Wählt als Board Arduino Pro oder Pro Mini und kompiliert. Es sollte keine Fehlermeldungen geben. Lade den Sketch auf das Board hoch. Die LEDs Tx und Rx sollten schnell blinken. Sobald sie aufhören zu blinken, sollten Meldungen auf dem seriellen Monitor erscheinen. Vergewissere dich, dass die Einstellung der Baudrate (57600) und die Boardfrequenz (16MHz oder 20MHz) mit der Konfiguration übereinstimmt.
Wenn eine Eingabeaufforderung angezeigt wird, stelle sicher das "Kein Zeilenende" gewählt wurde. Andernfalls verwirren die unsichtbaren Zeichen '\n' oder '\r' die Parsen-Funktionen.
Bei Linux-Systemen kann die folgende Fehlermeldung angezeigt werden:
Um den Sketch von Arduino zu kompilieren, muss man das Ausführungs Privileg zum avr-gcc hinzufügen:sudo chmod +x filePathToTheBinFolder/bin/avr-gcc
Zusätzlich muß die Ausführungsberechtigung für alle Dateien innerhalb von /bin hinzugefügt werden, der Befehl ist: sudo chmod -R +x /filePathToTheBinFolder/bin
Mit dem FTDI-zu-USB-Konverter, der das NyBoard und die Arduino-IDE verbindet, haben Sie die ultimative Schnittstelle um mit dem NyBoard zu kommunizieren und jedes Byte darauf zu ändern.
Ich habe eine Reihe von seriellen Kommunikationsprotokollen für NyBoard definiert:
Alle Kürzel beginnen mit einem einzelnen Ascii-codierten Zeichen, um das Parsing-Format festzulegen. Sie unterscheiden zwischen Groß- und Kleinschreibung und sind gewöhnlich klein geschrieben.
Einige Zeichen wurden nicht implementiert, wie z.B. "h". Das Kürzel 'i' und 'l' haben noch einige Bugs.
Nur bei Verwendung von Pi als Master-Controller. Nybble braucht keinen Pi, um sich zu bewegen.
Wie im seriellen Protokoll gezeigt, sind die Kürzel, die vom seriellen Monitor der Arduino-IDE unterstützt werden, alle als Ascii-Zeichenketten für die menschliche Lesbarkeit kodiert. Während ein Master-Computer (z.B. RasPi) zusätzliche Befehle unterstützt, die für eine effiziente Kodierung meist als binäre Zeichenketten kodiert sind. Zum Beispiel bei der Kodierung des Winkels 65 Grad:
Ascii: benötigt 2 bytes um Ascii Zeichen zu speichern, Zeichen '6' und '5'
Binär: benötigt 1 byte um den Wert 65 zu speichern, was dem Ascii Zeichen 'A' entspricht
Was ist mit dem Wert -113? Er benötigt vier Bytes als Ascii-Zeichenkette, aber immer noch nur ein Byte in binärer Kodierung, wobei der Inhalt nicht mehr als Zeichen angezeigt werden kann.
Offensichtlich ist die binäre Kodierung viel effizienter als die Ascii-Zeichenkette. Die übertragene Nachricht ist jedoch nicht direkt für den Menschen lesbar. Ich habe im OpenCat-Repository ein einfaches Python-Skript ardSerial.py, das die serielle Kommunikation zwischen NyBoard und Pi verarbeiten kann.
In Pi's Terminal, gebt ein: sudo raspi-config
Unter Interface findet man die Option Serial. Deaktiviert die serielle Anmeldeshell und aktiviert die serielle Schnittstelle.
Wenn man den Pi an die 2x5-Buchse des NyBoards anschließt, sollten deren serielle Anschlüsse automatisch mit 3,3V verbunden werden. Andernfalls achte auf die Rx- und Tx-Pins auf Ihrem eigenen AI-Chip und dessen Spannungswert. Der Rx auf dem Chip sollte mit dem Tx des NyBoards verbunden werden, und der Tx sollte mit dem Rx verbunden werden.
Wenn man ihn als Bash-Befehl ausführen will, muss man diesen ausführbar machen:
chmod +x ardSerial.py
Möglicherweise muss der richtige Pfad Ihrer Python-Binary in der ersten Zeile geändert werden:
#!/user/bin/python
Das NyBoard hat nur einen seriellen Anschluss. Man muß den FTDI-Konverter AUSSTECKEN, wenn man Nybble mit der seriellen Schnittstelle von Pi steuern möchte.
Die Eingabe von ./ardSerial.py <args>
ist fast gleichbedeutend mit der Eingabe von <args> in Arduino's seriellem Monitor. Beispielweise ./ardSerial.py kcr
bedeutet "Fähigkeit-Kriechen durchführen".
Beide, also ardSerial.py und der Parsing-Abschnitt in Nybble.ino, benötigen weitere Implementierungen, um alle seriellen Befehle im Protokoll zu unterstützen.
Bei der Verbindung mit Pi kann es zu einer reduzierten Bewegungsfähigkeit kommen. Eine stärkere Batterie ist erforderlich.
Mit dem zusätzlichen Stromverbrauch durch den Pi wird Nybble weniger in der Lage sein, intensive Bewegungen, wie z.B. Trab, auszuführen (das Zeichen istktr
). Das System wird derzeit von zwei 14500 Akkus in Reihe betrieben. Sie finden möglicherweise bessere Lösungen für die Stromversorgung, wie z.B. die Verwendung von 7,4 Lipo-Akkus mit hoher Kapazität oder 2 S-18650. Es gibt eine Reihe von Überlegungen zur Zusammenarbeit von Software und Hardware für eine ausgewogene Leistung. Mit Nybbles winzigem Körper ist es besser, die Initiierung des Kommunikationsrahmens und des Verhaltensablaufs zu bedienen, als ein rennendes Biest zu haben.
Obwohl Sie das NyBoard direkt mit dem FTDI-Uploader programmieren können, ist für den Antrieb der Servos eine externe Stromversorgung erforderlich.
Das NyBoard benötigt eine externe Spannung von 7,4~9V, um die Servos anzutreiben. Bei Nybble verwenden wir den 8V-Standard, um alle Parameter als gesamtes zu konfigurieren. Das sind normalerweise zwei in Reihe geschaltete Li-Ionen- oder Li-Poly-Akkus. Ein einziger Akku hat eine Spannung von 4,2V, wenn er voll aufgeladen ist, und kann normal arbeiten, bis die Spannung auf 3,6V abfällt. Das sind etwa 7,2V bei zwei, in Reihe geschalteten Akkus. Vor der Installation dreht man das Potentiometer auf dem NyBoard im Uhrzeigersinn, um zunächst die minimale Ausgangsspannung (etwa 4,5V) zu testen. Dann dreht man das Potentiometer solange hoch, bis der Roboter richtig funktioniert. Bei unseren Bausatz-Servos funktioniert es eigentlich besser, SW3 zwischen BATT mit V_S zu verbinden und den Step-down-Chip zu umgehen (so muss nicht mit dem Potentiometer eingestellt werden).
Wenn man nach Akkus sucht, sucht man mit den Schlüsselwörtern "14500 3,7V Li-Ion-Batterie ungeschützt". Mir ist aufgefallen, dass der Überstromschutz einiger Akkus durch die Spitzenstromaufnahme (normalerweise >2,5A) ausgelöst werden kann, wodurch das NyBoard zurückgesetzt wird oder nicht mehr funktioniert. Versuche Akkus mit höherer Entladungsleistung zu finden.
Lies diesen Forumsbeitrag um Akkus zu finden, die gut mit Nybble funktionieren.
Der mitgelieferte Batteriehalter ist für 14500 Akkus ausgelegt, das sind 14 mm Durchmesser und 50 mm Länge. 50 ± 1 mm sollten auch passen. Diese haben die gleiche größe wie AA-Batterien, sind aber wesentlich Leistungsstärker. Verwenden Sie diesearauf, nicht in normalen AA-Geräten!. Wenn Sie in den USA leben, wir haben mit EBL 14500 Li-Ionen-Akkus getestet.
Es können auch andere Akkuhalterungen entworfen werden, um größere Akkus für eine bessere Leistung zu transportieren. Das ist vor allem dann notwendig, wenn ein Raspberry Pi genutzt wird oder Nybble schneller laufen soll.
Vorsicht mit der Polarität beim Anschluss der Stromversorgung. Achtet darauf, dass das positive (+) und das negative (-) Zeichen sowohl an der Stromklemme des NyBoards als auch an der Stromversorgung zu sehen ist.
Eine falsche Polung kann Ihr NyBoard beschädigen!
Löst die Schrauben des Stromblocks. Führe die Drähte des Akkuhalters ein und ziehe die Schrauben an. Beim Einschalten sollte sowohl die blaue (für Chip) als auch die gelbe LED (für Servos) aufleuchten.
Sie kann Stunden betragen wenn Sie hauptsächlich programmieren und Körperhaltungen testen. Oder weniger als 30 Minuten, wenn man Nybble laufen lässt.
Wenn der Akku schwach ist, blinkt die gelbe LED langsam. Obwohl das NyBoard immer noch ein oder zwei Servos antreiben kann, wird es sehr instabil sein wenn mehrere Servos gleichzeitig angetrieben werden. Das führt zu wiederholten Neustarts oder ungünstigen Gelenkdrehungen. In seltenen Fällen kann es sogar die Bits im EEPROM verändern. Zum wiederherstellen muss man dann die Programmcodes neu hochladen und die Konstanten neu speichern.
Sie benötigen kompatible intelligente Ladegeräte für die Akkus. Die Akkus sollten beim Aufladen immer beaufsichtigt werden.
Nach dem Spielen die Akkus aus dem Batteriehalter entfernen, um eine Tiefentladung zu vermeiden.
Es ist in Ordnung, FTDI und Akku zur gleichen Zeit anzuschließen. Man kann serielle Befehle eingeben, während das Akku angeschlossen ist. Mir ist aufgefallen, dass der serielle USB-Anschluss zufällig deaktiviert wird. Ich denke, das liegt an der plötzlichen Stromaufnahme durch die Servos. Dadurch wird der Überstromschutz des Computers ausgelöst und der USB-Anschluss deaktiviert. In diesem Fall, den USB-Bus zurücksetzen oder den Computer neu starten. Es ist also eigentlich besser, das Board mit einer Batterie zu versorgen, bevor Sie den FTDI Uploader einstecken.
"Alles ist verbunden." 🤝
Nybbles Servos sind symmetrisch mit den PWM-Pins des NyBoards verbunden und ähneln den Nerven entlang des Rückenmarks. Obwohl Nybble nicht über Schulter-Roll-DoF verfügt, sind diese Indexe (4~7) für das gesamte OpenCat-Framework reserviert.
NyBoard V0_1 und V0_2 haben unterschiedliche PWM-Pin-Belegungen, die Position vom Servoanschluss bleiben gleich. Alle Anpassungen werden in der Software vorgenommen.
Verwende h für Kopf, t für Schwanz, r für Schulter-Rollgelenk, s für Schulter-Nickgelenk, k für Kniegelenk, F für vorne, H für hinten, L für links, R für rechts, die vollständige Gelenkkarte von OpenCat ist:
Beachte das Schaltschema zum Anschluss der Servos mit den PWM-Pins. Vorsicht mit der Richtung der Drähte. Der braune Draht des Servos ist GND, während GND auf dem NyBoard V0_1 entlang der Mittellinie liegen. Auf dem NyBoard V0_2 liegen sie gegenüber.
Eine schnelle Überprüfung ist, dass alle braunen Drähte auf NyBoard V0_1 von der Platinenoberfläche weg zeigen. Auf NyBoard V0_2 sollten die braunen Drähte an der Plattenoberfläche sein.
Bei NyBoard V0_2 ist die Position der Servodrähte immer noch die gleiche, aber die Richtung der Farben ist entgegengesetzt.
Nach der Kalibrierung, der Fehlersuche und der endgültigen Montage ist es an der Zeit, über die Verkabelung nachzudenken damit Nybble ordentlich aussieht. Es gibt mehrere Steckplätze auf dem Rahmen, die als Kabelverteiler konzipiert sind. Es kann auch ein eigener Stil für den Anschluss von zukünftigem Zubehör entwickelt werden. Achte darauf, dass die Kabel die Bewegung der Servos nicht behindern.
Unten ist meine Verkabelung:
Falls noch nicht geschehen, stecke das 4-polige Kabel ein, notiere, welche Kabelfarben an welche Signale angeschlossen sind. Beim Blick in Nybbles Augen sind die Verbindungen von links nach rechts:
VCC | Trigger | Echo | Ground |
Schließe das andere Ende des Kabels an den Stecker an, der zuvor bei der Montage eingelötet wurde. Verwende dazu die folgende Abbildung:
Sensor Seite | NyBoard Seite |
Vcc | D8 |
Trigger | D9 |
Echo | D10 |
GND | GND |
"Ein Verfehlen ist so gut wie eine Meile." 🎯
Die Kalibrierung ist für die einwandfreie Funktion von Nybble unerlässlich.
In den vorangegangenen Abschnitten haben wir die Körperteile vorbereitet, sie aber nicht auf die Servos geschraubt. Wenn wir die Servos nicht vor dem Anbringen kalibrieren, können sie sich in jede Richtung drehen, stecken bleiben und die Servos oder Körperteile beschädigen.
Die Kalibrierung erfolgt in vier Schritten:
Schreib Konstante an das Board
Einschalten, Servos frei bis zum Nullwinkel/Kalibrierungszustand drehen lassen
Körperteile an den Servos befestigen
Feinabstimmung der Abweichungen (Offsets) in der Software
Die Logik hinter der Kalibrierung kann im OpenCat Forum gefunden werden.
Montagebezogene Definitionen, wie Gelenkabbildung, Drehrichtung, Sensorpins. Sie sind weitgehend festgelegt und werden in OpenCat.h definiert. Sie werden auch für meine zukünftigen Roboter einheitlich gehalten;
Kalibrierungsbezogene Parameter, wie MPU6050-Verschiebungen und Gelenkkorrekturen. Sie werden in Echtzeit gemessen und im integrierten EEPROM gespeichert. Diese müssen nur einmal gemessen werden;
Geschicklichkeitsdaten, wie Haltungen, Gangarten und vorprogrammierte Verhaltensweisen. Sie werden in Instinct.h definiert. Es können auch weitere Fähigkeiten hinzugefügt werden.
Die Rolle von WriteInstinct.ino besteht darin, Konstanten entweder in das Onboard oder in das I2C-EEPROM zu schreiben und die Kalibrierungswerte zu speichern. Diese werden danach mit dem Sketch Nybble.ino überschrieben.
Sie müssen den * von #define NyBoard_V*_*
in Instinct.h ändern, damit er mit der Version des NyBoards übereinstimmt. Die Versionsnummer ist links neben dem grünen Akkuanschluss.
Nachdem das Hochladen von WriteInstinct.ino abgeschlossen ist, öffne den seriellen Monitor. Es erscheinen mehrere Fragen:
Reset all joint calibration? (Y/n)
Wenn die Gelenke noch nie kalibriert wurden oder neu kalibriert werden müssen, gebe bei der Frage 'Y' ein. Beachte GROß- KLEINSCHREIBUNG!
Do you need to update Instincts? (Y/n)
Wenn die Instinct.h in irgendeiner Weise verändert wurde, sollte 'Y' eingegeben werden. Dies ist nicht immer notwendig ist, erfordert aber ein tieferes Verständnis der Speicherverwaltung.
Calibrate MPU? (Y/n)
Wenn der MPU6050, d.h. also Kreisel-/Beschleunigungssensor noch nie kalibriert wurde, 'Y' eingeben.
Manchmal kann das Programm in der Verbindungsphase hängen bleiben. Durch Schließen und erneutes Öffnen des seriellen Monitors oder durch Drücken der Reset-Taste auf dem NyBoard kann man das Programm neu starten.
Der Kalibrierungszustand ist als der mittlere Punkt des zulässigen Servobereichs definiert. Die Kalibrierung für Servos kann entweder in WriteInstinct.ino oder Nybble.ino durchgeführt werden. Ich empfehle, dies mit WriteInstinct.ino zu tun falls etwas mit den Konstanten nicht stimmt.
Es MÜSSEN alle Servos und der Akku für eine ordnungsgemäße Kalibrierung eingesteckt sein. Gebe dann auf dem seriellen Monitor 'c' ein, um in den Kalibrierungsmodus zu gelangen. Die Servos sollten sich in unmerklichen Zeitabständen nacheinander drehen und dann anhalten. Abhängig von ihrer anfänglichen Ausrichtung können einige Servos größere Winkel zurücklegen, bis sie in der Mitte zum Stillstand kommen. Man hört auch ein Geräusch vom Getriebe der Servos. Hier sieht man die Kalibrierungstabelle:
Die erste Reihe ist der Gelenk-Index, die zweite Reihe der Kalibrierungs-Offset:
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Offset | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
Die Anfangswerte sind "-1" oder "0" und sollten durch die Kalibrierung verändert werden.
Die Servos verwenden Potentiometer in Rückkopplungsschleife zur Positionsregelung. Wenn sie in statischer Position gehalten werden, neigen sie dazu, um den Zielwinkel zu schwingen. Nach einiger Zeit ensteht eine Parkinson ähnliche Schwingung. Bei kontinuierlicher Bewegung wird sie sich kaum auswirken. Bessere Servos ohne diese Probleme könnten das 10-fache kosten, so dass der Austausch eines ausgefallenen Servos die kostengünstigere Lösung ist.
Nach der Eingabe von 'c', bei der alle Servos auf ihren Nullwinkel gedreht sind, werden nun Kopf, Schwanz und Beine, die im vorherigen Abschnitt vorbereitet wurden, am Körper befestigt. Diese stehen in der Regel senkrecht zum verbundenen Körperrahmen. Vermeide es, die Servowelle während des Vorgangs zu drehen.
Die drehung der Gliedmaßen gegen den Uhrzeigersinn aus ihrem Nullzustand heraus ist positiv (wie bei den Polarkoordinaten). Die einzige Ausnahme ist der Neigungswinkel des Kopfes. Es ist einfacher zu sagen: Kopf nach oben, während er sich aus der Drehung im Uhrzeigersinn ergibt.
Wenn wir uns die Servowelle genauer ansehen, sehen wir, dass diese eine bestimmte Anzahl von Zähnen hat. Das ist für die Befestigung der Servoarme und um ein gleiten in Drehrichtung zu vermeiden. In unserer Beispiel Servo sind die Zahnräder um 360 Grad in 20 Sektoren unterteilt, von denen jeder 18 Grad einnimmt. Das bedeutet, dass wir nicht immer eine exakt senkrechte Installation erhalten können. Versuche, sie möglichst nahe an ihren Nullzustand zu bringen. Benutze Schraube A, um die Glieder an die Servos zu schrauben.
Der Befehl für die Kalibrierung (siehe Serielles kommunikations Protokoll für NyBoard) ist als cIndex Offset
formatiert. Beachte, dass zwischen Index und Offset ein Leerzeichen ist.
Zum Beispiel bedeutet c8 6
, dem 8. Servo einen Versatz von 6 Grad zu geben. Finde den besten Offset, der die Gliedmaße in den Nullzustand bringt.
Ist der absolute Wert des Offsets größer als 9, wurde das Körperteil nicht perfekt am Nullpunkt angebracht. Dies führt zu einer verringerung des zulässigen Bereichs eines Servos auf beiden Seiten. Nehme das Körperteil ab und drehe es um einen Zahn. Dies führt zu einem entgegengesetzten, aber kleineren Versatz.
Wenn z.B. -13 als Kalibrierwert verwendet wurde, nehme das Gliedmaß ab, drehe dieses entgegengesetzt um einen Zahn und setze sie wieder ein. Der neue Kalibrierwert sollte dann etwa 5 betragen, d.h. sie summieren sich auf 18. Vermeide es, das Servo während dieser justierung zu drehen.
Denke nach der Kalibrierung daran, 's' einzugeben, um die Offsets zu speichern. Andernfalls werde diese beim Verlassen des Kalibrierungszustandes nicht gespeichert. Man sollte jedes Mal speichern, wenn ein Servo kalibriert ist.
Wenn man etwas beobachtet, ändert sich dies aus verschiedenen Perspektiven. Deshalb sollten wir bei der Längenmessung immer direkt über dem Lineal nachsehen.
Es ist besonders wichtig, dass bei der Kalibrierung von Nybble eine parallele Perspektive beibehalten wird. Verwende den 'L'-förmigen Gelenksteller als Parallelreferenz, um Ablesefehler zu vermeiden. Richte die Spitzen des Abstimmgerätes auf die Mitte der Schrauben in den Schulter- und Kniegelenken und auf das kleine Loch an der Fußspitze aus. Schaue entlang der Koaxialachse der Zentren. Kalibriere diese für jedes Bein. Zuerst die Schulterservos (8-11) und dann die Knieservos (12-15). Verwende bei der Kalibrierung des Knies die passenden Dreiecksfenster sowohl am Abstimmgerät als auch am Schaft, um eine parallele Ausrichtung zu gewährleisten.
Gebe nach der Kalibrierung 'd' oder 'kbalance' ein, um die Kalibrierung zu validieren. Dies führt dazu, dass Nybble seine Gliedmaßen zwischen Ruhe und Stehen Zustand symmetrisch bewegt.
Versuche zu verstehen, wie Nybble auch beim gehen das Gleichgewicht hält. Wenn Nybble mit neuen Komponenten ausgestattet wird, versuche das Gewicht symmetrisch auf die Wirbelsäule zu verteilen. Möglicherweise muss der Akkuhalter auch hin- und her geschoben werden, um die beste Stelle für das Gleichgewicht zu finden.
"Sie können den Wind nicht lenken, aber Sie können Ihre Segel justieren." ⛵️
Probiere die folgenden Befehle im seriellen Monitor aus:
“ksit”
“m0 30”
“m0 -30”
“kbalance”
“ktr”
“ktrL”
“d”
Das Anführungszeichen zeigt nur an, dass es sich um Zeichenketten handelt. Bei der Eingabe auf dem seriellen Monitor dürfen keine Anführungszeichen verwendet werden.
Nur die Position der Knöpfe ist von Bedeutung, wobei die Symbole helfen können, sich an die Funktionalitäten zu erinnern. Ich werde positionsbezogene Symbole definieren, die sich auf diese Tasten beziehen.
Ich verwende Abkürzungen für die wichtigsten Definitionen, um die SRAM-Nutzung zu reduzieren. Aufgrund der begrenzten Tasten einer physischen Fernbedienung verändere ich die Definitionen immer aus Spaß.
Die folgende Abbildung ist nur eine Illustration. Überprüfe die Funktion String translateIR(){...} in Nybble.ino auf die tatsächlich gültigen Tastendefinitionen. Diese können auch angepasst werden.
Taste 1 schaltet die Servos ab und schickt Nybble in den Schlaf. Es ist immer sicher, darauf zu drücken, wenn Nybble etwas AWWARD macht. Ich meine es ernst. Es gibt immer noch einige Geister im System, die ich nicht ganz verstehe.
Taste 2 ist die neutrale Stehposition. Nybble kann an der Seite geschoben werden, oder man lässt ihn aufstehen, um Hinterbeine und Schwanz zu bewegen. Seine Balancierfähigkeit kann auf einem schwankenden Brett getestet werden. Tatsächlich wird das Balancieren in den meisten Haltungen und Gängen aktiviert.
Hebe Nybble in der Mitte der Wirbelsäule an, so dass sich alle Beine frei in der Luft bewegen können. Klicke auf alle Tasten der IR-Fernbedienung, um zu sehen, was sie bewirken. Lege Nybble dann auf einen breiten, flachen Tisch und versuche, diese Tasten erneut. Unterschiedliche Oberflächen haben unterschiedliche Reibung und beeinflussen die Laufleistung. Der Teppich wird für Nybbles kurze Beine zu buschig sein. Über diese Art von schwierigem Gelände kann er nur krabbeln (Befehl kcr).
Man kann den Akkupack nach unten ziehen und entlang der längsseite des Bauches verschieben. Dadurch wird der Schwerpunkt eingestellt, was für die Gehleistung sehr wichtig ist. Sonst kann es passieren, dass er immer wieder umfällt.
Wenn Nybble geht, kann man ihn einen kleinen Abhang (<10 Grad) hoch- und runterklettern lassen.
Was immer Nybble auch tut, man kann ihn anheben und er wird aufhören sich zu bewegen. Wie eine Katze, die am Nacken gepackt wird.
Wenn Nybble nach dem Ausführen von Nybble.ino ständig piept, und auf dem seriellen Monitor Zahlen (etwa 500) angezeigt werden, wurde der Unterspannungs-Alarm ausgelöst. Man muss das NyBoard mit zwei 3,7-V-Li-ion/Li-Poly-Akkus betreiben, um den Schwellenwert zu übersteigen.
"FIFO-Überlauf! Using last reading!" im seriellen Monitor ist eine algorithmische Lösung für die originale MPU6050-Bibliothek. Es handelt sich nicht um einen Fehler.
Die Servos sind für den Antrieb über Innenzahnräder ausgelegt. Die Servos sollten nicht zu schnell von Hand gedreht werden.
Lasst Nybble nicht zu lange laufen. Das wird die Elektronik überhitzen und die Lebensdauer der Servos verkürzen. Es ist möglich, das NyBoard V0_1 so umzukonfigurieren, dass Nybble länger laufen kann.
Manchmal kann das Programm aufgrund von Spannungsschwankungen stoppen. Prüfen Sie, ob der Akku schwach wird (< 3,5V pro Stück oder <7,0V in Reihe). Drücken Sie den Reset-Knopf auf dem NyBoard, um das Programm neu zu starten.
Nybble hat Akrophobie! Wenn Sie ihn anheben und über einen gewissen Grad drehen, wird seine aktuelle Bewegung unterbrochen. Drehen Sie Nybble nicht um, um ihn zu erschrecken!
Seid so freundlich, als würdet ihr mit einem echten Kätzchen spielen. (^=◕ᴥ◕=^)
"Gib einer Katze einen Fisch und du fütterst sie einen Tag lang. Bringt man einer Katze Fischen bei, füttert man sie ein Leben lang." 🎣
Ein Frame mit Gelenkwinkeln definiert eine statische Haltung, während eine Reihe von Frames eine periodische Bewegung, in der Regel eine Gangart, definiert.
Das EEPROM hat begrenzte (1.000.000) Schreibzyklen. Daher will ich die Schreiboperationen darauf minimieren.
Es gibt zwei Arten von Fähigkeiten: Instinkt und Newbility. Die Adressen von beiden werden als Nachschlagetabelle in das eingebaute EEPROM(1KB) geschrieben, die eigentlichen Daten werden an verschiedenen Speicherplätzen gespeichert:
I2C EEPROM (8KB) speichert Instinkte.
Die Instinkte sind bereits verfeinerte/fixierte Fähigkeiten. Man kann sie mit dem "Muskelgedächtnis" vergleichen. Multiple Instinkte werden nur einmal mit WriteInstinct.ino linear in das I2C EEPROM geschrieben. Ihre Adressen werden während der Laufzeit von WriteInstinct.ino generiert und in der Nachschlagetabelle im Onboard-EEPROM gespeichert.
PROGMEM (das den 32KB-Flash mit dem Sketch teilt) speichert Newbility.
Newbility ist eine neue experimentelle Fähigkeit, die viele Tests erfordert. Sie wird weder in das I2C noch in das Onboard-EEPROM geschrieben, sondern in den Flash-Speicher im Format von PROGMEM. Es muss als ein Teil des Sketch von Arduino hochgeladen werden. Seine Adresse wird während der Laufzeit des Codes zugewiesen, obwohl sich der Wert selten ändert, wenn die Gesamtzahl der Fähigkeiten (einschließlich aller Instinkte und Newbility) unverändert bleibt.
define WalkingDOF 8
Bedeutet, dass die Anzahl der DoF (Grad der Freiheit) für das gehen auf Nybble 8 beträgt.
define NUM_SKILLS 6
Die Gesamtzahl der Fertigkeiten 6 beträgt. Anzahl und Listeneinträge sollten übereinstimmen.const char* skillNameWithType[]
.
define I2C_EEPROM
Bedeutet, dass es ein I2C EEPROM auf dem NyBoard gibt, um Instinkte zu speichern.
Wer eine eigene Platine baut, die kein I2C hat, sollte diese Zeile auskommentieren. Dann werden beide Arten von Fähigkeiten als PROGMEM im Flash gespeichert. Dadurch wird der verfügbare Flash-Speicherplatz für Funktionscodes reduziert. Wenn es zu viele Fähigkeiten gibt, kann es sogar die Größenbegrenzung für das Hochladen des Sketches überschreiten.
Betrachtet die folgenden beiden Fähigkeiten:
Sie werden formatiert als:
Eine Körperhaltung hat nur einen Frame, und ein Gang hat mehr als einen Frame.
Sie müssen WriteConst.ino hochladen, um die Fähigkeiten zum ersten Mal in das EEPROM zu schreiben. Die folgenden Informationen werden verwendet:
Man beachte das Suffix I oder N in den Namensketten der Fähigkeiten. Sie teilen dem Programm mit, wo die Skill-Daten gespeichert werden sollen und wann ihre Adressen zugeordnet werden.
Wenn es sich bei dem hochgeladenen Sketch um den Hauptsketch Nybble.ino handelt und Sie ein NyBoard mit I2C-EEPROM verwenden, benötigt das Programm später nur den Verweis auf die Newbility-Liste
const char* progmemPointer[] = {stair, zero};
um das volle können der vordefinierten Fähigkeiten zu extrahieren.
Es gibt bereits eine Fähigkeit Namens "zeroN" in Instinct.h. Es ist eine Haltung im Null-Zustand, die auf eine neue Definition wartet.
Zuerst kann der Befehl mIndex Offset
verwendet werden, um einzelne Gelenke an die Zielposition zu bewegen, anschließend können die Gelenkwinkel ( Fettschrift) im Feld auf einmal ersetzt werden:
Da es als Newbility deklariert ist und nicht in das I2C EEPROM geschrieben werden muss, kann man Nybble.ino jedes Mal hochladen, wenn das Arry verändert wurde (ohne WriteInstinct.ino hochzuladen). Man kann die neue Haltung auslösen, indem 7 auf der IR-Fernbedienung gedrückt wird oder gibt kzero
in den seriellen Monitor ein.
Sie können diese Fähigkeit umbenennen, aber nicht vergessen, die Tastaturbelegung der IR-Fernbedienung zu aktualisieren.
In Instinct.h sind weitere Fähigkeiten versteckt. Sie können vom seriellen Monitor aus mit dem Befehl 'k' aufgerufen werden. Zum Beispiel wird kcd1 Nybble in die Stellung "cd1" bringen, was "check down" bedeutet.
Außerdem können kurze Programme geschrieben werden, um mehrere Fähigkeiten nacheinander auszuführen, wie das "Liegestütz"-Verhalten in Nybble.ino. Wenn man beispielsweise die Körperhaltung "cd1" und "cd2" als Schleifenfolge verbindet, kann man Nybble dazu bringen, sich nach vorne zu lehnen, von links nach rechts und dann von rechts nach links zu schauen.
Bislang wurde Nybble mit der Infrarot-Fernbedienung gesteuert. Sie treffen Entscheidungen für Nybbles Verhalten.
Nybble kann mit dem Computer oder dem Smartphone verbunden werden, um Anweisungen automatisch zu senden. Nybble wird sein bestes geben, um diese Anweisungen zu befolgen.
Durch das hinzufügen einiger Sensoren (z.B. eines Berührungssensors) oder Kommunikationsmoduls (z.B. eines Sprachsteuerungsmodul) kann Nybble neue Wahrnehmungs- und Entscheidungsfähigkeiten erhalten. Sie können diese automatischen Fähigkeiten zusammenfassen und dafür sorgen, dass Nybble schließlich von alleine lebt!
"Lasst die Katze aus dem Sack." 🧞♂️
Das Steuerungssystem hinter Nybble ist OpenCat, das ich schon seit einiger Zeit entwickel. Sie können weitere Geschichten aus meinem Beiträgen auf Hackster.io lesen.
Es ist im Moment zu viel Arbeit 🤷🏻♂️ aber Sie können gerne mit mir im Forum oder per E-Mail darüber diskutieren. Das Gute ist, dass ich den Code mit zukünftigen OpenCat-Modellen und sogar mit Ihren eigenen DIY Robotern kompatibel halte! Hoffentlich wird die Dokumentation während des Prozesses vervollständigt.
"Schneller! Schlauer! Niedlicher!" 🦾
Das schreibst 👉 DU!
Teile dein Wissen und deine Kreativität mit der Gemeinschaft unter https://www.petoi.com/forum.