ROS-Start auf dem selbstausgleichenden EduMIP-Roboter

Einführung


Diese Veröffentlichung enthält Anweisungen zum Installieren und Ausführen des Roboterbetriebssystems (ROS) auf dem mobilen EduMIP-Roboter. EduMiP ist ein selbstausgleichender Roboter, der um einen BeagleBone Black mit einem integrierten Mikroprozessor und Beaglebone Black Robotics Cape herum gebaut wurde und von James Strawson und Professor Thomas Bewley in Abstimmung mit dem Coordinated Robotics Laboratory der UCSD und ihren Mitarbeitern entwickelt wurde. BeagleBone Blue, das kürzlich Mitte 2017 veröffentlicht wurde, kombiniert die Funktionen von BeagleBone Black und Robotics Cape in einem einzigen Board. Professor Bewley verwendet diesen Roboter in seinem MAE144-Kurs - Embedded Control & Robotics, Abteilung für Maschinenbau und Luft- und Raumfahrttechnik, UCSD.
Ich beantworte Fragen in den Kommentaren.

Komponentenliste


Beachten Sie, dass Sie entweder ein Baglebone Blue oder jeweils Beaglebone Black und Robotics Cape benötigen.

  • Beaglebone Blue (BBBL) : Kürzlich Mitte 2017 veröffentlicht, kombiniert die Funktionen von BeagleBone Black und Robotics Cape auf einem Einplatinencomputer.

  • Beaglebone Black (BBB) : Kostengünstige, von der Community unterstützte Plattform für Entwickler und Bastler mit einem AM335x 1 GHz ARM Cortex-Prozessor, 512 MB DDR3-RAM und 4 GB 8-Bit-Emm an Bord.
  • Robotics Cape (BBB-RC) : Beaglebone Black Robotics Cape ist eine E / A-Karte für Beaglebone Black, die mehrere Sensoren und umfassende Hardwareunterstützung bietet, einschließlich der folgenden:

    • Sensoren:

      • 9-Achsen-IMU
      • Barometer
    • E / A:

      • 4 quadratische Encoder
      • 4 H-Brückenmotortreiber
      • 8 Servo / ESC-Ausgänge
      • Standard DSM RC Radio Interface
      • I2C UART ADC SPI GPIO PWM
      • Lithium-Polymer-Batterieladesteuerung

  • EduMIP-Kit : Das Kit besteht aus Gleichstrommotoren, Zahnrädern, Encodern, Rädern, Kunststoffteilen, Drähten und Befestigungselementen.
  • Micro-SD-Karte : Eine Micro-SD-Karte mit einer Größe von mindestens 8 GB.
  • Ubuntu 16.04 LTS-Bild für BeagleBone Black and Blue : j Mit freundlicher Genehmigung von Robert Nelson, Jeff O'Brian hier . Dieses Bild enthält ROS Kinetic mit vorinstalliertem ROS, wie eine Ros Catkin-Workstation mit grundlegenden Ros EduMIP-Paketen mit vorinstallierten. Hier sind zwei Ubuntu-Images. Stellen Sie sicher, dass Sie das richtige Image verwenden:

    • Verwenden Sie dieses Bild für BragleBonbne Blue:

      2018_02_03_beaglebone_blue_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip
    • Verwenden Sie dieses Bild für BeagleBone Black Wireless + Robotics Cape:

      2018_02_03_beaglebone_black_wireless_16p04_Ubuntu_LTS_EduMIP_ROS.img.zip

    Ein 8-GB-Image wird in eine 2,5-GB-Zip-Datei komprimiert. SIE MÜSSEN EINE ZIP-DATEI NICHT AUSPACKEN. Das Programm (Etcher) kann es im laufenden Betrieb entpacken.
  • USB-Stick : Nützlich für Tutorials im Robot Systems Programming-Kurs. Ein gutes, preiswertes Modell ist das Logitech Gamepad F310

Zusammenbau und Test des EduMIP-Kits (Teil der Aufgabe des Programmierkurses für Robotersysteme Nr. 3)


Erstellen und testen Sie EduMIP wie folgt. Sei vorsichtig. Sei sanft.

1. EduMIP-Erstellung : Befolgen Sie die hier bereitgestellten schrittweisen Anweisungen zur EduMIP-Erstellung.

Sehen Sie sich mein Montagevideo auf Russisch an:


