User Tools

Site Tools


projects:farmrobot:realcode_g-code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:farmrobot:realcode_g-code [2021/03/11 19:30]
miki [Tests]
projects:farmrobot:realcode_g-code [2021/03/11 21:20] (current)
roman-heinrich [Pumpe]
Line 32: Line 32:
 Der Code behält immer die letzte Position des Armes im Speicher, um die Zeit auszurechnen.\\ Der Code behält immer die letzte Position des Armes im Speicher, um die Zeit auszurechnen.\\
 Indem gewartet wird bis der Arm den aktuellen Move abgeschlossen hat, und erst dann ein neuer Move gesendet wird, wird verhindert, dass sich der serielle Buffer im Arduino füllt. Indem gewartet wird bis der Arm den aktuellen Move abgeschlossen hat, und erst dann ein neuer Move gesendet wird, wird verhindert, dass sich der serielle Buffer im Arduino füllt.
-So wird immer erst ein Move gesendet, wenn der Arm diesen direkt ausführen kann. Der aktuelle Move basiert so immer auf den aller neusten Daten aus der ObjectßRecognition mit YOLOv5.+So wird immer erst ein Move gesendet, wenn der Arm diesen direkt ausführen kann. Der aktuelle Move basiert so immer auf den aller neusten Daten aus der Object-Recognition mit YOLOv5. 
 + 
 +==== Pumpe ==== 
 +Zum Sprühen des Herbizids wird eine Pumpe verwendet. 
 + 
 +Das Kommando ''M106'' wird zur Steuerung der Herbizidpumpe verwendet. Mit diesem G-Code wird normalerweise der Ausgang des Lüfters ein- oder ausgeschaltet. Die ''enablePump()'' Funktion schaltet den 12V Ausgang "D9" ein. ''S0'' bzw. ''S255'' bedeutet Geschwindigkeit, und die von uns angegebene ''255'' ist die maximale Geschwindigkeit. Die Funktion ''disablePump()'' schaltet den Ausgang ab. 
 + 
 +<file python> 
 +def enablePump(self): 
 +    # turn the pump on (D9 on Ramps PCB) 
 +    # set the pump to 100% power. 255 is full speed (12V) 
 +    self.ser.write(b'M106 S255 \r\n'
 +    self.ser.flush() 
 + 
 +def disablePump(self): 
 +    # turn off pump completely. 0 is no speed 
 +    self.ser.write(b'M106 S0 \r\n'
 +    self.ser.flush() 
 +</file> 
 ===== Tests ===== ===== Tests =====
 === Allgemeine Informationen === === Allgemeine Informationen ===
Line 54: Line 73:
  
 === Bilder === === Bilder ===
- +1. Ein grünes Objekt\\  
-{{:projects:farmrobot:testwithopencv-1.jpg?400|}} +{{:projects:farmrobot:testwithopencv-2.jpg?400|}}\\  
-{{:projects:farmrobot:testwithopencv-2.jpg?400|}}+2. Erkennung eines Objekts. Die Konsole zeigt die für den Vorgang benötigte Zeit an.\\  
 +{{:projects:farmrobot:testwithopencv-1.jpg?400|}}\\  
 +3. Oben ist das Bild des erkannten Objekts mit dem Begrenzungsrahmen und dem Mittelpunkt des Objekts nach der Erfassung der Koordinaten dargestellt. Das Bild unten zeigt das erkannte Objekt nach der Entrauschung. Um das erkannte Objekt zu analysieren, wurde es in ein Schwarz-Weiß-Bild umgewandelt.\\ 
 {{:projects:farmrobot:testwithopencv-3.jpg?400|}} {{:projects:farmrobot:testwithopencv-3.jpg?400|}}
  
 === Code block === === Code block ===
-<color #ed1c24>noch mal kurze Erklärung +opencv wird verwendet, um ein bestimmtes Objekt (in diesem Fall ein grünes Objekt) aus dem Video zu erkennen und die Koordinaten des Objekts zu erhalten. Um ein bewegtes Objekt zu erkennen, verwenden wir das Video anstelle des Bildes. Um den Delta-Arm in die Mitte des Objekts zu bewegen, verwenden wir eine Bounding-Box, um die Koordinaten des erkannten Objekts zu erhalten, und rufen gcsender auf, um den Gcode zu senden. 
-</color><file python>+ 
 +<file python>
 import cv2 import cv2
 import serial import serial
projects/farmrobot/realcode_g-code.1615491036.txt.gz · Last modified: 2021/03/11 19:30 by miki