ROS Cam an C3PO

Das Verwenden der Kamera mit ROS ist erschreckend einfach:

Voraussetzungen

Man benötigt die ROS Library usb_cam (https://index.ros.org/p/usb_cam/github-ros-drivers-usb_cam/), die mit dem Befehl:

sudo apt install ros-<ros-distribution>-usb-cam 

installiert werden muss.

Des weiteren muss noch opencv installiert sein:

pip install opencv-contrib-python

Und Los

Und schon kann es losgehen.

Starte den Master Controller mit:

roscore

Danach starte die Kamera auf dem Robot:

rosrun usb_cam usb_cam_node _pixel_format:=yuyv

Es muss keine USB Kamera sein. Die Raspberry Pi CSI Kamera geht natürlich auch.

Starte auf einem weiteren Rechner:

rosrun image_view image_view image:= /usb_cam/image_raw

Hier wird dann das Bild empfangen, welches die Roboter Kamera aufzeichnet:

Original

Natürlich kann man nun noch etwas mit opencv und Python spielen.

Wichtig: Das Python Script muss als ausführbar markiert sein und es muss in der ersten Zeile den Interpreter (Python) angeben:

Beispiel Python Module

#!/usr/bin/env python

import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import sys

bridge = CvBridge()

def image_callback(ros_image):
  # print('got an image')
  global bridge
  #convert ros_image into an opencv-compatible image
  try:
    cv_image = bridge.imgmsg_to_cv2(ros_image, "bgr8")
  except CvBridgeError as e:
      print(e)
  font = cv2.FONT_HERSHEY_SIMPLEX
  cv2.putText(cv_image,'Webcam with ROS & OpenCV!',(10,350), font, 1,(255,255,255),2,cv2.LINE_AA)
  cv_image = cv2.cvtColor(cv_image, cv2.COLOR_RGB2GRAY) # Graustufen Bild
  cv2.imshow("Image window", cv_image)
  cv2.waitKey(3)
  
def main(args):
  rospy.init_node('image_converter', anonymous=True)
  image_sub = rospy.Subscriber("/usb_cam/image_raw",Image, image_callback)
  try:
    rospy.spin()
  except KeyboardInterrupt:
    print("Ende")
  cv2.destroyAllWindows()

if __name__ == '__main__':
    main(sys.argv)

Das Python Module startet man mit:

rosrun <packagename> <python_script_name>.py

Bilder mit verschiedenen Filtern

Filter: cv2.COLOR_RGB2GRAY
Filter: cv2.COLOR_BGR2HSV

Diese Seite verwendet Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmen Sie dem zu.

Datenschutzerklärung