2. Einige zusätzliche Hinweise:

  • Zusätzliche Dokumentation finden Sie hier.
  • Wenn Sie BEAGLEBONE BLACK + ROBOTIC CAPE verwenden, MISCHEN SIE POWER + 5V und + 9V NICHT: BBB verfügt über einen Stromanschluss für + 5V. Robotics Cape hat einen identischen Ballel-Stromanschluss für + 9V. Hölle
  • Stecken Sie das + 9V-Netzteil nicht direkt in den + 5V-Anschluss des BBB. Das Ergebnis ist eine tote BBB.
  • Schalten Sie die Stromversorgung aus, wenn Sie den Roboter nicht verwenden: Wenn Sie EduMIP nicht verwenden oder den Akku nicht laden:

    Trennen Sie das 12-V-Ladekabel von EduMIP
    Vor dem Transport des Roboters Trennen Sie die Batterie vom Robotics Cape.
  • Motor- und ENCODER- Steckverbinder NICHT BESCHÄDIGEN: Robotics Cape-Steckverbinder für Encoder und Motoren sind sehr klein.

Konfigurieren von Beaglebone Black / Blue und EduMIP (Teil der ROS # 3-Kursaufgabe)


Konfigurieren Sie Ihr Beaglebone Blue für die Verwendung in EduMIP wie folgt.

1. Überprüfen Sie Ihr BeagleBone Blue / Black-Board: Testen Sie vor dem Zusammenbau von edumip Ihr ​​Beaglebone Blue Board. Debian Jessie ist auf dem internen 4-GB-Flash-Laufwerk installiert.

  1. Folgen Sie den Anweisungen hier . So installieren Sie udev-Regeln auf Ihrem Linux-PC. Verwenden Sie diese Seite nur, um herauszufinden, wie Sie die UDEV-Regeln auf Ihrem LINUX-PC schützen können. Ignorieren Sie alles andere.
  2. Nachdem Sie die entsprechenden udev-Regeln auf Ihrem Linux-Computer installiert haben, wird eine Ethernet-Verbindung zur BBB über die USB-Verbindung über den virtuellen Ethernet-Adapter usb0 hergestellt. Ihr Host-Computer hat die IP-Adresse 192.167.7.1 und BBB die Nummer 192.168.7.2. SSH vom Host-Computer zur BBB "ssh debian@192.168.7.2". Das Standardkennwort für "debian" lautet "temppwd".
  3. Wenn Sie mit BBBL fertig sind und es ausschalten möchten, schalten Sie es nicht einfach aus. Führen Sie den Befehl „sudo poweroff“ aus, um Linux auszuschalten und das Board auszuschalten. Nachdem alle LEDs auf der Platine erlöschen, ist es normal, das USB-Kabel abzuziehen.

2. Installieren und testen Sie das 8-GB-Ubuntu 16.04-LTS-Linux-Image mit ROS- und BBBL / EduMIP-Unterstützung auf Ihrem BBBL : Wir haben ein 8-GB-Ubuntu-Image mit Ros Kinetic- und BBBL-Unterstützung erstellt. Ihr EduMIP-Kit verfügt über eine leere 32-GB- oder 64-GB-Micro-SD-Karte.

  1. Download: Das Ubuntu 16.04-fertige Image für die ARM-Unterstützung für BBBL und ROS. Anweisungen zum Titel „Ubuntu 16.04 LTS-Image für Beaglebone Black and Blue“ finden Sie oben.
  2. Sie müssen das archivierte Bild nicht entpacken.
  3. Etcher herunterladen: Laden Sie Etcher mit etcher.io herunter und installieren Sie es auf Ihrem Computer. -Etcher ist ein Programm zum Schreiben von Disk-Images auf SD-Karten.
  4. Brennen Sie das Disk-Image auf die Micro-SD-Karte.
  5. Setzen Sie die Micro-SD-Karte vorsichtig ein: Setzen Sie die Micro-SD-Karte in den Micro-SD-Kartensteckplatz und das Beaglebone ein. ERSETZEN SIE ES NICHT, ES BIETET NUR EINE GANZE BERÜHRUNG ZUR INSTALLATION.
  6. Laden Sie es herunter! Laden Sie BBBL von einem Micro-SD-Karten-Image herunter, indem Sie es mit einem USB-Kabel an einen Computer anschließen.
    1. Wenn die Micro-SD-Karte ein Boot-Image enthält, bootet BBBL von diesem und nicht von seinem eingebauten Flash-Laufwerk.
    2. SSH auf BBBL ("ssh ubuntu@192.168.7.2" mit dem Passwort "temppwd") und stellen Sie sicher, dass Sie tatsächlich in einem 32-GB-Image arbeiten. Der Befehl df -h sollte mindestens 2 GB freien Speicherplatz anzeigen, und der Befehl htop sollte 1 GB der aktiven Auslagerungsdatei anzeigen.

3. EduMIP-Test : Überprüfen Sie EduMIP, indem Sie sich wie folgt als Ubuntu-Benutzer mit dem Kennwort „temppwd“ anmelden:

  1. Hinweis zu Fehlermeldungen : Die neueste Version der roboticscape-Bibliothek, die auf das von uns verwendete Ubuntu-Image heruntergeladen wird, weist einige PRU-Fehler auf, die beim Aufrufen der roboticscape-Bibliotheken für den Zugriff auf die Hardware die Fehlermeldung "FEHLER: pru-rproc-Treiber fehlt" anzeigen BBBL Wir können diese Warnung ignorieren, sie wird in einer späteren Version behoben. Erwarten Sie eine dieser Warnungen, wenn Sie Programme wie rc_balance, rc_test_encoders, edumip_balance_ros usw. ausführen.

    Hier ist ein Beispiel für diese Fehlermeldung:

    ubuntu@arm:~$ rc_test_imu ERROR: pru-rproc driver missing try 'test_imu -h' to see other options Accel XYZ(m/s^2) | Gyro XYZ (rad/s) | Mag Field XYZ(uT) | Temp (C) 0.23 -3.06 9.72 | 0.0 -0.0 -0.0 | 22.9 -4.1 -54.9 | 37.9 
  2. Encoder-Test : Führen Sie den Befehl rc_test_encoders aus und drehen Sie die Räder ein wenig. Sie sehen E2- und E3-Encoder, die die Änderung der Umdrehungszahl anzeigen.
  3. Motortest: Führen Sie den Befehl „rc_test_motors-D 0.1“ aus. Wenn Sie den EduMIP anheben, sollten sich die beiden Räder in entgegengesetzte Richtungen drehen.
  4. Gyroskopkalibrierung : Legen Sie das EduMIP noch auf den Tisch, führen Sie den Befehl rc_calibrate_gyro aus und befolgen Sie die Anweisungen. Dieses Kalibrierungsprogramm schreibt die Gyroskopkalibrierung in /var/lib/roboticscape/gyro.cal
  5. Gyroskop-Test : Führen Sie den Befehl "rc_test_imu" aus und stellen Sie sicher, dass die Daten "Gyro XYZ (rad / s)" gleich Null (oder fast Null) sind.
  6. Kalibrierung des Magnetometers : Führen Sie den Befehl "rc_calibrate_mag" aus und befolgen Sie die Anweisungen. Sie werden aufgefordert, das EduMIP in der Hand zu halten und es in alle Richtungen zu drehen ("drehen"). Dieses Kalibrierungsprogramm schreibt die Magnetometer-Kalibrierungsdatei /var/lib/roboticscape/mag.cal
  7. Magnetometertest : Führen Sie den Befehl rc_test_imu aus und stellen Sie sicher, dass die Mag Field XYZ (uT) -Daten ungleich Null sind. Die Größe des Erdmagnetfeldvektors in Baltimore und Woods Hole liegt bei etwa 52 uT. Machen Sie sich jedoch keine Sorgen, wenn Ihr Magnetometer etwas ausgeschaltet zu sein scheint.

    Sie können den Breiten-, Längen- und Magnetfeldstärke für Baltimore ermitteln, indem Sie Ihre Postleitzahl auf dieser Webseite eingeben .
  8. EduMIP-Auswuchttest : Führen Sie den Befehl "rc_balance" aus und stellen Sie den Roboter auf. Ihr Roboter muss an Ort und Stelle balancieren.



4. ROS-Test auf BBBL

  1. Überprüfen Sie die .bashrc-Datei. Am Ende sollte die Datei die folgenden Befehle in der folgenden Reihenfolge enthalten:
    Zunächst den Befehl "source /opt/ros/kinetic/setup.bash", um die ROS-Umgebungsvariablen zu konfigurieren.
    Zweitens der Befehl "source ~ / catkin_ws / devel / setup.bash", um den lokalen Catkin-Arbeitsbereich zur ROS-Umgebung hinzuzufügen (dies wird als "Worspace-Overlay" bezeichnet).
  2. Führen Sie den Befehl "source .bashrc" aus, um die ROS-Umgebungsvariablen zu konfigurieren. Überprüfen Sie sie mit dem Befehl printenv / grep ROS.
  3. Stellen Sie sicher, dass Sie roscore und andere ROS-Dienstprogramme ausführen können.
  4. Stellen Sie sicher, dass Sie "catkin_make" im BBBL ROS-Arbeitsbereich ausführen können.
  5. Bild verifiziert

5. Aktualisieren und testen Sie das ROS EduMip-Balance-Programm :

  1. Wenn Sie dies noch nicht getan haben, kalibrieren Sie den EduMIP-Kreisel mit dem Befehl „rc_calibrate_gyro“, während sich der Roboter noch auf dem Tisch befindet.
  2. Melden Sie sich bei EduMIP mit dem Benutzernamen "ubuntu" und dem Passwort "temppwd" an.
  3. WLAN in EduMIP konfigurieren: Konfigurieren Sie Ihr WLAN so, dass Sie ROS-Pakete aus unserem Git-Repository klonen können.
  4. Wenn Sie das vorinstallierte Ubuntu 16.04-Image wie oben beschrieben installiert haben, befinden sich die Pakete "edumip_msgs" und "edumip_ros_balance" bereits im Quellverzeichnis von catkin worskace, dh ~ / catkin_ws / src / edumip_msgs und ~ / catkin_ws / src / edumip_balance_ros. Aktualisieren Sie das Paket edumip_balance_ros mit den Befehlen "cd ~ / catkin_ws / src / edumip_balance_ros" und "git pull", um den neuesten Code für dieses Paket herunterzuladen. Wenn Sie die Fehlermeldung "Fehler: Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben:

    src / edumip_balance_ros.cpp Bitte übernehmen Sie Ihre Änderungen oder speichern Sie sie, bevor Sie sie zusammenführen können. ", löschen Sie dann die störende Datei src / edumip_balance_ros.cpp und" git pull "erneut.
  5. Wenn sich Ihre edumip_msgs und edumip_balance_ros noch nicht im src- Verzeichnis des Edukin-Catkin-Arbeitsbereichs befinden (es sollte ~ / catkin_ws / src sein ), klonen Sie diese beiden ROS-Pakete in ~ / catkin_ws / src ):
    1. Das Paket edumip_msg definiert den benutzerdefinierten Nachrichtentyp edumip_msf / EduMipState für EduMIP. Dieses Paket enthält keinen Quellcode, nur die Definition von Nachrichten und Kommunikation CMakeLists.txt und package.xml. Wenn Ihr Computer auf diese Art von Nachricht zugreifen muss, müssen Sie das Projekt auch auf Ihrem Computer klonen. Dieses Paket ist architekturunabhängig. Dieses Paket kann von git über diese öffentliche URL geklont werden.
    2. Das Paket edumip_balance_ros enthält den C ++ - Knoten ROS.cpp edumip_ros_node, eine Version des ROS-ified-Programms rc_balance. In dem für Sie bereitgestellten Linux-Image sind bereits die Treiber Robotics Cape und ROS installiert. Dieses Paket kann von git über diese öffentliche URL geklont werden.
  6. Erstellen Sie diese beiden Pakete mit dem Befehl catkin_make im Hauptverzeichnis des Catkin-Arbeitsbereichs.
  7. Stellen Sie mit dem folgenden Befehl sicher, dass ROS jetzt über die im Paket edumip_msgs definierten Benutzernachrichten informiert ist: rosmsg show edumip_msgs / EduMipState
  8. Öffnen Sie zwei Remote-SSH-Sitzungen auf EduMIP:

    Zuerst im ersten Shell-Lauf "roslaunch edumip_balance_ros edumip_balance_ros"
    Zweitens sehen Sie in der zweiten Shell die Themen ros und print topic / edumip / state.
    Setzen Sie Ihren Roboter, er muss ausbalancieren.

