Home » Jetbot-AI机器人教程 » Jetbot-AI机器人教程-颜色追踪

Jetbot-AI机器人教程-颜色追踪

说明:

  • 介绍jetbot如何颜色追踪

步骤:

  • 基本界面:
    请输入图片描述

第一步:创建一个终端,添加设备权限

$ sudo chmod 777 /dev/ttyTHS1

第二步:在JetBot上运行程序:

  • 通过导航到http://<jetbot_ip_address>:8888连接到您的机器人

  • 使用默认密码jetbot登录

  • 通过选择Kernel -> Shutdown All Kernels...来关闭所有其他正在运行的笔记本...

  • 导航到~/Notebooks/color_tracking/

  • 打开并跟随color_tracking.ipynb笔记操作

  • 运行程序导入相关包,创建相机实例

from jetbot import Camera
from jetbot import bgr8_to_jpeg
import PID
camera = Camera.instance(width=720, height=720)
  • 创建相关控制变量

  • 创建存储HSV色域颜色分类数据的数组

  • 创建PID控制实例

  • 创建显示控件

import cv2
import traitlets
import ipywidgets.widgets as widgets
from IPython.display import display
color_image = widgets.Image(format='jpeg', width=300, height=300)
display(color_image)
  • 设置识别红色数组数据
color_lower=np.array([0,43,46])
color_upper = np.array([10, 255, 255])
target_valuex = target_valuey = 2048
servo_device.Servo_serial_double_control(1, 2048, 2, 2048)
  • 运行主进程,将检测到的颜色标记出来,输入Y轴方向参数PID控制输入,最后实时传回图像数据进行显示
while 1:
    frame = camera.value
    frame = cv2.resize(frame, (300, 300))
    frame_=cv2.GaussianBlur(frame,(5,5),0)                    
    hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    mask=cv2.inRange(hsv,color_lower,color_upper)  
    mask=cv2.erode(mask,None,iterations=2)
    mask=cv2.dilate(mask,None,iterations=2)
    mask=cv2.GaussianBlur(mask,(3,3),0)     
    cnts=cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2] 
    if len(cnts)>0:
        cnt = max (cnts,key=cv2.contourArea)
        (color_x,color_y),color_radius=cv2.minEnclosingCircle(cnt)
        if color_radius > 10:
            cv2.circle(frame,(int(color_x),int(color_y)),int(color_radius),(255,0,255),2)  
            xservo_pid.SystemOutput = color_x
            xservo_pid.SetStepSignal(150)
            xservo_pid.SetInertiaTime(0.01, 0.006)
            target_valuex = int(2048+xservo_pid.SystemOutput)
            yservo_pid.SystemOutput = color_y
            yservo_pid.SetStepSignal(150)
            yservo_pid.SetInertiaTime(0.01, 0.006)
            target_valuey = int(2048+yservo_pid.SystemOutput)
            servo_device.Servo_serial_double_control( 1, target_valuex, 2, target_valuey)
    color_image.value = bgr8_to_jpeg(frame)

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: jetbot-ai机器人教程