https://github.com/brian2lee/forklift_test/tree/main
Дополнение realsense d435, используемое в беседке:
https://github.com/issaiass/realsense2_description
https://github.com/issaiass/realsense_gazebo_plugin
Изменить: Цветная карта глубины была решена @Christoph Rackwitz, обновил код, теперь показывает нормальную карту глубины, но проблема с размером остается.
изображения (сверху) слева, 1.opencv raw 2. глубина opencv 3. глубина rviz):

im_show.py:
#!/usr/bin/env python3
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
class ImageConverter:
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/camera/color/image_raw", Image, self.callback)
def callback(self, data):
try:
# Convert the ROS Image message to a CV2 image
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
except CvBridgeError as e:
print(e)
return
# Display the image in an OpenCV window
cv2.imshow("Camera Image", cv_image)
cv2.waitKey(3)
def main():
rospy.init_node('image_converter', anonymous=True)
ic = ImageConverter()
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
img_show_depth.py:
#!/usr/bin/env python3
import rospy
import cv2
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
class DepthImageConverter:
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/camera/depth/image_raw", Image, self.callback)
def callback(self, data):
try:
# Convert the ROS Image message to a CV2 depth image
cv_image = self.bridge.imgmsg_to_cv2(data, desired_encoding="passthrough")
except CvBridgeError as e:
print(e)
return
# Normalize the depth image to fall within 0-255 and convert it to uint8
cv_image_norm = cv2.normalize(cv_image, None, 0, 255, cv2.NORM_MINMAX)
depth_map = cv_image_norm.astype(np.uint8)
# Display the depth image in an OpenCV window
cv2.imshow("Depth Image", depth_map)
cv2.waitKey(3)
def main():
rospy.init_node('depth_image_converter', anonymous=True)
dic = DepthImageConverter()
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
gazebo.launch:
Подробнее здесь: https://stackoverflow.com/questions/788 ... and-having
Мобильная версия