6. Schalten Sie die BBBL richtig aus : Wenn Sie fertig sind und bereit sind, die BBBL auszuschalten, schalten Sie sie nicht einfach aus. Führen Sie den Befehl „sudo poweroff“ aus, um Linux auszuschalten und die Platine auszuschalten. Nachdem alle LEDs auf der Platine erlöschen, können Sie das USB-Kabel abziehen.

Einige nützliche Linux-Hinweise für BBB und BBBL


  • Die Emacs- und Nano-Editoren sind bereits auf dem für dieses Tutorial bereitgestellten BBB-Linux-Image installiert.
  • Das Linux-Dienstprogramm "find" ist nicht standardmäßig installiert, aber Sie können es mit "sudo apt-get install locate" installieren und die Lokalisierungsdatenbank mit dem Befehl "sudo updatedb" initialisieren (dauert einige Minuten).
  • Der NTP-Zeitserver ist auf dem für diese Lektion bereitgestellten BBB-Linux-Image installiert, wird jedoch nur synchronisiert, wenn die BBB eine Route zum Internet hat, z. B. wenn Ihr WLAN aktiviert ist. Netzwerkverbindung USB zu einem Computer wird standardmäßig nicht an das Internet weitergeleitet. Sie können den Status von ntp mit dem Befehl ntpq-p überprüfen.

