Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Open-source software voldoet aan de brede behoeften van robot-vision-ontwikkelaars


Dit artikel maakt deel uit van een AspenCore Special Project over vision-geleide robots.

Robot vision-applicaties kunnen een complexe reeks vereisten met zich meebrengen, maar open-sourcebibliotheken staan ​​klaar om oplossingen te bieden voor bijna elke behoefte. Ontwikkelaars kunnen open-sourcepakketten vinden, variërend van elementaire beeldverwerking en objectherkenning tot bewegingsplanning en het vermijden van botsingen en meer dan mogelijk kan worden genoemd, veel minder gezien hun volledige toekomt in een kort artikel. Desalniettemin zijn hier enkele belangrijke open-source beeldverwerkingspakketten die ontwikkelaars kunnen helpen bij het implementeren van geavanceerde robotsystemen. (Opmerking:dit rapport richt zich op bibliotheken voor meer fundamentele op afbeeldingen gebaseerde algoritmen en sluit specifiek open-source software uit voor op AI gebaseerde robotvisie.)

Geen enkel artikel over robot vision-software kan de Open Source Computer Vision Library (OpenCV) [bron] benadrukken. Van de beschikbare open-source softwarepakketten is OpenCV misschien wel de meest gebruikte en functioneel rijke. Door meer dan 2500 algoritmen te implementeren, beantwoordt de OpenCV-distributie aan de beeldverwerkingsvereisten in een reeks modules, waaronder het volgende:

  • core, die de basisgegevensstructuren en -functies definieert die door alle andere modules worden gebruikt;

  • imgproc, dat beeldverwerkingsfuncties biedt, waaronder lineaire en niet-lineaire beeldfiltering, geometrische beeldtransformaties, kleurruimteconversie, histogrammen en meer;

  • video, die bewegingsschatting, achtergrondaftrekking en algoritmen voor het volgen van objecten ondersteunt;

  • calib3d, dat basisgeometrie-algoritmen, camerakalibratie, schatting van de objectpositie en meer biedt;

  • features2d, dat functiedetectoren, descriptors en descriptorovereenkomsten biedt;

  • objdetect, waarmee objecten en instanties van vooraf gedefinieerde klassen kunnen worden gedetecteerd;

OpenCV is geschreven in C++ en is beschikbaar met interfaces voor C++, Python, Java en Matlab en ondersteunt Windows, Linux, Android en Mac OS. Naast de ondersteuning voor instructiesets met enkele instructie, meerdere gegevens (SIMD), biedt OpenCV op CUDA gebaseerde GPU-versnelling voor veel functies via de gpu-module en OpenCL-versnelling via de ocl-module. Onlangs uitgebracht, biedt OpenCV 4.0 een aantal prestatieverbeteringen en mogelijkheden, waaronder implementatie van het populaire Kinect Fusion-algoritme.

Voor zijn functionaliteit kan OpenCV een leercurve vereisen die het geduld overtreft van ontwikkelaars die snel willen handelen met robotvisie. Voor deze ontwikkelaars is op Python gebaseerde SimpleCV [bron] misschien het antwoord. SimpleCV is gebouwd op OpenCV en biedt de functionaliteit die nodig is voor geavanceerde robot-vision-ontwikkelaars, maar biedt een toegankelijk raamwerk dat minder ervaren ontwikkelaars helpt bij het verkennen van elementaire machine vision-functies met eenvoudige Python-functieaanroepen. Ontwikkelaars kunnen bijvoorbeeld snel veelgebruikte functies, zoals beelddrempelwaarde, implementeren met behulp van een eenvoudige ingebouwde methode in de SimpleCV Image-klasse (img.binarize() in onderstaande lijst) en uiteindelijk de resultaten weergeven die worden weergegeven in Afbeelding 1.

van SimpleCV importeer afbeelding, kleur, weergave # Maak een functie die een half en half image.def halfsies(left,right) doet:resultaat =left # snij de rechterafbeelding bij zodat deze precies de rechterkant is. crop =right.crop(right.width/2.0,0,right.width/2.0,right.height) # plak nu de crop op de linker afbeelding. resultaat =resultaat.blit(crop,(left.width/2,0)) # geef de resultaten terug. resultaat retourneren# Laad een afbeelding van imgur.img =Image('http://i.imgur.com/lfAeZ4n.png')# binariseer de afbeelding met een drempel van 90# en keer de results.output =img.binarize( 90).invert()# maak de zij aan zij image.result =halfsies(img,output)# toon de resulterende afbeelding.result.show()# sla de resultaten op in een file.result.save('juniperbinary.png' )


Figuur 1. Resultaten van bovenstaande Python-code (Bron:SimpleCV)

Naast hun basisfuncties voor beeldverwerking, implementeren OpenCV en SimpleCV een aantal hoogwaardige beeldverwerkingsalgoritmen die robotsystemen nodig hebben om met objecten te werken of veilig te werken in hun fysieke omgeving. Een van de fundamentele gegevensstructuren die in veel van deze berekeningen worden gebruikt, is de puntenwolk - een verzameling multidimensionale gegevenspunten die een object vertegenwoordigen (Figuur 2). De puntenwolk van een object, verkregen van camera's, wordt gebruikt voor fundamentele robotbewerkingen zoals objectidentificatie, uitlijning en aanpassing. Voor het werken met puntenwolken implementeert de Point Cloud Library (PCL) [bron] algoritmen voor filtering, aanpassing, keypoint-extractie, segmentatie en nog veel meer.


Figuur 2. Puntenwolk dataset voor een basis torus. (Bron:Wikimedia Commons/Kieff).


Internet of Things-technologie

  1. Software-updates in het IoT:een inleiding tot SOTA
  2. GE lanceert $ 1,2 miljard IIoT Company
  3. Alles gaat IoT
  4. Waar oud IoT ontmoet, SaaS-integratie
  5. Software AG voorspelt de toekomst van het internet der dingen
  6. In de industriële wereld betekent betrouwbare software veiligheid
  7. Tata prijst voordelen van IIoT
  8. De uitdagingen van het softwaretesten van IOT-apparaten
  9. 10 tekenen dat uw ERP-software moet worden verbeterd
  10. DevOps gebruiken om uitdagingen op het gebied van embedded software aan te pakken
  11. Top 7 podcasts voor IOT-ontwikkelaars