Welcome to ROSMASTER M3 repository
11.Model prediction
Model prediction
Model prediction1. Best performance modeEnable Jetson Clocks2. Model prediction2.1. CLI usage2.2, Python usageEffect preview
1. Best performance mode
Enable Jetson Clocks
Enabling Jetson Clocks will ensure that all CPU and GPU cores run at maximum frequency:
sudo jetson_clocks
2. Model prediction
2.1. CLI usage
CLI currently only supports calling USB cameras. Nuwa camera users can directly modify the previous python code to call onnx and engine models!
xxxxxxxxxxyolo predict model=best.engine source=0 save=False show # For multiple cameras, change the number after source.
2.2, Python usage
Use best.engine to predict the camera image:
Start the camera.
#usb cameraros2 launch usb_cam camera.launch.py #nuwa cameraros2 launch ascamera hp60c.launch.pyEnter the code folder:
xxxxxxxxxxcd /home/jetson/ultralytics/ultralytics/yahboom_demo
Run the code: Click the preview image, press the q key to terminate the program!
xxxxxxxxxxpython3 06.orange_camera_usb.py
Effect preview
Yolo recognizes the output video location: /home/jetson/ultralytics/ultralytics/output/

Sample code:
x#!/usr/bin/env python3import rclpyfrom rclpy.node import Nodefrom sensor_msgs.msg import Image, CompressedImagefrom cv_bridge import CvBridgeimport cv2from ultralytics import YOLOimport osclass Image_detection(Node): def __init__(self): super().__init__('Image_detection') self.model = YOLO("/home/jetson/ultralytics/ultralytics/data/yahboom_data/orange_data/runs/detect/train/weights/best.engine") self.camera_type = os.getenv('CAMERA_TYPE', 'usb') self.bridge = CvBridge() if self.camera_type == 'usb': topic_name = '/usb_cam/image_raw' else: topic_name = '/ascamera_hp60c/camera_publisher/rgb0/image' self.subscription = self.create_subscription(Image,topic_name, self.image_callback,10) # Get the video frame size and frame rate frame_width = 640 frame_height = 480 fps = 15 output_path = "/home/jetson/ultralytics/ultralytics/output/06.orange_camera_usb.mp4" fourcc = cv2.VideoWriter_fourcc(*'mp4v') # You can use 'XVID' or 'mp4v' depending on your platform self.out = cv2.VideoWriter(output_path, fourcc, fps, (frame_width, frame_height)) def image_callback(self, msg): cv_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8') self.proecc(cv_image) # Loop through the video frames def proecc(self,frame): # Run YOLO inference on the frame results = self.model(frame) # Visualize the results on the frame annotated_frame = results[0].plot() # Write the annotated frame to the output video file self.out.write(annotated_frame) # Display the annotated frame cv2.imshow("YOLO Inference", cv2.resize(annotated_frame, (640, 480))) # Break the loop if 'q' is pressed cv2.waitKey(1) & 0xFF == ord("q") def cancel(self): cv2.destroyAllWindows() self.out.release() def main(args=None): rclpy.init(args=args) node = Image_detection() try: rclpy.spin(node) except KeyboardInterrupt: pass finally: node.cancel() node.destroy_node() rclpy.shutdown()if __name__ == '__main__': main()