Hinweise zum Einrichten von BeagleBone Black (BBB) ​​und Beaglebone Blue (BBBL) mit Ununtu 16.04 und ROS


(Sie werden hier nur als Referenz aufgeführt und sollten keine erforderlichen Schritte sein, um Aufgabe 3 abzuschließen.)

Verbinden Sie Ihren PC über USB mit BBB

  • Folgen Sie den Anweisungen hier.
  • Nachdem Sie die entsprechenden Treiber oder udev-Regeln auf dem Host-Computer installiert haben, wird über die USB-Verbindung über den virtuellen Ethernet-Adapter usb0 eine Ethernet-Verbindung mit der BBB hergestellt. Ihr Host-Computer hat die IP-Adresse 192.167.7.1 und BBB die Nummer 192.168.7.2. SSH vom Host-Computer zur BBB "ssh ubuntu@192.168.7.2". Das Standardkennwort für Ubuntu lautet temppwd.

So stellen Sie eine Ethernet-Verbindung mit DNS und eine Route zum externen Internet her
WiFi (BBBL, BBB Wireless, BBB Classic + USB WiFi Adapter):

  • WiFi im Handumdrehen : Befolgen Sie die Anweisungen für connmanctl, die in den Kommentaren zur Datei / etc / network / interfaces aufgeführt sind. Verwenden Sie zum Lesen von Kommentaren den Befehl cat / etc / network / interfaces.
  • Hinweis : connmanctl unterstützt keine Unternehmensnetzwerke wie Hopkins, aber WPA / WPA2-Netzwerke.
  • Hinweis : Beim Laden ist der BBBL WiFi-Adapter nicht immer korrekt. Wenn in der Ausgabe des Befehls ifconfig nicht "wlan0" angezeigt wird, aktivieren Sie BBBL manuell als wlan0-Schnittstelle mit dem Befehl "ifconfig wlan0 up". Dann sollte wlan0 in der Ausgabe des Befehls ifconfig angezeigt werden.
  • Ifconfig : Verwenden Sie den Befehl ifconfig, um alle konfigurierten Netzwerkschnittstellen (LAN, WiFi, USB usw.) auf Ihrem Computer anzuzeigen.
  • Iwconfig : Verwenden Sie den Befehl "iwconfig", um alle konfigurierten WiFi-Netzwerkschnittstellen auf Ihrem Computer anzuzeigen.
  • Wer bin ich Der einfachste Weg, die IP-Adresse (n) eines Linux-Computers zu ermitteln, besteht darin, sich anzumelden und den Befehl ifconfig zu verwenden.
  • Wifi Groundhog Day! Leider merkt sich BBBL derzeit keine WLAN-Einstellungen.

