ArduPilot für Anfänger. Installieren und konfigurieren Sie auf BeagleBone Blue

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 . Dies ist ein hochspezialisierter Serviceroboter. Daher planen wir, gleichzeitig einen einzigen Software- und Hardwarekomplex zu entwickeln, der in Zukunft als Grundlage für andere Serviceroboter und UGV verwendet werden könnte .



Im letzten Beitrag haben wir beschrieben, warum wir mit dieser Software aufgehört haben. Bei der Einrichtung unseres Projekts haben wir die Informationen aus dem Artikel verwendet . Eigentlich präsentieren wir hier die Übersetzung dieser Kurzanleitung, vielleicht ist sie für jemanden nützlich und hilft Ihnen bei der Herstellung Ihres ersten oder nächsten Roboters.

Bevor ich anfange, möchte ich betonen, dass es sich lohnt, BeagleBone Blue zu verwenden (es ist immer noch blau). In der Regel werden einige Peripheriegeräte im Zusammenhang mit der Navigation angeschlossen, die ohne ausreichende Stromversorgung nicht ordnungsgemäß funktionieren.

Teil 1. Vorbereiten des BeagleBone


Gehen Sie zu https://rcn-ee.net/rootfs/bb.org/testing/ und wählen Sie das Verzeichnis mit dem neuesten Datum aus. Öffnen Sie dann das Unterverzeichnis der Stretch-Konsole . Hier sehen Sie mehrere Dateien. Laden Sie eine Datei mit dem Namen "Bone-Debian-VV-Konsole-Armhf-20YY-MM-DD-1gb.img.xz" herunter . Dies ist eine minimale Debian-Distribution, die nur das Wesentliche enthält. Eine Alternative ist das IoT-Image (IoT = Internet of Things), das mit zusätzlicher Software geliefert wird und die Arbeit komfortabler macht, wenn Sie Linux noch nicht kennen. Es ist auf derselben Website verfügbar.

Wir verwenden: https://rcn-ee.net/rootfs/bb.org/testing/2018-10-07/stretch-console/bone-debian-9.5-console-armhf-2018-10-07-1gb.img .xz .

