Essayez d'utiliser ArUco avec Raspberry Pi

Essayez d'utiliser ArUco avec Raspberry Pi

C'est une technologie un peu ancienne, mais vous pouvez la voir dans l'estimation de l'auto-position du système de robot. Je veux essayer le marqueur AR J'ai essayé de reconnaître ArUco avec le Raspberry Pi que j'ai.

Ce que j'ai fait

Cela ressemble à ceci pour voir le résultat de l'exécution. (https://www.youtube.com/watch?v=aepFM_JsxbU) Le contour du marqueur et les axes ID et xyz sont affichés. Parce que vous pouvez aussi avoir un lacet Il peut être utilisé à diverses fins. 2020-05-03-135817_1920x1080_scrot.png

environnement ・ RasPi4 (Cela devrait fonctionner avec RasPi3) ・ Caméra USB (Logitech) → La caméra Raspi est également disponible.

Configuration RasPi

Tout d'abord, mis en place selon l'article suivant de "Karaage". OpenCV est requis pour la reconnaissance. C'était très fluide. Je suis toujours reconnaissant. ・ [Comment créer un environnement de reconnaissance d'image avec apprentissage en profondeur de Raspberry Pi 4 de zéro à 1 heure] (https://karaage.hatenadiary.jp/entry/rpi4-dl-setup)

Installer des packages supplémentaires Comme mentionné dans l'article, j'ai tout mis en une seule fois. ・ [Configuration pour un apprentissage amélioré de Raspberry Pi 4] (https://note.com/npaka/n/n034c8ee6e5cc)

Vous êtes maintenant prêt.

Procédure de reconnaissance des marqueurs AR

Génération de marqueurs → Voir le lien ci-dessous pour la génération. ・ (Calibrage de l'appareil photo) → Si vous souhaitez le déplacer pour le moment, mettez-le hors tension. ・ Reconnaissance des marqueurs ・ Estimation de la posture du marqueur AR avec python

la mise en oeuvre

・ Vous devriez pouvoir l'utiliser en copiant.

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) #Changer la valeur en fonction de la caméra utilisée
    #Taille du marqueur
    marker_length = 0.056 # [m]
    #Sélection du dictionnaire de marqueurs
    dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

    #camera_matrix = np.load("mtx.npy")
    #distortion_coeff = np.load("dist.npy")
    #Si vous avez calibré la caméra, utilisez ce qui précède.
    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:
            #Traiter par marqueur
            for i, corner in enumerate(corners):

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

                #Supprimer les axes inutiles
                tvec = np.squeeze(tvec)
                rvec = np.squeeze(rvec)
                #Conversion de vecteur de rotation en origines
                rvec_matrix = cv2.Rodrigues(rvec)
                rvec_matrix = rvec_matrix[0] #Extrait de rodorigues
                #Traduction du vecteur translationnel
                transpose_tvec = tvec[np.newaxis, :].T
                #Synthétique
                proj_matrix = np.hstack((rvec_matrix, transpose_tvec))
                #Conversion en angle d'Euler
                euler_angle = cv2.decomposeProjectionMatrix(proj_matrix)[6] # [deg]

                print("ID : " + str(ids[i]))
 
                #Visualisation
                draw_pole_length = marker_length/2 #Longueur réelle[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()




Marqueur (pour tester)

Veuillez l'utiliser lorsqu'il est difficile à générer.

1.png

Recommended Posts

Essayez d'utiliser ArUco avec Raspberry Pi
Essayez d'utiliser le code QR avec Raspberry Pi
Essayez d'utiliser le capteur de température (LM75B) avec Raspeye.
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Détectez la température à l'aide de python sur Raspberry Pi 3!
pigpio sur Raspberry pi
Cython sur Raspberry Pi
Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3!
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Surveillance intérieure à l'aide de Raspberry Pi
Essayez d'utiliser OpenCV sur Windows
Introduction de pyenv sur Raspberry Pi
Utilisez NeoPixel avec la tarte aux framboises
Installez OpenCV4 sur Raspberry Pi 3
Installez TensorFlow 1.15.0 sur Raspberry Pi
Créer un environnement OpenCV4 sur Raspberry Pi à l'aide de Poetry
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Test de la communication UART avec Raspberry Pi
Essayez d'utiliser Pillow sur iPython (partie 1)
USB sur Ethernet avec Raspberry pi
raspberry pi 4 centos7 installer sur docker
Compilation croisée pour Raspberry Pi Zero sur Debian-Try en utilisant une bibliothèque partagée
Installez ghoto2 sur Raspberry Pi (Remarque)
Essayez d'utiliser Pillow sur iPython (partie 2)
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
Accédez aux feuilles de calcul Google en utilisant python avec raspberry pi (pour vous-même)
Installez PyCall sur Raspberry PI et essayez d'utiliser la bibliothèque GPIO pour Python de Ruby
Essayez L Chika avec raspberrypi
Procédure d'installation d'OpenCV sur Raspberry Pi
Essayez d'utiliser Pillow sur iPython (partie 3)
Essayez de déplacer 3 servos avec Raspeye
Allumer / éteindre le Raspberry pi avec Arduino
Détecter l'état du commutateur avec Raspberry Pi 3
Installez OpenMedia Vault 5 sur Raspberry Pi 4
Utiliser une webcam avec Raspberry Pi
L Chika avec Raspberry Pi C #
Construisez wxPython sur Ubuntu 20.04 sur Raspberry Pi 4
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Instrument de pesage utilisant Raspberry Pi et Hx711 (affichage GUI dans Tkinter)
Raspberry Pi "Lampe de notification Honwaka" Partie 2
Essayez d'utiliser Bash sur Windows 10 2 (installation de TensorFlow)
Démarrage USB sur Raspberry Pi 4 modèle B
Raspberry Pi "Lampe de notification Honwaka" Partie 1
Activer la communication série UART + avec Raspberry Pi
Faire en sorte que Raspberry Pi parle japonais en utilisant OpenJtalk
Adafruit Python BluefruitLE fonctionne sur Raspeye.
Accélérez l'apprentissage en profondeur avec le processeur Rasperry Pi 4
Définir l'espace d'échange sur Ubuntu sur Raspberry Pi
Programmation normale avec la programmation Node-RED avec Raspberry Pi 3
Utiliser le capteur Grove avec Raspberry Pi
Installez la version 64 bits du système d'exploitation (bate) sur Raspberry Pi
Installez docker-compose sur le système d'exploitation Raspberry Pi 64 bits
Essayez la détection d'objets avec Raspberry Pi 4 + Coral
Raspberry Pi "Lampe de notification Honwaka" Partie 3
Travailler avec des capteurs dans Mathematica sur Raspberry Pi
Construire un environnement OpenCV-Python sur Raspberry Pi B +
Multiplication matricielle sur GPU Raspberry Pi (partie 2)
Comment installer NumPy sur Raspeye