Die bevorzugte WiFi-Verbindung sollte BBBL entsprechen und Ihr Computer ist mit demselben Wi-Fi-Zugangspunkt verbunden, sodass Sie von Ihrem Computer aus auf BBBL zugreifen können und Ihr BBBL über einen Internetzugang für Git-Repos usw. verfügt.

Sie können auch direkt eine Verbindung zu BBBL herstellen, indem Sie es als Wi-Fi-Zugangspunkt verwenden, indem Sie Ihren Computer mit dem BeagleBone-XXXX-Wi-Fi-Netzwerk verbinden, wobei XXXX für Ihre BBBL einzigartig ist. Das WLAN-Passwort lautet "BeagleBone". Dies ist eine einfache Verbindung, aber weder BBBL noch Ihr Computer haben Internetzugang für Git-Repos usw. Nach dem Herstellen der Verbindung hat Ihr Computer eine IP-Adresse von 192.168.XXX.XXX Die BBBL-IP-Adresse lautet 192.168.XXX.1

Aktualisieren Ihrer BBBL Ubuntu Distribution

Führen Sie auf BBB die Linux-Befehle sudo apt update UND sudo apt dist-upgrade Linux aus

Installieren der Robotics Cape Software auf BBBL

  • Die Unterstützung von Robotics Cape / BBBL ist bereits für das oben beschriebene vorkonfigurierte Ubuntu-Image für BBBL verfügbar. Sie müssen es nicht neu installieren.
  • Binäre Installation unter Ubuntu 16.04 auf ARM: "sudo apt-get install roboticscape"
  • Installation von der Quelle

Sie möchten eine Kopie des Robotics Cape-Quellcodes und des Beispielcodes auf Ihrer BBB installieren. Es ist hier verfügbar. Installieren einer Kopie im Home-Verzeichnis:

