我正在尝试通过ROS API使用opencv处理VREP视觉传感器输出。我确实设法设置了场景并使脚本运行,但是问题是即使没有实际处理,我的速度也达到了4-5 fps(目前我只是将图像直接推送到输出)。这个问题似乎并不取决于图像分辨率,因为1024 * 512和128 * 128捕获都可以得到完全相同的fps。这也不是阻塞呼叫的问题,尽管我发布的是单头代码,但我确实有相当复杂的多线程处理管道,该管道在实际摄像机(〜50 fps)下表现良好。VREP方面的Lua脚本似乎也不是问题,因为我尝试使用vrep提供的视频重新翻译示例,并且它们似乎达到了令人满意的fps。因此,图像流似乎是一个瓶颈。这是我的示例脚本:# coding=utf-8import rclpyimport rclpy.node as nodeimport cv2import numpy as npimport sensor_msgs.msg as msgimport third_party.ros.ros as rosclass TestDisplayNode(node.Node): def __init__(self): super().__init__('IProc_TestDisplayNode') self.__window_name = "img" self.sub = self.create_subscription(msg.Image, 'Vision_sensor', self.msg_callback) def msg_callback(self, m : msg.Image): np_img = np.reshape(m.data, (m.height, m.width, 3)).astype(np.uint8) self.display(np_img) def display(self, img : np.ndarray): cv2.imshow(self.__window_name, cv2.cvtColor(img, cv2.COLOR_RGB2BGR)) cv2.waitKey(1)def main(): ros_core = Ros2CoreWrapper() node = TestDisplayNode() rclpy.spin(node) node.destroy_node() rclpy.shutdown()if __name__ == "__main__": main()我还必须提到我是用ros bridge运行的,因为我需要使用python3完成处理,而python3仅受ROS2支持,而VREP似乎仅与ROS1兼容(尽管我刚刚开始使用这些系统,所以在那种情况下,我没有信心)。
添加回答
举报
0/150
提交
取消