Performance: Why vision gives robots perception
Vision processing affects the robot's real-time perception speed and responsiveness, impacting how quickly it can react to its environment.
def process_image(image): # Downscale and process only ROI (region of interest) small_img = downscale(image, factor=4) roi = extract_roi(small_img) processed = fast_filter(roi) return processed while True: image = camera.get_frame() result = process_image(image) robot.act(result)
def process_image(image): # Process full high-res image every frame processed = heavy_filter(image) return processed while True: image = camera.get_frame() result = process_image(image) robot.act(result)
| Pattern | CPU/GPU Load | Frame Delay | Responsiveness | Verdict |
|---|---|---|---|---|
| Full high-res image processing | High CPU/GPU usage | 100+ ms delay | Low responsiveness | [X] Bad |
| Downscaled ROI processing | Low CPU/GPU usage | Under 20 ms delay | High responsiveness | [OK] Good |
import cv2
from cv_bridge import CvBridge
import rospy
from sensor_msgs.msg import Image
def callback(data):
bridge = CvBridge()
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8')
cv2.imshow('Camera View', cv_image)
cv2.waitKey(1)
rospy.init_node('image_listener')
rospy.Subscriber('/camera/image_raw', Image, callback)
rospy.spin()import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
def callback(data):
bridge = CvBridge()
cv_image = bridge.imgmsg_to_cv2(data)
cv2.imshow('View', cv_image)
rospy.init_node('viewer')
rospy.Subscriber('/camera/image_raw', Image, callback)
rospy.spin()Pass the test and this pattern moves unknown