"Cd ~"
"Git-Klon github.com/StrawsonDesign/Robotics_Cape_Installer.git "

Jetzt können Sie den Quellcode des Robotik-Kaps anzeigen und den Anweisungen zum Kompilieren und Installieren der Robotik-Kapbibliothek und der Beispielprogramme folgen.

Grundlegende ROS-Pakete für EduMIP installieren

Klonen Sie diese beiden Git-Repos in Ihr Verzeichnis ~ / catkin_ws / src:


CD an ~ / catkin_ws und sammle die "catkin_make" -Pakete.

Um den Knoten edumip_balance_ros auszuführen, benötigt das Programm Root-Rechte. Der einfachste Weg, dies zu tun, besteht darin, die Berechtigungen und den Besitz der kompilierten Binärdatei mithilfe dieser beiden Befehle (in dieser Reihenfolge) zu ändern, nachdem Sie sie kompiliert haben:

  • sudo chown root: root ~ / catkin_ws / devel / lib / edumip_balance_ros
  • sudo chmod u + s ~ / catkin_ws / devel / lib / edumip_balance_ros

Führen Sie den ROS-Knoten edumip_balance_ros " roslaunch edumip_balance_ros edumip_balance_ros.launch " aus. Der Roboter balanciert, empfängt Verdrehungsgeschwindigkeitsnachrichten vom Befehl topic / edumip / cmd und veröffentlicht seinen Status im Thema topic / edumip / state ROS

Wenn Sie die Startdatei edumip_balance_ros.launch nicht im Verzeichnis ~ / catkin_ws / src / edumip_balance_ros / launch finden können, müssen Sie die neueste Version dieses Pakets wie oben beschrieben "git pull" und die Quelle mit "catkin_make" neu kompilieren.

Weitere Informationen zur Verwendung dieser ROS-Backages finden Sie in der Aufgabe der 3. Woche auf dieser Kurswebseite: Zuweisung der Woche 3 zur Programmierung von Robotersystemen

Hinweise zum Starten von EduMIP mit ROS


Warum erhalte ich Berechtigungsfehler, wenn ich edumip_balance_ros ausführe, und wie kann ich das beheben?
Lesen Sie dies, wenn Sie Fehler wie "Kann nicht öffnen:

/ sys / device / platform / ocp / ocp: H18_pinmux / state
Pinmux: Berechtigung verweigert “beim Ausführen von edumip_balance_ros.

Kompilieren Sie beim Kompilieren des edumip_balance_ros-Projekts auf edumip mit catkin_make die ausführbare Datei:

"~ / catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros"
ubuntu @ arm: ~ / catkin_ws $ ls -l devel / lib / edumip_balance_ros /
insgesamt 272
-rwxrwxr-x 1 ubuntu ubuntu 278292 18. Februar 18:48 edumip_balance_ros

Beachten Sie, dass der Eigentümer und die Gruppe der Datei ubuntu: ubuntu sind und ausführbar sind ("-rwxrwxr-x").

Wenn Sie versuchen, diese kürzlich kompilierte Datei auszuführen, werden Berechtigungsfehler angezeigt, wie unten gezeigt:
ubuntu @ arm: ~ / catkin_ws $ roslaunch edumip_balance_ros edumip_balance_ros.launch
... Protokollierung in /home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2845.log
Überprüfen des Protokollverzeichnisses auf Festplattennutzung. Dies kann eine Weile dauern.
Drücken Sie Strg-C, um zu unterbrechen
Überprüfung der Datenträgerverwendung der Protokolldatei abgeschlossen. Die Nutzung beträgt <1 GB.

Roslaunch Server gestartet 192.168.10.102 : 37365 /

ZUSAMMENFASSUNG
========

PARAMETER
* / rosdistro: kinetisch
* / rosversion: 12.1.12

NODES
/.
edumip_balance_ros_node (edumip_balance_ros / edumip_balance_ros)

ROS_MASTER_URI = http: //192.168.10.101: 11311

