मेरे पास एक गज़ेबो वातावरण में एक रियलसेन्स डी 435 कैमरा वाला ड्रोन है। मेरी योजना है कि रुचि की वस्तु के केंद्र को खोजने के लिए YOLO का उपयोग करें, और फिर गहराई की छवि से उस बिंदु की गहराई का पता लगाएं। मैंने सुना है कि डेप्थ कैमरा एक इमेज को आउटपुट करता है जहां आरजीबी वैल्यू में डेप्थ वैल्यू एन्कोडेड हैं। जब इसे आगे ऑनलाइन देखा गया, तो मैंने पाया कि एक pyrealsense2 लाइब्रेरी है जिसमें मेरी ज़रूरत की हर चीज़ के लिए कार्य हैं।

मैंने जो कार्यान्वयन ऑनलाइन देखे हैं, उनके लिए आपको एक pyrealsense.pipeline() बनाने और उससे अपने फ़्रेम प्राप्त करने की आवश्यकता है। समस्या यह है कि ऐसा लगता है कि यह केवल तभी काम करता है जब आपके पास एक रीयलसेन्स कैमरा आपके कंप्यूटर से जुड़ा हो। चूंकि मेरा गज़ेबो वातावरण में मौजूद है, इसलिए मुझे आरओएस कॉलबैक में गहराई फ्रेम प्राप्त करने और उपयोग करने का एक तरीका चाहिए। यह मैं कैसे करूंगा? किसी भी प्वाइंटर की अत्यधिक सराहना की जाएगी

2
Kadhir 16 जुलाई 2020, 18:29

1 उत्तर

सबसे बढ़िया उत्तर

हाँ, आप इसे ROS सब्सक्राइबर की मदद से निम्न प्रकार से कर सकते हैं (अधिकांश कोड यहां):

import rospy
from sensor_msgs.msg import Image as msg_Image
from cv_bridge import CvBridge, CvBridgeError
import sys
import os

class ImageListener:
    def __init__(self, topic):
        self.topic = topic
        self.bridge = CvBridge()
        self.sub = rospy.Subscriber(topic, msg_Image, self.imageDepthCallback)

    def imageDepthCallback(self, data):
        try:
            cv_image = self.bridge.imgmsg_to_cv2(data, data.encoding)
            pix = (data.width/2, data.height/2)
            sys.stdout.write('%s: Depth at center(%d, %d): %f(mm)\r' % (self.topic, pix[0], pix[1], cv_image[pix[1], pix[0]]))
            sys.stdout.flush()
        except CvBridgeError as e:
            print(e)
            return


if __name__ == '__main__':
    rospy.init_node("depth_image_processor")
    topic = '/camera/depth/image_rect_raw'  # check the depth image topic in your Gazebo environmemt and replace this with your
    listener = ImageListener(topic)
    rospy.spin()

नोट: CvBridge स्थापित करने के लिए, आप नीचे दिए गए निर्देशों का पालन कर सकते हैं:

 sudo apt-get install ros-(ROS version name)-cv-bridge

 sudo apt-get install ros-(ROS version name)-vision-opencv

अधिक जानकारी: http://wiki.ros.org/cv_bridge

1
GPrathap 17 जुलाई 2020, 17:52