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)
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号