Prozess [edumip_balance_ros_node-1]: gestartet mit pid [2874]
[INFO] [1518979862.674565427]: Datei /home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp, zusammengestellt am 3. Februar 2018 um 19:38:02 Uhr.
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: H18_pinmux / state
Pinmux: Berechtigung verweigert
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: C18_pinmux / state
Pinmux: Berechtigung verweigert
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: U16_pinmux / state
Pinmux: Berechtigung verweigert
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: D13_pinmux / state
Pinmux: Berechtigung verweigert
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: J15_pinmux / state
Pinmux: Berechtigung verweigert
kann nicht geöffnet werden: / sys / device / platform / ocp / ocp: H17_pinmux / state
Pinmux: Berechtigung verweigert
WARNUNG: Fehlender PINMUX-Treiber
Sie brauchen wahrscheinlich nur einen neueren Kernel
/ Dev / mem kann nicht geöffnet werden
mmap_gpio_adc.c konnte gpio nicht initialisieren
[INFO] [1518979862.806645002]: FEHLER: Kap konnte nicht initialisiert werden.
[edumip_balance_ros_node-1] Prozess ist gestorben [pid 2874, Exit-Code 255, cmd / home / ubuntu / catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros __name: = edumip_balance_ros_node __log: = / home / ubuntu / dd. 14dc-11e8-b293-dc5360d671c6 / edumip_balance_ros_node-1.log].
Protokolldatei: /home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/edumip_balance_ros_node-1*.log
Alle Prozesse auf der Maschine sind beendet, Roslaunch wird beendet
Verarbeitungsmonitor herunterfahren ...
... Prozessor wird heruntergefahren
fertig

Das Problem hierbei ist, dass Ihre ausführbare Datei als Root und nicht als normaler Benutzer ausgeführt werden muss, um auf die BeagleBone-Hardwareregister zugreifen zu können.

Nach dem Kompilieren von edumip_ros_balance können Sie die ausführbaren Berechtigungen des Roots (sudo chown root: root <Dateiname>) ändern und sein Sticky-Bit (sudo chmod u + s <Dateiname>) setzen, indem Sie das folgende Skript ausführen:

"~ / catkin_ws / src / edumip_balance_ros / scripts / edumip_change_perms.sh"

Wenn Sie sich dieses Shell-Skript ansehen, werden Sie feststellen, dass es diese beiden Befehle ausführt:
sudo chown root: root ~ / catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros
sudo chmod u + s ~ / catkin_ws / devel / lib / edumip_balance_ros / edumip_balance_ros

