Condivisione della tecnologia

Immagine della telecamera a luce strutturata MechMind che cattura la chiamata Python SDK

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Prova effetto

Telecamera a luce strutturata Mech-Mind

Le telecamere a luce strutturata di Mech Mind, in particolare la serie Mech-Eye, sono telecamere 3D ad alta precisione di livello industriale ampiamente utilizzate nell'automazione industriale, nella navigazione robotica, nell'ispezione di qualità e in altri campi. Quella che segue è un'analisi dettagliata della telecamera a luce strutturata Mech Mind:

1. Panoramica del prodotto

Le telecamere a luce strutturata di Mech Mind, come Mech-Eye PRO, utilizzano la tecnologia della luce strutturata ad alta velocità per fornire un'eccellente resistenza alla luce ambientale pur mantenendo elevata precisione e velocità. Queste telecamere contengono solitamente moduli di algoritmi di visione avanzati e possono essere applicate a molti scenari pratici tipici, come il carico e lo scarico di pezzi di produzione, il posizionamento ad alta precisione, l'assemblaggio, il serraggio di viti e la ricerca accademica.

2. Principio di funzionamento

La fotocamera a luce strutturata di Mech Mind utilizza principalmente il principio della proiezione della luce strutturata. Proiettano modelli specifici (come la luce strutturata generata dai laser) sull'oggetto da fotografare e il contorno e la forma dell'oggetto vengono catturati dalla fotocamera. Questa tecnologia può calcolare con precisione la posizione e la forma di un oggetto analizzando la riflessione e la rifrazione della luce sull'oggetto.

3. Caratteristiche del prodotto

  1. Alta precisione : La fotocamera a luce strutturata di Mech Mind può ottenere modelli tridimensionali ad alta precisione in breve tempo. Per oggetti diversi, è possibile ottenere informazioni precise sulla forma in un solo scatto. Ad esempio, la ripetibilità a punto singolo in direzione Z di Mech-Eye PRO può raggiungere 0,05 mm (a 1,0 m).
  2. ad alta velocità: La fotocamera dispone di funzionalità di acquisizione ed elaborazione dati rapide. Ad esempio, il tempo di acquisizione tipico di Mech-Eye PRO è di 0,3~0,6 secondi.
  3. Ampio campo visivo e grande profondità di campo: Alcuni modelli, come la fotocamera Mech-Eye Deep 3D, hanno le caratteristiche di ampio campo visivo e ampia profondità di campo e possono essere applicati a una varietà di tipi di impilamento comuni.
  4. Forte resistenza alla luce ambientale: La fotocamera a luce strutturata di Mech Mind può comunque mantenere eccellenti effetti di immagine anche in presenza di forti interferenze della luce ambientale (come >20000 lx).
  5. Distribuzione flessibile: La telecamera è adattata alla maggior parte delle marche di robot tradizionali in patria e all'estero e può ottenere il controllo completo del movimento dei robot adattati.
  6. Aperto e facile da usare: La fotocamera fornisce un'interfaccia utente intuitiva e un'API aperta per facilitare lo sviluppo e l'integrazione secondari degli utenti.
  7. Stabile e affidabile: Le telecamere a luce strutturata di Mech Mind hanno un'elevata stabilità e affidabilità, come il tempo medio tra i guasti (MTBF) di Mech-Eye PRO ≥ 40.000 ore.

4. Aree di applicazione

Le telecamere a luce strutturata di Mech Mind sono ampiamente utilizzate nel settore automobilistico, aeronautico, nella produzione di stampi, nell'automazione industriale e in altri campi. Nel campo automobilistico, possono ottenere in modo rapido e accurato le informazioni sulla forma della superficie della carrozzeria dell'auto; nel campo dell'aviazione, possono ottenere le informazioni sulla forma tridimensionale dell'aeromobile, fornendo un supporto dati accurato per la progettazione e la produzione dell'aeromobile. .

5. Riepilogo

