[PYTHON] Versuchen Sie es mit ArUco mit Raspberry Pi

Versuchen Sie es mit ArUco mit Raspberry Pi

Es ist eine etwas alte Technologie, aber Sie können sie an der Selbstpositionsschätzung des Robotersystems erkennen. Ich möchte den AR-Marker ausprobieren Ich habe versucht, ArUco mit dem Raspberry Pi zu erkennen, den ich bekommen habe.

Was ich getan habe

Es sieht so aus, um das Ausführungsergebnis zu sehen. (https://www.youtube.com/watch?v=aepFM_JsxbU) Der Umriss des Markers sowie die ID- und xyz-Achsen werden angezeigt. Weil man auch Pitch Roll Yaw bekommen kann Es kann für verschiedene Zwecke verwendet werden. 2020-05-03-135817_1920x1080_scrot.png

Umgebung ・ RasPi4 (sollte mit RasPi3 funktionieren) ・ USB-Kamera (Logitech) → Raspi-Kamera ist ebenfalls erhältlich.

RasPi-Setup

Zunächst nach folgendem Artikel von "Karaage" einrichten. OpenCV ist für die Erkennung erforderlich. Es war sehr glatt. Ich bin immer dankbar. ・ [Erstellen einer Bilderkennungsumgebung mit tiefem Erlernen von Raspberry Pi 4 von null bis 1 Stunde] (https://karaage.hatenadiary.jp/entry/rpi4-dl-setup)

Installieren Sie zusätzliche Pakete Wie im Artikel erwähnt, habe ich alles einmal eingefügt. ・ [Setup für erweitertes Lernen von Raspberry Pi 4] (https://note.com/npaka/n/n034c8ee6e5cc)

Jetzt bist du bereit.

Verfahren zum Erkennen von AR-Markern

Markergenerierung → Generierung finden Sie unter dem folgenden Link. ・ (Kamerakalibrierung) → Wenn Sie es vorerst verschieben möchten, schalten Sie es aus. ・ Markererkennung ・ Schätzung der AR-Markerhaltung mit Python

Implementierung

・ Sie sollten es durch Kopieren verwenden können.

ARdetect.py



#!/usr/bin/env python
# -*- coding: utf-8 -*

import numpy as np
import cv2
from cv2 import aruco

def main():
    cap = cv2.VideoCapture(1) #Ändern Sie den Wert abhängig von der verwendeten Kamera
    #Markergröße
    marker_length = 0.056 # [m]
    #Auswahl des Marker-Wörterbuchs
    dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

    #camera_matrix = np.load("mtx.npy")
    #distortion_coeff = np.load("dist.npy")
    #Wenn Sie die Kamera kalibriert haben, verwenden Sie die oben genannten Schritte.
    camera_matrix = np.array( [[1.42068235e+03,0.00000000e+00,9.49208512e+02],
    [0.00000000e+00,1.37416685e+03,5.39622051e+02],
    [0.00000000e+00,0.00000000e+00,1.00000000e+00]] )
    distortion_coeff = np.array( [1.69926613e-01,-7.40003491e-01,-7.45655262e-03,-1.79442353e-03, 2.46650225e+00] )

    while True:
        ret, img = cap.read()
        corners, ids, rejectedImgPoints = aruco.detectMarkers(img, dictionary)
        aruco.drawDetectedMarkers(img, corners, ids, (0,255,255))

        if len(corners) > 0:
            #Prozess durch Marker
            for i, corner in enumerate(corners):

                rvec, tvec, _ = aruco.estimatePoseSingleMarkers(corner, marker_length, camera_matrix, distortion_coeff)

                #Entfernen Sie unnötige Achsen
                tvec = np.squeeze(tvec)
                rvec = np.squeeze(rvec)
                #Vom Rotationsvektor in Rodorigues konvertieren
                rvec_matrix = cv2.Rodrigues(rvec)
                rvec_matrix = rvec_matrix[0] #Aus Rodorigues extrahiert
                #Übersetzung des Translationsvektors
                transpose_tvec = tvec[np.newaxis, :].T
                #Synthetik
                proj_matrix = np.hstack((rvec_matrix, transpose_tvec))
                #Umrechnung in Eulerwinkel
                euler_angle = cv2.decomposeProjectionMatrix(proj_matrix)[6] # [deg]

                print("ID : " + str(ids[i]))
 
                #Visualisierung
                draw_pole_length = marker_length/2 #Echte Länge[m]
                aruco.drawAxis(img, camera_matrix, distortion_coeff, rvec, tvec, draw_pole_length)
        
        cv2.imshow('drawDetectedMarkers', img)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()




Marker (zum Testen)

Bitte verwenden Sie es, wenn das Generieren schwierig ist.

1.png

Recommended Posts

Versuchen Sie es mit ArUco mit Raspberry Pi
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Versuchen Sie es mit dem Temperatursensor (LM75B) mit Raspeye.
Erkennen Sie "Helligkeit" mit Python auf Raspberry Pi 3!
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
Ermitteln Sie die Temperatur mit Python auf Raspberry Pi 3!
Pigpio auf Himbeer-Pi
Cython auf Raspberry Pi
Erkennen Sie Magnetschalter mit Python auf Raspberry Pi 3!
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Innenüberwachung mit Raspberry Pi
Versuchen Sie es mit OpenCV unter Windows
Pyenv auf Raspberry Pi eingeführt
Verwenden Sie NeoPixel mit Himbeerkuchen
Installieren Sie OpenCV4 auf Raspberry Pi 3
Installieren Sie TensorFlow 1.15.0 auf Raspberry Pi
Erstellen Sie mithilfe von Poetry eine OpenCV4-Umgebung auf Raspberry Pi
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Testen der Kommunikation mit Raspberry Pi
Versuchen Sie es mit Pillow auf iPython (Teil 1)
USB über Ethernet mit Raspberry pi
Himbeer Pi 4 Centos7 auf Docker installieren
Cross-Compilierung für Raspberry Pi Zero unter Debian-Try unter Verwendung einer gemeinsam genutzten Bibliothek
Installieren Sie ghoto2 auf Raspberry Pi (Hinweis)
Versuchen Sie es mit Pillow auf iPython (Teil 2)
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
Installieren Sie PyCall auf Raspberry PI und versuchen Sie, die GPIO-Bibliothek für Python von Ruby zu verwenden
Probieren Sie L Chika mit Himbeerpi
OpenCV-Installationsverfahren auf Raspberry Pi
Versuchen Sie es mit Pillow auf iPython (Teil 3).
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Ein- / Ausschalten von Raspberry Pi mit Arduino
Erkennen Sie den Schalterstatus mit Raspberry Pi 3
Installieren Sie OpenMedia Vault 5 auf Raspberry Pi 4
Verwenden einer Webkamera mit Raspberry Pi
L Chika mit Himbeer-Pi C #
Erstellen Sie wxPython unter Ubuntu 20.04 auf Himbeer-Pi 4
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Wiegeinstrument mit Himbeer-Pi und hx711 (GUI-Anzeige in Tkinter)
Raspberry Pi "Honwaka Benachrichtigungslampe" Teil 2
Versuchen Sie es mit Bash unter Windows 10 2 (TensorFlow-Installation)
USB-Boot auf Raspberry Pi 4 Model B.
Raspberry Pi "Honwaka Benachrichtigungslampe" Teil 1
Aktivieren Sie die serielle UART + -Kommunikation mit Raspberry Pi
Verwenden Sie OpenJtalk, damit Raspberry Pi Japanisch spricht
Adafruit Python BluefruitLE arbeitet mit Raspeye.
Beschleunigen Sie Deep Learning mit der Rasperry Pi 4-CPU
Stellen Sie den Swap Space unter Ubuntu auf Raspberry Pi ein
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verwenden Sie den Grove-Sensor mit Raspberry Pi
Installieren Sie das 64-Bit-Betriebssystem (Bate) auf Raspberry Pi
Installieren Sie Docker-Compose unter 64-Bit-Raspberry-Pi-Betriebssystem
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Raspberry Pi "Honwaka Benachrichtigungslampe" Teil 3
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Erstellen Sie eine OpenCV-Python-Umgebung auf Raspberry Pi B +
Matrixmultiplikation auf Raspberry Pi GPU (Teil 2)
So installieren Sie NumPy auf Raspeye