Nach dem Ausführen dieses Skripts (es fragt Sie nach dem sudo-Passwort) werden die Berechtigungen und Gruppen der ausführbaren Datei von ubuntu: ubuntu in root: root geändert und das Sticky-Bit installiert (die Berechtigungen waren zuvor "- rwxrwxr-x" und wurden zu "- rwsrwxr" -x "):
ubuntu @ arm: ~ / catkin_ws $ ls -l devel / lib / edumip_balance_ros /
insgesamt 272
-rwsrwxr-x 1 root root 278292 18. Februar 18:48 edumip_balance_ros

Wenn Sie jetzt edumip_balance_ros ausführen, sollte dies wie folgt funktionieren:

ubuntu @ arm: ~ $ roslaunch edumip_balance_ros edumip_balance_ros.launch
ubuntu @ arm: ~ $ roslaunch edumip_balance_ros edumip_balance_ros.launch
... Protokollierung in /home/ubuntu/.ros/log/a271dd92-14dc-11e8-b293-dc5360d671c6/roslaunch-arm-2099.log
Überprüfen des Protokollverzeichnisses auf Festplattennutzung. Dies kann eine Weile dauern.
Drücken Sie Strg-C, um zu unterbrechen
Überprüfung der Datenträgerverwendung der Protokolldatei abgeschlossen. Die Nutzung beträgt <1 GB.

Roslaunch Server gestartet 192.168.10.102 : 34253 /

ZUSAMMENFASSUNG
========

PARAMETER
* / rosdistro: kinetisch
* / rosversion: 12.1.12

NODES
/.
edumip_balance_ros_node (edumip_balance_ros / edumip_balance_ros)

ROS_MASTER_URI = http: //192.168.10.101: 11311

Prozess [edumip_balance_ros_node-1]: gestartet mit pid [2108]
[INFO] [1518981653.978399507]: Die Datei /home/ubuntu/catkin_ws/src/edumip_balance_ros/src/edumip_balance_ros.cpp wurde am 3. Februar 2018 um 19:38:02 Uhr zusammengestellt.
FEHLER: pru-rproc-Treiber fehlt
[INFO] [1518981654.104574860]: Inner-Loop-Controller D1:

Bestellung: 2
Zeitschritt dt: 0,0100
-4,9450z² + 8,8620z + -3,9670
- 1,0000z² + -1,4810z + 0,4812
[INFO] [1518981654.107474727]:
Außenschleifenregler D2:

Bestellung: 2
Zeitschritt dt: 0,0100
0,1886z² + -0,3721z + 0,1835
- 1,0000z² + -1,8605z + 0,8605
[INFO] [1518981654.573431369]:
Halten Sie Ihren MIP aufrecht, um mit dem Auswuchten zu beginnen

ROS kann mein ROS-Paket nicht finden

Wenn in Ihrer ROS-Umgebung nicht verstanden wird, dass Sie neue Pakete in catkin_ws / src haben, aktualisieren Sie Ihr Rospack-Profil mit dem Befehl rospack profile und aktualisieren Sie den Rosdep-Cache mit dem Befehl rosdep update.

Zusammenstellung und Bindung an Robotics Cape "C" -Bibliotheken

Die Robotics Cape-Bibliothek ist auf dem Ubuntu 16.04-Image vorinstalliert, das unter dem zuvor auf dieser Seite angegebenen Link verfügbar ist. Es wurde mit dem Befehl sudo apt-get install roboticscape installiert.

Die Robotics Cape Library und die zugehörigen Header-Dateien sind bereits auf EduMIP installiert. Link zu den Bibliotheken /usr/lib/libroboticscape.so und zwei Header-Dateien der obersten Ebene rc_usefulincludes.h und roboticscape.h.

Im Projekt edumip_balance_ros erfahren Sie, wie Sie die C-Header-Dateien von Robotics Cape C und die C-Link-Bibliothek mit dem C ++ ROS-Knoten verwenden.

Unter edumip_balance_ros / src / edumip_balance_ros.cpp erfahren Sie, wie Sie C-Header-Dateien in ein C ++ - Programm mit der externen Anweisung "C" aufnehmen.

Unter edumip_balance_ros / CMakeLists.txt erfahren Sie, wie Sie Ihr Programm mit der roboticscape C-Bibliothek verknüpfen.

Edumip_balance_ros-Paket

  • Um das Paket edumip_balance_ros zu kompilieren, müssen Sie auch das Paket edumip_msgs installieren.
  • Das Paket edumip_balance_ros wird nicht auf Ihrem Computer kompiliert, sondern nur zur Kompilierung auf EduMIP.

Horizontale Konfiguration EduMIP

Mehrere Schülerteams verwendeten EduMIP in einer horizontalen Konfiguration mit einem Lenkrad.


Dazu müssen Sie das Projekt „edumip_balance_ros“ durch Ihren eigenen neuen Code zur Steuerung von Radmotoren sowie zum Lesen und Veröffentlichen von Radgebern ersetzen. Und gestern habe ich im Klassenzimmer eines der möglichen Pakete untersucht, Sie können das Differential_drive ROS-Paket (http://wiki.ros.org/differential_drive) verwenden. Um das Paket different_drive zu verwenden, müssen Sie einen neuen C ++ - Knoten für edumip schreiben, der (a) Radcodierer liest und thematisch veröffentlicht und (b) die Themen Motorbefehle und Spannungsbefehle für Radmotoren abonniert.







Serielle Schnittstelle

Um mit Sensoren an einer seriellen Schnittstelle interagieren zu können, z. B. einem in der Klasse vorgestellten USB-Ultraschallsensor, müssen Sie in der Lage sein, über serielle Schnittstellen zu öffnen, zu lesen und zu senden.




Gutes Paket für dieses serielle ROS-Paket . Sie können es "sudo apt-get install ros-kinetic-serial" installieren.

Einfaches Beispiel hier

Eine Kopie von src kann mit dem Befehl git clone github.com/wjwwood/serial.git in den ROS-Arbeitsbereich geklont und mit catkin_make kompiliert werden. Das Beispielverzeichnis enthält komplexere Beispiele für die Verwendung der seriellen Schnittstelle mit dem seriellen Paket.

Beachten Sie, dass dieses Ros-Paket mit dem Namen "serial" kein "rosserial" -Paket ist. Das "serielle" Paket ist eine leichte Allzweckbibliothek zum Lesen und Senden von Daten über serielle Schnittstellen. "Rosserial" ist ein Paket zum Koppeln kleiner Geräte wie Arduino, wenn Knoten wachsen.

Ergänzung durch den Übersetzer:

Ich habe dem Artikel meine Fotos und Videos sowie Fotos von Arbeiten der Schüler hinzugefügt. Im Allgemeinen reicht nur diese Anweisung zum Ausführen aus. Es ist nur wünschenswert, mindestens über minimale Linux-Befehlszeilenerfahrung und ein grundlegendes Verständnis der ROS-Architektur zu verfügen. Skripte des Roboters sind in C geschrieben.

Sie können Fragen in den Kommentaren stellen, die ich lese und beantworte.

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


All Articles