Le telecamere a luce strutturata di Mech Mind svolgono un ruolo importante in campi come l'automazione industriale e la navigazione dei robot grazie alla loro elevata precisione, alta velocità, ampio campo visivo, ampia profondità di campo, forte resistenza alla luce ambientale, stabilità e affidabilità. Con il continuo progresso della tecnologia e la continua espansione degli scenari applicativi, si prevede che le telecamere a luce strutturata di Mech Mind dimostreranno il loro valore unico in più campi.

Configura un ambiente di sviluppo Python

Creare un ambiente virtuale

Scarica il pacchetto opencv-python

Scarica il pacchetto Mecamander Camera Capture

  1. pip install MechEyeAPI
  2. pip install python-opencv

Analisi dei passi

Collega la fotocamera

  1. def ConnectCamera(self):
  2. camera_infos = Camera.discover_cameras()
  3. if len(camera_infos) != 1:
  4. print("相机连接出现异常,检查网线")
  5. return
  6. error_status = self.camera.connect(camera_infos[0])
  7. if not error_status.is_ok():
  8. show_error(error_status)
  9. return

Scollegare la fotocamera

  1. def DisConnectCamera(self):
  2. self.camera.disconnect()
  3. print("Disconnected from the camera successfully.")

Raccogli immagini 2D e immagini 3D

  1. def connect_and_capture(self):
  2. # Obtain the 2D image resolution and the depth map resolution of the camera.
  3. resolution = CameraResolutions()
  4. show_error(self.camera.get_camera_resolutions(resolution))
  5. print_camera_resolution(resolution)
  6. time1 = time.time()
  7. # Obtain the 2D image.
  8. frame2d = Frame2D()
  9. show_error(self.camera.capture_2d(frame2d))
  10. row, col = 222, 222
  11. color_map = frame2d.get_color_image()
  12. print("The size of the 2D image is {} (width) * {} (height).".format(
  13. color_map.width(), color_map.height()))
  14. rgb = color_map[row * color_map.width() + col]
  15. print("The RGB values of the pixel at ({},{}) is R:{},G:{},B{}n".
  16. format(row, col, rgb.b, rgb.g, rgb.r))
  17. Image2d = color_map.data()
  18. time2 = time.time()
  19. print('grab 2d image : '+str((time2-time1)*1000)+'ms')
  20. # if not confirm_capture_3d():
  21. # return
  22. # Obtain the depth map.
  23. frame3d = Frame3D()
  24. show_error(self.camera.capture_3d(frame3d))
  25. depth_map = frame3d.get_depth_map()
  26. print("The size of the depth map is {} (width) * {} (height).".format(
  27. depth_map.width(), depth_map.height()))
  28. depth = depth_map[row * depth_map.width() + col]
  29. print("The depth value of the pixel at ({},{}) is depth :{}mmn".
  30. format(row, col, depth.z))
  31. Image3d = depth_map.data()
  32. time3 = time.time()
  33. print('grab depth image : '+str((time3-time2)*1000)+'ms')
  34. return Image2d,Image3d
  35. # Obtain the point cloud.
  36. # point_cloud = frame3d.get_untextured_point_cloud()
  37. # print("The size of the point cloud is {} (width) * {} (height).".format(
  38. # point_cloud.width(), point_cloud.height()))
  39. # point_xyz = point_cloud[row * depth_map.width() + col]
  40. # print("The coordinates of the point corresponding to the pixel at ({},{}) is X: {}mm , Y: {}mm, Z: {}mmn".
  41. # format(row, col, point_xyz.x, point_xyz.y, point_xyz.z))