Als nächstes müssen Sie das Bild auf der microSD-Karte flashen. Unabhängig davon, ob Sie Linux oder Windows verwenden, empfehle ich dringend ein Programm namens Etcher für diese Aufgabe ( https://etcher.io/ ).

Jetzt können Sie BeagleBone Blue von der microSD-Karte herunterladen. Dies würde den Rahmen dieses Dokuments sprengen, um alle Interaktionsmethoden detailliert zu beschreiben. Dies wird jedoch häufig durch eine Verbindung über ein Micro-USB-Kabel oder über SSH (an 'debian@192.168.7.2', Passwort 'temppwd') oder über einen COM-Port ( Debian-Benutzer ', Passwort' temppwd) in ein Programm wie minicom oder PuTTY. Diese Verbindung zur Linux-Konsole über den COM-Port. UART1 bei BBB-Builds ist immer an die Konsole gebunden, zuerst U-Boot und dann Linux. Weitere Informationen finden Sie hier: https://beagleboard.org/blue

BeagleBone-Treiber werden mit Windows 10 geliefert. Unter Linux wird BBB als universeller USB-COM-Anschluss möglicherweise nicht verwendet. Wenn Sie Probleme haben, versuchen Sie:

sudo -s cat >/etc/udev/rules.d/73-beaglebone.rules <<EOF ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", DRIVER=="", RUN+="/sbin/modprobe -b ftdi_sio" ACTION=="add", SUBSYSTEM=="drivers", ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", ATTR{new_id}="0403 a6d0" ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone", ATTRS{bInterfaceNumber}=="00", SYMLINK+="beaglebone-jtag" ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone", ATTRS{bInterfaceNumber}=="01", SYMLINK+="beaglebone-serial" EOF udevadm control --reload-rules exit 

Ich hoffe, Sie sind jetzt in der Befehlszeile angemeldet. Wir beginnen damit, dass der Debian-Benutzer sudo ausführen kann, ohne jedes (nachfolgende) Mal ein Passwort eingeben zu müssen:

 echo "debian ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/debian >/dev/null 

Die nächste Aufgabe besteht darin, die Software über eine kostengünstige Internetverbindung zu aktualisieren und zu installieren. Daher ist es an der Zeit, connman für den Wi-Fi-Zugang einzurichten. Ich mache das, weil es die Arbeit in Zukunft erleichtern wird. Notieren Sie sich zunächst die SSID und das WLAN-Passwort Ihres Routers. Geben Sie dann Folgendes ein:

  sudo -s connmanctl services | grep '<your SSID>' | grep -Po 'wifi_[^ ]+' 

Die Antwort sieht ungefähr so ​​aus: 'wifi_38d279e099a8_4254487562142d4355434b_managed_psk'. Wenn Sie nichts sehen, versuchen Sie es erneut - Sie haben wahrscheinlich einen Tippfehler gemacht.

Mit dieser Netzwerk-ID geben wir die Datei nun zeilenweise direkt über die Tastatur (stdin) mit cat ein:

  cat >/var/lib/connman/wifi.config [service_<your hash>] Type = wifi Security = wpa2 Name = <your SSID> Passphrase = <your WiFi password> 

Wichtig! Drücken Sie vor Strg + C unbedingt die Eingabetaste, da sonst die gesamte aktuelle Zeile verloren geht.
Drücken Sie zum Beenden Strg-C und geben Sie Folgendes ein: exit

Die sichtbare grüne LED leuchtet auf, was bedeutet, dass WLAN aktiviert ist. BBBlue ist mit dem Router verbunden und seine IP-Adresse in Ihrem Wi-Fi-Netzwerk kann wie folgt ermittelt werden:

 ip addr show wlan0 

Wenn Sie BBBlue aus irgendeinem Grund nicht direkt anfordern können, verwenden Sie andere Dienstprogramme wie nmap (sudo nmap 192.168.0.0/24) oder melden Sie sich bei Ihrem Router an und suchen Sie dort auf andere Weise nach der IP-Adresse.

Versuchen Sie nun, über die Wi-Fi-IP-Adresse eine Verbindung über SSH herzustellen. Denken Sie daran, dass 192.168.7.2 auch funktioniert.

Wenn Sie WiFi nicht für Connman verwenden können oder Connman einfach nicht verwenden möchten, können Sie die folgende Methode verwenden. Geben Sie zunächst Folgendes ein: sudo systemctl disable connman. Bearbeiten Sie dann mit Ihrer SSID und Ihrem WLAN-Passwort / etc / network / interfaces

 # The loopback network interface. auto lo iface lo inet loopback # WiFi w/ onboard device (dynamic IP). auto wlan0 iface wlan0 inet dhcp wpa-ssid "<your SSID>" wpa-psk "<your WiFi password>" dns-nameservers 8.8.8.8 1.1.1.1 # Ethernet/RNDIS gadget (g_ether). # Used by: /opt/scripts/boot/autoconfigure_usb0.sh iface usb0 inet static address 192.168.7.2 netmask 255.255.255.252 network 192.168.7.0 gateway 192.168.7.1 

Laden Sie nun BBBlue neu mit: sudo reboot

Geben Sie nach dem Anmelden Folgendes ein: sudo ifup wlan0. Die grüne LED sollte aufleuchten.

Wenn Sie möchten, dass der BB eine statische IP hat (z. B. 192.168.0.99), ändern Sie den Abschnitt "# WiFi mit integriertem Gerät (dynamische IP)". Zu lesender Abschnitt / etc / network / interfaces:

 # WiFi w/ onboard device (static IP). auto wlan0 iface wlan0 inet static wpa-ssid "<your SSID>" wpa-psk "<your WiFi password>" address 192.168.0.99 # <--- The desired static IP address of the BBBlue. netmask 255.255.255.0 gateway 192.168.0.1 # <--- The address of your router. dns-nameservers 8.8.8.8 1.1.1.1 

Aktualisieren und Installieren aller erforderlichen Support-Programme:

 sudo apt-get -y update sudo apt-get -y dist-upgrade sudo apt-get install -y cpufrequtils git 

Skripte aktualisieren: cd / opt / scripts & & git pull

Der Echtzeit-Kernel enthält derzeit Fehler! Verwenden Sie den folgenden Fix: Geben Sie den Ti-Echtzeitkern 4_4 an. Verwenden Sie nicht 4_14.

 sudo /opt/scripts/tools/update_kernel.sh --ti-rt-channel --lts-4_4 sudo sed -i 's|uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo|#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo|g' /boot/uEnv.txt sudo sed -i 's|#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-4-TI-00A0.dtbo|uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-4-TI-00A0.dtbo|g' /boot/uEnv.txt 

Kopieren Sie abschließend am335x -bone blue.dtb (aus dem bin-Verzeichnis in diesem Repository) nach /boot/dtbs/4.4.113-ti-rt-r149

Installieren Sie das Skript bei der automatischen Ausführung

 sudo sed -i 's/#dtb=/dtb=am335x-boneblue.dtb/g' /boot/uEnv.txt 

Frequenz einstellen

 sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils 

Konfigurieren von bb-wl18xx-wlan0.service

 sudo sed -i 's/RestartSec=5/RestartSec=1/g' /lib/systemd/system/bb-wl18xx-wlan0.service 

Konfigurieren von bb-wl18xx-wlan0.service

 sudo sed -i 's/RestartSec=5/RestartSec=1/g' /lib/systemd/system/bb-wl18xx-wlan0.service 

Bluetooth deaktivieren (optional)

 sudo systemctl disable bb-wl18xx-bluetooth.service 

Erweitern Sie die vorhandene microSD-Kartenpartition (/ dev / mmcblk0p1):

 sudo /opt/scripts/tools/grow_partition.sh 

Jetzt neu starten:

 sudo reboot 

Teil 2. Installieren Sie ArduPilot auf einem BeagleBone


Beim Neustart von BeagleBone müssen einige Textdateien erstellt werden. Verbessern Sie zunächst die Umgebungskonfigurationsdatei / etc / default / ardupilot:
(Hinweis: Geben Sie sudoedit / etc / default / ardupilot ein und geben Sie Ihre eigene Ziel-IP-Adresse ein, z. B. 192.168.0.13.)

 TELEM1="-C /dev/ttyO1" TELEM2="-A udp:<target IP address>:14550" GPS="-B /dev/ttyS2" 

Dies ist eine ziemlich typische Konfiguration.

Dies ist der Startparameter -C, der die serielle Schnittstelle „Telem1“ von ArduPilot (SERIAL1, Standard 57600) für UART1 in BBBlue abbildet. Zum Beispiel habe ich ein 868x RFDesign-Radio an UART1 angeschlossen. Dies ist ein bidirektionaler Datenkanal mit meiner Drohne. Es sendet verschiedene Telemetriedaten an die Basisstation und empfängt RTK-Befehle und Differentialkorrekturen von der Basisstation.

Dies ist der Startparameter -A, der den seriellen Port „Console“ von ArduPilot (SERIAL0, Standard 115200) mit Protokoll, Ziel-IP-Adresse und optionaler Portnummer zuordnet. Auf diese Weise kann ich beispielsweise MAVLink-Daten empfangen, die zu Testzwecken über WLAN eingehen. Sehr nützlich, zumal die Daten sofort an Mission Planner und QGroundControl gesendet werden können.

Bild

Dies ist der Startparameter -B, der die serielle GPS-Schnittstelle von ArduPilot (SERIAL3, Standard 57600) mit Uart2 BBBlue (UART, vage markiert 'GPS' auf der Karte selbst) abbildet. Zum Beispiel habe ich einen U-blox NEO-M8P an UART2 angeschlossen.

Es gibt andere Möglichkeiten - es gibt andere Startoptionen mit vordefinierten Portgeschwindigkeiten und den Ports selbst:

 Switch -A --> "Console", SERIAL0, default 115200 Switch -B --> "GPS", SERIAL3, default 57600 Switch -C --> "Telem1", SERIAL1, default 57600 Switch -D --> "Telem2", SERIAL2, default 38400 Switch -E --> Unnamed, SERIAL4, default 38400 Switch -F --> Unnamed, SERIAL5, default 57600 

Weitere Informationen zu den verschiedenen seriellen Schnittstellen finden Sie in der offiziellen ArduPilot-Dokumentation: http://ardupilot.org/plane/docs/parameters.html?highlight=parameters

Als Nächstes erstellen wir die ArduPilot systemd-Dienstdateien, eine für den ArduCopter, /lib/systemd/system/arducopter.service:

 [Unit] Description=ArduCopter Service After=networking.service StartLimitIntervalSec=0 Conflicts=arduplane.service ardurover.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/arducopter $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target 

Eine für ArduPlane, /lib/systemd/system/arduplane.service:

 [Unit] Description=ArduPlane Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service ardurover.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/arduplane $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target 

Eine für ArduRover, /lib/systemd/system/ardurover.service:

 [Unit] Description=ArduRover Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service arduplane.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/ardurover $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target 

Wie wäre es auch mit AntennaTracker? Erstellen Sie /lib/systemd/system/antennatracker.service:

 [Unit] Description=AntennaTracker Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service arduplane.service ardurover.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/antennatracker $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target 

Gehen wir zum sudo-Ordner mkdir -p / usr / bin / ardupilot

Erstellen Sie eine Eisenkonfigurationsdatei für ArduPilot, / usr / bin / ardupilot / aphw, die vor ausführbaren Dateien ausgeführt wird.

 #!/bin/bash # aphw # ArduPilot hardware configuration. /bin/echo 80 >/sys/class/gpio/export /bin/echo out >/sys/class/gpio/gpio80/direction /bin/echo 1 >/sys/class/gpio/gpio80/value /bin/echo pruecapin_pu >/sys/devices/platform/ocp/ocp:P8_15_pinmux/state 

Die Zeilen 5 bis 7 enthalten BBBlue + 5 V Servospannung, d. H. Wenn Sie Servos verwenden. Wird für ESC nicht benötigt.

Zeile 8 enthält die PRU.

Verwenden Sie sudo chmod 0755 / usr / bin / ardupilot / aphw, um Berechtigungen für diese Datei festzulegen.

Fast passiert! Jetzt sollten Sie die neuesten ausführbaren Dateien für ArduCopter, ArduPlane usw. erhalten, die speziell für die Arm BBBlue-Architektur erstellt wurden, und diese im Verzeichnis / usr / bin / ardupilot ablegen. Mirko Denecke hat sie hier auf seiner Website hochgeladen: http://bbbmini.org/download/blue/

Kopieren Sie in dieses Repository: https://github.com/imfatant/test/blob/master/bin/

Vergessen Sie nicht, die Rechte festzulegen: sudo chmod 0755 / usr / bin / ardupilot / a *

Wenn Sie feststellen, dass Sie aus dem Quellcode kompilieren müssen, haben Sie keine Angst - es ist nicht so schwierig. Dies bedeutet außerdem, dass Sie Ihre eigene ArduPilot-Software erstellen können.

Das Sammeln auf dem BBBlue selbst wird zu lange dauern. Patrick Poirier erklärt auf seiner Website den Prozess für BBBMINI (basierend auf dem schwarzen BeagleBone). Hier ist die BBBlue-spezifische Prozedur, vorausgesetzt, Sie haben alle bisherigen Schritte ausgeführt und befinden sich im Verzeichnis / home / debian:

 sudo apt-get install g++ make pkg-config python python-dev python-lxml python-pip sudo pip install future git clone https://github.com/ArduPilot/ardupilot cd ardupilot git checkout Copter-3.6 # <-- For ArduCopter. git submodule update --init --recursive ./waf configure --board=blue # <-- BeagleBone Blue. ./waf sudo cp ./build/blue/bin/a* /usr/bin/ardupilot 

Patrick bietet auch Anweisungen zum Cross-Kompilieren auf einem relativ leistungsstarken x64-Desktop-PC in Ubuntu, der viel, viel schneller ist.

Abhängig davon, welche Softwareoption Sie benötigen
sudo systemctl enable arducopter.service
oder
sudo systemctl enable arduplane.service
oder
sudo systemctl enable ardurover.service
oder
sudo systemctl enable antennatracker.service

Nach dem Neustart sollte Ihr ArduPilot automatisch gestartet werden. Sie sehen eine blinkende rote LED!

Sie können systemctl auschecken ( https://www.freedesktop.org/software/systemd/man/systemctl.html ). Einige nützliche Beispielbefehle:

 sudo systemctl disable ... sudo systemctl start ... sudo systemctl stop ... 

Teil 3. Peripheriegeräte anschließen


Bild

Die grundlegende Mindestkonfiguration umfasst wahrscheinlich:

  • R / C-Empfänger.
  • GPS-Empfänger (mit oder ohne integriertem Kompass).
  • Ein Funkmodem für einen bidirektionalen Datenkanal, insbesondere über große Entfernungen.
  • (Das integrierte WiFi BBBlue eignet sich hervorragend zum Debuggen und Testen aus nächster Nähe, wenn 2,4 GHz verfügbar sind. Für etwas Interessanteres wird jedoch ein dedizierter bidirektionaler Datenkanal empfohlen. Beachten Sie auch den Typ und die Platzierung der Antennen, die alle diese Elemente verwenden. )

Ein paar Worte zu den Anschlüssen, Kabeln und Werkzeugen, die Sie benötigen. Ich werde einige Empfehlungen geben, andernfalls können Sie als Anfänger viel Zeit, Mühe und Geld investieren. Der am häufigsten verwendete Steckertyp ist JST-SH 1,0 mm. Sie müssen mehrere Buchsen in 4 und 6 Positionen und Crimpkontakte kaufen. Dann holen Sie sich ein paar Meter Drähte in verschiedenen Farben.

Zurück zum Anschließen der Peripheriegeräte:



R / C-Empfänger: Kann an jedem + 5V-Kontakt und GND ausgeschaltet werden. Sie müssen lediglich den SBUS-Ausgang, den DSM-Ausgang oder den PPM-Ausgang des Empfängers mit einem der beiden im Diagramm markierten SBUS-Pins verbinden. Die folgenden Empfänger wurden getestet und funktionieren:

FrSky ( https://www.frsky-rc.com/ ): R-XSR, XR4SB, X6R, X8R, R9 Slim und R9 Mini (beide EU LBT 868 MHz- und Universal 915 MHz-Firmwares).

Spektrum ( https://www.spektrumrc.com/ ): AR7700 DSMX mit PPM / SRXL / Remote Rx.

TBS ( http://team-blacksheep.com/ ): 'Full' Crossfire mit Nano Rx (Rx auf SBUS-Modus eingestellt).

Übrigens reden sie viel über den „invertierten SBUS“. Tatsächlich ist SBUS nur ein serielles Datenübertragungsprotokoll, das Futaba erfunden und von FrSky kopiert hat. Es ist verkehrt herum im Vergleich zum "Standard" UART. Glücklicherweise erwartet der Ardupilot Blue dieses invertierte SBUS-Signal, sodass kein Signalinverter erforderlich ist.

GPS-Empfänger: Die meisten Menschen verwenden U-Blox-Empfänger, insbesondere NEO-M8N und NEO-M8P. NEO-M8N ist billig und erschwinglich für chinesische Unternehmen wie HobbyKing, normalerweise in Festplattenform. Praktischerweise enthalten sie den Empfänger selbst, eine sehr kleine Keramik-Patchantenne, und enthalten häufig einen Kompass. Während BBBlue bereits über einen eingebauten Kompass (AKM AK8963) verfügt, kann ArduPilot so konfiguriert werden, dass dieser „externe“ Kompass anstelle seines eigenen verwendet wird, um Interferenzen zu vermeiden.

Eine (viel) teurere Alternative zu NEO-M8N ist NEO-M8P. Dieser Empfänger unterstützt einen Betriebsmodus, der als „RTK“ oder kinematisch in Echtzeit bezeichnet wird und in Echtzeit eine Positioniergenauigkeit von wenigen Zentimetern erreichen kann. Diese Art der Präsentation ist jedoch etwa zehnmal teurer als die NEO-M8N, und dies ohne Basisstation. Später im Handbuch werde ich dem M8P einen speziellen Abschnitt widmen.

I2C ArduPilot-Konfigurationsdatei: /var/APM/{ArduCopter.stg,ArduPlane.stg,APMrover2.stg,AntennaTracker.stg}

 sudo apt-get install i2c-tools sudo i2cdetect -r -y 0 sudo i2cdetect -r -y 1 sudo i2cdetect -r -y 2 

 $ sudo i2cdetect -r -y 2 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- 0c -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 -- 

68 = InvenSense MPU-9250 IMU (an Bord), 0c = AKM AK8963-Kompass (an Bord), 76 = Bosch BMP280-Barometer (an Bord).

 $ sudo i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 

1e = Honeywell HMC5843-Kompass (extern) - häufig in U-blox NEO-M8N-basierte GPS-Module integriert.

Erste Schritte mit der GCS-Software (Ground Control Station)


Laden Sie einen beliebigen Missionsplaner (http://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) für Windows oder QGroundControl (http://qgroundcontrol.com/) für Linux und Windows herunter. Beide Programme stellen eine Verbindung zu den MAVLink-Datenströmen her, die über das Netzwerk (z. B. über den UDP-Port 14550) oder über COM-Ports ankommen.

Optional


Die Ausstattung Ihres Drohnen-basierten BBBLUE mit einem Bluetooth-Lautsprecher kann Spaß machen, vorausgesetzt, Bluetooth-HF-Übertragungen stören keine anderen Systeme. Es gibt eine Menge Informationen zu BlueZ / PulseAudio / ALSA, aber zum Glück kommt es auf etwas ziemlich Einfaches an.

a) Installieren Sie zuerst die erforderliche Software (über die Konsole oder das IoT-Image):

  sudo apt-get install -y bluetooth pulseaudio pulseaudio-module-bluetooth alsa-utils 

b) Bluetooth aktivieren (falls deaktiviert): sudo systemctl enable bb-wl18xx-bluetooth.service

c) Bearbeiten Sie /etc/pulse/default.pa:
  ### Automatically suspend sinks/sources that become idle for too long # load-module module-suspend-on-idle 

d) Neustart: sudo Neustart

e) Schalten Sie nach dem Laden von BBBlue die Bluetooth-Spalte im Verbindungsmodus ein:

  bluetoothctl scan on agent on default-agent pair <Bluetooth speaker's MAC address> # <--- eg AB:58:EC:5C:0C:03 connect <Bluetooth speaker's MAC address> # <--- Sometimes unnecessary. trust <Bluetooth speaker's MAC address> scan off exit 

f) Endlich:

  pulseaudio --start echo "connect <Bluetooth speaker's MAC address>" | bluetoothctl pactl list # <--- Use this to check that your Bluetooth speaker has been picked up by PulseAudio. pacmd set-card-profile 0 a2dp_sink aplay /usr/share/sounds/alsa/Front_Center.wav 

Das ist alles! Übrigens, wenn Sie einen Sprachsynthesizer verwenden, empfehle ich Festival.

Wenn Sie helfen möchten, schreiben Sie mir bitte im LAN oder VK , FB .

Bild habrastorage.org/webt/mt/lh/91/mtlh91x8jag1t-ibt_np3uayuke.jpeg

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

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


All Articles