Warning
This page is located in archive.

Kamera Basler u robotů CRS

Programové rozhraní v jazyce Python

Základní informace o kamerách

Pracoviště robotu CRS93 a CRS97 je osazeno barevnou kamerou s rozlišením 1920×1200 pixels. Kamera je umístěna nad pracovní plochou a směřuje kolmo dolů k pracovní ploše. Na pracovištích jsou umístěny kamery stejného typu od firmy Basler:

Kamery na jednotlivých pracovištích lze identifikovat buď jménem, nebo IP adresou:

Robot Jméno kamery IP adresa
CRS93 camera-crs93 192.168.137.107
CRS97 camera-crs97 192.168.137.106
RV6S camera-rv6s 192.168.137.109

Pro ověření funkčnosti kamer, získání obrázků a případnou práci s nastavením je možné použít program pylon Viewer. Program pylon Viewer spustíte příkazem /opt/pylon/bin/pylonviewer. Je třeba míti na paměti:

  • Program pylon Viewer se spouští velmi pomalu (desítky sekund).
  • Pokud je kamera otevřena jedním programem, pak jí již nelze znovu otevřít v programu jiném.

Programové rozhraní kamery

Firmy Basler pro připojení svých kamer dodává softwarové rozhraní pod označením Pylon. Jede o celou řadu nástrojů včetně programů pro nastavení kamer, snímání obrazu a SDK pro C++, .Net/C# and C. Pro jazyk Python existuje rozraní “pypylon: Basler's pylon Software Suite Interface for Python”, https://github.com/basler/pypylon.

Pro práci v rámci řešení úlohy v předmětu Robotika nabízíme zjednodušené rozhraní, které tvoří třída BaslerCamera:

Příklad získání jednoho snímku z kamery

Zdrojový kód tohoto příkladu je k dispozici test_camera.py. Před použitím si nezapomeňte stáhnout basler_camera.py.

# OpenCV library for image processing
import cv2
# Our Basler camera interface
from basler_camera import BaslerCamera
 
 
def main():
    camera: BaslerCamera = BaslerCamera()
 
    # Camera can be connected based on its' IP or name:
    # Camera for robot CRS 93
    #   camera.connect_by_ip("192.168.137.107")
    #   camera.connect_by_name("camera-crs93")
    # Camera for robot CRS 97
    #   camera.connect_by_ip("192.168.137.106")
    #   camera.connect_by_name("camera-crs97")
    camera.connect_by_name("camera-crs97")
 
    # Open the communication with the camera
    camera.open()
    # Set capturing parameters from the camera object.
    # The default parameters (set by constructor) are OK.
    # When starting the params should be send into the camera.
    camera.set_parameters()
 
    # Take one image from the camera
    img = camera.grab_image()
    # If the returned image has zero size,
    # the image was not captured in time.
    if (img is not None) and (img.size > 0):
        # Show the image in OpenCV
        cv2.namedWindow('Camera image', cv2.WINDOW_NORMAL)
        cv2.imshow('Camera image', img)
        cv2.waitKey(0)
    else:
        print("The image was not captured.")
 
    # Close communication with the camera before finish.
    camera.close()
 
 
if __name__ == '__main__':
    main()

courses/b3b33rob1/common/camera_crs.txt · Last modified: 2024/12/11 12:01 by petrivl3