Codice di prova completo

  1. # With this sample, you can connect to a camera and obtain the 2D image, depth map, and point cloud data.
  2. import time
  3. from mecheye.shared import *
  4. from mecheye.area_scan_3d_camera import *
  5. from mecheye.area_scan_3d_camera_utils import *
  6. import cv2
  7. class ConnectAndCaptureImages(object):
  8. def __init__(self):
  9. self.camera = Camera()
  10. def connect_and_capture(self):
  11. # Obtain the 2D image resolution and the depth map resolution of the camera.
  12. resolution = CameraResolutions()
  13. show_error(self.camera.get_camera_resolutions(resolution))
  14. print_camera_resolution(resolution)
  15. time1 = time.time()
  16. # Obtain the 2D image.
  17. frame2d = Frame2D()
  18. show_error(self.camera.capture_2d(frame2d))
  19. row, col = 222, 222
  20. color_map = frame2d.get_color_image()
  21. print("The size of the 2D image is {} (width) * {} (height).".format(
  22. color_map.width(), color_map.height()))
  23. rgb = color_map[row * color_map.width() + col]
  24. print("The RGB values of the pixel at ({},{}) is R:{},G:{},B{}n".
  25. format(row, col, rgb.b, rgb.g, rgb.r))
  26. Image2d = color_map.data()
  27. time2 = time.time()
  28. print('grab 2d image : '+str((time2-time1)*1000)+'ms')
  29. # if not confirm_capture_3d():
  30. # return
  31. # Obtain the depth map.
  32. frame3d = Frame3D()
  33. show_error(self.camera.capture_3d(frame3d))
  34. depth_map = frame3d.get_depth_map()
  35. print("The size of the depth map is {} (width) * {} (height).".format(
  36. depth_map.width(), depth_map.height()))
  37. depth = depth_map[row * depth_map.width() + col]
  38. print("The depth value of the pixel at ({},{}) is depth :{}mmn".
  39. format(row, col, depth.z))
  40. Image3d = depth_map.data()
  41. time3 = time.time()
  42. print('grab depth image : '+str((time3-time2)*1000)+'ms')
  43. return Image2d,Image3d
  44. # Obtain the point cloud.
  45. # point_cloud = frame3d.get_untextured_point_cloud()
  46. # print("The size of the point cloud is {} (width) * {} (height).".format(
  47. # point_cloud.width(), point_cloud.height()))
  48. # point_xyz = point_cloud[row * depth_map.width() + col]
  49. # print("The coordinates of the point corresponding to the pixel at ({},{}) is X: {}mm , Y: {}mm, Z: {}mmn".
  50. # format(row, col, point_xyz.x, point_xyz.y, point_xyz.z))
  51. def main(self):
  52. # List all available cameras and connect to a camera by the displayed index.
  53. if find_and_connect(self.camera):
  54. d2,d3 = self.connect_and_capture()
  55. self.camera.disconnect()
  56. print("Disconnected from the camera successfully.")
  57. return d2,d3
  58. def GrabImages(self):
  59. d2, d3 = self.connect_and_capture()
  60. return d2, d3
  61. def ConnectCamera(self):
  62. camera_infos = Camera.discover_cameras()
  63. if len(camera_infos) != 1:
  64. print("相机连接出现异常,检查网线")
  65. return
  66. error_status = self.camera.connect(camera_infos[0])
  67. if not error_status.is_ok():
  68. show_error(error_status)
  69. return
  70. def DisConnectCamera(self):
  71. self.camera.disconnect()
  72. print("Disconnected from the camera successfully.")
  73. if __name__ == '__main__':
  74. #pip install MechEyeAPI
  75. print('初始化相机对象')
  76. MechMindGraber = ConnectAndCaptureImages()
  77. # d2,d3 = a.main()
  78. print('连接相机')
  79. MechMindGraber.ConnectCamera()
  80. for i in range(60):
  81. print(str(i)+'rn')
  82. print('采集亮度图和深度图')
  83. d2,d3 = MechMindGraber.GrabImages()
  84. cv2.imshow('1',d2)
  85. cv2.waitKey()
  86. cv2.imshow('1', d3)
  87. cv2.waitKey()
  88. print('断开连接')
  89. MechMindGraber.DisConnectCamera()